@redocly/client-generator 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -54
- package/eject-assets/AGENTS.md +137 -0
- package/eject-assets/generators/cli/docs.ts +224 -0
- package/eject-assets/generators/cli/engine-source.ts +21 -0
- package/eject-assets/generators/cli/index.ts +90 -0
- package/eject-assets/generators/cli/render.ts +348 -0
- package/eject-assets/generators/go/client.ts +57 -0
- package/eject-assets/generators/go/descriptor.ts +41 -0
- package/eject-assets/generators/go/index.ts +336 -0
- package/eject-assets/generators/go/models.ts +179 -0
- package/eject-assets/generators/go/naming.ts +49 -0
- package/eject-assets/generators/go/operations.ts +296 -0
- package/eject-assets/generators/go/pagination.ts +194 -0
- package/eject-assets/generators/go/types.ts +60 -0
- package/eject-assets/generators/mock/faker.ts +214 -0
- package/eject-assets/generators/mock/index.ts +35 -0
- package/eject-assets/generators/mock/render.ts +282 -0
- package/eject-assets/generators/mock/sample.ts +316 -0
- package/eject-assets/generators/mock/values.ts +63 -0
- package/eject-assets/generators/php/client.ts +63 -0
- package/eject-assets/generators/php/descriptor.ts +58 -0
- package/eject-assets/generators/php/index.ts +237 -0
- package/eject-assets/generators/php/models.ts +275 -0
- package/eject-assets/generators/php/naming.ts +51 -0
- package/eject-assets/generators/php/operations.ts +232 -0
- package/eject-assets/generators/php/pagination.ts +133 -0
- package/eject-assets/generators/php/types.ts +148 -0
- package/eject-assets/generators/python/client.ts +123 -0
- package/eject-assets/generators/python/descriptor.ts +52 -0
- package/eject-assets/generators/python/index.ts +251 -0
- package/eject-assets/generators/python/models.ts +242 -0
- package/eject-assets/generators/python/naming.ts +46 -0
- package/eject-assets/generators/python/operations.ts +147 -0
- package/eject-assets/generators/python/pagination.ts +128 -0
- package/eject-assets/generators/python/types.ts +54 -0
- package/eject-assets/generators/swr/index.ts +37 -0
- package/eject-assets/generators/swr/render.ts +78 -0
- package/eject-assets/generators/tanstack-query/index.ts +48 -0
- package/eject-assets/generators/tanstack-query/render.ts +346 -0
- package/eject-assets/generators/transformers/index.ts +46 -0
- package/eject-assets/generators/transformers/render.ts +506 -0
- package/eject-assets/generators/typescript/banner.ts +35 -0
- package/eject-assets/generators/typescript/client.ts +254 -0
- package/eject-assets/generators/typescript/descriptor.ts +137 -0
- package/eject-assets/generators/typescript/index.ts +101 -0
- package/eject-assets/generators/typescript/inline-runtime.ts +135 -0
- package/eject-assets/generators/typescript/operation-signature.ts +62 -0
- package/eject-assets/generators/typescript/operation-types.ts +17 -0
- package/eject-assets/generators/typescript/operations.ts +524 -0
- package/eject-assets/generators/typescript/response-headers.ts +74 -0
- package/eject-assets/generators/typescript/type-guards.ts +159 -0
- package/eject-assets/generators/typescript/types.ts +172 -0
- package/eject-assets/generators/zod/index.ts +32 -0
- package/eject-assets/generators/zod/schemas.ts +456 -0
- package/eject-assets/skills/cli-generator/SKILL.md +121 -0
- package/eject-assets/skills/client-generators/SKILL.md +142 -0
- package/eject-assets/skills/go-generator/SKILL.md +96 -0
- package/eject-assets/skills/mock-generator/SKILL.md +50 -0
- package/eject-assets/skills/php-generator/SKILL.md +112 -0
- package/eject-assets/skills/python-generator/SKILL.md +110 -0
- package/eject-assets/skills/swr-generator/SKILL.md +50 -0
- package/eject-assets/skills/tanstack-query-generator/SKILL.md +55 -0
- package/eject-assets/skills/transformers-generator/SKILL.md +47 -0
- package/eject-assets/skills/typescript-generator/SKILL.md +95 -0
- package/eject-assets/skills/zod-generator/SKILL.md +54 -0
- package/lib/authoring/index.d.ts +11 -0
- package/lib/authoring/index.d.ts.map +1 -0
- package/lib/authoring/index.js +42 -0
- package/lib/authoring/index.js.map +1 -0
- package/lib/authoring/naming.d.ts +34 -0
- package/lib/authoring/naming.d.ts.map +1 -0
- package/lib/authoring/naming.js +104 -0
- package/lib/authoring/naming.js.map +1 -0
- package/lib/authoring/operation.d.ts +47 -0
- package/lib/authoring/operation.d.ts.map +1 -0
- package/lib/authoring/operation.js +86 -0
- package/lib/authoring/operation.js.map +1 -0
- package/lib/authoring/options.d.ts +9 -0
- package/lib/authoring/options.d.ts.map +1 -0
- package/lib/authoring/options.js +5 -0
- package/lib/authoring/options.js.map +1 -0
- package/lib/authoring/pagination.d.ts +19 -0
- package/lib/authoring/pagination.d.ts.map +1 -0
- package/lib/authoring/pagination.js +45 -0
- package/lib/authoring/pagination.js.map +1 -0
- package/lib/authoring/printer.d.ts +16 -0
- package/lib/authoring/printer.d.ts.map +1 -0
- package/lib/authoring/printer.js +36 -0
- package/lib/authoring/printer.js.map +1 -0
- package/lib/authoring/reference-page.d.ts +31 -0
- package/lib/authoring/reference-page.d.ts.map +1 -0
- package/lib/authoring/reference-page.js +160 -0
- package/lib/authoring/reference-page.js.map +1 -0
- package/lib/authoring/schema.d.ts +51 -0
- package/lib/authoring/schema.d.ts.map +1 -0
- package/lib/authoring/schema.js +190 -0
- package/lib/authoring/schema.js.map +1 -0
- package/lib/cli-contract.d.ts +126 -0
- package/lib/cli-contract.d.ts.map +1 -0
- package/lib/cli-contract.js +25 -0
- package/lib/cli-contract.js.map +1 -0
- package/lib/{emitters/wrapper-support.d.ts → contracts/typescript.d.ts} +13 -24
- package/lib/contracts/typescript.d.ts.map +1 -0
- package/lib/contracts/typescript.js +87 -0
- package/lib/contracts/typescript.js.map +1 -0
- package/lib/generate.d.ts +10 -10
- package/lib/generate.d.ts.map +1 -1
- package/lib/generate.js +25 -106
- package/lib/generate.js.map +1 -1
- package/lib/generators/cli/docs.d.ts +19 -0
- package/lib/generators/cli/docs.d.ts.map +1 -0
- package/lib/generators/cli/docs.js +187 -0
- package/lib/generators/cli/docs.js.map +1 -0
- package/lib/generators/cli/engine-source.d.ts +5 -0
- package/lib/generators/cli/engine-source.d.ts.map +1 -0
- package/lib/generators/cli/engine-source.js +12 -0
- package/lib/generators/cli/engine-source.js.map +1 -0
- package/lib/generators/cli/index.d.ts +18 -0
- package/lib/generators/cli/index.d.ts.map +1 -0
- package/lib/generators/cli/index.js +67 -0
- package/lib/generators/cli/index.js.map +1 -0
- package/lib/generators/cli/render.d.ts +39 -0
- package/lib/generators/cli/render.d.ts.map +1 -0
- package/lib/generators/cli/render.js +281 -0
- package/lib/generators/cli/render.js.map +1 -0
- package/lib/generators/cli/runtime/cli.d.ts +42 -0
- package/lib/generators/cli/runtime/cli.d.ts.map +1 -0
- package/lib/generators/cli/runtime/cli.js +582 -0
- package/lib/generators/cli/runtime/cli.js.map +1 -0
- package/lib/generators/compatibility.d.ts +10 -0
- package/lib/generators/compatibility.d.ts.map +1 -0
- package/lib/generators/compatibility.js +45 -0
- package/lib/generators/compatibility.js.map +1 -0
- package/lib/generators/go/client.d.ts +5 -0
- package/lib/generators/go/client.d.ts.map +1 -0
- package/lib/generators/go/client.js +34 -0
- package/lib/generators/go/client.js.map +1 -0
- package/lib/generators/go/descriptor.d.ts +6 -0
- package/lib/generators/go/descriptor.d.ts.map +1 -0
- package/lib/generators/go/descriptor.js +26 -0
- package/lib/generators/go/descriptor.js.map +1 -0
- package/lib/generators/go/index.d.ts +14 -0
- package/lib/generators/go/index.d.ts.map +1 -0
- package/lib/generators/go/index.js +240 -0
- package/lib/generators/go/index.js.map +1 -0
- package/lib/generators/go/models.d.ts +4 -0
- package/lib/generators/go/models.d.ts.map +1 -0
- package/lib/generators/go/models.js +125 -0
- package/lib/generators/go/models.js.map +1 -0
- package/lib/generators/go/naming.d.ts +15 -0
- package/lib/generators/go/naming.d.ts.map +1 -0
- package/lib/generators/go/naming.js +36 -0
- package/lib/generators/go/naming.js.map +1 -0
- package/lib/generators/go/operations.d.ts +16 -0
- package/lib/generators/go/operations.d.ts.map +1 -0
- package/lib/generators/go/operations.js +200 -0
- package/lib/generators/go/operations.js.map +1 -0
- package/lib/generators/go/pagination.d.ts +5 -0
- package/lib/generators/go/pagination.d.ts.map +1 -0
- package/lib/generators/go/pagination.js +93 -0
- package/lib/generators/go/pagination.js.map +1 -0
- package/lib/generators/go/types.d.ts +4 -0
- package/lib/generators/go/types.d.ts.map +1 -0
- package/lib/generators/go/types.js +48 -0
- package/lib/generators/go/types.js.map +1 -0
- package/lib/generators/index.d.ts +2 -3
- package/lib/generators/index.d.ts.map +1 -1
- package/lib/generators/index.js +31 -53
- package/lib/generators/index.js.map +1 -1
- package/lib/generators/meta.d.ts +13 -0
- package/lib/generators/meta.d.ts.map +1 -0
- package/lib/generators/meta.js +157 -0
- package/lib/generators/meta.js.map +1 -0
- package/lib/{emitters → generators/mock}/faker.d.ts +4 -5
- package/lib/generators/mock/faker.d.ts.map +1 -0
- package/lib/generators/mock/faker.js +180 -0
- package/lib/generators/mock/faker.js.map +1 -0
- package/lib/generators/{mock.d.ts → mock/index.d.ts} +2 -2
- package/lib/generators/mock/index.d.ts.map +1 -0
- package/lib/generators/{mock.js → mock/index.js} +8 -8
- package/lib/generators/mock/index.js.map +1 -0
- package/lib/{emitters/mock.d.ts → generators/mock/render.d.ts} +2 -3
- package/lib/generators/mock/render.d.ts.map +1 -0
- package/lib/generators/mock/render.js +228 -0
- package/lib/generators/mock/render.js.map +1 -0
- package/lib/{emitters → generators/mock}/sample.d.ts +1 -2
- package/lib/generators/mock/sample.d.ts.map +1 -0
- package/lib/generators/mock/sample.js.map +1 -0
- package/lib/generators/mock/values.d.ts +33 -0
- package/lib/generators/mock/values.d.ts.map +1 -0
- package/lib/generators/mock/values.js +46 -0
- package/lib/generators/mock/values.js.map +1 -0
- package/lib/generators/options.d.ts +7 -0
- package/lib/generators/options.d.ts.map +1 -0
- package/lib/generators/options.js +74 -0
- package/lib/generators/options.js.map +1 -0
- package/lib/generators/php/client.d.ts +5 -0
- package/lib/generators/php/client.d.ts.map +1 -0
- package/lib/generators/php/client.js +38 -0
- package/lib/generators/php/client.js.map +1 -0
- package/lib/generators/php/descriptor.d.ts +7 -0
- package/lib/generators/php/descriptor.d.ts.map +1 -0
- package/lib/generators/php/descriptor.js +42 -0
- package/lib/generators/php/descriptor.js.map +1 -0
- package/lib/generators/php/index.d.ts +14 -0
- package/lib/generators/php/index.d.ts.map +1 -0
- package/lib/generators/php/index.js +166 -0
- package/lib/generators/php/index.js.map +1 -0
- package/lib/generators/php/models.d.ts +8 -0
- package/lib/generators/php/models.d.ts.map +1 -0
- package/lib/generators/php/models.js +200 -0
- package/lib/generators/php/models.js.map +1 -0
- package/lib/generators/php/naming.d.ts +16 -0
- package/lib/generators/php/naming.d.ts.map +1 -0
- package/lib/generators/php/naming.js +31 -0
- package/lib/generators/php/naming.js.map +1 -0
- package/lib/generators/php/operations.d.ts +21 -0
- package/lib/generators/php/operations.d.ts.map +1 -0
- package/lib/generators/php/operations.js +156 -0
- package/lib/generators/php/operations.js.map +1 -0
- package/lib/generators/php/pagination.d.ts +5 -0
- package/lib/generators/php/pagination.d.ts.map +1 -0
- package/lib/generators/php/pagination.js +68 -0
- package/lib/generators/php/pagination.js.map +1 -0
- package/lib/generators/php/types.d.ts +27 -0
- package/lib/generators/php/types.d.ts.map +1 -0
- package/lib/generators/php/types.js +128 -0
- package/lib/generators/php/types.js.map +1 -0
- package/lib/generators/python/client.d.ts +6 -0
- package/lib/generators/python/client.d.ts.map +1 -0
- package/lib/generators/python/client.js +80 -0
- package/lib/generators/python/client.js.map +1 -0
- package/lib/generators/python/descriptor.d.ts +9 -0
- package/lib/generators/python/descriptor.d.ts.map +1 -0
- package/lib/generators/python/descriptor.js +38 -0
- package/lib/generators/python/descriptor.js.map +1 -0
- package/lib/generators/python/index.d.ts +15 -0
- package/lib/generators/python/index.d.ts.map +1 -0
- package/lib/generators/python/index.js +197 -0
- package/lib/generators/python/index.js.map +1 -0
- package/lib/generators/python/models.d.ts +31 -0
- package/lib/generators/python/models.d.ts.map +1 -0
- package/lib/generators/python/models.js +203 -0
- package/lib/generators/python/models.js.map +1 -0
- package/lib/generators/python/naming.d.ts +22 -0
- package/lib/generators/python/naming.d.ts.map +1 -0
- package/lib/generators/python/naming.js +28 -0
- package/lib/generators/python/naming.js.map +1 -0
- package/lib/generators/python/operations.d.ts +4 -0
- package/lib/generators/python/operations.d.ts.map +1 -0
- package/lib/generators/python/operations.js +108 -0
- package/lib/generators/python/operations.js.map +1 -0
- package/lib/generators/python/pagination.d.ts +5 -0
- package/lib/generators/python/pagination.d.ts.map +1 -0
- package/lib/generators/python/pagination.js +95 -0
- package/lib/generators/python/pagination.js.map +1 -0
- package/lib/generators/python/types.d.ts +4 -0
- package/lib/generators/python/types.d.ts.map +1 -0
- package/lib/generators/python/types.js +45 -0
- package/lib/generators/python/types.js.map +1 -0
- package/lib/generators/resolve.d.ts.map +1 -1
- package/lib/generators/resolve.js +92 -13
- package/lib/generators/resolve.js.map +1 -1
- package/lib/generators/{swr.d.ts → swr/index.d.ts} +3 -3
- package/lib/generators/swr/index.d.ts.map +1 -0
- package/lib/generators/{swr.js → swr/index.js} +7 -10
- package/lib/generators/swr/index.js.map +1 -0
- package/lib/{emitters/swr.d.ts → generators/swr/render.d.ts} +2 -4
- package/lib/generators/swr/render.d.ts.map +1 -0
- package/lib/generators/swr/render.js +57 -0
- package/lib/generators/swr/render.js.map +1 -0
- package/lib/generators/{tanstack-query.d.ts → tanstack-query/index.d.ts} +3 -3
- package/lib/generators/tanstack-query/index.d.ts.map +1 -0
- package/lib/generators/{tanstack-query.js → tanstack-query/index.js} +11 -10
- package/lib/generators/tanstack-query/index.js.map +1 -0
- package/lib/{emitters/tanstack-query.d.ts → generators/tanstack-query/render.d.ts} +6 -5
- package/lib/generators/tanstack-query/render.d.ts.map +1 -0
- package/lib/{emitters/tanstack-query.js → generators/tanstack-query/render.js} +33 -21
- package/lib/generators/tanstack-query/render.js.map +1 -0
- package/lib/generators/{transformers.d.ts → transformers/index.d.ts} +2 -2
- package/lib/generators/transformers/index.d.ts.map +1 -0
- package/lib/generators/{transformers.js → transformers/index.js} +11 -8
- package/lib/generators/transformers/index.js.map +1 -0
- package/lib/{emitters/transformers.d.ts → generators/transformers/render.d.ts} +2 -2
- package/lib/generators/transformers/render.d.ts.map +1 -0
- package/lib/{emitters/transformers.js → generators/transformers/render.js} +125 -165
- package/lib/generators/transformers/render.js.map +1 -0
- package/lib/generators/types.d.ts +190 -12
- package/lib/generators/types.d.ts.map +1 -1
- package/lib/generators/typescript/banner.d.ts +12 -0
- package/lib/generators/typescript/banner.d.ts.map +1 -0
- package/lib/{emitters/emit-options.js → generators/typescript/banner.js} +2 -3
- package/lib/generators/typescript/banner.js.map +1 -0
- package/lib/generators/typescript/client.d.ts +25 -0
- package/lib/generators/typescript/client.d.ts.map +1 -0
- package/lib/generators/typescript/client.js +207 -0
- package/lib/generators/typescript/client.js.map +1 -0
- package/lib/generators/typescript/descriptor.d.ts +11 -0
- package/lib/generators/typescript/descriptor.d.ts.map +1 -0
- package/lib/generators/typescript/descriptor.js +97 -0
- package/lib/generators/typescript/descriptor.js.map +1 -0
- package/lib/generators/typescript/index.d.ts +20 -0
- package/lib/generators/typescript/index.d.ts.map +1 -0
- package/lib/generators/typescript/index.js +80 -0
- package/lib/generators/typescript/index.js.map +1 -0
- package/lib/generators/typescript/inline-runtime.d.ts +21 -0
- package/lib/generators/typescript/inline-runtime.d.ts.map +1 -0
- package/lib/generators/typescript/inline-runtime.js +114 -0
- package/lib/generators/typescript/inline-runtime.js.map +1 -0
- package/lib/generators/typescript/operation-signature.d.ts +23 -0
- package/lib/generators/typescript/operation-signature.d.ts.map +1 -0
- package/lib/generators/typescript/operation-signature.js +41 -0
- package/lib/generators/typescript/operation-signature.js.map +1 -0
- package/lib/generators/typescript/operation-types.d.ts +9 -0
- package/lib/generators/typescript/operation-types.d.ts.map +1 -0
- package/lib/generators/typescript/operation-types.js +11 -0
- package/lib/generators/typescript/operation-types.js.map +1 -0
- package/lib/generators/typescript/operations.d.ts +60 -0
- package/lib/generators/typescript/operations.d.ts.map +1 -0
- package/lib/generators/typescript/operations.js +386 -0
- package/lib/generators/typescript/operations.js.map +1 -0
- package/lib/generators/typescript/response-headers.d.ts +12 -0
- package/lib/generators/typescript/response-headers.d.ts.map +1 -0
- package/lib/generators/typescript/response-headers.js +40 -0
- package/lib/generators/typescript/response-headers.js.map +1 -0
- package/lib/generators/typescript/runtime/auth.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/auth.js.map +1 -0
- package/lib/{runtime → generators/typescript/runtime}/create-client.d.ts +7 -2
- package/lib/generators/typescript/runtime/create-client.d.ts.map +1 -0
- package/lib/{runtime → generators/typescript/runtime}/create-client.js +84 -30
- package/lib/generators/typescript/runtime/create-client.js.map +1 -0
- package/lib/generators/typescript/runtime/errors.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/errors.js.map +1 -0
- package/lib/generators/typescript/runtime/index.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/index.js.map +1 -0
- package/lib/generators/typescript/runtime/multipart.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/multipart.js.map +1 -0
- package/lib/{runtime → generators/typescript/runtime}/paginate.d.ts +2 -2
- package/lib/generators/typescript/runtime/paginate.d.ts.map +1 -0
- package/lib/{runtime → generators/typescript/runtime}/paginate.js +12 -12
- package/lib/generators/typescript/runtime/paginate.js.map +1 -0
- package/lib/generators/typescript/runtime/parse.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/parse.js.map +1 -0
- package/lib/generators/typescript/runtime/retry.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/retry.js.map +1 -0
- package/lib/generators/typescript/runtime/send.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/send.js.map +1 -0
- package/lib/generators/typescript/runtime/setup.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/setup.js.map +1 -0
- package/lib/generators/typescript/runtime/sse.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/sse.js.map +1 -0
- package/lib/{runtime → generators/typescript/runtime}/types.d.ts +17 -95
- package/lib/generators/typescript/runtime/types.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/types.js.map +1 -0
- package/lib/generators/typescript/runtime/url.d.ts.map +1 -0
- package/lib/generators/typescript/runtime/url.js.map +1 -0
- package/lib/generators/typescript/type-guards.d.ts +4 -0
- package/lib/generators/typescript/type-guards.d.ts.map +1 -0
- package/lib/{emitters → generators/typescript}/type-guards.js +18 -52
- package/lib/generators/typescript/type-guards.js.map +1 -0
- package/lib/generators/typescript/types.d.ts +8 -0
- package/lib/generators/typescript/types.d.ts.map +1 -0
- package/lib/generators/typescript/types.js +132 -0
- package/lib/generators/typescript/types.js.map +1 -0
- package/lib/generators/{zod.d.ts → zod/index.d.ts} +2 -2
- package/lib/generators/zod/index.d.ts.map +1 -0
- package/lib/generators/{zod.js → zod/index.js} +5 -7
- package/lib/generators/zod/index.js.map +1 -0
- package/lib/{emitters/zod.d.ts → generators/zod/schemas.d.ts} +4 -5
- package/lib/generators/zod/schemas.d.ts.map +1 -0
- package/lib/{emitters/zod.js → generators/zod/schemas.js} +118 -154
- package/lib/generators/zod/schemas.js.map +1 -0
- package/lib/index.d.ts +8 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +18 -11
- package/lib/index.js.map +1 -1
- package/lib/intermediate-representation/build.d.ts +8 -1
- package/lib/intermediate-representation/build.d.ts.map +1 -1
- package/lib/intermediate-representation/build.js +59 -4
- package/lib/intermediate-representation/build.js.map +1 -1
- package/lib/intermediate-representation/model.d.ts +26 -1
- package/lib/intermediate-representation/model.d.ts.map +1 -1
- package/lib/intermediate-representation/model.js.map +1 -1
- package/lib/intermediate-representation/sanitize-identifiers.d.ts +1 -10
- package/lib/intermediate-representation/sanitize-identifiers.d.ts.map +1 -1
- package/lib/intermediate-representation/sanitize-identifiers.js +37 -38
- package/lib/intermediate-representation/sanitize-identifiers.js.map +1 -1
- package/lib/{emitters/pagination.d.ts → pagination.d.ts} +39 -15
- package/lib/pagination.d.ts.map +1 -0
- package/lib/{emitters/pagination.js → pagination.js} +13 -52
- package/lib/pagination.js.map +1 -0
- package/lib/pipeline.d.ts +17 -0
- package/lib/pipeline.d.ts.map +1 -0
- package/lib/pipeline.js +244 -0
- package/lib/pipeline.js.map +1 -0
- package/lib/plugin.d.ts +4 -4
- package/lib/plugin.d.ts.map +1 -1
- package/lib/plugin.js +12 -9
- package/lib/plugin.js.map +1 -1
- package/lib/printers/go.d.ts +33 -0
- package/lib/printers/go.d.ts.map +1 -0
- package/lib/printers/go.js +209 -0
- package/lib/printers/go.js.map +1 -0
- package/lib/printers/index.d.ts +5 -0
- package/lib/printers/index.d.ts.map +1 -0
- package/lib/printers/index.js +9 -0
- package/lib/printers/index.js.map +1 -0
- package/lib/printers/php.d.ts +21 -0
- package/lib/printers/php.d.ts.map +1 -0
- package/lib/printers/php.js +68 -0
- package/lib/printers/php.js.map +1 -0
- package/lib/printers/python.d.ts +31 -0
- package/lib/printers/python.d.ts.map +1 -0
- package/lib/printers/python.js +101 -0
- package/lib/printers/python.js.map +1 -0
- package/lib/printers/typescript.d.ts +82 -0
- package/lib/printers/typescript.d.ts.map +1 -0
- package/lib/printers/typescript.js +268 -0
- package/lib/printers/typescript.js.map +1 -0
- package/lib/reserved-names.d.ts +8 -0
- package/lib/reserved-names.d.ts.map +1 -0
- package/lib/{emitters/reserved-names.js → reserved-names.js} +16 -27
- package/lib/reserved-names.js.map +1 -0
- package/lib/runtime-contract.d.ts +62 -2
- package/lib/runtime-contract.d.ts.map +1 -1
- package/lib/runtime-contract.js +3 -3
- package/lib/runtime-contract.js.map +1 -1
- package/lib/runtime-sources/go.d.ts +2 -0
- package/lib/runtime-sources/go.d.ts.map +1 -0
- package/lib/runtime-sources/go.js +3 -0
- package/lib/runtime-sources/go.js.map +1 -0
- package/lib/runtime-sources/php.d.ts +2 -0
- package/lib/runtime-sources/php.d.ts.map +1 -0
- package/lib/runtime-sources/php.js +3 -0
- package/lib/runtime-sources/php.js.map +1 -0
- package/lib/runtime-sources/python.d.ts +12 -0
- package/lib/runtime-sources/python.d.ts.map +1 -0
- package/lib/runtime-sources/python.js +12 -0
- package/lib/runtime-sources/python.js.map +1 -0
- package/lib/runtime-sources/typescript.d.ts +36 -0
- package/lib/runtime-sources/typescript.d.ts.map +1 -0
- package/lib/runtime-sources/typescript.js +152 -0
- package/lib/runtime-sources/typescript.js.map +1 -0
- package/lib/runtime-sources.d.ts +5 -0
- package/lib/runtime-sources.d.ts.map +1 -0
- package/lib/runtime-sources.js +10 -0
- package/lib/runtime-sources.js.map +1 -0
- package/lib/setup-bake.d.ts.map +1 -0
- package/lib/{emitters/setup-bake.js → setup-bake.js} +11 -2
- package/lib/setup-bake.js.map +1 -0
- package/lib/types.d.ts +38 -8
- package/lib/types.d.ts.map +1 -1
- package/package.json +40 -4
- package/lib/emitters/auth.d.ts +0 -14
- package/lib/emitters/auth.d.ts.map +0 -1
- package/lib/emitters/auth.js +0 -30
- package/lib/emitters/auth.js.map +0 -1
- package/lib/emitters/client-assembly.d.ts +0 -15
- package/lib/emitters/client-assembly.d.ts.map +0 -1
- package/lib/emitters/client-assembly.js +0 -358
- package/lib/emitters/client-assembly.js.map +0 -1
- package/lib/emitters/descriptor.d.ts +0 -22
- package/lib/emitters/descriptor.d.ts.map +0 -1
- package/lib/emitters/descriptor.js +0 -199
- package/lib/emitters/descriptor.js.map +0 -1
- package/lib/emitters/emit-options.d.ts +0 -67
- package/lib/emitters/emit-options.d.ts.map +0 -1
- package/lib/emitters/emit-options.js.map +0 -1
- package/lib/emitters/faker.d.ts.map +0 -1
- package/lib/emitters/faker.js +0 -221
- package/lib/emitters/faker.js.map +0 -1
- package/lib/emitters/identifier.d.ts +0 -34
- package/lib/emitters/identifier.d.ts.map +0 -1
- package/lib/emitters/identifier.js +0 -104
- package/lib/emitters/identifier.js.map +0 -1
- package/lib/emitters/inline-runtime.d.ts +0 -11
- package/lib/emitters/inline-runtime.d.ts.map +0 -1
- package/lib/emitters/inline-runtime.js +0 -99
- package/lib/emitters/inline-runtime.js.map +0 -1
- package/lib/emitters/jsdoc.d.ts +0 -9
- package/lib/emitters/jsdoc.d.ts.map +0 -1
- package/lib/emitters/jsdoc.js +0 -83
- package/lib/emitters/jsdoc.js.map +0 -1
- package/lib/emitters/mock.d.ts.map +0 -1
- package/lib/emitters/mock.js +0 -265
- package/lib/emitters/mock.js.map +0 -1
- package/lib/emitters/operation-aliases.d.ts +0 -27
- package/lib/emitters/operation-aliases.d.ts.map +0 -1
- package/lib/emitters/operation-aliases.js +0 -150
- package/lib/emitters/operation-aliases.js.map +0 -1
- package/lib/emitters/operation-signature.d.ts +0 -24
- package/lib/emitters/operation-signature.d.ts.map +0 -1
- package/lib/emitters/operation-signature.js +0 -42
- package/lib/emitters/operation-signature.js.map +0 -1
- package/lib/emitters/operation-types.d.ts +0 -32
- package/lib/emitters/operation-types.d.ts.map +0 -1
- package/lib/emitters/operation-types.js +0 -117
- package/lib/emitters/operation-types.js.map +0 -1
- package/lib/emitters/operations.d.ts +0 -41
- package/lib/emitters/operations.d.ts.map +0 -1
- package/lib/emitters/operations.js +0 -35
- package/lib/emitters/operations.js.map +0 -1
- package/lib/emitters/pagination.d.ts.map +0 -1
- package/lib/emitters/pagination.js.map +0 -1
- package/lib/emitters/reserved-names.d.ts +0 -5
- package/lib/emitters/reserved-names.d.ts.map +0 -1
- package/lib/emitters/reserved-names.js.map +0 -1
- package/lib/emitters/response-headers.d.ts +0 -14
- package/lib/emitters/response-headers.d.ts.map +0 -1
- package/lib/emitters/response-headers.js +0 -91
- package/lib/emitters/response-headers.js.map +0 -1
- package/lib/emitters/runtime-sources.d.ts +0 -16
- package/lib/emitters/runtime-sources.d.ts.map +0 -1
- package/lib/emitters/runtime-sources.js +0 -16
- package/lib/emitters/runtime-sources.js.map +0 -1
- package/lib/emitters/sample.d.ts.map +0 -1
- package/lib/emitters/sample.js.map +0 -1
- package/lib/emitters/setup-bake.d.ts.map +0 -1
- package/lib/emitters/setup-bake.js.map +0 -1
- package/lib/emitters/sse.d.ts +0 -10
- package/lib/emitters/sse.d.ts.map +0 -1
- package/lib/emitters/sse.js +0 -46
- package/lib/emitters/sse.js.map +0 -1
- package/lib/emitters/support.d.ts +0 -18
- package/lib/emitters/support.d.ts.map +0 -1
- package/lib/emitters/support.js +0 -37
- package/lib/emitters/support.js.map +0 -1
- package/lib/emitters/swr.d.ts.map +0 -1
- package/lib/emitters/swr.js +0 -88
- package/lib/emitters/swr.js.map +0 -1
- package/lib/emitters/tanstack-query.d.ts.map +0 -1
- package/lib/emitters/tanstack-query.js.map +0 -1
- package/lib/emitters/transformers.d.ts.map +0 -1
- package/lib/emitters/transformers.js.map +0 -1
- package/lib/emitters/ts.d.ts +0 -42
- package/lib/emitters/ts.d.ts.map +0 -1
- package/lib/emitters/ts.js +0 -116
- package/lib/emitters/ts.js.map +0 -1
- package/lib/emitters/type-guards.d.ts +0 -21
- package/lib/emitters/type-guards.d.ts.map +0 -1
- package/lib/emitters/type-guards.js.map +0 -1
- package/lib/emitters/types.d.ts +0 -15
- package/lib/emitters/types.d.ts.map +0 -1
- package/lib/emitters/types.js +0 -125
- package/lib/emitters/types.js.map +0 -1
- package/lib/emitters/wrapper-support.d.ts.map +0 -1
- package/lib/emitters/wrapper-support.js +0 -127
- package/lib/emitters/wrapper-support.js.map +0 -1
- package/lib/emitters/zod.d.ts.map +0 -1
- package/lib/emitters/zod.js.map +0 -1
- package/lib/generators/anchor.d.ts +0 -9
- package/lib/generators/anchor.d.ts.map +0 -1
- package/lib/generators/anchor.js +0 -10
- package/lib/generators/anchor.js.map +0 -1
- package/lib/generators/mock.d.ts.map +0 -1
- package/lib/generators/mock.js.map +0 -1
- package/lib/generators/sdk.d.ts +0 -12
- package/lib/generators/sdk.d.ts.map +0 -1
- package/lib/generators/sdk.js +0 -26
- package/lib/generators/sdk.js.map +0 -1
- package/lib/generators/swr.d.ts.map +0 -1
- package/lib/generators/swr.js.map +0 -1
- package/lib/generators/tanstack-query.d.ts.map +0 -1
- package/lib/generators/tanstack-query.js.map +0 -1
- package/lib/generators/transformers.d.ts.map +0 -1
- package/lib/generators/transformers.js.map +0 -1
- package/lib/generators/zod.d.ts.map +0 -1
- package/lib/generators/zod.js.map +0 -1
- package/lib/runtime/auth.d.ts.map +0 -1
- package/lib/runtime/auth.js.map +0 -1
- package/lib/runtime/create-client.d.ts.map +0 -1
- package/lib/runtime/create-client.js.map +0 -1
- package/lib/runtime/errors.d.ts.map +0 -1
- package/lib/runtime/errors.js.map +0 -1
- package/lib/runtime/index.d.ts.map +0 -1
- package/lib/runtime/index.js.map +0 -1
- package/lib/runtime/multipart.d.ts.map +0 -1
- package/lib/runtime/multipart.js.map +0 -1
- package/lib/runtime/paginate.d.ts.map +0 -1
- package/lib/runtime/paginate.js.map +0 -1
- package/lib/runtime/parse.d.ts.map +0 -1
- package/lib/runtime/parse.js.map +0 -1
- package/lib/runtime/retry.d.ts.map +0 -1
- package/lib/runtime/retry.js.map +0 -1
- package/lib/runtime/send.d.ts.map +0 -1
- package/lib/runtime/send.js.map +0 -1
- package/lib/runtime/setup.d.ts.map +0 -1
- package/lib/runtime/setup.js.map +0 -1
- package/lib/runtime/sse.d.ts.map +0 -1
- package/lib/runtime/sse.js.map +0 -1
- package/lib/runtime/types.d.ts.map +0 -1
- package/lib/runtime/types.js.map +0 -1
- package/lib/runtime/url.d.ts.map +0 -1
- package/lib/runtime/url.js.map +0 -1
- /package/lib/{emitters → generators/mock}/sample.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/auth.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/auth.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/errors.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/errors.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/index.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/index.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/multipart.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/multipart.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/parse.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/parse.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/retry.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/retry.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/send.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/send.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/setup.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/setup.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/sse.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/sse.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/types.js +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/url.d.ts +0 -0
- /package/lib/{runtime → generators/typescript/runtime}/url.js +0 -0
- /package/lib/{emitters/setup-bake.d.ts → setup-bake.d.ts} +0 -0
|
@@ -1,358 +0,0 @@
|
|
|
1
|
-
// Client assembly, shared by both runtime distributions and both output modes. The
|
|
2
|
-
// wiring (descriptor map + `Ops` interface, emitters/descriptor.ts) is identical; only
|
|
3
|
-
// the runtime block differs — `runtime: 'package'` imports `createClient` from
|
|
4
|
-
// `@redocly/client-generator`, everything else (inline, the default) embeds the
|
|
5
|
-
// assembled runtime sources in its place (emitters/inline-runtime.ts). Single-file
|
|
6
|
-
// layout: runtime (import line | embedded block) → schema types → type guards →
|
|
7
|
-
// `<Op>*` aliases → Ops → OPERATIONS → (baked setup) → client instance → sugar →
|
|
8
|
-
// (package mode only) type re-exports — the embedded types are already exported in
|
|
9
|
-
// place, so the embed arm needs none. Split mode moves the schema types + guards into
|
|
10
|
-
// a sibling `<stem>.schemas.ts` the entry re-exports (`emitClientSplit`).
|
|
11
|
-
import { allOperations, } from '../intermediate-representation/model.js';
|
|
12
|
-
import { apiKeySetterName } from './auth.js';
|
|
13
|
-
import { descriptorStatements, opsInterfaceStatements, packageIdents } from './descriptor.js';
|
|
14
|
-
import { banner, HEADER, renderTitleComment } from './emit-options.js';
|
|
15
|
-
import { codeString, isIdentifier } from './identifier.js';
|
|
16
|
-
import { assembleInlineRuntime } from './inline-runtime.js';
|
|
17
|
-
import { renderOperationAliases, sseAliases } from './operation-aliases.js';
|
|
18
|
-
import { operationSignature } from './operation-signature.js';
|
|
19
|
-
import { computeResponse, errorTypeNodes, isTypedMultipart } from './operation-types.js';
|
|
20
|
-
import { renderArgList } from './operations.js';
|
|
21
|
-
import { resolveModelPagination } from './pagination.js';
|
|
22
|
-
import { responseHeadersTypeLiteral } from './response-headers.js';
|
|
23
|
-
import { isSseOp } from './sse.js';
|
|
24
|
-
import { pascalCase } from './support.js';
|
|
25
|
-
import { arrow, exportConstStatement, parseStatements, printNodes, printStatements, ts, typedArrow, } from './ts.js';
|
|
26
|
-
import { typeGuardStatements } from './type-guards.js';
|
|
27
|
-
import { typesStatements } from './types.js';
|
|
28
|
-
const { factory } = ts;
|
|
29
|
-
const PACKAGE_SPECIFIER = '@redocly/client-generator';
|
|
30
|
-
export function emitClientSingleFile(model, options = {}) {
|
|
31
|
-
return emitClient(model, options).entry;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* `split` mode: the same client with the schema types + type guards carved out into a
|
|
35
|
-
* sibling `<stem>.schemas.ts`. The entry file re-exports the schemas module
|
|
36
|
-
* (`export *`) and type-imports exactly the schema names its own code references, so
|
|
37
|
-
* both files hold under `noUnusedLocals`. `schemas` is absent when the document
|
|
38
|
-
* declares no schema statements (the entry is then self-contained).
|
|
39
|
-
*/
|
|
40
|
-
export function emitClientSplit(model, options, stem) {
|
|
41
|
-
return emitClient(model, options, stem);
|
|
42
|
-
}
|
|
43
|
-
/** The shared assembly; `splitStem` (when given) selects the two-file split layout. */
|
|
44
|
-
function emitClient(model, options, splitStem) {
|
|
45
|
-
const embed = options.runtime !== 'package';
|
|
46
|
-
const ops = allOperations(model.services);
|
|
47
|
-
const idents = packageIdents(model);
|
|
48
|
-
// Resolved (and VERIFIED) up front: an explicit rule that doesn't fit throws here,
|
|
49
|
-
// before any statement is built — one aggregated error for the whole model.
|
|
50
|
-
const pagination = resolveModelPagination(model, options.pagination);
|
|
51
|
-
const ctx = {
|
|
52
|
-
argsStyle: options.argsStyle ?? 'flat',
|
|
53
|
-
errorMode: options.errorMode ?? 'throw',
|
|
54
|
-
dateType: options.dateType ?? 'string',
|
|
55
|
-
schemaNames: new Set(model.schemas.map((s) => s.name)),
|
|
56
|
-
schemas: model.schemas,
|
|
57
|
-
pagination,
|
|
58
|
-
};
|
|
59
|
-
const flat = ctx.argsStyle === 'flat';
|
|
60
|
-
const hasSse = ops.some(isSseOp);
|
|
61
|
-
const hasRegular = ops.some((op) => !isSseOp(op));
|
|
62
|
-
const apiKeySchemes = model.securitySchemes.filter((s) => s.kind === 'apiKeyHeader' || s.kind === 'apiKeyQuery' || s.kind === 'apiKeyCookie');
|
|
63
|
-
const wiring = ops.length > 0
|
|
64
|
-
? [
|
|
65
|
-
...opsInterfaceStatements(model, idents, ctx),
|
|
66
|
-
...descriptorStatements(model, idents, ctx.dateType, pagination),
|
|
67
|
-
]
|
|
68
|
-
: // A spec with no operations still gets the uniform wiring shape.
|
|
69
|
-
parseStatements('export type Ops = Record<string, never>;\n' +
|
|
70
|
-
'export const OPERATIONS = {} as const satisfies Record<string, OperationDescriptor>;');
|
|
71
|
-
const runtimeSection = embed
|
|
72
|
-
? assembleInlineRuntime({
|
|
73
|
-
multipart: ops.some((op) => op.requestBody && isTypedMultipart(op.requestBody)),
|
|
74
|
-
// Auth sugar needs schemes; `resolveAuth` fires when a descriptor carries
|
|
75
|
-
// `security` — a valid spec implies the former, but embed on either.
|
|
76
|
-
auth: model.securitySchemes.length > 0 || ops.some((op) => op.security.length > 0),
|
|
77
|
-
sse: hasSse,
|
|
78
|
-
setup: !!options.setup,
|
|
79
|
-
paginate: pagination.size > 0,
|
|
80
|
-
})
|
|
81
|
-
: importLine(options, ctx, {
|
|
82
|
-
hasFlatSse: hasSse && flat,
|
|
83
|
-
hasFlatRegular: hasRegular && flat,
|
|
84
|
-
hasRegular,
|
|
85
|
-
hasApiKey: apiKeySchemes.length > 0,
|
|
86
|
-
});
|
|
87
|
-
const schemaStatements = [
|
|
88
|
-
...typesStatements(model.schemas, ctx.dateType),
|
|
89
|
-
...typeGuardStatements(model.schemas),
|
|
90
|
-
];
|
|
91
|
-
const bodyStatements = [...ops.flatMap((op) => aliasStatements(op, ctx)), ...wiring];
|
|
92
|
-
const sugar = printNodes(sugarStatements(ops, idents, ctx, model.securitySchemes, apiKeySchemes));
|
|
93
|
-
// Embed mode exports its whole public surface in place; only the package arm re-exports.
|
|
94
|
-
const reexports = embed ? '' : reexportLines(ctx, hasSse);
|
|
95
|
-
// Layout puts the reader's OWN API first (types → aliases → Ops → OPERATIONS) and the
|
|
96
|
-
// machinery after it. In embed mode the runtime block sits between the descriptors and
|
|
97
|
-
// the `client` initializer — after it for readability, before `client` so every
|
|
98
|
-
// declaration the module-init call chain touches (hoisted functions AND any future
|
|
99
|
-
// top-level const) is already evaluated; in package mode the import line leads.
|
|
100
|
-
if (splitStem === undefined) {
|
|
101
|
-
return {
|
|
102
|
-
entry: banner([
|
|
103
|
-
HEADER,
|
|
104
|
-
renderTitleComment(model),
|
|
105
|
-
...(embed ? [] : [runtimeSection]),
|
|
106
|
-
printStatements([...schemaStatements, ...bodyStatements]),
|
|
107
|
-
...(embed ? [runtimeSection] : []),
|
|
108
|
-
clientSection(options, ctx, model),
|
|
109
|
-
sugar,
|
|
110
|
-
reexports,
|
|
111
|
-
]),
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
const body = printStatements(bodyStatements);
|
|
115
|
-
const hasSchemas = schemaStatements.length > 0;
|
|
116
|
-
return {
|
|
117
|
-
entry: banner([
|
|
118
|
-
HEADER,
|
|
119
|
-
renderTitleComment(model),
|
|
120
|
-
hasSchemas
|
|
121
|
-
? schemaLinks(body + '\n' + sugar, ctx.schemaNames, `./${splitStem}.schemas.${options.importExt ?? 'js'}`)
|
|
122
|
-
: '',
|
|
123
|
-
...(embed ? [] : [runtimeSection]),
|
|
124
|
-
body,
|
|
125
|
-
...(embed ? [runtimeSection] : []),
|
|
126
|
-
clientSection(options, ctx, model),
|
|
127
|
-
sugar,
|
|
128
|
-
reexports,
|
|
129
|
-
]),
|
|
130
|
-
schemas: hasSchemas
|
|
131
|
-
? banner([HEADER, renderTitleComment(model), printStatements(schemaStatements)])
|
|
132
|
-
: undefined,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* The entry ⇄ schemas linkage of the split layout: a type-only import of exactly the
|
|
137
|
-
* schema names the entry's own code references, plus the public `export *` re-export.
|
|
138
|
-
* Referenced names are found by walking the printed entry code's identifiers (an AST
|
|
139
|
-
* pass over the emitted text, not a substring search — operation JSDoc may mention a
|
|
140
|
-
* schema name, and importing an unreferenced type would trip `noUnusedLocals`).
|
|
141
|
-
*/
|
|
142
|
-
function schemaLinks(entryCode, schemaNames, specifier) {
|
|
143
|
-
const referenced = new Set();
|
|
144
|
-
// Only TYPE references count as uses of the type-only import: a value-position
|
|
145
|
-
// identifier that happens to share a schema's name (every descriptor's `id:` key,
|
|
146
|
-
// for a schema named `id`) must not drag the name in — strict consumer lint
|
|
147
|
-
// configs flag the resulting unused import.
|
|
148
|
-
const visit = (node) => {
|
|
149
|
-
if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
|
|
150
|
-
if (schemaNames.has(node.typeName.text))
|
|
151
|
-
referenced.add(node.typeName.text);
|
|
152
|
-
}
|
|
153
|
-
node.forEachChild(visit);
|
|
154
|
-
};
|
|
155
|
-
for (const statement of parseStatements(entryCode))
|
|
156
|
-
visit(statement);
|
|
157
|
-
const names = [...referenced].sort();
|
|
158
|
-
const importLine = names.length > 0 ? `import type { ${names.join(', ')} } from '${specifier}';\n` : '';
|
|
159
|
-
return `${importLine}export * from '${specifier}';`;
|
|
160
|
-
}
|
|
161
|
-
/** The single import from the runtime package — only names the file actually references. */
|
|
162
|
-
function importLine(options, ctx, refs) {
|
|
163
|
-
const values = ['createClient', ...(options.setup ? ['mergeSetup'] : [])];
|
|
164
|
-
const types = [
|
|
165
|
-
...(options.setup ? ['ClientConfig', 'Middleware'] : []),
|
|
166
|
-
'OperationDescriptor',
|
|
167
|
-
// Flat sugar signatures reference the per-call option types.
|
|
168
|
-
...(refs.hasFlatRegular ? ['RequestOptions'] : []),
|
|
169
|
-
// Flat throw-mode sugar return types vary with the inferred request-option type.
|
|
170
|
-
...(refs.hasFlatRegular && ctx.errorMode !== 'result' ? ['EnvelopeResult'] : []),
|
|
171
|
-
// `Ops` wraps results in `Result` in result mode — but only NON-SSE members
|
|
172
|
-
// (an SSE-only spec would otherwise import it unused and fail noUnusedLocals).
|
|
173
|
-
...(ctx.errorMode === 'result' && refs.hasRegular ? ['Result'] : []),
|
|
174
|
-
...(refs.hasFlatSse ? ['SseOptions'] : []),
|
|
175
|
-
// The apiKey sugar closures take a `TokenProvider`.
|
|
176
|
-
...(refs.hasApiKey ? ['TokenProvider'] : []),
|
|
177
|
-
].sort();
|
|
178
|
-
const names = [...values, ...types.map((t) => `type ${t}`)].join(', ');
|
|
179
|
-
return `import { ${names} } from '${PACKAGE_SPECIFIER}';`;
|
|
180
|
-
}
|
|
181
|
-
/** One operation's `<Op>*` aliases — the same emitters and suppression rules as inline mode. */
|
|
182
|
-
function aliasStatements(op, ctx) {
|
|
183
|
-
const { pathParams } = operationSignature(op);
|
|
184
|
-
const ordered = pathParams.map((p) => p.param);
|
|
185
|
-
const identMap = new Map(pathParams.map((p) => [p.param.name, p.ident]));
|
|
186
|
-
if (isSseOp(op))
|
|
187
|
-
return sseAliases(op, ordered, identMap, ctx, 'wire');
|
|
188
|
-
const { responseType } = computeResponse(op.successResponses, ctx.dateType);
|
|
189
|
-
const errorMembers = ctx.errorMode === 'result' ? errorTypeNodes(op.errorResponses, ctx.dateType) : [];
|
|
190
|
-
const errorAlias = errorMembers.length > 0 ? `${pascalCase(op.name)}Error` : '';
|
|
191
|
-
return renderOperationAliases(op, responseType, ordered, identMap, errorAlias, errorMembers, ctx, true, 'wire');
|
|
192
|
-
}
|
|
193
|
-
/** The (optional) baked setup + the default `client` instance. */
|
|
194
|
-
function clientSection(options, ctx, model) {
|
|
195
|
-
const serverUrl = options.serverUrl ?? model.serverUrl;
|
|
196
|
-
const fields = [
|
|
197
|
-
// Always baked when the document declares one: the runtime's fallback is a
|
|
198
|
-
// relative URL, which Node's fetch rejects.
|
|
199
|
-
...(serverUrl !== undefined ? [`serverUrl: ${codeString(serverUrl)}`] : []),
|
|
200
|
-
...(ctx.errorMode === 'result' ? ['errorMode: "result"'] : []),
|
|
201
|
-
// Client identification for API-owner telemetry; the runtime sends it only
|
|
202
|
-
// outside browsers, and `configure({ clientHeader: false })` disables it.
|
|
203
|
-
'clientHeader: "redocly-client-generator"',
|
|
204
|
-
];
|
|
205
|
-
const config = fields.length > 0 ? `{ ${fields.join(', ')} }` : '{}';
|
|
206
|
-
// Precedence, lowest → highest: spec defaults → baked publisher setup → app `configure()`.
|
|
207
|
-
// The inner merge flattens the setup into a ClientConfig; the outer layers it OVER the
|
|
208
|
-
// spec defaults (mergeSetup's second argument wins per-field; middleware composes).
|
|
209
|
-
const configArg = options.setup
|
|
210
|
-
? `mergeSetup({ config: ${config} }, mergeSetup(__redoclySetup, {}))`
|
|
211
|
-
: config;
|
|
212
|
-
// The trailing type args narrow `ctx.operation` to the spec's literal unions.
|
|
213
|
-
// `OperationTag` mirrors descriptorStatements' gate: derived only when some
|
|
214
|
-
// operation is tagged (it would otherwise be `never`); zero-ops specs have no
|
|
215
|
-
// derived unions at all, so they keep the string defaults.
|
|
216
|
-
const ops = allOperations(model.services);
|
|
217
|
-
const hasTags = ops.some((op) => op.tags.length > 0);
|
|
218
|
-
const typeArgs = ops.length > 0
|
|
219
|
-
? `<Ops, OperationId, OperationPath, ${hasTags ? 'OperationTag' : 'string'}>`
|
|
220
|
-
: '<Ops>';
|
|
221
|
-
const client = `export const client = createClient${typeArgs}(OPERATIONS, ${configArg});`;
|
|
222
|
-
if (!options.setup)
|
|
223
|
-
return client;
|
|
224
|
-
return ('// ─── Baked-in setup (--setup) ───\n' +
|
|
225
|
-
`const __redoclySetup: { config?: ClientConfig; middleware?: Middleware[] } = ${options.setup};\n` +
|
|
226
|
-
client);
|
|
227
|
-
}
|
|
228
|
-
/** Core destructure + per-scheme auth setters + per-operation call sugar. */
|
|
229
|
-
function sugarStatements(ops, idents, ctx, schemes, apiKeySchemes) {
|
|
230
|
-
const statements = [...parseStatements('export const { configure, use } = client;')];
|
|
231
|
-
// Auth sugar in `authSetterNames` order: bearer, basic, then each apiKey scheme.
|
|
232
|
-
// The runtime's auth members close over the instance config (no `this`), so
|
|
233
|
-
// direct bindings are safe.
|
|
234
|
-
if (schemes.some((s) => s.kind === 'bearer')) {
|
|
235
|
-
statements.push(...parseStatements('export const setBearer = client.auth.bearer;'));
|
|
236
|
-
}
|
|
237
|
-
if (schemes.some((s) => s.kind === 'basic')) {
|
|
238
|
-
statements.push(...parseStatements('export const setBasicAuth = client.auth.basic;'));
|
|
239
|
-
}
|
|
240
|
-
for (const scheme of apiKeySchemes) {
|
|
241
|
-
const name = apiKeySetterName(scheme.key, apiKeySchemes.length === 1);
|
|
242
|
-
statements.push(...parseStatements(`export const ${name} = (value: TokenProvider) => client.auth.apiKey(${codeString(scheme.key)}, value);`));
|
|
243
|
-
}
|
|
244
|
-
if (ops.length === 0)
|
|
245
|
-
return statements;
|
|
246
|
-
if (ctx.argsStyle === 'grouped') {
|
|
247
|
-
// Grouped style: the client methods already take the grouped args shape.
|
|
248
|
-
const names = ops.map((op) => idents.get(op.name)).join(', ');
|
|
249
|
-
statements.push(...parseStatements(`export const { ${names} } = client;`));
|
|
250
|
-
return statements;
|
|
251
|
-
}
|
|
252
|
-
for (const op of ops)
|
|
253
|
-
statements.push(flatSugarStatement(op, idents.get(op.name), ctx));
|
|
254
|
-
return statements;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* One flat one-liner: today's positional signature forwarding to the grouped client
|
|
258
|
-
* method. Path values are keyed by the WIRE name (the runtime routes
|
|
259
|
-
* `args[param.name]`); a path param literally named `params`/`body`/`headers` would
|
|
260
|
-
* collide with the slot keys — a spec-acknowledged runtime-contract limitation.
|
|
261
|
-
* A paginated operation's arrow is wrapped in `Object.assign(…, { pages, items })`
|
|
262
|
-
* so the flat sugar preserves the method-attached iterators.
|
|
263
|
-
* Throw-mode (non-SSE) arrows are generic over `init` so `{ envelope: true }` narrows
|
|
264
|
-
* the return type to `Envelope<…>` (plain `RequestOptions` would collapse the overload).
|
|
265
|
-
*/
|
|
266
|
-
function flatSugarStatement(op, ident, ctx) {
|
|
267
|
-
const { pathParams } = operationSignature(op);
|
|
268
|
-
const params = renderArgList(op, pathParams.map((p) => p.param), new Map(pathParams.map((p) => [p.param.name, p.ident])), ctx);
|
|
269
|
-
const props = pathParams.map(({ param, ident: paramIdent }) => param.name === paramIdent
|
|
270
|
-
? factory.createShorthandPropertyAssignment(paramIdent)
|
|
271
|
-
: factory.createPropertyAssignment(isIdentifier(param.name) ? param.name : factory.createStringLiteral(param.name), factory.createIdentifier(paramIdent)));
|
|
272
|
-
if (op.queryParams.length > 0)
|
|
273
|
-
props.push(factory.createShorthandPropertyAssignment('params'));
|
|
274
|
-
if (op.requestBody)
|
|
275
|
-
props.push(factory.createShorthandPropertyAssignment('body'));
|
|
276
|
-
if (op.headerParams.length > 0) {
|
|
277
|
-
props.push(factory.createShorthandPropertyAssignment('headers'));
|
|
278
|
-
}
|
|
279
|
-
if (op.cookieParams.length > 0) {
|
|
280
|
-
props.push(factory.createShorthandPropertyAssignment('cookies'));
|
|
281
|
-
}
|
|
282
|
-
const call = factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('client'), ident), undefined, [factory.createObjectLiteralExpression(props, false), factory.createIdentifier('init')]);
|
|
283
|
-
const fn = ctx.errorMode !== 'result' && !isSseOp(op)
|
|
284
|
-
? envelopeAwareFlatArrow(op, params, call, ctx)
|
|
285
|
-
: arrow(params, call);
|
|
286
|
-
if (!ctx.pagination?.has(op.name))
|
|
287
|
-
return exportConstStatement(ident, fn);
|
|
288
|
-
const methodMember = (name) => factory.createPropertyAssignment(name, factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createIdentifier('client'), ident), name));
|
|
289
|
-
return exportConstStatement(ident, factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Object'), 'assign'), undefined, [
|
|
290
|
-
fn,
|
|
291
|
-
factory.createObjectLiteralExpression([methodMember('pages'), methodMember('items')], false),
|
|
292
|
-
]));
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* `<I extends RequestOptions | undefined = undefined>(…, init?: I) =>
|
|
296
|
-
* Promise<EnvelopeResult<Result, Headers, I>>`
|
|
297
|
-
*/
|
|
298
|
-
function envelopeAwareFlatArrow(op, params, call, ctx) {
|
|
299
|
-
// `renderArgList` always appends `init` last — retype it as optional generic `I`
|
|
300
|
-
// (no default: `init?: I = {}` is invalid, and `init: I = {}` fails under strict
|
|
301
|
-
// generic checks). Cast the call's Promise so the conditional return type sticks.
|
|
302
|
-
const initTyped = [
|
|
303
|
-
...params.slice(0, -1),
|
|
304
|
-
factory.createParameterDeclaration(undefined, undefined, 'init', factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode('I')),
|
|
305
|
-
];
|
|
306
|
-
const resultType = flatResultType(op, ctx);
|
|
307
|
-
const headersType = flatHeadersType(op, ctx);
|
|
308
|
-
const returnType = factory.createTypeReferenceNode('Promise', [
|
|
309
|
-
factory.createTypeReferenceNode('EnvelopeResult', [
|
|
310
|
-
resultType,
|
|
311
|
-
headersType,
|
|
312
|
-
factory.createTypeReferenceNode('I'),
|
|
313
|
-
]),
|
|
314
|
-
]);
|
|
315
|
-
const typeParam = factory.createTypeParameterDeclaration(undefined, 'I', factory.createUnionTypeNode([
|
|
316
|
-
factory.createTypeReferenceNode('RequestOptions'),
|
|
317
|
-
factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),
|
|
318
|
-
]), factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword));
|
|
319
|
-
const castCall = factory.createAsExpression(call, returnType);
|
|
320
|
-
return typedArrow([typeParam], initTyped, returnType, castCall);
|
|
321
|
-
}
|
|
322
|
-
function flatResultType(op, ctx) {
|
|
323
|
-
const { responseType } = computeResponse(op.successResponses, ctx.dateType);
|
|
324
|
-
const resultName = `${pascalCase(op.name)}Result`;
|
|
325
|
-
return ctx.schemaNames.has(resultName)
|
|
326
|
-
? responseType
|
|
327
|
-
: factory.createTypeReferenceNode(resultName);
|
|
328
|
-
}
|
|
329
|
-
function flatHeadersType(op, ctx) {
|
|
330
|
-
const headers = op.successResponseHeaders;
|
|
331
|
-
if (!headers || headers.length === 0) {
|
|
332
|
-
return factory.createTypeReferenceNode('Record', [
|
|
333
|
-
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
334
|
-
factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword),
|
|
335
|
-
]);
|
|
336
|
-
}
|
|
337
|
-
const alias = `${pascalCase(op.name)}ResponseHeaders`;
|
|
338
|
-
return ctx.schemaNames.has(alias)
|
|
339
|
-
? responseHeadersTypeLiteral(headers, ctx.schemas)
|
|
340
|
-
: factory.createTypeReferenceNode(alias);
|
|
341
|
-
}
|
|
342
|
-
/** Public type surface re-exported for single-import DX (plus the `ApiError` class). */
|
|
343
|
-
function reexportLines(ctx, hasSse) {
|
|
344
|
-
const types = [
|
|
345
|
-
'ClientConfig',
|
|
346
|
-
'Envelope',
|
|
347
|
-
'Middleware',
|
|
348
|
-
'RequestOptions',
|
|
349
|
-
...(ctx.errorMode === 'result' ? ['Result'] : []),
|
|
350
|
-
...(hasSse ? ['ServerSentEvent', 'SseOptions'] : []),
|
|
351
|
-
].sort();
|
|
352
|
-
return (
|
|
353
|
-
// `createClient` is re-exported so package-mode consumers can build additional
|
|
354
|
-
// instances from the generated module alone — symmetric with inline output.
|
|
355
|
-
`export { ApiError, createClient, defaultRetryOn, TimeoutError } from '${PACKAGE_SPECIFIER}';\n` +
|
|
356
|
-
`export type { ${types.join(', ')} } from '${PACKAGE_SPECIFIER}';`);
|
|
357
|
-
}
|
|
358
|
-
//# sourceMappingURL=client-assembly.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-assembly.js","sourceRoot":"","sources":["../../src/emitters/client-assembly.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type ApiModel } from '../intermediate-representation/model.js';
|
|
2
|
-
import type { EmitContext } from './operations.js';
|
|
3
|
-
import type { ModelPagination } from './pagination.js';
|
|
4
|
-
import { ts } from './ts.js';
|
|
5
|
-
import { type DateType } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Operation-name → emitted-identifier plan. The full reserved set (wiring + imported
|
|
8
|
-
* bindings + auth sugar, computed from the model FIRST) is seeded before any operation
|
|
9
|
-
* is sanitized, so collisions rename the operation (`configure` → `configure_2`)
|
|
10
|
-
* deterministically regardless of document order.
|
|
11
|
-
*/
|
|
12
|
-
export declare function packageIdents(model: ApiModel): Map<string, string>;
|
|
13
|
-
/** `export const OPERATIONS = {…} as const satisfies Record<string, OperationDescriptor>;` + unions. */
|
|
14
|
-
export declare function descriptorStatements(model: ApiModel, idents: Map<string, string>, dateType: DateType, pagination?: ModelPagination): ts.Statement[];
|
|
15
|
-
/**
|
|
16
|
-
* `export type Ops = { <ident>: { args: …; result: …; kind?: "sse" } }` — the type map
|
|
17
|
-
* `createClient<Ops>` consumes. A type alias (not an interface) on purpose: aliases get
|
|
18
|
-
* an implicit index signature, so `Ops` satisfies the runtime's `OpsShape` constraint;
|
|
19
|
-
* an interface would need an explicit `[key: string]` member.
|
|
20
|
-
*/
|
|
21
|
-
export declare function opsInterfaceStatements(model: ApiModel, idents: Map<string, string>, ctx: EmitContext): ts.Statement[];
|
|
22
|
-
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/emitters/descriptor.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,yCAAyC,CAAC;AAOjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD,OAAO,EAA6C,EAAE,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,KAAK,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAI7D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKlE;AAgED,wGAAwG;AACxG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,eAAe,GAC3B,EAAE,CAAC,SAAS,EAAE,CAqDhB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,GAAG,EAAE,WAAW,GACf,EAAE,CAAC,SAAS,EAAE,CAehB"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
// Package-mode descriptor emission: the identifier plan for a generated module that
|
|
2
|
-
// shares scope with the `@redocly/client-generator` wiring, plus the `OPERATIONS`
|
|
3
|
-
// descriptor map (`satisfies Record<string, OperationDescriptor>` — the semver skew
|
|
4
|
-
// guard against the runtime contract in src/runtime/types.ts).
|
|
5
|
-
import { allOperations, } from '../intermediate-representation/model.js';
|
|
6
|
-
import { authSetterNames } from './auth.js';
|
|
7
|
-
import { uniqueIdent } from './identifier.js';
|
|
8
|
-
import { variablesTypeLiteral } from './operation-aliases.js';
|
|
9
|
-
import { operationSignature } from './operation-signature.js';
|
|
10
|
-
import { computeResponse, errorTypeNodes, isTypedMultipart } from './operation-types.js';
|
|
11
|
-
import { WIRING_NAMES } from './reserved-names.js';
|
|
12
|
-
import { responseHeadersTypeLiteral, responseHeaderSpecs } from './response-headers.js';
|
|
13
|
-
import { isSseOp, sseDataKind, sseEventType } from './sse.js';
|
|
14
|
-
import { pascalCase } from './support.js';
|
|
15
|
-
import { jsdoc, literalExpression, parseStatements, ts } from './ts.js';
|
|
16
|
-
import { schemaToTypeNode } from './types.js';
|
|
17
|
-
const { factory } = ts;
|
|
18
|
-
/**
|
|
19
|
-
* Operation-name → emitted-identifier plan. The full reserved set (wiring + imported
|
|
20
|
-
* bindings + auth sugar, computed from the model FIRST) is seeded before any operation
|
|
21
|
-
* is sanitized, so collisions rename the operation (`configure` → `configure_2`)
|
|
22
|
-
* deterministically regardless of document order.
|
|
23
|
-
*/
|
|
24
|
-
export function packageIdents(model) {
|
|
25
|
-
const used = new Set([...WIRING_NAMES, ...authSetterNames(model.securitySchemes)]);
|
|
26
|
-
const idents = new Map();
|
|
27
|
-
for (const op of allOperations(model.services))
|
|
28
|
-
idents.set(op.name, uniqueIdent(op.name, used));
|
|
29
|
-
return idents;
|
|
30
|
-
}
|
|
31
|
-
/** One operation's OperationDescriptor as plain data (only non-default fields present). */
|
|
32
|
-
function descriptorValue(op, schemes, dateType, pagination, schemas = []) {
|
|
33
|
-
const params = [...op.pathParams, ...op.queryParams, ...op.headerParams, ...op.cookieParams].map((p) => ({
|
|
34
|
-
name: p.name,
|
|
35
|
-
in: p.in,
|
|
36
|
-
...(p.style !== undefined ? { style: p.style } : {}),
|
|
37
|
-
...(p.explode !== undefined ? { explode: p.explode } : {}),
|
|
38
|
-
...(p.allowReserved !== undefined ? { allowReserved: p.allowReserved } : {}),
|
|
39
|
-
}));
|
|
40
|
-
const toSpecs = (key) => {
|
|
41
|
-
const s = schemes.find((scheme) => scheme.key === key);
|
|
42
|
-
if (!s)
|
|
43
|
-
return [];
|
|
44
|
-
if (s.kind === 'bearer' || s.kind === 'basic')
|
|
45
|
-
return [{ scheme: key, kind: s.kind }];
|
|
46
|
-
if (s.kind === 'apiKeyHeader') {
|
|
47
|
-
return [{ scheme: key, kind: 'apiKey', name: s.headerName, in: 'header' }];
|
|
48
|
-
}
|
|
49
|
-
if (s.kind === 'apiKeyQuery') {
|
|
50
|
-
return [{ scheme: key, kind: 'apiKey', name: s.paramName, in: 'query' }];
|
|
51
|
-
}
|
|
52
|
-
return [{ scheme: key, kind: 'apiKey', name: s.cookieName, in: 'cookie' }];
|
|
53
|
-
};
|
|
54
|
-
const security = op.security
|
|
55
|
-
.map((alternative) => alternative.flatMap(toSpecs))
|
|
56
|
-
.filter((alternative) => alternative.length > 0);
|
|
57
|
-
const sse = isSseOp(op);
|
|
58
|
-
const responseKind = sse ? 'sse' : computeResponse(op.successResponses, dateType).responseKind;
|
|
59
|
-
const responseHeaders = responseHeaderSpecs(op.successResponseHeaders, schemas);
|
|
60
|
-
return {
|
|
61
|
-
// The spec's operationId, NOT the (possibly renamed) map key: `id` drives middleware
|
|
62
|
-
// targeting (`ctx.operation.id`) and must match inline mode's `operationMetaExpr`.
|
|
63
|
-
// The wire/middleware identity stays the SPEC operationId even when the emitted
|
|
64
|
-
// function name was renamed away from a collision (`configure` → `configure_2`).
|
|
65
|
-
id: op.specName ?? op.name,
|
|
66
|
-
method: op.method.toUpperCase(),
|
|
67
|
-
path: op.path,
|
|
68
|
-
...(op.tags.length > 0 ? { tags: op.tags } : {}),
|
|
69
|
-
...(params.length > 0 ? { params } : {}),
|
|
70
|
-
...(op.requestBody
|
|
71
|
-
? {
|
|
72
|
-
body: {
|
|
73
|
-
contentType: op.requestBody.contentType,
|
|
74
|
-
...(isTypedMultipart(op.requestBody) ? { multipart: true } : {}),
|
|
75
|
-
},
|
|
76
|
-
}
|
|
77
|
-
: {}),
|
|
78
|
-
...(responseKind !== 'json' ? { responseKind } : {}),
|
|
79
|
-
...(sse ? { sseDataKind: sseDataKind(op) } : {}),
|
|
80
|
-
...(security.length > 0 ? { security } : {}),
|
|
81
|
-
// The resolved spec is already normalized with stable key order (see pagination.ts).
|
|
82
|
-
...(pagination?.has(op.name) ? { pagination: pagination.get(op.name).spec } : {}),
|
|
83
|
-
...(responseHeaders === undefined ? {} : { responseHeaders }),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/** `export const OPERATIONS = {…} as const satisfies Record<string, OperationDescriptor>;` + unions. */
|
|
87
|
-
export function descriptorStatements(model, idents, dateType, pagination) {
|
|
88
|
-
const ops = allOperations(model.services);
|
|
89
|
-
if (ops.length === 0)
|
|
90
|
-
return [];
|
|
91
|
-
const entries = ops.map((op) => factory.createPropertyAssignment(idents.get(op.name), literalExpression(descriptorValue(op, model.securitySchemes, dateType, pagination, model.schemas))));
|
|
92
|
-
const operations = jsdoc(factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([
|
|
93
|
-
factory.createVariableDeclaration('OPERATIONS', undefined, undefined, factory.createSatisfiesExpression(factory.createAsExpression(factory.createObjectLiteralExpression(entries, true), factory.createTypeReferenceNode('const')), factory.createTypeReferenceNode('Record', [
|
|
94
|
-
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
95
|
-
factory.createTypeReferenceNode('OperationDescriptor'),
|
|
96
|
-
]))),
|
|
97
|
-
], ts.NodeFlags.Const)), 'The wire-shape descriptor for every operation, keyed by operationId — the data the\n' +
|
|
98
|
-
'runtime routes requests by. Also minification-safe static metadata (method, path,\n' +
|
|
99
|
-
'tags) for cache keys, tracing span names, and request logging.');
|
|
100
|
-
// `tags` is present only on tagged entries, so `OperationTag` is derived via `Extract`
|
|
101
|
-
// (a plain `["tags"]` index would not compile against the untagged entries), and is
|
|
102
|
-
// omitted entirely when no operation has a tag (it would be `never`).
|
|
103
|
-
const hasTags = ops.some((op) => op.tags.length > 0);
|
|
104
|
-
// `OperationId` is the union of descriptor `id` LITERALS — the spec operationIds the
|
|
105
|
-
// runtime exposes as `ctx.operation.id` — not the (possibly rename-sanitized) keys.
|
|
106
|
-
const derived = parseStatements('export type OperationId = (typeof OPERATIONS)[keyof typeof OPERATIONS]["id"];\n' +
|
|
107
|
-
'export type OperationPath = (typeof OPERATIONS)[keyof typeof OPERATIONS]["path"];' +
|
|
108
|
-
(hasTags
|
|
109
|
-
? '\nexport type OperationTag = Extract<(typeof OPERATIONS)[keyof typeof OPERATIONS], { tags: readonly string[] }>["tags"][number];'
|
|
110
|
-
: ''));
|
|
111
|
-
return [operations, ...derived];
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* `export type Ops = { <ident>: { args: …; result: …; kind?: "sse" } }` — the type map
|
|
115
|
-
* `createClient<Ops>` consumes. A type alias (not an interface) on purpose: aliases get
|
|
116
|
-
* an implicit index signature, so `Ops` satisfies the runtime's `OpsShape` constraint;
|
|
117
|
-
* an interface would need an explicit `[key: string]` member.
|
|
118
|
-
*/
|
|
119
|
-
export function opsInterfaceStatements(model, idents, ctx) {
|
|
120
|
-
const ops = allOperations(model.services);
|
|
121
|
-
if (ops.length === 0)
|
|
122
|
-
return [];
|
|
123
|
-
return [
|
|
124
|
-
jsdoc(factory.createTypeAliasDeclaration([factory.createModifier(ts.SyntaxKind.ExportKeyword)], 'Ops', undefined, factory.createTypeLiteralNode(ops.map((op) => opsMember(op, idents.get(op.name), ctx)))), "Per-operation `args`/`result` shapes (plus `kind: 'sse'` for event streams) — the\n" +
|
|
125
|
-
'type-level companion of `OPERATIONS` that gives `createClient<Ops>` its typed methods.'),
|
|
126
|
-
];
|
|
127
|
-
}
|
|
128
|
-
/** One `<ident>: { args; result; kind? }` member of the `Ops` type. */
|
|
129
|
-
function opsMember(op, ident, ctx) {
|
|
130
|
-
const { pathParams } = operationSignature(op);
|
|
131
|
-
// Path params are keyed by WIRE name — the runtime routes `args[param.name]`.
|
|
132
|
-
const args = variablesTypeLiteral(op, pascalCase(op.name), pathParams.map((p) => p.param), new Map(pathParams.map((p) => [p.param.name, p.ident])), ctx, 'wire');
|
|
133
|
-
const members = [
|
|
134
|
-
factory.createPropertySignature(undefined, 'args', undefined, args),
|
|
135
|
-
factory.createPropertySignature(undefined, 'result', undefined, resultType(op, ctx)),
|
|
136
|
-
];
|
|
137
|
-
if (ctx.errorMode === 'result' && !isSseOp(op)) {
|
|
138
|
-
members.push(factory.createPropertySignature(undefined, 'mode', undefined, factory.createLiteralTypeNode(factory.createStringLiteral('result'))));
|
|
139
|
-
}
|
|
140
|
-
// Declared success-response headers type the throw-mode `{ envelope: true }` bag.
|
|
141
|
-
const responseHeaders = op.successResponseHeaders;
|
|
142
|
-
if (responseHeaders && responseHeaders.length > 0) {
|
|
143
|
-
members.push(factory.createPropertySignature(undefined, 'headers', undefined, responseHeadersTypeLiteral(responseHeaders, ctx.schemas)));
|
|
144
|
-
}
|
|
145
|
-
// Paginated operations declare the page's element type — it drives the runtime's
|
|
146
|
-
// `.pages()`/`.items()` members on the method (`Client<Ops>` keys off `item`).
|
|
147
|
-
const paginated = ctx.pagination?.get(op.name);
|
|
148
|
-
if (paginated) {
|
|
149
|
-
members.push(factory.createPropertySignature(undefined, 'item', undefined, schemaToTypeNode(paginated.itemSchema, ctx.dateType)));
|
|
150
|
-
// Result mode wraps `result` in the envelope, but iteration unwraps it — `page`
|
|
151
|
-
// carries the RAW page type `.pages()` yields. Throw mode emits no `page` member
|
|
152
|
-
// (`Client<Ops>`'s pages-generator falls back to `result`, already the raw page).
|
|
153
|
-
if (ctx.errorMode === 'result') {
|
|
154
|
-
members.push(factory.createPropertySignature(undefined, 'page', undefined, rawResultRef(op, ctx)));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (isSseOp(op)) {
|
|
158
|
-
members.push(factory.createPropertySignature(undefined, 'kind', undefined, factory.createLiteralTypeNode(factory.createStringLiteral('sse'))));
|
|
159
|
-
}
|
|
160
|
-
return factory.createPropertySignature(undefined, ident, undefined, factory.createTypeLiteralNode(members));
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* The raw success-response reference — the same suppression rule as
|
|
164
|
-
* renderOperationParts: the emitted `<Op>Result` alias, or the inline response type
|
|
165
|
-
* when that name collides with a schema.
|
|
166
|
-
*/
|
|
167
|
-
function rawResultRef(op, ctx) {
|
|
168
|
-
const { responseType } = computeResponse(op.successResponses, ctx.dateType);
|
|
169
|
-
const resultName = `${pascalCase(op.name)}Result`;
|
|
170
|
-
return ctx.schemaNames.has(resultName)
|
|
171
|
-
? responseType
|
|
172
|
-
: factory.createTypeReferenceNode(resultName);
|
|
173
|
-
}
|
|
174
|
-
/** The `result` slot: SSE event payload, or the response type — `Result`-wrapped in result mode. */
|
|
175
|
-
function resultType(op, ctx) {
|
|
176
|
-
if (isSseOp(op))
|
|
177
|
-
return sseEventType(op, ctx.dateType);
|
|
178
|
-
const resultRef = rawResultRef(op, ctx);
|
|
179
|
-
if (ctx.errorMode !== 'result')
|
|
180
|
-
return resultRef;
|
|
181
|
-
return factory.createTypeReferenceNode('Result', [resultRef, errorTypeArg(op, ctx)]);
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* The `Result<…, E>` error argument — the same composition `renderOperationParts` uses for
|
|
185
|
-
* `__requestResult<R, E>`: `unknown` when the operation declares no error responses, the
|
|
186
|
-
* emitted `<Op>Error` alias otherwise, or the inline (union of) error type(s) when that
|
|
187
|
-
* alias name collides with a schema and is suppressed.
|
|
188
|
-
*/
|
|
189
|
-
function errorTypeArg(op, ctx) {
|
|
190
|
-
const errorMembers = errorTypeNodes(op.errorResponses, ctx.dateType);
|
|
191
|
-
if (errorMembers.length === 0) {
|
|
192
|
-
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
193
|
-
}
|
|
194
|
-
const errorAlias = `${pascalCase(op.name)}Error`;
|
|
195
|
-
if (!ctx.schemaNames.has(errorAlias))
|
|
196
|
-
return factory.createTypeReferenceNode(errorAlias);
|
|
197
|
-
return errorMembers.length === 1 ? errorMembers[0] : factory.createUnionTypeNode(errorMembers);
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=descriptor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/emitters/descriptor.ts"],"names":[],"mappings":"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"}
|