@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
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Language-neutral pagination-rule resolution: which rule applies to an operation
|
|
2
|
+
// (per-op config > the `x-redoclyPagination` extension > a fitting convention) and
|
|
3
|
+
// its normalized shape. Declaration-based — the TS toolkit's static fit VERIFICATION
|
|
4
|
+
// (schema-level advance-param/pointer checks) remains generation-side; this helper is
|
|
5
|
+
// what every language generator shares.
|
|
6
|
+
/**
|
|
7
|
+
* Pagination for one operation. The convention rule applies only where it structurally
|
|
8
|
+
* fits — the advance parameter exists on the operation, or for `link` (which has no
|
|
9
|
+
* parameter) the success response documents a `Link` header; `exclude` kills every source.
|
|
10
|
+
* Returns undefined when the operation does not paginate.
|
|
11
|
+
*/
|
|
12
|
+
export function paginationRuleFor(op, config) {
|
|
13
|
+
const configuration = config ?? {};
|
|
14
|
+
const id = op.specName ?? op.name;
|
|
15
|
+
if (Array.isArray(configuration.exclude) && configuration.exclude.includes(id)) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const operations = (configuration.operations ?? {});
|
|
19
|
+
let rule = operations[id] ?? op.paginationExtension;
|
|
20
|
+
if (rule === undefined && typeof configuration.style === 'string') {
|
|
21
|
+
const { exclude: _exclude, operations: _operations, ...convention } = configuration;
|
|
22
|
+
const advance = convention.style === 'cursor' ? convention.cursorParam : convention.offsetParam;
|
|
23
|
+
// A convention needs a structural fit signal: the advance parameter for cursor/offset/
|
|
24
|
+
// page, and a documented `Link` response header for `link` (which has no parameter) —
|
|
25
|
+
// the same gate the TypeScript emitter applies. Without it, a link convention would
|
|
26
|
+
// attach page iterators to every operation in the description.
|
|
27
|
+
const fits = convention.style === 'link'
|
|
28
|
+
? op.successResponseHeaders?.some((header) => header.name === 'link') === true
|
|
29
|
+
: typeof advance === 'string' && op.queryParams.some((param) => param.name === advance);
|
|
30
|
+
if (fits)
|
|
31
|
+
rule = convention;
|
|
32
|
+
}
|
|
33
|
+
if (rule === undefined || typeof rule.style !== 'string')
|
|
34
|
+
return undefined;
|
|
35
|
+
const param = rule.style === 'cursor' ? rule.cursorParam : rule.offsetParam;
|
|
36
|
+
return {
|
|
37
|
+
style: rule.style,
|
|
38
|
+
...(typeof param === 'string' ? { param } : {}),
|
|
39
|
+
...(typeof rule.nextCursor === 'string' ? { nextCursor: rule.nextCursor } : {}),
|
|
40
|
+
...(typeof rule.hasMore === 'string' ? { hasMore: rule.hasMore } : {}),
|
|
41
|
+
...(typeof rule.limitParam === 'string' ? { limitParam: rule.limitParam } : {}),
|
|
42
|
+
...(typeof rule.items === 'string' ? { items: rule.items } : {}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/authoring/pagination.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,mFAAmF;AACnF,qFAAqF;AACrF,sFAAsF;AACtF,wCAAwC;AAexC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAkB,EAClB,MAA2C;IAE3C,MAAM,aAAa,GAAG,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAA4C,CAAC;IAC/F,IAAI,IAAI,GACN,UAAU,CAAC,EAAE,CAAC,IAAK,EAAE,CAAC,mBAA2D,CAAC;IACpF,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC;QACpF,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;QAChG,uFAAuF;QACvF,sFAAsF;QACtF,oFAAoF;QACpF,+DAA+D;QAC/D,MAAM,IAAI,GACR,UAAU,CAAC,KAAK,KAAK,MAAM;YACzB,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,IAAI;YAC9E,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC5F,IAAI,IAAI;YAAE,IAAI,GAAG,UAAqC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5E,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class Printer {
|
|
2
|
+
private readonly indentUnit;
|
|
3
|
+
private readonly lines;
|
|
4
|
+
private depth;
|
|
5
|
+
constructor(indentUnit?: string);
|
|
6
|
+
/** Append one line at the current depth; no argument appends an empty line. */
|
|
7
|
+
line(text?: string): this;
|
|
8
|
+
blank(): this;
|
|
9
|
+
/** Run `body` with the depth increased by one. */
|
|
10
|
+
indent(body: () => void): this;
|
|
11
|
+
/** `open` at the current depth, `body` indented, `close` back at the current depth.
|
|
12
|
+
* Omit `close` for languages whose blocks end by dedent alone (Python, YAML). */
|
|
13
|
+
block(open: string, body: () => void, close?: string): this;
|
|
14
|
+
toString(): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=printer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.d.ts","sourceRoot":"","sources":["../../src/authoring/printer.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAIN,OAAO,CAAC,QAAQ,CAAC,UAAU;IAHvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,KAAK,CAAK;gBAEW,UAAU,GAAE,MAAa;IAEtD,+EAA+E;IAC/E,IAAI,CAAC,IAAI,SAAK,GAAG,IAAI;IAKrB,KAAK,IAAI,IAAI;IAIb,kDAAkD;IAClD,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAO9B;qFACiF;IACjF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3D,QAAQ,IAAI,MAAM;CAGnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// A small indentation-aware text builder for emitting code in ANY language —
|
|
2
|
+
// deliberately not an AST. Part of the language-neutral authoring toolkit.
|
|
3
|
+
export class Printer {
|
|
4
|
+
indentUnit;
|
|
5
|
+
lines = [];
|
|
6
|
+
depth = 0;
|
|
7
|
+
constructor(indentUnit = ' ') {
|
|
8
|
+
this.indentUnit = indentUnit;
|
|
9
|
+
}
|
|
10
|
+
/** Append one line at the current depth; no argument appends an empty line. */
|
|
11
|
+
line(text = '') {
|
|
12
|
+
this.lines.push(text === '' ? '' : this.indentUnit.repeat(this.depth) + text);
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
blank() {
|
|
16
|
+
return this.line();
|
|
17
|
+
}
|
|
18
|
+
/** Run `body` with the depth increased by one. */
|
|
19
|
+
indent(body) {
|
|
20
|
+
this.depth++;
|
|
21
|
+
body();
|
|
22
|
+
this.depth--;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
/** `open` at the current depth, `body` indented, `close` back at the current depth.
|
|
26
|
+
* Omit `close` for languages whose blocks end by dedent alone (Python, YAML). */
|
|
27
|
+
block(open, body, close) {
|
|
28
|
+
this.line(open);
|
|
29
|
+
this.indent(body);
|
|
30
|
+
return close === undefined ? this : this.line(close);
|
|
31
|
+
}
|
|
32
|
+
toString() {
|
|
33
|
+
return this.lines.join('\n') + '\n';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.js","sourceRoot":"","sources":["../../src/authoring/printer.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAE3E,MAAM,OAAO,OAAO;IAIW;IAHZ,KAAK,GAAa,EAAE,CAAC;IAC9B,KAAK,GAAG,CAAC,CAAC;IAElB,YAA6B,aAAqB,IAAI;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAE1D,+EAA+E;IAC/E,IAAI,CAAC,IAAI,GAAG,EAAE;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,kDAAkD;IAClD,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;qFACiF;IACjF,KAAK,CAAC,IAAY,EAAE,IAAgB,EAAE,KAAc;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ApiModel, OperationModel } from '../intermediate-representation/model.js';
|
|
2
|
+
/** What a generator knows about its language that the IR cannot tell the renderer. */
|
|
3
|
+
export type ReferenceLanguage = {
|
|
4
|
+
/** Generator name; also the infix of the page file (`<stem>.python.md`). */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Display name for the default heading. */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Fence language for the call samples. */
|
|
9
|
+
fence: string;
|
|
10
|
+
/** What the SDK needs at run time, as one sentence. */
|
|
11
|
+
requires: string;
|
|
12
|
+
};
|
|
13
|
+
export type ReferencePageOptions = {
|
|
14
|
+
/** Page heading. */
|
|
15
|
+
title: string;
|
|
16
|
+
/** Emit YAML front matter carrying the title, for docs sites that expect it. */
|
|
17
|
+
frontmatter: boolean;
|
|
18
|
+
language: ReferenceLanguage;
|
|
19
|
+
/** The call snippet for one operation — the generator's own `sample` hook. */
|
|
20
|
+
sample: (operation: OperationModel) => {
|
|
21
|
+
lang: string;
|
|
22
|
+
source: string;
|
|
23
|
+
} | undefined;
|
|
24
|
+
/** The `pagination` config, passed through to `paginationRuleFor`. */
|
|
25
|
+
pagination?: Record<string, unknown>;
|
|
26
|
+
/** Operation names the RUN resolved as paginated — preferred over re-resolving. */
|
|
27
|
+
paginated?: ReadonlySet<string>;
|
|
28
|
+
};
|
|
29
|
+
/** The whole page: heading, requirements, security schemes, then every operation by tag. */
|
|
30
|
+
export declare function renderReferencePage(model: ApiModel, options: ReferencePageOptions): string;
|
|
31
|
+
//# sourceMappingURL=reference-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-page.d.ts","sourceRoot":"","sources":["../../src/authoring/reference-page.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAGf,MAAM,yCAAyC,CAAC;AAIjD,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,8EAA8E;IAC9E,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACpF,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,mFAAmF;IACnF,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AAoHF,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA4D1F"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// The reference-page renderer: the Markdown reference for ONE generated SDK, built from
|
|
2
|
+
// the IR that SDK is built from, plus that generator's own `sample` hook for the call
|
|
3
|
+
// snippets. It writes no call syntax of its own — a second spelling of the SDK would
|
|
4
|
+
// drift from it the first time either side changed. Part of the authoring toolkit, so a
|
|
5
|
+
// generator ejected as source (python, go, php) reaches it the same way we do.
|
|
6
|
+
import { paginationRuleFor } from './pagination.js';
|
|
7
|
+
import { Printer } from './printer.js';
|
|
8
|
+
/** Table-cell-safe text: one line, with pipes and backslashes escaped. */
|
|
9
|
+
function cell(text) {
|
|
10
|
+
return (text ?? '').replace(/\s+/g, ' ').trim().replace(/\\/g, '\\\\').replace(/\|/g, '\\|');
|
|
11
|
+
}
|
|
12
|
+
/** A wire-level type name for a schema — the vocabulary of the description, not of a language. */
|
|
13
|
+
function typeLabel(schema) {
|
|
14
|
+
switch (schema.kind) {
|
|
15
|
+
case 'ref':
|
|
16
|
+
return schema.name;
|
|
17
|
+
case 'omit':
|
|
18
|
+
return schema.base;
|
|
19
|
+
case 'scalar':
|
|
20
|
+
return schema.scalar;
|
|
21
|
+
case 'array':
|
|
22
|
+
return `array of ${typeLabel(schema.items)}`;
|
|
23
|
+
case 'record':
|
|
24
|
+
return `map of ${typeLabel(schema.value)}`;
|
|
25
|
+
case 'enum': {
|
|
26
|
+
const values = schema.values.map(String);
|
|
27
|
+
const shown = values.slice(0, 6).join(', ');
|
|
28
|
+
return values.length > 6 ? `enum: ${shown}, and ${values.length - 6} more` : `enum: ${shown}`;
|
|
29
|
+
}
|
|
30
|
+
case 'literal':
|
|
31
|
+
return String(schema.value);
|
|
32
|
+
case 'union':
|
|
33
|
+
return schema.members.map(typeLabel).join(' or ');
|
|
34
|
+
case 'intersection':
|
|
35
|
+
return schema.members.map(typeLabel).join(' and ');
|
|
36
|
+
case 'object':
|
|
37
|
+
return 'object';
|
|
38
|
+
case 'null':
|
|
39
|
+
return 'null';
|
|
40
|
+
case 'unknown':
|
|
41
|
+
return 'any';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Binary success content with no JSON alternative — the same test the clients apply. */
|
|
45
|
+
function isBinary(op) {
|
|
46
|
+
if (op.successResponses.some((response) => response.contentType.toLowerCase().includes('json'))) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return op.successResponses.some((response) => response.contentType.startsWith('image/') ||
|
|
50
|
+
response.contentType === 'application/octet-stream');
|
|
51
|
+
}
|
|
52
|
+
function writeParameterTable(printer, params) {
|
|
53
|
+
printer.line('| Parameter | In | Type | Required | Description |');
|
|
54
|
+
printer.line('| --------- | -- | ---- | -------- | ----------- |');
|
|
55
|
+
for (const param of params) {
|
|
56
|
+
printer.line(`| \`${param.name}\` | ${param.in} | ${cell(typeLabel(param.schema))} | ${param.required ? 'yes' : 'no'} | ${cell(param.description)} |`);
|
|
57
|
+
}
|
|
58
|
+
printer.blank();
|
|
59
|
+
}
|
|
60
|
+
function writeOperation(printer, op, options) {
|
|
61
|
+
printer.line(`### \`${op.specName ?? op.name}\``);
|
|
62
|
+
printer.blank();
|
|
63
|
+
if (op.summary !== undefined) {
|
|
64
|
+
printer.line(cell(op.summary));
|
|
65
|
+
printer.blank();
|
|
66
|
+
}
|
|
67
|
+
printer.line(`\`${op.method.toUpperCase()} ${op.path}\``);
|
|
68
|
+
printer.blank();
|
|
69
|
+
const sample = options.sample(op);
|
|
70
|
+
if (sample !== undefined) {
|
|
71
|
+
printer.line('```' + options.language.fence);
|
|
72
|
+
for (const line of sample.source.replace(/\n+$/, '').split('\n'))
|
|
73
|
+
printer.line(line);
|
|
74
|
+
printer.line('```');
|
|
75
|
+
printer.blank();
|
|
76
|
+
}
|
|
77
|
+
const params = [...op.pathParams, ...op.queryParams, ...op.headerParams];
|
|
78
|
+
if (params.length > 0)
|
|
79
|
+
writeParameterTable(printer, params);
|
|
80
|
+
if (op.requestBody !== undefined) {
|
|
81
|
+
printer.line(`Body: \`${op.requestBody.contentType}\`${op.requestBody.required ? ', required' : ', optional'}, of type ${typeLabel(op.requestBody.schema)}.`);
|
|
82
|
+
}
|
|
83
|
+
const success = op.successResponses[0];
|
|
84
|
+
printer.line(success === undefined
|
|
85
|
+
? 'Returns no content.'
|
|
86
|
+
: `Returns \`${success.contentType}\`, of type ${typeLabel(success.schema)}.`);
|
|
87
|
+
// The same three declaration-level facts every SDK reads: `paginationRuleFor` is the
|
|
88
|
+
// helper the language generators resolve pagination with, and the success content type
|
|
89
|
+
// is what decides a streaming or a binary response.
|
|
90
|
+
const paginates = options.paginated !== undefined
|
|
91
|
+
? options.paginated.has(op.name)
|
|
92
|
+
: paginationRuleFor(op, options.pagination) !== undefined;
|
|
93
|
+
if (paginates) {
|
|
94
|
+
printer.line('This operation is paginated, so the SDK gives it page and item iterators.');
|
|
95
|
+
}
|
|
96
|
+
if (op.successResponses.some((response) => response.contentType === 'text/event-stream')) {
|
|
97
|
+
printer.line('This operation streams server-sent events, so the SDK iterates the events.');
|
|
98
|
+
}
|
|
99
|
+
if (isBinary(op)) {
|
|
100
|
+
printer.line('This operation returns binary content.');
|
|
101
|
+
}
|
|
102
|
+
printer.blank();
|
|
103
|
+
}
|
|
104
|
+
/** The whole page: heading, requirements, security schemes, then every operation by tag. */
|
|
105
|
+
export function renderReferencePage(model, options) {
|
|
106
|
+
const printer = new Printer();
|
|
107
|
+
if (options.frontmatter) {
|
|
108
|
+
printer.line('---');
|
|
109
|
+
printer.line(`title: ${options.title}`);
|
|
110
|
+
printer.line('---');
|
|
111
|
+
printer.blank();
|
|
112
|
+
}
|
|
113
|
+
printer.line(`# ${options.title}`);
|
|
114
|
+
printer.blank();
|
|
115
|
+
printer.line(`Generated reference for the ${options.language.label} SDK, produced from the API description by \`redocly generate-client\`.`);
|
|
116
|
+
printer.line('Re-run generation to update it — this file is not hand-edited.');
|
|
117
|
+
printer.blank();
|
|
118
|
+
printer.line(options.language.requires);
|
|
119
|
+
printer.blank();
|
|
120
|
+
printer.line('## Authentication');
|
|
121
|
+
printer.blank();
|
|
122
|
+
if (model.securitySchemes.length === 0) {
|
|
123
|
+
printer.line('The description declares no security schemes.');
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
printer.line('The description declares these schemes, which you pass to the client:');
|
|
127
|
+
printer.blank();
|
|
128
|
+
printer.line('| Scheme | Kind | Sent as |');
|
|
129
|
+
printer.line('| ------ | ---- | ------- |');
|
|
130
|
+
for (const scheme of model.securitySchemes) {
|
|
131
|
+
const sentAs = scheme.kind === 'bearer'
|
|
132
|
+
? '`Authorization: Bearer <token>`'
|
|
133
|
+
: scheme.kind === 'basic'
|
|
134
|
+
? '`Authorization: Basic <base64>`'
|
|
135
|
+
: scheme.kind === 'apiKeyHeader'
|
|
136
|
+
? `the \`${scheme.headerName}\` header`
|
|
137
|
+
: scheme.kind === 'apiKeyQuery'
|
|
138
|
+
? `the \`${scheme.paramName}\` query parameter`
|
|
139
|
+
: `the \`${scheme.cookieName}\` cookie`;
|
|
140
|
+
printer.line(`| \`${scheme.key}\` | ${scheme.kind} | ${sentAs} |`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
printer.blank();
|
|
144
|
+
// One section per tag, in the order the description declares them, then the untagged
|
|
145
|
+
// operations — the same grouping the CLI and the split output modes use.
|
|
146
|
+
const operations = model.services.flatMap((service) => service.operations);
|
|
147
|
+
const groups = [...new Set(operations.map((op) => op.tags[0]))];
|
|
148
|
+
for (const group of groups) {
|
|
149
|
+
printer.line(group === undefined ? '## Operations' : `## ${group}`);
|
|
150
|
+
printer.blank();
|
|
151
|
+
for (const op of operations.filter((candidate) => candidate.tags[0] === group)) {
|
|
152
|
+
writeOperation(printer, op, options);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return (printer
|
|
156
|
+
.toString()
|
|
157
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
158
|
+
.trimEnd() + '\n');
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=reference-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-page.js","sourceRoot":"","sources":["../../src/authoring/reference-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ApiModel, NamedSchemaModel, PropertyModel, SchemaModel } from '../intermediate-representation/model.js';
|
|
2
|
+
/** Follow a `ref` chain through the model's named schemas; undefined on a miss or cycle. */
|
|
3
|
+
export declare function deref(schema: SchemaModel, model: ApiModel): SchemaModel | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* The flattened view of an object or `allOf` composition — what every language
|
|
6
|
+
* without intersection types renders. Later members win on property-name
|
|
7
|
+
* conflicts (allOf refinement); returns undefined when a member is not an
|
|
8
|
+
* object (nothing coherent to flatten).
|
|
9
|
+
*/
|
|
10
|
+
export declare function flattenAllOf(schema: SchemaModel, model: ApiModel): {
|
|
11
|
+
properties: PropertyModel[];
|
|
12
|
+
description?: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
/** The neutral discriminator dispatch table; each language renders its own idiom from it. */
|
|
15
|
+
export declare function discriminatorCases(schema: SchemaModel, model: ApiModel): {
|
|
16
|
+
property: string;
|
|
17
|
+
cases: Array<{
|
|
18
|
+
value: string;
|
|
19
|
+
schemaName: string;
|
|
20
|
+
schema: SchemaModel;
|
|
21
|
+
}>;
|
|
22
|
+
} | undefined;
|
|
23
|
+
export declare function isNullable(schema: SchemaModel): boolean;
|
|
24
|
+
/** The schema without its `null` union members (a single survivor is unwrapped). */
|
|
25
|
+
export declare function unwrapNullable(schema: SchemaModel): SchemaModel;
|
|
26
|
+
/** Enum values plus language-safe SCREAMING_SNAKE member-name suggestions. */
|
|
27
|
+
export declare function enumValues(schema: SchemaModel): {
|
|
28
|
+
values: Array<string | number | boolean>;
|
|
29
|
+
scalar: string;
|
|
30
|
+
memberNames: string[];
|
|
31
|
+
} | undefined;
|
|
32
|
+
/** Description text as trimmed lines ready for any comment syntax; blank edges dropped. */
|
|
33
|
+
export declare function docText(description?: string): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Resolve an RFC 6901 JSON pointer (`~1` → `/`, `~0` → `~`) over a schema, walking the
|
|
36
|
+
* VALUE shape it describes: object property steps by name, record values for any token,
|
|
37
|
+
* array items for numeric tokens, with `ref` steps resolved through the model's named
|
|
38
|
+
* schemas (cycle-guarded) and intersections (`allOf`) resolved across their members.
|
|
39
|
+
* Unions bail (genuinely ambiguous). Returns `undefined` on any miss.
|
|
40
|
+
*/
|
|
41
|
+
export declare function schemaAtPointer(schema: SchemaModel, pointer: string, model: ApiModel): SchemaModel | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The wire-coerce hint for a response HEADER schema: `'integer'` / `'number'` /
|
|
44
|
+
* `'boolean'` for scalar-ish leaves, `'string'` for everything else (headers are
|
|
45
|
+
* strings on the wire; complex schemas have no sensible coercion). Resolves `ref`s
|
|
46
|
+
* through the model, peels nullable unions and constraint-only `allOf` members.
|
|
47
|
+
*/
|
|
48
|
+
export declare function headerCoerceType(schema: SchemaModel, model: {
|
|
49
|
+
schemas: readonly NamedSchemaModel[];
|
|
50
|
+
}, seen?: Set<string>): 'string' | 'number' | 'integer' | 'boolean';
|
|
51
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/authoring/schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,WAAW,EACZ,MAAM,yCAAyC,CAAC;AAGjD,4FAA4F;AAC5F,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAYnF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,QAAQ,GACd;IAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAcnE;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,QAAQ,GAEb;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9F,SAAS,CAUZ;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAI/D;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,GAClB;IAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAcjG;AAED,2FAA2F;AAC3F,wBAAgB,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAMtD;AAuBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GACd,WAAW,GAAG,SAAS,CAYzB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE;IAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,EAC/C,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAoC7C"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// Language-neutral schema helpers: the cross-language variance points (allOf,
|
|
2
|
+
// discriminators, nullability, enums) exposed as pure functions over the IR, so
|
|
3
|
+
// a generator in ANY output language never re-implements schema semantics.
|
|
4
|
+
import { casing, uniqueIdentifiers } from './naming.js';
|
|
5
|
+
/** Follow a `ref` chain through the model's named schemas; undefined on a miss or cycle. */
|
|
6
|
+
export function deref(schema, model) {
|
|
7
|
+
const seen = new Set();
|
|
8
|
+
let current = schema;
|
|
9
|
+
while (current.kind === 'ref') {
|
|
10
|
+
const { name } = current;
|
|
11
|
+
if (seen.has(name))
|
|
12
|
+
return undefined;
|
|
13
|
+
seen.add(name);
|
|
14
|
+
const named = model.schemas.find((s) => s.name === name);
|
|
15
|
+
if (named === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
current = named.schema;
|
|
18
|
+
}
|
|
19
|
+
return current;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The flattened view of an object or `allOf` composition — what every language
|
|
23
|
+
* without intersection types renders. Later members win on property-name
|
|
24
|
+
* conflicts (allOf refinement); returns undefined when a member is not an
|
|
25
|
+
* object (nothing coherent to flatten).
|
|
26
|
+
*/
|
|
27
|
+
export function flattenAllOf(schema, model) {
|
|
28
|
+
const resolved = deref(schema, model);
|
|
29
|
+
if (resolved === undefined)
|
|
30
|
+
return undefined;
|
|
31
|
+
if (resolved.kind === 'object') {
|
|
32
|
+
return { properties: resolved.properties, description: resolved.description };
|
|
33
|
+
}
|
|
34
|
+
if (resolved.kind !== 'intersection')
|
|
35
|
+
return undefined;
|
|
36
|
+
const merged = new Map();
|
|
37
|
+
for (const member of resolved.members) {
|
|
38
|
+
const flat = flattenAllOf(member, model);
|
|
39
|
+
if (flat === undefined)
|
|
40
|
+
return undefined;
|
|
41
|
+
for (const property of flat.properties)
|
|
42
|
+
merged.set(property.name, property);
|
|
43
|
+
}
|
|
44
|
+
return { properties: [...merged.values()], description: resolved.description };
|
|
45
|
+
}
|
|
46
|
+
/** The neutral discriminator dispatch table; each language renders its own idiom from it. */
|
|
47
|
+
export function discriminatorCases(schema, model) {
|
|
48
|
+
const resolved = deref(schema, model);
|
|
49
|
+
if (resolved?.kind !== 'union' || resolved.discriminator === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
const cases = [];
|
|
52
|
+
for (const { value, schemaName } of resolved.discriminator.mapping) {
|
|
53
|
+
const target = deref({ kind: 'ref', name: schemaName }, model);
|
|
54
|
+
if (target === undefined)
|
|
55
|
+
return undefined;
|
|
56
|
+
cases.push({ value, schemaName, schema: target });
|
|
57
|
+
}
|
|
58
|
+
return { property: resolved.discriminator.propertyName, cases };
|
|
59
|
+
}
|
|
60
|
+
export function isNullable(schema) {
|
|
61
|
+
return schema.kind === 'union' && schema.members.some((member) => member.kind === 'null');
|
|
62
|
+
}
|
|
63
|
+
/** The schema without its `null` union members (a single survivor is unwrapped). */
|
|
64
|
+
export function unwrapNullable(schema) {
|
|
65
|
+
if (schema.kind !== 'union' || !isNullable(schema))
|
|
66
|
+
return schema;
|
|
67
|
+
const rest = schema.members.filter((member) => member.kind !== 'null');
|
|
68
|
+
return rest.length === 1 ? rest[0] : { ...schema, members: rest };
|
|
69
|
+
}
|
|
70
|
+
/** Enum values plus language-safe SCREAMING_SNAKE member-name suggestions. */
|
|
71
|
+
export function enumValues(schema) {
|
|
72
|
+
if (schema.kind !== 'enum')
|
|
73
|
+
return undefined;
|
|
74
|
+
// `casing` owns the value-to-word rules (`-1` → `MINUS_1`), and `uniqueIdentifiers` owns
|
|
75
|
+
// the rest of "language-safe": two values may fold to one name (`a-b` and `a b`), and an
|
|
76
|
+
// empty string folds to nothing at all — both must still yield distinct usable members.
|
|
77
|
+
const memberNames = uniqueIdentifiers(schema.values.map((value) => typeof value === 'string'
|
|
78
|
+
? casing.screaming(value)
|
|
79
|
+
: `VALUE_${casing.screaming(String(value))}`), { style: 'screaming' });
|
|
80
|
+
return { values: schema.values, scalar: schema.scalar, memberNames };
|
|
81
|
+
}
|
|
82
|
+
/** Description text as trimmed lines ready for any comment syntax; blank edges dropped. */
|
|
83
|
+
export function docText(description) {
|
|
84
|
+
if (!description)
|
|
85
|
+
return [];
|
|
86
|
+
const lines = description.split(/\r\n|\n|\r/).map((line) => line.trim());
|
|
87
|
+
while (lines.length > 0 && lines[0] === '')
|
|
88
|
+
lines.shift();
|
|
89
|
+
while (lines.length > 0 && lines[lines.length - 1] === '')
|
|
90
|
+
lines.pop();
|
|
91
|
+
return lines;
|
|
92
|
+
}
|
|
93
|
+
/** One pointer step over a (dereferenced) schema; an intersection takes the LAST member that resolves, since later `allOf` members refine earlier ones. */
|
|
94
|
+
function stepIntoSchema(schema, key, model) {
|
|
95
|
+
if (schema.kind === 'object')
|
|
96
|
+
return schema.properties.find((p) => p.name === key)?.schema;
|
|
97
|
+
if (schema.kind === 'record')
|
|
98
|
+
return schema.value;
|
|
99
|
+
if (schema.kind === 'array' && /^(0|[1-9]\d*)$/.test(key))
|
|
100
|
+
return schema.items;
|
|
101
|
+
if (schema.kind === 'intersection') {
|
|
102
|
+
let match;
|
|
103
|
+
for (const member of schema.members) {
|
|
104
|
+
const target = deref(member, model);
|
|
105
|
+
if (target === undefined)
|
|
106
|
+
continue;
|
|
107
|
+
match = stepIntoSchema(target, key, model) ?? match;
|
|
108
|
+
}
|
|
109
|
+
return match;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Resolve an RFC 6901 JSON pointer (`~1` → `/`, `~0` → `~`) over a schema, walking the
|
|
115
|
+
* VALUE shape it describes: object property steps by name, record values for any token,
|
|
116
|
+
* array items for numeric tokens, with `ref` steps resolved through the model's named
|
|
117
|
+
* schemas (cycle-guarded) and intersections (`allOf`) resolved across their members.
|
|
118
|
+
* Unions bail (genuinely ambiguous). Returns `undefined` on any miss.
|
|
119
|
+
*/
|
|
120
|
+
export function schemaAtPointer(schema, pointer, model) {
|
|
121
|
+
let current = deref(schema, model);
|
|
122
|
+
if (current === undefined || (pointer !== '' && !pointer.startsWith('/')))
|
|
123
|
+
return undefined;
|
|
124
|
+
if (pointer === '')
|
|
125
|
+
return current;
|
|
126
|
+
for (const token of pointer.slice(1).split('/')) {
|
|
127
|
+
const key = token.replaceAll('~1', '/').replaceAll('~0', '~');
|
|
128
|
+
const next = stepIntoSchema(current, key, model);
|
|
129
|
+
if (next === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
current = deref(next, model);
|
|
132
|
+
if (current === undefined)
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
return current;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The wire-coerce hint for a response HEADER schema: `'integer'` / `'number'` /
|
|
139
|
+
* `'boolean'` for scalar-ish leaves, `'string'` for everything else (headers are
|
|
140
|
+
* strings on the wire; complex schemas have no sensible coercion). Resolves `ref`s
|
|
141
|
+
* through the model, peels nullable unions and constraint-only `allOf` members.
|
|
142
|
+
*/
|
|
143
|
+
export function headerCoerceType(schema, model, seen = new Set()) {
|
|
144
|
+
if (schema.kind === 'ref') {
|
|
145
|
+
if (seen.has(schema.name))
|
|
146
|
+
return 'string';
|
|
147
|
+
seen.add(schema.name);
|
|
148
|
+
const named = model.schemas.find((entry) => entry.name === schema.name);
|
|
149
|
+
if (named === undefined)
|
|
150
|
+
return 'string';
|
|
151
|
+
return headerCoerceType(named.schema, model, seen);
|
|
152
|
+
}
|
|
153
|
+
if (schema.kind === 'intersection') {
|
|
154
|
+
const members = schema.members.filter((member) => member.kind !== 'unknown');
|
|
155
|
+
if (members.length === 1)
|
|
156
|
+
return headerCoerceType(members[0], model, seen);
|
|
157
|
+
const types = [
|
|
158
|
+
...new Set(members.map((member) => headerCoerceType(member, model, new Set(seen)))),
|
|
159
|
+
];
|
|
160
|
+
if (types.length === 1)
|
|
161
|
+
return types[0];
|
|
162
|
+
// An integer member refined by a number bound (or vice versa) stays numeric.
|
|
163
|
+
if (types.every((type) => type === 'integer' || type === 'number'))
|
|
164
|
+
return 'number';
|
|
165
|
+
return 'string';
|
|
166
|
+
}
|
|
167
|
+
if (schema.kind === 'union') {
|
|
168
|
+
const members = schema.members.filter((member) => member.kind !== 'null');
|
|
169
|
+
if (members.length === 1)
|
|
170
|
+
return headerCoerceType(members[0], model, seen);
|
|
171
|
+
return 'string';
|
|
172
|
+
}
|
|
173
|
+
if (schema.kind === 'scalar' || schema.kind === 'enum') {
|
|
174
|
+
if (schema.scalar === 'integer')
|
|
175
|
+
return 'integer';
|
|
176
|
+
if (schema.scalar === 'number')
|
|
177
|
+
return 'number';
|
|
178
|
+
if (schema.scalar === 'boolean')
|
|
179
|
+
return 'boolean';
|
|
180
|
+
}
|
|
181
|
+
if (schema.kind === 'literal') {
|
|
182
|
+
if (typeof schema.value === 'number') {
|
|
183
|
+
return Number.isInteger(schema.value) ? 'integer' : 'number';
|
|
184
|
+
}
|
|
185
|
+
if (typeof schema.value === 'boolean')
|
|
186
|
+
return 'boolean';
|
|
187
|
+
}
|
|
188
|
+
return 'string';
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/authoring/schema.ts"],"names":[],"mappings":"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"}
|