@redocly/client-generator 0.3.7 → 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,166 @@
|
|
|
1
|
+
// The built-in `php` generator — the third non-TypeScript library entry, authored
|
|
2
|
+
// with the language-neutral toolkit only (same dogfooding invariant as python/go,
|
|
3
|
+
// pinned by the guard test). Output is a single PHP >= 8.1 file over the curl
|
|
4
|
+
// extension: promoted-constructor classes with fromArray/toArray hydration, native
|
|
5
|
+
// backed enums, match-based discriminator dispatchers, and a Client over the
|
|
6
|
+
// embedded runtime. Exceptions are the error mode (`errorMode` does not apply).
|
|
7
|
+
import { identifierFor, jsonSuccessSchema, paginationItemSchema, renderReferencePage, sseResponse, } from '@redocly/client-generator';
|
|
8
|
+
import { PhpPrinter } from '@redocly/client-generator/printers/php';
|
|
9
|
+
import { PHP_RUNTIME_SOURCE } from '@redocly/client-generator/runtime-sources';
|
|
10
|
+
import { writeServers } from "./client.js";
|
|
11
|
+
import { phpPaginationLiteral, phpSecurityLiteral } from "./descriptor.js";
|
|
12
|
+
import { hydration, renderPhpModels } from "./models.js";
|
|
13
|
+
import { methodIdents, methodName, PHP, phpString, propertyName } from "./naming.js";
|
|
14
|
+
import { writePhpMethod } from "./operations.js";
|
|
15
|
+
import { writePhpPaginationWrappers } from "./pagination.js";
|
|
16
|
+
import { phpType } from "./types.js";
|
|
17
|
+
export { renderPhpModels } from "./models.js";
|
|
18
|
+
export { phpType } from "./types.js";
|
|
19
|
+
/** Drop the standalone header (<?php, declare, namespace, leading comments) for stitching. */
|
|
20
|
+
function stripPhpHeader(source) {
|
|
21
|
+
const lines = source.split('\n');
|
|
22
|
+
let start = 0;
|
|
23
|
+
for (let index = 0; index < lines.length; index++) {
|
|
24
|
+
const line = lines[index].trim();
|
|
25
|
+
if (line.startsWith('namespace ')) {
|
|
26
|
+
start = index + 1;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return lines.slice(start).join('\n').trim();
|
|
31
|
+
}
|
|
32
|
+
/** The whole generated file: namespace + models + embedded runtime + operations + Client. */
|
|
33
|
+
export const phpGenerator = ({ model, output, banner, emit, pagination }) => {
|
|
34
|
+
const printer = new PhpPrinter();
|
|
35
|
+
const dateType = emit.dateType ?? 'string';
|
|
36
|
+
const namespace = identifierFor(model.title, { style: 'pascal', reserved: PHP });
|
|
37
|
+
printer.line('<?php');
|
|
38
|
+
printer.blank();
|
|
39
|
+
printer.line(`// Code generated by @redocly/client-generator (php) from ${phpString(model.title)} ${model.version}. DO NOT EDIT.`);
|
|
40
|
+
printer.line('// Regenerate with `redocly generate-client`. PHP >= 8.1, curl extension — zero Composer dependencies.');
|
|
41
|
+
printer.blank();
|
|
42
|
+
printer.line('declare(strict_types=1);');
|
|
43
|
+
printer.blank();
|
|
44
|
+
printer.line(`namespace ${namespace};`);
|
|
45
|
+
printer.blank();
|
|
46
|
+
printer.line(renderPhpModels(model, dateType));
|
|
47
|
+
writeServers(printer, model);
|
|
48
|
+
if (emit.runtime === 'module') {
|
|
49
|
+
// The runtime file re-declares this same namespace, so the require binds the
|
|
50
|
+
// exact names the inline stitching would have defined at this position.
|
|
51
|
+
printer.line('// ─── Runtime (a real file beside this one, written by the same run) ───');
|
|
52
|
+
printer.line("require_once __DIR__ . '/runtime.php';");
|
|
53
|
+
printer.blank();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
printer.line('// ─── Embedded runtime (@redocly/client-generator php runtime) ───');
|
|
57
|
+
printer.line(stripPhpHeader(PHP_RUNTIME_SOURCE));
|
|
58
|
+
printer.blank();
|
|
59
|
+
}
|
|
60
|
+
const operations = model.services.flatMap((service) => service.operations);
|
|
61
|
+
const idents = methodIdents(model);
|
|
62
|
+
// Pagination arrives RESOLVED from the pipeline — one fit-verified answer per run.
|
|
63
|
+
const paginationRules = new Map();
|
|
64
|
+
for (const op of operations) {
|
|
65
|
+
const spec = pagination?.get(op.name)?.spec;
|
|
66
|
+
if (spec !== undefined)
|
|
67
|
+
paginationRules.set(op.name, spec);
|
|
68
|
+
}
|
|
69
|
+
printer.block('const OPERATIONS = [', () => {
|
|
70
|
+
for (const op of operations) {
|
|
71
|
+
const id = op.specName ?? op.name;
|
|
72
|
+
const security = phpSecurityLiteral(op, model);
|
|
73
|
+
const rule = paginationRules.get(op.name);
|
|
74
|
+
const fields = [
|
|
75
|
+
`'id' => ${phpString(id)}`,
|
|
76
|
+
`'method' => ${phpString(op.method.toUpperCase())}`,
|
|
77
|
+
`'path' => ${phpString(op.path)}`,
|
|
78
|
+
...(security !== undefined ? [`'security' => ${security}`] : []),
|
|
79
|
+
...(rule !== undefined ? [`'pagination' => ${phpPaginationLiteral(rule)}`] : []),
|
|
80
|
+
];
|
|
81
|
+
printer.line(`${phpString(id)} => [${fields.join(', ')}],`);
|
|
82
|
+
}
|
|
83
|
+
}, '];');
|
|
84
|
+
printer.blank();
|
|
85
|
+
printer.doc('Client', `Client for ${model.title} (${model.version}).`);
|
|
86
|
+
// Not final: PHP test suites mock concrete classes (createMock(Client::class)).
|
|
87
|
+
printer.line('class Client');
|
|
88
|
+
printer.block('{', () => {
|
|
89
|
+
printer.line('public function __construct(private Config $config)');
|
|
90
|
+
printer.block('{', () => {
|
|
91
|
+
printer.block("if ($this->config->serverUrl === '') {", () => {
|
|
92
|
+
printer.line(`$this->config->serverUrl = ${phpString(emit.serverUrl ?? model.serverUrl ?? '')};`);
|
|
93
|
+
}, '}');
|
|
94
|
+
}, '}');
|
|
95
|
+
printer.blank();
|
|
96
|
+
for (const op of operations) {
|
|
97
|
+
const ident = idents.get(op.name);
|
|
98
|
+
writePhpMethod(printer, op, ident, model, dateType);
|
|
99
|
+
if (sseResponse(op) === undefined && (op.successResponseHeaders?.length ?? 0) > 0) {
|
|
100
|
+
writePhpMethod(printer, op, ident, model, dateType, true);
|
|
101
|
+
}
|
|
102
|
+
const rule = paginationRules.get(op.name);
|
|
103
|
+
if (rule === undefined)
|
|
104
|
+
continue;
|
|
105
|
+
const success = jsonSuccessSchema(op);
|
|
106
|
+
const pageHydration = success === undefined ? undefined : hydration(success, '$page', model, dateType);
|
|
107
|
+
const element = paginationItemSchema(success, rule.items, model);
|
|
108
|
+
const itemHydration = element === undefined ? undefined : hydration(element, '$item', model, dateType);
|
|
109
|
+
writePhpPaginationWrappers(printer, op, ident, model, dateType, pageHydration, itemHydration, rule.items, element === undefined ? 'mixed' : phpType(element, model, dateType));
|
|
110
|
+
}
|
|
111
|
+
}, '}');
|
|
112
|
+
const entry = { path: output.path.replace(/\.[^.\\/]+$/, '.php'), content: printer.toString() };
|
|
113
|
+
if (emit.runtime !== 'module')
|
|
114
|
+
return [entry];
|
|
115
|
+
// The runtime, verbatim except its namespace: rewritten to the client's, so one
|
|
116
|
+
// namespace spans both files and every bare reference resolves unchanged.
|
|
117
|
+
const header = banner.map((line) => `// ${line}`).join('\n');
|
|
118
|
+
const runtimeSource = PHP_RUNTIME_SOURCE.replace(/^namespace .*$/m, `namespace ${namespace};`)
|
|
119
|
+
.replace(/^<\?php\n/, `<?php\n\n${header}\n`)
|
|
120
|
+
.trimEnd();
|
|
121
|
+
return [
|
|
122
|
+
entry,
|
|
123
|
+
{ path: entry.path.replace(/[^\\/]+$/, 'runtime.php'), content: `${runtimeSource}\n` },
|
|
124
|
+
];
|
|
125
|
+
};
|
|
126
|
+
/** One idiomatic PHP call per operation — feeds `x-codeSamples` for docs. */
|
|
127
|
+
export function phpSample(op, ctx) {
|
|
128
|
+
const args = [
|
|
129
|
+
...op.pathParams.map((param) => `${phpString(`<${propertyName(param.name)}>`)}`),
|
|
130
|
+
...(op.requestBody ? ['$body'] : []),
|
|
131
|
+
...(op.queryParams.length > 0
|
|
132
|
+
? [`${propertyName(op.queryParams[0].name)}: ${phpString('<value>')}`]
|
|
133
|
+
: []),
|
|
134
|
+
];
|
|
135
|
+
const namespace = identifierFor(ctx.model.title, { style: 'pascal', reserved: PHP });
|
|
136
|
+
// The file this run writes, so the snippet requires something that exists.
|
|
137
|
+
const file = ctx.outputPath.replace(/^.*[\\/]/, '').replace(/\.[^.]+$/, '.php');
|
|
138
|
+
return {
|
|
139
|
+
lang: 'php',
|
|
140
|
+
label: 'PHP SDK',
|
|
141
|
+
source: `require '${file}';\n\nuse ${namespace}\\{Client, Config};\n\n$client = new Client(new Config());\n$result = $client->${methodIdents(ctx.model).get(op.name) ?? methodName(op)}(${args.join(', ')});\n`,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* The SDK's own reference page, written when `client.docs` is on. The call snippets come
|
|
146
|
+
* from `phpSample` — this generator's own hook — so the page can only ever show the syntax
|
|
147
|
+
* of the SDK beside it, and ejecting this generator takes the page with it.
|
|
148
|
+
*/
|
|
149
|
+
export const phpDocs = ({ model, output, emit, pagination }) => [
|
|
150
|
+
{
|
|
151
|
+
path: output.path.replace(/\.[^.\\/]+$/, '.php.md'),
|
|
152
|
+
content: renderReferencePage(model, {
|
|
153
|
+
title: `${model.title} PHP SDK reference`,
|
|
154
|
+
frontmatter: emit.docsFrontmatter === true,
|
|
155
|
+
language: {
|
|
156
|
+
name: 'php',
|
|
157
|
+
label: 'PHP',
|
|
158
|
+
fence: 'php',
|
|
159
|
+
requires: 'The SDK needs the curl extension.',
|
|
160
|
+
},
|
|
161
|
+
sample: (op) => phpSample(op, { model, emit, outputPath: output.path }),
|
|
162
|
+
paginated: new Set(pagination?.keys() ?? []),
|
|
163
|
+
}),
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/php/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ApiModel, type DateType, type SchemaModel } from '@redocly/client-generator';
|
|
2
|
+
/** Wire value → typed value expression, or undefined when the raw value is already right. */
|
|
3
|
+
export declare function hydration(schema: SchemaModel, expr: string, model: ApiModel, dateType: DateType): string | undefined;
|
|
4
|
+
/** Typed value → wire value expression, or undefined when it serializes as-is. */
|
|
5
|
+
export declare function serialization(schema: SchemaModel, expr: string, model: ApiModel, dateType?: DateType): string | undefined;
|
|
6
|
+
/** Render every named schema: classes (allOf flattened), native enums, union dispatchers. */
|
|
7
|
+
export declare function renderPhpModels(model: ApiModel, dateType?: DateType): string;
|
|
8
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/generators/php/models.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAMb,KAAK,WAAW,EAGjB,MAAM,2BAA2B,CAAC;AAYnC,6FAA6F;AAC7F,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,EAGf,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,SAAS,CA0BpB;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,QAAmB,GAC5B,MAAM,GAAG,SAAS,CA8BpB;AA+FD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAmB,GAAG,MAAM,CA2EtF"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// The `models` stage: named schemas as promoted-constructor classes with
|
|
2
|
+
// fromArray/toArray hydration, native backed enums, and match-based union
|
|
3
|
+
// dispatchers — plus the wire↔typed value expressions the methods reuse.
|
|
4
|
+
import { deref, discriminatorCases, enumValues, flattenAllOf, uniqueIdentifiers, unwrapNullable, } from '@redocly/client-generator';
|
|
5
|
+
import { PhpPrinter } from '@redocly/client-generator/printers/php';
|
|
6
|
+
import { className, PHP, phpString, propertyName } from "./naming.js";
|
|
7
|
+
import { classify, isDateFormat, phpNullable, phpType } from "./types.js";
|
|
8
|
+
/** True when the named schema renders as an `unmarshalX` union dispatcher. */
|
|
9
|
+
function isDiscriminatedUnion(name, model) {
|
|
10
|
+
const named = model.schemas.find((candidate) => candidate.name === name);
|
|
11
|
+
return named !== undefined && discriminatorCases(named.schema, model) !== undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Wire value → typed value expression, or undefined when the raw value is already right. */
|
|
14
|
+
export function hydration(schema, expr, model,
|
|
15
|
+
// Required on purpose: a defaulted `'string'` let a call site forget it, and the method
|
|
16
|
+
// then returned a raw string where its own signature declared `\DateTimeImmutable`.
|
|
17
|
+
dateType) {
|
|
18
|
+
const bare = unwrapNullable(schema);
|
|
19
|
+
if (dateType === 'Date' && bare.kind === 'scalar' && bare.scalar === 'string') {
|
|
20
|
+
if (isDateFormat(bare))
|
|
21
|
+
return `new \\DateTimeImmutable(${expr})`;
|
|
22
|
+
}
|
|
23
|
+
if (bare.kind === 'omit')
|
|
24
|
+
return hydration({ kind: 'ref', name: bare.base }, expr, model, dateType);
|
|
25
|
+
if (bare.kind === 'ref') {
|
|
26
|
+
const kind = classify(bare.name, model);
|
|
27
|
+
if (kind === 'class')
|
|
28
|
+
return `${className(bare.name)}::fromArray(${expr})`;
|
|
29
|
+
if (kind === 'enum')
|
|
30
|
+
return `${className(bare.name)}::from(${expr})`;
|
|
31
|
+
if (isDiscriminatedUnion(bare.name, model))
|
|
32
|
+
return `unmarshal${className(bare.name)}(${expr})`;
|
|
33
|
+
const target = deref(bare, model);
|
|
34
|
+
return target === undefined ? undefined : hydration(target, expr, model, dateType);
|
|
35
|
+
}
|
|
36
|
+
if (bare.kind === 'array') {
|
|
37
|
+
const item = hydration(bare.items, '$item', model, dateType);
|
|
38
|
+
if (item === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
return `array_map(static fn ($item) => ${item}, ${expr})`;
|
|
41
|
+
}
|
|
42
|
+
if (bare.kind === 'record') {
|
|
43
|
+
const item = hydration(bare.value, '$item', model, dateType);
|
|
44
|
+
if (item === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
return `array_map(static fn ($item) => ${item}, ${expr})`;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
/** Typed value → wire value expression, or undefined when it serializes as-is. */
|
|
51
|
+
export function serialization(schema, expr, model, dateType = 'string') {
|
|
52
|
+
const bare = unwrapNullable(schema);
|
|
53
|
+
if (dateType === 'Date' && bare.kind === 'scalar' && bare.scalar === 'string') {
|
|
54
|
+
// A date-only value must not gain a time component on the way out.
|
|
55
|
+
if (bare.metadata?.format === 'date')
|
|
56
|
+
return `${expr}->format('Y-m-d')`;
|
|
57
|
+
if (bare.metadata?.format === 'date-time') {
|
|
58
|
+
return `${expr}->format(\\DateTimeInterface::ATOM)`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (bare.kind === 'omit') {
|
|
62
|
+
return serialization({ kind: 'ref', name: bare.base }, expr, model, dateType);
|
|
63
|
+
}
|
|
64
|
+
if (bare.kind === 'ref') {
|
|
65
|
+
const kind = classify(bare.name, model);
|
|
66
|
+
if (kind === 'class')
|
|
67
|
+
return `${expr}->toArray()`;
|
|
68
|
+
if (kind === 'enum')
|
|
69
|
+
return `${expr}->value`;
|
|
70
|
+
// A union value may be a hydrated member instance or a raw (default-case) array.
|
|
71
|
+
if (isDiscriminatedUnion(bare.name, model)) {
|
|
72
|
+
return `is_object(${expr}) ? ${expr}->toArray() : ${expr}`;
|
|
73
|
+
}
|
|
74
|
+
const target = deref(bare, model);
|
|
75
|
+
return target === undefined ? undefined : serialization(target, expr, model, dateType);
|
|
76
|
+
}
|
|
77
|
+
if (bare.kind === 'array' || bare.kind === 'record') {
|
|
78
|
+
const inner = bare.kind === 'array' ? bare.items : bare.value;
|
|
79
|
+
const item = serialization(inner, '$item', model, dateType);
|
|
80
|
+
if (item === undefined)
|
|
81
|
+
return undefined;
|
|
82
|
+
return `array_map(static fn ($item) => ${item}, ${expr})`;
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
function writeClass(printer, name, properties, model, dateType, description) {
|
|
87
|
+
// PHP requires defaulted parameters after required ones.
|
|
88
|
+
const ordered = [
|
|
89
|
+
...properties.filter((property) => property.required),
|
|
90
|
+
...properties.filter((property) => !property.required),
|
|
91
|
+
];
|
|
92
|
+
printer.doc(className(name), description);
|
|
93
|
+
printer.line(`final class ${className(name)}`);
|
|
94
|
+
printer.block('{', () => {
|
|
95
|
+
printer.block('public function __construct(', () => {
|
|
96
|
+
for (const property of ordered) {
|
|
97
|
+
const type = phpType(property.schema, model, dateType);
|
|
98
|
+
if (property.required) {
|
|
99
|
+
printer.line(`public ${type} ${'$'}${propertyName(property.name)},`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const nullable = phpNullable(type);
|
|
103
|
+
printer.line(`public ${nullable} ${'$'}${propertyName(property.name)} = null,`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, ') {');
|
|
107
|
+
printer.line('}');
|
|
108
|
+
printer.blank();
|
|
109
|
+
printer.line('public static function fromArray(array $data): self');
|
|
110
|
+
printer.block('{', () => {
|
|
111
|
+
printer.block('return new self(', () => {
|
|
112
|
+
for (const property of ordered) {
|
|
113
|
+
const raw = `$data[${phpString(property.name)}]`;
|
|
114
|
+
const typed = hydration(property.schema, raw, model, dateType);
|
|
115
|
+
const php = propertyName(property.name);
|
|
116
|
+
if (property.required) {
|
|
117
|
+
printer.line(`${php}: ${typed ?? raw},`);
|
|
118
|
+
}
|
|
119
|
+
else if (typed === undefined) {
|
|
120
|
+
printer.line(`${php}: ${raw} ?? null,`);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
printer.line(`${php}: isset(${raw}) ? ${typed} : null,`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}, ');');
|
|
127
|
+
}, '}');
|
|
128
|
+
printer.blank();
|
|
129
|
+
printer.line('public function toArray(): array');
|
|
130
|
+
printer.block('{', () => {
|
|
131
|
+
printer.line('$data = [];');
|
|
132
|
+
for (const property of ordered) {
|
|
133
|
+
const value = `$this->${propertyName(property.name)}`;
|
|
134
|
+
const wire = serialization(property.schema, value, model, dateType) ?? value;
|
|
135
|
+
if (property.required) {
|
|
136
|
+
printer.line(`$data[${phpString(property.name)}] = ${wire};`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
printer.block(`if (${value} !== null) {`, () => {
|
|
140
|
+
printer.line(`$data[${phpString(property.name)}] = ${wire};`);
|
|
141
|
+
}, '}');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
printer.line('return $data;');
|
|
145
|
+
}, '}');
|
|
146
|
+
}, '}');
|
|
147
|
+
printer.blank();
|
|
148
|
+
}
|
|
149
|
+
/** Render every named schema: classes (allOf flattened), native enums, union dispatchers. */
|
|
150
|
+
export function renderPhpModels(model, dateType = 'string') {
|
|
151
|
+
const printer = new PhpPrinter();
|
|
152
|
+
for (const { name, schema } of model.schemas) {
|
|
153
|
+
const asEnum = enumValues(schema);
|
|
154
|
+
if (asEnum !== undefined && (asEnum.scalar === 'string' || asEnum.scalar === 'integer')) {
|
|
155
|
+
const backing = asEnum.scalar === 'string' ? 'string' : 'int';
|
|
156
|
+
printer.doc(className(name), schema.description);
|
|
157
|
+
printer.line(`enum ${className(name)}: ${backing}`);
|
|
158
|
+
printer.block('{', () => {
|
|
159
|
+
// `1.5` and `15` fold to one pascal name; PHP rejects a duplicate case.
|
|
160
|
+
const members = uniqueIdentifiers(asEnum.values.map((value) => String(value)), { style: 'pascal', reserved: PHP });
|
|
161
|
+
asEnum.values.forEach((value, index) => {
|
|
162
|
+
const literal = typeof value === 'string' ? phpString(value) : String(value);
|
|
163
|
+
printer.line(`case ${members[index]} = ${literal};`);
|
|
164
|
+
});
|
|
165
|
+
}, '}');
|
|
166
|
+
printer.blank();
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (schema.kind === 'object' || schema.kind === 'intersection') {
|
|
170
|
+
const flat = flattenAllOf(schema, model);
|
|
171
|
+
if (flat !== undefined) {
|
|
172
|
+
writeClass(printer, name, flat.properties, model, dateType, flat.description ?? schema.description);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const cases = discriminatorCases(schema, model);
|
|
177
|
+
if (cases !== undefined) {
|
|
178
|
+
const typeName = className(name);
|
|
179
|
+
const table = cases.cases
|
|
180
|
+
.map((entry) => `${entry.value} -> ${className(entry.schemaName)}`)
|
|
181
|
+
.join(', ');
|
|
182
|
+
printer.line(`/** ${typeName} is a discriminated union (${phpString(cases.property)}): ${table}. */`);
|
|
183
|
+
printer.line(`function unmarshal${typeName}(array $data): mixed`);
|
|
184
|
+
printer.block('{', () => {
|
|
185
|
+
printer.block(`return match ($data[${phpString(cases.property)}] ?? null) {`, () => {
|
|
186
|
+
for (const entry of cases.cases) {
|
|
187
|
+
printer.line(`${phpString(entry.value)} => ${className(entry.schemaName)}::fromArray($data),`);
|
|
188
|
+
}
|
|
189
|
+
printer.line('default => $data,');
|
|
190
|
+
}, '};');
|
|
191
|
+
}, '}');
|
|
192
|
+
printer.blank();
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
// Everything else (plain unions, aliases, records) has no PHP declaration;
|
|
196
|
+
// references resolve to the underlying type via phpType.
|
|
197
|
+
}
|
|
198
|
+
return printer.toString();
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/generators/php/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ApiModel, type OperationModel } from '@redocly/client-generator';
|
|
2
|
+
import { PhpPrinter } from '@redocly/client-generator/printers/php';
|
|
3
|
+
export declare const PHP: ReadonlySet<string>;
|
|
4
|
+
export declare const naming: PhpPrinter;
|
|
5
|
+
export declare function className(name: string): string;
|
|
6
|
+
export declare function propertyName(name: string): string;
|
|
7
|
+
/** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
|
|
8
|
+
export declare function phpString(value: string): string;
|
|
9
|
+
export declare function methodName(op: OperationModel): string;
|
|
10
|
+
/**
|
|
11
|
+
* The method name for every operation, unique across the client — PHP fatals on a
|
|
12
|
+
* redeclared method, and two operationIds may camel-case to one name (`get-user`,
|
|
13
|
+
* `getUser`). Keyed by the IR name, which the sanitizer already made unique.
|
|
14
|
+
*/
|
|
15
|
+
export declare function methodIdents(model: ApiModel): Map<string, string>;
|
|
16
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../../src/generators/php/naming.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,cAAc,EAGpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,eAAO,MAAM,GAAG,qBAAqB,CAAC;AAGtC,eAAO,MAAM,MAAM,YAAmB,CAAC;AAEvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// The `naming` stage: the shared printer/naming instance, the string escaper, and
|
|
2
|
+
// the collision-free class/property/method identifiers every other stage builds on.
|
|
3
|
+
import { identifierFor, RESERVED_WORDS, uniqueIdentifiers, } from '@redocly/client-generator';
|
|
4
|
+
import { PhpPrinter } from '@redocly/client-generator/printers/php';
|
|
5
|
+
export const PHP = RESERVED_WORDS.php;
|
|
6
|
+
// Naming and escaping delegate to the printer — one implementation, one policy.
|
|
7
|
+
export const naming = new PhpPrinter();
|
|
8
|
+
export function className(name) {
|
|
9
|
+
return naming.typeName(name);
|
|
10
|
+
}
|
|
11
|
+
export function propertyName(name) {
|
|
12
|
+
return naming.memberName(name);
|
|
13
|
+
}
|
|
14
|
+
/** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
|
|
15
|
+
export function phpString(value) {
|
|
16
|
+
return naming.string(value);
|
|
17
|
+
}
|
|
18
|
+
export function methodName(op) {
|
|
19
|
+
return identifierFor(op.name, { style: 'camel', reserved: PHP });
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The method name for every operation, unique across the client — PHP fatals on a
|
|
23
|
+
* redeclared method, and two operationIds may camel-case to one name (`get-user`,
|
|
24
|
+
* `getUser`). Keyed by the IR name, which the sanitizer already made unique.
|
|
25
|
+
*/
|
|
26
|
+
export function methodIdents(model) {
|
|
27
|
+
const operations = model.services.flatMap((service) => service.operations);
|
|
28
|
+
const names = uniqueIdentifiers(operations.map((op) => op.name), { style: 'camel', reserved: PHP });
|
|
29
|
+
return new Map(operations.map((op, index) => [op.name, names[index]]));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../src/generators/php/naming.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oFAAoF;AAEpF,OAAO,EAEL,aAAa,EAEb,cAAc,EACd,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,MAAM,CAAC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;AAEtC,gFAAgF;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAEvC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAkB;IAC3C,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,iBAAiB,CAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAClC,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ApiModel, type DateType, type OperationModel } from '@redocly/client-generator';
|
|
2
|
+
import type { PhpPrinter } from '@redocly/client-generator/printers/php';
|
|
3
|
+
type MethodArgs = {
|
|
4
|
+
pathArgs: Array<{
|
|
5
|
+
php: string;
|
|
6
|
+
wire: string;
|
|
7
|
+
type: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** `value` is the expression to send: a date object formats itself, everything else is the variable. */
|
|
10
|
+
queryArgs: Array<{
|
|
11
|
+
php: string;
|
|
12
|
+
wire: string;
|
|
13
|
+
type: string;
|
|
14
|
+
value: string;
|
|
15
|
+
}>;
|
|
16
|
+
signature: string[];
|
|
17
|
+
};
|
|
18
|
+
export declare function methodArgs(op: OperationModel, model: ApiModel, includeBody: boolean, dateType: DateType): MethodArgs;
|
|
19
|
+
export declare function writePhpMethod(printer: PhpPrinter, op: OperationModel, ident: string, model: ApiModel, dateType: DateType, envelope?: boolean): void;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/generators/php/operations.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAGb,KAAK,cAAc,EAGpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AASzE,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,wGAAwG;IACxG,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAQF,wBAAgB,UAAU,CACxB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAwCZ;AA+BD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,QAAQ,UAAQ,GACf,IAAI,CA8GN"}
|