{"_id":"@arunapb/openapi-mocker","_rev":"5-5f860fc72cdc73447ebff811cddff6a8","name":"@arunapb/openapi-mocker","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.3":{"name":"@arunapb/openapi-mocker","version":"1.0.3","keywords":["openapi","mock","cli","api","faker","swagger"],"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","_id":"@arunapb/openapi-mocker@1.0.3","maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"homepage":"https://github.com/arunapb/openapi-mocker","bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"bin":{"mockr":"dist/cli.js"},"dist":{"shasum":"0998581c083f89937e90441d3cbbdad144c508f9","tarball":"https://registry.npmjs.org/@arunapb/openapi-mocker/-/openapi-mocker-1.0.3.tgz","fileCount":3,"integrity":"sha512-WZIJkjEeBiiK4/Hbc6uDfciJJPN+J50jzfXlLlFn7qp+Z6/mEQYmyVi/6q9n9/wtQMkoHzIXBri6Qz1IE9nafA==","signatures":[{"sig":"MEQCIEXjo8+idMK1eSGzg3XOWGKFaVJVCCx5g2n6RlPVAXeWAiBP3of+T+unrt5obdArfdekV67uV4bPERlccEXbgBGo1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2462258},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"999ed3fb6cf7a1a9ef442ff65708d7d8726e50c3","scripts":{"test":"tsx src/test.ts","build":"tsup"},"_npmUser":{"name":"arunapb","email":"arunapbandara45@gmail.com"},"repository":{"url":"git+https://github.com/arunapb/openapi-mocker.git","type":"git"},"_npmVersion":"11.7.0","description":"Instant mock server from your OpenAPI spec","directories":{},"_nodeVersion":"25.4.0","dependencies":{"kleur":"^4.1.5","fastify":"^5.8.5","js-yaml":"^4.1.1","chokidar":"^5.0.0","commander":"^14.0.3","@fastify/cors":"^11.2.0","openapi-types":"^12.1.3","@faker-js/faker":"^10.4.0","@apidevtools/swagger-parser":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-mocker_1.0.3_1777713238395_0.6741193900086127","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@arunapb/openapi-mocker","version":"1.0.4","keywords":["openapi","mock","cli","api","faker","swagger"],"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","_id":"@arunapb/openapi-mocker@1.0.4","maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"homepage":"https://github.com/arunapb/openapi-mocker","bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"bin":{"mockr":"dist/cli.js"},"dist":{"shasum":"35ad20380a0945c6fda77f5663cad1d02d498e36","tarball":"https://registry.npmjs.org/@arunapb/openapi-mocker/-/openapi-mocker-1.0.4.tgz","fileCount":3,"integrity":"sha512-s8wGnv3AzYfCVKxzmx5PsRSt9UwQr96gd/bN00Y/WmG2tI/uQqq8HxWBhqV1OWbpbqjitW5q4TJody3wdLNH4A==","signatures":[{"sig":"MEUCIQCvewmygmbbDWEqohIwTLXx8hqhkd/kotI7rgOgfEcRIAIgMKucB8BObW+Av9buLG9hiwgoNiIDBGnzUISaMHeDUpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2462987},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"6347f8b3b0b2bdba4116bd1e863ae65dda7eda1d","scripts":{"test":"tsx src/test.ts","build":"tsup"},"_npmUser":{"name":"arunapb","email":"arunapbandara45@gmail.com"},"repository":{"url":"git+https://github.com/arunapb/openapi-mocker.git","type":"git"},"_npmVersion":"11.7.0","description":"Instant mock server from your OpenAPI spec","directories":{},"_nodeVersion":"25.4.0","dependencies":{"kleur":"^4.1.5","fastify":"^5.8.5","js-yaml":"^4.1.1","chokidar":"^5.0.0","commander":"^14.0.3","@fastify/cors":"^11.2.0","openapi-types":"^12.1.3","@faker-js/faker":"^10.4.0","@apidevtools/swagger-parser":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-mocker_1.0.4_1777713372527_0.59241032738906","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@arunapb/openapi-mocker","version":"1.0.6","keywords":["openapi","mock","cli","api","faker","swagger"],"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","_id":"@arunapb/openapi-mocker@1.0.6","maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"homepage":"https://github.com/arunapb/openapi-mocker","bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"bin":{"mockr":"dist/cli.js"},"dist":{"shasum":"97589babb181e89c28587647ca8ed622598adbed","tarball":"https://registry.npmjs.org/@arunapb/openapi-mocker/-/openapi-mocker-1.0.6.tgz","fileCount":3,"integrity":"sha512-2sIczFt/bZeEes8t8WfViX0Gub3AbiBtxA4cRveZQRjIkg4XTzTtqqVrZau2E931UtiUf3lUGrChVLzP2LmhKg==","signatures":[{"sig":"MEUCIEcXNWBeQ9EOLBqd0PzA16WcofEBjrWtzSjPZfomqGS+AiEAzq1GUBOPrhcwtWq15TdNXWeCn4+4+Xya8u+6arRLd24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2463048},"main":"./dist/index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"da112b0526ad1394e7ae23c8965c9e0b19749b71","scripts":{"test":"tsx src/test.ts","build":"tsup"},"_npmUser":{"name":"arunapb","email":"arunapbandara45@gmail.com"},"repository":{"url":"git+https://github.com/arunapb/openapi-mocker.git","type":"git"},"_npmVersion":"11.7.0","description":"Instant mock server from your OpenAPI spec","directories":{},"_nodeVersion":"25.4.0","dependencies":{"kleur":"^4.1.5","fastify":"^5.8.5","js-yaml":"^4.1.1","chokidar":"^5.0.0","commander":"^14.0.3","@fastify/cors":"^11.2.0","openapi-types":"^12.1.3","@faker-js/faker":"^10.4.0","@apidevtools/swagger-parser":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-mocker_1.0.6_1777713808028_0.3152983092079664","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@arunapb/openapi-mocker","version":"1.0.7","keywords":["openapi","mock","cli","api","faker","swagger"],"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","_id":"@arunapb/openapi-mocker@1.0.7","maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"homepage":"https://github.com/arunapb/openapi-mocker","bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"bin":{"mockr":"dist/cli.cjs"},"dist":{"shasum":"8f794ce6c0fd10793468b352d94569d33bde5c0e","tarball":"https://registry.npmjs.org/@arunapb/openapi-mocker/-/openapi-mocker-1.0.7.tgz","fileCount":3,"integrity":"sha512-fn6mTU+8k4s5lZdlStSA0uBHGy/XbDElYtOkw2GJDACwJ2nP3hhkiH4rjyzaZ+PrshXbPSd60HEHMOIroaehRw==","signatures":[{"sig":"MEUCIChqadvbi9bO8OA5brtbCXWyBVt3okowddDHADhhpQuYAiEA8SaWTaJCrNv6JYlJaynU+jH4gpFIAi0hsg+WIPlgwOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2464886},"main":"./dist/cli.cjs","type":"module","engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"3437272b9ac2b6bf103326e979292f78dd6d1118","scripts":{"test":"tsx src/test.ts","build":"tsup"},"_npmUser":{"name":"arunapb","email":"arunapbandara45@gmail.com"},"repository":{"url":"git+https://github.com/arunapb/openapi-mocker.git","type":"git"},"_npmVersion":"11.7.0","description":"Instant mock server from your OpenAPI spec","directories":{},"_nodeVersion":"25.4.0","dependencies":{"kleur":"^4.1.5","fastify":"^5.8.5","js-yaml":"^4.1.1","chokidar":"^5.0.0","commander":"^14.0.3","@fastify/cors":"^11.2.0","openapi-types":"^12.1.3","@faker-js/faker":"^10.4.0","@apidevtools/swagger-parser":"^12.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-mocker_1.0.7_1777713932464_0.8146927044889878","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@arunapb/openapi-mocker","version":"1.0.8","description":"Instant mock server from your OpenAPI spec","main":"./dist/cli.cjs","bin":{"mockr":"dist/cli.cjs"},"scripts":{"build":"tsup","prepublishOnly":"npm run build","test":"tsx src/test.ts"},"keywords":["openapi","mock","cli","api","faker","swagger"],"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","homepage":"https://github.com/arunapb/openapi-mocker","repository":{"type":"git","url":"git+https://github.com/arunapb/openapi-mocker.git"},"engines":{"node":">=18"},"devDependencies":{"@types/node":"^25.6.0","tsup":"^8.5.1","typescript":"^6.0.3"},"dependencies":{"@apidevtools/swagger-parser":"^12.1.0","@faker-js/faker":"^10.4.0","@fastify/cors":"^11.2.0","chokidar":"^5.0.0","commander":"^14.0.3","fastify":"^5.8.5","js-yaml":"^4.1.1","kleur":"^4.1.5","openapi-types":"^12.1.3"},"bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"gitHead":"3933c7fb7152dcdc0503d84699a0fa4be2a7ef30","_id":"@arunapb/openapi-mocker@1.0.8","_nodeVersion":"25.4.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-EaLeDX/Vl/YKYo9th6JTMtXZzIec+sJLvQpAI2nDhHFFPtwoDGPNNypfsQzVzYcSwPCOI1cPKyWlx4Wx/Nu4zw==","shasum":"65f591fab95bba280ca3fd7c4875b2b9d5e5b6ea","tarball":"https://registry.npmjs.org/@arunapb/openapi-mocker/-/openapi-mocker-1.0.8.tgz","fileCount":3,"unpackedSize":2464849,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDMhL+WMDmZ6RKEZXlSMwYY2iSZppTOT5Rw/vfZ/LGcrgIhAPArSljECeD4AwNkEo2DQFbtNMqa3eovqFgXounK4vaE"}]},"_npmUser":{"name":"arunapb","email":"arunapbandara45@gmail.com"},"directories":{},"maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openapi-mocker_1.0.8_1777714103244_0.40510958632121286"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-02T09:13:58.324Z","modified":"2026-05-02T09:28:23.555Z","1.0.3":"2026-05-02T09:13:58.570Z","1.0.4":"2026-05-02T09:16:12.703Z","1.0.6":"2026-05-02T09:23:28.196Z","1.0.7":"2026-05-02T09:25:32.627Z","1.0.8":"2026-05-02T09:28:23.434Z"},"bugs":{"url":"https://github.com/arunapb/openapi-mocker/issues"},"author":{"name":"arunapb arunapbandara45@gmail.com"},"license":"MIT","homepage":"https://github.com/arunapb/openapi-mocker","keywords":["openapi","mock","cli","api","faker","swagger"],"repository":{"type":"git","url":"git+https://github.com/arunapb/openapi-mocker.git"},"description":"Instant mock server from your OpenAPI spec","maintainers":[{"name":"arunapb","email":"arunapbandara45@gmail.com"}],"readme":"# @arunapb/openapi-mocker\n\n[![npm version](https://badge.fury.io/js/%40arunapb%2Fopenapi-mocker.svg)](https://www.npmjs.com/package/@arunapb/openapi-mocker)\n[![npm downloads](https://img.shields.io/npm/dm/@arunapb/openapi-mocker.svg)](https://www.npmjs.com/package/@arunapb/openapi-mocker)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/node/v/@arunapb/openapi-mocker)](https://nodejs.org)\n\nInstant mock server from any OpenAPI spec — no coding required.\n\nPoint `mockr` at a `.yaml` or `.json` OpenAPI file and get a fully working HTTP server with realistic fake responses generated from your schemas, in seconds.\n\n```bash\nmockr serve api.yaml\n# ✓  Mocking 12 routes on http://localhost:4010\n#   GET     /users\n#   POST    /users\n#   GET     /users/:id\n#   ...\n```\n\n---\n\n## Features\n\n- **Zero config** — just pass your spec file\n- **Realistic fake data** — driven by schema types, formats, and field names\n- **Example-first** — uses `example` values from your spec when present\n- **Watch mode** — auto-reloads the server when the spec file changes\n- **Simulated latency** — add a delay to mimic real network conditions\n- **CORS enabled** — ready for browser-based frontend development\n- **OpenAPI 3.x support** — handles `$ref` resolution automatically\n\n---\n\n## Installation\n\n```bash\nnpm install -g @arunapb/openapi-mocker\n```\n\nOr run without installing via `npx`:\n\n```bash\nnpx @arunapb/openapi-mocker serve api.yaml\n```\n\n---\n\n## Usage\n\n### Basic\n\n```bash\nmockr serve <spec>\n```\n\n`<spec>` is the path to your OpenAPI spec file (`.yaml` or `.json`).\n\n### Options\n\n| Option | Default | Description |\n|---|---|---|\n| `-p, --port <number>` | `4010` | Port to listen on |\n| `-d, --delay <ms>` | `0` | Add simulated response latency (milliseconds) |\n| `--watch` | off | Reload the server automatically when the spec file changes |\n\n### Examples\n\n```bash\n# Start on the default port\nmockr serve api.yaml\n\n# Custom port\nmockr serve api.yaml --port 3000\n\n# Simulate a slow API\nmockr serve api.yaml --delay 500\n\n# Watch the spec file and auto-reload on changes\nmockr serve api.yaml --watch\n\n# Combine options\nmockr serve api.yaml --port 3000 --delay 200 --watch\n```\n\n---\n\n## How responses are generated\n\nFor every route in your spec, `mockr` picks the first `2xx` response (falling back to the first response defined) and builds the response body using this priority order:\n\n1. **`example`** field on the response schema — used as-is\n2. **`enum`** — picks a random value from the list\n3. **Type + format** — generates realistic data using [Faker.js](https://fakerjs.dev/):\n\n| Format | Generated value |\n|---|---|\n| `date-time` | ISO 8601 datetime string |\n| `date` | ISO 8601 date string |\n| `email` | Random email address |\n| `uri` / `url` | Random URL |\n| `uuid` | Random UUID |\n| `password` | Random password |\n| `hostname` | Random domain name |\n| `ipv4` | Random IP address |\n\n4. **Field name heuristics** — when no format is specified, the field name is used to infer appropriate data:\n\n| Field name contains | Generated value |\n|---|---|\n| `email` | Email address |\n| `first` | First name |\n| `last` | Last name |\n| `name` | Full name |\n| `phone` | Phone number |\n| `address`, `city`, `country`, `zip`, `postal` | Location data |\n| `url`, `link` | URL |\n| `image`, `avatar` | Image URL |\n| `description`, `bio` | Lorem sentence |\n| `title` | Short phrase |\n| `price`, `amount` | Commerce price |\n| `id` | UUID |\n\nFor `number` / `integer` types, `minimum` and `maximum` from your schema are respected.\n\n---\n\n## Spec file example\n\n```yaml\nopenapi: 3.0.0\ninfo:\n  title: Bookstore API\n  version: 1.0.0\npaths:\n  /books:\n    get:\n      summary: List all books\n      responses:\n        '200':\n          description: A list of books\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Book'\n  /books/{id}:\n    get:\n      summary: Get a book\n      parameters:\n        - name: id\n          in: path\n          required: true\n          schema:\n            type: string\n      responses:\n        '200':\n          description: A single book\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Book'\ncomponents:\n  schemas:\n    Book:\n      type: object\n      properties:\n        id:\n          type: string\n          format: uuid\n        title:\n          type: string\n        price:\n          type: number\n          minimum: 1\n          maximum: 100\n        email:\n          type: string\n```\n\nRunning `mockr serve bookstore.yaml` produces:\n\n```\nGET  /books      → [{ id: \"a3f...\", title: \"lorem ipsum\", price: 42.5, email: \"user@example.com\" }, ...]\nGET  /books/:id  → { id: \"a3f...\", title: \"lorem ipsum\", price: 42.5, email: \"user@example.com\" }\n```\n\n---\n\n## How it works\n\n```\nOpenAPI spec file\n      │\n      ▼\n  parseSpec()          — dereferences all $ref entries\n      │\n      ▼\n  extractRoutes()      — builds a list of routes with schemas\n      │\n      ▼\n  createServer()       — registers routes on a Fastify server\n      │\n      ▼\n  generateFromSchema() — produces fake response bodies on each request\n```\n\n---\n\n## Requirements\n\n- Node.js 18+\n- An OpenAPI 3.x spec file\n\n---\n\n## Contributing\n\n```bash\ngit clone https://github.com/arunapb/openapi-mocker\ncd openapi-mocker\nnpm install\nnpm run build\n```\n\nPull requests are welcome. For major changes please open an issue first.\n\n---\n\n## License\n\nMIT","readmeFilename":"README.md"}