@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,5 +1,4 @@
|
|
|
1
|
-
import type { EmitOptions } from '
|
|
2
|
-
import type { GeneratorDescriptor } from './types.js';
|
|
1
|
+
import type { EmitOptions, GeneratorDescriptor, OutputMode } from './types.js';
|
|
3
2
|
export type { CustomGenerator, Generator, GeneratorDescriptor, GeneratorInput, GeneratorName, } from './types.js';
|
|
4
3
|
/**
|
|
5
4
|
* A fresh registry of the built-in generators keyed by name. The plugin resolver seeds from this
|
|
@@ -11,5 +10,5 @@ export declare function builtinGenerators(): Map<string, GeneratorDescriptor>;
|
|
|
11
10
|
* contract, throwing the first violation with an actionable message. Runs before
|
|
12
11
|
* any file is produced so an incompatible combination never reaches the printer.
|
|
13
12
|
*/
|
|
14
|
-
export declare function validateGenerators(names: string[], emit: EmitOptions, registry?: Map<string, GeneratorDescriptor
|
|
13
|
+
export declare function validateGenerators(names: string[], emit: EmitOptions, registry?: Map<string, GeneratorDescriptor>, outputMode?: OutputMode): void;
|
|
15
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAiB,UAAU,EAAE,MAAM,YAAY,CAAC;AAI9F,YAAY,EACV,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AA4BpB;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,WAAW,EACjB,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAuB,EAChE,UAAU,CAAC,EAAE,UAAU,GACtB,IAAI,CAEN"}
|
package/lib/generators/index.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { cliDocs, cliGenerator, cliSample } from './cli/index.js';
|
|
2
|
+
import { goDocs, goGenerator, goSample } from './go/index.js';
|
|
3
|
+
import { BUILTIN_META, validateSelection } from './meta.js';
|
|
4
|
+
import { mockGenerator } from './mock/index.js';
|
|
5
|
+
import { phpDocs, phpGenerator, phpSample } from './php/index.js';
|
|
6
|
+
import { pythonDocs, pythonGenerator, pythonSample } from './python/index.js';
|
|
7
|
+
import { swrGenerator } from './swr/index.js';
|
|
8
|
+
import { tanstackQueryGenerator } from './tanstack-query/index.js';
|
|
9
|
+
import { transformersGenerator } from './transformers/index.js';
|
|
10
|
+
import { typescriptDocs, typescriptGenerator, typescriptSample } from './typescript/index.js';
|
|
11
|
+
import { zodGenerator } from './zod/index.js';
|
|
12
|
+
// The sync registry for the `/generate` toolkit entry (which loads the emitters
|
|
13
|
+
// statically anyway). Compatibility metadata lives in BUILTIN_META — one home;
|
|
14
|
+
// only the eagerly imported `run` functions live here. The pipeline entry never
|
|
15
|
+
// touches this module: it loads built-ins lazily through the meta table.
|
|
16
|
+
const RUNS = {
|
|
17
|
+
typescript: { run: typescriptGenerator, sample: typescriptSample, docs: typescriptDocs },
|
|
14
18
|
zod: { run: zodGenerator },
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
swr: { run: swrGenerator, requires: ['sdk'], errorModes: ['throw'] },
|
|
27
|
-
// mock emits a standalone MSW handlers/factories module referencing the sdk's types.
|
|
28
|
-
mock: { run: mockGenerator, requires: ['sdk'] },
|
|
19
|
+
transformers: { run: transformersGenerator },
|
|
20
|
+
'tanstack-query': { run: tanstackQueryGenerator('react') },
|
|
21
|
+
'tanstack-query-vue': { run: tanstackQueryGenerator('vue') },
|
|
22
|
+
'tanstack-query-svelte': { run: tanstackQueryGenerator('svelte') },
|
|
23
|
+
'tanstack-query-solid': { run: tanstackQueryGenerator('solid') },
|
|
24
|
+
swr: { run: swrGenerator },
|
|
25
|
+
mock: { run: mockGenerator },
|
|
26
|
+
cli: { run: cliGenerator, sample: cliSample, docs: cliDocs },
|
|
27
|
+
python: { run: pythonGenerator, sample: pythonSample, docs: pythonDocs },
|
|
28
|
+
go: { run: goGenerator, sample: goSample, docs: goDocs },
|
|
29
|
+
php: { run: phpGenerator, sample: phpSample, docs: phpDocs },
|
|
29
30
|
};
|
|
31
|
+
const GENERATORS = Object.fromEntries(Object.entries(BUILTIN_META).map(([name, { load: _load, ...meta }]) => [name, { ...meta, ...RUNS[name] }]));
|
|
30
32
|
/**
|
|
31
33
|
* A fresh registry of the built-in generators keyed by name. The plugin resolver seeds from this
|
|
32
34
|
* and adds custom generators to the copy, so mutating the result never affects the built-in table.
|
|
@@ -39,31 +41,7 @@ export function builtinGenerators() {
|
|
|
39
41
|
* contract, throwing the first violation with an actionable message. Runs before
|
|
40
42
|
* any file is produced so an incompatible combination never reaches the printer.
|
|
41
43
|
*/
|
|
42
|
-
export function validateGenerators(names, emit, registry = builtinGenerators()) {
|
|
43
|
-
|
|
44
|
-
const errorMode = emit.errorMode ?? 'throw';
|
|
45
|
-
const dateType = emit.dateType ?? 'string';
|
|
46
|
-
const runtime = emit.runtime ?? 'inline';
|
|
47
|
-
for (const name of names) {
|
|
48
|
-
const descriptor = registry.get(name);
|
|
49
|
-
if (!descriptor) {
|
|
50
|
-
throw new NotSupportedError(`Unknown generator: ${name}`);
|
|
51
|
-
}
|
|
52
|
-
for (const required of descriptor.requires ?? []) {
|
|
53
|
-
if (!selected.has(required)) {
|
|
54
|
-
const fixed = [...new Set([required, ...names])].map((g) => `--generator ${g}`).join(' ');
|
|
55
|
-
throw new NotSupportedError(`The "${name}" generator requires the "${required}" generator. Add it, e.g. ${fixed}.`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (descriptor.errorModes && !descriptor.errorModes.includes(errorMode)) {
|
|
59
|
-
throw new NotSupportedError(`The "${name}" generator does not support --error-mode "${errorMode}" (supported: ${descriptor.errorModes.join(', ')}).`);
|
|
60
|
-
}
|
|
61
|
-
if (descriptor.dateTypes && !descriptor.dateTypes.includes(dateType)) {
|
|
62
|
-
throw new NotSupportedError(`The "${name}" generator requires --date-type ${descriptor.dateTypes.join(' or ')} (got "${dateType}") so the runtime values match the generated types.`);
|
|
63
|
-
}
|
|
64
|
-
if (descriptor.runtimes && !descriptor.runtimes.includes(runtime)) {
|
|
65
|
-
throw new NotSupportedError(`The "${name}" generator does not support runtime "${runtime}" (supported: ${descriptor.runtimes.join(', ')}).`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
44
|
+
export function validateGenerators(names, emit, registry = builtinGenerators(), outputMode) {
|
|
45
|
+
validateSelection(names, emit, registry, outputMode);
|
|
68
46
|
}
|
|
69
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EmitOptions, GeneratorDescriptor, GeneratorName, OutputMode } from './types.js';
|
|
2
|
+
export type BuiltinMeta = Omit<GeneratorDescriptor, 'run' | 'sample' | 'docs'> & {
|
|
3
|
+
load: () => Promise<Pick<GeneratorDescriptor, 'run' | 'sample' | 'docs'>>;
|
|
4
|
+
};
|
|
5
|
+
export declare const BUILTIN_META: Record<GeneratorName, BuiltinMeta>;
|
|
6
|
+
/**
|
|
7
|
+
* Validate a generator selection against every selected generator's declared
|
|
8
|
+
* contract, throwing the first violation with an actionable message. Runs before
|
|
9
|
+
* any file is produced so an incompatible combination never reaches the printer.
|
|
10
|
+
* Works on metadata alone — the `run` field is never touched.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateSelection(names: string[], emit: EmitOptions, registry: Map<string, Omit<GeneratorDescriptor, 'run'> | GeneratorDescriptor>, outputMode?: OutputMode): void;
|
|
13
|
+
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/generators/meta.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG;IAC/E,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;CAC3E,CAAC;AAyBF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAuF3D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,GAAG,mBAAmB,CAAC,EAG7E,UAAU,CAAC,EAAE,UAAU,GACtB,IAAI,CA6CN"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Built-in generator METADATA — importable without loading any emitter (and so
|
|
2
|
+
// without loading `typescript`). The pipeline validates selections against this
|
|
3
|
+
// table and dynamic-imports only the generators actually selected; the sync
|
|
4
|
+
// `/generate` registry in index.ts derives from it, so the metadata has one home.
|
|
5
|
+
import { logger } from '@redocly/openapi-core';
|
|
6
|
+
import { NotSupportedError } from '../errors.js';
|
|
7
|
+
function tanstackQuery(framework) {
|
|
8
|
+
return {
|
|
9
|
+
requires: ['typescript'],
|
|
10
|
+
errorModes: ['throw'],
|
|
11
|
+
load: () => import('./tanstack-query/index.js').then((m) => ({
|
|
12
|
+
run: m.tanstackQueryGenerator(framework),
|
|
13
|
+
})),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The TypeScript-only knobs a standalone language SDK cannot apply: it always emits
|
|
18
|
+
* one self-contained file with the runtime embedded, and each language passes inputs
|
|
19
|
+
* its own idiomatic way (keyword arguments, named arguments, a params struct).
|
|
20
|
+
*/
|
|
21
|
+
const LANGUAGE_SDK_NOT_APPLICABLE = {
|
|
22
|
+
outputMode: 'it always emits one self-contained file',
|
|
23
|
+
runtime: 'the runtime is always embedded in the generated file',
|
|
24
|
+
argsStyle: "inputs follow the target language's own idiom",
|
|
25
|
+
importExt: 'the generated file has no relative imports',
|
|
26
|
+
};
|
|
27
|
+
export const BUILTIN_META = {
|
|
28
|
+
// typescript is the base client; zod emits a standalone schema module importing nothing from it.
|
|
29
|
+
typescript: {
|
|
30
|
+
load: () => import('./typescript/index.js').then((m) => ({
|
|
31
|
+
run: m.typescriptGenerator,
|
|
32
|
+
sample: m.typescriptSample,
|
|
33
|
+
docs: m.typescriptDocs,
|
|
34
|
+
})),
|
|
35
|
+
},
|
|
36
|
+
zod: { load: () => import('./zod/index.js').then((m) => ({ run: m.zodGenerator })) },
|
|
37
|
+
// transformers import the schema *types* from the client entry module (so typescript must
|
|
38
|
+
// run) and assign `Date` values to those fields, which only type-checks when the client
|
|
39
|
+
// types dates as `Date`.
|
|
40
|
+
transformers: {
|
|
41
|
+
requires: ['typescript'],
|
|
42
|
+
dateTypes: ['Date'],
|
|
43
|
+
load: () => import('./transformers/index.js').then((m) => ({ run: m.transformersGenerator })),
|
|
44
|
+
},
|
|
45
|
+
// tanstack-query wraps the client's exported, throw-mode operation functions — present in
|
|
46
|
+
// both runtime distributions, so no runtime restriction. The framework variants differ
|
|
47
|
+
// only in the `@tanstack/<framework>-query` import; the bare name means React.
|
|
48
|
+
'tanstack-query': tanstackQuery('react'),
|
|
49
|
+
'tanstack-query-vue': tanstackQuery('vue'),
|
|
50
|
+
'tanstack-query-svelte': tanstackQuery('svelte'),
|
|
51
|
+
'tanstack-query-solid': tanstackQuery('solid'),
|
|
52
|
+
// swr wraps the client's exported, throw-mode operation functions as SWR hooks.
|
|
53
|
+
swr: {
|
|
54
|
+
requires: ['typescript'],
|
|
55
|
+
errorModes: ['throw'],
|
|
56
|
+
load: () => import('./swr/index.js').then((m) => ({ run: m.swrGenerator })),
|
|
57
|
+
},
|
|
58
|
+
// mock emits a standalone MSW handlers/factories module referencing the client's types.
|
|
59
|
+
mock: {
|
|
60
|
+
requires: ['typescript'],
|
|
61
|
+
load: () => import('./mock/index.js').then((m) => ({ run: m.mockGenerator })),
|
|
62
|
+
},
|
|
63
|
+
// cli dispatches through the generated instance client and relies on thrown ApiError
|
|
64
|
+
// for its exit-code mapping, so it is bound to `typescript` and throw-only.
|
|
65
|
+
// Validation is part of the CLI's contract (exit code 3), so it requires `zod` —
|
|
66
|
+
// the pipeline pulls prerequisites in, so `--generator cli` alone is enough.
|
|
67
|
+
cli: {
|
|
68
|
+
requires: ['typescript', 'zod'],
|
|
69
|
+
errorModes: ['throw'],
|
|
70
|
+
load: () => import('./cli/index.js').then((m) => ({
|
|
71
|
+
run: m.cliGenerator,
|
|
72
|
+
sample: m.cliSample,
|
|
73
|
+
docs: m.cliDocs,
|
|
74
|
+
})),
|
|
75
|
+
},
|
|
76
|
+
// python emits a standalone full Python SDK (httpx) — no TypeScript involved,
|
|
77
|
+
// so a python-only selection never loads the `typescript` package.
|
|
78
|
+
python: {
|
|
79
|
+
notApplicable: LANGUAGE_SDK_NOT_APPLICABLE,
|
|
80
|
+
load: () => import('./python/index.js').then((m) => ({
|
|
81
|
+
run: m.pythonGenerator,
|
|
82
|
+
sample: m.pythonSample,
|
|
83
|
+
docs: m.pythonDocs,
|
|
84
|
+
options: m.pythonOptions,
|
|
85
|
+
})),
|
|
86
|
+
},
|
|
87
|
+
// go emits a standalone full Go SDK (stdlib-only) — no TypeScript involved.
|
|
88
|
+
// `(T, error)` returns ARE its error mode, so `result` has no Go rendering.
|
|
89
|
+
go: {
|
|
90
|
+
errorModes: ['throw'],
|
|
91
|
+
notApplicable: LANGUAGE_SDK_NOT_APPLICABLE,
|
|
92
|
+
load: () => import('./go/index.js').then((m) => ({
|
|
93
|
+
run: m.goGenerator,
|
|
94
|
+
sample: m.goSample,
|
|
95
|
+
docs: m.goDocs,
|
|
96
|
+
})),
|
|
97
|
+
},
|
|
98
|
+
// php emits a standalone full PHP SDK (curl extension) — no TypeScript involved.
|
|
99
|
+
// Exceptions ARE its error mode, so `result` has no PHP rendering.
|
|
100
|
+
php: {
|
|
101
|
+
errorModes: ['throw'],
|
|
102
|
+
notApplicable: LANGUAGE_SDK_NOT_APPLICABLE,
|
|
103
|
+
load: () => import('./php/index.js').then((m) => ({
|
|
104
|
+
run: m.phpGenerator,
|
|
105
|
+
sample: m.phpSample,
|
|
106
|
+
docs: m.phpDocs,
|
|
107
|
+
})),
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Validate a generator selection against every selected generator's declared
|
|
112
|
+
* contract, throwing the first violation with an actionable message. Runs before
|
|
113
|
+
* any file is produced so an incompatible combination never reaches the printer.
|
|
114
|
+
* Works on metadata alone — the `run` field is never touched.
|
|
115
|
+
*/
|
|
116
|
+
export function validateSelection(names, emit, registry,
|
|
117
|
+
// `outputMode` travels beside `emit` in the generator input, so the caller passes it
|
|
118
|
+
// in for the not-applicable check; absent means the caller left it at the default.
|
|
119
|
+
outputMode) {
|
|
120
|
+
const selected = new Set(names);
|
|
121
|
+
// `goPackage` is read by one generator, which `notApplicable` can't express: it fires
|
|
122
|
+
// per generator, so marking the option on `typescript` would warn on `--generator
|
|
123
|
+
// typescript --generator go`, where `go` does apply it. Setting it with `go` unselected
|
|
124
|
+
// does nothing at all, which is worth saying.
|
|
125
|
+
if (emit.goPackage !== undefined && !selected.has('go')) {
|
|
126
|
+
logger.warn('generate-client: goPackage is ignored — it declares the Go package clause, and no selected generator uses it (add --generator go).\n');
|
|
127
|
+
}
|
|
128
|
+
const errorMode = emit.errorMode ?? 'throw';
|
|
129
|
+
const dateType = emit.dateType ?? 'string';
|
|
130
|
+
for (const name of names) {
|
|
131
|
+
const descriptor = registry.get(name);
|
|
132
|
+
if (!descriptor) {
|
|
133
|
+
throw new NotSupportedError(`Unknown generator: ${name}`);
|
|
134
|
+
}
|
|
135
|
+
for (const required of descriptor.requires ?? []) {
|
|
136
|
+
if (!selected.has(required)) {
|
|
137
|
+
const fixed = [...new Set([required, ...names])].map((g) => `--generator ${g}`).join(' ');
|
|
138
|
+
throw new NotSupportedError(`The "${name}" generator requires the "${required}" generator. Add it, e.g. ${fixed}.`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (descriptor.errorModes && !descriptor.errorModes.includes(errorMode)) {
|
|
142
|
+
throw new NotSupportedError(`The "${name}" generator does not support --error-mode "${errorMode}" (supported: ${descriptor.errorModes.join(', ')}).`);
|
|
143
|
+
}
|
|
144
|
+
if (descriptor.dateTypes && !descriptor.dateTypes.includes(dateType)) {
|
|
145
|
+
throw new NotSupportedError(`The "${name}" generator requires --date-type ${descriptor.dateTypes.join(' or ')} (got "${dateType}") so the runtime values match the generated types.`);
|
|
146
|
+
}
|
|
147
|
+
// An option this generator can't apply is announced, not silently dropped. Only an
|
|
148
|
+
// EXPLICIT value warns — defaults would nag every run.
|
|
149
|
+
const chosen = { ...emit, outputMode };
|
|
150
|
+
for (const [option, reason] of Object.entries(descriptor.notApplicable ?? {})) {
|
|
151
|
+
if (chosen[option] !== undefined) {
|
|
152
|
+
logger.warn(`generate-client: the "${name}" generator ignores ${option} — ${reason}.\n`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/generators/meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** The faker-call expression for an IR schema. Refs resolve against `schemas`;
|
|
1
|
+
import { type DateType, type NamedSchemaModel, type SchemaModel } from '@redocly/client-generator';
|
|
2
|
+
import { type MockValue } from './values.ts';
|
|
3
|
+
/** The faker-call value for an IR schema. Refs resolve against `schemas`;
|
|
5
4
|
* recursion is cut with a visited-set (`null` at the cycle). `dateType` mirrors
|
|
6
5
|
* the sdk's `--date-type`: under `'Date'`, date fields stay `faker.date.recent()`
|
|
7
6
|
* (a `Date`); otherwise they are stringified to match the `string`-typed sdk. */
|
|
8
7
|
export declare function fakerExpression(schema: SchemaModel, schemas: NamedSchemaModel[], opts?: {
|
|
9
8
|
dateType?: DateType;
|
|
10
|
-
}):
|
|
9
|
+
}): MockValue;
|
|
11
10
|
//# sourceMappingURL=faker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faker.d.ts","sourceRoot":"","sources":["../../../src/generators/mock/faker.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAGrB,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAuC,KAAK,SAAS,EAAe,MAAM,aAAa,CAAC;AAE/F;;;kFAGkF;AAClF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAO,GACjC,SAAS,CAMX"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// Builds the body value for a faker-mode mock factory: a tree of
|
|
2
|
+
// `@faker-js/faker` call expressions that produce realistic — and, with a seed,
|
|
3
|
+
// reproducible — data. Structurally mirrors `./sample.ts`'s `walk` (same
|
|
4
|
+
// recursion + same visited-set cycle guard), but yields faker calls instead of a
|
|
5
|
+
// static value. Nested refs are INLINED under the same cycle guard (never
|
|
6
|
+
// `create<Ref>()` calls), so a cyclic schema terminates with `null` at the cycle
|
|
7
|
+
// instead of recursing forever at runtime — exactly like the static path. The
|
|
8
|
+
// factory signatures are identical to the static mode's, so a consumer can flip
|
|
9
|
+
// `mockData` without touching call sites; `@faker-js/faker` becomes their
|
|
10
|
+
// dev-dep while the real client stays dependency-free.
|
|
11
|
+
import { codeLiteral } from '@redocly/client-generator/printers/typescript';
|
|
12
|
+
import { splitIntersection } from "./sample.js";
|
|
13
|
+
import { expr, isObjectValue, objectValue } from "./values.js";
|
|
14
|
+
/** The faker-call value for an IR schema. Refs resolve against `schemas`;
|
|
15
|
+
* recursion is cut with a visited-set (`null` at the cycle). `dateType` mirrors
|
|
16
|
+
* the sdk's `--date-type`: under `'Date'`, date fields stay `faker.date.recent()`
|
|
17
|
+
* (a `Date`); otherwise they are stringified to match the `string`-typed sdk. */
|
|
18
|
+
export function fakerExpression(schema, schemas, opts = {}) {
|
|
19
|
+
const byName = new Map(schemas.map((s) => [s.name, s.schema]));
|
|
20
|
+
const value = walk(schema, byName, new Set(), opts.dateType ?? 'string');
|
|
21
|
+
// A `CYCLE` that reaches the root has no container to absorb it (e.g. a
|
|
22
|
+
// self-referential union); fall back to null.
|
|
23
|
+
return value === CYCLE ? expr('null') : value;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sentinel returned by `walk` when a `$ref` re-enters a name already on the stack.
|
|
27
|
+
* Containers turn it into the type-correct empty value for their position — an array
|
|
28
|
+
* to `[]`, a record to `{}`, an optional property to omission — mirroring `./sample.ts`
|
|
29
|
+
* so a recursive schema yields a faker tree that still satisfies its non-nullable type.
|
|
30
|
+
* Only a required, non-container self-reference (an uninhabitable schema) degrades to null.
|
|
31
|
+
*/
|
|
32
|
+
const CYCLE = Symbol('cycle');
|
|
33
|
+
function walk(schema, byName, visiting, dateType) {
|
|
34
|
+
switch (schema.kind) {
|
|
35
|
+
case 'scalar':
|
|
36
|
+
return expr(scalarExpr(schema.scalar, schema.metadata, dateType));
|
|
37
|
+
case 'array': {
|
|
38
|
+
// A cyclic item type collapses the array to `[]` — itself a valid `T[]`.
|
|
39
|
+
const item = walk(schema.items, byName, visiting, dateType);
|
|
40
|
+
return item === CYCLE ? expr('[]') : multiple(item);
|
|
41
|
+
}
|
|
42
|
+
case 'object':
|
|
43
|
+
return objectValue(schema.properties.flatMap((p) => {
|
|
44
|
+
const value = walk(p.schema, byName, visiting, dateType);
|
|
45
|
+
// A cyclic optional property is omitted; a cyclic required property is
|
|
46
|
+
// uninhabitable, so null is the only stand-in.
|
|
47
|
+
if (value === CYCLE)
|
|
48
|
+
return p.required ? [{ key: p.name, value: expr('null') }] : [];
|
|
49
|
+
return [{ key: p.name, value }];
|
|
50
|
+
}));
|
|
51
|
+
case 'record': {
|
|
52
|
+
const value = walk(schema.value, byName, visiting, dateType);
|
|
53
|
+
return value === CYCLE ? expr('{}') : objectValue([{ key: 'key', value }]);
|
|
54
|
+
}
|
|
55
|
+
case 'enum':
|
|
56
|
+
return expr(`faker.helpers.arrayElement([${schema.values.map((value) => codeLiteral(value)).join(', ')}] as const)`);
|
|
57
|
+
case 'literal':
|
|
58
|
+
return expr(codeLiteral(schema.value));
|
|
59
|
+
case 'union': {
|
|
60
|
+
// First non-cyclic member; if every member cycles, propagate `CYCLE`.
|
|
61
|
+
for (const member of schema.members) {
|
|
62
|
+
const value = walk(member, byName, visiting, dateType);
|
|
63
|
+
if (value !== CYCLE)
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
return schema.members.length > 0 ? CYCLE : expr('null');
|
|
67
|
+
}
|
|
68
|
+
case 'intersection': {
|
|
69
|
+
// Mirror the static sampler: object members merge into one synthetic object whose
|
|
70
|
+
// property conflicts resolve by SPECIFICITY (see `splitIntersection`); `unknown`
|
|
71
|
+
// members are constraint-only and dropped; with no object member, the first
|
|
72
|
+
// member's expression IS the value (a scalar-narrowing intersection).
|
|
73
|
+
const { merged, rest } = splitIntersection(schema.members, byName);
|
|
74
|
+
const parts = rest
|
|
75
|
+
.map((member) => walk(member, byName, visiting, dateType))
|
|
76
|
+
.filter((part) => part !== CYCLE);
|
|
77
|
+
if (merged) {
|
|
78
|
+
const value = walk(merged, byName, visiting, dateType);
|
|
79
|
+
const own = value !== CYCLE && isObjectValue(value) ? value.entries : [];
|
|
80
|
+
const folded = parts.filter(isObjectValue).flatMap((part) => part.entries);
|
|
81
|
+
return objectValue([...own, ...folded]);
|
|
82
|
+
}
|
|
83
|
+
const objects = parts.filter(isObjectValue);
|
|
84
|
+
if (objects.length > 0) {
|
|
85
|
+
return objectValue(objects.flatMap((part) => part.entries));
|
|
86
|
+
}
|
|
87
|
+
return parts[0] ?? objectValue([]);
|
|
88
|
+
}
|
|
89
|
+
case 'omit':
|
|
90
|
+
return omitExpr(schema.base, schema.keys, byName, visiting, dateType);
|
|
91
|
+
case 'ref': {
|
|
92
|
+
if (visiting.has(schema.name))
|
|
93
|
+
return CYCLE;
|
|
94
|
+
const target = byName.get(schema.name);
|
|
95
|
+
if (!target)
|
|
96
|
+
return expr('null');
|
|
97
|
+
visiting.add(schema.name);
|
|
98
|
+
const result = walk(target, byName, visiting, dateType);
|
|
99
|
+
visiting.delete(schema.name);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
case 'null':
|
|
103
|
+
case 'unknown':
|
|
104
|
+
return expr('null');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** The faker call for a scalar, keyed by kind then `format`. A binary field has no
|
|
108
|
+
* faker generator (its type is `Blob`), so it emits `new Blob([])` — the same
|
|
109
|
+
* type-demanded expression the static path uses, taking precedence over any example. */
|
|
110
|
+
function scalarExpr(scalar, meta, dateType) {
|
|
111
|
+
if (meta?.format === 'binary')
|
|
112
|
+
return 'new Blob([])';
|
|
113
|
+
if (scalar === 'boolean')
|
|
114
|
+
return 'faker.datatype.boolean()';
|
|
115
|
+
if (scalar === 'integer')
|
|
116
|
+
return `faker.number.int(${boundsArg(meta)})`;
|
|
117
|
+
if (scalar === 'number')
|
|
118
|
+
return `faker.number.float(${boundsArg(meta)})`;
|
|
119
|
+
switch (meta?.format) {
|
|
120
|
+
case 'email':
|
|
121
|
+
return 'faker.internet.email()';
|
|
122
|
+
case 'uuid':
|
|
123
|
+
return 'faker.string.uuid()';
|
|
124
|
+
case 'uri':
|
|
125
|
+
case 'url':
|
|
126
|
+
return 'faker.internet.url()';
|
|
127
|
+
case 'hostname':
|
|
128
|
+
return 'faker.internet.domainName()';
|
|
129
|
+
case 'ipv4':
|
|
130
|
+
return 'faker.internet.ipv4()';
|
|
131
|
+
case 'date-time':
|
|
132
|
+
return dateExpr(dateType, false);
|
|
133
|
+
case 'date':
|
|
134
|
+
return dateExpr(dateType, true);
|
|
135
|
+
default:
|
|
136
|
+
return 'faker.lorem.word()';
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** `faker.date.recent()` (under `dateType: 'Date'`); else its ISO string, sliced to
|
|
140
|
+
* `YYYY-MM-DD` for a `date` so the wire shape matches the `string`-typed field. */
|
|
141
|
+
function dateExpr(dateType, dateOnly) {
|
|
142
|
+
if (dateType === 'Date')
|
|
143
|
+
return 'faker.date.recent()';
|
|
144
|
+
const iso = 'faker.date.recent().toISOString()';
|
|
145
|
+
return dateOnly ? `${iso}.slice(0, 10)` : iso;
|
|
146
|
+
}
|
|
147
|
+
/** `{ min, max }` arg for a bounded numeric, or empty when neither bound is set. */
|
|
148
|
+
function boundsArg(meta) {
|
|
149
|
+
const props = [
|
|
150
|
+
...(meta?.minimum !== undefined ? [`min: ${meta.minimum}`] : []),
|
|
151
|
+
...(meta?.maximum !== undefined ? [`max: ${meta.maximum}`] : []),
|
|
152
|
+
];
|
|
153
|
+
return props.length > 0 ? `{ ${props.join(', ')} }` : '';
|
|
154
|
+
}
|
|
155
|
+
/** `faker.helpers.multiple(() => <item>, { count: 1 })` — one element keeps output small.
|
|
156
|
+
* An object-literal arrow body must be parenthesized (`() => ({ … })`), or the braces
|
|
157
|
+
* parse as a block. */
|
|
158
|
+
function multiple(item) {
|
|
159
|
+
const object = isObjectValue(item);
|
|
160
|
+
return {
|
|
161
|
+
kind: 'wrap',
|
|
162
|
+
before: `faker.helpers.multiple(() => ${object ? '(' : ''}`,
|
|
163
|
+
value: item,
|
|
164
|
+
after: `${object ? ')' : ''}, { count: 1 })`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/** An `omit`: the base named schema's faker value minus the dropped keys. Resolves the
|
|
168
|
+
* base via the schema set (cycle-guarded); a non-object base passes through unchanged. */
|
|
169
|
+
function omitExpr(base, keys, byName, visiting, dateType) {
|
|
170
|
+
const target = byName.get(base);
|
|
171
|
+
if (!target)
|
|
172
|
+
return expr('null');
|
|
173
|
+
const value = walk(target, byName, visiting, dateType);
|
|
174
|
+
// A cyclic or non-object base passes through unchanged (a container/root absorbs `CYCLE`).
|
|
175
|
+
if (value === CYCLE || !isObjectValue(value))
|
|
176
|
+
return value;
|
|
177
|
+
const drop = new Set(keys);
|
|
178
|
+
return objectValue(value.entries.filter((entry) => 'spread' in entry || !drop.has(entry.key)));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=faker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faker.js","sourceRoot":"","sources":["../../../src/generators/mock/faker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Generator } from '
|
|
1
|
+
import type { Generator } from '@redocly/client-generator';
|
|
2
2
|
/**
|
|
3
3
|
* The mock generator: a standalone `<stem>.mocks.ts` module of MSW handlers and
|
|
4
4
|
* data factories baked from the spec. Imports `msw` (the consumer's dev-dep); the
|
|
@@ -6,4 +6,4 @@ import type { Generator } from './types.js';
|
|
|
6
6
|
* the client. Emits nothing when there are no operations.
|
|
7
7
|
*/
|
|
8
8
|
export declare const mockGenerator: Generator;
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/mock/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAY3B,CAAC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import {
|
|
3
|
-
import { renderMockModule } from '../emitters/mock.js';
|
|
4
|
-
import { anchor } from './anchor.js';
|
|
2
|
+
import { renderMockModule } from "./render.js";
|
|
5
3
|
/**
|
|
6
4
|
* The mock generator: a standalone `<stem>.mocks.ts` module of MSW handlers and
|
|
7
5
|
* data factories baked from the spec. Imports `msw` (the consumer's dev-dep); the
|
|
8
6
|
* sdk client stays dependency-free. Output-mode-agnostic in v1 — one module beside
|
|
9
7
|
* the client. Emits nothing when there are no operations.
|
|
10
8
|
*/
|
|
11
|
-
export const mockGenerator = ({ model,
|
|
12
|
-
const
|
|
9
|
+
export const mockGenerator = ({ model, output, banner, emit }) => {
|
|
10
|
+
const header = banner.map((line) => `// ${line}`).join('\n');
|
|
13
11
|
const content = renderMockModule(model, {
|
|
14
|
-
sdkModule: `./${stem}.${emit.importExt ?? 'js'}`,
|
|
12
|
+
sdkModule: `./${output.stem}.${emit.importExt ?? 'js'}`,
|
|
15
13
|
dateType: emit.dateType,
|
|
16
14
|
mockData: emit.mockData,
|
|
17
15
|
mockSeed: emit.mockSeed,
|
|
18
16
|
});
|
|
19
17
|
if (content === '')
|
|
20
18
|
return [];
|
|
21
|
-
return [
|
|
19
|
+
return [
|
|
20
|
+
{ path: join(output.dir, `${output.stem}.mocks.ts`), content: `${header}\n\n${content}` },
|
|
21
|
+
];
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/mock/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE;QACtC,SAAS,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;QACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO;QACL,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,OAAO,EAAE,EAAE;KAC1F,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { type ApiModel } from '
|
|
2
|
-
import type { DateType } from './types.js';
|
|
1
|
+
import { type ApiModel, type DateType } from '@redocly/client-generator';
|
|
3
2
|
export type MockOptions = {
|
|
4
3
|
/** Import specifier for the sdk entry the schema types live in. */
|
|
5
4
|
sdkModule: string;
|
|
@@ -19,4 +18,4 @@ export type MockOptions = {
|
|
|
19
18
|
};
|
|
20
19
|
/** Render the full `*.mocks.ts` source. `''` when the model has no operations. */
|
|
21
20
|
export declare function renderMockModule(model: ApiModel, opts: MockOptions): string;
|
|
22
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/generators/mock/render.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAKd,MAAM,2BAA2B,CAAC;AAqBnC,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB;mFAC+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAmB3E"}
|