{"_id":"@7nohe/openapi-mock-json-generator","_rev":"1-fda969c18c4e3b06ec15963c4ed0c83e","name":"@7nohe/openapi-mock-json-generator","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@7nohe/openapi-mock-json-generator","version":"0.1.0","description":"Generate mock API responses from OpenAPI specification file","main":"dist/cli.js","module":"./dist/cli.mjs","exports":{".":{"require":"./dist/cli.js","import":"./dist/cli.mjs","types":"./dist/cli.d.ts"}},"bin":{"openapi-json":"bin/cli.js"},"keywords":["codegen","openapi","mock","json","faker","fakerjs","jest","msw","nock","swagger"],"author":{"name":"Daiki Urata","url":"@7nohe"},"license":"MIT","dependencies":{"@apidevtools/swagger-parser":"^10.1.0","@faker-js/faker":"^7.3.0","commander":"^9.4.0","lodash":"^4.17.21","typescript":"^4.7.4"},"devDependencies":{"openapi-types":"^12.0.0","@types/lodash":"^4.14.182","@types/node":"^18.6.2","tsup":"^6.2.0"},"scripts":{"build":"tsup","preview":"pnpm -w run build && node ./dist/cli.js --input ./example/petstore.yml --output ./example/mocks","release":"npx git-ensure -a && npx bumpp --commit --tag --push"},"types":"./dist/cli.d.ts","_id":"@7nohe/openapi-mock-json-generator@0.1.0","_integrity":"sha512-f48UW137TASJtbeDfwIDSeBiJKyD5a9IuJXXL0/b4pVtPAo/3LtvzBzFQdaF2y38Ldr5YlVmxpfUOD8Z8oBD1Q==","_resolved":"/private/var/folders/hw/1qtf_mjj1fb6b1f6674k_y980000gn/T/18f44ef106117b50896c78933f64f77c/7nohe-openapi-mock-json-generator-0.1.0.tgz","_from":"file:7nohe-openapi-mock-json-generator-0.1.0.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.13.1","dist":{"integrity":"sha512-f48UW137TASJtbeDfwIDSeBiJKyD5a9IuJXXL0/b4pVtPAo/3LtvzBzFQdaF2y38Ldr5YlVmxpfUOD8Z8oBD1Q==","shasum":"9b0d3a0c8bf0cb9d712b9f018ca41dea76f473dc","tarball":"https://registry.npmjs.org/@7nohe/openapi-mock-json-generator/-/openapi-mock-json-generator-0.1.0.tgz","fileCount":17,"unpackedSize":73123,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHyBpPL+LVfaYgJXd6/k0f6nLhxU3XGe2ZFp1coSBSB8CIHaZb/GhPAz7cbs7kr0hpdxY3RPz87rQUZ6CDRHCLhlG"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5ALMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdJBAAgfWQCyJ6I1n5Q314wQJ8H4Vq+BLW7yJTYlKulpgejgjcuITV\r\ndoUOwv4zRHa+CD3M48I9IZ9OgQhdw/txXQbqapuLBP0MyQ6nkYMsxDdqrsmm\r\nCUNnYOw/mTyMEpiBK3nwXL9LWMXr8tpHB5qzlMgm7AcunN2KBwJXnkO+bYPu\r\nUf+NzwP234+B4w0d1YUwSGO8mCJlE9bncMfiTN8pkbhSJYgub6oki3cW2YBA\r\nBb6eTAWA1d5wpPFA9IQS9PsZevKkr4FP3EmYMmdk//+rZXiAoz69yu5fq5ZI\r\nY67TkaEmR4olRv8w+a0arWr3BUU9YPNLtyaKBBWa3iplEbi4VrR5e/g7sP55\r\neQ6LkSqlftjG2/CjJx6h06dKBSrD2YAqRCpYngxqWesEMKYHkQD+J5d4OOAY\r\nctbphTK5gNX2fnNpbVZigaLHyC6niVP7xMprCmoo/mS+9eJlaessxvHgLMcC\r\nfebx1Z0w3xSFao4KrhkrzbapBfrESN9UCEaya/D9/FHbUNegwIWXaSxNJQSb\r\nSEN1oAEzJJPS7zzsAMlz9jCXx79Yq31PpllIjeVc491dGMmzaIXtAxZtjCaR\r\nJdVzGuDXXXJ4tLyZ2b45u3rDmEARvD0uGVVtF5KdSrQOsAT1bfjK+RlHWGDI\r\nn56mi2zTLaK7V4JN796LlHKt/6KzooyGVDk=\r\n=coCA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7nohe","email":"7nohe.urata@gmail.com"},"directories":{},"maintainers":[{"name":"7nohe","email":"7nohe.urata@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/openapi-mock-json-generator_0.1.0_1659110092451_0.3983321787658958"},"_hasShrinkwrap":false},"0.1.1":{"name":"@7nohe/openapi-mock-json-generator","version":"0.1.1","description":"Generate mock API responses from OpenAPI specification file","main":"dist/cli.js","module":"./dist/cli.mjs","exports":{".":{"require":"./dist/cli.js","import":"./dist/cli.mjs","types":"./dist/cli.d.ts"}},"bin":{"openapi-json":"bin/cli.js"},"keywords":["codegen","openapi","mock","json","faker","fakerjs","jest","msw","nock","swagger"],"author":{"name":"Daiki Urata","url":"@7nohe"},"repository":{"type":"git","url":"git+https://github.com/7nohe/openapi-mock-json-generator.git"},"homepage":"https://github.com/7nohe/openapi-mock-json-generator","bugs":{"url":"https://github.com/7nohe/openapi-mock-json-generator/issues"},"license":"MIT","dependencies":{"@apidevtools/swagger-parser":"^10.1.0","@faker-js/faker":"^7.3.0","commander":"^9.4.0","lodash":"^4.17.21","typescript":"^4.7.4"},"devDependencies":{"openapi-types":"^12.0.0","@types/lodash":"^4.14.182","@types/node":"^18.6.2","tsup":"^6.2.0"},"scripts":{"build":"tsup","preview":"pnpm -w run build && node ./dist/cli.js --input ./example/petstore.yml --output ./example/mocks","release":"npx git-ensure -a && npx bumpp --commit --tag --push"},"types":"./dist/cli.d.ts","_id":"@7nohe/openapi-mock-json-generator@0.1.1","_integrity":"sha512-oFw1Q5pG+/rZXBiTAcoTTYoaPLjBuHneG7zlHtmCBnSnu2t2PemqMreArpRqFHwe+L5yqFsG8Un25juqyPEFXg==","_resolved":"/private/var/folders/w5/gdgp75rs48742wn5mt359rjw0000gn/T/d74d1a90c2d6977d9e0f00ea24714d2a/7nohe-openapi-mock-json-generator-0.1.1.tgz","_from":"file:7nohe-openapi-mock-json-generator-0.1.1.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-oFw1Q5pG+/rZXBiTAcoTTYoaPLjBuHneG7zlHtmCBnSnu2t2PemqMreArpRqFHwe+L5yqFsG8Un25juqyPEFXg==","shasum":"ebbf3612b3597b80c02f73c099306937e6a02e5c","tarball":"https://registry.npmjs.org/@7nohe/openapi-mock-json-generator/-/openapi-mock-json-generator-0.1.1.tgz","fileCount":83,"unpackedSize":89711,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOkZObe5bwpK1UWWN2vLme9dUZfn94inO0khN2QGugiAIhAOWKNxdf3DExVMJ77cOL+3WtOkhuLfQ2bo6vmr9/nv0D"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFgN/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4wg//SYKPcO3nMWQji4ouNQ3rmRtTfzK/rIqpqkeCX+FEOiSzfl1y\r\nMR7KHrgWEvydr/l25jy/sOrbIO/gCqqpJcD+RnZOpDNUSROt/V09mBxdG2Lx\r\nXqRu9znoKDw9MvaDeP/EWxCcb3gvGcOV/3nvoej4h7aHVrIs4j921+aVgAdz\r\naXt0d1SPWorz3PTZJPoiZH8MfO9FukyJfW+hwNEmvpABVXtrUrZJd2uUtodu\r\nrIRwCLWSj64NhLfPpfdOz2QgG/9XLfkOmElVGIie70YAJnqvUarTy11eHeS6\r\n3qPGlunDaaBJJdddme1UMkqtJ3Do6+ASh2xmqfBtSf0hR4bfyXuXTE8p1dnf\r\ny4cOna03pF5hy9foYO/5Tn8/PsBrK6vprRkKSVy5E6xYDo0MgTMwKvN92AWK\r\nIxJpofTd+tnEZ2QJRSpkis/FQmNz3qzHlv5X6CY4BgSdHn2LFguRbS4PIK3U\r\nMAU5TWBumeUY5rZ0zuNLJrxLvUmoQAprAAoKRm9jmK7CdUKDphFdnvyI9pa4\r\nTXMftT+k0E1nByEK/+wYTN/k5p1k7e0JElv77se+EeUB9Kk+NXmPz39f3iuH\r\nrfXeRvIaG2kanCAPtobLTZysd7VLHParTFqdz5Rbe7x6aVbXF1Y9pKhmYN5C\r\n5CCu1IufIRu6iJsrCKO7k9w+alJ5ZY6eBhA=\r\n=hWBD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7nohe","email":"7nohe.urata@gmail.com"},"directories":{},"maintainers":[{"name":"7nohe","email":"7nohe.urata@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/openapi-mock-json-generator_0.1.1_1662387071727_0.49920315010315885"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-29T15:54:52.394Z","0.1.0":"2022-07-29T15:54:52.632Z","modified":"2022-09-05T14:11:12.027Z","0.1.1":"2022-09-05T14:11:11.946Z"},"maintainers":[{"name":"7nohe","email":"7nohe.urata@gmail.com"}],"description":"Generate mock API responses from OpenAPI specification file","keywords":["codegen","openapi","mock","json","faker","fakerjs","jest","msw","nock","swagger"],"author":{"name":"Daiki Urata","url":"@7nohe"},"license":"MIT","readme":"# OpenAPI Mock JSON Generator\n\n> Node.js library that generates mock API responses from an OpenAPI specification file.\n\n## Why\n\nIn some cases, using a mock server for testing is overdoing and simply preparing mock JSON data is enough.\n\nYou can save time and use practical responses by generating JSON data from the OpenAPI schema automatically.\n\n## Install\n\n```\n$ npm install -D @7nohe/openapi-mock-json-generator\n```\n\n## Usage\n\n```\n$ openapi-json --help\n\nUsage: openapi-json [options]\n\nGenerate mock data based on OpenAPI\n\nOptions:\n  -V, --version               output the version number\n  -i, --input <value>         OpenAPI specification, can be a path, url or string content (required)\n  -o, --output <value>        Output directory (default: \"mocks\")\n  --max-array-length <value>  Maximum length of array (default: \"10\")\n  --locale <value>            Specifies the language of the data created by the mock (default: \"en\")\n  -s, --seed <value>          Set a randomness seed (default: \"1\")\n  -h, --help                  display help for command\n```\n\n## Example Usage\n\nAn example can be found [here](./example/).\n\n### Command\n\nTo generate JSON files, run the command below.\n\n```\n$ openapi-json --input ./petstore.yml\n```\n\n### React Testing with MSW\n\n#### React Components\n\nCreate a component to be tested.\n\n```tsx\n// src/components/PetList.tsx\nimport { Pet } from \"../../openapi/models/Pet\";\nimport { PetService } from \"../../openapi/services/PetService\";\nlet data: Pet[] | undefined;\n\nexport const PetList = () => {\n  if (data === undefined) {\n    throw PetService.findPetsByStatus([\"available\"]).then((d) => (data = d));\n  }\n\n  return (\n    <ul>\n      {data.map((pet, index) => (\n        <li data-testid=\"pet-list\" key={index}>\n          {pet.name}\n        </li>\n      ))}\n    </ul>\n  );\n};\n\n```\n\n`App.tsx` should be like this.\n\n```tsx\n// App.tsx\nimport { Suspense } from \"react\";\nimport \"./App.css\";\nimport { PetList } from \"./components/PetList\";\n\n\nfunction App() {\n  return (\n    <div className=\"App\">\n      <h1>Pet List</h1>\n      <Suspense fallback={<p>Loading...</p>}>\n        <PetList/>\n      </Suspense>\n    </div>\n  );\n}\n\nexport default App;\n\n```\n\n#### Configuration\n\nWe'll need a setup script file for MSW.\n\nThere is no need to handwriting JSON responses. Just use the generated JSON file.\n\n```ts\n// tests/setup.ts\nimport { afterAll, afterEach, beforeAll } from \"vitest\";\nimport { setupServer } from \"msw/node\";\nimport { rest } from \"msw\";\n\n// JSON file generated by OpenAPI Mock JSON Generator\nimport getPetFindByStatus from '../mocks/get-pet-findByStatus-200.json';\n\nexport const handlers = [\n  rest.get(\"http://localhost:4010/pet/findByStatus\", (req, res, ctx) => {\n    return res(ctx.status(200), ctx.json(getPetFindByStatus));\n  }),\n];\n\nconst server = setupServer(...handlers);\n\n// Start server before all tests\nbeforeAll(() => server.listen({ onUnhandledRequest: \"error\" }));\n\n//  Close server after all tests\nafterAll(() => server.close());\n\n// Reset handlers after each test `important for test isolation`\nafterEach(() => server.resetHandlers());\n\n```\n\nModify `vite.config.ts` for test.\n\n```ts\n// vite.config.ts\n/// <reference types=\"vitest\" />\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: 'happy-dom',\n    setupFiles: \"./tests/setup.ts\",\n  },\n  plugins: [react()]\n})\n\n```\n\n\n#### Test\n\n```tsx\n// tests/components/PetList.test.tsx\nimport { render, waitFor } from \"@testing-library/react\";\nimport { PetList } from \"../../src/components/PetList\";\nimport { describe, expect, it } from \"vitest\";\n\ndescribe(\"PetList\", () => {\n  it(\"renders a list of pets\", async () => {\n    const { container, findAllByTestId } = render(<PetList />);\n    await waitFor(() => findAllByTestId('pet-list'))\n    expect(container.querySelectorAll(\"li\").length).toEqual(4);\n  });\n});\n\n```\n\n## License\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/7nohe/openapi-mock-json-generator","repository":{"type":"git","url":"git+https://github.com/7nohe/openapi-mock-json-generator.git"},"bugs":{"url":"https://github.com/7nohe/openapi-mock-json-generator/issues"}}