npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@metaengine/openapi-fetch

v1.0.1

Published

Generate TypeScript services and models from OpenAPI specifications using the native Fetch API — framework-agnostic, runs on Node, browsers, Vite, SvelteKit, Next.js, and any TS runtime

Readme

@metaengine/openapi-fetch

Generate TypeScript services and models from OpenAPI specifications using the native Fetch API.

Framework-agnostic — runs on Node, browsers, Vite, SvelteKit, Next.js, and any TS runtime that ships fetch.

Install

npm install --save-dev @metaengine/openapi-fetch

Or use directly with npx:

npx @metaengine/openapi-fetch <input> <output>

Requirements

  • Node.js 18.0 or later
  • .NET 8.0 or later runtime (Download)

Quick start

npx @metaengine/openapi-fetch api.yaml ./src/api \
  --documentation \
  --result-pattern

Production setup

npx @metaengine/openapi-fetch api.yaml ./src/api \
  --bearer-auth API_TOKEN \
  --timeout 30 \
  --retries 3 \
  --custom-header X-Tenant-ID=TENANT_ID \
  --error-handling

CLI options

| Option | Description | Default | |--------|-------------|---------| | --include-tags <tags> | Filter by OpenAPI tags (comma-separated, case-insensitive) | - | | --base-url-env <name> | Environment variable name for base URL (e.g. VITE_API_URL, NEXT_PUBLIC_API_URL) | API_BASE_URL | | --service-suffix <suffix> | Service naming suffix | Api | | --options-threshold <n> | Parameter count for options object | 4 | | --documentation | Generate JSDoc comments | false | | --import-meta-env | Use import.meta.env for env access (Vite, SvelteKit) | false | | --result-pattern | Return ApiResult<T> instead of T for structured error handling | false | | --middleware | Emit middleware hooks (onRequest, onResponse, onError) in client | false | | --error-handling | Smart error handling based on HTTP status semantics | false | | --bearer-auth <env-var-name> | Bearer token from env var (adds Authorization: Bearer <token>) | - | | --timeout <seconds> | Request timeout in seconds for all operations | - | | --retries <max-attempts> | Enable retries with exponential backoff (status codes 429, 503) | - | | --custom-header <header=envVarName> | Static header from env var. Repeatable. | - | | --strict-validation | Strict OpenAPI validation | false | | --date-transformation | Convert date strings in responses to Date objects | false | | --clean | Clean output directory (remove files not in generation) | false | | --verbose | Enable verbose logging | false | | --type-mapping <slug=target> | Override TS type for an OpenAPI format. Repeatable. See Type mapping overrides | - | | --help, -h | Show help message | - |

Type mapping overrides

Use --type-mapping to override the TS type emitted for a given OpenAPI (type, format) pair. Repeatable. Unknown slugs and unknown targets are hard errors.

| Slug | OpenAPI (type, format) | Default | --type-mapping value | |------|--------------------------|---------|------------------------| | int64 | (integer, int64) | number | int64=bigint | | decimal | (number, decimal) | number | decimal=string | | date-time | (string, date-time) | Date | date-time=string | | date | (string, date) | Date | date=string |

npx @metaengine/openapi-fetch api.yaml ./src/api \
  --type-mapping int64=bigint \
  --type-mapping date-time=string

See it live

Try the generator with your own spec at https://www.metaengine.eu/converters.

License

MIT

Support

For issues and feature requests, please visit: https://github.com/meta-engine/openapi-fetch/issues