{"_id":"zod-response-oas","_rev":"31-fbb4b8913951ea5b785fb4d217baecf6","name":"zod-response-oas","dist-tags":{"beta":"1.0.0-beta.1","latest":"1.0.29"},"versions":{"1.0.0-beta.1":{"name":"zod-response-oas","version":"1.0.0-beta.1","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.0-beta.1","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"8f149369d5d81c9e9914a1bc5fe4b17d8c565211","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.0-beta.1.tgz","fileCount":73,"integrity":"sha512-nDi0YnUKPUfK7im523cNs0mZgb1mgz3GqdCjyQZubNjoAHAYn32jPW2Bz+4zfqWVoSW6PO52jEfmEU/pxPA4Jg==","signatures":[{"sig":"MEUCIEvxtRvuuI1TnsZwLeL7I0dqwqI52aP6FRICT0jA1dg4AiEAqiS7h4NMg4j1lLYvCrmlCY50TPWbmsdxhaQxxzIFViI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69757},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"c3353bc49025c4dcbb43eab786073e4ba05badaa","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.0-beta.1_1788106146444_0.8464805728945926","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"zod-response-oas","version":"1.0.0","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.0","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"64563ceeb920e86831b0bed4edbe01082d2513ab","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.0.tgz","fileCount":14,"integrity":"sha512-pN+KPN9hOtNT17QivD/XgUgWPYBLFPff2F/rpnL0hiQufVTwbmmRiYZT/FX/fzi+fQI3GzhtSadIJGGHD3bSQg==","signatures":[{"sig":"MEUCIDlweA9CcaVgPaogIw3/jwIsXSVasVQcheT3VqnaoTLTAiEAqEDunaB12mdD75VZYVQ+NBmgyBohc5RhjR2F0n/Liyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52385},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8576e0405447fe034fb4ff486a2f890822f3f44c","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.0_1788156308071_0.028614283317021316","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"zod-response-oas","version":"1.0.1","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.1","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"ca2b33837a2d5dbd10dea609ac0e4e1f21b3d287","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.1.tgz","fileCount":14,"integrity":"sha512-7PzdqA2wB7Hs/p90xAO7rx108zAk8Ahd88qbY06rJqA/tvyLegEidhG7CZ1p9kP3hhFt+JkqGnvuB/QlIdax2w==","signatures":[{"sig":"MEUCIQC0b/lrXSRURuZCY4VepKrKJtV8xsIhoBR4nM8XQ0OguQIgG2P60s5gPLw1Lar95W9mBPix5Pf8XXT1c6rlVcgKU8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53993},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f41de6390a0bb93bb60d58831ddb1bfa3c27d8af","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.1_1788171929293_0.6957040340492993","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"zod-response-oas","version":"1.0.2","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.2","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"73dca25d01c9cd4bf8b92cdc417d986f6ad79af4","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.2.tgz","fileCount":15,"integrity":"sha512-JD/9EctrjDZqIuX12C6ybkuLuC+nZHUzwwCxBamnRprVi1U7Aj/rEcxDXZ52hIYnu5dwmC5PUNl/8/8FE93Y9Q==","signatures":[{"sig":"MEQCIAOoCA8qSVFuAfvKi+UuYOYE0th/vStW7QVYATYs8AnwAiAQduNgNkTwx3/YdY/VvJzi94nXOcaBGk0BgOvVqKN+kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59976},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"36a71de209f9715cfce80c71cf740e7dee6f393b","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.2_1788201486667_0.258733499503204","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"zod-response-oas","version":"1.0.3","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.3","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"c845cf859a4556b3803e6b75b49e44bfa8b65db5","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.3.tgz","fileCount":15,"integrity":"sha512-kpRUYr44y5qS/GdLOZwoNdySxkexNH+42CrfE0zVAhFtOcjGHTrhQDL77faEGGUgc5MY3IPQdNfrUu/xSgkGEQ==","signatures":[{"sig":"MEUCIH3Af7yoRQJml219T9D11i2nOlRnv+/gl0JbI/MV03+NAiEA49Aww7mICQv2cqQCV2pbRK82qFp25uv59gXp9dDJFuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59984},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f1d2a011f73f7558aa79d6470cc10fb5f27b5b22","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.3_1788202470645_0.01176413107048746","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"zod-response-oas","version":"1.0.4","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.4","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"24e669a90ba2b42108b687e171dd3ccdbf702576","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.4.tgz","fileCount":15,"integrity":"sha512-8Mtw8D8KfdNCBhH/oCCnlEv5NK5PHGWRIOYlRmj8lm5PxVrnfluk6+4Tpch4G2bnwz/HxtPGX7CZRWd8HMpbcQ==","signatures":[{"sig":"MEUCIQDqYw8y2HQxtwHf84l4AsIa/e2TRPyYDSAIfMgJNckYOAIgVN6xPbsFATZbk1Rms26sA+II+/+Gr38v8exmM9OAhKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60297},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7c0265d71b67e76348b8fea805cf1a5ced21dcd7","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.4_1788203148542_0.9327738723448269","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"zod-response-oas","version":"1.0.5","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.5","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"10359e5e0a43e75aa1892d0240f2149631cd3764","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.5.tgz","fileCount":15,"integrity":"sha512-AxPMQn+S6/WRL5q4Sn49d7TGb6f9jjaZLtLE2BMNT6GT6jA2Zo6J96eIcCxOPMsth7TJPB1/xOEfJ3Fy4vs/zw==","signatures":[{"sig":"MEQCIFAghMpUP5BKmISsEhRtD4pntg7E65R3kiUf6iCLvUU5AiACO91vVQhejUcmKXj4NdOXj2meuqUvTe0qfpC4atKc1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67600},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fd3224caf898aa7c28120c468e02e013319a629e","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.5_1788205745935_0.2573971604978904","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"zod-response-oas","version":"1.0.6","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.6","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"9779690161939fcf5c35c0bb02f37a2dbcd30bc1","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.6.tgz","fileCount":15,"integrity":"sha512-3qBPE2pgmjoebGISovPLzGj5FJQRLvLbiUG3x6z61GSJf4Xok026zOl7EeQYWzIt8h9tznF0TqxV5K2YwGbYJg==","signatures":[{"sig":"MEUCIQDML1DoEvx/l+JhpuhBK8muYyzrazVBjKU34vHO1DM7BQIgfuJB4dBBmWH8CTeMws0IMNRFKVq5w+Ghfx4j9eaL9IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71176},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"bf9774d953459e331fb8ec9a3c18296e0f2e31f5","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.6_1788212393761_0.2941151003336757","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"zod-response-oas","version":"1.0.7","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.7","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"b2d2b64f81ea60445d00685b714e41764cc1fbb6","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.7.tgz","fileCount":15,"integrity":"sha512-jFup9mzuFkPh/zCi2Azuhpv/zAhY4+m0jFKVGluat+8BJ5KGjrVKhEZJYnnRBT4v6EYUDoq4kw7n+YGtNdTLMw==","signatures":[{"sig":"MEQCIDQUipTnx+qQv1GTEXNy/kGhW7TU6nJ1YreGOvIe11V2AiB9g+1tIKYFLqyKnWlfwymjUiJhWAaQTDyhzC2uBWKTwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71684},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e5ec02cda908ca7102b6e77010e5e8e131fa43bd","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.7_1788237305161_0.9726720962463649","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"zod-response-oas","version":"1.0.8","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.8","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"25788d296fb9f12624e279ca35e69bb54e9517af","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.8.tgz","fileCount":15,"integrity":"sha512-l4/72Ve27qyrbtfCe5Da7xrrDjsgB6kMLBm71GGKsfMwHg+ZSuCad+3/H666HwUvKXpMmQ/oZHuN3sYU/S78yw==","signatures":[{"sig":"MEUCIQC7HNC2CBubpOgOf+tr70jRgNV4bRm5/1O/f9eMxmZtrgIgE2iQ7thaXqDKj/xnTSx60SkX6L4m9fnkfAspwMFc/7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71640},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b6f9c62e4878c2889585e6b109b0182a296041cb","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.8_1788242073949_0.9282275108026334","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"zod-response-oas","version":"1.0.9","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.9","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"6917a744a82bd51ea86395118745aa1e7450c717","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.9.tgz","fileCount":15,"integrity":"sha512-oDuHicE8kuxea9wF5y2rlS0vciPqE+mqn9puFFib6nRFrqVPv9yLf1nqP/KByMU7l1PpLIJML2d9w4RA4JCekw==","signatures":[{"sig":"MEUCIQDo8tZJNbJ9z0Qe3JSMoA46tGIgDav24F6F+LZRO1NXLwIgDtuQX+AX1cthRumtZrmsd/geDL0kbqlG84zdXqgPnLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71781},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9d377f1bb77998068c9614099a80b259f77d23bd","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.9_1788292746663_0.05107682220604137","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"zod-response-oas","version":"1.0.10","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.10","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"16e9bb6e6d17c5c9d679b2344fe8b55420082682","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.10.tgz","fileCount":15,"integrity":"sha512-WJ/e8cgoZpebii7ov3ChCGtqLMkH1W9ZsQR7haWlF1PMM/zQ2XUkYLFfc2MqtU6fCMGDHn3umJkB87A2ObOWwg==","signatures":[{"sig":"MEQCID42vJ4DC65Ia1lbuj86UkBaio5EMLP1tVS72gK3pkxsAiBq1w7JYmwIM3yZeKhNZJlYR9fm35oir2CHJcBXlY/y6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72636},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"140ee5cae160ffa255d09f4e10e1811e01c08e15","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.10_1788293388696_0.9234559031620957","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"zod-response-oas","version":"1.0.11","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.11","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"3ba9ce511afc5fb32f5dba7be1ad7c13deb0a7f8","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.11.tgz","fileCount":15,"integrity":"sha512-WbwlYM2ktnYA47y//Ex6/EqtK3XjvJ4M18vqmbhETYaXBD+Q0gLTB5e2yuOcddWcNd2oZZ1wk+XKjA3giEURUA==","signatures":[{"sig":"MEUCIFk4byfKNTSWLNzxIoUqM2PO539/uH0/2U+jdq6SfOMaAiEA1dPNZNZlTtIQBnHrfMQkGVqGpbVqJnZuocQK4HWeazY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72636},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"52d050c872c3b94cacb4947450b70205c400e279","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.11_1788394991879_0.899949490620886","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"zod-response-oas","version":"1.0.12","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.12","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"0651c6f5fdc855de2f3b4dcd52c9a925363689cd","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.12.tgz","fileCount":15,"integrity":"sha512-AJTvQrK0CwCHLRTic89CMQOZ2MzL3SqqP+FTknp0rSmAPrYKOR5TPK/coeupX4YH6JnJVGUWfT0srV2WdkLTbw==","signatures":[{"sig":"MEUCIC1pEKbjeFmBx3o414soYDrInpkUNJPyv1lomcY+lKgRAiEAgEov2/m0RnDgeGHMlT97Dlgl6rT73wc5eMgONTTAcFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73221},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"489d8527121911464a5150ce52958e88c7e10493","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.12_1788399513978_0.04288767649231007","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"zod-response-oas","version":"1.0.13","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.13","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"ba560548d94638b076cdc15686c60962af1720da","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.13.tgz","fileCount":15,"integrity":"sha512-c8opCpx81taWvORuCiw3TAj9XByk2BJOgbvJj873UqY3+ROodiGT30yCejPZ2ZXW1qPItW37s4xLcjm5hJT9Cw==","signatures":[{"sig":"MEUCIQDZRgay/v1Jm8axzpRQvY1TwwxTMU0j6yMl5oGcTj8BgAIgHXyK/+T+1w6qYKp6H84i3sgjYdqXMhABk+rQH9BTNgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74581},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e7ef41bd0fc16271b8eedf2fca0c2d24eb6e0cc3","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.13_1788400115857_0.9109061270827408","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"zod-response-oas","version":"1.0.14","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.14","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"66e06c2cef3764a6e79f3d92430865efbdd89acb","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.14.tgz","fileCount":15,"integrity":"sha512-2FNhmz3w4+8VYSkVFAU1YQjxxS6mUAdgZo6GySfFfxjjMeq085Ud2FD6T+Eytl99KbtmT127DPX7OnJQPu6KRw==","signatures":[{"sig":"MEYCIQD427pFCNZeNEYhr3GVthvrExStMNbTz/5Onqma7v5hrAIhAJPWVUERcoLtE+d5lN24Tw62jGGvFH5f/njJpmVylJok","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74787},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"ec474e96e9c9e526187aa43a2380c779ea60048f","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.14_1788400532013_0.8826605248825714","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"zod-response-oas","version":"1.0.15","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.15","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"648a34409c5f170238ac4fc5ed9fac7a8e8bb37c","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.15.tgz","fileCount":15,"integrity":"sha512-UABqqCL0Tqvs7eEOi+P9BV6xTi8kMd/lX/C9t/BJ0O0LkoPjZIVQopZ/lsFiMNTj9G7k96COrF9vi+d0f+tTrg==","signatures":[{"sig":"MEUCIQD7KTkJ8CtooUiCCdXicC96eh0I+4qC3VWFl+H+k9yesQIgZ1ek+PedFMzU9Hq+m4wjstfyujeVV3qXHD/XbeP/O2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75190},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f17841d578a33a08725f75d4d37200a5d56b1b37","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.15_1788424542616_0.8287735534555352","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"zod-response-oas","version":"1.0.16","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.16","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"3c88b67d8078f56a87999713b24fb7de352bbc3a","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.16.tgz","fileCount":15,"integrity":"sha512-eDxFqMX0vNrVbaa0Ccpl/AYWVUcimMpwZNNBoaQeU7CUfd3Df3pcpNAvSOROMvyJCOU+kUOUgLyACO7BAE5VvQ==","signatures":[{"sig":"MEYCIQDYqrHo4aAE+yhdUd6lDfePnLMp+eHz0FyhB5dAjEN+4AIhAJ4NH5iyIsifAW723v7Om/n71Fmz29n843xRgP2gF2cj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76084},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2065843dd7c527b10b84227155868cca0b9a2748","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.16_1788424879367_0.7271827188184385","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"zod-response-oas","version":"1.0.17","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.17","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"97a58c82fe4905af4e3397e2050e5ae11ed57d47","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.17.tgz","fileCount":15,"integrity":"sha512-O52eiSBj1KND9Gj44cL1k7Mt9NMZgfiCb6eQuQtxmwlVJNhaQzdOWOX99V3orkN8xIr5XcRby6aO1LG0N5ESiQ==","signatures":[{"sig":"MEQCIGjlTbfVZRqLiyGn2AH6eZWegAnwntSdq6oHDC2y3LweAiB9yNLI4I31JOzyMnwpnIUPJEPUXcTSqIppLEECygnhOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76187},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1697023cc42d00d89392dc357c408d5d465ff06b","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.17_1788425155390_0.3972219767357712","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"zod-response-oas","version":"1.0.18","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.18","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"21daea67dd9c43013938164dbb8bb9232a71ea3d","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.18.tgz","fileCount":15,"integrity":"sha512-bPK3PDKNMy2BpOjQNhQA9VVysSlS8Udx3w3yOX6YoKmrka/Wl0e8k8SmZLn3NQzEN6ofiHfUHvmbtcAQxvlLqw==","signatures":[{"sig":"MEYCIQDygkiov+mlCNzS3DNosxda+ccS7hvfOognNof6fUS57AIhAJK6sgRx+h0DG+tyT4zYegAHvEzBBAT+Q3DbEGqFwhw1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76575},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a6c03c246af6d8cd08fbd9e0713888c9e973bc84","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.18_1788425994186_0.4881937528749396","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"zod-response-oas","version":"1.0.19","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.19","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"7767bf820d5a3d57203608128c3da92f7ba99c22","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.19.tgz","fileCount":15,"integrity":"sha512-5Sx7wiYTtivYmCe6k4FG2/rSUhzpJMDNdlwvMq1ja0pU0uu+ahRs657ZWfJVAXHCV+ZzPxtq89/RDsSldQRP0Q==","signatures":[{"sig":"MEYCIQDlnBqbZU0YhT+Hqccp9fPFqCAtGMvEFdImcCtAkUB7PAIhAJ53mv7H5dMEy1mVrX0syk1z0NC3AB25uQhYNTbzJ74X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76631},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"70e6fe7976a66f8f3ccee5cbb7e213795376e4ee","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.19_1788426140465_0.8744721875622514","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"zod-response-oas","version":"1.0.20","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.20","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"655b6a32fa4c4e556948f745f267f397a79a3684","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.20.tgz","fileCount":15,"integrity":"sha512-sVc8rPJNNVEzoEJ6oV5hGTuJn06/ZvEnDERjtLGAZAkEJIRHpwiIEF3lKAm9XaehGFenA04Qj2gDwb1VkYhh1g==","signatures":[{"sig":"MEYCIQCW+d/nMAdRPTB6FB1VhnAG/FMXpuDvdNPkgb4D1xjqAwIhAP46FFf3EwqGSG/qPiHfiBRXIgWqLcERf4aBEDH4qFYP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76883},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"500f0e6478b11c9d3d31d5cf9797d5bfc8df3feb","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.20_1788426275089_0.4112969479342432","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"zod-response-oas","version":"1.0.21","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.21","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"50317f7137062d8ac03789b0257432e8a6915645","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.21.tgz","fileCount":15,"integrity":"sha512-gS2SEy7KjsXvtGSN6GxV37RVsbogWDHoVF0twxBwVJyBYTHa8HcGuMaxyIc97talWAYc1OwP8it7PdpevsA7eA==","signatures":[{"sig":"MEUCIQCCtrwaJPy7MxJweoc5f395GcNkQq+AdP31yWQ6v9CmoQIgUmdosFauZCSduZ/qH9NOc2U4HQZBjwkvSoV8t9Gmxsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77081},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"748ca15144067b2c374e8b0b383787c466b893d7","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.21_1788426448805_0.03757954433927746","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"zod-response-oas","version":"1.0.22","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.22","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"8471651530a96521732a3389e73dd80267b3ecfa","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.22.tgz","fileCount":15,"integrity":"sha512-SxzT89TpVHP+J3L8ZzK82pobVMLSNWRl7UxZtgPe11ZPXCePhejn1HpN+8JKAbBoYOFWvMUpGrhz9A3B+cuc+Q==","signatures":[{"sig":"MEUCIQDGsoyJ61w5ncrGC4zAiUEGiShO5FoJKuv/XbYyFd0t7gIgJE3UaiyzfZ7HwmThYXhtvsrz4ImEOCfPDoHhkV2dBkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77114},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d66ef49ee6c0426bbcba925fd6b7e6dcbeefedba","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.22_1788426632668_0.1496196455164327","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"zod-response-oas","version":"1.0.23","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.23","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"81c7038f49af56ee58788424031e06b93c7d813b","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.23.tgz","fileCount":15,"integrity":"sha512-tMRRQ7ag4ixHBZqWkQkpBiDDrEPmLXuQRQHmonNT5CCLXU1za0xFahry8PJmPccEmxKySztZ0babjbfOFBAyLw==","signatures":[{"sig":"MEUCIQCB8CbrXOKwTcLyWaRPuVkAkN7mSb3aCXCQ+kaK3oae/gIgMF6g9U5z+9zOGg+nsDLEroUhbMKE7lHW9oSLEm0EQ2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76682},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"78cd5893bfa0a3405a4434d72861068f935721ff","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.23_1788427673725_0.9463430363010776","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"zod-response-oas","version":"1.0.24","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.24","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"facc6436354f81d947afa44e585c5843eacadaf0","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.24.tgz","fileCount":15,"integrity":"sha512-TC2Bu7s1vF8O7PWj+ExJSr6wfDeS0ihkrzadmgfC+Pqyb5d48harpDl33+LlY2z3Evc5DZ85pt7ZHk4QD+8JPQ==","signatures":[{"sig":"MEYCIQCbF/RaH3bWmaBUn2xnpikJoW+evriawblbtLWxg+XfYAIhAKtGC6uIjGtnLWIse0olMaiX8AOGpbdiiWCVEhfdQN/I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77064},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fdae67b66cd09ef32581d78588500073a2562785","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.24_1788427894851_0.27058116407192934","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"zod-response-oas","version":"1.0.25","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.25","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"d57ce12ed061a26157248b668ddb5740d02274e5","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.25.tgz","fileCount":15,"integrity":"sha512-U8a5N239yAmE/kE6+VttEDwChOXbqAAlEvSY/r0lmf/MARWjzAnJhlEYU/erjkreFNzsRd+Y1v/I3AYZQXiN6A==","signatures":[{"sig":"MEUCIFJn7Di9gcPUg89REDEOzC0izvSFNpEmktxneOozhggBAiEAtroW/6UfoamiGCYkqa0Jhn3isJFlXNrEzPxa/x71tZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77564},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"6b49683e50935cd944305b2aa2bab46625a7823f","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.25_1788428136937_0.6894814904080591","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"zod-response-oas","version":"1.0.26","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.26","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"fd4270fc8b2951c4c25079610fde179cba7ae3c7","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.26.tgz","fileCount":15,"integrity":"sha512-El1rqlH2axBgP1SVVhNrqYp6EQPg45xw1mgHqgqgAhQLFm+ZYqMXV6fdQxp8P2t9toy24TnbW2bnPzREmX7MJg==","signatures":[{"sig":"MEUCIQDg0vCvzk77AQpe1LRKkoSDvPrMlsZVneMlxh6rRsp2iQIgYYYFYkMArfiTUJdob00GJXLdJJVy5Nm3m7L9+i545ec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78020},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"585dd9582c5ba64483675d9b02772ca81f593a21","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.26_1788428345050_0.47155878136931495","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"zod-response-oas","version":"1.0.27","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.27","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"b80f1e79b242c3ab4f3fa4fecc75449084e8f63b","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.27.tgz","fileCount":15,"integrity":"sha512-HWVhAkixHQwFjlLGAYMqTdUknF3VIPE30gjhobYtz9ofotkxWaaS0iI9S+s9JgyD8ltWgF9vuoJp4pUAjRNERg==","signatures":[{"sig":"MEQCIH2VLOnQ55uF/UgEDjXqoaQfxRJqOt0Rd8K6pccyfn9wAiAxAc6IJaiSeS3XjK9fZYQmZCWVGnJTlphJGRX40kIH6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78186},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"3c7878bb9907d74b32ad7584148ab8b3cbf69d69","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.27_1788428650371_0.8664644861942594","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"zod-response-oas","version":"1.0.28","keywords":["express","zod","openapi","swagger","typescript","codegen"],"author":{"name":"JadeEmperor02"},"license":"MIT","_id":"zod-response-oas@1.0.28","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"bin":{"zod-response-oas":"bin/cli.js"},"dist":{"shasum":"18184df326d130513287b9350ff4311078a1eb50","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.28.tgz","fileCount":15,"integrity":"sha512-SU2/pwUBs/Kr1t/O2icCIS45yUB5z4o1h/vrixYMc4TSxNB+zkZ8sRFlTby10srpcrUm/aosKD4m4OulOLBe4w==","signatures":[{"sig":"MEYCIQCuD3L/6v4HfW9IUNYZQ/cNvKWNUkTZxQ+z//8uI+AlHwIhAKxZtqAXofl3EAlXYlbez1ZmlcBl7/BFnKO1Jq5zUICP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81418},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"236930f4dc2e293d90c38ea51108203bee65254f","scripts":{"test":"vitest run","build":"tsc --pretty","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"repository":{"url":"git+https://github.com/JadeEmperor02/zod-response-oas.git","type":"git"},"_npmVersion":"12.0.1","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","directories":{},"_nodeVersion":"24.18.0","allowScripts":{"esbuild@0.21.5":true},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","vitest":"^2.1.0","express":"^4.19.2","supertest":"^7.0.0","typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^4.17.21","@types/supertest":"^6.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"peerDependencies":{"zod":"^4.0.0","express":"^4.19.2 || ^5.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zod-response-oas_1.0.28_1788430050863_0.3600337910752567","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"zod-response-oas","version":"1.0.29","description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"zod-response-oas":"bin/cli.js"},"scripts":{"build":"tsc --pretty","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"keywords":["express","zod","openapi","swagger","typescript","codegen"],"peerDependencies":{"express":"^4.19.2 || ^5.0.0","zod":"^4.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"dependencies":{"ts-morph":"^28.0.0","ts-to-zod":"^5.1.0"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^22.0.0","typescript":"^5.6.0","vitest":"^2.1.0","supertest":"^7.0.0","@types/supertest":"^6.0.0","express":"^4.19.2","zod":"^4.0.0","@asteasolutions/zod-to-openapi":"^9.0.0"},"engines":{"node":">=18"},"author":{"name":"JadeEmperor02"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/JadeEmperor02/zod-response-oas.git"},"allowScripts":{"esbuild@0.21.5":true},"gitHead":"2b1a875013cbd0e72520a6939edcd335c00ea8b5","_id":"zod-response-oas@1.0.29","bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-EIluO9n6gqF3QNWKz90gxOmLNoFmx1plmFNldkUkBuv4DQzIin20eVKbDMD5AlfMn9A1dYIKxynnVVn6OBPRkg==","shasum":"ceeacb5618b25bafe43127257fcbbe22c7fb8566","tarball":"https://registry.npmjs.org/zod-response-oas/-/zod-response-oas-1.0.29.tgz","fileCount":15,"unpackedSize":85181,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDVmlqzJkbEFznjFiE3UAbfmXbjH7mZ56YT7BC/8siwbwIhANRDfgDjtW/DZyErCykThcp0wzN8Zt4u4v0BhL8ztfoP"}]},"_npmUser":{"name":"empyrean-jade","email":"joshuaije3@gmail.com"},"directories":{},"maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zod-response-oas_1.0.29_1788442780273_0.7213272025910451"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T16:09:06.387Z","modified":"2026-09-03T13:39:40.586Z","1.0.0-beta.1":"2026-08-30T16:09:06.574Z","1.0.0":"2026-08-31T06:05:08.242Z","1.0.1":"2026-08-31T10:25:29.468Z","1.0.2":"2026-08-31T18:38:06.801Z","1.0.3":"2026-08-31T18:54:30.792Z","1.0.4":"2026-08-31T19:05:48.682Z","1.0.5":"2026-08-31T19:49:06.081Z","1.0.6":"2026-08-31T21:39:53.901Z","1.0.7":"2026-09-01T04:35:05.298Z","1.0.8":"2026-09-01T05:54:34.105Z","1.0.9":"2026-09-01T19:59:06.800Z","1.0.10":"2026-09-01T20:09:48.870Z","1.0.11":"2026-09-03T00:23:12.024Z","1.0.12":"2026-09-03T01:38:34.105Z","1.0.13":"2026-09-03T01:48:35.995Z","1.0.14":"2026-09-03T01:55:32.150Z","1.0.15":"2026-09-03T08:35:42.750Z","1.0.16":"2026-09-03T08:41:19.502Z","1.0.17":"2026-09-03T08:45:55.528Z","1.0.18":"2026-09-03T08:59:54.318Z","1.0.19":"2026-09-03T09:02:20.595Z","1.0.20":"2026-09-03T09:04:35.256Z","1.0.21":"2026-09-03T09:07:28.947Z","1.0.22":"2026-09-03T09:10:32.813Z","1.0.23":"2026-09-03T09:27:53.864Z","1.0.24":"2026-09-03T09:31:35.000Z","1.0.25":"2026-09-03T09:35:37.077Z","1.0.26":"2026-09-03T09:39:05.188Z","1.0.27":"2026-09-03T09:44:10.513Z","1.0.28":"2026-09-03T10:07:31.050Z","1.0.29":"2026-09-03T13:39:40.441Z"},"bugs":{"url":"https://github.com/JadeEmperor02/zod-response-oas/issues"},"author":{"name":"JadeEmperor02"},"license":"MIT","homepage":"https://github.com/JadeEmperor02/zod-response-oas#readme","keywords":["express","zod","openapi","swagger","typescript","codegen"],"repository":{"type":"git","url":"git+https://github.com/JadeEmperor02/zod-response-oas.git"},"description":"Express + Zod router that validates requests, and infers OpenAPI response schemas directly from your sendSuccess()/sendError() call sites — no separate response schema to write or keep in sync.","maintainers":[{"name":"empyrean-jade","email":"joshuaije3@gmail.com"}],"readme":"# zod-response-oas\n\nExpress + Zod router that validates requests, and infers OpenAPI **response**\nschemas directly from your `sendSuccess()` call sites — no separate response\nschema to write or keep in sync.\n\n## Where this fits\n\nLibraries like `express-zod-oas`, `express-zod-openapi-autogen`, and\n`@hono/zod-openapi` already solve request-side duplication well: one Zod\nschema drives runtime validation, static types, and the OpenAPI request\ndocs. If that's all you need, those are mature, more widely used options.\n\nEvery one of them is still **config-first on responses** — you write\n`responses: { 200: UserSchema }` on the route by hand. This library reads\nthe response shape from your `sendSuccess(res, { data / message / others })`\ncall sites via static analysis (`ts-morph` — nothing is executed). If your\ncontrollers already call a consistent response helper, you often never write\na response schema at all.\n\n## Install\n\n```bash\nnpm install zod-response-oas\n```\n\nPeer dependencies: `express`, `zod` (v4+), `@asteasolutions/zod-to-openapi`.\n\n## Quick start\n\n```typescript\nimport {\n  createSmartRouter,\n  sendSuccess,\n  registerSecurityScheme,\n  useGeneratedResponseSchemas,\n} from \"zod-response-oas\";\nimport { responseSchemas } from \"./response-schemas.generated.js\";\n\nuseGeneratedResponseSchemas(responseSchemas); // once, at startup\n\nregisterSecurityScheme({\n  name: \"jwt\",\n  scheme: { type: \"http\", scheme: \"bearer\", bearerFormat: \"JWT\" },\n});\n\nconst router = createSmartRouter({\n  basePath: \"/api/v1/users\",\n  tag: \"Users\",\n  secureWith: [\"jwt\"],\n});\n\nrouter.get(\"/:id\", {\n  summary: \"Get a user by ID\",\n  secure: true,\n  handler: getUserById, // named function reference — required for auto response lookup\n});\n\nexport function getUserById(req, res) {\n  const user = { id: req.params.id, name: \"Jade\" };\n  return sendSuccess(res, { data: user });\n}\n```\n\n`router.instance` is a normal Express `Router` — mount it at the **same**\n`basePath` you configured, or routes 404 despite the OpenAPI doc looking\ncorrect:\n\n```typescript\napp.use(\"/api/v1/users\", router.instance);\n```\n\n`basePath` is used for the OpenAPI path key only; it does not auto-mount\nanything.\n\n## `sendSuccess` / `sendError`\n\nBoth take an options object (not positional args) so the compiler catches\nmis-ordered fields.\n\n```typescript\nsendSuccess(res, {\n  data: user, // resource payload (optional)\n  message: \"User fetched\", // optional human-readable message\n  others: { requestId: \"abc\" }, // optional extra TOP-LEVEL body fields\n  statusCode: 200, // optional HTTP status (default 200)\n});\n```\n\nproduces:\n\n```json\n{\n  \"ok\": true,\n  \"success\": true,\n  \"message\": \"User fetched\",\n  \"data\": { \"id\": \"1\", \"name\": \"Jade\" },\n  \"requestId\": \"abc\"\n}\n```\n\nRuntime note: if `data` is omitted, `JSON.stringify` drops it — the body has\nno `data` key. You do **not** need `data: []` / `data: null` just to satisfy\nthe generator.\n\n```typescript\n// Valid — message-only success (e.g. OTP sent)\nreturn sendSuccess(res, {\n  message: \"OTP sent to your email\",\n  statusCode: 200,\n});\n```\n\n`others` is for extra top-level fields that aren't the resource itself\n(pagination, counts, request IDs, rate-limit info):\n\n```typescript\nsendSuccess(res, {\n  data: users,\n  others: {\n    pagination: { page: 1, totalPages: 5, totalCount: 97 },\n  },\n});\n```\n\n`sendError`:\n\n```typescript\nsendError(res, \"User not found\", {\n  statusCode: 404,\n  errors: { field: \"id\", reason: \"no matching record\" },\n});\n```\n\n## Inferring responses automatically\n\n```bash\nnpx zod-response-oas generate \\\n  --controllers \"src/controllers/**/*.ts\" \\\n  --project-root .\n```\n\nThis writes `response-schemas.generated.ts`: real Zod schemas plus a lookup\nmap keyed by **handler function name**. Each entry is:\n\n```typescript\n{\n  schema: z.ZodType | null;\n  kind: \"data\" | \"response\";\n}\n```\n\n| `kind`         | Meaning                                          | Router behavior                           |\n| -------------- | ------------------------------------------------ | ----------------------------------------- |\n| `\"data\"`       | Schema is the **payload** type only              | Wrapped with `zSuccessResponse(schema)`   |\n| `\"response\"`   | Schema is the **full success envelope**          | Used as-is (no second wrap)               |\n| `schema: null` | Confirmed empty success (no data/message/others) | `zSuccessResponse()` with no `data` field |\n\nWire once at startup:\n\n```typescript\nimport { useGeneratedResponseSchemas } from \"zod-response-oas\";\nimport { responseSchemas } from \"./response-schemas.generated.js\";\n\nuseGeneratedResponseSchemas(responseSchemas);\n```\n\n### What gets inferred (per `sendSuccess` call)\n\nStatic analysis classifies **each** call site:\n\n| Call shape                                                         | Variant  | Generated `kind`                                               |\n| ------------------------------------------------------------------ | -------- | -------------------------------------------------------------- |\n| `{ data: T }`                                                      | data     | `\"data\"` (payload `T`)                                         |\n| `{ data: T, message, others }` on **same** call                    | data     | `\"data\"` (payload `T`; message stays optional on the envelope) |\n| `{ message }` and/or `{ others }` only                             | response | `\"response\"` (full envelope via ts-to-zod)                     |\n| `{}` / only `statusCode`                                           | empty    | `{ schema: null, kind: \"response\" }`                           |\n| **Mixed branches** in one handler (some with `data`, some without) | mixed    | `\"response\"` = `z.union` of full envelopes                     |\n\nExample — both branches are kept:\n\n```typescript\nexport function getOrEmpty(req, res) {\n  if (req.query.empty) {\n    return sendSuccess(res, { message: \"Nothing found\" });\n  }\n  return sendSuccess(res, { data: { id: \"1\" } });\n}\n```\n\n→ one generated entry with `kind: \"response\"` and a union of the two\nenvelope shapes (not “data wins, message branch dropped”).\n\nMultiple distinct **data** shapes still become `z.union([...])` with\n`kind: \"data\"`.\n\n### Handler naming requirements\n\nLookup uses `handler.name`. Both of these break matching (warn by default,\nor throw if `requireGeneratedResponses: true`):\n\n- **Inline arrows** — `handler: (req, res) => { ... }` is named `\"handler\"`\n  for every route. Always pass a named function from a controller file.\n- **HOC wrappers** — `handler: wrapAsync(getUserById)` that returns an\n  anonymous function loses the name. Preserve it\n  (`Object.defineProperty(wrapped, \"name\", { value: fn.name })`) or pass\n  `response:` explicitly.\n\nExplicit `response:` on a route still means a **data** schema and is wrapped\nwith `zSuccessResponse`, same as generated `kind: \"data\"`.\n\n### Strict mode\n\n```typescript\nconst router = createSmartRouter({\n  basePath: \"/api/v1/users\",\n  tag: \"Users\",\n  requireGeneratedResponses: true, // missing map entry → throw at startup\n});\n```\n\nImportant distinction:\n\n- **Missing map entry** → unresolved (warn / throw in strict mode).\n- **`{ schema: null, kind: \"response\" }`** → resolved empty success (OK in\n  strict mode).\n\n### Failures are partitioned\n\nGeneration runs **per handler**. If one controller uses a type `ts-to-zod`\ncannot represent, the others are still written; the process then throws\nlisting every failed handler. Fix those routes or pass `response:` —\nsuccessful handlers are not wiped.\n\nRegenerate whenever response shapes change (ideally `prebuild` /\n`predeploy`).\n\n### Mongoose documents\n\nA nominal `HydratedDocument<T>` is auto-unwrapped to `T` when possible:\n\n```typescript\nexport function getUser(req, res) {\n  const user = await User.findById(req.params.id);\n  return sendSuccess(res, { data: user }); // prefers T, not the full document type\n}\n```\n\nFully expanded `mongoose.Document<...>` intersections (common at real call\nsites without `.lean()` / `.toObject()`) are **not** guessed — extraction\nwarns and skips that call. Normalize before `sendSuccess`, or pass\n`response:` explicitly.\n\nCaveat: declared `T` may still diverge from serialized JSON if you use\nvirtuals, `populate()`, or schema `transform`s. Verify against real output\nwhen those features are in play.\n\n### Known limitation: named type / interface responses\n\nA `data` value typed only as a **named** `interface` / `type` alias defined\nelsewhere often cannot be converted: the temp file handed to `ts-to-zod`\ndoes not include that declaration. Generation fails **loudly** for that\nhandler (others still succeed). Use an explicit `response:` schema for\nthose routes until transitive type inclusion exists.\n\nInline object types, local structural types, and synthetic envelopes\n(message / others / mixed) go through `ts-to-zod` normally.\n\n## Automatic path parameter inference\n\n```typescript\nrouter.get(\"/:id\", { handler: getUserById });\n// :id → Mongo ObjectId regex by default (*id-suffixed params)\n```\n\nNon-id params default to `z.string()`. Override globally or per route:\n\n```typescript\nconst router = createSmartRouter({\n  basePath: \"/api/v1/users\",\n  tag: \"Users\",\n  autoParamSchemas: { id: \"uuid\", \"*\": \"slug\" },\n});\n\nrouter.get(\"/:id/legacy/:legacyId\", {\n  autoParamSchemas: { legacyId: \"number\" },\n  handler: getLegacyThing,\n});\n```\n\nBuilt-ins: `\"mongo\"`, `\"uuid\"`, `\"ulid\"`, `\"cuid\"`, `\"cuid2\"`, `\"nanoid\"`,\n`\"snowflake\"`, `\"slug\"`, `\"number\"`, `\"string\"`, or any Zod schema.\nExplicit `params:` disables auto-inference for that route.\n\n## Security schemes\n\n```typescript\nregisterSecurityScheme({\n  name: \"jwt\",\n  scheme: { type: \"http\", scheme: \"bearer\", bearerFormat: \"JWT\" },\n});\n\nconst router = createSmartRouter({\n  basePath: \"/api/v1/users\",\n  tag: \"Users\",\n  secureWith: [\"jwt\"],\n});\n\nrouter.get(\"/:id\", {\n  secure: true, // OpenAPI security only\n  middleware: [requireAuth], // actual enforcement\n  handler: getUserById,\n});\n```\n\n`secure: true` does **not** block requests by itself. Routes also get\nstandard `400` / `401` / `500` error responses in the OpenAPI doc.\n\n## CLI reference\n\n```bash\nnpx zod-response-oas generate \\\n  --tsconfig tsconfig.json \\\n  --controllers \"src/controllers/**/*.ts\" \\\n  --output response-shapes.json \\\n  --schema-output response-schemas.generated.ts \\\n  --success-helper sendSuccess \\\n  --project-root . \\\n  --skip-validation\n```\n\n## Status\n\nCorpus-tested across nested objects, arrays, `.map()` projections, unions,\nternaries, **branching `sendSuccess` (including mixed data / message-only)**,\noptional/nullable fields, `Record` / index signatures, tuples,\nintersections, Mongoose (raw vs normalized), primitives, message-only and\nempty successes, and async handlers.\n\nKnown limitations:\n\n- Named interface / type-alias-only payloads often need explicit\n  `response:` (see above).\n- `ts-to-zod` limits (generics, mapped types) fail **per handler** with a\n  clear error; other handlers still generate.\n- A literal `data: null` can hit a `ts-to-zod` quirk; other primitives are\n  fine.\n- Multi-file re-runs rewrite the whole generated file (fine for CI).\n- Any function that calls `sendSuccess` gets a schema entry — not only\n  Express route handlers (usually harmless).\n- Static analysis treats a present `message` key as “has message” even if\n  the value is `undefined` / `\"\"` (runtime may omit the field).\n\n## What this is not\n\n- Not a request-validation innovation — that part matches prior art on\n  purpose.\n- Not framework-agnostic (Express-specific for now).\n- Not a substitute for reading your OpenAPI output before shipping.\n\n\n## Troubleshooting\n\n### `z.never()` type error during OpenAPI generation\n\n**Error message:**\n```\n[zod-response-oas] CRITICAL: z.never() type encountered in generated schema!\n\nThis usually means TypeScript inferred an impossible type in your controller code.\n```\n\n**What this means:**\n\nThe library detected a `z.never()` type in your generated Zod schemas. This happens when TypeScript's type inference determines that a code path returns an \"impossible\" type (never can be assigned). Common causes:\n\n1. **Type narrowing confusion** - Using if/else branches where TypeScript narrows a variable to an impossible state:\n   ```typescript\n   // ❌ BAD - TypeScript infers second return as never[]\n   const items = await Model.find();\n   if (items && items.length > 0) {\n     return sendSuccess(res, { data: items });\n   }\n   return sendSuccess(res, { data: [] }); // TypeScript: \"items can't be empty here!\"\n   ```\n\n2. **Missing return type annotations** - TypeScript fails to infer a consistent return type across branches\n3. **Complex type guards** - Conditional logic that confuses TypeScript's inference engine\n\n**How to fix:**\n\n**Option 1: Simplify conditional logic (recommended)**\n```typescript\n// ✅ GOOD - Single return path, no type narrowing issues\nconst items = await Model.find();\nreturn sendSuccess(res, { \n  data: items, \n  statusCode: items.length > 0 ? 200 : 404 \n});\n```\n\n**Option 2: Add explicit return type**\n```typescript\n// ✅ GOOD - Explicit return type prevents bad inference\nexport async function getItems(\n  req: Request, \n  res: Response\n): Promise<Response> {\n  const items = await Model.find();\n  if (items && items.length > 0) {\n    return sendSuccess(res, { data: items });\n  }\n  return sendSuccess(res, { data: [] });\n}\n```\n\n**Option 3: Use explicit response schema**\n```typescript\n// ✅ GOOD - Bypass auto-generation for problematic routes\nrouter.get('/items', {\n  response: z.array(itemSchema),\n  handler: getItems\n});\n```\n\nAfter fixing, regenerate schemas:\n```bash\nnpm run generate:response-schemas\n```\n\n### Why the library throws instead of working around it\n\nEarlier versions (v1.0.11-v1.0.26) attempted to handle `z.never()` at runtime by passing it through or replacing it with `z.any()`. This masked the real problem: TypeScript type inference issues in your controller code.\n\nStarting in v1.0.28+, the library **fails fast** with a clear error message so you can fix the root cause. This results in:\n- More accurate OpenAPI documentation\n- Better type safety\n- Fewer surprises when the generated schema doesn't match your actual data\n- Clear guidance on how to fix the issue\n\nThe library's job is to extract and convert what TypeScript infers. When TypeScript infers `never`, that's a signal that something's wrong with the source code, not the schema generation.\n","readmeFilename":"README.md"}