openapi-typesafe 0.0.0 → 1.0.0-rc.1
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/LICENSE +22 -0
- package/README.md +71 -1
- package/bin/cli.js +4 -0
- package/dist/adapters/node-file-system/node-file-system.cjs +46 -0
- package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -0
- package/dist/adapters/node-file-system/node-file-system.mjs +40 -0
- package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -0
- package/dist/adapters/redocly-loader/alias-limit.cjs +16 -0
- package/dist/adapters/redocly-loader/alias-limit.cjs.map +1 -0
- package/dist/adapters/redocly-loader/alias-limit.mjs +14 -0
- package/dist/adapters/redocly-loader/alias-limit.mjs.map +1 -0
- package/dist/adapters/redocly-loader/allowed-hosts.cjs +42 -0
- package/dist/adapters/redocly-loader/allowed-hosts.cjs.map +1 -0
- package/dist/adapters/redocly-loader/allowed-hosts.mjs +40 -0
- package/dist/adapters/redocly-loader/allowed-hosts.mjs.map +1 -0
- package/dist/adapters/redocly-loader/bundled-ref-repair.cjs +53 -0
- package/dist/adapters/redocly-loader/bundled-ref-repair.cjs.map +1 -0
- package/dist/adapters/redocly-loader/bundled-ref-repair.mjs +51 -0
- package/dist/adapters/redocly-loader/bundled-ref-repair.mjs.map +1 -0
- package/dist/adapters/redocly-loader/malformed-refs.cjs +41 -0
- package/dist/adapters/redocly-loader/malformed-refs.cjs.map +1 -0
- package/dist/adapters/redocly-loader/malformed-refs.mjs +38 -0
- package/dist/adapters/redocly-loader/malformed-refs.mjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-config-source.cjs +61 -0
- package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-config-source.mjs +54 -0
- package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +179 -0
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +177 -0
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-access.cjs +107 -0
- package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-access.mjs +99 -0
- package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-holders.cjs +31 -0
- package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-holders.mjs +29 -0
- package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-fetch.cjs +60 -0
- package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-fetch.mjs +56 -0
- package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -0
- package/dist/adapters/redocly-loader/schema-load-errors.cjs +87 -0
- package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -0
- package/dist/adapters/redocly-loader/schema-load-errors.mjs +77 -0
- package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -0
- package/dist/adapters/redocly-loader/schema-source.cjs +104 -0
- package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -0
- package/dist/adapters/redocly-loader/schema-source.mjs +98 -0
- package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -0
- package/dist/adapters/redocly-loader/unsupported-keys.cjs +62 -0
- package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -0
- package/dist/adapters/redocly-loader/unsupported-keys.mjs +58 -0
- package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -0
- package/dist/adapters/terminal-logger/terminal-logger.cjs +67 -0
- package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -0
- package/dist/adapters/terminal-logger/terminal-logger.mjs +59 -0
- package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/footer-nodes.cjs +21 -0
- package/dist/adapters/type-ast-bridge/footer-nodes.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/footer-nodes.mjs +17 -0
- package/dist/adapters/type-ast-bridge/footer-nodes.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs +75 -0
- package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs +71 -0
- package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs +148 -0
- package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs +142 -0
- package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/lazy-node.cjs +23 -0
- package/dist/adapters/type-ast-bridge/lazy-node.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/lazy-node.mjs +21 -0
- package/dist/adapters/type-ast-bridge/lazy-node.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/load-typescript.cjs +57 -0
- package/dist/adapters/type-ast-bridge/load-typescript.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/load-typescript.mjs +51 -0
- package/dist/adapters/type-ast-bridge/load-typescript.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/print-typescript.cjs +21 -0
- package/dist/adapters/type-ast-bridge/print-typescript.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/print-typescript.mjs +19 -0
- package/dist/adapters/type-ast-bridge/print-typescript.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs +33 -0
- package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs +29 -0
- package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs.map +1 -0
- package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs +210 -0
- package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs.map +1 -0
- package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs +207 -0
- package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs.map +1 -0
- package/dist/api/ast-to-string.cjs +39 -0
- package/dist/api/ast-to-string.cjs.map +1 -0
- package/dist/api/ast-to-string.mjs +37 -0
- package/dist/api/ast-to-string.mjs.map +1 -0
- package/dist/api/comment-header.cjs +11 -0
- package/dist/api/comment-header.cjs.map +1 -0
- package/dist/api/comment-header.mjs +9 -0
- package/dist/api/comment-header.mjs.map +1 -0
- package/dist/api/default-ports.cjs +38 -0
- package/dist/api/default-ports.cjs.map +1 -0
- package/dist/api/default-ports.mjs +28 -0
- package/dist/api/default-ports.mjs.map +1 -0
- package/dist/api/discriminator-conflict-warnings.cjs +25 -0
- package/dist/api/discriminator-conflict-warnings.cjs.map +1 -0
- package/dist/api/discriminator-conflict-warnings.mjs +23 -0
- package/dist/api/discriminator-conflict-warnings.mjs.map +1 -0
- package/dist/api/discriminator-enum-names.cjs +19 -0
- package/dist/api/discriminator-enum-names.cjs.map +1 -0
- package/dist/api/discriminator-enum-names.mjs +17 -0
- package/dist/api/discriminator-enum-names.mjs.map +1 -0
- package/dist/api/discriminator-enum-parent.cjs +59 -0
- package/dist/api/discriminator-enum-parent.cjs.map +1 -0
- package/dist/api/discriminator-enum-parent.mjs +57 -0
- package/dist/api/discriminator-enum-parent.mjs.map +1 -0
- package/dist/api/discriminator-enum.cjs +69 -0
- package/dist/api/discriminator-enum.cjs.map +1 -0
- package/dist/api/discriminator-enum.mjs +66 -0
- package/dist/api/discriminator-enum.mjs.map +1 -0
- package/dist/api/discriminator-other-owners.cjs +67 -0
- package/dist/api/discriminator-other-owners.cjs.map +1 -0
- package/dist/api/discriminator-other-owners.mjs +64 -0
- package/dist/api/discriminator-other-owners.mjs.map +1 -0
- package/dist/api/discriminator-patch.cjs +88 -0
- package/dist/api/discriminator-patch.cjs.map +1 -0
- package/dist/api/discriminator-patch.mjs +82 -0
- package/dist/api/discriminator-patch.mjs.map +1 -0
- package/dist/api/discriminator-scan.cjs +153 -0
- package/dist/api/discriminator-scan.cjs.map +1 -0
- package/dist/api/discriminator-scan.mjs +150 -0
- package/dist/api/discriminator-scan.mjs.map +1 -0
- package/dist/api/document-declarations.cjs +28 -0
- package/dist/api/document-declarations.cjs.map +1 -0
- package/dist/api/document-declarations.mjs +26 -0
- package/dist/api/document-declarations.mjs.map +1 -0
- package/dist/api/document-refs.cjs +53 -0
- package/dist/api/document-refs.cjs.map +1 -0
- package/dist/api/document-refs.mjs +50 -0
- package/dist/api/document-refs.mjs.map +1 -0
- package/dist/api/document-run.cjs +122 -0
- package/dist/api/document-run.cjs.map +1 -0
- package/dist/api/document-run.mjs +116 -0
- package/dist/api/document-run.mjs.map +1 -0
- package/dist/api/enum-values-warnings.cjs +16 -0
- package/dist/api/enum-values-warnings.cjs.map +1 -0
- package/dist/api/enum-values-warnings.mjs +14 -0
- package/dist/api/enum-values-warnings.mjs.map +1 -0
- package/dist/api/footer-entry.cjs +18 -0
- package/dist/api/footer-entry.cjs.map +1 -0
- package/dist/api/footer-entry.mjs +15 -0
- package/dist/api/footer-entry.mjs.map +1 -0
- package/dist/api/footer-sink.cjs +53 -0
- package/dist/api/footer-sink.cjs.map +1 -0
- package/dist/api/footer-sink.mjs +51 -0
- package/dist/api/footer-sink.mjs.map +1 -0
- package/dist/api/legacy-callback-warning.cjs +25 -0
- package/dist/api/legacy-callback-warning.cjs.map +1 -0
- package/dist/api/legacy-callback-warning.mjs +22 -0
- package/dist/api/legacy-callback-warning.mjs.map +1 -0
- package/dist/api/legacy-ts-helpers.cjs +203 -0
- package/dist/api/legacy-ts-helpers.cjs.map +1 -0
- package/dist/api/legacy-ts-helpers.mjs +187 -0
- package/dist/api/legacy-ts-helpers.mjs.map +1 -0
- package/dist/api/legacy-utils.cjs +65 -0
- package/dist/api/legacy-utils.cjs.map +1 -0
- package/dist/api/legacy-utils.mjs +50 -0
- package/dist/api/legacy-utils.mjs.map +1 -0
- package/dist/api/openapi-ts.cjs +40 -0
- package/dist/api/openapi-ts.cjs.map +1 -0
- package/dist/api/openapi-ts.mjs +34 -0
- package/dist/api/openapi-ts.mjs.map +1 -0
- package/dist/api/path-template-warnings.cjs +21 -0
- package/dist/api/path-template-warnings.cjs.map +1 -0
- package/dist/api/path-template-warnings.mjs +19 -0
- package/dist/api/path-template-warnings.mjs.map +1 -0
- package/dist/api/schema-callbacks.cjs +140 -0
- package/dist/api/schema-callbacks.cjs.map +1 -0
- package/dist/api/schema-callbacks.mjs +136 -0
- package/dist/api/schema-callbacks.mjs.map +1 -0
- package/dist/api/string-to-ast.cjs +21 -0
- package/dist/api/string-to-ast.cjs.map +1 -0
- package/dist/api/string-to-ast.mjs +18 -0
- package/dist/api/string-to-ast.mjs.map +1 -0
- package/dist/api/transform-context.cjs +84 -0
- package/dist/api/transform-context.cjs.map +1 -0
- package/dist/api/transform-context.mjs +67 -0
- package/dist/api/transform-context.mjs.map +1 -0
- package/dist/api/transform-schema.cjs +80 -0
- package/dist/api/transform-schema.cjs.map +1 -0
- package/dist/api/transform-schema.mjs +75 -0
- package/dist/api/transform-schema.mjs.map +1 -0
- package/dist/api/type-helpers.cjs +85 -0
- package/dist/api/type-helpers.cjs.map +1 -0
- package/dist/api/type-helpers.mjs +66 -0
- package/dist/api/type-helpers.mjs.map +1 -0
- package/dist/api/unsupported-feature-warnings.cjs +22 -0
- package/dist/api/unsupported-feature-warnings.cjs.map +1 -0
- package/dist/api/unsupported-feature-warnings.mjs +20 -0
- package/dist/api/unsupported-feature-warnings.mjs.map +1 -0
- package/dist/application/print/comment-writer.cjs +95 -0
- package/dist/application/print/comment-writer.cjs.map +1 -0
- package/dist/application/print/comment-writer.mjs +93 -0
- package/dist/application/print/comment-writer.mjs.map +1 -0
- package/dist/application/print/declaration-printer.cjs +83 -0
- package/dist/application/print/declaration-printer.cjs.map +1 -0
- package/dist/application/print/declaration-printer.mjs +81 -0
- package/dist/application/print/declaration-printer.mjs.map +1 -0
- package/dist/application/print/literal-text.cjs +52 -0
- package/dist/application/print/literal-text.cjs.map +1 -0
- package/dist/application/print/literal-text.mjs +48 -0
- package/dist/application/print/literal-text.mjs.map +1 -0
- package/dist/application/print/print-nodes.cjs +38 -0
- package/dist/application/print/print-nodes.cjs.map +1 -0
- package/dist/application/print/print-nodes.mjs +36 -0
- package/dist/application/print/print-nodes.mjs.map +1 -0
- package/dist/application/print/print-options.cjs +6 -0
- package/dist/application/print/print-options.cjs.map +1 -0
- package/dist/application/print/print-options.mjs +4 -0
- package/dist/application/print/print-options.mjs.map +1 -0
- package/dist/application/print/text-writer.cjs +63 -0
- package/dist/application/print/text-writer.cjs.map +1 -0
- package/dist/application/print/text-writer.mjs +60 -0
- package/dist/application/print/text-writer.mjs.map +1 -0
- package/dist/application/print/type-printer.cjs +219 -0
- package/dist/application/print/type-printer.cjs.map +1 -0
- package/dist/application/print/type-printer.mjs +215 -0
- package/dist/application/print/type-printer.mjs.map +1 -0
- package/dist/application/stack-overflow.cjs +36 -0
- package/dist/application/stack-overflow.cjs.map +1 -0
- package/dist/application/stack-overflow.mjs +31 -0
- package/dist/application/stack-overflow.mjs.map +1 -0
- package/dist/application/transform/document/assignability.cjs +144 -0
- package/dist/application/transform/document/assignability.cjs.map +1 -0
- package/dist/application/transform/document/assignability.mjs +138 -0
- package/dist/application/transform/document/assignability.mjs.map +1 -0
- package/dist/application/transform/document/components.cjs +104 -0
- package/dist/application/transform/document/components.cjs.map +1 -0
- package/dist/application/transform/document/components.mjs +102 -0
- package/dist/application/transform/document/components.mjs.map +1 -0
- package/dist/application/transform/document/declared-types.cjs +66 -0
- package/dist/application/transform/document/declared-types.cjs.map +1 -0
- package/dist/application/transform/document/declared-types.mjs +63 -0
- package/dist/application/transform/document/declared-types.mjs.map +1 -0
- package/dist/application/transform/document/defs-root.cjs +18 -0
- package/dist/application/transform/document/defs-root.cjs.map +1 -0
- package/dist/application/transform/document/defs-root.mjs +16 -0
- package/dist/application/transform/document/defs-root.mjs.map +1 -0
- package/dist/application/transform/document/document-member.cjs +13 -0
- package/dist/application/transform/document/document-member.cjs.map +1 -0
- package/dist/application/transform/document/document-member.mjs +11 -0
- package/dist/application/transform/document/document-member.mjs.map +1 -0
- package/dist/application/transform/document/document.cjs +109 -0
- package/dist/application/transform/document/document.cjs.map +1 -0
- package/dist/application/transform/document/document.mjs +106 -0
- package/dist/application/transform/document/document.mjs.map +1 -0
- package/dist/application/transform/document/exploded-query.cjs +46 -0
- package/dist/application/transform/document/exploded-query.cjs.map +1 -0
- package/dist/application/transform/document/exploded-query.mjs +43 -0
- package/dist/application/transform/document/exploded-query.mjs.map +1 -0
- package/dist/application/transform/document/global-type-references.cjs +63 -0
- package/dist/application/transform/document/global-type-references.cjs.map +1 -0
- package/dist/application/transform/document/global-type-references.mjs +61 -0
- package/dist/application/transform/document/global-type-references.mjs.map +1 -0
- package/dist/application/transform/document/header.cjs +27 -0
- package/dist/application/transform/document/header.cjs.map +1 -0
- package/dist/application/transform/document/header.mjs +25 -0
- package/dist/application/transform/document/header.mjs.map +1 -0
- package/dist/application/transform/document/kept-deprecated.cjs +96 -0
- package/dist/application/transform/document/kept-deprecated.cjs.map +1 -0
- package/dist/application/transform/document/kept-deprecated.mjs +94 -0
- package/dist/application/transform/document/kept-deprecated.mjs.map +1 -0
- package/dist/application/transform/document/list-assignability.cjs +54 -0
- package/dist/application/transform/document/list-assignability.cjs.map +1 -0
- package/dist/application/transform/document/list-assignability.mjs +52 -0
- package/dist/application/transform/document/list-assignability.mjs.map +1 -0
- package/dist/application/transform/document/media-type.cjs +42 -0
- package/dist/application/transform/document/media-type.cjs.map +1 -0
- package/dist/application/transform/document/media-type.mjs +38 -0
- package/dist/application/transform/document/media-type.mjs.map +1 -0
- package/dist/application/transform/document/operation.cjs +45 -0
- package/dist/application/transform/document/operation.cjs.map +1 -0
- package/dist/application/transform/document/operation.mjs +43 -0
- package/dist/application/transform/document/operation.mjs.map +1 -0
- package/dist/application/transform/document/parameter.cjs +25 -0
- package/dist/application/transform/document/parameter.cjs.map +1 -0
- package/dist/application/transform/document/parameter.mjs +23 -0
- package/dist/application/transform/document/parameter.mjs.map +1 -0
- package/dist/application/transform/document/parameters.cjs +146 -0
- package/dist/application/transform/document/parameters.cjs.map +1 -0
- package/dist/application/transform/document/parameters.mjs +144 -0
- package/dist/application/transform/document/parameters.mjs.map +1 -0
- package/dist/application/transform/document/path-item.cjs +82 -0
- package/dist/application/transform/document/path-item.cjs.map +1 -0
- package/dist/application/transform/document/path-item.mjs +80 -0
- package/dist/application/transform/document/path-item.mjs.map +1 -0
- package/dist/application/transform/document/path-key-overlaps.cjs +107 -0
- package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -0
- package/dist/application/transform/document/path-key-overlaps.mjs +105 -0
- package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -0
- package/dist/application/transform/document/path-template-replace.cjs +48 -0
- package/dist/application/transform/document/path-template-replace.cjs.map +1 -0
- package/dist/application/transform/document/path-template-replace.mjs +45 -0
- package/dist/application/transform/document/path-template-replace.mjs.map +1 -0
- package/dist/application/transform/document/paths-enum.cjs +75 -0
- package/dist/application/transform/document/paths-enum.cjs.map +1 -0
- package/dist/application/transform/document/paths-enum.mjs +72 -0
- package/dist/application/transform/document/paths-enum.mjs.map +1 -0
- package/dist/application/transform/document/paths.cjs +153 -0
- package/dist/application/transform/document/paths.cjs.map +1 -0
- package/dist/application/transform/document/paths.mjs +149 -0
- package/dist/application/transform/document/paths.mjs.map +1 -0
- package/dist/application/transform/document/request-body.cjs +36 -0
- package/dist/application/transform/document/request-body.cjs.map +1 -0
- package/dist/application/transform/document/request-body.mjs +34 -0
- package/dist/application/transform/document/request-body.mjs.map +1 -0
- package/dist/application/transform/document/response.cjs +59 -0
- package/dist/application/transform/document/response.cjs.map +1 -0
- package/dist/application/transform/document/response.mjs +57 -0
- package/dist/application/transform/document/response.mjs.map +1 -0
- package/dist/application/transform/document/responses.cjs +23 -0
- package/dist/application/transform/document/responses.cjs.map +1 -0
- package/dist/application/transform/document/responses.mjs +21 -0
- package/dist/application/transform/document/responses.mjs.map +1 -0
- package/dist/application/transform/document/root-type-aliases.cjs +70 -0
- package/dist/application/transform/document/root-type-aliases.cjs.map +1 -0
- package/dist/application/transform/document/root-type-aliases.mjs +67 -0
- package/dist/application/transform/document/root-type-aliases.mjs.map +1 -0
- package/dist/application/transform/document/template-key-match.cjs +128 -0
- package/dist/application/transform/document/template-key-match.cjs.map +1 -0
- package/dist/application/transform/document/template-key-match.mjs +125 -0
- package/dist/application/transform/document/template-key-match.mjs.map +1 -0
- package/dist/application/transform/document/type-assignability.cjs +192 -0
- package/dist/application/transform/document/type-assignability.cjs.map +1 -0
- package/dist/application/transform/document/type-assignability.mjs +190 -0
- package/dist/application/transform/document/type-assignability.mjs.map +1 -0
- package/dist/application/transform/document/type-key.cjs +70 -0
- package/dist/application/transform/document/type-key.cjs.map +1 -0
- package/dist/application/transform/document/type-key.mjs +68 -0
- package/dist/application/transform/document/type-key.mjs.map +1 -0
- package/dist/application/transform/document/type-resolution.cjs +131 -0
- package/dist/application/transform/document/type-resolution.cjs.map +1 -0
- package/dist/application/transform/document/type-resolution.mjs +125 -0
- package/dist/application/transform/document/type-resolution.mjs.map +1 -0
- package/dist/application/transform/document/webhooks.cjs +19 -0
- package/dist/application/transform/document/webhooks.cjs.map +1 -0
- package/dist/application/transform/document/webhooks.mjs +17 -0
- package/dist/application/transform/document/webhooks.mjs.map +1 -0
- package/dist/application/transform/document-entries.cjs +17 -0
- package/dist/application/transform/document-entries.cjs.map +1 -0
- package/dist/application/transform/document-entries.mjs +14 -0
- package/dist/application/transform/document-entries.mjs.map +1 -0
- package/dist/application/transform/footer/document-footer.cjs +150 -0
- package/dist/application/transform/footer/document-footer.cjs.map +1 -0
- package/dist/application/transform/footer/document-footer.mjs +148 -0
- package/dist/application/transform/footer/document-footer.mjs.map +1 -0
- package/dist/application/transform/footer/enum-naming.cjs +138 -0
- package/dist/application/transform/footer/enum-naming.cjs.map +1 -0
- package/dist/application/transform/footer/enum-naming.mjs +131 -0
- package/dist/application/transform/footer/enum-naming.mjs.map +1 -0
- package/dist/application/transform/footer/enum-values-check.cjs +129 -0
- package/dist/application/transform/footer/enum-values-check.cjs.map +1 -0
- package/dist/application/transform/footer/enum-values-check.mjs +127 -0
- package/dist/application/transform/footer/enum-values-check.mjs.map +1 -0
- package/dist/application/transform/footer/evaluation.cjs +33 -0
- package/dist/application/transform/footer/evaluation.cjs.map +1 -0
- package/dist/application/transform/footer/evaluation.mjs +26 -0
- package/dist/application/transform/footer/evaluation.mjs.map +1 -0
- package/dist/application/transform/footer/shared-enum-names.cjs +60 -0
- package/dist/application/transform/footer/shared-enum-names.cjs.map +1 -0
- package/dist/application/transform/footer/shared-enum-names.mjs +57 -0
- package/dist/application/transform/footer/shared-enum-names.mjs.map +1 -0
- package/dist/application/transform/footer/type-evaluation.cjs +246 -0
- package/dist/application/transform/footer/type-evaluation.cjs.map +1 -0
- package/dist/application/transform/footer/type-evaluation.mjs +244 -0
- package/dist/application/transform/footer/type-evaluation.mjs.map +1 -0
- package/dist/application/transform/footer/type-rules.cjs +172 -0
- package/dist/application/transform/footer/type-rules.cjs.map +1 -0
- package/dist/application/transform/footer/type-rules.mjs +166 -0
- package/dist/application/transform/footer/type-rules.mjs.map +1 -0
- package/dist/application/transform/helper-types.cjs +68 -0
- package/dist/application/transform/helper-types.cjs.map +1 -0
- package/dist/application/transform/helper-types.mjs +65 -0
- package/dist/application/transform/helper-types.mjs.map +1 -0
- package/dist/application/transform/literal-type.cjs +36 -0
- package/dist/application/transform/literal-type.cjs.map +1 -0
- package/dist/application/transform/literal-type.mjs +34 -0
- package/dist/application/transform/literal-type.mjs.map +1 -0
- package/dist/application/transform/numbered-names.cjs +18 -0
- package/dist/application/transform/numbered-names.cjs.map +1 -0
- package/dist/application/transform/numbered-names.mjs +16 -0
- package/dist/application/transform/numbered-names.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/generated-location.cjs +138 -0
- package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/generated-location.mjs +136 -0
- package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/generated-shape.cjs +171 -0
- package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/generated-shape.mjs +162 -0
- package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/inline-cycles.cjs +44 -0
- package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/inline-cycles.mjs +42 -0
- package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/original-index.cjs +62 -0
- package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/original-index.mjs +60 -0
- package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/pointer-type.cjs +60 -0
- package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/pointer-type.mjs +57 -0
- package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/pointer-walk.cjs +66 -0
- package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/pointer-walk.mjs +56 -0
- package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/typed-walk.cjs +124 -0
- package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/typed-walk.mjs +122 -0
- package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -0
- package/dist/application/transform/ref-type.cjs +62 -0
- package/dist/application/transform/ref-type.cjs.map +1 -0
- package/dist/application/transform/ref-type.mjs +55 -0
- package/dist/application/transform/ref-type.mjs.map +1 -0
- package/dist/application/transform/schema/access-flags.cjs +38 -0
- package/dist/application/transform/schema/access-flags.cjs.map +1 -0
- package/dist/application/transform/schema/access-flags.mjs +36 -0
- package/dist/application/transform/schema/access-flags.mjs.map +1 -0
- package/dist/application/transform/schema/array-type.cjs +136 -0
- package/dist/application/transform/schema/array-type.cjs.map +1 -0
- package/dist/application/transform/schema/array-type.mjs +134 -0
- package/dist/application/transform/schema/array-type.mjs.map +1 -0
- package/dist/application/transform/schema/composition-type.cjs +142 -0
- package/dist/application/transform/schema/composition-type.cjs.map +1 -0
- package/dist/application/transform/schema/composition-type.mjs +140 -0
- package/dist/application/transform/schema/composition-type.mjs.map +1 -0
- package/dist/application/transform/schema/core-type.cjs +86 -0
- package/dist/application/transform/schema/core-type.cjs.map +1 -0
- package/dist/application/transform/schema/core-type.mjs +84 -0
- package/dist/application/transform/schema/core-type.mjs.map +1 -0
- package/dist/application/transform/schema/discriminated-union.cjs +30 -0
- package/dist/application/transform/schema/discriminated-union.cjs.map +1 -0
- package/dist/application/transform/schema/discriminated-union.mjs +27 -0
- package/dist/application/transform/schema/discriminated-union.mjs.map +1 -0
- package/dist/application/transform/schema/discriminator-property.cjs +22 -0
- package/dist/application/transform/schema/discriminator-property.cjs.map +1 -0
- package/dist/application/transform/schema/discriminator-property.mjs +20 -0
- package/dist/application/transform/schema/discriminator-property.mjs.map +1 -0
- package/dist/application/transform/schema/enum-rule.cjs +163 -0
- package/dist/application/transform/schema/enum-rule.cjs.map +1 -0
- package/dist/application/transform/schema/enum-rule.mjs +160 -0
- package/dist/application/transform/schema/enum-rule.mjs.map +1 -0
- package/dist/application/transform/schema/inherited-discriminator.cjs +29 -0
- package/dist/application/transform/schema/inherited-discriminator.cjs.map +1 -0
- package/dist/application/transform/schema/inherited-discriminator.mjs +26 -0
- package/dist/application/transform/schema/inherited-discriminator.mjs.map +1 -0
- package/dist/application/transform/schema/object-type.cjs +186 -0
- package/dist/application/transform/schema/object-type.cjs.map +1 -0
- package/dist/application/transform/schema/object-type.mjs +182 -0
- package/dist/application/transform/schema/object-type.mjs.map +1 -0
- package/dist/application/transform/schema/presence-members.cjs +59 -0
- package/dist/application/transform/schema/presence-members.cjs.map +1 -0
- package/dist/application/transform/schema/presence-members.mjs +57 -0
- package/dist/application/transform/schema/presence-members.mjs.map +1 -0
- package/dist/application/transform/schema/required-variants.cjs +45 -0
- package/dist/application/transform/schema/required-variants.cjs.map +1 -0
- package/dist/application/transform/schema/required-variants.mjs +42 -0
- package/dist/application/transform/schema/required-variants.mjs.map +1 -0
- package/dist/application/transform/schema/schema-transform.cjs +72 -0
- package/dist/application/transform/schema/schema-transform.cjs.map +1 -0
- package/dist/application/transform/schema/schema-transform.mjs +68 -0
- package/dist/application/transform/schema/schema-transform.mjs.map +1 -0
- package/dist/application/transform/schema/unevaluated-properties.cjs +61 -0
- package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -0
- package/dist/application/transform/schema/unevaluated-properties.mjs +59 -0
- package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -0
- package/dist/application/transform/schema-comment.cjs +130 -0
- package/dist/application/transform/schema-comment.cjs.map +1 -0
- package/dist/application/transform/schema-comment.mjs +125 -0
- package/dist/application/transform/schema-comment.mjs.map +1 -0
- package/dist/application/transform/shared-types.cjs +8 -0
- package/dist/application/transform/shared-types.cjs.map +1 -0
- package/dist/application/transform/shared-types.mjs +6 -0
- package/dist/application/transform/shared-types.mjs.map +1 -0
- package/dist/application/transform/type-combinators.cjs +49 -0
- package/dist/application/transform/type-combinators.cjs.map +1 -0
- package/dist/application/transform/type-combinators.mjs +42 -0
- package/dist/application/transform/type-combinators.mjs.map +1 -0
- package/dist/cli/cli-arguments.cjs +145 -0
- package/dist/cli/cli-arguments.cjs.map +1 -0
- package/dist/cli/cli-arguments.mjs +137 -0
- package/dist/cli/cli-arguments.mjs.map +1 -0
- package/dist/cli/cli-errors.cjs +81 -0
- package/dist/cli/cli-errors.cjs.map +1 -0
- package/dist/cli/cli-errors.mjs +77 -0
- package/dist/cli/cli-errors.mjs.map +1 -0
- package/dist/cli/cli-output.cjs +42 -0
- package/dist/cli/cli-output.cjs.map +1 -0
- package/dist/cli/cli-output.mjs +35 -0
- package/dist/cli/cli-output.mjs.map +1 -0
- package/dist/cli/docs-links.cjs +6 -0
- package/dist/cli/docs-links.cjs.map +1 -0
- package/dist/cli/docs-links.mjs +4 -0
- package/dist/cli/docs-links.mjs.map +1 -0
- package/dist/cli/fix-option.cjs +19 -0
- package/dist/cli/fix-option.cjs.map +1 -0
- package/dist/cli/fix-option.mjs +16 -0
- package/dist/cli/fix-option.mjs.map +1 -0
- package/dist/cli/help-text.cjs +44 -0
- package/dist/cli/help-text.cjs.map +1 -0
- package/dist/cli/help-text.mjs +42 -0
- package/dist/cli/help-text.mjs.map +1 -0
- package/dist/cli/main.cjs +67 -0
- package/dist/cli/main.cjs.map +1 -0
- package/dist/cli/main.d.cts +2 -0
- package/dist/cli/main.d.mts +2 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.mjs +59 -0
- package/dist/cli/main.mjs.map +1 -0
- package/dist/cli/redocly-apis.cjs +69 -0
- package/dist/cli/redocly-apis.cjs.map +1 -0
- package/dist/cli/redocly-apis.mjs +66 -0
- package/dist/cli/redocly-apis.mjs.map +1 -0
- package/dist/cli/ref-limits.cjs +14 -0
- package/dist/cli/ref-limits.cjs.map +1 -0
- package/dist/cli/ref-limits.mjs +12 -0
- package/dist/cli/ref-limits.mjs.map +1 -0
- package/dist/cli/run-cli.cjs +113 -0
- package/dist/cli/run-cli.cjs.map +1 -0
- package/dist/cli/run-cli.mjs +111 -0
- package/dist/cli/run-cli.mjs.map +1 -0
- package/dist/domain/assert-never.cjs +8 -0
- package/dist/domain/assert-never.cjs.map +1 -0
- package/dist/domain/assert-never.mjs +6 -0
- package/dist/domain/assert-never.mjs.map +1 -0
- package/dist/domain/errors.cjs +52 -0
- package/dist/domain/errors.cjs.map +1 -0
- package/dist/domain/errors.mjs +48 -0
- package/dist/domain/errors.mjs.map +1 -0
- package/dist/domain/ir/constructors.cjs +93 -0
- package/dist/domain/ir/constructors.cjs.map +1 -0
- package/dist/domain/ir/constructors.mjs +74 -0
- package/dist/domain/ir/constructors.mjs.map +1 -0
- package/dist/domain/ir/identifier-text.cjs +29 -0
- package/dist/domain/ir/identifier-text.cjs.map +1 -0
- package/dist/domain/ir/identifier-text.mjs +25 -0
- package/dist/domain/ir/identifier-text.mjs.map +1 -0
- package/dist/domain/ir/newer-identifier-ranges.cjs +109 -0
- package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -0
- package/dist/domain/ir/newer-identifier-ranges.mjs +106 -0
- package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -0
- package/dist/domain/ir/normalize.cjs +32 -0
- package/dist/domain/ir/normalize.cjs.map +1 -0
- package/dist/domain/ir/normalize.mjs +29 -0
- package/dist/domain/ir/normalize.mjs.map +1 -0
- package/dist/domain/ir/property-name.cjs +19 -0
- package/dist/domain/ir/property-name.cjs.map +1 -0
- package/dist/domain/ir/property-name.mjs +16 -0
- package/dist/domain/ir/property-name.mjs.map +1 -0
- package/dist/domain/ir/raw-text-escapes.cjs +25 -0
- package/dist/domain/ir/raw-text-escapes.cjs.map +1 -0
- package/dist/domain/ir/raw-text-escapes.mjs +22 -0
- package/dist/domain/ir/raw-text-escapes.mjs.map +1 -0
- package/dist/domain/openapi/admitted-values.cjs +75 -0
- package/dist/domain/openapi/admitted-values.cjs.map +1 -0
- package/dist/domain/openapi/admitted-values.mjs +72 -0
- package/dist/domain/openapi/admitted-values.mjs.map +1 -0
- package/dist/domain/openapi/alias-expansion.cjs +50 -0
- package/dist/domain/openapi/alias-expansion.cjs.map +1 -0
- package/dist/domain/openapi/alias-expansion.mjs +45 -0
- package/dist/domain/openapi/alias-expansion.mjs.map +1 -0
- package/dist/domain/openapi/binary-content.cjs +48 -0
- package/dist/domain/openapi/binary-content.cjs.map +1 -0
- package/dist/domain/openapi/binary-content.mjs +45 -0
- package/dist/domain/openapi/binary-content.mjs.map +1 -0
- package/dist/domain/openapi/components-object.cjs +29 -0
- package/dist/domain/openapi/components-object.cjs.map +1 -0
- package/dist/domain/openapi/components-object.mjs +24 -0
- package/dist/domain/openapi/components-object.mjs.map +1 -0
- package/dist/domain/openapi/discriminated-union.cjs +68 -0
- package/dist/domain/openapi/discriminated-union.cjs.map +1 -0
- package/dist/domain/openapi/discriminated-union.mjs +62 -0
- package/dist/domain/openapi/discriminated-union.mjs.map +1 -0
- package/dist/domain/openapi/discriminator-conflicts.cjs +143 -0
- package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -0
- package/dist/domain/openapi/discriminator-conflicts.mjs +141 -0
- package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -0
- package/dist/domain/openapi/json-pointer.cjs +31 -0
- package/dist/domain/openapi/json-pointer.cjs.map +1 -0
- package/dist/domain/openapi/json-pointer.mjs +27 -0
- package/dist/domain/openapi/json-pointer.mjs.map +1 -0
- package/dist/domain/openapi/media-type-object.cjs +14 -0
- package/dist/domain/openapi/media-type-object.cjs.map +1 -0
- package/dist/domain/openapi/media-type-object.mjs +11 -0
- package/dist/domain/openapi/media-type-object.mjs.map +1 -0
- package/dist/domain/openapi/parameter-object.cjs +13 -0
- package/dist/domain/openapi/parameter-object.cjs.map +1 -0
- package/dist/domain/openapi/parameter-object.mjs +10 -0
- package/dist/domain/openapi/parameter-object.mjs.map +1 -0
- package/dist/domain/openapi/path-item-object.cjs +35 -0
- package/dist/domain/openapi/path-item-object.cjs.map +1 -0
- package/dist/domain/openapi/path-item-object.mjs +30 -0
- package/dist/domain/openapi/path-item-object.mjs.map +1 -0
- package/dist/domain/openapi/path-templates.cjs +23 -0
- package/dist/domain/openapi/path-templates.cjs.map +1 -0
- package/dist/domain/openapi/path-templates.mjs +21 -0
- package/dist/domain/openapi/path-templates.mjs.map +1 -0
- package/dist/domain/openapi/unsupported-features.cjs +87 -0
- package/dist/domain/openapi/unsupported-features.cjs.map +1 -0
- package/dist/domain/openapi/unsupported-features.mjs +84 -0
- package/dist/domain/openapi/unsupported-features.mjs.map +1 -0
- package/dist/domain/output-fixes.cjs +101 -0
- package/dist/domain/output-fixes.cjs.map +1 -0
- package/dist/domain/output-fixes.mjs +94 -0
- package/dist/domain/output-fixes.mjs.map +1 -0
- package/dist/domain/warnings.cjs +15 -0
- package/dist/domain/warnings.cjs.map +1 -0
- package/dist/domain/warnings.mjs +12 -0
- package/dist/domain/warnings.mjs.map +1 -0
- package/dist/index.cjs +98 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +841 -0
- package/dist/index.d.mts +841 -0
- package/dist/index.d.ts +841 -0
- package/dist/index.mjs +27 -0
- package/dist/index.mjs.map +1 -0
- package/dist/transform/components-object.cjs +15 -0
- package/dist/transform/components-object.cjs.map +1 -0
- package/dist/transform/components-object.mjs +11 -0
- package/dist/transform/components-object.mjs.map +1 -0
- package/dist/transform/header-object.cjs +12 -0
- package/dist/transform/header-object.cjs.map +1 -0
- package/dist/transform/header-object.mjs +10 -0
- package/dist/transform/header-object.mjs.map +1 -0
- package/dist/transform/media-type-object.cjs +12 -0
- package/dist/transform/media-type-object.cjs.map +1 -0
- package/dist/transform/media-type-object.mjs +10 -0
- package/dist/transform/media-type-object.mjs.map +1 -0
- package/dist/transform/operation-object.cjs +26 -0
- package/dist/transform/operation-object.cjs.map +1 -0
- package/dist/transform/operation-object.mjs +21 -0
- package/dist/transform/operation-object.mjs.map +1 -0
- package/dist/transform/parameter-object.cjs +12 -0
- package/dist/transform/parameter-object.cjs.map +1 -0
- package/dist/transform/parameter-object.mjs +10 -0
- package/dist/transform/parameter-object.mjs.map +1 -0
- package/dist/transform/path-item-object.cjs +12 -0
- package/dist/transform/path-item-object.cjs.map +1 -0
- package/dist/transform/path-item-object.mjs +10 -0
- package/dist/transform/path-item-object.mjs.map +1 -0
- package/dist/transform/paths-object.cjs +11 -0
- package/dist/transform/paths-object.cjs.map +1 -0
- package/dist/transform/paths-object.mjs +9 -0
- package/dist/transform/paths-object.mjs.map +1 -0
- package/dist/transform/request-body-object.cjs +12 -0
- package/dist/transform/request-body-object.cjs.map +1 -0
- package/dist/transform/request-body-object.mjs +10 -0
- package/dist/transform/request-body-object.mjs.map +1 -0
- package/dist/transform/response-object.cjs +12 -0
- package/dist/transform/response-object.cjs.map +1 -0
- package/dist/transform/response-object.mjs +10 -0
- package/dist/transform/response-object.mjs.map +1 -0
- package/dist/transform/responses-object.cjs +12 -0
- package/dist/transform/responses-object.cjs.map +1 -0
- package/dist/transform/responses-object.mjs +10 -0
- package/dist/transform/responses-object.mjs.map +1 -0
- package/dist/transform/schema-object.cjs +21 -0
- package/dist/transform/schema-object.cjs.map +1 -0
- package/dist/transform/schema-object.mjs +16 -0
- package/dist/transform/schema-object.mjs.map +1 -0
- package/package.json +115 -4
- package/src/adapters/node-file-system/node-file-system.ts +44 -0
- package/src/adapters/redocly-loader/alias-limit.ts +20 -0
- package/src/adapters/redocly-loader/allowed-hosts.ts +62 -0
- package/src/adapters/redocly-loader/bundled-ref-repair.ts +65 -0
- package/src/adapters/redocly-loader/malformed-refs.ts +61 -0
- package/src/adapters/redocly-loader/redocly-config-source.ts +78 -0
- package/src/adapters/redocly-loader/redocly-schema-loader.ts +262 -0
- package/src/adapters/redocly-loader/ref-access.ts +146 -0
- package/src/adapters/redocly-loader/ref-holders.ts +43 -0
- package/src/adapters/redocly-loader/remote-fetch.ts +104 -0
- package/src/adapters/redocly-loader/schema-load-errors.ts +124 -0
- package/src/adapters/redocly-loader/schema-source.ts +151 -0
- package/src/adapters/redocly-loader/unsupported-keys.ts +102 -0
- package/src/adapters/terminal-logger/terminal-logger.ts +98 -0
- package/src/adapters/type-ast-bridge/footer-nodes.ts +38 -0
- package/src/adapters/type-ast-bridge/ir-declarations-to-typescript.ts +100 -0
- package/src/adapters/type-ast-bridge/ir-to-typescript.ts +223 -0
- package/src/adapters/type-ast-bridge/lazy-node.ts +24 -0
- package/src/adapters/type-ast-bridge/load-typescript.ts +84 -0
- package/src/adapters/type-ast-bridge/print-typescript.ts +33 -0
- package/src/adapters/type-ast-bridge/typescript-raw-text.ts +49 -0
- package/src/adapters/type-ast-bridge/typescript-to-ir.ts +294 -0
- package/src/adapters/type-ast-bridge/typescript-types.ts +8 -0
- package/src/api/ast-to-string.ts +59 -0
- package/src/api/comment-header.ts +7 -0
- package/src/api/default-ports.ts +44 -0
- package/src/api/discriminator-conflict-warnings.ts +43 -0
- package/src/api/discriminator-enum-names.ts +26 -0
- package/src/api/discriminator-enum-parent.ts +129 -0
- package/src/api/discriminator-enum.ts +115 -0
- package/src/api/discriminator-other-owners.ts +97 -0
- package/src/api/discriminator-patch.ts +147 -0
- package/src/api/discriminator-scan.ts +260 -0
- package/src/api/document-declarations.ts +41 -0
- package/src/api/document-refs.ts +71 -0
- package/src/api/document-run.ts +177 -0
- package/src/api/enum-values-warnings.ts +21 -0
- package/src/api/footer-entry.ts +23 -0
- package/src/api/footer-sink.ts +67 -0
- package/src/api/legacy-callback-warning.ts +29 -0
- package/src/api/legacy-ts-helpers.ts +311 -0
- package/src/api/legacy-utils.ts +118 -0
- package/src/api/openapi-ts.ts +62 -0
- package/src/api/path-template-warnings.ts +27 -0
- package/src/api/schema-callbacks.ts +211 -0
- package/src/api/string-to-ast.ts +27 -0
- package/src/api/transform-context.ts +93 -0
- package/src/api/transform-schema.ts +123 -0
- package/src/api/type-helpers.ts +130 -0
- package/src/api/unsupported-feature-warnings.ts +33 -0
- package/src/application/ports/file-system.ts +12 -0
- package/src/application/ports/logger.ts +16 -0
- package/src/application/ports/redocly-config-source.ts +20 -0
- package/src/application/ports/schema-loader.ts +32 -0
- package/src/application/print/comment-writer.ts +91 -0
- package/src/application/print/declaration-printer.ts +100 -0
- package/src/application/print/literal-text.ts +62 -0
- package/src/application/print/print-nodes.ts +62 -0
- package/src/application/print/print-options.ts +11 -0
- package/src/application/print/text-writer.ts +83 -0
- package/src/application/print/type-printer.ts +287 -0
- package/src/application/stack-overflow.ts +54 -0
- package/src/application/transform/document/assignability.ts +203 -0
- package/src/application/transform/document/components.ts +189 -0
- package/src/application/transform/document/declared-types.ts +93 -0
- package/src/application/transform/document/defs-root.ts +25 -0
- package/src/application/transform/document/document-member.ts +20 -0
- package/src/application/transform/document/document.ts +215 -0
- package/src/application/transform/document/exploded-query.ts +91 -0
- package/src/application/transform/document/global-type-references.ts +78 -0
- package/src/application/transform/document/header.ts +34 -0
- package/src/application/transform/document/kept-deprecated.ts +135 -0
- package/src/application/transform/document/list-assignability.ts +87 -0
- package/src/application/transform/document/media-type.ts +78 -0
- package/src/application/transform/document/operation.ts +64 -0
- package/src/application/transform/document/parameter.ts +45 -0
- package/src/application/transform/document/parameters.ts +265 -0
- package/src/application/transform/document/path-item.ts +168 -0
- package/src/application/transform/document/path-key-overlaps.ts +201 -0
- package/src/application/transform/document/path-template-replace.ts +90 -0
- package/src/application/transform/document/paths-enum.ts +127 -0
- package/src/application/transform/document/paths.ts +273 -0
- package/src/application/transform/document/request-body.ts +50 -0
- package/src/application/transform/document/response.ts +109 -0
- package/src/application/transform/document/responses.ts +29 -0
- package/src/application/transform/document/root-type-aliases.ts +107 -0
- package/src/application/transform/document/template-key-match.ts +183 -0
- package/src/application/transform/document/type-assignability.ts +268 -0
- package/src/application/transform/document/type-key.ts +80 -0
- package/src/application/transform/document/type-resolution.ts +163 -0
- package/src/application/transform/document/webhooks.ts +22 -0
- package/src/application/transform/document-entries.ts +28 -0
- package/src/application/transform/footer/document-footer.ts +212 -0
- package/src/application/transform/footer/enum-naming.ts +210 -0
- package/src/application/transform/footer/enum-values-check.ts +171 -0
- package/src/application/transform/footer/evaluation.ts +47 -0
- package/src/application/transform/footer/shared-enum-names.ts +86 -0
- package/src/application/transform/footer/type-evaluation.ts +294 -0
- package/src/application/transform/footer/type-rules.ts +269 -0
- package/src/application/transform/helper-types.ts +92 -0
- package/src/application/transform/literal-type.ts +54 -0
- package/src/application/transform/numbered-names.ts +20 -0
- package/src/application/transform/ref-pointer/generated-location.ts +211 -0
- package/src/application/transform/ref-pointer/generated-shape.ts +275 -0
- package/src/application/transform/ref-pointer/inline-cycles.ts +56 -0
- package/src/application/transform/ref-pointer/original-index.ts +95 -0
- package/src/application/transform/ref-pointer/pointer-type.ts +92 -0
- package/src/application/transform/ref-pointer/pointer-walk.ts +96 -0
- package/src/application/transform/ref-pointer/typed-walk.ts +192 -0
- package/src/application/transform/ref-type.ts +102 -0
- package/src/application/transform/schema/access-flags.ts +63 -0
- package/src/application/transform/schema/array-type.ts +213 -0
- package/src/application/transform/schema/composition-type.ts +255 -0
- package/src/application/transform/schema/core-type.ts +119 -0
- package/src/application/transform/schema/discriminated-union.ts +58 -0
- package/src/application/transform/schema/discriminator-property.ts +33 -0
- package/src/application/transform/schema/enum-rule.ts +280 -0
- package/src/application/transform/schema/inherited-discriminator.ts +54 -0
- package/src/application/transform/schema/object-type.ts +289 -0
- package/src/application/transform/schema/presence-members.ts +96 -0
- package/src/application/transform/schema/required-variants.ts +88 -0
- package/src/application/transform/schema/schema-context.ts +136 -0
- package/src/application/transform/schema/schema-rule.ts +29 -0
- package/src/application/transform/schema/schema-transform.ts +99 -0
- package/src/application/transform/schema/unevaluated-properties.ts +105 -0
- package/src/application/transform/schema-comment.ts +196 -0
- package/src/application/transform/shared-types.ts +9 -0
- package/src/application/transform/transform-context.ts +51 -0
- package/src/application/transform/type-combinators.ts +57 -0
- package/src/cli/cli-arguments.ts +208 -0
- package/src/cli/cli-dependencies.ts +47 -0
- package/src/cli/cli-errors.ts +127 -0
- package/src/cli/cli-output.ts +67 -0
- package/src/cli/docs-links.ts +6 -0
- package/src/cli/fix-option.ts +29 -0
- package/src/cli/help-text.ts +52 -0
- package/src/cli/main.ts +73 -0
- package/src/cli/redocly-apis.ts +95 -0
- package/src/cli/ref-limits.ts +16 -0
- package/src/cli/run-cli.ts +131 -0
- package/src/domain/assert-never.ts +8 -0
- package/src/domain/errors.ts +76 -0
- package/src/domain/ir/constructors.ts +142 -0
- package/src/domain/ir/identifier-text.ts +49 -0
- package/src/domain/ir/newer-identifier-ranges.ts +109 -0
- package/src/domain/ir/nodes.ts +225 -0
- package/src/domain/ir/normalize.ts +51 -0
- package/src/domain/ir/property-name.ts +28 -0
- package/src/domain/ir/raw-text-escapes.ts +37 -0
- package/src/domain/openapi/admitted-values.ts +113 -0
- package/src/domain/openapi/alias-expansion.ts +72 -0
- package/src/domain/openapi/binary-content.ts +74 -0
- package/src/domain/openapi/components-object.ts +52 -0
- package/src/domain/openapi/discriminated-union.ts +109 -0
- package/src/domain/openapi/discriminator-conflicts.ts +251 -0
- package/src/domain/openapi/document-object.ts +12 -0
- package/src/domain/openapi/header-object.ts +9 -0
- package/src/domain/openapi/json-pointer.ts +46 -0
- package/src/domain/openapi/media-type-object.ts +26 -0
- package/src/domain/openapi/operation-object.ts +13 -0
- package/src/domain/openapi/parameter-object.ts +34 -0
- package/src/domain/openapi/path-item-object.ts +70 -0
- package/src/domain/openapi/path-templates.ts +31 -0
- package/src/domain/openapi/request-body-object.ts +7 -0
- package/src/domain/openapi/response-object.ts +14 -0
- package/src/domain/openapi/schema-object.ts +61 -0
- package/src/domain/openapi/unsupported-features.ts +139 -0
- package/src/domain/output-fixes.ts +136 -0
- package/src/domain/warnings.ts +20 -0
- package/src/index.ts +67 -0
- package/src/transform/components-object.ts +27 -0
- package/src/transform/header-object.ts +19 -0
- package/src/transform/media-type-object.ts +19 -0
- package/src/transform/operation-object.ts +36 -0
- package/src/transform/parameter-object.ts +19 -0
- package/src/transform/parameters-array.ts +19 -0
- package/src/transform/path-item-object.ts +22 -0
- package/src/transform/paths-enum.ts +8 -0
- package/src/transform/paths-object.ts +15 -0
- package/src/transform/request-body-object.ts +19 -0
- package/src/transform/response-object.ts +19 -0
- package/src/transform/responses-object.ts +19 -0
- package/src/transform/schema-object.ts +36 -0
- package/src/transform/webhooks-object.ts +15 -0
- package/src/types/generator-options.ts +278 -0
- package/src/types/openapi-common.ts +100 -0
- package/src/types/openapi-document.ts +196 -0
- package/src/types/openapi-path-item.ts +130 -0
- package/src/types/openapi-request.ts +209 -0
- package/src/types/openapi-response.ts +81 -0
- package/src/types/openapi-schema.ts +169 -0
- package/src/types/openapi-security.ts +116 -0
- package/src/types.ts +12 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const redoclySchemaLoader = require('../adapters/redocly-loader/redocly-schema-loader.cjs');
|
|
6
|
+
const stackOverflow = require('../application/stack-overflow.cjs');
|
|
7
|
+
const defaultPorts = require('./default-ports.cjs');
|
|
8
|
+
const documentRun = require('./document-run.cjs');
|
|
9
|
+
const transformSchema = require('./transform-schema.cjs');
|
|
10
|
+
|
|
11
|
+
async function generateDeclarations(source, options, ports) {
|
|
12
|
+
const { schema, ctx } = await documentRun.createDocumentRun(source, options, ports);
|
|
13
|
+
const startedAt = ports.now();
|
|
14
|
+
const result = stackOverflow.withStackOverflowReported("transform", () => transformSchema.default(schema, ctx));
|
|
15
|
+
ports.logger.debug(
|
|
16
|
+
"Completed AST transformation for entire document",
|
|
17
|
+
"ts",
|
|
18
|
+
ports.now() - startedAt
|
|
19
|
+
);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
async function defaultGeneratorPorts(options) {
|
|
23
|
+
const logger = defaultPorts.defaultLogger(options.silent ?? false);
|
|
24
|
+
const redoc = options.redocly ?? await defaultPorts.defaultRedoclyConfig();
|
|
25
|
+
const loader = redoclySchemaLoader.createRedoclySchemaLoader({
|
|
26
|
+
redoc,
|
|
27
|
+
logger,
|
|
28
|
+
now: defaultPorts.monotonicNow,
|
|
29
|
+
remoteRefTimeoutMs: defaultPorts.REMOTE_REF_TIMEOUT_MS
|
|
30
|
+
});
|
|
31
|
+
return { loader, logger, redoc, now: defaultPorts.monotonicNow };
|
|
32
|
+
}
|
|
33
|
+
async function openapiTS(source, options = {}) {
|
|
34
|
+
return generateDeclarations(source, options, await defaultGeneratorPorts(options));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.default = openapiTS;
|
|
38
|
+
exports.defaultGeneratorPorts = defaultGeneratorPorts;
|
|
39
|
+
exports.generateDeclarations = generateDeclarations;
|
|
40
|
+
//# sourceMappingURL=openapi-ts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-ts.cjs","sources":["../../src/api/openapi-ts.ts"],"sourcesContent":["import { createRedoclySchemaLoader } from \"../adapters/redocly-loader/redocly-schema-loader.js\";\nimport { withStackOverflowReported } from \"../application/stack-overflow.js\";\nimport type { IrDeclaration } from \"../domain/ir/nodes.js\";\nimport type { GeneratorOptions, SchemaSource } from \"../types.js\";\nimport {\n defaultLogger,\n defaultRedoclyConfig,\n monotonicNow,\n REMOTE_REF_TIMEOUT_MS,\n} from \"./default-ports.js\";\nimport { createDocumentRun, type GeneratorPorts } from \"./document-run.js\";\nimport transformSchema from \"./transform-schema.js\";\n\n/**\n * The Node API's composition root (ENGINEERING_PLAN 4.5): `openapiTS` wires the default adapters;\n * `generateDeclarations` runs with any ports, which is how the CLI calls it.\n */\n\n/** Load, validate and bundle the source, then transform it into IR declarations. */\nexport async function generateDeclarations(\n source: SchemaSource,\n options: GeneratorOptions,\n ports: GeneratorPorts,\n): Promise<IrDeclaration[]> {\n const { schema, ctx } = await createDocumentRun(source, options, ports);\n const startedAt = ports.now();\n const result = withStackOverflowReported(\"transform\", () => transformSchema(schema, ctx));\n ports.logger.debug(\n \"Completed AST transformation for entire document\",\n \"ts\",\n ports.now() - startedAt,\n );\n return result;\n}\n\n/** The default ports: the terminal logger, the given or default Redocly config, Redocly loading. */\nexport async function defaultGeneratorPorts(options: GeneratorOptions): Promise<GeneratorPorts> {\n const logger = defaultLogger(options.silent ?? false);\n const redoc = options.redocly ?? (await defaultRedoclyConfig());\n const loader = createRedoclySchemaLoader({\n redoc,\n logger,\n now: monotonicNow,\n remoteRefTimeoutMs: REMOTE_REF_TIMEOUT_MS,\n });\n return { loader, logger, redoc, now: monotonicNow };\n}\n\n/**\n * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)\n * @param {string|URL|object|Readable} source OpenAPI schema source:\n * - YAML: string\n * - JSON: parsed object\n * - URL: URL to a YAML or JSON file (local or remote)\n * - Readable: Readable stream of YAML or JSON\n */\nexport default async function openapiTS(\n source: SchemaSource,\n options: GeneratorOptions = {},\n): Promise<IrDeclaration[]> {\n return generateDeclarations(source, options, await defaultGeneratorPorts(options));\n}\n"],"names":["createDocumentRun","withStackOverflowReported","transformSchema","defaultLogger","defaultRedoclyConfig","createRedoclySchemaLoader","monotonicNow","REMOTE_REF_TIMEOUT_MS"],"mappings":";;;;;;;;;;AAmBA,eAAsB,oBAAA,CACpB,MAAA,EACA,OAAA,EACA,KAAA,EAC0B;AAC1B,EAAA,MAAM,EAAE,QAAQ,GAAA,EAAI,GAAI,MAAMA,6BAAA,CAAkB,MAAA,EAAQ,SAAS,KAAK,CAAA;AACtE,EAAA,MAAM,SAAA,GAAY,MAAM,GAAA,EAAI;AAC5B,EAAA,MAAM,SAASC,uCAAA,CAA0B,WAAA,EAAa,MAAMC,uBAAA,CAAgB,MAAA,EAAQ,GAAG,CAAC,CAAA;AACxF,EAAA,KAAA,CAAM,MAAA,CAAO,KAAA;AAAA,IACX,kDAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,CAAM,KAAI,GAAI;AAAA,GAChB;AACA,EAAA,OAAO,MAAA;AACT;AAGA,eAAsB,sBAAsB,OAAA,EAAoD;AAC9F,EAAA,MAAM,MAAA,GAASC,0BAAA,CAAc,OAAA,CAAQ,MAAA,IAAU,KAAK,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,IAAY,MAAMC,iCAAA,EAAqB;AAC7D,EAAA,MAAM,SAASC,6CAAA,CAA0B;AAAA,IACvC,KAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA,EAAKC,yBAAA;AAAA,IACL,kBAAA,EAAoBC;AAAA,GACrB,CAAA;AACD,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,KAAKD,yBAAA,EAAa;AACpD;AAUA,eAA8B,SAAA,CAC5B,MAAA,EACA,OAAA,GAA4B,EAAC,EACH;AAC1B,EAAA,OAAO,qBAAqB,MAAA,EAAQ,OAAA,EAAS,MAAM,qBAAA,CAAsB,OAAO,CAAC,CAAA;AACnF;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createRedoclySchemaLoader } from '../adapters/redocly-loader/redocly-schema-loader.mjs';
|
|
2
|
+
import { withStackOverflowReported } from '../application/stack-overflow.mjs';
|
|
3
|
+
import { defaultLogger, defaultRedoclyConfig, monotonicNow, REMOTE_REF_TIMEOUT_MS } from './default-ports.mjs';
|
|
4
|
+
import { createDocumentRun } from './document-run.mjs';
|
|
5
|
+
import transformSchema from './transform-schema.mjs';
|
|
6
|
+
|
|
7
|
+
async function generateDeclarations(source, options, ports) {
|
|
8
|
+
const { schema, ctx } = await createDocumentRun(source, options, ports);
|
|
9
|
+
const startedAt = ports.now();
|
|
10
|
+
const result = withStackOverflowReported("transform", () => transformSchema(schema, ctx));
|
|
11
|
+
ports.logger.debug(
|
|
12
|
+
"Completed AST transformation for entire document",
|
|
13
|
+
"ts",
|
|
14
|
+
ports.now() - startedAt
|
|
15
|
+
);
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
async function defaultGeneratorPorts(options) {
|
|
19
|
+
const logger = defaultLogger(options.silent ?? false);
|
|
20
|
+
const redoc = options.redocly ?? await defaultRedoclyConfig();
|
|
21
|
+
const loader = createRedoclySchemaLoader({
|
|
22
|
+
redoc,
|
|
23
|
+
logger,
|
|
24
|
+
now: monotonicNow,
|
|
25
|
+
remoteRefTimeoutMs: REMOTE_REF_TIMEOUT_MS
|
|
26
|
+
});
|
|
27
|
+
return { loader, logger, redoc, now: monotonicNow };
|
|
28
|
+
}
|
|
29
|
+
async function openapiTS(source, options = {}) {
|
|
30
|
+
return generateDeclarations(source, options, await defaultGeneratorPorts(options));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { openapiTS as default, defaultGeneratorPorts, generateDeclarations };
|
|
34
|
+
//# sourceMappingURL=openapi-ts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-ts.mjs","sources":["../../src/api/openapi-ts.ts"],"sourcesContent":["import { createRedoclySchemaLoader } from \"../adapters/redocly-loader/redocly-schema-loader.js\";\nimport { withStackOverflowReported } from \"../application/stack-overflow.js\";\nimport type { IrDeclaration } from \"../domain/ir/nodes.js\";\nimport type { GeneratorOptions, SchemaSource } from \"../types.js\";\nimport {\n defaultLogger,\n defaultRedoclyConfig,\n monotonicNow,\n REMOTE_REF_TIMEOUT_MS,\n} from \"./default-ports.js\";\nimport { createDocumentRun, type GeneratorPorts } from \"./document-run.js\";\nimport transformSchema from \"./transform-schema.js\";\n\n/**\n * The Node API's composition root (ENGINEERING_PLAN 4.5): `openapiTS` wires the default adapters;\n * `generateDeclarations` runs with any ports, which is how the CLI calls it.\n */\n\n/** Load, validate and bundle the source, then transform it into IR declarations. */\nexport async function generateDeclarations(\n source: SchemaSource,\n options: GeneratorOptions,\n ports: GeneratorPorts,\n): Promise<IrDeclaration[]> {\n const { schema, ctx } = await createDocumentRun(source, options, ports);\n const startedAt = ports.now();\n const result = withStackOverflowReported(\"transform\", () => transformSchema(schema, ctx));\n ports.logger.debug(\n \"Completed AST transformation for entire document\",\n \"ts\",\n ports.now() - startedAt,\n );\n return result;\n}\n\n/** The default ports: the terminal logger, the given or default Redocly config, Redocly loading. */\nexport async function defaultGeneratorPorts(options: GeneratorOptions): Promise<GeneratorPorts> {\n const logger = defaultLogger(options.silent ?? false);\n const redoc = options.redocly ?? (await defaultRedoclyConfig());\n const loader = createRedoclySchemaLoader({\n redoc,\n logger,\n now: monotonicNow,\n remoteRefTimeoutMs: REMOTE_REF_TIMEOUT_MS,\n });\n return { loader, logger, redoc, now: monotonicNow };\n}\n\n/**\n * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)\n * @param {string|URL|object|Readable} source OpenAPI schema source:\n * - YAML: string\n * - JSON: parsed object\n * - URL: URL to a YAML or JSON file (local or remote)\n * - Readable: Readable stream of YAML or JSON\n */\nexport default async function openapiTS(\n source: SchemaSource,\n options: GeneratorOptions = {},\n): Promise<IrDeclaration[]> {\n return generateDeclarations(source, options, await defaultGeneratorPorts(options));\n}\n"],"names":[],"mappings":";;;;;;AAmBA,eAAsB,oBAAA,CACpB,MAAA,EACA,OAAA,EACA,KAAA,EAC0B;AAC1B,EAAA,MAAM,EAAE,QAAQ,GAAA,EAAI,GAAI,MAAM,iBAAA,CAAkB,MAAA,EAAQ,SAAS,KAAK,CAAA;AACtE,EAAA,MAAM,SAAA,GAAY,MAAM,GAAA,EAAI;AAC5B,EAAA,MAAM,SAAS,yBAAA,CAA0B,WAAA,EAAa,MAAM,eAAA,CAAgB,MAAA,EAAQ,GAAG,CAAC,CAAA;AACxF,EAAA,KAAA,CAAM,MAAA,CAAO,KAAA;AAAA,IACX,kDAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,CAAM,KAAI,GAAI;AAAA,GAChB;AACA,EAAA,OAAO,MAAA;AACT;AAGA,eAAsB,sBAAsB,OAAA,EAAoD;AAC9F,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,OAAA,CAAQ,MAAA,IAAU,KAAK,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,IAAY,MAAM,oBAAA,EAAqB;AAC7D,EAAA,MAAM,SAAS,yBAAA,CAA0B;AAAA,IACvC,KAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA,EAAK,YAAA;AAAA,IACL,kBAAA,EAAoB;AAAA,GACrB,CAAA;AACD,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,KAAK,YAAA,EAAa;AACpD;AAUA,eAA8B,SAAA,CAC5B,MAAA,EACA,OAAA,GAA4B,EAAC,EACH;AAC1B,EAAA,OAAO,qBAAqB,MAAA,EAAQ,OAAA,EAAS,MAAM,qBAAA,CAAsB,OAAO,CAAC,CAAA;AACnF;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const pathTemplates = require('../domain/openapi/path-templates.cjs');
|
|
4
|
+
const warnings = require('../domain/warnings.cjs');
|
|
5
|
+
|
|
6
|
+
const DOCS_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/cli.md#pathparamsastypes";
|
|
7
|
+
const SPEC_RULE = "OpenAPI does not allow this (Paths Object): templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical";
|
|
8
|
+
function quotedList(urls) {
|
|
9
|
+
const quoted = urls.map((url) => `"${url}"`);
|
|
10
|
+
const last = quoted.pop();
|
|
11
|
+
return quoted.length === 0 ? last ?? "" : `${quoted.join(", ")} and ${last}`;
|
|
12
|
+
}
|
|
13
|
+
function warnIdenticalPathTemplates(document, logger) {
|
|
14
|
+
for (const urls of pathTemplates.findIdenticalPathTemplates(document)) {
|
|
15
|
+
const message = `Paths ${quotedList(urls)} differ only in their parameter names. ${SPEC_RULE}`;
|
|
16
|
+
logger.warn(warnings.warningText(`${message}. See ${DOCS_URL}`, warnings.WARNING_CODES.PATH_TEMPLATES_IDENTICAL));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.warnIdenticalPathTemplates = warnIdenticalPathTemplates;
|
|
21
|
+
//# sourceMappingURL=path-template-warnings.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-template-warnings.cjs","sources":["../../src/api/path-template-warnings.ts"],"sourcesContent":["import type { Logger } from \"../application/ports/logger.js\";\nimport { findIdenticalPathTemplates } from \"../domain/openapi/path-templates.js\";\nimport { WARNING_CODES, warningText } from \"../domain/warnings.js\";\n\nconst DOCS_URL =\n \"https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/cli.md#pathparamsastypes\";\nconst SPEC_RULE =\n \"OpenAPI does not allow this (Paths Object): templated paths with the same hierarchy but \" +\n \"different templated names MUST NOT exist as they are identical\";\n\n/** `\"/a\"`, `\"/a\" and \"/b\"`, `\"/a\", \"/b\" and \"/c\"`. */\nfunction quotedList(urls: readonly string[]): string {\n const quoted = urls.map((url) => `\"${url}\"`);\n const last = quoted.pop();\n return quoted.length === 0 ? (last ?? \"\") : `${quoted.join(\", \")} and ${last}`;\n}\n\n/**\n * Warn once per group of paths that differ only in parameter names, which the spec forbids: a URL\n * cannot tell them apart, and `--path-params-as-types` gives them the same key type.\n */\nexport function warnIdenticalPathTemplates(document: unknown, logger: Logger): void {\n for (const urls of findIdenticalPathTemplates(document)) {\n const message = `Paths ${quotedList(urls)} differ only in their parameter names. ${SPEC_RULE}`;\n logger.warn(warningText(`${message}. See ${DOCS_URL}`, WARNING_CODES.PATH_TEMPLATES_IDENTICAL));\n }\n}\n"],"names":["findIdenticalPathTemplates","warningText","WARNING_CODES"],"mappings":";;;;;AAIA,MAAM,QAAA,GACJ,8FAAA;AACF,MAAM,SAAA,GACJ,wJAAA;AAIF,SAAS,WAAW,IAAA,EAAiC;AACnD,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,OAAO,GAAA,EAAI;AACxB,EAAA,OAAO,MAAA,CAAO,MAAA,KAAW,CAAA,GAAK,IAAA,IAAQ,EAAA,GAAM,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA;AAC9E;AAMO,SAAS,0BAAA,CAA2B,UAAmB,MAAA,EAAsB;AAClF,EAAA,KAAA,MAAW,IAAA,IAAQA,wCAAA,CAA2B,QAAQ,CAAA,EAAG;AACvD,IAAA,MAAM,UAAU,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAC,0CAA0C,SAAS,CAAA,CAAA;AAC5F,IAAA,MAAA,CAAO,IAAA,CAAKC,qBAAY,CAAA,EAAG,OAAO,SAAS,QAAQ,CAAA,CAAA,EAAIC,sBAAA,CAAc,wBAAwB,CAAC,CAAA;AAAA,EAChG;AACF;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { findIdenticalPathTemplates } from '../domain/openapi/path-templates.mjs';
|
|
2
|
+
import { warningText, WARNING_CODES } from '../domain/warnings.mjs';
|
|
3
|
+
|
|
4
|
+
const DOCS_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/cli.md#pathparamsastypes";
|
|
5
|
+
const SPEC_RULE = "OpenAPI does not allow this (Paths Object): templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical";
|
|
6
|
+
function quotedList(urls) {
|
|
7
|
+
const quoted = urls.map((url) => `"${url}"`);
|
|
8
|
+
const last = quoted.pop();
|
|
9
|
+
return quoted.length === 0 ? last ?? "" : `${quoted.join(", ")} and ${last}`;
|
|
10
|
+
}
|
|
11
|
+
function warnIdenticalPathTemplates(document, logger) {
|
|
12
|
+
for (const urls of findIdenticalPathTemplates(document)) {
|
|
13
|
+
const message = `Paths ${quotedList(urls)} differ only in their parameter names. ${SPEC_RULE}`;
|
|
14
|
+
logger.warn(warningText(`${message}. See ${DOCS_URL}`, WARNING_CODES.PATH_TEMPLATES_IDENTICAL));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { warnIdenticalPathTemplates };
|
|
19
|
+
//# sourceMappingURL=path-template-warnings.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-template-warnings.mjs","sources":["../../src/api/path-template-warnings.ts"],"sourcesContent":["import type { Logger } from \"../application/ports/logger.js\";\nimport { findIdenticalPathTemplates } from \"../domain/openapi/path-templates.js\";\nimport { WARNING_CODES, warningText } from \"../domain/warnings.js\";\n\nconst DOCS_URL =\n \"https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/cli.md#pathparamsastypes\";\nconst SPEC_RULE =\n \"OpenAPI does not allow this (Paths Object): templated paths with the same hierarchy but \" +\n \"different templated names MUST NOT exist as they are identical\";\n\n/** `\"/a\"`, `\"/a\" and \"/b\"`, `\"/a\", \"/b\" and \"/c\"`. */\nfunction quotedList(urls: readonly string[]): string {\n const quoted = urls.map((url) => `\"${url}\"`);\n const last = quoted.pop();\n return quoted.length === 0 ? (last ?? \"\") : `${quoted.join(\", \")} and ${last}`;\n}\n\n/**\n * Warn once per group of paths that differ only in parameter names, which the spec forbids: a URL\n * cannot tell them apart, and `--path-params-as-types` gives them the same key type.\n */\nexport function warnIdenticalPathTemplates(document: unknown, logger: Logger): void {\n for (const urls of findIdenticalPathTemplates(document)) {\n const message = `Paths ${quotedList(urls)} differ only in their parameter names. ${SPEC_RULE}`;\n logger.warn(warningText(`${message}. See ${DOCS_URL}`, WARNING_CODES.PATH_TEMPLATES_IDENTICAL));\n }\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,QAAA,GACJ,8FAAA;AACF,MAAM,SAAA,GACJ,wJAAA;AAIF,SAAS,WAAW,IAAA,EAAiC;AACnD,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,OAAO,GAAA,EAAI;AACxB,EAAA,OAAO,MAAA,CAAO,MAAA,KAAW,CAAA,GAAK,IAAA,IAAQ,EAAA,GAAM,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA;AAC9E;AAMO,SAAS,0BAAA,CAA2B,UAAmB,MAAA,EAAsB;AAClF,EAAA,KAAA,MAAW,IAAA,IAAQ,0BAAA,CAA2B,QAAQ,CAAA,EAAG;AACvD,IAAA,MAAM,UAAU,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAC,0CAA0C,SAAS,CAAA,CAAA;AAC5F,IAAA,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,EAAG,OAAO,SAAS,QAAQ,CAAA,CAAA,EAAI,aAAA,CAAc,wBAAwB,CAAC,CAAA;AAAA,EAChG;AACF;;"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const irToTypescript = require('../adapters/type-ast-bridge/ir-to-typescript.cjs');
|
|
4
|
+
const loadTypescript = require('../adapters/type-ast-bridge/load-typescript.cjs');
|
|
5
|
+
const typescriptToIr = require('../adapters/type-ast-bridge/typescript-to-ir.cjs');
|
|
6
|
+
const errors = require('../domain/errors.cjs');
|
|
7
|
+
const constructors = require('../domain/ir/constructors.cjs');
|
|
8
|
+
const legacyCallbackWarning = require('./legacy-callback-warning.cjs');
|
|
9
|
+
const typeHelpers = require('./type-helpers.cjs');
|
|
10
|
+
|
|
11
|
+
class UnreadablePropertyError extends errors.OpenAPITypesafeError {
|
|
12
|
+
constructor(path) {
|
|
13
|
+
super({
|
|
14
|
+
code: errors.ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
15
|
+
message: `transformProperty at ${path} returned a property with syntax the generator cannot read`,
|
|
16
|
+
details: { callback: "transformProperty", path }
|
|
17
|
+
});
|
|
18
|
+
this.name = "UnreadablePropertyError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class UnreadableTypeError extends errors.OpenAPITypesafeError {
|
|
22
|
+
constructor(callback, path) {
|
|
23
|
+
super({
|
|
24
|
+
code: errors.ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
25
|
+
message: `${callback} at ${path} returned a value that is not a TypeScript node`,
|
|
26
|
+
details: { callback, path }
|
|
27
|
+
});
|
|
28
|
+
this.name = "UnreadableTypeError";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function nodeOptions(ctx, location) {
|
|
32
|
+
return { ...location, ctx };
|
|
33
|
+
}
|
|
34
|
+
function schemaCallbacks(ctx) {
|
|
35
|
+
return ctx.irCallbacks ? irSchemaCallbacks(ctx) : legacySchemaCallbacks(ctx);
|
|
36
|
+
}
|
|
37
|
+
function fromCallbackType(type) {
|
|
38
|
+
return typeof type === "string" ? constructors.irRaw(type) : type;
|
|
39
|
+
}
|
|
40
|
+
function irCustomType(result) {
|
|
41
|
+
if (result === void 0 || result === null) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (typeof result === "object" && "schema" in result) {
|
|
45
|
+
return { type: fromCallbackType(result.schema), isOptional: Boolean(result.questionToken) };
|
|
46
|
+
}
|
|
47
|
+
return { type: fromCallbackType(result), isOptional: false };
|
|
48
|
+
}
|
|
49
|
+
function irSchemaCallbacks(ctx) {
|
|
50
|
+
const transform = ctx.transform;
|
|
51
|
+
const postTransform = ctx.postTransform;
|
|
52
|
+
const transformProperty = ctx.transformProperty;
|
|
53
|
+
return {
|
|
54
|
+
transform: (schema, location) => transform ? irCustomType(transform(schema, nodeOptions(ctx, location))) : null,
|
|
55
|
+
postTransform(type, location) {
|
|
56
|
+
const result = postTransform?.(type, nodeOptions(ctx, location));
|
|
57
|
+
return result === void 0 ? null : fromCallbackType(result);
|
|
58
|
+
},
|
|
59
|
+
transformProperty: (property, schema, location) => transformProperty?.(property, schema, nodeOptions(ctx, location)) ?? null
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function readResultType(callback, result, location) {
|
|
63
|
+
const kind = result.kind;
|
|
64
|
+
if (typeof kind !== "string" && typeof kind !== "number") {
|
|
65
|
+
throw new UnreadableTypeError(callback, location.path);
|
|
66
|
+
}
|
|
67
|
+
return typeHelpers.toIrType(result);
|
|
68
|
+
}
|
|
69
|
+
function legacyResultType(ctx, type, location) {
|
|
70
|
+
const result = readResultType("transform", type, location);
|
|
71
|
+
if (typeof type.kind !== "string") {
|
|
72
|
+
legacyCallbackWarning.warnLegacyCallback(ctx, "transform");
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
function legacyCustomType(ctx, result, location) {
|
|
77
|
+
if (!result || typeof result !== "object") {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
if ("schema" in result) {
|
|
81
|
+
return {
|
|
82
|
+
type: legacyResultType(ctx, result.schema, location),
|
|
83
|
+
isOptional: Boolean(result.questionToken)
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return { type: legacyResultType(ctx, result, location), isOptional: false };
|
|
87
|
+
}
|
|
88
|
+
function legacySchemaCallbacks(ctx) {
|
|
89
|
+
const transform = ctx.transform;
|
|
90
|
+
const postTransform = ctx.postTransform;
|
|
91
|
+
return {
|
|
92
|
+
transform: (schema, location) => typeof transform === "function" ? legacyCustomType(
|
|
93
|
+
ctx,
|
|
94
|
+
transform(schema, nodeOptions(ctx, location)),
|
|
95
|
+
location
|
|
96
|
+
) : null,
|
|
97
|
+
postTransform(type, location) {
|
|
98
|
+
if (typeof postTransform !== "function") {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
legacyCallbackWarning.warnLegacyCallback(ctx, "postTransform");
|
|
102
|
+
const result = postTransform(irToTypescript.toTypeNode(loadTypescript.loadTypeScript(), type), nodeOptions(ctx, location));
|
|
103
|
+
return result ? readResultType("postTransform", result, location) : null;
|
|
104
|
+
},
|
|
105
|
+
transformProperty: (property, schema, location) => legacyTransformProperty(ctx, property, schema, location)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function isIrProperty(property) {
|
|
109
|
+
return typeof property.kind === "string";
|
|
110
|
+
}
|
|
111
|
+
function legacyTransformProperty(ctx, property, schema, location) {
|
|
112
|
+
const transformProperty = ctx.transformProperty;
|
|
113
|
+
if (typeof transformProperty !== "function") {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
legacyCallbackWarning.warnLegacyCallback(ctx, "transformProperty");
|
|
117
|
+
const ts = loadTypescript.loadTypeScript();
|
|
118
|
+
const options = nodeOptions(ctx, location);
|
|
119
|
+
const result = transformProperty(
|
|
120
|
+
irToTypescript.toPropertySignature(ts, property),
|
|
121
|
+
schema,
|
|
122
|
+
options
|
|
123
|
+
);
|
|
124
|
+
if (!result) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
if (isIrProperty(result)) {
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
const converted = ts.isPropertySignature(result) ? typescriptToIr.fromPropertySignature(ts, result) : null;
|
|
131
|
+
if (converted === null) {
|
|
132
|
+
throw new UnreadablePropertyError(location.path);
|
|
133
|
+
}
|
|
134
|
+
return converted;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
exports.UnreadablePropertyError = UnreadablePropertyError;
|
|
138
|
+
exports.UnreadableTypeError = UnreadableTypeError;
|
|
139
|
+
exports.schemaCallbacks = schemaCallbacks;
|
|
140
|
+
//# sourceMappingURL=schema-callbacks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-callbacks.cjs","sources":["../../src/api/schema-callbacks.ts"],"sourcesContent":["import { toPropertySignature, toTypeNode } from \"../adapters/type-ast-bridge/ir-to-typescript.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport { fromPropertySignature } from \"../adapters/type-ast-bridge/typescript-to-ir.js\";\nimport type { ts } from \"../adapters/type-ast-bridge/typescript-types.js\";\nimport type {\n CustomType,\n SchemaCallbacks,\n SchemaLocation,\n} from \"../application/transform/schema/schema-context.js\";\nimport { ERROR_CODES, OpenAPITypesafeError } from \"../domain/errors.js\";\nimport { irRaw } from \"../domain/ir/constructors.js\";\nimport type { IrPropertySignature, IrType } from \"../domain/ir/nodes.js\";\nimport type {\n GlobalContext,\n IrCallbackType,\n IrPostTransform,\n IrTransform,\n IrTransformProperty,\n LegacyCallbackOptions,\n SchemaObject,\n TransformNodeOptions,\n} from \"../types.js\";\nimport { warnLegacyCallback } from \"./legacy-callback-warning.js\";\nimport { toIrType } from \"./type-helpers.js\";\n\n/**\n * The user's schema callbacks as the transformers call them (ENGINEERING_PLAN 6.3, ADR-004).\n * With `irCallbacks: true` they receive and return IR; otherwise they receive TypeScript nodes and\n * their results are read by the bridge.\n */\n\nexport class UnreadablePropertyError extends OpenAPITypesafeError {\n constructor(path: string | undefined) {\n super({\n code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,\n message:\n `transformProperty at ${path} returned a property ` +\n \"with syntax the generator cannot read\",\n details: { callback: \"transformProperty\", path },\n });\n this.name = \"UnreadablePropertyError\";\n }\n}\n\n/** A `transform` or `postTransform` result that is neither IR nor a TypeScript node. */\nexport class UnreadableTypeError extends OpenAPITypesafeError {\n constructor(callback: \"transform\" | \"postTransform\", path: string | undefined) {\n super({\n code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,\n message: `${callback} at ${path} returned a value that is not a TypeScript node`,\n details: { callback, path },\n });\n this.name = \"UnreadableTypeError\";\n }\n}\n\nfunction nodeOptions(ctx: GlobalContext, location: SchemaLocation): TransformNodeOptions {\n return { ...location, ctx } as TransformNodeOptions;\n}\n\n/** The callbacks of the run: IR callbacks when the run asks for them, legacy ones otherwise. */\nexport function schemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n return ctx.irCallbacks ? irSchemaCallbacks(ctx) : legacySchemaCallbacks(ctx);\n}\n\n/** An IR callback type; text is a raw type, printed as written. */\nfunction fromCallbackType(type: IrCallbackType): IrType {\n return typeof type === \"string\" ? irRaw(type) : type;\n}\n\nfunction irCustomType(result: ReturnType<IrTransform>): CustomType | null {\n if (result === undefined || result === null) {\n return null;\n }\n if (typeof result === \"object\" && \"schema\" in result) {\n return { type: fromCallbackType(result.schema), isOptional: Boolean(result.questionToken) };\n }\n return { type: fromCallbackType(result), isOptional: false };\n}\n\n/**\n * The context fields hold either callback form; `irCallbacks` says which one, so the casts below\n * only name the form the user declared with `OpenAPITSIrOptions`.\n */\nfunction irSchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n const transform = ctx.transform as IrTransform | undefined;\n const postTransform = ctx.postTransform as IrPostTransform | undefined;\n const transformProperty = ctx.transformProperty as IrTransformProperty | undefined;\n return {\n transform: (schema, location) =>\n transform\n ? irCustomType(transform(schema as SchemaObject, nodeOptions(ctx, location)))\n : null,\n postTransform(type, location) {\n const result = postTransform?.(type, nodeOptions(ctx, location));\n return result === undefined ? null : fromCallbackType(result);\n },\n transformProperty: (property, schema, location) =>\n transformProperty?.(property, schema as SchemaObject, nodeOptions(ctx, location)) ?? null,\n };\n}\n\ntype LegacyTransform = NonNullable<LegacyCallbackOptions[\"transform\"]>;\ntype LegacyPostTransform = NonNullable<LegacyCallbackOptions[\"postTransform\"]>;\ntype LegacyTransformProperty = NonNullable<LegacyCallbackOptions[\"transformProperty\"]>;\n\n/** A legacy result type: IR from the helpers as it is; a TypeScript node through the bridge. */\n/**\n * IR nodes have a string `kind`, TypeScript nodes a number. JavaScript callers can return any\n * value, and anything else would crash the TypeScript printer later.\n */\nfunction readResultType(\n callback: \"transform\" | \"postTransform\",\n result: unknown,\n location: SchemaLocation,\n): IrType {\n const kind = (result as { kind?: unknown }).kind;\n if (typeof kind !== \"string\" && typeof kind !== \"number\") {\n throw new UnreadableTypeError(callback, location.path);\n }\n return toIrType(result as IrType | ts.TypeNode);\n}\n\nfunction legacyResultType(ctx: GlobalContext, type: unknown, location: SchemaLocation): IrType {\n const result = readResultType(\"transform\", type, location);\n if (typeof (type as { kind: unknown }).kind !== \"string\") {\n warnLegacyCallback(ctx, \"transform\");\n }\n return result;\n}\n\nfunction legacyCustomType(\n ctx: GlobalContext,\n result: ReturnType<LegacyTransform>,\n location: SchemaLocation,\n): CustomType | null {\n if (!result || typeof result !== \"object\") {\n return null;\n }\n if (\"schema\" in result) {\n return {\n type: legacyResultType(ctx, result.schema, location),\n isOptional: Boolean(result.questionToken),\n };\n }\n return { type: legacyResultType(ctx, result, location), isOptional: false };\n}\n\n/** See `irSchemaCallbacks` for the casts; `typeof` checks keep the original's tolerance. */\nfunction legacySchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n const transform = ctx.transform as LegacyTransform | undefined;\n const postTransform = ctx.postTransform as LegacyPostTransform | undefined;\n return {\n transform: (schema, location) =>\n typeof transform === \"function\"\n ? legacyCustomType(\n ctx,\n transform(schema as SchemaObject, nodeOptions(ctx, location)),\n location,\n )\n : null,\n postTransform(type, location) {\n if (typeof postTransform !== \"function\") {\n return null;\n }\n warnLegacyCallback(ctx, \"postTransform\");\n const result = postTransform(toTypeNode(loadTypeScript(), type), nodeOptions(ctx, location));\n return result ? readResultType(\"postTransform\", result, location) : null;\n },\n transformProperty: (property, schema, location) =>\n legacyTransformProperty(ctx, property, schema, location),\n };\n}\n\nfunction isIrProperty(\n property: IrPropertySignature | ts.PropertySignature,\n): property is IrPropertySignature {\n return typeof property.kind === \"string\";\n}\n\nfunction legacyTransformProperty(\n ctx: GlobalContext,\n property: IrPropertySignature,\n schema: unknown,\n location: SchemaLocation,\n): IrPropertySignature | null {\n const transformProperty = ctx.transformProperty as LegacyTransformProperty | undefined;\n if (typeof transformProperty !== \"function\") {\n return null;\n }\n warnLegacyCallback(ctx, \"transformProperty\");\n const ts = loadTypeScript();\n const options = nodeOptions(ctx, location);\n const result = transformProperty(\n toPropertySignature(ts, property),\n schema as SchemaObject,\n options,\n );\n if (!result) {\n return null;\n }\n if (isIrProperty(result)) {\n return result;\n }\n // JavaScript callers can return any value, so check the node kind before reading it.\n const converted = ts.isPropertySignature(result) ? fromPropertySignature(ts, result) : null;\n if (converted === null) {\n throw new UnreadablePropertyError(location.path);\n }\n return converted;\n}\n"],"names":["OpenAPITypesafeError","ERROR_CODES","irRaw","toIrType","warnLegacyCallback","toTypeNode","loadTypeScript","toPropertySignature","fromPropertySignature"],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { toTypeNode, toPropertySignature } from '../adapters/type-ast-bridge/ir-to-typescript.mjs';
|
|
2
|
+
import { loadTypeScript } from '../adapters/type-ast-bridge/load-typescript.mjs';
|
|
3
|
+
import { fromPropertySignature } from '../adapters/type-ast-bridge/typescript-to-ir.mjs';
|
|
4
|
+
import { OpenAPITypesafeError, ERROR_CODES } from '../domain/errors.mjs';
|
|
5
|
+
import { irRaw } from '../domain/ir/constructors.mjs';
|
|
6
|
+
import { warnLegacyCallback } from './legacy-callback-warning.mjs';
|
|
7
|
+
import { toIrType } from './type-helpers.mjs';
|
|
8
|
+
|
|
9
|
+
class UnreadablePropertyError extends OpenAPITypesafeError {
|
|
10
|
+
constructor(path) {
|
|
11
|
+
super({
|
|
12
|
+
code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
13
|
+
message: `transformProperty at ${path} returned a property with syntax the generator cannot read`,
|
|
14
|
+
details: { callback: "transformProperty", path }
|
|
15
|
+
});
|
|
16
|
+
this.name = "UnreadablePropertyError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
class UnreadableTypeError extends OpenAPITypesafeError {
|
|
20
|
+
constructor(callback, path) {
|
|
21
|
+
super({
|
|
22
|
+
code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
23
|
+
message: `${callback} at ${path} returned a value that is not a TypeScript node`,
|
|
24
|
+
details: { callback, path }
|
|
25
|
+
});
|
|
26
|
+
this.name = "UnreadableTypeError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function nodeOptions(ctx, location) {
|
|
30
|
+
return { ...location, ctx };
|
|
31
|
+
}
|
|
32
|
+
function schemaCallbacks(ctx) {
|
|
33
|
+
return ctx.irCallbacks ? irSchemaCallbacks(ctx) : legacySchemaCallbacks(ctx);
|
|
34
|
+
}
|
|
35
|
+
function fromCallbackType(type) {
|
|
36
|
+
return typeof type === "string" ? irRaw(type) : type;
|
|
37
|
+
}
|
|
38
|
+
function irCustomType(result) {
|
|
39
|
+
if (result === void 0 || result === null) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
if (typeof result === "object" && "schema" in result) {
|
|
43
|
+
return { type: fromCallbackType(result.schema), isOptional: Boolean(result.questionToken) };
|
|
44
|
+
}
|
|
45
|
+
return { type: fromCallbackType(result), isOptional: false };
|
|
46
|
+
}
|
|
47
|
+
function irSchemaCallbacks(ctx) {
|
|
48
|
+
const transform = ctx.transform;
|
|
49
|
+
const postTransform = ctx.postTransform;
|
|
50
|
+
const transformProperty = ctx.transformProperty;
|
|
51
|
+
return {
|
|
52
|
+
transform: (schema, location) => transform ? irCustomType(transform(schema, nodeOptions(ctx, location))) : null,
|
|
53
|
+
postTransform(type, location) {
|
|
54
|
+
const result = postTransform?.(type, nodeOptions(ctx, location));
|
|
55
|
+
return result === void 0 ? null : fromCallbackType(result);
|
|
56
|
+
},
|
|
57
|
+
transformProperty: (property, schema, location) => transformProperty?.(property, schema, nodeOptions(ctx, location)) ?? null
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function readResultType(callback, result, location) {
|
|
61
|
+
const kind = result.kind;
|
|
62
|
+
if (typeof kind !== "string" && typeof kind !== "number") {
|
|
63
|
+
throw new UnreadableTypeError(callback, location.path);
|
|
64
|
+
}
|
|
65
|
+
return toIrType(result);
|
|
66
|
+
}
|
|
67
|
+
function legacyResultType(ctx, type, location) {
|
|
68
|
+
const result = readResultType("transform", type, location);
|
|
69
|
+
if (typeof type.kind !== "string") {
|
|
70
|
+
warnLegacyCallback(ctx, "transform");
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
function legacyCustomType(ctx, result, location) {
|
|
75
|
+
if (!result || typeof result !== "object") {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if ("schema" in result) {
|
|
79
|
+
return {
|
|
80
|
+
type: legacyResultType(ctx, result.schema, location),
|
|
81
|
+
isOptional: Boolean(result.questionToken)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return { type: legacyResultType(ctx, result, location), isOptional: false };
|
|
85
|
+
}
|
|
86
|
+
function legacySchemaCallbacks(ctx) {
|
|
87
|
+
const transform = ctx.transform;
|
|
88
|
+
const postTransform = ctx.postTransform;
|
|
89
|
+
return {
|
|
90
|
+
transform: (schema, location) => typeof transform === "function" ? legacyCustomType(
|
|
91
|
+
ctx,
|
|
92
|
+
transform(schema, nodeOptions(ctx, location)),
|
|
93
|
+
location
|
|
94
|
+
) : null,
|
|
95
|
+
postTransform(type, location) {
|
|
96
|
+
if (typeof postTransform !== "function") {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
warnLegacyCallback(ctx, "postTransform");
|
|
100
|
+
const result = postTransform(toTypeNode(loadTypeScript(), type), nodeOptions(ctx, location));
|
|
101
|
+
return result ? readResultType("postTransform", result, location) : null;
|
|
102
|
+
},
|
|
103
|
+
transformProperty: (property, schema, location) => legacyTransformProperty(ctx, property, schema, location)
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function isIrProperty(property) {
|
|
107
|
+
return typeof property.kind === "string";
|
|
108
|
+
}
|
|
109
|
+
function legacyTransformProperty(ctx, property, schema, location) {
|
|
110
|
+
const transformProperty = ctx.transformProperty;
|
|
111
|
+
if (typeof transformProperty !== "function") {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
warnLegacyCallback(ctx, "transformProperty");
|
|
115
|
+
const ts = loadTypeScript();
|
|
116
|
+
const options = nodeOptions(ctx, location);
|
|
117
|
+
const result = transformProperty(
|
|
118
|
+
toPropertySignature(ts, property),
|
|
119
|
+
schema,
|
|
120
|
+
options
|
|
121
|
+
);
|
|
122
|
+
if (!result) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
if (isIrProperty(result)) {
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
const converted = ts.isPropertySignature(result) ? fromPropertySignature(ts, result) : null;
|
|
129
|
+
if (converted === null) {
|
|
130
|
+
throw new UnreadablePropertyError(location.path);
|
|
131
|
+
}
|
|
132
|
+
return converted;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export { UnreadablePropertyError, UnreadableTypeError, schemaCallbacks };
|
|
136
|
+
//# sourceMappingURL=schema-callbacks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-callbacks.mjs","sources":["../../src/api/schema-callbacks.ts"],"sourcesContent":["import { toPropertySignature, toTypeNode } from \"../adapters/type-ast-bridge/ir-to-typescript.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport { fromPropertySignature } from \"../adapters/type-ast-bridge/typescript-to-ir.js\";\nimport type { ts } from \"../adapters/type-ast-bridge/typescript-types.js\";\nimport type {\n CustomType,\n SchemaCallbacks,\n SchemaLocation,\n} from \"../application/transform/schema/schema-context.js\";\nimport { ERROR_CODES, OpenAPITypesafeError } from \"../domain/errors.js\";\nimport { irRaw } from \"../domain/ir/constructors.js\";\nimport type { IrPropertySignature, IrType } from \"../domain/ir/nodes.js\";\nimport type {\n GlobalContext,\n IrCallbackType,\n IrPostTransform,\n IrTransform,\n IrTransformProperty,\n LegacyCallbackOptions,\n SchemaObject,\n TransformNodeOptions,\n} from \"../types.js\";\nimport { warnLegacyCallback } from \"./legacy-callback-warning.js\";\nimport { toIrType } from \"./type-helpers.js\";\n\n/**\n * The user's schema callbacks as the transformers call them (ENGINEERING_PLAN 6.3, ADR-004).\n * With `irCallbacks: true` they receive and return IR; otherwise they receive TypeScript nodes and\n * their results are read by the bridge.\n */\n\nexport class UnreadablePropertyError extends OpenAPITypesafeError {\n constructor(path: string | undefined) {\n super({\n code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,\n message:\n `transformProperty at ${path} returned a property ` +\n \"with syntax the generator cannot read\",\n details: { callback: \"transformProperty\", path },\n });\n this.name = \"UnreadablePropertyError\";\n }\n}\n\n/** A `transform` or `postTransform` result that is neither IR nor a TypeScript node. */\nexport class UnreadableTypeError extends OpenAPITypesafeError {\n constructor(callback: \"transform\" | \"postTransform\", path: string | undefined) {\n super({\n code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,\n message: `${callback} at ${path} returned a value that is not a TypeScript node`,\n details: { callback, path },\n });\n this.name = \"UnreadableTypeError\";\n }\n}\n\nfunction nodeOptions(ctx: GlobalContext, location: SchemaLocation): TransformNodeOptions {\n return { ...location, ctx } as TransformNodeOptions;\n}\n\n/** The callbacks of the run: IR callbacks when the run asks for them, legacy ones otherwise. */\nexport function schemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n return ctx.irCallbacks ? irSchemaCallbacks(ctx) : legacySchemaCallbacks(ctx);\n}\n\n/** An IR callback type; text is a raw type, printed as written. */\nfunction fromCallbackType(type: IrCallbackType): IrType {\n return typeof type === \"string\" ? irRaw(type) : type;\n}\n\nfunction irCustomType(result: ReturnType<IrTransform>): CustomType | null {\n if (result === undefined || result === null) {\n return null;\n }\n if (typeof result === \"object\" && \"schema\" in result) {\n return { type: fromCallbackType(result.schema), isOptional: Boolean(result.questionToken) };\n }\n return { type: fromCallbackType(result), isOptional: false };\n}\n\n/**\n * The context fields hold either callback form; `irCallbacks` says which one, so the casts below\n * only name the form the user declared with `OpenAPITSIrOptions`.\n */\nfunction irSchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n const transform = ctx.transform as IrTransform | undefined;\n const postTransform = ctx.postTransform as IrPostTransform | undefined;\n const transformProperty = ctx.transformProperty as IrTransformProperty | undefined;\n return {\n transform: (schema, location) =>\n transform\n ? irCustomType(transform(schema as SchemaObject, nodeOptions(ctx, location)))\n : null,\n postTransform(type, location) {\n const result = postTransform?.(type, nodeOptions(ctx, location));\n return result === undefined ? null : fromCallbackType(result);\n },\n transformProperty: (property, schema, location) =>\n transformProperty?.(property, schema as SchemaObject, nodeOptions(ctx, location)) ?? null,\n };\n}\n\ntype LegacyTransform = NonNullable<LegacyCallbackOptions[\"transform\"]>;\ntype LegacyPostTransform = NonNullable<LegacyCallbackOptions[\"postTransform\"]>;\ntype LegacyTransformProperty = NonNullable<LegacyCallbackOptions[\"transformProperty\"]>;\n\n/** A legacy result type: IR from the helpers as it is; a TypeScript node through the bridge. */\n/**\n * IR nodes have a string `kind`, TypeScript nodes a number. JavaScript callers can return any\n * value, and anything else would crash the TypeScript printer later.\n */\nfunction readResultType(\n callback: \"transform\" | \"postTransform\",\n result: unknown,\n location: SchemaLocation,\n): IrType {\n const kind = (result as { kind?: unknown }).kind;\n if (typeof kind !== \"string\" && typeof kind !== \"number\") {\n throw new UnreadableTypeError(callback, location.path);\n }\n return toIrType(result as IrType | ts.TypeNode);\n}\n\nfunction legacyResultType(ctx: GlobalContext, type: unknown, location: SchemaLocation): IrType {\n const result = readResultType(\"transform\", type, location);\n if (typeof (type as { kind: unknown }).kind !== \"string\") {\n warnLegacyCallback(ctx, \"transform\");\n }\n return result;\n}\n\nfunction legacyCustomType(\n ctx: GlobalContext,\n result: ReturnType<LegacyTransform>,\n location: SchemaLocation,\n): CustomType | null {\n if (!result || typeof result !== \"object\") {\n return null;\n }\n if (\"schema\" in result) {\n return {\n type: legacyResultType(ctx, result.schema, location),\n isOptional: Boolean(result.questionToken),\n };\n }\n return { type: legacyResultType(ctx, result, location), isOptional: false };\n}\n\n/** See `irSchemaCallbacks` for the casts; `typeof` checks keep the original's tolerance. */\nfunction legacySchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {\n const transform = ctx.transform as LegacyTransform | undefined;\n const postTransform = ctx.postTransform as LegacyPostTransform | undefined;\n return {\n transform: (schema, location) =>\n typeof transform === \"function\"\n ? legacyCustomType(\n ctx,\n transform(schema as SchemaObject, nodeOptions(ctx, location)),\n location,\n )\n : null,\n postTransform(type, location) {\n if (typeof postTransform !== \"function\") {\n return null;\n }\n warnLegacyCallback(ctx, \"postTransform\");\n const result = postTransform(toTypeNode(loadTypeScript(), type), nodeOptions(ctx, location));\n return result ? readResultType(\"postTransform\", result, location) : null;\n },\n transformProperty: (property, schema, location) =>\n legacyTransformProperty(ctx, property, schema, location),\n };\n}\n\nfunction isIrProperty(\n property: IrPropertySignature | ts.PropertySignature,\n): property is IrPropertySignature {\n return typeof property.kind === \"string\";\n}\n\nfunction legacyTransformProperty(\n ctx: GlobalContext,\n property: IrPropertySignature,\n schema: unknown,\n location: SchemaLocation,\n): IrPropertySignature | null {\n const transformProperty = ctx.transformProperty as LegacyTransformProperty | undefined;\n if (typeof transformProperty !== \"function\") {\n return null;\n }\n warnLegacyCallback(ctx, \"transformProperty\");\n const ts = loadTypeScript();\n const options = nodeOptions(ctx, location);\n const result = transformProperty(\n toPropertySignature(ts, property),\n schema as SchemaObject,\n options,\n );\n if (!result) {\n return null;\n }\n if (isIrProperty(result)) {\n return result;\n }\n // JavaScript callers can return any value, so check the node kind before reading it.\n const converted = ts.isPropertySignature(result) ? fromPropertySignature(ts, result) : null;\n if (converted === null) {\n throw new UnreadablePropertyError(location.path);\n }\n return converted;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const node_util = require('node:util');
|
|
4
|
+
const irDeclarationsToTypescript = require('../adapters/type-ast-bridge/ir-declarations-to-typescript.cjs');
|
|
5
|
+
const loadTypescript = require('../adapters/type-ast-bridge/load-typescript.cjs');
|
|
6
|
+
const legacyCallbackWarning = require('./legacy-callback-warning.cjs');
|
|
7
|
+
|
|
8
|
+
const STRING_TO_AST_DEPRECATION = `stringToAST() is deprecated and removed in 2.0. Return TypeScript type text from an IR callback (irCallbacks: true) instead: ${legacyCallbackWarning.IR_CALLBACKS_GUIDE_URL}`;
|
|
9
|
+
const STRING_TO_AST_DEPRECATION_CODE = "OPENAPI_TYPESAFE_DEP_STRING_TO_AST";
|
|
10
|
+
function parseSource(source) {
|
|
11
|
+
return [...irDeclarationsToTypescript.parseStatements(loadTypescript.loadTypeScript(), source)];
|
|
12
|
+
}
|
|
13
|
+
const stringToAST = node_util.deprecate(
|
|
14
|
+
parseSource,
|
|
15
|
+
STRING_TO_AST_DEPRECATION,
|
|
16
|
+
STRING_TO_AST_DEPRECATION_CODE
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
exports.STRING_TO_AST_DEPRECATION_CODE = STRING_TO_AST_DEPRECATION_CODE;
|
|
20
|
+
exports.stringToAST = stringToAST;
|
|
21
|
+
//# sourceMappingURL=string-to-ast.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-to-ast.cjs","sources":["../../src/api/string-to-ast.ts"],"sourcesContent":["import { deprecate } from \"node:util\";\nimport { parseStatements } from \"../adapters/type-ast-bridge/ir-declarations-to-typescript.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport { IR_CALLBACKS_GUIDE_URL } from \"./legacy-callback-warning.js\";\n\nconst STRING_TO_AST_DEPRECATION =\n \"stringToAST() is deprecated and removed in 2.0. Return TypeScript type text from an IR \" +\n `callback (irCallbacks: true) instead: ${IR_CALLBACKS_GUIDE_URL}`;\n\n/** Node's deprecation code for `stringToAST`, so users can filter or trace the warning. */\nexport const STRING_TO_AST_DEPRECATION_CODE = \"OPENAPI_TYPESAFE_DEP_STRING_TO_AST\";\n\nfunction parseSource(source: string): unknown[] {\n return [...parseStatements(loadTypeScript(), source)];\n}\n\n/**\n * Convert an arbitrary string to TS (assuming it’s valid). Parses with the TypeScript bridge, so\n * it needs TypeScript 6 or earlier (or `@typescript/typescript6`). Node's `util.deprecate` warns\n * on the first call only.\n * @deprecated Kept for 1.x; removed in 2.0 (ADR-004, decision 7). Use type text in IR callbacks.\n */\nexport const stringToAST: (source: string) => unknown[] = deprecate(\n parseSource,\n STRING_TO_AST_DEPRECATION,\n STRING_TO_AST_DEPRECATION_CODE,\n);\n"],"names":["IR_CALLBACKS_GUIDE_URL","parseStatements","loadTypeScript","deprecate"],"mappings":";;;;;;;AAKA,MAAM,yBAAA,GACJ,gIACyCA,4CAAsB,CAAA,CAAA;AAG1D,MAAM,8BAAA,GAAiC;AAE9C,SAAS,YAAY,MAAA,EAA2B;AAC9C,EAAA,OAAO,CAAC,GAAGC,0CAAA,CAAgBC,6BAAA,EAAe,EAAG,MAAM,CAAC,CAAA;AACtD;AAQO,MAAM,WAAA,GAA6CC,mBAAA;AAAA,EACxD,WAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { deprecate } from 'node:util';
|
|
2
|
+
import { parseStatements } from '../adapters/type-ast-bridge/ir-declarations-to-typescript.mjs';
|
|
3
|
+
import { loadTypeScript } from '../adapters/type-ast-bridge/load-typescript.mjs';
|
|
4
|
+
import { IR_CALLBACKS_GUIDE_URL } from './legacy-callback-warning.mjs';
|
|
5
|
+
|
|
6
|
+
const STRING_TO_AST_DEPRECATION = `stringToAST() is deprecated and removed in 2.0. Return TypeScript type text from an IR callback (irCallbacks: true) instead: ${IR_CALLBACKS_GUIDE_URL}`;
|
|
7
|
+
const STRING_TO_AST_DEPRECATION_CODE = "OPENAPI_TYPESAFE_DEP_STRING_TO_AST";
|
|
8
|
+
function parseSource(source) {
|
|
9
|
+
return [...parseStatements(loadTypeScript(), source)];
|
|
10
|
+
}
|
|
11
|
+
const stringToAST = deprecate(
|
|
12
|
+
parseSource,
|
|
13
|
+
STRING_TO_AST_DEPRECATION,
|
|
14
|
+
STRING_TO_AST_DEPRECATION_CODE
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
export { STRING_TO_AST_DEPRECATION_CODE, stringToAST };
|
|
18
|
+
//# sourceMappingURL=string-to-ast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-to-ast.mjs","sources":["../../src/api/string-to-ast.ts"],"sourcesContent":["import { deprecate } from \"node:util\";\nimport { parseStatements } from \"../adapters/type-ast-bridge/ir-declarations-to-typescript.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport { IR_CALLBACKS_GUIDE_URL } from \"./legacy-callback-warning.js\";\n\nconst STRING_TO_AST_DEPRECATION =\n \"stringToAST() is deprecated and removed in 2.0. Return TypeScript type text from an IR \" +\n `callback (irCallbacks: true) instead: ${IR_CALLBACKS_GUIDE_URL}`;\n\n/** Node's deprecation code for `stringToAST`, so users can filter or trace the warning. */\nexport const STRING_TO_AST_DEPRECATION_CODE = \"OPENAPI_TYPESAFE_DEP_STRING_TO_AST\";\n\nfunction parseSource(source: string): unknown[] {\n return [...parseStatements(loadTypeScript(), source)];\n}\n\n/**\n * Convert an arbitrary string to TS (assuming it’s valid). Parses with the TypeScript bridge, so\n * it needs TypeScript 6 or earlier (or `@typescript/typescript6`). Node's `util.deprecate` warns\n * on the first call only.\n * @deprecated Kept for 1.x; removed in 2.0 (ADR-004, decision 7). Use type text in IR callbacks.\n */\nexport const stringToAST: (source: string) => unknown[] = deprecate(\n parseSource,\n STRING_TO_AST_DEPRECATION,\n STRING_TO_AST_DEPRECATION_CODE,\n);\n"],"names":[],"mappings":";;;;;AAKA,MAAM,yBAAA,GACJ,gIACyC,sBAAsB,CAAA,CAAA;AAG1D,MAAM,8BAAA,GAAiC;AAE9C,SAAS,YAAY,MAAA,EAA2B;AAC9C,EAAA,OAAO,CAAC,GAAG,eAAA,CAAgB,cAAA,EAAe,EAAG,MAAM,CAAC,CAAA;AACtD;AAQO,MAAM,WAAA,GAA6C,SAAA;AAAA,EACxD,WAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF;;"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const changeCase = require('change-case');
|
|
4
|
+
const documentFooter = require('../application/transform/footer/document-footer.cjs');
|
|
5
|
+
const defaultPorts = require('./default-ports.cjs');
|
|
6
|
+
const footerSink = require('./footer-sink.cjs');
|
|
7
|
+
const schemaCallbacks = require('./schema-callbacks.cjs');
|
|
8
|
+
|
|
9
|
+
function _interopNamespaceCompat(e) {
|
|
10
|
+
if (e && typeof e === 'object' && 'default' in e) return e;
|
|
11
|
+
const n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
for (const k in e) {
|
|
14
|
+
n[k] = e[k];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
n.default = e;
|
|
18
|
+
return n;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const changeCase__namespace = /*#__PURE__*/_interopNamespaceCompat(changeCase);
|
|
22
|
+
|
|
23
|
+
function transformOptions(ctx) {
|
|
24
|
+
return {
|
|
25
|
+
additionalProperties: ctx.additionalProperties,
|
|
26
|
+
alphabetize: ctx.alphabetize,
|
|
27
|
+
arrayLength: ctx.arrayLength,
|
|
28
|
+
binaryAsBlob: ctx.binaryAsBlob,
|
|
29
|
+
conditionalEnums: ctx.conditionalEnums,
|
|
30
|
+
dedupeEnums: ctx.dedupeEnums,
|
|
31
|
+
defaultNonNullable: ctx.defaultNonNullable,
|
|
32
|
+
emptyObjectsUnknown: ctx.emptyObjectsUnknown,
|
|
33
|
+
enum: ctx.enum,
|
|
34
|
+
enumValues: ctx.enumValues,
|
|
35
|
+
excludeDeprecated: ctx.excludeDeprecated,
|
|
36
|
+
fixes: new Set(ctx.fix ?? []),
|
|
37
|
+
immutable: ctx.immutable,
|
|
38
|
+
propertiesRequiredByDefault: ctx.propertiesRequiredByDefault,
|
|
39
|
+
readWriteMarkers: ctx.readWriteMarkers,
|
|
40
|
+
generatePathParams: ctx.generatePathParams,
|
|
41
|
+
pathParamsAsTypes: ctx.pathParamsAsTypes,
|
|
42
|
+
rootTypes: ctx.rootTypes,
|
|
43
|
+
rootTypesNoSchemaPrefix: ctx.rootTypesNoSchemaPrefix,
|
|
44
|
+
rootTypesKeepCasing: ctx.rootTypesKeepCasing,
|
|
45
|
+
exportType: ctx.exportType,
|
|
46
|
+
inject: ctx.inject,
|
|
47
|
+
makePathsEnum: ctx.makePathsEnum
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function runFooter(ctx) {
|
|
51
|
+
ctx.runFooter ??= new documentFooter.RunFooter(new footerSink.ContextFooterSink(ctx.injectFooter), ctx.dedupeEnums);
|
|
52
|
+
return ctx.runFooter;
|
|
53
|
+
}
|
|
54
|
+
const CASING = { pascalCase: (text) => changeCase__namespace.pascalCase(text) };
|
|
55
|
+
function diagnostics(ctx) {
|
|
56
|
+
const logger = ctx.logger ?? defaultPorts.defaultLogger(ctx.silent);
|
|
57
|
+
return {
|
|
58
|
+
now: defaultPorts.monotonicNow,
|
|
59
|
+
debug: (message, durationMs) => logger.debug(message, "ts", durationMs)
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function createTransformContext(ctx) {
|
|
63
|
+
return {
|
|
64
|
+
options: transformOptions(ctx),
|
|
65
|
+
refs: { resolve: (ref) => ctx.resolve(ref) },
|
|
66
|
+
discriminators: {
|
|
67
|
+
objectAt: (ref) => ctx.discriminators.objects[ref],
|
|
68
|
+
isHandled: (ref) => ctx.discriminators.refsHandled.includes(ref),
|
|
69
|
+
otherPropertiesAt: (ref) => ctx.discriminators.otherProperties?.[ref] ?? [],
|
|
70
|
+
enumParentOf: (schema) => ctx.discriminators.enumParents?.get(schema)
|
|
71
|
+
},
|
|
72
|
+
footer: runFooter(ctx),
|
|
73
|
+
callbacks: schemaCallbacks.schemaCallbacks(ctx),
|
|
74
|
+
diagnostics: diagnostics(ctx),
|
|
75
|
+
casing: CASING
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function schemaLocation(options) {
|
|
79
|
+
return { path: options.path, schema: options.schema };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
exports.createTransformContext = createTransformContext;
|
|
83
|
+
exports.schemaLocation = schemaLocation;
|
|
84
|
+
//# sourceMappingURL=transform-context.cjs.map
|