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,211 @@
|
|
|
1
|
+
import { toPropertySignature, toTypeNode } from "../adapters/type-ast-bridge/ir-to-typescript.js";
|
|
2
|
+
import { loadTypeScript } from "../adapters/type-ast-bridge/load-typescript.js";
|
|
3
|
+
import { fromPropertySignature } from "../adapters/type-ast-bridge/typescript-to-ir.js";
|
|
4
|
+
import type { ts } from "../adapters/type-ast-bridge/typescript-types.js";
|
|
5
|
+
import type {
|
|
6
|
+
CustomType,
|
|
7
|
+
SchemaCallbacks,
|
|
8
|
+
SchemaLocation,
|
|
9
|
+
} from "../application/transform/schema/schema-context.js";
|
|
10
|
+
import { ERROR_CODES, OpenAPITypesafeError } from "../domain/errors.js";
|
|
11
|
+
import { irRaw } from "../domain/ir/constructors.js";
|
|
12
|
+
import type { IrPropertySignature, IrType } from "../domain/ir/nodes.js";
|
|
13
|
+
import type {
|
|
14
|
+
GlobalContext,
|
|
15
|
+
IrCallbackType,
|
|
16
|
+
IrPostTransform,
|
|
17
|
+
IrTransform,
|
|
18
|
+
IrTransformProperty,
|
|
19
|
+
LegacyCallbackOptions,
|
|
20
|
+
SchemaObject,
|
|
21
|
+
TransformNodeOptions,
|
|
22
|
+
} from "../types.js";
|
|
23
|
+
import { warnLegacyCallback } from "./legacy-callback-warning.js";
|
|
24
|
+
import { toIrType } from "./type-helpers.js";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The user's schema callbacks as the transformers call them (ENGINEERING_PLAN 6.3, ADR-004).
|
|
28
|
+
* With `irCallbacks: true` they receive and return IR; otherwise they receive TypeScript nodes and
|
|
29
|
+
* their results are read by the bridge.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
export class UnreadablePropertyError extends OpenAPITypesafeError {
|
|
33
|
+
constructor(path: string | undefined) {
|
|
34
|
+
super({
|
|
35
|
+
code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
36
|
+
message:
|
|
37
|
+
`transformProperty at ${path} returned a property ` +
|
|
38
|
+
"with syntax the generator cannot read",
|
|
39
|
+
details: { callback: "transformProperty", path },
|
|
40
|
+
});
|
|
41
|
+
this.name = "UnreadablePropertyError";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** A `transform` or `postTransform` result that is neither IR nor a TypeScript node. */
|
|
46
|
+
export class UnreadableTypeError extends OpenAPITypesafeError {
|
|
47
|
+
constructor(callback: "transform" | "postTransform", path: string | undefined) {
|
|
48
|
+
super({
|
|
49
|
+
code: ERROR_CODES.CALLBACK_RESULT_UNREADABLE,
|
|
50
|
+
message: `${callback} at ${path} returned a value that is not a TypeScript node`,
|
|
51
|
+
details: { callback, path },
|
|
52
|
+
});
|
|
53
|
+
this.name = "UnreadableTypeError";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function nodeOptions(ctx: GlobalContext, location: SchemaLocation): TransformNodeOptions {
|
|
58
|
+
return { ...location, ctx } as TransformNodeOptions;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The callbacks of the run: IR callbacks when the run asks for them, legacy ones otherwise. */
|
|
62
|
+
export function schemaCallbacks(ctx: GlobalContext): SchemaCallbacks {
|
|
63
|
+
return ctx.irCallbacks ? irSchemaCallbacks(ctx) : legacySchemaCallbacks(ctx);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** An IR callback type; text is a raw type, printed as written. */
|
|
67
|
+
function fromCallbackType(type: IrCallbackType): IrType {
|
|
68
|
+
return typeof type === "string" ? irRaw(type) : type;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function irCustomType(result: ReturnType<IrTransform>): CustomType | null {
|
|
72
|
+
if (result === undefined || result === null) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
if (typeof result === "object" && "schema" in result) {
|
|
76
|
+
return { type: fromCallbackType(result.schema), isOptional: Boolean(result.questionToken) };
|
|
77
|
+
}
|
|
78
|
+
return { type: fromCallbackType(result), isOptional: false };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The context fields hold either callback form; `irCallbacks` says which one, so the casts below
|
|
83
|
+
* only name the form the user declared with `OpenAPITSIrOptions`.
|
|
84
|
+
*/
|
|
85
|
+
function irSchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {
|
|
86
|
+
const transform = ctx.transform as IrTransform | undefined;
|
|
87
|
+
const postTransform = ctx.postTransform as IrPostTransform | undefined;
|
|
88
|
+
const transformProperty = ctx.transformProperty as IrTransformProperty | undefined;
|
|
89
|
+
return {
|
|
90
|
+
transform: (schema, location) =>
|
|
91
|
+
transform
|
|
92
|
+
? irCustomType(transform(schema as SchemaObject, nodeOptions(ctx, location)))
|
|
93
|
+
: null,
|
|
94
|
+
postTransform(type, location) {
|
|
95
|
+
const result = postTransform?.(type, nodeOptions(ctx, location));
|
|
96
|
+
return result === undefined ? null : fromCallbackType(result);
|
|
97
|
+
},
|
|
98
|
+
transformProperty: (property, schema, location) =>
|
|
99
|
+
transformProperty?.(property, schema as SchemaObject, nodeOptions(ctx, location)) ?? null,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
type LegacyTransform = NonNullable<LegacyCallbackOptions["transform"]>;
|
|
104
|
+
type LegacyPostTransform = NonNullable<LegacyCallbackOptions["postTransform"]>;
|
|
105
|
+
type LegacyTransformProperty = NonNullable<LegacyCallbackOptions["transformProperty"]>;
|
|
106
|
+
|
|
107
|
+
/** A legacy result type: IR from the helpers as it is; a TypeScript node through the bridge. */
|
|
108
|
+
/**
|
|
109
|
+
* IR nodes have a string `kind`, TypeScript nodes a number. JavaScript callers can return any
|
|
110
|
+
* value, and anything else would crash the TypeScript printer later.
|
|
111
|
+
*/
|
|
112
|
+
function readResultType(
|
|
113
|
+
callback: "transform" | "postTransform",
|
|
114
|
+
result: unknown,
|
|
115
|
+
location: SchemaLocation,
|
|
116
|
+
): IrType {
|
|
117
|
+
const kind = (result as { kind?: unknown }).kind;
|
|
118
|
+
if (typeof kind !== "string" && typeof kind !== "number") {
|
|
119
|
+
throw new UnreadableTypeError(callback, location.path);
|
|
120
|
+
}
|
|
121
|
+
return toIrType(result as IrType | ts.TypeNode);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function legacyResultType(ctx: GlobalContext, type: unknown, location: SchemaLocation): IrType {
|
|
125
|
+
const result = readResultType("transform", type, location);
|
|
126
|
+
if (typeof (type as { kind: unknown }).kind !== "string") {
|
|
127
|
+
warnLegacyCallback(ctx, "transform");
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function legacyCustomType(
|
|
133
|
+
ctx: GlobalContext,
|
|
134
|
+
result: ReturnType<LegacyTransform>,
|
|
135
|
+
location: SchemaLocation,
|
|
136
|
+
): CustomType | null {
|
|
137
|
+
if (!result || typeof result !== "object") {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
if ("schema" in result) {
|
|
141
|
+
return {
|
|
142
|
+
type: legacyResultType(ctx, result.schema, location),
|
|
143
|
+
isOptional: Boolean(result.questionToken),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return { type: legacyResultType(ctx, result, location), isOptional: false };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** See `irSchemaCallbacks` for the casts; `typeof` checks keep the original's tolerance. */
|
|
150
|
+
function legacySchemaCallbacks(ctx: GlobalContext): SchemaCallbacks {
|
|
151
|
+
const transform = ctx.transform as LegacyTransform | undefined;
|
|
152
|
+
const postTransform = ctx.postTransform as LegacyPostTransform | undefined;
|
|
153
|
+
return {
|
|
154
|
+
transform: (schema, location) =>
|
|
155
|
+
typeof transform === "function"
|
|
156
|
+
? legacyCustomType(
|
|
157
|
+
ctx,
|
|
158
|
+
transform(schema as SchemaObject, nodeOptions(ctx, location)),
|
|
159
|
+
location,
|
|
160
|
+
)
|
|
161
|
+
: null,
|
|
162
|
+
postTransform(type, location) {
|
|
163
|
+
if (typeof postTransform !== "function") {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
warnLegacyCallback(ctx, "postTransform");
|
|
167
|
+
const result = postTransform(toTypeNode(loadTypeScript(), type), nodeOptions(ctx, location));
|
|
168
|
+
return result ? readResultType("postTransform", result, location) : null;
|
|
169
|
+
},
|
|
170
|
+
transformProperty: (property, schema, location) =>
|
|
171
|
+
legacyTransformProperty(ctx, property, schema, location),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function isIrProperty(
|
|
176
|
+
property: IrPropertySignature | ts.PropertySignature,
|
|
177
|
+
): property is IrPropertySignature {
|
|
178
|
+
return typeof property.kind === "string";
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function legacyTransformProperty(
|
|
182
|
+
ctx: GlobalContext,
|
|
183
|
+
property: IrPropertySignature,
|
|
184
|
+
schema: unknown,
|
|
185
|
+
location: SchemaLocation,
|
|
186
|
+
): IrPropertySignature | null {
|
|
187
|
+
const transformProperty = ctx.transformProperty as LegacyTransformProperty | undefined;
|
|
188
|
+
if (typeof transformProperty !== "function") {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
warnLegacyCallback(ctx, "transformProperty");
|
|
192
|
+
const ts = loadTypeScript();
|
|
193
|
+
const options = nodeOptions(ctx, location);
|
|
194
|
+
const result = transformProperty(
|
|
195
|
+
toPropertySignature(ts, property),
|
|
196
|
+
schema as SchemaObject,
|
|
197
|
+
options,
|
|
198
|
+
);
|
|
199
|
+
if (!result) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
if (isIrProperty(result)) {
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
// JavaScript callers can return any value, so check the node kind before reading it.
|
|
206
|
+
const converted = ts.isPropertySignature(result) ? fromPropertySignature(ts, result) : null;
|
|
207
|
+
if (converted === null) {
|
|
208
|
+
throw new UnreadablePropertyError(location.path);
|
|
209
|
+
}
|
|
210
|
+
return converted;
|
|
211
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { deprecate } from "node:util";
|
|
2
|
+
import { parseStatements } from "../adapters/type-ast-bridge/ir-declarations-to-typescript.js";
|
|
3
|
+
import { loadTypeScript } from "../adapters/type-ast-bridge/load-typescript.js";
|
|
4
|
+
import { IR_CALLBACKS_GUIDE_URL } from "./legacy-callback-warning.js";
|
|
5
|
+
|
|
6
|
+
const STRING_TO_AST_DEPRECATION =
|
|
7
|
+
"stringToAST() is deprecated and removed in 2.0. Return TypeScript type text from an IR " +
|
|
8
|
+
`callback (irCallbacks: true) instead: ${IR_CALLBACKS_GUIDE_URL}`;
|
|
9
|
+
|
|
10
|
+
/** Node's deprecation code for `stringToAST`, so users can filter or trace the warning. */
|
|
11
|
+
export const STRING_TO_AST_DEPRECATION_CODE = "OPENAPI_TYPESAFE_DEP_STRING_TO_AST";
|
|
12
|
+
|
|
13
|
+
function parseSource(source: string): unknown[] {
|
|
14
|
+
return [...parseStatements(loadTypeScript(), source)];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Convert an arbitrary string to TS (assuming it’s valid). Parses with the TypeScript bridge, so
|
|
19
|
+
* it needs TypeScript 6 or earlier (or `@typescript/typescript6`). Node's `util.deprecate` warns
|
|
20
|
+
* on the first call only.
|
|
21
|
+
* @deprecated Kept for 1.x; removed in 2.0 (ADR-004, decision 7). Use type text in IR callbacks.
|
|
22
|
+
*/
|
|
23
|
+
export const stringToAST: (source: string) => unknown[] = deprecate(
|
|
24
|
+
parseSource,
|
|
25
|
+
STRING_TO_AST_DEPRECATION,
|
|
26
|
+
STRING_TO_AST_DEPRECATION_CODE,
|
|
27
|
+
);
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as changeCase from "change-case";
|
|
2
|
+
import { RunFooter } from "../application/transform/footer/document-footer.js";
|
|
3
|
+
import type {
|
|
4
|
+
DiscriminatorEnumParent,
|
|
5
|
+
SchemaLocation,
|
|
6
|
+
} from "../application/transform/schema/schema-context.js";
|
|
7
|
+
import type {
|
|
8
|
+
DocumentFooter,
|
|
9
|
+
NameCasing,
|
|
10
|
+
TransformContext,
|
|
11
|
+
TransformDiagnostics,
|
|
12
|
+
TransformOptions,
|
|
13
|
+
} from "../application/transform/transform-context.js";
|
|
14
|
+
import type { GlobalContext, TransformNodeOptions } from "../types.js";
|
|
15
|
+
import { defaultLogger, monotonicNow } from "./default-ports.js";
|
|
16
|
+
import { ContextFooterSink } from "./footer-sink.js";
|
|
17
|
+
import { schemaCallbacks } from "./schema-callbacks.js";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Builds the ported transformers' context from the original `GlobalContext`: options, refs,
|
|
21
|
+
* discriminators, the run footer and the user callbacks (see `schema-callbacks.ts`).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
function transformOptions(ctx: GlobalContext): TransformOptions {
|
|
25
|
+
return {
|
|
26
|
+
additionalProperties: ctx.additionalProperties,
|
|
27
|
+
alphabetize: ctx.alphabetize,
|
|
28
|
+
arrayLength: ctx.arrayLength,
|
|
29
|
+
binaryAsBlob: ctx.binaryAsBlob,
|
|
30
|
+
conditionalEnums: ctx.conditionalEnums,
|
|
31
|
+
dedupeEnums: ctx.dedupeEnums,
|
|
32
|
+
defaultNonNullable: ctx.defaultNonNullable,
|
|
33
|
+
emptyObjectsUnknown: ctx.emptyObjectsUnknown,
|
|
34
|
+
enum: ctx.enum,
|
|
35
|
+
enumValues: ctx.enumValues,
|
|
36
|
+
excludeDeprecated: ctx.excludeDeprecated,
|
|
37
|
+
fixes: new Set(ctx.fix ?? []),
|
|
38
|
+
immutable: ctx.immutable,
|
|
39
|
+
propertiesRequiredByDefault: ctx.propertiesRequiredByDefault,
|
|
40
|
+
readWriteMarkers: ctx.readWriteMarkers,
|
|
41
|
+
generatePathParams: ctx.generatePathParams,
|
|
42
|
+
pathParamsAsTypes: ctx.pathParamsAsTypes,
|
|
43
|
+
rootTypes: ctx.rootTypes,
|
|
44
|
+
rootTypesNoSchemaPrefix: ctx.rootTypesNoSchemaPrefix,
|
|
45
|
+
rootTypesKeepCasing: ctx.rootTypesKeepCasing,
|
|
46
|
+
exportType: ctx.exportType,
|
|
47
|
+
inject: ctx.inject,
|
|
48
|
+
makePathsEnum: ctx.makePathsEnum,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** One footer per run: it holds the enum registry, so it lives on the run's context. */
|
|
53
|
+
function runFooter(ctx: GlobalContext): DocumentFooter {
|
|
54
|
+
ctx.runFooter ??= new RunFooter(new ContextFooterSink(ctx.injectFooter), ctx.dedupeEnums);
|
|
55
|
+
return ctx.runFooter;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const CASING: NameCasing = { pascalCase: (text) => changeCase.pascalCase(text) };
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A monotonic clock and the run's logger (the default one for a user's own context), "ts" group.
|
|
62
|
+
*/
|
|
63
|
+
function diagnostics(ctx: GlobalContext): TransformDiagnostics {
|
|
64
|
+
const logger = ctx.logger ?? defaultLogger(ctx.silent);
|
|
65
|
+
return {
|
|
66
|
+
now: monotonicNow,
|
|
67
|
+
debug: (message, durationMs) => logger.debug(message, "ts", durationMs),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** The ported transformers' context for one call from a legacy transformer. */
|
|
72
|
+
export function createTransformContext(ctx: GlobalContext): TransformContext {
|
|
73
|
+
return {
|
|
74
|
+
options: transformOptions(ctx),
|
|
75
|
+
refs: { resolve: (ref) => ctx.resolve(ref) },
|
|
76
|
+
discriminators: {
|
|
77
|
+
objectAt: (ref) => ctx.discriminators.objects[ref],
|
|
78
|
+
isHandled: (ref) => ctx.discriminators.refsHandled.includes(ref),
|
|
79
|
+
otherPropertiesAt: (ref) => ctx.discriminators.otherProperties?.[ref] ?? [],
|
|
80
|
+
enumParentOf: (schema) =>
|
|
81
|
+
ctx.discriminators.enumParents?.get(schema) as DiscriminatorEnumParent | undefined,
|
|
82
|
+
},
|
|
83
|
+
footer: runFooter(ctx),
|
|
84
|
+
callbacks: schemaCallbacks(ctx),
|
|
85
|
+
diagnostics: diagnostics(ctx),
|
|
86
|
+
casing: CASING,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** The transformer's location for the original options object. */
|
|
91
|
+
export function schemaLocation(options: TransformNodeOptions): SchemaLocation {
|
|
92
|
+
return { path: options.path, schema: options.schema };
|
|
93
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { ts } from "../adapters/type-ast-bridge/typescript-types.js";
|
|
2
|
+
import { documentBody, documentClosing } from "../application/transform/document/document.js";
|
|
3
|
+
import { renameTakenAliases } from "../application/transform/document/root-type-aliases.js";
|
|
4
|
+
import { RunFooter } from "../application/transform/footer/document-footer.js";
|
|
5
|
+
import { checkedEnumValues } from "../application/transform/footer/enum-values-check.js";
|
|
6
|
+
import {
|
|
7
|
+
SharedEnumNameRecorder,
|
|
8
|
+
type SharedEnumNames,
|
|
9
|
+
} from "../application/transform/footer/shared-enum-names.js";
|
|
10
|
+
import type { IrDeclaration } from "../domain/ir/nodes.js";
|
|
11
|
+
import type { DocumentObject } from "../domain/openapi/document-object.js";
|
|
12
|
+
import { OutputFix } from "../domain/output-fixes.js";
|
|
13
|
+
import type { GlobalContext, OpenAPI3 } from "../types.js";
|
|
14
|
+
import { FirstSchemaNameRecorder } from "./discriminator-enum-names.js";
|
|
15
|
+
import { documentDeclarations, type TransformedDocument } from "./document-declarations.js";
|
|
16
|
+
import { excludedValuesWarning } from "./enum-values-warnings.js";
|
|
17
|
+
import { type FooterEntry, isIrDeclaration } from "./footer-entry.js";
|
|
18
|
+
import { ContextFooterSink } from "./footer-sink.js";
|
|
19
|
+
import { createTransformContext } from "./transform-context.js";
|
|
20
|
+
|
|
21
|
+
const OPERATIONS_NAME = "operations";
|
|
22
|
+
|
|
23
|
+
/** Whether a footer entry is named `operations` (any declaration kind, as in the original). */
|
|
24
|
+
function isOperations(entry: FooterEntry): boolean {
|
|
25
|
+
const name = isIrDeclaration(entry)
|
|
26
|
+
? (entry as { name?: string }).name
|
|
27
|
+
: (entry as Partial<ts.InterfaceDeclaration>).name?.escapedText;
|
|
28
|
+
return name === OPERATIONS_NAME;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Drops a message: the first pass must not repeat the run's warnings or debug lines. */
|
|
32
|
+
const dropMessage = (): void => undefined;
|
|
33
|
+
const DROPPED_MESSAGES = { debug: dropMessage, warn: dropMessage, error: dropMessage };
|
|
34
|
+
|
|
35
|
+
/** A shared enum name recorder of a first pass, and the names it gives the second. */
|
|
36
|
+
interface EnumNameRecorder extends SharedEnumNames {
|
|
37
|
+
chosenNames(): SharedEnumNames;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The names of shared enums, known only at the end: a first pass transforms the document into a
|
|
42
|
+
* scratch footer that `recorder` watches; its output is dropped. User callbacks run in both
|
|
43
|
+
* passes. The `dedupe-enum-names` fix (ADR-021, upstream #1683) names an enum by all of its
|
|
44
|
+
* schemas; `discriminator-values` keeps the first declaring schema's name
|
|
45
|
+
* (`FirstSchemaNameRecorder`).
|
|
46
|
+
*/
|
|
47
|
+
function sharedEnumNamesOf(
|
|
48
|
+
document: DocumentObject,
|
|
49
|
+
ctx: GlobalContext,
|
|
50
|
+
recorder: EnumNameRecorder,
|
|
51
|
+
): SharedEnumNames {
|
|
52
|
+
const injectFooter: FooterEntry[] = [];
|
|
53
|
+
const scratch: GlobalContext = {
|
|
54
|
+
...ctx,
|
|
55
|
+
injectFooter,
|
|
56
|
+
runFooter: new RunFooter(new ContextFooterSink(injectFooter), true, recorder),
|
|
57
|
+
logger: DROPPED_MESSAGES,
|
|
58
|
+
legacyCallbackWarnings: new Set(),
|
|
59
|
+
};
|
|
60
|
+
const scratchContext = createTransformContext(scratch);
|
|
61
|
+
documentBody(document, scratchContext, () => injectFooter.filter(isIrDeclaration));
|
|
62
|
+
return recorder.chosenNames();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** The recorder of the run's fixes, or null where the first schema's name needs no first pass. */
|
|
66
|
+
function enumNameRecorderOf(ctx: GlobalContext): EnumNameRecorder | null {
|
|
67
|
+
if (ctx.fix?.includes(OutputFix.DEDUPE_ENUM_NAMES)) {
|
|
68
|
+
return new SharedEnumNameRecorder();
|
|
69
|
+
}
|
|
70
|
+
return ctx.fix?.includes(OutputFix.DISCRIMINATOR_VALUES) ? new FirstSchemaNameRecorder() : null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** With a naming fix, `--enum` and `--dedupe-enums`, the run's footer names shared enums. */
|
|
74
|
+
function withSharedEnumNames(document: DocumentObject, ctx: GlobalContext): void {
|
|
75
|
+
const recorder = ctx.runFooter === undefined ? enumNameRecorderOf(ctx) : null;
|
|
76
|
+
if (recorder === null || !ctx.enum || !ctx.dedupeEnums) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const names = sharedEnumNamesOf(document, ctx, recorder);
|
|
80
|
+
ctx.runFooter = new RunFooter(new ContextFooterSink(ctx.injectFooter), true, names);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* With `--enum-values`, arrays whose location type does not hold their values are typed by their
|
|
85
|
+
* values (ADR-027); a location that excludes listed values is a contradiction of the document.
|
|
86
|
+
*/
|
|
87
|
+
function enumValuesChecked(
|
|
88
|
+
body: readonly IrDeclaration[],
|
|
89
|
+
footer: FooterEntry[],
|
|
90
|
+
ctx: GlobalContext,
|
|
91
|
+
): FooterEntry[] {
|
|
92
|
+
if (!ctx.enumValues) {
|
|
93
|
+
return footer;
|
|
94
|
+
}
|
|
95
|
+
const checked = checkedEnumValues(footer, body, isIrDeclaration);
|
|
96
|
+
for (const retype of checked.retyped) {
|
|
97
|
+
if (retype.kind === "excluded") {
|
|
98
|
+
ctx.logger?.warn(excludedValuesWarning(retype.name, retype.excluded));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return checked.footer;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** @internal Root types, the footer, then the closing declarations (Phase 5, step 6). */
|
|
105
|
+
export function transformDocument(schema: OpenAPI3, ctx: GlobalContext): TransformedDocument {
|
|
106
|
+
const document = schema as DocumentObject;
|
|
107
|
+
withSharedEnumNames(document, ctx);
|
|
108
|
+
const context = createTransformContext(ctx);
|
|
109
|
+
// documentBody registers the enums in the footer, so the footer is read after it.
|
|
110
|
+
const rawBody = documentBody(document, context, () => ctx.injectFooter.filter(isIrDeclaration));
|
|
111
|
+
const footer = enumValuesChecked(rawBody, [...ctx.injectFooter], ctx);
|
|
112
|
+
const closing = documentClosing(document, context, footer.some(isOperations));
|
|
113
|
+
const body = renameTakenAliases(rawBody, footer.filter(isIrDeclaration), closing);
|
|
114
|
+
return { body, footer, closing };
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* The whole document as IR declarations (ENGINEERING_PLAN 6.1–6.2); `openapiTS` returns the same
|
|
119
|
+
* for a loaded document.
|
|
120
|
+
*/
|
|
121
|
+
export default function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclaration[] {
|
|
122
|
+
return documentDeclarations(transformDocument(schema, ctx));
|
|
123
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { loadTypeScript } from "../adapters/type-ast-bridge/load-typescript.js";
|
|
2
|
+
import { fromTypeNode } from "../adapters/type-ast-bridge/typescript-to-ir.js";
|
|
3
|
+
import type { ts } from "../adapters/type-ast-bridge/typescript-types.js";
|
|
4
|
+
import { HELPER_TYPES } from "../application/transform/helper-types.js";
|
|
5
|
+
import { literalType } from "../application/transform/literal-type.js";
|
|
6
|
+
import { refType } from "../application/transform/ref-type.js";
|
|
7
|
+
import { UNKNOWN_TYPE } from "../application/transform/shared-types.js";
|
|
8
|
+
import {
|
|
9
|
+
intersectionOf,
|
|
10
|
+
nullableOf,
|
|
11
|
+
omitKeys,
|
|
12
|
+
unionOf,
|
|
13
|
+
withRequiredKeys,
|
|
14
|
+
} from "../application/transform/type-combinators.js";
|
|
15
|
+
import { irBoolean, irKeyword, irRecord } from "../domain/ir/constructors.js";
|
|
16
|
+
import type { IrType } from "../domain/ir/nodes.js";
|
|
17
|
+
import type { ParameterObject, ReferenceObject } from "../types.js";
|
|
18
|
+
import { declaresTypeAlias, type FooterEntry } from "./footer-entry.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The public type helpers (ENGINEERING_PLAN 6.2, ADR-004 decision 2). Same names and call
|
|
22
|
+
* signatures as the original helpers; they return IR types. A `ts.TypeNode` argument (from user
|
|
23
|
+
* code built with `ts.factory`) is read into IR by the bridge.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** A helper argument: an IR type, or a TypeScript type node from user code. */
|
|
27
|
+
export type TypeInput = IrType | ts.TypeNode;
|
|
28
|
+
|
|
29
|
+
export const BOOLEAN: IrType = Object.freeze(irKeyword("boolean"));
|
|
30
|
+
export const FALSE: IrType = Object.freeze(irBoolean(false));
|
|
31
|
+
export const NEVER: IrType = Object.freeze(irKeyword("never"));
|
|
32
|
+
export const NULL: IrType = Object.freeze(irKeyword("null"));
|
|
33
|
+
export const NUMBER: IrType = Object.freeze(irKeyword("number"));
|
|
34
|
+
export const STRING: IrType = Object.freeze(irKeyword("string"));
|
|
35
|
+
export const TRUE: IrType = Object.freeze(irBoolean(true));
|
|
36
|
+
export const UNDEFINED: IrType = Object.freeze(irKeyword("undefined"));
|
|
37
|
+
/** The shared `unknown` type; the transformers compare with it by identity, as the original did. */
|
|
38
|
+
export const UNKNOWN: IrType = UNKNOWN_TYPE;
|
|
39
|
+
|
|
40
|
+
/** IR nodes have a string `kind`; TypeScript nodes have a numeric `SyntaxKind`. */
|
|
41
|
+
function isIrType(type: TypeInput): type is IrType {
|
|
42
|
+
return typeof type.kind === "string";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** @internal Read a helper argument into IR. */
|
|
46
|
+
export function toIrType(type: TypeInput): IrType {
|
|
47
|
+
return isIrType(type) ? type : fromTypeNode(loadTypeScript(), type);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** `A | B`: `never` for no types, the type itself for one; repeated primitives are removed. */
|
|
51
|
+
export function tsUnion(types: readonly TypeInput[]): IrType {
|
|
52
|
+
return unionOf(types.map(toIrType));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** `A & B`, with the same rules as `tsUnion`. */
|
|
56
|
+
export function tsIntersection(types: readonly TypeInput[]): IrType {
|
|
57
|
+
return intersectionOf(types.map(toIrType));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** `A | null`, without removing repeated types. */
|
|
61
|
+
export function tsNullable(types: readonly TypeInput[]): IrType {
|
|
62
|
+
return nullableOf(types.map(toIrType));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** `Omit<T, "a" | "b">`. */
|
|
66
|
+
export function tsOmit(type: TypeInput, keys: readonly string[]): IrType {
|
|
67
|
+
return omitKeys(toIrType(type), keys);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** `Record<K, V>`. */
|
|
71
|
+
export function tsRecord(key: TypeInput, value: TypeInput): IrType {
|
|
72
|
+
return irRecord(toIrType(key), toIrType(value));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The literal type of a JSON value: strings, numbers, booleans and `null` as literals, arrays as
|
|
77
|
+
* tuples (an empty one as `never[]`), objects as object types; anything else is `unknown`.
|
|
78
|
+
*/
|
|
79
|
+
export function tsLiteral(value: unknown): IrType {
|
|
80
|
+
return literalType(value);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* `WithRequired<T, "a" | "b">`, or the type itself for no keys. Adds the `WithRequired` helper
|
|
85
|
+
* type to the footer once.
|
|
86
|
+
*/
|
|
87
|
+
export function tsWithRequired(
|
|
88
|
+
type: TypeInput,
|
|
89
|
+
keys: readonly string[],
|
|
90
|
+
injectFooter: FooterEntry[],
|
|
91
|
+
): IrType {
|
|
92
|
+
if (keys.length === 0) {
|
|
93
|
+
return toIrType(type);
|
|
94
|
+
}
|
|
95
|
+
const { name, text } = HELPER_TYPES.withRequired;
|
|
96
|
+
if (!injectFooter.some((entry) => declaresTypeAlias(entry, name))) {
|
|
97
|
+
injectFooter.push({ kind: "rawDeclaration", name, text });
|
|
98
|
+
}
|
|
99
|
+
return withRequiredKeys(toIrType(type), keys);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface OapiRefOptions {
|
|
103
|
+
/** Whether to wrap with FlattenedDeepRequired<> (default: false) */
|
|
104
|
+
deep?: boolean;
|
|
105
|
+
/** Array of property names to wrap with Extract<> when accessing */
|
|
106
|
+
extractProperties?: string[];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function isParameterObject(
|
|
110
|
+
value: ParameterObject | ReferenceObject | undefined,
|
|
111
|
+
): value is ParameterObject {
|
|
112
|
+
return Boolean(value && !("$ref" in value && value.$ref) && (value as ParameterObject).in);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The generated type a JSON Pointer refers to, as an indexed access: `#/components/schemas/Foo`
|
|
117
|
+
* → `components["schemas"]["Foo"]`. Object `properties` are skipped, and a referenced parameter
|
|
118
|
+
* is indexed by its location (`resolved`).
|
|
119
|
+
*/
|
|
120
|
+
export function oapiRef(
|
|
121
|
+
path: string,
|
|
122
|
+
resolved?: ParameterObject | ReferenceObject,
|
|
123
|
+
options: OapiRefOptions = {},
|
|
124
|
+
): IrType {
|
|
125
|
+
return refType(path, {
|
|
126
|
+
isDeep: options.deep ?? false,
|
|
127
|
+
extractProperties: options.extractProperties ?? [],
|
|
128
|
+
parameter: isParameterObject(resolved) ? { in: resolved.in, name: resolved.name } : null,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Logger } from "../application/ports/logger.js";
|
|
2
|
+
import {
|
|
3
|
+
findUnsupportedFeatures,
|
|
4
|
+
UnsupportedFeature,
|
|
5
|
+
} from "../domain/openapi/unsupported-features.js";
|
|
6
|
+
import { WARNING_CODES, type WarningCode, warningText } from "../domain/warnings.js";
|
|
7
|
+
|
|
8
|
+
const DOCS_BASE_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs";
|
|
9
|
+
const SUPPORT_DOCS_URL = `${DOCS_BASE_URL}/introduction.md#openapi-3-2-support`;
|
|
10
|
+
|
|
11
|
+
/** Why each feature is not in the generated types. */
|
|
12
|
+
const REASONS: Readonly<Record<UnsupportedFeature, string>> = {
|
|
13
|
+
[UnsupportedFeature.QUERYSTRING_NEXT_TO_QUERY]:
|
|
14
|
+
'is an "in: querystring" parameter next to "in: query" parameters, which OpenAPI 3.2 does ' +
|
|
15
|
+
"not allow; the query parameters keep their types and this parameter is not in the " +
|
|
16
|
+
"generated types",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/** The warning code of each feature. */
|
|
20
|
+
const CODES: Readonly<Record<UnsupportedFeature, WarningCode>> = {
|
|
21
|
+
[UnsupportedFeature.QUERYSTRING_NEXT_TO_QUERY]: WARNING_CODES.QUERYSTRING_NEXT_TO_QUERY,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Warn once per use of an OpenAPI 3.2 feature that the generated types leave out, so a missing
|
|
26
|
+
* parameter is never silent (CODING_PRINCIPLES §8.7).
|
|
27
|
+
*/
|
|
28
|
+
export function warnUnsupportedFeatures(document: unknown, logger: Logger): void {
|
|
29
|
+
for (const { feature, pointer } of findUnsupportedFeatures(document)) {
|
|
30
|
+
const message = `${pointer} ${REASONS[feature]}. See ${SUPPORT_DOCS_URL}`;
|
|
31
|
+
logger.warn(warningText(message, CODES[feature]));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Read a generated file, for `--check` (ENGINEERING_PLAN 4.5). Fails with `OUTPUT_READ_FAILED`. */
|
|
2
|
+
export interface FileReader {
|
|
3
|
+
readText(file: URL): string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Write a generated file, creating its directory first (ENGINEERING_PLAN 4.5). Fails with
|
|
8
|
+
* `OUTPUT_WRITE_FAILED`.
|
|
9
|
+
*/
|
|
10
|
+
export interface FileWriter {
|
|
11
|
+
writeText(file: URL, contents: string): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
|
|
2
|
+
export type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
|
|
6
|
+
* printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
|
|
7
|
+
*/
|
|
8
|
+
export interface Logger {
|
|
9
|
+
/**
|
|
10
|
+
* A debug line, with how long the step took when it was measured. A line without a group is
|
|
11
|
+
* written whenever debug output is on.
|
|
12
|
+
*/
|
|
13
|
+
debug(message: string, group?: DebugGroup, durationMs?: number): void;
|
|
14
|
+
warn(message: string): void;
|
|
15
|
+
error(message: string): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GeneratorOptions } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
/** The loaded Redocly config, as the generator options take it. */
|
|
4
|
+
export type RedoclyConfig = NonNullable<GeneratorOptions["redocly"]>;
|
|
5
|
+
|
|
6
|
+
/** Where the CLI finds and loads `redocly.yaml` (ENGINEERING_PLAN 4.5). */
|
|
7
|
+
export interface RedoclyConfigSource {
|
|
8
|
+
/**
|
|
9
|
+
* The config file to use: `explicitPath` (a file, or a directory to search), or the one found
|
|
10
|
+
* from the working directory. Undefined when there is none.
|
|
11
|
+
*/
|
|
12
|
+
find(explicitPath: string | undefined): string | undefined;
|
|
13
|
+
/** The config of a file; fails with `CLI_CONFIG_INVALID` when it or its ignore file is bad. */
|
|
14
|
+
load(configPath: string): Promise<RedoclyConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* The config used when there is no file: the minimal rules. Fails with `CLI_CONFIG_INVALID`
|
|
17
|
+
* when the ignore file of the working directory is bad.
|
|
18
|
+
*/
|
|
19
|
+
createDefault(): Promise<RedoclyConfig>;
|
|
20
|
+
}
|