TypeScript

Thinwrap publishes two TypeScript packages on npm. The claims below hold for TypeScript only — they're the developer-honest version of the umbrella "zero deps, BYO HTTP" pitch, narrowed to what's true on Node.

TypeScript constraints

Runtime dependencies
Zero runtime dependencies
BYO HTTP client
injectable fetch parameter (Node 18+ native fetch)
Provenance
npm provenance + Sigstore
Minimum runtime
Node 18.20+
  • Node 18 and 20 emit a one-time ExperimentalWarning on the first fetch() invocation: "ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time."
  • The warning is informational only — fetch() in Node 18.20+ and Node 20.x is functionally identical to the stable fetch in Node 21+. Suppress with the NODE_NO_WARNINGS=1 env var or the --no-warnings flag if it clutters CI logs.
  • Thinwrap does not patch around the warning, does not silence it on the consumer's behalf, and does not require a polyfill. It is surfaced exactly as Node's runtime surfaces it.

TypeScript packages

Baseline-coverage discipline

The unified facade surface includes only features that ≥90% of providers natively support. Sub-baseline fields stay accessible via provider-id-narrowed augmented types and the_passthrough escape valve. Cross-language parity with the PHP packages is tracked as a design goal — not a hard release gate — so a connector can land in one language ahead of the other.

Because the wrapper holds no state, retry strategy, token caching, and connection lifecycle live with the consumer. The wrapper performs no automatic retry; Retry-After headers (when present on HTTP 429) are parsed into ConnectorError.providerMessageand the raw header is available on e.cause.retryAfter. There is no structured retryAfterSecondsfield on ConnectorError — by design.