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
package/dist/cli/help-text.cjs
CHANGED
|
@@ -5,7 +5,7 @@ const HELP_TEXT = [
|
|
|
5
5
|
" $ openapi-typesafe [input] [options]",
|
|
6
6
|
"",
|
|
7
7
|
"Options",
|
|
8
|
-
" --help
|
|
8
|
+
" --help Show this help",
|
|
9
9
|
" --version Display the version",
|
|
10
10
|
" --redocly [path], -c Specify path to Redocly config (default: redocly.yaml)",
|
|
11
11
|
" --output, -o Specify output file (if not specified in redocly.yaml)",
|
|
@@ -18,7 +18,7 @@ const HELP_TEXT = [
|
|
|
18
18
|
" --immutable Generate readonly types",
|
|
19
19
|
" --additional-properties Treat schema objects as if `additionalProperties: true` is set",
|
|
20
20
|
" --empty-objects-unknown Generate `unknown` instead of `Record<string, never>` for empty objects",
|
|
21
|
-
" --default-non-nullable
|
|
21
|
+
" --default-non-nullable A property with a `default` is required (default: true; =false makes it optional)",
|
|
22
22
|
" --properties-required-by-default",
|
|
23
23
|
" Treat schema objects as if `required` is set to all properties by default",
|
|
24
24
|
" --array-length Generate tuples using array minItems / maxItems",
|
|
@@ -28,7 +28,7 @@ const HELP_TEXT = [
|
|
|
28
28
|
" --generate-path-params Generate path parameters for all paths where they are undefined by schema",
|
|
29
29
|
" --alphabetize Sort object keys alphabetically",
|
|
30
30
|
" --exclude-deprecated Exclude deprecated types",
|
|
31
|
-
" --root-types Export
|
|
31
|
+
" --root-types Export `components` types as root-level aliases",
|
|
32
32
|
" --root-types-no-schema-prefix",
|
|
33
33
|
' Do not add "Schema" prefix to types at the root level (should only be used with --root-types)',
|
|
34
34
|
" --root-types-keep-casing Keep casing of root types (should only be used with --root-types)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-text.cjs","sources":["../../src/cli/help-text.ts"],"sourcesContent":["/** The text of `--help`, as in the original CLI; long lines are split only in this source. */\nexport const HELP_TEXT = [\n \"Usage\",\n \" $ openapi-typesafe [input] [options]\",\n \"\",\n \"Options\",\n \" --help
|
|
1
|
+
{"version":3,"file":"help-text.cjs","sources":["../../src/cli/help-text.ts"],"sourcesContent":["/** The text of `--help`, as in the original CLI; long lines are split only in this source. */\nexport const HELP_TEXT = [\n \"Usage\",\n \" $ openapi-typesafe [input] [options]\",\n \"\",\n \"Options\",\n \" --help Show this help\",\n \" --version Display the version\",\n \" --redocly [path], -c Specify path to Redocly config (default: redocly.yaml)\",\n \" --output, -o Specify output file (if not specified in redocly.yaml)\",\n \" --enum Export true TS enums instead of unions\",\n \" --enum-values Export enum values as arrays\",\n \" --conditional-enums Only generate true TS enums when enum\" +\n \" metadata is available (default: false)\",\n \" --dedupe-enums Dedupe enum types when `--enum=true` is set\",\n \" --check Check that the generated types are\" +\n \" up-to-date. (default: false)\",\n \" --export-type, -t Export top-level `type` instead of `interface`\",\n \" --immutable Generate readonly types\",\n \" --additional-properties Treat schema objects as if `additionalProperties: true` is set\",\n \" --empty-objects-unknown Generate `unknown` instead of\" +\n \" `Record<string, never>` for empty objects\",\n \" --default-non-nullable A property with a `default` is required\" +\n \" (default: true; =false makes it optional)\",\n \" --properties-required-by-default\",\n \" Treat schema objects as if `required` is\" +\n \" set to all properties by default\",\n \" --array-length Generate tuples using array minItems / maxItems\",\n \" --binary-as-blob Type raw binary strings (format: binary,\" +\n \" contentMediaType) as Blob\",\n \" --fix [names] Turn on output fixes, comma-separated, or\" +\n ' \"all\" (see docs/cli.md#fix)',\n \" --path-params-as-types Convert paths to template literal types\",\n \" --generate-path-params Generate path parameters for all paths where they are\" +\n \" undefined by schema\",\n \" --alphabetize Sort object keys alphabetically\",\n \" --exclude-deprecated Exclude deprecated types\",\n \" --root-types Export `components` types as root-level aliases\",\n \" --root-types-no-schema-prefix\",\n ' Do not add \"Schema\" prefix to types at' +\n \" the root level (should only be used with --root-types)\",\n \" --root-types-keep-casing Keep casing of root types (should only be\" +\n \" used with --root-types)\",\n \" --make-paths-enum Generate ApiPaths enum for all paths\",\n \" --read-write-markers Generate $Read/$Write markers for\" +\n \" readOnly/writeOnly properties\",\n \" --no-lint Skip the Redocly lint (bundling errors still fail)\",\n \" --local-ref-root [dir] Load local $ref files only from this directory\",\n \" --remote-ref-hosts [hosts] Load remote $ref documents only from these\" +\n \" comma-separated hosts (empty: none)\",\n \"\",\n].join(\"\\n\");\n"],"names":[],"mappings":";;AACO,MAAM,SAAA,GAAY;AAAA,EACvB,OAAA;AAAA,EACA,wCAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,6CAAA;AAAA,EACA,kDAAA;AAAA,EACA,qFAAA;AAAA,EACA,qFAAA;AAAA,EACA,qEAAA;AAAA,EACA,2DAAA;AAAA,EACA,2GAAA;AAAA,EAEA,0EAAA;AAAA,EACA,8FAAA;AAAA,EAEA,6EAAA;AAAA,EACA,sDAAA;AAAA,EACA,6FAAA;AAAA,EACA,sGAAA;AAAA,EAEA,gHAAA;AAAA,EAEA,oCAAA;AAAA,EACA,wGAAA;AAAA,EAEA,8EAAA;AAAA,EACA,iGAAA;AAAA,EAEA,oGAAA;AAAA,EAEA,sEAAA;AAAA,EACA,wGAAA;AAAA,EAEA,8DAAA;AAAA,EACA,uDAAA;AAAA,EACA,8EAAA;AAAA,EACA,iCAAA;AAAA,EACA,4HAAA;AAAA,EAEA,gGAAA;AAAA,EAEA,mEAAA;AAAA,EACA,8FAAA;AAAA,EAEA,iFAAA;AAAA,EACA,6EAAA;AAAA,EACA,6GAAA;AAAA,EAEA;AACF,CAAA,CAAE,KAAK,IAAI;;"}
|
package/dist/cli/help-text.mjs
CHANGED
|
@@ -3,7 +3,7 @@ const HELP_TEXT = [
|
|
|
3
3
|
" $ openapi-typesafe [input] [options]",
|
|
4
4
|
"",
|
|
5
5
|
"Options",
|
|
6
|
-
" --help
|
|
6
|
+
" --help Show this help",
|
|
7
7
|
" --version Display the version",
|
|
8
8
|
" --redocly [path], -c Specify path to Redocly config (default: redocly.yaml)",
|
|
9
9
|
" --output, -o Specify output file (if not specified in redocly.yaml)",
|
|
@@ -16,7 +16,7 @@ const HELP_TEXT = [
|
|
|
16
16
|
" --immutable Generate readonly types",
|
|
17
17
|
" --additional-properties Treat schema objects as if `additionalProperties: true` is set",
|
|
18
18
|
" --empty-objects-unknown Generate `unknown` instead of `Record<string, never>` for empty objects",
|
|
19
|
-
" --default-non-nullable
|
|
19
|
+
" --default-non-nullable A property with a `default` is required (default: true; =false makes it optional)",
|
|
20
20
|
" --properties-required-by-default",
|
|
21
21
|
" Treat schema objects as if `required` is set to all properties by default",
|
|
22
22
|
" --array-length Generate tuples using array minItems / maxItems",
|
|
@@ -26,7 +26,7 @@ const HELP_TEXT = [
|
|
|
26
26
|
" --generate-path-params Generate path parameters for all paths where they are undefined by schema",
|
|
27
27
|
" --alphabetize Sort object keys alphabetically",
|
|
28
28
|
" --exclude-deprecated Exclude deprecated types",
|
|
29
|
-
" --root-types Export
|
|
29
|
+
" --root-types Export `components` types as root-level aliases",
|
|
30
30
|
" --root-types-no-schema-prefix",
|
|
31
31
|
' Do not add "Schema" prefix to types at the root level (should only be used with --root-types)',
|
|
32
32
|
" --root-types-keep-casing Keep casing of root types (should only be used with --root-types)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-text.mjs","sources":["../../src/cli/help-text.ts"],"sourcesContent":["/** The text of `--help`, as in the original CLI; long lines are split only in this source. */\nexport const HELP_TEXT = [\n \"Usage\",\n \" $ openapi-typesafe [input] [options]\",\n \"\",\n \"Options\",\n \" --help
|
|
1
|
+
{"version":3,"file":"help-text.mjs","sources":["../../src/cli/help-text.ts"],"sourcesContent":["/** The text of `--help`, as in the original CLI; long lines are split only in this source. */\nexport const HELP_TEXT = [\n \"Usage\",\n \" $ openapi-typesafe [input] [options]\",\n \"\",\n \"Options\",\n \" --help Show this help\",\n \" --version Display the version\",\n \" --redocly [path], -c Specify path to Redocly config (default: redocly.yaml)\",\n \" --output, -o Specify output file (if not specified in redocly.yaml)\",\n \" --enum Export true TS enums instead of unions\",\n \" --enum-values Export enum values as arrays\",\n \" --conditional-enums Only generate true TS enums when enum\" +\n \" metadata is available (default: false)\",\n \" --dedupe-enums Dedupe enum types when `--enum=true` is set\",\n \" --check Check that the generated types are\" +\n \" up-to-date. (default: false)\",\n \" --export-type, -t Export top-level `type` instead of `interface`\",\n \" --immutable Generate readonly types\",\n \" --additional-properties Treat schema objects as if `additionalProperties: true` is set\",\n \" --empty-objects-unknown Generate `unknown` instead of\" +\n \" `Record<string, never>` for empty objects\",\n \" --default-non-nullable A property with a `default` is required\" +\n \" (default: true; =false makes it optional)\",\n \" --properties-required-by-default\",\n \" Treat schema objects as if `required` is\" +\n \" set to all properties by default\",\n \" --array-length Generate tuples using array minItems / maxItems\",\n \" --binary-as-blob Type raw binary strings (format: binary,\" +\n \" contentMediaType) as Blob\",\n \" --fix [names] Turn on output fixes, comma-separated, or\" +\n ' \"all\" (see docs/cli.md#fix)',\n \" --path-params-as-types Convert paths to template literal types\",\n \" --generate-path-params Generate path parameters for all paths where they are\" +\n \" undefined by schema\",\n \" --alphabetize Sort object keys alphabetically\",\n \" --exclude-deprecated Exclude deprecated types\",\n \" --root-types Export `components` types as root-level aliases\",\n \" --root-types-no-schema-prefix\",\n ' Do not add \"Schema\" prefix to types at' +\n \" the root level (should only be used with --root-types)\",\n \" --root-types-keep-casing Keep casing of root types (should only be\" +\n \" used with --root-types)\",\n \" --make-paths-enum Generate ApiPaths enum for all paths\",\n \" --read-write-markers Generate $Read/$Write markers for\" +\n \" readOnly/writeOnly properties\",\n \" --no-lint Skip the Redocly lint (bundling errors still fail)\",\n \" --local-ref-root [dir] Load local $ref files only from this directory\",\n \" --remote-ref-hosts [hosts] Load remote $ref documents only from these\" +\n \" comma-separated hosts (empty: none)\",\n \"\",\n].join(\"\\n\");\n"],"names":[],"mappings":"AACO,MAAM,SAAA,GAAY;AAAA,EACvB,OAAA;AAAA,EACA,wCAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,6CAAA;AAAA,EACA,kDAAA;AAAA,EACA,qFAAA;AAAA,EACA,qFAAA;AAAA,EACA,qEAAA;AAAA,EACA,2DAAA;AAAA,EACA,2GAAA;AAAA,EAEA,0EAAA;AAAA,EACA,8FAAA;AAAA,EAEA,6EAAA;AAAA,EACA,sDAAA;AAAA,EACA,6FAAA;AAAA,EACA,sGAAA;AAAA,EAEA,gHAAA;AAAA,EAEA,oCAAA;AAAA,EACA,wGAAA;AAAA,EAEA,8EAAA;AAAA,EACA,iGAAA;AAAA,EAEA,oGAAA;AAAA,EAEA,sEAAA;AAAA,EACA,wGAAA;AAAA,EAEA,8DAAA;AAAA,EACA,uDAAA;AAAA,EACA,8EAAA;AAAA,EACA,iCAAA;AAAA,EACA,4HAAA;AAAA,EAEA,gGAAA;AAAA,EAEA,mEAAA;AAAA,EACA,8FAAA;AAAA,EAEA,iFAAA;AAAA,EACA,6EAAA;AAAA,EACA,6GAAA;AAAA,EAEA;AACF,CAAA,CAAE,KAAK,IAAI;;"}
|
package/dist/cli/main.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const fs = require('node:fs');
|
|
4
|
+
const node_tty = require('node:tty');
|
|
4
5
|
const node_url = require('node:url');
|
|
5
6
|
const colors = require('ansi-colors');
|
|
6
7
|
const nodeFileSystem = require('../adapters/node-file-system/node-file-system.cjs');
|
|
@@ -31,6 +32,7 @@ function terminalStyle() {
|
|
|
31
32
|
dim: (text) => palette.dim(text)
|
|
32
33
|
};
|
|
33
34
|
}
|
|
35
|
+
const STDIN_DESCRIPTOR = 0;
|
|
34
36
|
const generateTypes = async (source, options) => `${commentHeader.COMMENT_HEADER}${astToString.astToString(await openapiTs.default(source, options))}`;
|
|
35
37
|
function terminalConsole() {
|
|
36
38
|
return {
|
|
@@ -49,6 +51,9 @@ function processDependencies() {
|
|
|
49
51
|
console: terminalConsole(),
|
|
50
52
|
writeStdout: (text) => process.stdout.write(text),
|
|
51
53
|
stdin: () => process.stdin,
|
|
54
|
+
// `isatty` reads the descriptor without opening `process.stdin`, which would keep the
|
|
55
|
+
// process alive.
|
|
56
|
+
isStdinTerminal: () => node_tty.isatty(STDIN_DESCRIPTOR),
|
|
52
57
|
files: nodeFileSystem.createNodeFileSystem(),
|
|
53
58
|
redoclyConfigs: redoclyConfigSource.createRedoclyConfigSource(cwd),
|
|
54
59
|
generate: generateTypes,
|
package/dist/cli/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../../src/cli/main.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport colors from \"ansi-colors\";\nimport { createNodeFileSystem } from \"../adapters/node-file-system/node-file-system.js\";\nimport { createRedoclyConfigSource } from \"../adapters/redocly-loader/redocly-config-source.js\";\nimport { astToString } from \"../api/ast-to-string.js\";\nimport { COMMENT_HEADER } from \"../api/comment-header.js\";\nimport { defaultLogger, monotonicNow, terminalSupportsColor } from \"../api/default-ports.js\";\nimport openapiTS from \"../api/openapi-ts.js\";\nimport type { CliConsole, CliDependencies, GenerateTypes, TextStyle } from \"./cli-dependencies.js\";\nimport { runCli } from \"./run-cli.js\";\n\n/**\n * The CLI's composition root (ENGINEERING_PLAN 4.5, ADR-012): the only CLI module that touches the\n * process. `bin/cli.js` imports the built copy of this module.\n */\n\n/** The same path from `src/cli/` and from the built `dist/cli/`. */\nconst PACKAGE_JSON = new URL(\"../../package.json\", import.meta.url);\n\nfunction readVersion(): string {\n const packageJson: { version: string } = JSON.parse(fs.readFileSync(PACKAGE_JSON, \"utf8\"));\n return packageJson.version;\n}\n\nfunction terminalStyle(): TextStyle {\n const palette = colors.create();\n palette.enabled = terminalSupportsColor();\n return {\n bold: (text) => palette.bold(text),\n green: (text) => palette.green(text),\n dim: (text) => palette.dim(text),\n };\n}\n\nconst generateTypes: GenerateTypes = async (source, options) =>\n `${COMMENT_HEADER}${astToString(await openapiTS(source, options))}`;\n\nfunction terminalConsole(): CliConsole {\n return {\n // biome-ignore lint/suspicious/noConsole: the CLI's own output lines\n info: (text) => console.info(text),\n // biome-ignore lint/suspicious/noConsole: the CLI's own notices\n notice: (text) => console.warn(text),\n };\n}\n\nfunction processDependencies(): CliDependencies {\n const cwd = process.cwd();\n return {\n cwd: pathToFileURL(`${cwd}/`),\n version: readVersion(),\n logger: defaultLogger(false),\n console: terminalConsole(),\n writeStdout: (text) => process.stdout.write(text),\n stdin: () => process.stdin,\n files: createNodeFileSystem(),\n redoclyConfigs: createRedoclyConfigSource(cwd),\n generate: generateTypes,\n now: monotonicNow,\n style: terminalStyle(),\n };\n}\n\nrunCli(process.argv.slice(2), processDependencies()).then((exitCode) => {\n process.exitCode = exitCode;\n});\n"],"names":["fs","colors","terminalSupportsColor","COMMENT_HEADER","astToString","openapiTS","pathToFileURL","defaultLogger","createNodeFileSystem","createRedoclyConfigSource","monotonicNow","runCli"],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../../src/cli/main.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { isatty } from \"node:tty\";\nimport { pathToFileURL } from \"node:url\";\nimport colors from \"ansi-colors\";\nimport { createNodeFileSystem } from \"../adapters/node-file-system/node-file-system.js\";\nimport { createRedoclyConfigSource } from \"../adapters/redocly-loader/redocly-config-source.js\";\nimport { astToString } from \"../api/ast-to-string.js\";\nimport { COMMENT_HEADER } from \"../api/comment-header.js\";\nimport { defaultLogger, monotonicNow, terminalSupportsColor } from \"../api/default-ports.js\";\nimport openapiTS from \"../api/openapi-ts.js\";\nimport type { CliConsole, CliDependencies, GenerateTypes, TextStyle } from \"./cli-dependencies.js\";\nimport { runCli } from \"./run-cli.js\";\n\n/**\n * The CLI's composition root (ENGINEERING_PLAN 4.5, ADR-012): the only CLI module that touches the\n * process. `bin/cli.js` imports the built copy of this module.\n */\n\n/** The same path from `src/cli/` and from the built `dist/cli/`. */\nconst PACKAGE_JSON = new URL(\"../../package.json\", import.meta.url);\n\nfunction readVersion(): string {\n const packageJson: { version: string } = JSON.parse(fs.readFileSync(PACKAGE_JSON, \"utf8\"));\n return packageJson.version;\n}\n\nfunction terminalStyle(): TextStyle {\n const palette = colors.create();\n palette.enabled = terminalSupportsColor();\n return {\n bold: (text) => palette.bold(text),\n green: (text) => palette.green(text),\n dim: (text) => palette.dim(text),\n };\n}\n\nconst STDIN_DESCRIPTOR = 0;\n\nconst generateTypes: GenerateTypes = async (source, options) =>\n `${COMMENT_HEADER}${astToString(await openapiTS(source, options))}`;\n\nfunction terminalConsole(): CliConsole {\n return {\n // biome-ignore lint/suspicious/noConsole: the CLI's own output lines\n info: (text) => console.info(text),\n // biome-ignore lint/suspicious/noConsole: the CLI's own notices\n notice: (text) => console.warn(text),\n };\n}\n\nfunction processDependencies(): CliDependencies {\n const cwd = process.cwd();\n return {\n cwd: pathToFileURL(`${cwd}/`),\n version: readVersion(),\n logger: defaultLogger(false),\n console: terminalConsole(),\n writeStdout: (text) => process.stdout.write(text),\n stdin: () => process.stdin,\n // `isatty` reads the descriptor without opening `process.stdin`, which would keep the\n // process alive.\n isStdinTerminal: () => isatty(STDIN_DESCRIPTOR),\n files: createNodeFileSystem(),\n redoclyConfigs: createRedoclyConfigSource(cwd),\n generate: generateTypes,\n now: monotonicNow,\n style: terminalStyle(),\n };\n}\n\nrunCli(process.argv.slice(2), processDependencies()).then((exitCode) => {\n process.exitCode = exitCode;\n});\n"],"names":["fs","colors","terminalSupportsColor","COMMENT_HEADER","astToString","openapiTS","pathToFileURL","defaultLogger","isatty","createNodeFileSystem","createRedoclyConfigSource","monotonicNow","runCli"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAe,IAAI,GAAA,CAAI,oBAAA,EAAsB,8PAAe,CAAA;AAElE,SAAS,WAAA,GAAsB;AAC7B,EAAA,MAAM,cAAmC,IAAA,CAAK,KAAA,CAAMA,YAAG,YAAA,CAAa,YAAA,EAAc,MAAM,CAAC,CAAA;AACzF,EAAA,OAAO,WAAA,CAAY,OAAA;AACrB;AAEA,SAAS,aAAA,GAA2B;AAClC,EAAA,MAAM,OAAA,GAAUC,gBAAO,MAAA,EAAO;AAC9B,EAAA,OAAA,CAAQ,UAAUC,kCAAA,EAAsB;AACxC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,IACjC,KAAA,EAAO,CAAC,IAAA,KAAS,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,IACnC,GAAA,EAAK,CAAC,IAAA,KAAS,OAAA,CAAQ,IAAI,IAAI;AAAA,GACjC;AACF;AAEA,MAAM,gBAAA,GAAmB,CAAA;AAEzB,MAAM,aAAA,GAA+B,OAAO,MAAA,EAAQ,OAAA,KAClD,CAAA,EAAGC,4BAAc,CAAA,EAAGC,uBAAA,CAAY,MAAMC,iBAAA,CAAU,MAAA,EAAQ,OAAO,CAAC,CAAC,CAAA,CAAA;AAEnE,SAAS,eAAA,GAA8B;AACrC,EAAA,OAAO;AAAA;AAAA,IAEL,IAAA,EAAM,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA;AAAA,IAEjC,MAAA,EAAQ,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI;AAAA,GACrC;AACF;AAEA,SAAS,mBAAA,GAAuC;AAC9C,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,EAAA,OAAO;AAAA,IACL,GAAA,EAAKC,sBAAA,CAAc,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IAC5B,SAAS,WAAA,EAAY;AAAA,IACrB,MAAA,EAAQC,2BAAc,KAAK,CAAA;AAAA,IAC3B,SAAS,eAAA,EAAgB;AAAA,IACzB,aAAa,CAAC,IAAA,KAAS,OAAA,CAAQ,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,IAChD,KAAA,EAAO,MAAM,OAAA,CAAQ,KAAA;AAAA;AAAA;AAAA,IAGrB,eAAA,EAAiB,MAAMC,eAAA,CAAO,gBAAgB,CAAA;AAAA,IAC9C,OAAOC,mCAAA,EAAqB;AAAA,IAC5B,cAAA,EAAgBC,8CAA0B,GAAG,CAAA;AAAA,IAC7C,QAAA,EAAU,aAAA;AAAA,IACV,GAAA,EAAKC,yBAAA;AAAA,IACL,OAAO,aAAA;AAAc,GACvB;AACF;AAEAC,aAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG,qBAAqB,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,KAAa;AACtE,EAAA,OAAA,CAAQ,QAAA,GAAW,QAAA;AACrB,CAAC,CAAA"}
|
package/dist/cli/main.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import { isatty } from 'node:tty';
|
|
2
3
|
import { pathToFileURL } from 'node:url';
|
|
3
4
|
import colors from 'ansi-colors';
|
|
4
5
|
import { createNodeFileSystem } from '../adapters/node-file-system/node-file-system.mjs';
|
|
@@ -23,6 +24,7 @@ function terminalStyle() {
|
|
|
23
24
|
dim: (text) => palette.dim(text)
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
const STDIN_DESCRIPTOR = 0;
|
|
26
28
|
const generateTypes = async (source, options) => `${COMMENT_HEADER}${astToString(await openapiTS(source, options))}`;
|
|
27
29
|
function terminalConsole() {
|
|
28
30
|
return {
|
|
@@ -41,6 +43,9 @@ function processDependencies() {
|
|
|
41
43
|
console: terminalConsole(),
|
|
42
44
|
writeStdout: (text) => process.stdout.write(text),
|
|
43
45
|
stdin: () => process.stdin,
|
|
46
|
+
// `isatty` reads the descriptor without opening `process.stdin`, which would keep the
|
|
47
|
+
// process alive.
|
|
48
|
+
isStdinTerminal: () => isatty(STDIN_DESCRIPTOR),
|
|
44
49
|
files: createNodeFileSystem(),
|
|
45
50
|
redoclyConfigs: createRedoclyConfigSource(cwd),
|
|
46
51
|
generate: generateTypes,
|
package/dist/cli/main.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.mjs","sources":["../../src/cli/main.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport colors from \"ansi-colors\";\nimport { createNodeFileSystem } from \"../adapters/node-file-system/node-file-system.js\";\nimport { createRedoclyConfigSource } from \"../adapters/redocly-loader/redocly-config-source.js\";\nimport { astToString } from \"../api/ast-to-string.js\";\nimport { COMMENT_HEADER } from \"../api/comment-header.js\";\nimport { defaultLogger, monotonicNow, terminalSupportsColor } from \"../api/default-ports.js\";\nimport openapiTS from \"../api/openapi-ts.js\";\nimport type { CliConsole, CliDependencies, GenerateTypes, TextStyle } from \"./cli-dependencies.js\";\nimport { runCli } from \"./run-cli.js\";\n\n/**\n * The CLI's composition root (ENGINEERING_PLAN 4.5, ADR-012): the only CLI module that touches the\n * process. `bin/cli.js` imports the built copy of this module.\n */\n\n/** The same path from `src/cli/` and from the built `dist/cli/`. */\nconst PACKAGE_JSON = new URL(\"../../package.json\", import.meta.url);\n\nfunction readVersion(): string {\n const packageJson: { version: string } = JSON.parse(fs.readFileSync(PACKAGE_JSON, \"utf8\"));\n return packageJson.version;\n}\n\nfunction terminalStyle(): TextStyle {\n const palette = colors.create();\n palette.enabled = terminalSupportsColor();\n return {\n bold: (text) => palette.bold(text),\n green: (text) => palette.green(text),\n dim: (text) => palette.dim(text),\n };\n}\n\nconst generateTypes: GenerateTypes = async (source, options) =>\n `${COMMENT_HEADER}${astToString(await openapiTS(source, options))}`;\n\nfunction terminalConsole(): CliConsole {\n return {\n // biome-ignore lint/suspicious/noConsole: the CLI's own output lines\n info: (text) => console.info(text),\n // biome-ignore lint/suspicious/noConsole: the CLI's own notices\n notice: (text) => console.warn(text),\n };\n}\n\nfunction processDependencies(): CliDependencies {\n const cwd = process.cwd();\n return {\n cwd: pathToFileURL(`${cwd}/`),\n version: readVersion(),\n logger: defaultLogger(false),\n console: terminalConsole(),\n writeStdout: (text) => process.stdout.write(text),\n stdin: () => process.stdin,\n files: createNodeFileSystem(),\n redoclyConfigs: createRedoclyConfigSource(cwd),\n generate: generateTypes,\n now: monotonicNow,\n style: terminalStyle(),\n };\n}\n\nrunCli(process.argv.slice(2), processDependencies()).then((exitCode) => {\n process.exitCode = exitCode;\n});\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.mjs","sources":["../../src/cli/main.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { isatty } from \"node:tty\";\nimport { pathToFileURL } from \"node:url\";\nimport colors from \"ansi-colors\";\nimport { createNodeFileSystem } from \"../adapters/node-file-system/node-file-system.js\";\nimport { createRedoclyConfigSource } from \"../adapters/redocly-loader/redocly-config-source.js\";\nimport { astToString } from \"../api/ast-to-string.js\";\nimport { COMMENT_HEADER } from \"../api/comment-header.js\";\nimport { defaultLogger, monotonicNow, terminalSupportsColor } from \"../api/default-ports.js\";\nimport openapiTS from \"../api/openapi-ts.js\";\nimport type { CliConsole, CliDependencies, GenerateTypes, TextStyle } from \"./cli-dependencies.js\";\nimport { runCli } from \"./run-cli.js\";\n\n/**\n * The CLI's composition root (ENGINEERING_PLAN 4.5, ADR-012): the only CLI module that touches the\n * process. `bin/cli.js` imports the built copy of this module.\n */\n\n/** The same path from `src/cli/` and from the built `dist/cli/`. */\nconst PACKAGE_JSON = new URL(\"../../package.json\", import.meta.url);\n\nfunction readVersion(): string {\n const packageJson: { version: string } = JSON.parse(fs.readFileSync(PACKAGE_JSON, \"utf8\"));\n return packageJson.version;\n}\n\nfunction terminalStyle(): TextStyle {\n const palette = colors.create();\n palette.enabled = terminalSupportsColor();\n return {\n bold: (text) => palette.bold(text),\n green: (text) => palette.green(text),\n dim: (text) => palette.dim(text),\n };\n}\n\nconst STDIN_DESCRIPTOR = 0;\n\nconst generateTypes: GenerateTypes = async (source, options) =>\n `${COMMENT_HEADER}${astToString(await openapiTS(source, options))}`;\n\nfunction terminalConsole(): CliConsole {\n return {\n // biome-ignore lint/suspicious/noConsole: the CLI's own output lines\n info: (text) => console.info(text),\n // biome-ignore lint/suspicious/noConsole: the CLI's own notices\n notice: (text) => console.warn(text),\n };\n}\n\nfunction processDependencies(): CliDependencies {\n const cwd = process.cwd();\n return {\n cwd: pathToFileURL(`${cwd}/`),\n version: readVersion(),\n logger: defaultLogger(false),\n console: terminalConsole(),\n writeStdout: (text) => process.stdout.write(text),\n stdin: () => process.stdin,\n // `isatty` reads the descriptor without opening `process.stdin`, which would keep the\n // process alive.\n isStdinTerminal: () => isatty(STDIN_DESCRIPTOR),\n files: createNodeFileSystem(),\n redoclyConfigs: createRedoclyConfigSource(cwd),\n generate: generateTypes,\n now: monotonicNow,\n style: terminalStyle(),\n };\n}\n\nrunCli(process.argv.slice(2), processDependencies()).then((exitCode) => {\n process.exitCode = exitCode;\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAe,IAAI,GAAA,CAAI,oBAAA,EAAsB,YAAY,GAAG,CAAA;AAElE,SAAS,WAAA,GAAsB;AAC7B,EAAA,MAAM,cAAmC,IAAA,CAAK,KAAA,CAAM,GAAG,YAAA,CAAa,YAAA,EAAc,MAAM,CAAC,CAAA;AACzF,EAAA,OAAO,WAAA,CAAY,OAAA;AACrB;AAEA,SAAS,aAAA,GAA2B;AAClC,EAAA,MAAM,OAAA,GAAU,OAAO,MAAA,EAAO;AAC9B,EAAA,OAAA,CAAQ,UAAU,qBAAA,EAAsB;AACxC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,IACjC,KAAA,EAAO,CAAC,IAAA,KAAS,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,IACnC,GAAA,EAAK,CAAC,IAAA,KAAS,OAAA,CAAQ,IAAI,IAAI;AAAA,GACjC;AACF;AAEA,MAAM,gBAAA,GAAmB,CAAA;AAEzB,MAAM,aAAA,GAA+B,OAAO,MAAA,EAAQ,OAAA,KAClD,CAAA,EAAG,cAAc,CAAA,EAAG,WAAA,CAAY,MAAM,SAAA,CAAU,MAAA,EAAQ,OAAO,CAAC,CAAC,CAAA,CAAA;AAEnE,SAAS,eAAA,GAA8B;AACrC,EAAA,OAAO;AAAA;AAAA,IAEL,IAAA,EAAM,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA;AAAA,IAEjC,MAAA,EAAQ,CAAC,IAAA,KAAS,OAAA,CAAQ,KAAK,IAAI;AAAA,GACrC;AACF;AAEA,SAAS,mBAAA,GAAuC;AAC9C,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,aAAA,CAAc,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,IAC5B,SAAS,WAAA,EAAY;AAAA,IACrB,MAAA,EAAQ,cAAc,KAAK,CAAA;AAAA,IAC3B,SAAS,eAAA,EAAgB;AAAA,IACzB,aAAa,CAAC,IAAA,KAAS,OAAA,CAAQ,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,IAChD,KAAA,EAAO,MAAM,OAAA,CAAQ,KAAA;AAAA;AAAA;AAAA,IAGrB,eAAA,EAAiB,MAAM,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC9C,OAAO,oBAAA,EAAqB;AAAA,IAC5B,cAAA,EAAgB,0BAA0B,GAAG,CAAA;AAAA,IAC7C,QAAA,EAAU,aAAA;AAAA,IACV,GAAA,EAAK,YAAA;AAAA,IACL,OAAO,aAAA;AAAc,GACvB;AACF;AAEA,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG,qBAAqB,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,KAAa;AACtE,EAAA,OAAA,CAAQ,QAAA,GAAW,QAAA;AACrB,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const scule = require('scule');
|
|
4
|
+
const apiSettings = require('./api-settings.cjs');
|
|
4
5
|
const cliArguments = require('./cli-arguments.cjs');
|
|
5
6
|
const cliErrors = require('./cli-errors.cjs');
|
|
6
7
|
const cliOutput = require('./cli-output.cjs');
|
|
@@ -9,7 +10,6 @@ const fixOption = require('./fix-option.cjs');
|
|
|
9
10
|
const refLimits = require('./ref-limits.cjs');
|
|
10
11
|
|
|
11
12
|
const REDOCLY_CONFIG_KEY = "x-openapi-ts";
|
|
12
|
-
const FIX_SETTING = "fix";
|
|
13
13
|
function redoclyApisOf(redocly) {
|
|
14
14
|
return Object.entries(redocly.apis ?? {}).map(([name, api]) => {
|
|
15
15
|
const settings = api[REDOCLY_CONFIG_KEY];
|
|
@@ -30,29 +30,37 @@ function apiFlags(settings) {
|
|
|
30
30
|
return flags;
|
|
31
31
|
}
|
|
32
32
|
function apiFixNames(settings) {
|
|
33
|
-
return fixOption.fixNamesOf(settings[FIX_SETTING]);
|
|
33
|
+
return fixOption.fixNamesOf(settings[apiSettings.FIX_SETTING]);
|
|
34
34
|
}
|
|
35
35
|
function configRootOf(redocly, cwd) {
|
|
36
|
-
return redocly.configFile ? cliOutput.
|
|
36
|
+
return redocly.configFile ? cliOutput.resolveLocationUrl(redocly.configFile, cwd) : cwd;
|
|
37
37
|
}
|
|
38
38
|
async function generateApi(run, redocly, api) {
|
|
39
|
-
if (!api.settings?.
|
|
39
|
+
if (!api.settings?.[apiSettings.OUTPUT_SETTING]) {
|
|
40
40
|
throw cliErrors.cliError(
|
|
41
41
|
"CLI_CONFIG_OUTPUT_MISSING",
|
|
42
42
|
`API ${api.name} is missing an \`${REDOCLY_CONFIG_KEY}.output\` key. See ${docsLinks.MULTIPLE_SCHEMAS_DOCS_URL}`
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
|
-
const
|
|
45
|
+
for (const warning of apiSettings.unknownSettingWarnings(api.name, api.settings)) {
|
|
46
|
+
run.deps.logger.warn(warning);
|
|
47
|
+
}
|
|
48
|
+
const output = String(api.settings[apiSettings.OUTPUT_SETTING]);
|
|
46
49
|
const configRoot = configRootOf(redocly, run.deps.cwd);
|
|
47
50
|
const options = {
|
|
48
51
|
...run.args.generatorFlags,
|
|
49
52
|
...apiFlags(api.settings),
|
|
50
53
|
...refLimits.refLimitOptions(run.args, run.deps.cwd),
|
|
54
|
+
...apiSettings.apiRefLimitOptions(api.name, api.settings, configRoot),
|
|
51
55
|
...fixOption.fixOption(apiFixNames(api.settings) ?? run.args.fix),
|
|
52
56
|
redocly
|
|
53
57
|
};
|
|
54
|
-
const contents = await run.deps.generate(
|
|
55
|
-
cliOutput.emitOutput(
|
|
58
|
+
const contents = await run.deps.generate(cliOutput.resolveLocationUrl(api.root, configRoot), options);
|
|
59
|
+
cliOutput.emitOutput(
|
|
60
|
+
run,
|
|
61
|
+
{ source: api.name, output, file: cliOutput.resolveLocationUrl(output, configRoot) },
|
|
62
|
+
contents
|
|
63
|
+
);
|
|
56
64
|
}
|
|
57
65
|
async function generateRedoclyApis(run, redocly) {
|
|
58
66
|
const apis = redoclyApisOf(redocly);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redocly-apis.cjs","sources":["../../src/cli/redocly-apis.ts"],"sourcesContent":["import { kebabCase } from \"scule\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport type { OutputFixName } from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions } from \"../types.js\";\nimport { GENERATOR_FLAGS, type GeneratorFlags } from \"./cli-arguments.js\";\nimport { cliError } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput,
|
|
1
|
+
{"version":3,"file":"redocly-apis.cjs","sources":["../../src/cli/redocly-apis.ts"],"sourcesContent":["import { kebabCase } from \"scule\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport type { OutputFixName } from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions } from \"../types.js\";\nimport {\n type ApiSettings,\n apiRefLimitOptions,\n FIX_SETTING,\n OUTPUT_SETTING,\n unknownSettingWarnings,\n} from \"./api-settings.js\";\nimport { GENERATOR_FLAGS, type GeneratorFlags } from \"./cli-arguments.js\";\nimport { cliError } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput, resolveLocationUrl } from \"./cli-output.js\";\nimport { MULTIPLE_SCHEMAS_DOCS_URL } from \"./docs-links.js\";\nimport { fixNamesOf, fixOption } from \"./fix-option.js\";\nimport { refLimitOptions } from \"./ref-limits.js\";\n\n/** The `apis` of a Redocly config: each API is generated into its `x-openapi-ts.output`. */\n\n/** The key of an API's openapi-typesafe settings in `redocly.yaml`. */\nconst REDOCLY_CONFIG_KEY = \"x-openapi-ts\";\n\ninterface RedoclyApi {\n readonly name: string;\n readonly root: string;\n readonly settings: ApiSettings | undefined;\n}\n\nfunction redoclyApisOf(redocly: RedoclyConfig): RedoclyApi[] {\n return Object.entries(redocly.apis ?? {}).map(([name, api]) => {\n const settings = (api as Record<string, unknown>)[REDOCLY_CONFIG_KEY];\n return { name, root: api.root, settings: settings as ApiSettings | undefined };\n });\n}\n\nexport function hasRedoclyApis(redocly: RedoclyConfig): boolean {\n return Object.keys(redocly.apis ?? {}).length > 0;\n}\n\n/** The boolean flags an API sets, in camelCase or kebab-case; they win over the CLI's flags. */\nfunction apiFlags(settings: ApiSettings): GeneratorFlags {\n const flags: Partial<Record<(typeof GENERATOR_FLAGS)[number], boolean>> = {};\n for (const name of GENERATOR_FLAGS) {\n const value = typeof settings[name] === \"boolean\" ? settings[name] : settings[kebabCase(name)];\n if (typeof value === \"boolean\") {\n flags[name] = value;\n }\n }\n return flags;\n}\n\n/** The API's `fix` names; they replace the CLI's `--fix`, as its boolean settings win (ADR-021). */\nfunction apiFixNames(settings: ApiSettings): readonly OutputFixName[] | undefined {\n return fixNamesOf(settings[FIX_SETTING]);\n}\n\n/** Paths in the config are relative to the config file; without a file, to the working dir. */\nfunction configRootOf(redocly: RedoclyConfig, cwd: URL): URL {\n return redocly.configFile ? resolveLocationUrl(redocly.configFile, cwd) : cwd;\n}\n\nasync function generateApi(run: CliRun, redocly: RedoclyConfig, api: RedoclyApi): Promise<void> {\n if (!api.settings?.[OUTPUT_SETTING]) {\n throw cliError(\n \"CLI_CONFIG_OUTPUT_MISSING\",\n `API ${api.name} is missing an \\`${REDOCLY_CONFIG_KEY}.output\\` key. ` +\n `See ${MULTIPLE_SCHEMAS_DOCS_URL}`,\n );\n }\n for (const warning of unknownSettingWarnings(api.name, api.settings)) {\n run.deps.logger.warn(warning);\n }\n const output = String(api.settings[OUTPUT_SETTING]);\n const configRoot = configRootOf(redocly, run.deps.cwd);\n const options: GeneratorOptions = {\n ...run.args.generatorFlags,\n ...apiFlags(api.settings),\n ...refLimitOptions(run.args, run.deps.cwd),\n ...apiRefLimitOptions(api.name, api.settings, configRoot),\n ...fixOption(apiFixNames(api.settings) ?? run.args.fix),\n redocly,\n };\n const contents = await run.deps.generate(resolveLocationUrl(api.root, configRoot), options);\n emitOutput(\n run,\n { source: api.name, output, file: resolveLocationUrl(output, configRoot) },\n contents,\n );\n}\n\n/**\n * Generate every API of the config, concurrently. Every API is generated or checked even when\n * another fails, so `--check` reports a stale output wherever it is; the failures are returned\n * in the order of the config.\n */\nexport async function generateRedoclyApis(run: CliRun, redocly: RedoclyConfig): Promise<unknown[]> {\n const apis = redoclyApisOf(redocly);\n const results = await Promise.allSettled(apis.map((api) => generateApi(run, redocly, api)));\n return results.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n}\n"],"names":["GENERATOR_FLAGS","kebabCase","fixNamesOf","FIX_SETTING","resolveLocationUrl","OUTPUT_SETTING","cliError","MULTIPLE_SCHEMAS_DOCS_URL","unknownSettingWarnings","refLimitOptions","apiRefLimitOptions","fixOption","emitOutput"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { kebabCase } from 'scule';
|
|
2
|
+
import { OUTPUT_SETTING, unknownSettingWarnings, apiRefLimitOptions, FIX_SETTING } from './api-settings.mjs';
|
|
2
3
|
import { GENERATOR_FLAGS } from './cli-arguments.mjs';
|
|
3
4
|
import { cliError } from './cli-errors.mjs';
|
|
4
|
-
import {
|
|
5
|
+
import { resolveLocationUrl, emitOutput } from './cli-output.mjs';
|
|
5
6
|
import { MULTIPLE_SCHEMAS_DOCS_URL } from './docs-links.mjs';
|
|
6
7
|
import { fixOption, fixNamesOf } from './fix-option.mjs';
|
|
7
8
|
import { refLimitOptions } from './ref-limits.mjs';
|
|
8
9
|
|
|
9
10
|
const REDOCLY_CONFIG_KEY = "x-openapi-ts";
|
|
10
|
-
const FIX_SETTING = "fix";
|
|
11
11
|
function redoclyApisOf(redocly) {
|
|
12
12
|
return Object.entries(redocly.apis ?? {}).map(([name, api]) => {
|
|
13
13
|
const settings = api[REDOCLY_CONFIG_KEY];
|
|
@@ -31,26 +31,34 @@ function apiFixNames(settings) {
|
|
|
31
31
|
return fixNamesOf(settings[FIX_SETTING]);
|
|
32
32
|
}
|
|
33
33
|
function configRootOf(redocly, cwd) {
|
|
34
|
-
return redocly.configFile ?
|
|
34
|
+
return redocly.configFile ? resolveLocationUrl(redocly.configFile, cwd) : cwd;
|
|
35
35
|
}
|
|
36
36
|
async function generateApi(run, redocly, api) {
|
|
37
|
-
if (!api.settings?.
|
|
37
|
+
if (!api.settings?.[OUTPUT_SETTING]) {
|
|
38
38
|
throw cliError(
|
|
39
39
|
"CLI_CONFIG_OUTPUT_MISSING",
|
|
40
40
|
`API ${api.name} is missing an \`${REDOCLY_CONFIG_KEY}.output\` key. See ${MULTIPLE_SCHEMAS_DOCS_URL}`
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
|
-
const
|
|
43
|
+
for (const warning of unknownSettingWarnings(api.name, api.settings)) {
|
|
44
|
+
run.deps.logger.warn(warning);
|
|
45
|
+
}
|
|
46
|
+
const output = String(api.settings[OUTPUT_SETTING]);
|
|
44
47
|
const configRoot = configRootOf(redocly, run.deps.cwd);
|
|
45
48
|
const options = {
|
|
46
49
|
...run.args.generatorFlags,
|
|
47
50
|
...apiFlags(api.settings),
|
|
48
51
|
...refLimitOptions(run.args, run.deps.cwd),
|
|
52
|
+
...apiRefLimitOptions(api.name, api.settings, configRoot),
|
|
49
53
|
...fixOption(apiFixNames(api.settings) ?? run.args.fix),
|
|
50
54
|
redocly
|
|
51
55
|
};
|
|
52
|
-
const contents = await run.deps.generate(
|
|
53
|
-
emitOutput(
|
|
56
|
+
const contents = await run.deps.generate(resolveLocationUrl(api.root, configRoot), options);
|
|
57
|
+
emitOutput(
|
|
58
|
+
run,
|
|
59
|
+
{ source: api.name, output, file: resolveLocationUrl(output, configRoot) },
|
|
60
|
+
contents
|
|
61
|
+
);
|
|
54
62
|
}
|
|
55
63
|
async function generateRedoclyApis(run, redocly) {
|
|
56
64
|
const apis = redoclyApisOf(redocly);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redocly-apis.mjs","sources":["../../src/cli/redocly-apis.ts"],"sourcesContent":["import { kebabCase } from \"scule\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport type { OutputFixName } from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions } from \"../types.js\";\nimport { GENERATOR_FLAGS, type GeneratorFlags } from \"./cli-arguments.js\";\nimport { cliError } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput,
|
|
1
|
+
{"version":3,"file":"redocly-apis.mjs","sources":["../../src/cli/redocly-apis.ts"],"sourcesContent":["import { kebabCase } from \"scule\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport type { OutputFixName } from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions } from \"../types.js\";\nimport {\n type ApiSettings,\n apiRefLimitOptions,\n FIX_SETTING,\n OUTPUT_SETTING,\n unknownSettingWarnings,\n} from \"./api-settings.js\";\nimport { GENERATOR_FLAGS, type GeneratorFlags } from \"./cli-arguments.js\";\nimport { cliError } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput, resolveLocationUrl } from \"./cli-output.js\";\nimport { MULTIPLE_SCHEMAS_DOCS_URL } from \"./docs-links.js\";\nimport { fixNamesOf, fixOption } from \"./fix-option.js\";\nimport { refLimitOptions } from \"./ref-limits.js\";\n\n/** The `apis` of a Redocly config: each API is generated into its `x-openapi-ts.output`. */\n\n/** The key of an API's openapi-typesafe settings in `redocly.yaml`. */\nconst REDOCLY_CONFIG_KEY = \"x-openapi-ts\";\n\ninterface RedoclyApi {\n readonly name: string;\n readonly root: string;\n readonly settings: ApiSettings | undefined;\n}\n\nfunction redoclyApisOf(redocly: RedoclyConfig): RedoclyApi[] {\n return Object.entries(redocly.apis ?? {}).map(([name, api]) => {\n const settings = (api as Record<string, unknown>)[REDOCLY_CONFIG_KEY];\n return { name, root: api.root, settings: settings as ApiSettings | undefined };\n });\n}\n\nexport function hasRedoclyApis(redocly: RedoclyConfig): boolean {\n return Object.keys(redocly.apis ?? {}).length > 0;\n}\n\n/** The boolean flags an API sets, in camelCase or kebab-case; they win over the CLI's flags. */\nfunction apiFlags(settings: ApiSettings): GeneratorFlags {\n const flags: Partial<Record<(typeof GENERATOR_FLAGS)[number], boolean>> = {};\n for (const name of GENERATOR_FLAGS) {\n const value = typeof settings[name] === \"boolean\" ? settings[name] : settings[kebabCase(name)];\n if (typeof value === \"boolean\") {\n flags[name] = value;\n }\n }\n return flags;\n}\n\n/** The API's `fix` names; they replace the CLI's `--fix`, as its boolean settings win (ADR-021). */\nfunction apiFixNames(settings: ApiSettings): readonly OutputFixName[] | undefined {\n return fixNamesOf(settings[FIX_SETTING]);\n}\n\n/** Paths in the config are relative to the config file; without a file, to the working dir. */\nfunction configRootOf(redocly: RedoclyConfig, cwd: URL): URL {\n return redocly.configFile ? resolveLocationUrl(redocly.configFile, cwd) : cwd;\n}\n\nasync function generateApi(run: CliRun, redocly: RedoclyConfig, api: RedoclyApi): Promise<void> {\n if (!api.settings?.[OUTPUT_SETTING]) {\n throw cliError(\n \"CLI_CONFIG_OUTPUT_MISSING\",\n `API ${api.name} is missing an \\`${REDOCLY_CONFIG_KEY}.output\\` key. ` +\n `See ${MULTIPLE_SCHEMAS_DOCS_URL}`,\n );\n }\n for (const warning of unknownSettingWarnings(api.name, api.settings)) {\n run.deps.logger.warn(warning);\n }\n const output = String(api.settings[OUTPUT_SETTING]);\n const configRoot = configRootOf(redocly, run.deps.cwd);\n const options: GeneratorOptions = {\n ...run.args.generatorFlags,\n ...apiFlags(api.settings),\n ...refLimitOptions(run.args, run.deps.cwd),\n ...apiRefLimitOptions(api.name, api.settings, configRoot),\n ...fixOption(apiFixNames(api.settings) ?? run.args.fix),\n redocly,\n };\n const contents = await run.deps.generate(resolveLocationUrl(api.root, configRoot), options);\n emitOutput(\n run,\n { source: api.name, output, file: resolveLocationUrl(output, configRoot) },\n contents,\n );\n}\n\n/**\n * Generate every API of the config, concurrently. Every API is generated or checked even when\n * another fails, so `--check` reports a stale output wherever it is; the failures are returned\n * in the order of the config.\n */\nexport async function generateRedoclyApis(run: CliRun, redocly: RedoclyConfig): Promise<unknown[]> {\n const apis = redoclyApisOf(redocly);\n const results = await Promise.allSettled(apis.map((api) => generateApi(run, redocly, api)));\n return results.flatMap((result) => (result.status === \"rejected\" ? [result.reason] : []));\n}\n"],"names":[],"mappings":";;;;;;;;;AAqBA,MAAM,kBAAA,GAAqB,cAAA;AAQ3B,SAAS,cAAc,OAAA,EAAsC;AAC3D,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,IAAQ,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,GAAG,CAAA,KAAM;AAC7D,IAAA,MAAM,QAAA,GAAY,IAAgC,kBAAkB,CAAA;AACpE,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,CAAI,MAAM,QAAA,EAA8C;AAAA,EAC/E,CAAC,CAAA;AACH;AAEO,SAAS,eAAe,OAAA,EAAiC;AAC9D,EAAA,OAAO,OAAO,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,EAAE,MAAA,GAAS,CAAA;AAClD;AAGA,SAAS,SAAS,QAAA,EAAuC;AACvD,EAAA,MAAM,QAAoE,EAAC;AAC3E,EAAA,KAAA,MAAW,QAAQ,eAAA,EAAiB;AAClC,IAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,CAAS,IAAI,CAAA,KAAM,SAAA,GAAY,QAAA,CAAS,IAAI,CAAA,GAAI,QAAA,CAAS,SAAA,CAAU,IAAI,CAAC,CAAA;AAC7F,IAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,MAAA,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAGA,SAAS,YAAY,QAAA,EAA6D;AAChF,EAAA,OAAO,UAAA,CAAW,QAAA,CAAS,WAAW,CAAC,CAAA;AACzC;AAGA,SAAS,YAAA,CAAa,SAAwB,GAAA,EAAe;AAC3D,EAAA,OAAO,QAAQ,UAAA,GAAa,kBAAA,CAAmB,OAAA,CAAQ,UAAA,EAAY,GAAG,CAAA,GAAI,GAAA;AAC5E;AAEA,eAAe,WAAA,CAAY,GAAA,EAAa,OAAA,EAAwB,GAAA,EAAgC;AAC9F,EAAA,IAAI,CAAC,GAAA,CAAI,QAAA,GAAW,cAAc,CAAA,EAAG;AACnC,IAAA,MAAM,QAAA;AAAA,MACJ,2BAAA;AAAA,MACA,OAAO,GAAA,CAAI,IAAI,CAAA,iBAAA,EAAoB,kBAAkB,sBAC5C,yBAAyB,CAAA;AAAA,KACpC;AAAA,EACF;AACA,EAAA,KAAA,MAAW,WAAW,sBAAA,CAAuB,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,QAAQ,CAAA,EAAG;AACpE,IAAA,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,QAAA,CAAS,cAAc,CAAC,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,OAAA,EAAS,GAAA,CAAI,KAAK,GAAG,CAAA;AACrD,EAAA,MAAM,OAAA,GAA4B;AAAA,IAChC,GAAG,IAAI,IAAA,CAAK,cAAA;AAAA,IACZ,GAAG,QAAA,CAAS,GAAA,CAAI,QAAQ,CAAA;AAAA,IACxB,GAAG,eAAA,CAAgB,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,IACzC,GAAG,kBAAA,CAAmB,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,UAAU,UAAU,CAAA;AAAA,IACxD,GAAG,UAAU,WAAA,CAAY,GAAA,CAAI,QAAQ,CAAA,IAAK,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,IACtD;AAAA,GACF;AACA,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,mBAAmB,GAAA,CAAI,IAAA,EAAM,UAAU,CAAA,EAAG,OAAO,CAAA;AAC1F,EAAA,UAAA;AAAA,IACE,GAAA;AAAA,IACA,EAAE,QAAQ,GAAA,CAAI,IAAA,EAAM,QAAQ,IAAA,EAAM,kBAAA,CAAmB,MAAA,EAAQ,UAAU,CAAA,EAAE;AAAA,IACzE;AAAA,GACF;AACF;AAOA,eAAsB,mBAAA,CAAoB,KAAa,OAAA,EAA4C;AACjG,EAAA,MAAM,IAAA,GAAO,cAAc,OAAO,CAAA;AAClC,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,WAAA,CAAY,GAAA,EAAK,OAAA,EAAS,GAAG,CAAC,CAAC,CAAA;AAC1F,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAY,MAAA,CAAO,MAAA,KAAW,UAAA,GAAa,CAAC,MAAA,CAAO,MAAM,CAAA,GAAI,EAAG,CAAA;AAC1F;;"}
|
package/dist/cli/ref-limits.cjs
CHANGED
|
@@ -5,7 +5,7 @@ const cliOutput = require('./cli-output.cjs');
|
|
|
5
5
|
function refLimitOptions(args, cwd) {
|
|
6
6
|
const { localRefRoot, remoteRefHosts } = args.refLimits;
|
|
7
7
|
return {
|
|
8
|
-
...localRefRoot === void 0 ? {} : { localRefRoot: cliOutput.
|
|
8
|
+
...localRefRoot === void 0 ? {} : { localRefRoot: cliOutput.resolveLocationUrl(localRefRoot, cwd) },
|
|
9
9
|
...remoteRefHosts === void 0 ? {} : { remoteRefHosts }
|
|
10
10
|
};
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-limits.cjs","sources":["../../src/cli/ref-limits.ts"],"sourcesContent":["import type { GeneratorOptions } from \"../types.js\";\nimport type { CliArguments } from \"./cli-arguments.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"ref-limits.cjs","sources":["../../src/cli/ref-limits.ts"],"sourcesContent":["import type { GeneratorOptions } from \"../types.js\";\nimport type { CliArguments } from \"./cli-arguments.js\";\nimport { resolveLocationUrl } from \"./cli-output.js\";\n\n/** The `$ref` limits of the CLI flags as generator options (threat model R1, R2, ADR-017). */\n\nexport type RefLimitOptions = Pick<GeneratorOptions, \"localRefRoot\" | \"remoteRefHosts\">;\n\n/** `--local-ref-root` resolves against the working directory, like every other CLI path. */\nexport function refLimitOptions(args: CliArguments, cwd: URL): RefLimitOptions {\n const { localRefRoot, remoteRefHosts } = args.refLimits;\n return {\n ...(localRefRoot === undefined ? {} : { localRefRoot: resolveLocationUrl(localRefRoot, cwd) }),\n ...(remoteRefHosts === undefined ? {} : { remoteRefHosts }),\n };\n}\n"],"names":["resolveLocationUrl"],"mappings":";;;;AASO,SAAS,eAAA,CAAgB,MAAoB,GAAA,EAA2B;AAC7E,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,IAAA,CAAK,SAAA;AAC9C,EAAA,OAAO;AAAA,IACL,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAC,GAAI,EAAE,YAAA,EAAcA,4BAAA,CAAmB,YAAA,EAAc,GAAG,CAAA,EAAE;AAAA,IAC5F,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA;AAAe,GAC3D;AACF;;"}
|
package/dist/cli/ref-limits.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveLocationUrl } from './cli-output.mjs';
|
|
2
2
|
|
|
3
3
|
function refLimitOptions(args, cwd) {
|
|
4
4
|
const { localRefRoot, remoteRefHosts } = args.refLimits;
|
|
5
5
|
return {
|
|
6
|
-
...localRefRoot === void 0 ? {} : { localRefRoot:
|
|
6
|
+
...localRefRoot === void 0 ? {} : { localRefRoot: resolveLocationUrl(localRefRoot, cwd) },
|
|
7
7
|
...remoteRefHosts === void 0 ? {} : { remoteRefHosts }
|
|
8
8
|
};
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-limits.mjs","sources":["../../src/cli/ref-limits.ts"],"sourcesContent":["import type { GeneratorOptions } from \"../types.js\";\nimport type { CliArguments } from \"./cli-arguments.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"ref-limits.mjs","sources":["../../src/cli/ref-limits.ts"],"sourcesContent":["import type { GeneratorOptions } from \"../types.js\";\nimport type { CliArguments } from \"./cli-arguments.js\";\nimport { resolveLocationUrl } from \"./cli-output.js\";\n\n/** The `$ref` limits of the CLI flags as generator options (threat model R1, R2, ADR-017). */\n\nexport type RefLimitOptions = Pick<GeneratorOptions, \"localRefRoot\" | \"remoteRefHosts\">;\n\n/** `--local-ref-root` resolves against the working directory, like every other CLI path. */\nexport function refLimitOptions(args: CliArguments, cwd: URL): RefLimitOptions {\n const { localRefRoot, remoteRefHosts } = args.refLimits;\n return {\n ...(localRefRoot === undefined ? {} : { localRefRoot: resolveLocationUrl(localRefRoot, cwd) }),\n ...(remoteRefHosts === undefined ? {} : { remoteRefHosts }),\n };\n}\n"],"names":[],"mappings":";;AASO,SAAS,eAAA,CAAgB,MAAoB,GAAA,EAA2B;AAC7E,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,IAAA,CAAK,SAAA;AAC9C,EAAA,OAAO;AAAA,IACL,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAC,GAAI,EAAE,YAAA,EAAc,kBAAA,CAAmB,YAAA,EAAc,GAAG,CAAA,EAAE;AAAA,IAC5F,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA;AAAe,GAC3D;AACF;;"}
|
package/dist/cli/run-cli.cjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const warnings = require('../domain/warnings.cjs');
|
|
3
4
|
const cliArguments = require('./cli-arguments.cjs');
|
|
4
5
|
const cliErrors = require('./cli-errors.cjs');
|
|
5
6
|
const cliOutput = require('./cli-output.cjs');
|
|
@@ -18,6 +19,19 @@ async function loadRedoclyConfig(run) {
|
|
|
18
19
|
}
|
|
19
20
|
return configPath ? redoclyConfigs.load(configPath) : redoclyConfigs.createDefault();
|
|
20
21
|
}
|
|
22
|
+
function schemaSource(run) {
|
|
23
|
+
const { input } = run.args;
|
|
24
|
+
if (input) {
|
|
25
|
+
return cliOutput.resolveLocationUrl(input, run.deps.cwd);
|
|
26
|
+
}
|
|
27
|
+
if (run.deps.isStdinTerminal()) {
|
|
28
|
+
throw cliErrors.cliError(
|
|
29
|
+
"CLI_INPUT_MISSING",
|
|
30
|
+
"No schema given: pass a schema path or URL, pipe a schema into stdin, or define `apis` in redocly.yaml. See --help."
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return run.deps.stdin();
|
|
34
|
+
}
|
|
21
35
|
async function generateSingleSchema(run, redocly) {
|
|
22
36
|
const { input, output } = run.args;
|
|
23
37
|
if (input?.includes("*")) {
|
|
@@ -32,7 +46,7 @@ async function generateSingleSchema(run, redocly) {
|
|
|
32
46
|
"--check needs the generated file to compare with: add --output <file>."
|
|
33
47
|
);
|
|
34
48
|
}
|
|
35
|
-
const source =
|
|
49
|
+
const source = schemaSource(run);
|
|
36
50
|
const options = {
|
|
37
51
|
...run.args.generatorFlags,
|
|
38
52
|
...refLimits.refLimitOptions(run.args, run.deps.cwd),
|
|
@@ -45,7 +59,7 @@ async function generateSingleSchema(run, redocly) {
|
|
|
45
59
|
run.deps.writeStdout(contents);
|
|
46
60
|
return;
|
|
47
61
|
}
|
|
48
|
-
const file = cliOutput.
|
|
62
|
+
const file = cliOutput.resolveLocationUrl(output, run.deps.cwd);
|
|
49
63
|
cliOutput.emitOutput(run, { source: input ?? "stdin", output, file }, contents);
|
|
50
64
|
}
|
|
51
65
|
async function generate(run) {
|
|
@@ -56,7 +70,10 @@ async function generate(run) {
|
|
|
56
70
|
}
|
|
57
71
|
if (run.args.input) {
|
|
58
72
|
run.deps.logger.warn(
|
|
59
|
-
|
|
73
|
+
warnings.warningText(
|
|
74
|
+
"APIs are specified both in Redocly Config and CLI argument. Only using Redocly config.",
|
|
75
|
+
warnings.WARNING_CODES.CLI_INPUT_IGNORED
|
|
76
|
+
)
|
|
60
77
|
);
|
|
61
78
|
}
|
|
62
79
|
return redoclyApis.generateRedoclyApis(run, redocly);
|
package/dist/cli/run-cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.cjs","sources":["../../src/cli/run-cli.ts"],"sourcesContent":["import type { Logger } from \"../application/ports/logger.js\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport { ineffectiveFlagNotices, parseCliArguments } from \"./cli-arguments.js\";\nimport type { CliDependencies } from \"./cli-dependencies.js\";\nimport { cliError, describeCliFailure, EXIT_CODES, type ExitCode } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput,
|
|
1
|
+
{"version":3,"file":"run-cli.cjs","sources":["../../src/cli/run-cli.ts"],"sourcesContent":["import type { Logger } from \"../application/ports/logger.js\";\nimport type { RedoclyConfig } from \"../application/ports/redocly-config-source.js\";\nimport { WARNING_CODES, warningText } from \"../domain/warnings.js\";\nimport type { SchemaSource } from \"../types.js\";\nimport { ineffectiveFlagNotices, parseCliArguments } from \"./cli-arguments.js\";\nimport type { CliDependencies } from \"./cli-dependencies.js\";\nimport { cliError, describeCliFailure, EXIT_CODES, type ExitCode } from \"./cli-errors.js\";\nimport { type CliRun, emitOutput, resolveLocationUrl } from \"./cli-output.js\";\nimport { MULTIPLE_SCHEMAS_DOCS_URL } from \"./docs-links.js\";\nimport { fixOption } from \"./fix-option.js\";\nimport { HELP_TEXT } from \"./help-text.js\";\nimport { generateRedoclyApis, hasRedoclyApis } from \"./redocly-apis.js\";\nimport { refLimitOptions } from \"./ref-limits.js\";\n\n/**\n * The CLI's use case: parse the arguments, then generate the APIs of the Redocly config, one\n * schema file or URL, or stdin. It has no process access of its own; `main.ts` wires it (ADR-012).\n */\n\nasync function loadRedoclyConfig(run: CliRun): Promise<RedoclyConfig> {\n const { redoclyConfigs } = run.deps;\n const explicitPath = run.args.redocly;\n const configPath = redoclyConfigs.find(explicitPath);\n if (explicitPath && !configPath) {\n throw cliError(\"CLI_CONFIG_NOT_FOUND\", `Redocly config not found at: ${explicitPath}`);\n }\n return configPath ? redoclyConfigs.load(configPath) : redoclyConfigs.createDefault();\n}\n\n/** The schema's URL, or stdin when no path or URL is given and something is piped in. */\nfunction schemaSource(run: CliRun): SchemaSource {\n const { input } = run.args;\n if (input) {\n return resolveLocationUrl(input, run.deps.cwd);\n }\n if (run.deps.isStdinTerminal()) {\n throw cliError(\n \"CLI_INPUT_MISSING\",\n \"No schema given: pass a schema path or URL, pipe a schema into stdin, or define `apis` \" +\n \"in redocly.yaml. See --help.\",\n );\n }\n return run.deps.stdin();\n}\n\n/** One schema from a path, a URL or stdin; without `--output`, the types go to stdout only. */\nasync function generateSingleSchema(run: CliRun, redocly: RedoclyConfig): Promise<void> {\n const { input, output } = run.args;\n if (input?.includes(\"*\")) {\n throw cliError(\n \"CLI_GLOB_UNSUPPORTED\",\n \"Globbing has been deprecated in favor of redocly.yaml’s `apis` keys. \" +\n `See ${MULTIPLE_SCHEMAS_DOCS_URL}`,\n );\n }\n if (run.args.isCheck && !output) {\n // Without a file there is nothing to compare: the original printed the types and passed.\n throw cliError(\n \"CLI_CHECK_OUTPUT_MISSING\",\n \"--check needs the generated file to compare with: add --output <file>.\",\n );\n }\n const source = schemaSource(run);\n const options = {\n ...run.args.generatorFlags,\n ...refLimitOptions(run.args, run.deps.cwd),\n ...fixOption(run.args.fix),\n redocly,\n silent: !output,\n };\n const contents = await run.deps.generate(source, options);\n if (!output) {\n run.deps.writeStdout(contents);\n return;\n }\n const file = resolveLocationUrl(output, run.deps.cwd);\n emitOutput(run, { source: input ?? \"stdin\", output, file }, contents);\n}\n\nasync function generate(run: CliRun): Promise<unknown[]> {\n const redocly = await loadRedoclyConfig(run);\n if (!hasRedoclyApis(redocly)) {\n await generateSingleSchema(run, redocly);\n return [];\n }\n if (run.args.input) {\n run.deps.logger.warn(\n warningText(\n \"APIs are specified both in Redocly Config and CLI argument. Only using Redocly config.\",\n WARNING_CODES.CLI_INPUT_IGNORED,\n ),\n );\n }\n return generateRedoclyApis(run, redocly);\n}\n\n/** Run the command; the failures it returns did not stop the other outputs. */\nasync function runCommand(argv: readonly string[], deps: CliDependencies): Promise<unknown[]> {\n const startedAt = deps.now();\n for (const notice of ineffectiveFlagNotices(argv)) {\n deps.console.notice(notice);\n }\n const args = parseCliArguments(argv);\n for (const flag of args.unknownFlags) {\n deps.console.notice(`Unknown flag ${flag} is ignored (see --help)`);\n }\n if (args.isHelp || args.isVersion) {\n deps.console.info(args.isHelp ? HELP_TEXT : `v${deps.version}`);\n return [];\n }\n if (args.output) {\n deps.console.info(`✨ ${deps.style.bold(`openapi-typesafe ${deps.version}`)}`);\n }\n return generate({ deps, args, startedAt });\n}\n\n/** Print one line per failure; the exit code is the first failure's (ADR-011). */\nfunction reportFailures(failures: readonly unknown[], logger: Logger): ExitCode {\n const reports = failures.map(describeCliFailure);\n for (const report of reports) {\n logger.error(report.message);\n }\n return reports[0]?.exitCode ?? EXIT_CODES.SUCCESS;\n}\n\n/** Run the CLI with the arguments after `node cli.js`, and return the process exit code. */\nexport async function runCli(argv: readonly string[], deps: CliDependencies): Promise<ExitCode> {\n let failures: unknown[];\n try {\n failures = await runCommand(argv, deps);\n } catch (thrown) {\n failures = [thrown];\n }\n return reportFailures(failures, deps.logger);\n}\n"],"names":["cliError","resolveLocationUrl","MULTIPLE_SCHEMAS_DOCS_URL","refLimitOptions","fixOption","emitOutput","hasRedoclyApis","warningText","WARNING_CODES","generateRedoclyApis","ineffectiveFlagNotices","parseCliArguments","HELP_TEXT","describeCliFailure","EXIT_CODES"],"mappings":"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"}
|
package/dist/cli/run-cli.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { warningText, WARNING_CODES } from '../domain/warnings.mjs';
|
|
1
2
|
import { ineffectiveFlagNotices, parseCliArguments } from './cli-arguments.mjs';
|
|
2
3
|
import { describeCliFailure, EXIT_CODES, cliError } from './cli-errors.mjs';
|
|
3
|
-
import {
|
|
4
|
+
import { resolveLocationUrl, emitOutput } from './cli-output.mjs';
|
|
4
5
|
import { MULTIPLE_SCHEMAS_DOCS_URL } from './docs-links.mjs';
|
|
5
6
|
import { fixOption } from './fix-option.mjs';
|
|
6
7
|
import { HELP_TEXT } from './help-text.mjs';
|
|
@@ -16,6 +17,19 @@ async function loadRedoclyConfig(run) {
|
|
|
16
17
|
}
|
|
17
18
|
return configPath ? redoclyConfigs.load(configPath) : redoclyConfigs.createDefault();
|
|
18
19
|
}
|
|
20
|
+
function schemaSource(run) {
|
|
21
|
+
const { input } = run.args;
|
|
22
|
+
if (input) {
|
|
23
|
+
return resolveLocationUrl(input, run.deps.cwd);
|
|
24
|
+
}
|
|
25
|
+
if (run.deps.isStdinTerminal()) {
|
|
26
|
+
throw cliError(
|
|
27
|
+
"CLI_INPUT_MISSING",
|
|
28
|
+
"No schema given: pass a schema path or URL, pipe a schema into stdin, or define `apis` in redocly.yaml. See --help."
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return run.deps.stdin();
|
|
32
|
+
}
|
|
19
33
|
async function generateSingleSchema(run, redocly) {
|
|
20
34
|
const { input, output } = run.args;
|
|
21
35
|
if (input?.includes("*")) {
|
|
@@ -30,7 +44,7 @@ async function generateSingleSchema(run, redocly) {
|
|
|
30
44
|
"--check needs the generated file to compare with: add --output <file>."
|
|
31
45
|
);
|
|
32
46
|
}
|
|
33
|
-
const source =
|
|
47
|
+
const source = schemaSource(run);
|
|
34
48
|
const options = {
|
|
35
49
|
...run.args.generatorFlags,
|
|
36
50
|
...refLimitOptions(run.args, run.deps.cwd),
|
|
@@ -43,7 +57,7 @@ async function generateSingleSchema(run, redocly) {
|
|
|
43
57
|
run.deps.writeStdout(contents);
|
|
44
58
|
return;
|
|
45
59
|
}
|
|
46
|
-
const file =
|
|
60
|
+
const file = resolveLocationUrl(output, run.deps.cwd);
|
|
47
61
|
emitOutput(run, { source: input ?? "stdin", output, file }, contents);
|
|
48
62
|
}
|
|
49
63
|
async function generate(run) {
|
|
@@ -54,7 +68,10 @@ async function generate(run) {
|
|
|
54
68
|
}
|
|
55
69
|
if (run.args.input) {
|
|
56
70
|
run.deps.logger.warn(
|
|
57
|
-
|
|
71
|
+
warningText(
|
|
72
|
+
"APIs are specified both in Redocly Config and CLI argument. Only using Redocly config.",
|
|
73
|
+
WARNING_CODES.CLI_INPUT_IGNORED
|
|
74
|
+
)
|
|
58
75
|
);
|
|
59
76
|
}
|
|
60
77
|
return generateRedoclyApis(run, redocly);
|