{"_id":"@ahmedrowaihi/openapi-swift","_rev":"8-7b506742fadabb891772d3097805df7a","name":"@ahmedrowaihi/openapi-swift","dist-tags":{"latest":"2.0.0"},"versions":{"0.1.0":{"name":"@ahmedrowaihi/openapi-swift","version":"0.1.0","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@0.1.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"50b9641948062f188c47256358945d230693160c","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-0.1.0.tgz","fileCount":319,"integrity":"sha512-pUJems182FQCGccYvbzzxXTgAzGijsEaMkAcdGAOr3qLCC3THDPL0O9PCAGTOtroxdG1nXd56s02zGgpkJtVYA==","signatures":[{"sig":"MEYCIQDJHoVyyFsQekNhNnyCs5zacyuSBjJ2MxeLIdu/g4QH/AIhAOiemHlGVRbvgxYfLANCLSh5Ow5k9dMizU2x5a+Tme2j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393376},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/7972f3c185aea3ac390de66f07d72cb3/ahmedrowaihi-openapi-swift-0.1.0.tgz","_integrity":"sha512-pUJems182FQCGccYvbzzxXTgAzGijsEaMkAcdGAOr3qLCC3THDPL0O9PCAGTOtroxdG1nXd56s02zGgpkJtVYA==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_0.1.0_1777512158632_0.6035081951174148","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"0.1.1":{"name":"@ahmedrowaihi/openapi-swift","version":"0.1.1","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@0.1.1","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"106f20fa090fec429d4c155dc4bf689b74b3dbde","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-0.1.1.tgz","fileCount":319,"integrity":"sha512-/0a63IvIRnETIjPEaIIRbZvo0pcvNcNe4ioWAVHz0ajiCMHlgNngmeDwZ+Xu9KWs3JI89hjeegRr0yWm7+flDA==","signatures":[{"sig":"MEUCIFl4NNyi9oGhRbxIuEwEXx/1UPdVCLr8YXMDGC6cFVmWAiEArhq8h9g3ERc3HT++5YazgsDu6AoDoQ3eKkb8x+dWlNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":395153},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/9cb65132632286075b9429b56d7b0e87/ahmedrowaihi-openapi-swift-0.1.1.tgz","_integrity":"sha512-/0a63IvIRnETIjPEaIIRbZvo0pcvNcNe4ioWAVHz0ajiCMHlgNngmeDwZ+Xu9KWs3JI89hjeegRr0yWm7+flDA==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_0.1.1_1777525858467_0.5744722552889248","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"0.1.2":{"name":"@ahmedrowaihi/openapi-swift","version":"0.1.2","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@0.1.2","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"b6580be2fef8ea2d5505e7c21eb171930e41a2b1","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-0.1.2.tgz","fileCount":311,"integrity":"sha512-haTQBDFAkBMlrxsvQ1TADp+keBcVtjhGNVovqTGsEo3Q5w+btY+uI18rYSC3AN+YKDsTpsm2OeZYobA5raR+jg==","signatures":[{"sig":"MEYCIQCDKfW7xfG/9vds9iuR78StpSQh32KZwVm9nG3Ov1D5GwIhAPPuTwS0ObsKweFc+uqSMlVHAxwMVAF3FIi68oXmw4/u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385874},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/3a619973898b3f9c816a9db7a5f1096d/ahmedrowaihi-openapi-swift-0.1.2.tgz","_integrity":"sha512-haTQBDFAkBMlrxsvQ1TADp+keBcVtjhGNVovqTGsEo3Q5w+btY+uI18rYSC3AN+YKDsTpsm2OeZYobA5raR+jg==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/oas-core":"0.1.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_0.1.2_1777528717768_0.6452879803898914","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"0.2.0":{"name":"@ahmedrowaihi/openapi-swift","version":"0.2.0","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@0.2.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"b2f803a47bea195a3f4a32abf83cdf88cd46bf32","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-0.2.0.tgz","fileCount":311,"integrity":"sha512-TB1MXXlnIySWOWMJf2mLBfCxcHFrJoMZj4hqoGuwQMwrwC1kVbwbjtauUtFjMRJU8l/VxAeYJMlpEEGmGf1Tiw==","signatures":[{"sig":"MEUCIQC7JIxI2FeVvN6ESR/iHH0siQHTyMPVsrEh6YE+kF/xXAIgLd54V4Qfl/9CwsOZ4Axc+yINO8icNpCuC6VFZAX1jBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":386984},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/7d969333ea9987b41a4daf330ef55123/ahmedrowaihi-openapi-swift-0.2.0.tgz","_integrity":"sha512-TB1MXXlnIySWOWMJf2mLBfCxcHFrJoMZj4hqoGuwQMwrwC1kVbwbjtauUtFjMRJU8l/VxAeYJMlpEEGmGf1Tiw==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/oas-core":"1.0.0","@ahmedrowaihi/codegen-core":"0.2.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_0.2.0_1777621361879_0.6158417463872865","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"0.2.1":{"name":"@ahmedrowaihi/openapi-swift","version":"0.2.1","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@0.2.1","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"16dc1bd7abb95e1a8ee527628585c723fc38d557","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-0.2.1.tgz","fileCount":311,"integrity":"sha512-/p4YzWo6l02Z61bT6pABL0uVxwMxul6qplOqJiATQLtMYo1DYzQFH5IvVGwPJ32hmaDweMyiAv3b6QhqpSgkUg==","signatures":[{"sig":"MEYCIQCof3lbwXtyFcnF9QnTQIt6n12lifjNNXjCBuWyL8k6rQIhAKhPGmZyf8l2Id/7kSlsQ9yZbxSQi6i8ClgBYf+bNTrO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":387046},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/58c1f4fa814c6081c8dab0ea5f9ac06c/ahmedrowaihi-openapi-swift-0.2.1.tgz","_integrity":"sha512-/p4YzWo6l02Z61bT6pABL0uVxwMxul6qplOqJiATQLtMYo1DYzQFH5IvVGwPJ32hmaDweMyiAv3b6QhqpSgkUg==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.1"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_0.2.1_1777638936931_0.10634998315784916","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"1.0.0":{"name":"@ahmedrowaihi/openapi-swift","version":"1.0.0","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@1.0.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"b8e711c569641960e61471e22c91d9c4da5c71c1","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-1.0.0.tgz","fileCount":311,"integrity":"sha512-2o6583TMFmZPG4Tb95SkRw3zZwlydTa6fgtId/tEl8bOJa2y73aEacBoIlNop3WmeMCbfp2wZnqEu0uya3anww==","signatures":[{"sig":"MEYCIQCl/xkZ5fyHZ0VuJRqIZhCM66nbJWA9lOfoVyDPIZFwjQIhANZK7i141uv2xJfIP98c2G0aAyUK3MOp5JTVz0sfxwre","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":387078},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/45ce8b9625d03b51952f19f6cece938a/ahmedrowaihi-openapi-swift-1.0.0.tgz","_integrity":"sha512-2o6583TMFmZPG4Tb95SkRw3zZwlydTa6fgtId/tEl8bOJa2y73aEacBoIlNop3WmeMCbfp2wZnqEu0uya3anww==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.3.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_1.0.0_1778885511387_0.5269442884421369","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."},"2.0.0":{"name":"@ahmedrowaihi/openapi-swift","version":"2.0.0","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-swift@2.0.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/swift","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"1554266f8d496b4173a96f719d7d9d71134ae78d","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-swift/-/openapi-swift-2.0.0.tgz","fileCount":311,"integrity":"sha512-0D6//ixQuluImyHVsjdZz29pt27KZiqR1krdFZzXSWpP84yfDBgklaek7yG16vQ40VePqVsEo5M2G//HjWbTsg==","signatures":[{"sig":"MEUCIALYiBT802tTqRwpO16v5mFjHuvYLwtf9b5naNaIztt/AiEAsYuN0CAxrZhXKupS/M0LJpmTKfYD05tPoK+FtTcu2GA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-swift@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":386637},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-swift-2.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/5f3481432b177a1f7f9b5bd00d59cfdd/ahmedrowaihi-openapi-swift-2.0.0.tgz","_integrity":"sha512-0D6//ixQuluImyHVsjdZz29pt27KZiqR1krdFZzXSWpP84yfDBgklaek7yG16vQ40VePqVsEo5M2G//HjWbTsg==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/swift"},"_npmVersion":"10.8.2","description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.4.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-swift_2.0.0_1778901872683_0.8633898888343716","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-swift. See https://github.com/ir-kit/ir-kit for migration."}},"time":{"created":"2026-04-30T01:22:38.552Z","modified":"2026-05-21T09:19:09.698Z","0.1.0":"2026-04-30T01:22:38.800Z","0.1.1":"2026-04-30T05:10:58.652Z","0.1.2":"2026-04-30T05:58:37.915Z","0.2.0":"2026-05-01T07:42:42.031Z","0.2.1":"2026-05-01T12:35:37.080Z","1.0.0":"2026-05-15T22:51:51.536Z","2.0.0":"2026-05-16T03:24:32.858Z"},"bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/swift","keywords":["openapi","swift","ios","urlsession","codable","codegen","sdk","client"],"repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/swift"},"description":"Generate idiomatic Swift (Codable + URLSession + async throws) client SDKs from an OpenAPI 3.x spec.","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"readme":"# @ahmedrowaihi/openapi-swift\n\nGenerate idiomatic iOS Swift client SDKs from an OpenAPI 3.x spec — `Codable` structs, `String`-raw enums, per-tag protocols with `async throws` requirements, and a default `URLSession`-backed impl class. Per-call `RequestOptions`, composable interceptors, typed `APIError`, multipart + form-urlencoded wire encoding, multi-2xx sum-type returns, and per-op security auto-wiring all included.\n\nBuilt on the [`@hey-api`](https://github.com/hey-api/openapi-ts) toolchain (`@hey-api/json-schema-ref-parser` for spec loading, `@hey-api/shared` IR for normalization). 2.0 / 3.0 / 3.1 inputs all produce the same output.\n\nSibling package to [`@ahmedrowaihi/openapi-kotlin`](../openapi-kotlin). Part of [contract-kit](https://github.com/ahmedrowaihi/contract-kit). Companion to the [`petstore-sdk` example](../../examples/petstore-sdk).\n\n## Install\n\n```bash\npnpm add @ahmedrowaihi/openapi-swift @ahmedrowaihi/openapi-tools @hey-api/shared @hey-api/spec-types\n```\n\n## Usage\n\n```ts\nimport { generate } from \"@ahmedrowaihi/openapi-swift\";\n\nawait generate({\n  input: \"https://api.example.com/openapi.json\",\n  output: \"./sdk-swift\",\n});\n```\n\nReads any of: a filesystem path, an http(s) URL, or a pre-parsed object. YAML and JSON are both supported. External `$ref`s are bundled inline.\n\n## Output\n\n### Schemas → `Codable` structs / enums / typealiases\n\n```swift\npublic struct Pet: Codable {\n    public let id: Int64?\n    public let name: String\n    public let category: Category?\n    public let photoUrls: [String]\n    public let tags: [Tag]?\n    public let status: Pet_Status?\n\n    public init(\n        id: Int64? = nil,\n        name: String,\n        category: Category? = nil,\n        photoUrls: [String],\n        tags: [Tag]? = nil,\n        status: Pet_Status? = nil\n    ) { /* … */ }\n}\n\npublic enum Pet_Status: String, Codable {\n    case available = \"available\"\n    case pending = \"pending\"\n    case sold = \"sold\"\n}\n```\n\nEvery public struct ships an explicit `public init` so consumers from another module (mode-2 SwiftPM library) can construct values for tests and mocks — Swift's synthesized memberwise init is internal-only.\n\n### Operations → protocols + impls\n\nFor each tag the generator emits:\n\n- `protocol <Tag>API` with `async throws` requirements\n- `extension <Tag>API` with no-options convenience overloads (forward to the with-options form using `RequestOptions()` defaults)\n- `final class URLSession<Tag>API: <Tag>API` with the wire impl, holding a single `client: APIClient`\n\n```swift\npublic protocol PetAPI {\n    /// GET /pet/{petId}\n    func getPetById(petId: Int64, options: RequestOptions) async throws -> Pet\n    func getPetByIdWithResponse(petId: Int64, options: RequestOptions) async throws -> (Pet, HTTPURLResponse)\n    // …\n}\n\npublic extension PetAPI {\n    func getPetById(petId: Int64) async throws -> Pet {\n        try await getPetById(petId: petId, options: RequestOptions())\n    }\n    func getPetByIdWithResponse(petId: Int64) async throws -> (Pet, HTTPURLResponse) {\n        try await getPetByIdWithResponse(petId: petId, options: RequestOptions())\n    }\n}\n\npublic final class URLSessionPetAPI: PetAPI {\n    let client: APIClient\n    public init(client: APIClient) { self.client = client }\n    // …\n}\n```\n\nEvery operation also emits a sibling `*WithResponse` overload that returns `(T, HTTPURLResponse)` — for callers that need response headers (pagination cursors, `ETag`, rate limits). Void-returning operations get `*WithResponse() -> HTTPURLResponse` instead.\n\n### Per-call control via `RequestOptions`\n\n```swift\npublic struct RequestOptions {\n    public var client: APIClient? = nil\n    public var baseURL: URL? = nil\n    public var timeout: TimeInterval? = nil\n    public var headers: [String: String] = [:]\n    public var requestInterceptors: [(URLRequest) async throws -> URLRequest] = []\n    public var responseValidator: ((Data, HTTPURLResponse) async throws -> Void)? = nil\n    public var responseTransformer: ((Data) async throws -> Data)? = nil\n    public init(/* … all defaulted … */) { /* … */ }\n}\n```\n\n```swift\ntry await pets.getPetById(petId: 1)                                              // defaults\ntry await pets.getPetById(petId: 1, options: .init(client: customClient))        // swap transport\ntry await pets.getPetById(petId: 1, options: .init(headers: [\"X-Trace\": id]))    // extra headers\ntry await pets.getPetById(petId: 1, options: .init(baseURL: stagingURL))         // hit staging\ntry await pets.getPetById(petId: 1, options: .init(timeout: 60))                 // long-poll override\n```\n\n### Composable interceptors + auth\n\nThe runtime `APIClient` carries an `interceptors.request` array that runs against every outgoing request. Interceptors compose — auth, logging, tracing all coexist:\n\n```swift\nlet client = APIClient(baseURL: URL(string: \"https://api.example.com/\")!)\nclient.interceptors.request.append { request in\n    var request = request\n    request.setValue(\"Bearer \\(await TokenStore.access())\", forHTTPHeaderField: \"Authorization\")\n    return request\n}\n```\n\nWhen the spec declares any `securitySchemes`, the generator additionally emits an `Auth` enum (with `bearer`, `apiKey`, `basic` cases — `apiKey` carries an `APIKeyLocation` of `header` / `query` / `cookie`) and the client gains a `var auth: [String: Auth]` bag keyed by scheme name. Operations with `security:` requirements walk the bag and apply the matching scheme automatically:\n\n```swift\nclient.auth[\"bearerAuth\"] = .bearer(token: token)\nclient.auth[\"xApiKey\"] = .apiKey(name: \"X-API-Key\", value: key, in: .header)\n```\n\n### Body media-type dispatch\n\n| Input media type | Generated parameter shape | Wire encoding |\n|---|---|---|\n| `application/json` (and `+json`) | `body: T` | `JSONEncoder.encode` |\n| `multipart/form-data` (object schema) | one param per property; binary fields → `Data` | emitted `MultipartFormBody` helper |\n| `application/x-www-form-urlencoded` (object schema) | one param per property | `URLComponents.percentEncodedQuery` |\n| `application/octet-stream`, image, etc. | `body: Data` | raw bytes |\n| `oneOf` / unresolvable JSON | `body: Data` | raw bytes (caller pre-encodes) |\n\n### Typed errors\n\nEvery non-2xx response funnels into `APIError`:\n\n```swift\npublic enum APIError: Error {\n    case clientError(statusCode: Int, body: Data)        // 4XX\n    case serverError(statusCode: Int, body: Data)        // 5XX\n    case unexpectedStatus(statusCode: Int, body: Data)   // 1XX/3XX/etc.\n    case decodingFailed(Error)                           // JSONDecoder threw on a 2XX body\n    case transport(Error)                                // URLSession / network layer\n}\n```\n\n### Multi-2xx → sum-type return\n\nWhen an operation declares more than one 2xx response code with distinct schemas, the generator emits a sum-type enum and the impl dispatches on `httpResponse.statusCode`:\n\n```swift\npublic enum SubmitJob_Response {\n    case status200(JobResult)\n    case status202(Pending)\n    case status204\n}\n```\n\n## Generator options\n\nEvery option is optional. Pass them to `generate({ ... })`:\n\n| Option | Purpose |\n|---|---|\n| `input` / `output` | Spec source (path / URL / object) and SDK output dir. |\n| `clean` | Wipe `output` before writing. Default `true`. Refuses to wipe cwd or filesystem root. |\n| `package` | Emit `Package.swift` for SwiftPM-library mode. `true` → defaults from output dir basename. Object → custom `name`, `platforms`, `toolsVersion`, `sources`. Omit → mode 1 (raw `API/` + `Models/` files only). |\n| `defaultTag` | Tag to use when an op has none. Default `\"Default\"`. |\n| `protocolName` | `(tag) => string`. Default `(tag) => `${PascalCase(tag)}API``. |\n| `clientClassName` | `(protocolName) => string`. Default `(p) => `URLSession${p}``. |\n| `protocolOnly` | Skip impl class emission. Default `false`. |\n| `openImpl` | Emit impl class as `open` instead of `final` so consumers can subclass. Default `false`. |\n| `layout` | `\"split\"` (default — `API/` + `Models/`) or `\"flat\"`. |\n| `fileLocation` | `(decl) => { dir }` — full per-decl override. Rejects `..` traversal and absolute paths. |\n\n```ts\ngenerate({\n    input,\n    output,\n    package: { name: \"PetstoreSDK\" },\n    openImpl: true,\n    layout: \"flat\",\n});\n```\n\n## Two consumption modes\n\n| Mode | Setup | When |\n|---|---|---|\n| **Drop into an Xcode target** | Paste `API/` + `Models/` into your app's target sources. Same module, no `import` needed. | Adding the SDK directly to one app. |\n| **Standalone SwiftPM library** | Pass `package: { name: \"YourSDK\" }` to `generate()`; `Package.swift` is emitted alongside the source. Consumers reach for it via `.package(path: …)` or a git URL and `import YourSDK`. | Sharing across multiple apps, publishing privately, or wanting a clean module boundary. |\n\n## Output layout\n\n```text\nsdk-swift/\n├── API/\n│   ├── PetAPI.swift                # protocol\n│   ├── PetAPI+Defaults.swift       # convenience overloads (no-options)\n│   ├── URLSessionPetAPI.swift      # impl class\n│   ├── APIClient.swift             # runtime helper (transport, dispatch, decode)\n│   ├── APIInterceptors.swift       # interceptor pipeline\n│   ├── APIError.swift              # typed errors\n│   ├── Auth.swift                  # (when spec has securitySchemes)\n│   ├── APIKeyLocation.swift        # (when spec has securitySchemes)\n│   ├── MultipartFormBody.swift     # (when any op uses multipart/form-data)\n│   ├── URLEncoding.swift           # (when any op has query params)\n│   ├── QueryStyle.swift            # (when any op has query params)\n│   └── RequestOptions.swift\n└── Models/\n    ├── Pet.swift                   # Codable structs\n    ├── Pet_Status.swift            # enums\n    └── …\n```\n\n## Requirements\n\nThe generated code uses Swift Concurrency, so:\n\n- **Swift** 5.5 or newer\n- **iOS** 13.0+ (with the back-deployment library) / **iOS 15+** native, **macOS** 12+, **tvOS** 15+, **watchOS** 8+\n\nZero runtime dependencies — the SDK only imports `Foundation`.\n\n## API surface\n\n| Export | Purpose |\n|---|---|\n| `generate(opts)` | High-level entry: load → IR → decls → files on disk. |\n| `schemasToDecls(schemas)` | `IR.Model.components.schemas` → `SwDecl[]`. |\n| `operationsToDecls(paths, opts?)` | `IR.PathsObject` → `SwDecl[]` (protocols + impls grouped by tag). |\n| `buildSwiftProject(decls, opts?)` | `SwDecl[]` → `{ path, content }[]` with `import Foundation` per file. |\n| `packageSwiftFile(opts)` | Build a `Package.swift` for a SwiftPM-library wrapping the SDK. |\n| `securityKey(path, method)` | Key into `OperationsOptions.securitySchemeNames`. |\n| `printFile(file)` / `sw*` builders | Lower-level Swift AST + printer. |\n\n```text\nsrc/sw-dsl/                   Swift AST: types/, expr/, stmt/, decl/, fun.ts, file.ts\nsrc/sw-compiler/              AST → string, mirrors the AST tree\nsrc/ir/\n├── type/                     IR.SchemaObject → SwType\n├── operation/                IR.OperationObject → signature shared by protocol + impl\n├── impl/                     URLSession body builders (url, request, headers, body, decode)\n├── runtime/                  Top-level helper decls (APIClient, APIError, RequestOptions, Auth, …)\n├── schema.ts                 schemasToDecls\n└── operations.ts             paths → protocols + impl classes (orchestrator)\n```\n\nAdding a new statement / expression node: add to `sw-dsl/{expr,stmt}/types.ts`, builder, one printer case. No string templating — everything is AST-built.\n","readmeFilename":"README.md"}