openapi-typesafe 1.0.0-rc.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/dist/adapters/redocly-loader/configured-headers.cjs +32 -0
- package/dist/adapters/redocly-loader/configured-headers.cjs.map +1 -0
- package/dist/adapters/redocly-loader/configured-headers.mjs +30 -0
- package/dist/adapters/redocly-loader/configured-headers.mjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-config-source.cjs +21 -2
- package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -1
- package/dist/adapters/redocly-loader/redocly-config-source.mjs +22 -3
- package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -1
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +34 -11
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -1
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +33 -10
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-access.cjs +37 -4
- package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-access.mjs +37 -4
- package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-resolution-check.cjs +191 -0
- package/dist/adapters/redocly-loader/ref-resolution-check.cjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-resolution-check.mjs +189 -0
- package/dist/adapters/redocly-loader/ref-resolution-check.mjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-resolution-steps.cjs +73 -0
- package/dist/adapters/redocly-loader/ref-resolution-steps.cjs.map +1 -0
- package/dist/adapters/redocly-loader/ref-resolution-steps.mjs +60 -0
- package/dist/adapters/redocly-loader/ref-resolution-steps.mjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-fetch.cjs +41 -14
- package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -1
- package/dist/adapters/redocly-loader/remote-fetch.mjs +40 -14
- package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -1
- package/dist/adapters/redocly-loader/schema-load-errors.cjs +23 -5
- package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -1
- package/dist/adapters/redocly-loader/schema-load-errors.mjs +23 -5
- package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -1
- package/dist/adapters/redocly-loader/unsupported-keys.cjs +9 -1
- package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -1
- package/dist/adapters/redocly-loader/unsupported-keys.mjs +9 -1
- package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -1
- package/dist/adapters/terminal-logger/terminal-logger.cjs +6 -4
- package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -1
- package/dist/adapters/terminal-logger/terminal-logger.mjs +6 -4
- package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -1
- package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs +5 -1
- package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs.map +1 -1
- package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs +5 -1
- package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs.map +1 -1
- package/dist/adapters/type-ast-bridge/print-typescript.cjs.map +1 -1
- package/dist/adapters/type-ast-bridge/print-typescript.mjs.map +1 -1
- package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs +15 -9
- package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs.map +1 -1
- package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs +15 -9
- package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs.map +1 -1
- package/dist/api/default-ports.cjs +9 -0
- package/dist/api/default-ports.cjs.map +1 -1
- package/dist/api/default-ports.mjs +8 -1
- package/dist/api/default-ports.mjs.map +1 -1
- 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 +25 -0
- package/dist/api/discriminator-enum.cjs.map +1 -1
- package/dist/api/discriminator-enum.mjs +25 -1
- package/dist/api/discriminator-enum.mjs.map +1 -1
- 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 +92 -0
- package/dist/api/discriminator-patch.cjs.map +1 -0
- package/dist/api/discriminator-patch.mjs +86 -0
- package/dist/api/discriminator-patch.mjs.map +1 -0
- package/dist/api/discriminator-scan.cjs +50 -65
- package/dist/api/discriminator-scan.cjs.map +1 -1
- package/dist/api/discriminator-scan.mjs +44 -59
- package/dist/api/discriminator-scan.mjs.map +1 -1
- package/dist/api/document-refs.cjs +15 -12
- package/dist/api/document-refs.cjs.map +1 -1
- package/dist/api/document-refs.mjs +15 -12
- package/dist/api/document-refs.mjs.map +1 -1
- package/dist/api/document-run.cjs +21 -4
- package/dist/api/document-run.cjs.map +1 -1
- package/dist/api/document-run.mjs +22 -5
- package/dist/api/document-run.mjs.map +1 -1
- 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-sink.cjs +25 -2
- package/dist/api/footer-sink.cjs.map +1 -1
- package/dist/api/footer-sink.mjs +25 -2
- package/dist/api/footer-sink.mjs.map +1 -1
- package/dist/api/legacy-callback-warning.cjs +4 -1
- package/dist/api/legacy-callback-warning.cjs.map +1 -1
- package/dist/api/legacy-callback-warning.mjs +4 -1
- package/dist/api/legacy-callback-warning.mjs.map +1 -1
- package/dist/api/legacy-ts-helpers.cjs.map +1 -1
- package/dist/api/legacy-ts-helpers.mjs.map +1 -1
- package/dist/api/legacy-utils.cjs.map +1 -1
- package/dist/api/legacy-utils.mjs.map +1 -1
- package/dist/api/openapi-ts.cjs +2 -1
- package/dist/api/openapi-ts.cjs.map +1 -1
- package/dist/api/openapi-ts.mjs +3 -2
- package/dist/api/openapi-ts.mjs.map +1 -1
- 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/transform-context.cjs +4 -2
- package/dist/api/transform-context.cjs.map +1 -1
- package/dist/api/transform-context.mjs +4 -2
- package/dist/api/transform-context.mjs.map +1 -1
- package/dist/api/transform-schema.cjs +52 -3
- package/dist/api/transform-schema.cjs.map +1 -1
- package/dist/api/transform-schema.mjs +53 -4
- package/dist/api/transform-schema.mjs.map +1 -1
- package/dist/api/unsupported-feature-warnings.cjs +6 -1
- package/dist/api/unsupported-feature-warnings.cjs.map +1 -1
- package/dist/api/unsupported-feature-warnings.mjs +6 -1
- package/dist/api/unsupported-feature-warnings.mjs.map +1 -1
- package/dist/application/print/type-printer.cjs +7 -1
- package/dist/application/print/type-printer.cjs.map +1 -1
- package/dist/application/print/type-printer.mjs +7 -1
- package/dist/application/print/type-printer.mjs.map +1 -1
- 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 +2 -2
- package/dist/application/transform/document/components.cjs.map +1 -1
- package/dist/application/transform/document/components.mjs +4 -4
- package/dist/application/transform/document/components.mjs.map +1 -1
- 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/document.cjs +32 -9
- package/dist/application/transform/document/document.cjs.map +1 -1
- package/dist/application/transform/document/document.mjs +34 -11
- package/dist/application/transform/document/document.mjs.map +1 -1
- 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/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/parameters.cjs +41 -9
- package/dist/application/transform/document/parameters.cjs.map +1 -1
- package/dist/application/transform/document/parameters.mjs +42 -10
- package/dist/application/transform/document/parameters.mjs.map +1 -1
- package/dist/application/transform/document/path-key-overlaps.cjs +83 -33
- package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -1
- package/dist/application/transform/document/path-key-overlaps.mjs +83 -33
- package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -1
- 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.cjs +55 -29
- package/dist/application/transform/document/paths.cjs.map +1 -1
- package/dist/application/transform/document/paths.mjs +54 -30
- package/dist/application/transform/document/paths.mjs.map +1 -1
- package/dist/application/transform/document/root-type-aliases.cjs +15 -14
- package/dist/application/transform/document/root-type-aliases.cjs.map +1 -1
- package/dist/application/transform/document/root-type-aliases.mjs +15 -13
- package/dist/application/transform/document/root-type-aliases.mjs.map +1 -1
- 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/footer/document-footer.cjs +66 -4
- package/dist/application/transform/footer/document-footer.cjs.map +1 -1
- package/dist/application/transform/footer/document-footer.mjs +67 -5
- package/dist/application/transform/footer/document-footer.mjs.map +1 -1
- package/dist/application/transform/footer/enum-naming.cjs +17 -0
- package/dist/application/transform/footer/enum-naming.cjs.map +1 -1
- package/dist/application/transform/footer/enum-naming.mjs +17 -1
- package/dist/application/transform/footer/enum-naming.mjs.map +1 -1
- 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 +42 -0
- package/dist/application/transform/footer/evaluation.cjs.map +1 -0
- package/dist/application/transform/footer/evaluation.mjs +33 -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 +138 -0
- package/dist/application/transform/footer/type-evaluation.cjs.map +1 -0
- package/dist/application/transform/footer/type-evaluation.mjs +136 -0
- package/dist/application/transform/footer/type-evaluation.mjs.map +1 -0
- package/dist/application/transform/footer/type-indexing.cjs +107 -0
- package/dist/application/transform/footer/type-indexing.cjs.map +1 -0
- package/dist/application/transform/footer/type-indexing.mjs +105 -0
- package/dist/application/transform/footer/type-indexing.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/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 +7 -2
- package/dist/application/transform/ref-type.cjs.map +1 -1
- package/dist/application/transform/ref-type.mjs +3 -2
- package/dist/application/transform/ref-type.mjs.map +1 -1
- 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 +32 -1
- package/dist/application/transform/schema/array-type.cjs.map +1 -1
- package/dist/application/transform/schema/array-type.mjs +33 -2
- package/dist/application/transform/schema/array-type.mjs.map +1 -1
- package/dist/application/transform/schema/composition-type.cjs +50 -15
- package/dist/application/transform/schema/composition-type.cjs.map +1 -1
- package/dist/application/transform/schema/composition-type.mjs +50 -15
- package/dist/application/transform/schema/composition-type.mjs.map +1 -1
- package/dist/application/transform/schema/core-type.cjs +3 -1
- package/dist/application/transform/schema/core-type.cjs.map +1 -1
- package/dist/application/transform/schema/core-type.mjs +3 -1
- package/dist/application/transform/schema/core-type.mjs.map +1 -1
- 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 +3 -2
- package/dist/application/transform/schema/discriminator-property.cjs.map +1 -1
- package/dist/application/transform/schema/discriminator-property.mjs +3 -2
- package/dist/application/transform/schema/discriminator-property.mjs.map +1 -1
- package/dist/application/transform/schema/enum-rule.cjs +66 -10
- package/dist/application/transform/schema/enum-rule.cjs.map +1 -1
- package/dist/application/transform/schema/enum-rule.mjs +67 -12
- package/dist/application/transform/schema/enum-rule.mjs.map +1 -1
- 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 +38 -25
- package/dist/application/transform/schema/object-type.cjs.map +1 -1
- package/dist/application/transform/schema/object-type.mjs +39 -27
- package/dist/application/transform/schema/object-type.mjs.map +1 -1
- 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 +2 -2
- package/dist/application/transform/schema/schema-transform.cjs.map +1 -1
- package/dist/application/transform/schema/schema-transform.mjs +2 -2
- package/dist/application/transform/schema/schema-transform.mjs.map +1 -1
- package/dist/application/transform/schema-comment.cjs +51 -5
- package/dist/application/transform/schema-comment.cjs.map +1 -1
- package/dist/application/transform/schema-comment.mjs +50 -6
- package/dist/application/transform/schema-comment.mjs.map +1 -1
- package/dist/application/transform/type-combinators.mjs +1 -1
- package/dist/cli/api-settings.cjs +78 -0
- package/dist/cli/api-settings.cjs.map +1 -0
- package/dist/cli/api-settings.mjs +73 -0
- package/dist/cli/api-settings.mjs.map +1 -0
- package/dist/cli/cli-arguments.cjs +12 -3
- package/dist/cli/cli-arguments.cjs.map +1 -1
- package/dist/cli/cli-arguments.mjs +12 -4
- package/dist/cli/cli-arguments.mjs.map +1 -1
- package/dist/cli/cli-errors.cjs +3 -2
- package/dist/cli/cli-errors.cjs.map +1 -1
- package/dist/cli/cli-errors.mjs +3 -2
- package/dist/cli/cli-errors.mjs.map +1 -1
- package/dist/cli/cli-output.cjs +8 -3
- package/dist/cli/cli-output.cjs.map +1 -1
- package/dist/cli/cli-output.mjs +9 -4
- package/dist/cli/cli-output.mjs.map +1 -1
- package/dist/cli/help-text.cjs +3 -3
- package/dist/cli/help-text.cjs.map +1 -1
- package/dist/cli/help-text.mjs +3 -3
- package/dist/cli/help-text.mjs.map +1 -1
- package/dist/cli/main.cjs +5 -0
- package/dist/cli/main.cjs.map +1 -1
- package/dist/cli/main.mjs +5 -0
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/redocly-apis.cjs +15 -7
- package/dist/cli/redocly-apis.cjs.map +1 -1
- package/dist/cli/redocly-apis.mjs +15 -7
- package/dist/cli/redocly-apis.mjs.map +1 -1
- package/dist/cli/ref-limits.cjs +1 -1
- package/dist/cli/ref-limits.cjs.map +1 -1
- package/dist/cli/ref-limits.mjs +2 -2
- package/dist/cli/ref-limits.mjs.map +1 -1
- package/dist/cli/run-cli.cjs +20 -3
- package/dist/cli/run-cli.cjs.map +1 -1
- package/dist/cli/run-cli.mjs +21 -4
- package/dist/cli/run-cli.mjs.map +1 -1
- package/dist/domain/errors.cjs +6 -1
- package/dist/domain/errors.cjs.map +1 -1
- package/dist/domain/errors.mjs +6 -1
- package/dist/domain/errors.mjs.map +1 -1
- package/dist/domain/ir/constructors.cjs +7 -1
- package/dist/domain/ir/constructors.cjs.map +1 -1
- package/dist/domain/ir/constructors.mjs +6 -2
- package/dist/domain/ir/constructors.mjs.map +1 -1
- 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/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/parameter-object.cjs.map +1 -1
- package/dist/domain/openapi/parameter-object.mjs.map +1 -1
- 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/output-fixes.cjs +36 -1
- package/dist/domain/output-fixes.cjs.map +1 -1
- package/dist/domain/output-fixes.mjs +36 -1
- package/dist/domain/output-fixes.mjs.map +1 -1
- package/dist/domain/url-credentials.cjs +10 -0
- package/dist/domain/url-credentials.cjs.map +1 -0
- package/dist/domain/url-credentials.mjs +8 -0
- package/dist/domain/url-credentials.mjs.map +1 -0
- package/dist/domain/warnings.cjs +23 -0
- package/dist/domain/warnings.cjs.map +1 -0
- package/dist/domain/warnings.mjs +20 -0
- package/dist/domain/warnings.mjs.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1182 -46
- package/dist/index.d.mts +1182 -46
- package/dist/index.d.ts +1182 -46
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/transform/components-object.cjs +2 -1
- package/dist/transform/components-object.cjs.map +1 -1
- package/dist/transform/components-object.mjs +2 -1
- package/dist/transform/components-object.mjs.map +1 -1
- package/dist/transform/path-item-object.cjs.map +1 -1
- package/dist/transform/path-item-object.mjs.map +1 -1
- package/package.json +6 -5
- package/src/adapters/redocly-loader/configured-headers.ts +65 -0
- package/src/adapters/redocly-loader/redocly-config-source.ts +41 -6
- package/src/adapters/redocly-loader/redocly-schema-loader.ts +44 -13
- package/src/adapters/redocly-loader/ref-access.ts +60 -5
- package/src/adapters/redocly-loader/ref-resolution-check.ts +257 -0
- package/src/adapters/redocly-loader/ref-resolution-steps.ts +113 -0
- package/src/adapters/redocly-loader/remote-fetch.ts +77 -21
- package/src/adapters/redocly-loader/schema-load-errors.ts +33 -11
- package/src/adapters/redocly-loader/unsupported-keys.ts +17 -2
- package/src/adapters/terminal-logger/terminal-logger.ts +9 -5
- package/src/adapters/type-ast-bridge/ir-to-typescript.ts +5 -1
- package/src/adapters/type-ast-bridge/print-typescript.ts +3 -1
- package/src/adapters/type-ast-bridge/typescript-to-ir.ts +26 -12
- package/src/adapters/type-ast-bridge/typescript-types.ts +57 -5
- package/src/api/default-ports.ts +16 -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 +39 -0
- package/src/api/discriminator-other-owners.ts +97 -0
- package/src/api/discriminator-patch.ts +152 -0
- package/src/api/discriminator-scan.ts +78 -90
- package/src/api/document-refs.ts +19 -15
- package/src/api/document-run.ts +32 -11
- package/src/api/enum-values-warnings.ts +21 -0
- package/src/api/footer-sink.ts +34 -2
- package/src/api/legacy-callback-warning.ts +7 -3
- package/src/api/legacy-ts-helpers.ts +7 -5
- package/src/api/legacy-utils.ts +1 -1
- package/src/api/openapi-ts.ts +2 -0
- package/src/api/path-template-warnings.ts +27 -0
- package/src/api/run-context.ts +34 -0
- package/src/api/transform-context.ts +17 -9
- package/src/api/transform-schema.ts +90 -5
- package/src/api/unsupported-feature-warnings.ts +8 -1
- package/src/application/ports/redocly-config-source.ts +5 -1
- package/src/application/print/type-printer.ts +8 -1
- package/src/application/transform/document/assignability.ts +203 -0
- package/src/application/transform/document/components.ts +6 -6
- package/src/application/transform/document/declared-types.ts +93 -0
- package/src/application/transform/document/document.ts +71 -13
- 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/list-assignability.ts +87 -0
- package/src/application/transform/document/parameters.ts +78 -12
- package/src/application/transform/document/path-key-overlaps.ts +148 -59
- package/src/application/transform/document/path-template-replace.ts +90 -0
- package/src/application/transform/document/paths.ts +101 -38
- package/src/application/transform/document/root-type-aliases.ts +29 -28
- 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/footer/document-footer.ts +91 -6
- package/src/application/transform/footer/enum-naming.ts +29 -0
- package/src/application/transform/footer/enum-values-check.ts +171 -0
- package/src/application/transform/footer/evaluation.ts +57 -0
- package/src/application/transform/footer/shared-enum-names.ts +86 -0
- package/src/application/transform/footer/type-evaluation.ts +167 -0
- package/src/application/transform/footer/type-indexing.ts +152 -0
- package/src/application/transform/footer/type-rules.ts +269 -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 +11 -6
- package/src/application/transform/schema/access-flags.ts +63 -0
- package/src/application/transform/schema/array-type.ts +66 -5
- package/src/application/transform/schema/composition-type.ts +96 -24
- package/src/application/transform/schema/core-type.ts +8 -4
- package/src/application/transform/schema/discriminated-union.ts +58 -0
- package/src/application/transform/schema/discriminator-property.ts +8 -3
- package/src/application/transform/schema/enum-rule.ts +136 -13
- package/src/application/transform/schema/inherited-discriminator.ts +54 -0
- package/src/application/transform/schema/object-type.ts +51 -33
- package/src/application/transform/schema/required-variants.ts +88 -0
- package/src/application/transform/schema/schema-context.ts +26 -0
- package/src/application/transform/schema/schema-transform.ts +2 -2
- package/src/application/transform/schema-comment.ts +84 -4
- package/src/cli/api-settings.ts +109 -0
- package/src/cli/cli-arguments.ts +18 -5
- package/src/cli/cli-dependencies.ts +5 -0
- package/src/cli/cli-errors.ts +4 -2
- package/src/cli/cli-output.ts +18 -4
- package/src/cli/help-text.ts +4 -4
- package/src/cli/main.ts +6 -0
- package/src/cli/redocly-apis.ts +21 -11
- package/src/cli/ref-limits.ts +2 -2
- package/src/cli/run-cli.ts +25 -4
- package/src/domain/errors.ts +10 -2
- package/src/domain/ir/constructors.ts +9 -1
- package/src/domain/ir/nodes.ts +11 -7
- package/src/domain/openapi/admitted-values.ts +113 -0
- package/src/domain/openapi/discriminated-union.ts +109 -0
- package/src/domain/openapi/discriminator-conflicts.ts +251 -0
- package/src/domain/openapi/parameter-object.ts +4 -0
- package/src/domain/openapi/path-templates.ts +32 -0
- package/src/domain/openapi/schema-object.ts +2 -0
- package/src/domain/output-fixes.ts +43 -2
- package/src/domain/url-credentials.ts +18 -0
- package/src/domain/warnings.ts +28 -0
- package/src/index.ts +1 -0
- package/src/transform/components-object.ts +3 -1
- package/src/transform/path-item-object.ts +6 -2
- package/src/types/generator-options.ts +12 -21
- package/src/types/openapi-common.ts +1 -0
- package/src/types/openapi-request.ts +3 -0
- package/src/types/openapi-schema.ts +2 -0
- package/src/types/openapi-security.ts +1 -0
- package/dist/application/transform/document/path-item-conflicts.cjs +0 -51
- package/dist/application/transform/document/path-item-conflicts.cjs.map +0 -1
- package/dist/application/transform/document/path-item-conflicts.mjs +0 -49
- package/dist/application/transform/document/path-item-conflicts.mjs.map +0 -1
- package/src/application/transform/document/path-item-conflicts.ts +0 -79
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.
|
|
3
|
+
* Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors
|
|
4
|
+
* (`message (CODE)`), so a script or a person can search for it.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Every warning code. */
|
|
8
|
+
export const WARNING_CODES = {
|
|
9
|
+
CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED",
|
|
10
|
+
CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN",
|
|
11
|
+
DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID",
|
|
12
|
+
DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED",
|
|
13
|
+
ENUM_VALUES_EXCLUDED: "ENUM_VALUES_EXCLUDED",
|
|
14
|
+
FIX_NEEDS_OPTION: "FIX_NEEDS_OPTION",
|
|
15
|
+
LEGACY_CALLBACK_DEPRECATED: "LEGACY_CALLBACK_DEPRECATED",
|
|
16
|
+
LINT_PROBLEM: "LINT_PROBLEM",
|
|
17
|
+
PATH_TEMPLATES_IDENTICAL: "PATH_TEMPLATES_IDENTICAL",
|
|
18
|
+
QUERYSTRING_NEXT_TO_QUERY: "QUERYSTRING_NEXT_TO_QUERY",
|
|
19
|
+
REF_CIRCULAR: "REF_CIRCULAR",
|
|
20
|
+
REF_NOT_FOUND: "REF_NOT_FOUND",
|
|
21
|
+
} as const;
|
|
22
|
+
|
|
23
|
+
export type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];
|
|
24
|
+
|
|
25
|
+
/** The warning line for people, with its code at the end. */
|
|
26
|
+
export function warningText(message: string, code: WarningCode): string {
|
|
27
|
+
return `${message} (${code})`;
|
|
28
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -48,6 +48,7 @@ export {
|
|
|
48
48
|
OutputFix,
|
|
49
49
|
type OutputFixName,
|
|
50
50
|
} from "./domain/output-fixes.js";
|
|
51
|
+
export { WARNING_CODES, type WarningCode } from "./domain/warnings.js";
|
|
51
52
|
export { default as transformComponentsObject } from "./transform/components-object.js";
|
|
52
53
|
export { default as transformHeaderObject } from "./transform/header-object.js";
|
|
53
54
|
export { default as transformMediaTypeObject } from "./transform/media-type-object.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createTransformContext } from "../api/transform-context.js";
|
|
2
2
|
import { componentsType } from "../application/transform/document/components.js";
|
|
3
|
+
import { renameTakenAliases } from "../application/transform/document/root-type-aliases.js";
|
|
3
4
|
import type { IrType, IrTypeAliasDeclaration } from "../domain/ir/nodes.js";
|
|
4
5
|
import { isEnumSchema, singularizeComponentKind } from "../domain/openapi/components-object.js";
|
|
5
6
|
import type { ComponentsObject, GlobalContext } from "../types.js";
|
|
@@ -21,5 +22,6 @@ export default function transformComponentsObject(
|
|
|
21
22
|
ctx: GlobalContext,
|
|
22
23
|
): (IrType | IrTypeAliasDeclaration)[] {
|
|
23
24
|
const { type, rootTypes } = componentsType(componentsObject, createTransformContext(ctx));
|
|
24
|
-
|
|
25
|
+
// No footer here: only the aliases the `root-type-numbering` fix keeps get numbers.
|
|
26
|
+
return [type, ...renameTakenAliases(rootTypes, [])];
|
|
25
27
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { createTransformContext, schemaLocation } from "../api/transform-context.js";
|
|
2
2
|
import { pathItemType } from "../application/transform/document/path-item.js";
|
|
3
3
|
import type { IrType } from "../domain/ir/nodes.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { PathItemMethod } from "../domain/openapi/path-item-object.js";
|
|
5
5
|
import type { PathItemObject, TransformNodeOptions } from "../types.js";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* The operation methods of a path item: openapi-typescript's eight, plus the OpenAPI 3.2 `query`
|
|
9
|
+
* (ADR-020), as `HttpMethod` of openapi-typesafe-helpers lists them.
|
|
10
|
+
*/
|
|
11
|
+
export type Method = PathItemMethod;
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
* Transform PathItem nodes (4.8.9)
|
|
@@ -3,8 +3,6 @@ import type { Readable } from "node:stream";
|
|
|
3
3
|
import type { Config as RedoclyConfig } from "@redocly/openapi-core";
|
|
4
4
|
import type { ts } from "../adapters/type-ast-bridge/typescript-types.js";
|
|
5
5
|
import type { FooterEntry } from "../api/footer-entry.js";
|
|
6
|
-
import type { Logger } from "../application/ports/logger.js";
|
|
7
|
-
import type { DocumentFooter } from "../application/transform/transform-context.js";
|
|
8
6
|
import type { IrPropertySignature, IrType } from "../domain/ir/nodes.js";
|
|
9
7
|
import type { OutputFix, OutputFixName } from "../domain/output-fixes.js";
|
|
10
8
|
import type { ReferenceObject } from "./openapi-common.js";
|
|
@@ -74,7 +72,7 @@ export interface OpenAPITSBaseOptions {
|
|
|
74
72
|
lint?: boolean;
|
|
75
73
|
/** (optional) Should logging be suppressed? (necessary for STDOUT) */
|
|
76
74
|
silent?: boolean;
|
|
77
|
-
/**
|
|
75
|
+
/** Accepted for compatibility with openapi-typescript; not read. */
|
|
78
76
|
version?: number;
|
|
79
77
|
/** (optional) Export type instead of interface */
|
|
80
78
|
exportType?: boolean;
|
|
@@ -197,13 +195,18 @@ export interface OpenAPITSIrOptions extends OpenAPITSBaseOptions, IrCallbackOpti
|
|
|
197
195
|
/** Either form of the generator options. */
|
|
198
196
|
export type GeneratorOptions = OpenAPITSOptions | OpenAPITSIrOptions;
|
|
199
197
|
|
|
200
|
-
/**
|
|
198
|
+
/**
|
|
199
|
+
* Context passed to all submodules, and to the callbacks as `options.ctx`. To call an exported
|
|
200
|
+
* transformer outside a run, build one with the fields of openapi-typescript's context; the
|
|
201
|
+
* fields openapi-typesafe added are optional.
|
|
202
|
+
*/
|
|
201
203
|
export interface GlobalContext {
|
|
202
204
|
// user options
|
|
203
205
|
additionalProperties: boolean;
|
|
204
206
|
alphabetize: boolean;
|
|
205
207
|
arrayLength: boolean;
|
|
206
|
-
|
|
208
|
+
/** `format: binary` and `contentMediaType` strings become `Blob` (default: false). */
|
|
209
|
+
binaryAsBlob?: boolean;
|
|
207
210
|
defaultNonNullable: boolean;
|
|
208
211
|
discriminators: {
|
|
209
212
|
objects: Record<string, DiscriminatorObject>;
|
|
@@ -224,24 +227,12 @@ export interface GlobalContext {
|
|
|
224
227
|
* callbacks may add IR declarations or TypeScript nodes.
|
|
225
228
|
*/
|
|
226
229
|
injectFooter: FooterEntry[];
|
|
230
|
+
pathParamsAsTypes: boolean;
|
|
227
231
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*/
|
|
231
|
-
runFooter?: DocumentFooter;
|
|
232
|
-
/**
|
|
233
|
-
* @internal The deprecated callback forms this run has warned about (once each). Not an
|
|
234
|
-
* option; do not set it.
|
|
235
|
-
*/
|
|
236
|
-
legacyCallbackWarnings?: Set<LegacyCallbackName>;
|
|
237
|
-
/**
|
|
238
|
-
* @internal Where this run reports warnings and debug output. Not an option; a context without
|
|
239
|
-
* it logs to the terminal.
|
|
232
|
+
* Whether the callbacks below take IR (`OpenAPITSIrOptions`) or TypeScript nodes
|
|
233
|
+
* (default: false, TypeScript nodes).
|
|
240
234
|
*/
|
|
241
|
-
|
|
242
|
-
pathParamsAsTypes: boolean;
|
|
243
|
-
/** Whether the callbacks below take IR (`OpenAPITSIrOptions`) or TypeScript nodes. */
|
|
244
|
-
irCallbacks: boolean;
|
|
235
|
+
irCallbacks?: boolean;
|
|
245
236
|
postTransform: GeneratorOptions["postTransform"];
|
|
246
237
|
propertiesRequiredByDefault: boolean;
|
|
247
238
|
rootTypes: boolean;
|
|
@@ -67,6 +67,7 @@ export interface ParameterObject extends Extensable {
|
|
|
67
67
|
/** The schema defining the type used for the parameter. */
|
|
68
68
|
schema?: SchemaObject;
|
|
69
69
|
/** Example of the parameter’s potential value. */
|
|
70
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
70
71
|
example?: any;
|
|
71
72
|
/** Examples of the parameter’s potential value. */
|
|
72
73
|
examples?: { [name: string]: ExampleObject | ReferenceObject };
|
|
@@ -111,6 +112,7 @@ export interface MediaTypeObject extends Extensable {
|
|
|
111
112
|
* referencing a schema which contains an example, the example value SHALL override the example
|
|
112
113
|
* provided by the schema.
|
|
113
114
|
*/
|
|
115
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
114
116
|
example?: any;
|
|
115
117
|
/**
|
|
116
118
|
* Examples of the media type. Each example object SHOULD match the media type and specified
|
|
@@ -188,6 +190,7 @@ export interface ExampleObject extends Extensable {
|
|
|
188
190
|
* represent examples of media types that cannot naturally represented in JSON or YAML, use a
|
|
189
191
|
* string value to contain the example, escaping where necessary.
|
|
190
192
|
*/
|
|
193
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
191
194
|
value?: any;
|
|
192
195
|
/**
|
|
193
196
|
* A URI that points to the literal example. This provides the capability to reference examples
|
|
@@ -21,6 +21,7 @@ export type SchemaObject = {
|
|
|
21
21
|
/** Additional external documentation for this schema. */
|
|
22
22
|
externalDocs?: ExternalDocumentationObject;
|
|
23
23
|
/** @deprecated */
|
|
24
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
24
25
|
example?: any;
|
|
25
26
|
title?: string;
|
|
26
27
|
description?: string;
|
|
@@ -47,6 +48,7 @@ export type SchemaObject = {
|
|
|
47
48
|
allOf?: (SchemaObject | ReferenceObject)[];
|
|
48
49
|
anyOf?: (SchemaObject | ReferenceObject)[];
|
|
49
50
|
required?: string[];
|
|
51
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
50
52
|
[key: `x-${string}`]: any;
|
|
51
53
|
} & (
|
|
52
54
|
| StringSubtype
|
|
@@ -10,6 +10,7 @@ export type SecuritySchemeObject = {
|
|
|
10
10
|
* A description for security scheme. CommonMark syntax MAY be used for rich text representation.
|
|
11
11
|
*/
|
|
12
12
|
description?: string;
|
|
13
|
+
// biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
|
|
13
14
|
[key: `x-${string}`]: any;
|
|
14
15
|
} & (
|
|
15
16
|
| {
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function nameOf(member) {
|
|
4
|
-
return member.name.kind === "string" ? member.name.value : member.name.text;
|
|
5
|
-
}
|
|
6
|
-
function presenceOf(member) {
|
|
7
|
-
if (member === void 0) {
|
|
8
|
-
return "absent";
|
|
9
|
-
}
|
|
10
|
-
if (member.type.kind === "keyword" && member.type.keyword === "never") {
|
|
11
|
-
return member.isOptional ? "never" : "unknown";
|
|
12
|
-
}
|
|
13
|
-
return member.isOptional ? "optional" : "required";
|
|
14
|
-
}
|
|
15
|
-
function propertiesOf(type) {
|
|
16
|
-
if (type.kind !== "object") {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
const properties = type.members.filter((member) => {
|
|
20
|
-
return member.kind === "property";
|
|
21
|
-
});
|
|
22
|
-
return new Map(properties.map((property) => [nameOf(property), property]));
|
|
23
|
-
}
|
|
24
|
-
function isPresenceRejected(covering, covered) {
|
|
25
|
-
if (covered === "unknown") {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
if (covering === "required") {
|
|
29
|
-
return covered !== "required";
|
|
30
|
-
}
|
|
31
|
-
return covering === "never" && (covered === "optional" || covered === "required");
|
|
32
|
-
}
|
|
33
|
-
function isPropertyRejected(covering, covered) {
|
|
34
|
-
if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
return covered !== void 0 && isCoveredPathItemRejected(covered.type, covering.type);
|
|
38
|
-
}
|
|
39
|
-
function isCoveredPathItemRejected(covered, covering) {
|
|
40
|
-
const coveredProperties = propertiesOf(covered);
|
|
41
|
-
const coveringProperties = propertiesOf(covering);
|
|
42
|
-
if (coveredProperties === null || coveringProperties === null) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return [...coveringProperties].some(
|
|
46
|
-
([name, property]) => isPropertyRejected(property, coveredProperties.get(name))
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
exports.isCoveredPathItemRejected = isCoveredPathItemRejected;
|
|
51
|
-
//# sourceMappingURL=path-item-conflicts.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-item-conflicts.cjs","sources":["../../../../src/application/transform/document/path-item-conflicts.ts"],"sourcesContent":["import type { IrMember, IrPropertySignature, IrType } from \"../../../domain/ir/nodes.js\";\n\n/**\n * Whether TypeScript surely rejects a covered path item for the index signature that covers it\n * (roadmap R10.2). The original output compiles when every covered type is assignable to the\n * signature's type, and that output must stay the same, so a signature is only moved when this\n * check proves the error. It compares object types property by property, as the checker does: a\n * property the signature needs and the covered type may lack, or a value where the signature has\n * the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two\n * object properties are compared the same way, inside. Any other pair of types (references,\n * unions, keywords) decides nothing, and that output is left as it was.\n */\n\n/**\n * How a property is written. `never` is the `?: never` of an empty slot; a required `never`\n * (assignable to every type) is `unknown` and decides nothing.\n */\ntype Presence = \"absent\" | \"never\" | \"optional\" | \"required\" | \"unknown\";\n\nfunction nameOf(member: IrPropertySignature): string {\n return member.name.kind === \"string\" ? member.name.value : member.name.text;\n}\n\nfunction presenceOf(member: IrPropertySignature | undefined): Presence {\n if (member === undefined) {\n return \"absent\";\n }\n if (member.type.kind === \"keyword\" && member.type.keyword === \"never\") {\n return member.isOptional ? \"never\" : \"unknown\";\n }\n return member.isOptional ? \"optional\" : \"required\";\n}\n\nfunction propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {\n if (type.kind !== \"object\") {\n return null;\n }\n const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {\n return member.kind === \"property\";\n });\n return new Map(properties.map((property) => [nameOf(property), property]));\n}\n\n/**\n * Whether the covered property's presence fails the signature's: a required value it may lack, or\n * a value where the signature has `never` (an object is not `undefined`).\n */\nfunction isPresenceRejected(covering: Presence, covered: Presence): boolean {\n if (covered === \"unknown\") {\n return false;\n }\n if (covering === \"required\") {\n return covered !== \"required\";\n }\n return covering === \"never\" && (covered === \"optional\" || covered === \"required\");\n}\n\nfunction isPropertyRejected(\n covering: IrPropertySignature,\n covered: IrPropertySignature | undefined,\n): boolean {\n if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {\n return true;\n }\n // A `never` is not an object type, so a slot that is empty on either side decides nothing here.\n return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);\n}\n\n/** Whether the covered type is surely not assignable to the covering signature's type. */\nexport function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {\n const coveredProperties = propertiesOf(covered);\n const coveringProperties = propertiesOf(covering);\n if (coveredProperties === null || coveringProperties === null) {\n return false;\n }\n return [...coveringProperties].some(([name, property]) =>\n isPropertyRejected(property, coveredProperties.get(name)),\n );\n}\n"],"names":[],"mappings":";;AAmBA,SAAS,OAAO,MAAA,EAAqC;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,CAAK,KAAA,GAAQ,OAAO,IAAA,CAAK,IAAA;AACzE;AAEA,SAAS,WAAW,MAAA,EAAmD;AACrE,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,aAAa,MAAA,CAAO,IAAA,CAAK,YAAY,OAAA,EAAS;AACrE,IAAA,OAAO,MAAA,CAAO,aAAa,OAAA,GAAU,SAAA;AAAA,EACvC;AACA,EAAA,OAAO,MAAA,CAAO,aAAa,UAAA,GAAa,UAAA;AAC1C;AAEA,SAAS,aAAa,IAAA,EAA+D;AACnF,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAoD;AAC1F,IAAA,OAAO,OAAO,IAAA,KAAS,UAAA;AAAA,EACzB,CAAC,CAAA;AACD,EAAA,OAAO,IAAI,GAAA,CAAI,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,KAAa,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAA;AAC3E;AAMA,SAAS,kBAAA,CAAmB,UAAoB,OAAA,EAA4B;AAC1E,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO,OAAA,KAAY,UAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA,KAAa,OAAA,KAAY,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,UAAA,CAAA;AACxE;AAEA,SAAS,kBAAA,CACP,UACA,OAAA,EACS;AACT,EAAA,IAAI,mBAAmB,UAAA,CAAW,QAAQ,GAAG,UAAA,CAAW,OAAO,CAAC,CAAA,EAAG;AACjE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAY,MAAA,IAAa,yBAAA,CAA0B,OAAA,CAAQ,IAAA,EAAM,SAAS,IAAI,CAAA;AACvF;AAGO,SAAS,yBAAA,CAA0B,SAAiB,QAAA,EAA2B;AACpF,EAAA,MAAM,iBAAA,GAAoB,aAAa,OAAO,CAAA;AAC9C,EAAA,MAAM,kBAAA,GAAqB,aAAa,QAAQ,CAAA;AAChD,EAAA,IAAI,iBAAA,KAAsB,IAAA,IAAQ,kBAAA,KAAuB,IAAA,EAAM;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,GAAG,kBAAkB,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAC,IAAA,EAAM,QAAQ,CAAA,KAClD,mBAAmB,QAAA,EAAU,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAC;AAAA,GAC1D;AACF;;"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
function nameOf(member) {
|
|
2
|
-
return member.name.kind === "string" ? member.name.value : member.name.text;
|
|
3
|
-
}
|
|
4
|
-
function presenceOf(member) {
|
|
5
|
-
if (member === void 0) {
|
|
6
|
-
return "absent";
|
|
7
|
-
}
|
|
8
|
-
if (member.type.kind === "keyword" && member.type.keyword === "never") {
|
|
9
|
-
return member.isOptional ? "never" : "unknown";
|
|
10
|
-
}
|
|
11
|
-
return member.isOptional ? "optional" : "required";
|
|
12
|
-
}
|
|
13
|
-
function propertiesOf(type) {
|
|
14
|
-
if (type.kind !== "object") {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const properties = type.members.filter((member) => {
|
|
18
|
-
return member.kind === "property";
|
|
19
|
-
});
|
|
20
|
-
return new Map(properties.map((property) => [nameOf(property), property]));
|
|
21
|
-
}
|
|
22
|
-
function isPresenceRejected(covering, covered) {
|
|
23
|
-
if (covered === "unknown") {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
if (covering === "required") {
|
|
27
|
-
return covered !== "required";
|
|
28
|
-
}
|
|
29
|
-
return covering === "never" && (covered === "optional" || covered === "required");
|
|
30
|
-
}
|
|
31
|
-
function isPropertyRejected(covering, covered) {
|
|
32
|
-
if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
return covered !== void 0 && isCoveredPathItemRejected(covered.type, covering.type);
|
|
36
|
-
}
|
|
37
|
-
function isCoveredPathItemRejected(covered, covering) {
|
|
38
|
-
const coveredProperties = propertiesOf(covered);
|
|
39
|
-
const coveringProperties = propertiesOf(covering);
|
|
40
|
-
if (coveredProperties === null || coveringProperties === null) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return [...coveringProperties].some(
|
|
44
|
-
([name, property]) => isPropertyRejected(property, coveredProperties.get(name))
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export { isCoveredPathItemRejected };
|
|
49
|
-
//# sourceMappingURL=path-item-conflicts.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-item-conflicts.mjs","sources":["../../../../src/application/transform/document/path-item-conflicts.ts"],"sourcesContent":["import type { IrMember, IrPropertySignature, IrType } from \"../../../domain/ir/nodes.js\";\n\n/**\n * Whether TypeScript surely rejects a covered path item for the index signature that covers it\n * (roadmap R10.2). The original output compiles when every covered type is assignable to the\n * signature's type, and that output must stay the same, so a signature is only moved when this\n * check proves the error. It compares object types property by property, as the checker does: a\n * property the signature needs and the covered type may lack, or a value where the signature has\n * the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two\n * object properties are compared the same way, inside. Any other pair of types (references,\n * unions, keywords) decides nothing, and that output is left as it was.\n */\n\n/**\n * How a property is written. `never` is the `?: never` of an empty slot; a required `never`\n * (assignable to every type) is `unknown` and decides nothing.\n */\ntype Presence = \"absent\" | \"never\" | \"optional\" | \"required\" | \"unknown\";\n\nfunction nameOf(member: IrPropertySignature): string {\n return member.name.kind === \"string\" ? member.name.value : member.name.text;\n}\n\nfunction presenceOf(member: IrPropertySignature | undefined): Presence {\n if (member === undefined) {\n return \"absent\";\n }\n if (member.type.kind === \"keyword\" && member.type.keyword === \"never\") {\n return member.isOptional ? \"never\" : \"unknown\";\n }\n return member.isOptional ? \"optional\" : \"required\";\n}\n\nfunction propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {\n if (type.kind !== \"object\") {\n return null;\n }\n const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {\n return member.kind === \"property\";\n });\n return new Map(properties.map((property) => [nameOf(property), property]));\n}\n\n/**\n * Whether the covered property's presence fails the signature's: a required value it may lack, or\n * a value where the signature has `never` (an object is not `undefined`).\n */\nfunction isPresenceRejected(covering: Presence, covered: Presence): boolean {\n if (covered === \"unknown\") {\n return false;\n }\n if (covering === \"required\") {\n return covered !== \"required\";\n }\n return covering === \"never\" && (covered === \"optional\" || covered === \"required\");\n}\n\nfunction isPropertyRejected(\n covering: IrPropertySignature,\n covered: IrPropertySignature | undefined,\n): boolean {\n if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {\n return true;\n }\n // A `never` is not an object type, so a slot that is empty on either side decides nothing here.\n return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);\n}\n\n/** Whether the covered type is surely not assignable to the covering signature's type. */\nexport function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {\n const coveredProperties = propertiesOf(covered);\n const coveringProperties = propertiesOf(covering);\n if (coveredProperties === null || coveringProperties === null) {\n return false;\n }\n return [...coveringProperties].some(([name, property]) =>\n isPropertyRejected(property, coveredProperties.get(name)),\n );\n}\n"],"names":[],"mappings":"AAmBA,SAAS,OAAO,MAAA,EAAqC;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,CAAK,KAAA,GAAQ,OAAO,IAAA,CAAK,IAAA;AACzE;AAEA,SAAS,WAAW,MAAA,EAAmD;AACrE,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,aAAa,MAAA,CAAO,IAAA,CAAK,YAAY,OAAA,EAAS;AACrE,IAAA,OAAO,MAAA,CAAO,aAAa,OAAA,GAAU,SAAA;AAAA,EACvC;AACA,EAAA,OAAO,MAAA,CAAO,aAAa,UAAA,GAAa,UAAA;AAC1C;AAEA,SAAS,aAAa,IAAA,EAA+D;AACnF,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAoD;AAC1F,IAAA,OAAO,OAAO,IAAA,KAAS,UAAA;AAAA,EACzB,CAAC,CAAA;AACD,EAAA,OAAO,IAAI,GAAA,CAAI,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,KAAa,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAA;AAC3E;AAMA,SAAS,kBAAA,CAAmB,UAAoB,OAAA,EAA4B;AAC1E,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO,OAAA,KAAY,UAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA,KAAa,OAAA,KAAY,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,UAAA,CAAA;AACxE;AAEA,SAAS,kBAAA,CACP,UACA,OAAA,EACS;AACT,EAAA,IAAI,mBAAmB,UAAA,CAAW,QAAQ,GAAG,UAAA,CAAW,OAAO,CAAC,CAAA,EAAG;AACjE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAY,MAAA,IAAa,yBAAA,CAA0B,OAAA,CAAQ,IAAA,EAAM,SAAS,IAAI,CAAA;AACvF;AAGO,SAAS,yBAAA,CAA0B,SAAiB,QAAA,EAA2B;AACpF,EAAA,MAAM,iBAAA,GAAoB,aAAa,OAAO,CAAA;AAC9C,EAAA,MAAM,kBAAA,GAAqB,aAAa,QAAQ,CAAA;AAChD,EAAA,IAAI,iBAAA,KAAsB,IAAA,IAAQ,kBAAA,KAAuB,IAAA,EAAM;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,GAAG,kBAAkB,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAC,IAAA,EAAM,QAAQ,CAAA,KAClD,mBAAmB,QAAA,EAAU,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAC;AAAA,GAC1D;AACF;;"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { IrMember, IrPropertySignature, IrType } from "../../../domain/ir/nodes.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Whether TypeScript surely rejects a covered path item for the index signature that covers it
|
|
5
|
-
* (roadmap R10.2). The original output compiles when every covered type is assignable to the
|
|
6
|
-
* signature's type, and that output must stay the same, so a signature is only moved when this
|
|
7
|
-
* check proves the error. It compares object types property by property, as the checker does: a
|
|
8
|
-
* property the signature needs and the covered type may lack, or a value where the signature has
|
|
9
|
-
* the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two
|
|
10
|
-
* object properties are compared the same way, inside. Any other pair of types (references,
|
|
11
|
-
* unions, keywords) decides nothing, and that output is left as it was.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* How a property is written. `never` is the `?: never` of an empty slot; a required `never`
|
|
16
|
-
* (assignable to every type) is `unknown` and decides nothing.
|
|
17
|
-
*/
|
|
18
|
-
type Presence = "absent" | "never" | "optional" | "required" | "unknown";
|
|
19
|
-
|
|
20
|
-
function nameOf(member: IrPropertySignature): string {
|
|
21
|
-
return member.name.kind === "string" ? member.name.value : member.name.text;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function presenceOf(member: IrPropertySignature | undefined): Presence {
|
|
25
|
-
if (member === undefined) {
|
|
26
|
-
return "absent";
|
|
27
|
-
}
|
|
28
|
-
if (member.type.kind === "keyword" && member.type.keyword === "never") {
|
|
29
|
-
return member.isOptional ? "never" : "unknown";
|
|
30
|
-
}
|
|
31
|
-
return member.isOptional ? "optional" : "required";
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {
|
|
35
|
-
if (type.kind !== "object") {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {
|
|
39
|
-
return member.kind === "property";
|
|
40
|
-
});
|
|
41
|
-
return new Map(properties.map((property) => [nameOf(property), property]));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Whether the covered property's presence fails the signature's: a required value it may lack, or
|
|
46
|
-
* a value where the signature has `never` (an object is not `undefined`).
|
|
47
|
-
*/
|
|
48
|
-
function isPresenceRejected(covering: Presence, covered: Presence): boolean {
|
|
49
|
-
if (covered === "unknown") {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
if (covering === "required") {
|
|
53
|
-
return covered !== "required";
|
|
54
|
-
}
|
|
55
|
-
return covering === "never" && (covered === "optional" || covered === "required");
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function isPropertyRejected(
|
|
59
|
-
covering: IrPropertySignature,
|
|
60
|
-
covered: IrPropertySignature | undefined,
|
|
61
|
-
): boolean {
|
|
62
|
-
if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
// A `never` is not an object type, so a slot that is empty on either side decides nothing here.
|
|
66
|
-
return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** Whether the covered type is surely not assignable to the covering signature's type. */
|
|
70
|
-
export function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {
|
|
71
|
-
const coveredProperties = propertiesOf(covered);
|
|
72
|
-
const coveringProperties = propertiesOf(covering);
|
|
73
|
-
if (coveredProperties === null || coveringProperties === null) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
return [...coveringProperties].some(([name, property]) =>
|
|
77
|
-
isPropertyRejected(property, coveredProperties.get(name)),
|
|
78
|
-
);
|
|
79
|
-
}
|