openapi-typesafe 1.0.0-rc.3 → 1.0.0-rc.5
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/CHANGELOG.md +1972 -0
- package/dist/adapters/node-file-system/file-claims.cjs +105 -0
- package/dist/adapters/node-file-system/file-claims.cjs.map +1 -0
- package/dist/adapters/node-file-system/file-claims.mjs +95 -0
- package/dist/adapters/node-file-system/file-claims.mjs.map +1 -0
- package/dist/adapters/node-file-system/file-identity.cjs +82 -0
- package/dist/adapters/node-file-system/file-identity.cjs.map +1 -0
- package/dist/adapters/node-file-system/file-identity.mjs +74 -0
- package/dist/adapters/node-file-system/file-identity.mjs.map +1 -0
- package/dist/adapters/node-file-system/node-file-system.cjs +97 -14
- package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -1
- package/dist/adapters/node-file-system/node-file-system.mjs +97 -14
- package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -1
- package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs +19 -0
- package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs.map +1 -0
- package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs +17 -0
- package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs.map +1 -0
- package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs +48 -0
- package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs.map +1 -0
- package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs +45 -0
- package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs.map +1 -0
- package/dist/adapters/redocly-loader/bundled-ref-repair.cjs +1 -1
- package/dist/adapters/redocly-loader/bundled-ref-repair.cjs.map +1 -1
- package/dist/adapters/redocly-loader/bundled-ref-repair.mjs +2 -2
- package/dist/adapters/redocly-loader/bundled-ref-repair.mjs.map +1 -1
- package/dist/adapters/redocly-loader/component-schemas.cjs +17 -0
- package/dist/adapters/redocly-loader/component-schemas.cjs.map +1 -0
- package/dist/adapters/redocly-loader/component-schemas.mjs +14 -0
- package/dist/adapters/redocly-loader/component-schemas.mjs.map +1 -0
- package/dist/adapters/redocly-loader/loaded-documents.cjs +28 -0
- package/dist/adapters/redocly-loader/loaded-documents.cjs.map +1 -0
- package/dist/adapters/redocly-loader/loaded-documents.mjs +21 -0
- package/dist/adapters/redocly-loader/loaded-documents.mjs.map +1 -0
- package/dist/adapters/redocly-loader/mapping-schema-names.cjs +22 -0
- package/dist/adapters/redocly-loader/mapping-schema-names.cjs.map +1 -0
- package/dist/adapters/redocly-loader/mapping-schema-names.mjs +20 -0
- package/dist/adapters/redocly-loader/mapping-schema-names.mjs.map +1 -0
- package/dist/adapters/redocly-loader/query-named-components.cjs +137 -0
- package/dist/adapters/redocly-loader/query-named-components.cjs.map +1 -0
- package/dist/adapters/redocly-loader/query-named-components.mjs +134 -0
- package/dist/adapters/redocly-loader/query-named-components.mjs.map +1 -0
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +40 -29
- package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -1
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +38 -27
- package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-access.cjs +45 -4
- package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-access.mjs +45 -4
- package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-holders.cjs +52 -10
- package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -1
- package/dist/adapters/redocly-loader/ref-holders.mjs +53 -12
- package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -1
- package/dist/adapters/redocly-loader/remote-body-limit.cjs +50 -0
- package/dist/adapters/redocly-loader/remote-body-limit.cjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-body-limit.mjs +48 -0
- package/dist/adapters/redocly-loader/remote-body-limit.mjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-fetch.cjs +40 -9
- package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -1
- package/dist/adapters/redocly-loader/remote-fetch.mjs +40 -9
- package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -1
- package/dist/adapters/redocly-loader/remote-node-limit.cjs +61 -0
- package/dist/adapters/redocly-loader/remote-node-limit.cjs.map +1 -0
- package/dist/adapters/redocly-loader/remote-node-limit.mjs +58 -0
- package/dist/adapters/redocly-loader/remote-node-limit.mjs.map +1 -0
- package/dist/adapters/redocly-loader/schema-load-errors.cjs +32 -8
- package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -1
- package/dist/adapters/redocly-loader/schema-load-errors.mjs +32 -9
- package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -1
- package/dist/adapters/redocly-loader/schema-source.cjs +18 -9
- package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -1
- package/dist/adapters/redocly-loader/schema-source.mjs +20 -11
- package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -1
- package/dist/adapters/redocly-loader/unsupported-keys.cjs +3 -5
- package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -1
- package/dist/adapters/redocly-loader/unsupported-keys.mjs +3 -5
- package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -1
- package/dist/adapters/terminal-logger/terminal-logger.cjs +10 -4
- package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -1
- package/dist/adapters/terminal-logger/terminal-logger.mjs +10 -4
- package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -1
- package/dist/api/default-ports.cjs +14 -2
- package/dist/api/default-ports.cjs.map +1 -1
- package/dist/api/default-ports.mjs +14 -2
- package/dist/api/default-ports.mjs.map +1 -1
- package/dist/api/discriminator-enum-parent.cjs +2 -2
- package/dist/api/discriminator-enum-parent.cjs.map +1 -1
- package/dist/api/discriminator-enum-parent.mjs +3 -3
- package/dist/api/discriminator-enum-parent.mjs.map +1 -1
- package/dist/api/discriminator-other-owners.cjs +5 -3
- package/dist/api/discriminator-other-owners.cjs.map +1 -1
- package/dist/api/discriminator-other-owners.mjs +5 -3
- package/dist/api/discriminator-other-owners.mjs.map +1 -1
- package/dist/api/discriminator-patch.cjs +5 -1
- package/dist/api/discriminator-patch.cjs.map +1 -1
- package/dist/api/discriminator-patch.mjs +5 -1
- package/dist/api/discriminator-patch.mjs.map +1 -1
- package/dist/api/discriminator-scan.cjs +15 -8
- package/dist/api/discriminator-scan.cjs.map +1 -1
- package/dist/api/discriminator-scan.mjs +15 -8
- package/dist/api/discriminator-scan.mjs.map +1 -1
- package/dist/api/document-refs.cjs +16 -1
- package/dist/api/document-refs.cjs.map +1 -1
- package/dist/api/document-refs.mjs +16 -1
- package/dist/api/document-refs.mjs.map +1 -1
- package/dist/api/document-run.cjs +6 -12
- package/dist/api/document-run.cjs.map +1 -1
- package/dist/api/document-run.mjs +6 -12
- package/dist/api/document-run.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 +9 -6
- package/dist/api/openapi-ts.cjs.map +1 -1
- package/dist/api/openapi-ts.mjs +10 -8
- package/dist/api/openapi-ts.mjs.map +1 -1
- package/dist/api/ref-limit-options.cjs +63 -0
- package/dist/api/ref-limit-options.cjs.map +1 -0
- package/dist/api/ref-limit-options.mjs +57 -0
- package/dist/api/ref-limit-options.mjs.map +1 -0
- package/dist/api/schema-callbacks.cjs +36 -12
- package/dist/api/schema-callbacks.cjs.map +1 -1
- package/dist/api/schema-callbacks.mjs +36 -12
- package/dist/api/schema-callbacks.mjs.map +1 -1
- package/dist/api/transform-context.cjs +7 -3
- package/dist/api/transform-context.cjs.map +1 -1
- package/dist/api/transform-context.mjs +7 -3
- package/dist/api/transform-context.mjs.map +1 -1
- package/dist/api/transform-schema.cjs +47 -10
- package/dist/api/transform-schema.cjs.map +1 -1
- package/dist/api/transform-schema.mjs +48 -11
- package/dist/api/transform-schema.mjs.map +1 -1
- package/dist/application/print/text-writer.cjs +10 -3
- package/dist/application/print/text-writer.cjs.map +1 -1
- package/dist/application/print/text-writer.mjs +10 -3
- package/dist/application/print/text-writer.mjs.map +1 -1
- package/dist/application/stack-overflow.cjs +2 -1
- package/dist/application/stack-overflow.cjs.map +1 -1
- package/dist/application/stack-overflow.mjs +2 -1
- package/dist/application/stack-overflow.mjs.map +1 -1
- package/dist/application/transform/declared-value-types.cjs +36 -0
- package/dist/application/transform/declared-value-types.cjs.map +1 -0
- package/dist/application/transform/declared-value-types.mjs +34 -0
- package/dist/application/transform/declared-value-types.mjs.map +1 -0
- package/dist/application/transform/document/components.cjs +1 -1
- package/dist/application/transform/document/components.cjs.map +1 -1
- package/dist/application/transform/document/components.mjs +2 -2
- package/dist/application/transform/document/components.mjs.map +1 -1
- package/dist/application/transform/document/declared-type-names.cjs +23 -0
- package/dist/application/transform/document/declared-type-names.cjs.map +1 -0
- package/dist/application/transform/document/declared-type-names.mjs +20 -0
- package/dist/application/transform/document/declared-type-names.mjs.map +1 -0
- package/dist/application/transform/document/defs-root.cjs +1 -1
- package/dist/application/transform/document/defs-root.cjs.map +1 -1
- package/dist/application/transform/document/defs-root.mjs +2 -2
- package/dist/application/transform/document/defs-root.mjs.map +1 -1
- package/dist/application/transform/document/document.cjs +7 -2
- package/dist/application/transform/document/document.cjs.map +1 -1
- package/dist/application/transform/document/document.mjs +6 -3
- package/dist/application/transform/document/document.mjs.map +1 -1
- package/dist/application/transform/document/enum-names-given-back.cjs +62 -0
- package/dist/application/transform/document/enum-names-given-back.cjs.map +1 -0
- package/dist/application/transform/document/enum-names-given-back.mjs +58 -0
- package/dist/application/transform/document/enum-names-given-back.mjs.map +1 -0
- package/dist/application/transform/document/exploded-query-values.cjs +63 -0
- package/dist/application/transform/document/exploded-query-values.cjs.map +1 -0
- package/dist/application/transform/document/exploded-query-values.mjs +59 -0
- package/dist/application/transform/document/exploded-query-values.mjs.map +1 -0
- package/dist/application/transform/document/global-type-references.cjs +1 -0
- package/dist/application/transform/document/global-type-references.cjs.map +1 -1
- package/dist/application/transform/document/global-type-references.mjs +1 -1
- package/dist/application/transform/document/global-type-references.mjs.map +1 -1
- package/dist/application/transform/document/header.cjs +11 -3
- package/dist/application/transform/document/header.cjs.map +1 -1
- package/dist/application/transform/document/header.mjs +10 -2
- package/dist/application/transform/document/header.mjs.map +1 -1
- package/dist/application/transform/document/media-type.cjs +2 -2
- package/dist/application/transform/document/media-type.cjs.map +1 -1
- package/dist/application/transform/document/media-type.mjs +3 -3
- package/dist/application/transform/document/media-type.mjs.map +1 -1
- package/dist/application/transform/document/operation-keys-written.cjs +26 -0
- package/dist/application/transform/document/operation-keys-written.cjs.map +1 -0
- package/dist/application/transform/document/operation-keys-written.mjs +24 -0
- package/dist/application/transform/document/operation-keys-written.mjs.map +1 -0
- package/dist/application/transform/document/operation.cjs +1 -1
- package/dist/application/transform/document/operation.cjs.map +1 -1
- package/dist/application/transform/document/operation.mjs +2 -2
- package/dist/application/transform/document/operation.mjs.map +1 -1
- package/dist/application/transform/document/parameter-entries.cjs +34 -0
- package/dist/application/transform/document/parameter-entries.cjs.map +1 -0
- package/dist/application/transform/document/parameter-entries.mjs +30 -0
- package/dist/application/transform/document/parameter-entries.mjs.map +1 -0
- package/dist/application/transform/document/parameter.cjs +12 -4
- package/dist/application/transform/document/parameter.cjs.map +1 -1
- package/dist/application/transform/document/parameter.mjs +13 -5
- package/dist/application/transform/document/parameter.mjs.map +1 -1
- package/dist/application/transform/document/parameters.cjs +29 -34
- package/dist/application/transform/document/parameters.cjs.map +1 -1
- package/dist/application/transform/document/parameters.mjs +29 -34
- package/dist/application/transform/document/parameters.mjs.map +1 -1
- package/dist/application/transform/document/path-item.cjs +15 -17
- package/dist/application/transform/document/path-item.cjs.map +1 -1
- package/dist/application/transform/document/path-item.mjs +15 -19
- package/dist/application/transform/document/path-item.mjs.map +1 -1
- package/dist/application/transform/document/path-template-key.cjs +84 -0
- package/dist/application/transform/document/path-template-key.cjs.map +1 -0
- package/dist/application/transform/document/path-template-key.mjs +79 -0
- package/dist/application/transform/document/path-template-key.mjs.map +1 -0
- package/dist/application/transform/document/path-template-refs.cjs +70 -0
- package/dist/application/transform/document/path-template-refs.cjs.map +1 -0
- package/dist/application/transform/document/path-template-refs.mjs +67 -0
- package/dist/application/transform/document/path-template-refs.mjs.map +1 -0
- package/dist/application/transform/document/paths-enum.cjs +8 -6
- package/dist/application/transform/document/paths-enum.cjs.map +1 -1
- package/dist/application/transform/document/paths-enum.mjs +8 -7
- package/dist/application/transform/document/paths-enum.mjs.map +1 -1
- package/dist/application/transform/document/paths.cjs +43 -67
- package/dist/application/transform/document/paths.cjs.map +1 -1
- package/dist/application/transform/document/paths.mjs +42 -68
- package/dist/application/transform/document/paths.mjs.map +1 -1
- package/dist/application/transform/document/referenced-parameter.cjs +80 -0
- package/dist/application/transform/document/referenced-parameter.cjs.map +1 -0
- package/dist/application/transform/document/referenced-parameter.mjs +78 -0
- package/dist/application/transform/document/referenced-parameter.mjs.map +1 -0
- package/dist/application/transform/document/request-body.cjs +1 -1
- package/dist/application/transform/document/request-body.cjs.map +1 -1
- package/dist/application/transform/document/request-body.mjs +2 -2
- package/dist/application/transform/document/request-body.mjs.map +1 -1
- package/dist/application/transform/document/response.cjs +2 -2
- package/dist/application/transform/document/response.cjs.map +1 -1
- package/dist/application/transform/document/response.mjs +3 -3
- package/dist/application/transform/document/response.mjs.map +1 -1
- package/dist/application/transform/document/responses.cjs +1 -1
- package/dist/application/transform/document/responses.cjs.map +1 -1
- package/dist/application/transform/document/responses.mjs +2 -2
- package/dist/application/transform/document/responses.mjs.map +1 -1
- package/dist/application/transform/document/root-type-aliases.cjs +8 -23
- package/dist/application/transform/document/root-type-aliases.cjs.map +1 -1
- package/dist/application/transform/document/root-type-aliases.mjs +8 -24
- package/dist/application/transform/document/root-type-aliases.mjs.map +1 -1
- package/dist/application/transform/document/type-resolution.cjs +3 -1
- package/dist/application/transform/document/type-resolution.cjs.map +1 -1
- package/dist/application/transform/document/type-resolution.mjs +3 -1
- package/dist/application/transform/document/type-resolution.mjs.map +1 -1
- package/dist/application/transform/document/webhooks.cjs +10 -3
- package/dist/application/transform/document/webhooks.cjs.map +1 -1
- package/dist/application/transform/document/webhooks.mjs +10 -3
- package/dist/application/transform/document/webhooks.mjs.map +1 -1
- package/dist/application/transform/footer/document-footer.cjs +16 -5
- package/dist/application/transform/footer/document-footer.cjs.map +1 -1
- package/dist/application/transform/footer/document-footer.mjs +16 -5
- package/dist/application/transform/footer/document-footer.mjs.map +1 -1
- package/dist/application/transform/footer/enum-name-claims.cjs +48 -0
- package/dist/application/transform/footer/enum-name-claims.cjs.map +1 -0
- package/dist/application/transform/footer/enum-name-claims.mjs +46 -0
- package/dist/application/transform/footer/enum-name-claims.mjs.map +1 -0
- package/dist/application/transform/footer/operation-keys.cjs +23 -0
- package/dist/application/transform/footer/operation-keys.cjs.map +1 -0
- package/dist/application/transform/footer/operation-keys.mjs +21 -0
- package/dist/application/transform/footer/operation-keys.mjs.map +1 -0
- package/dist/application/transform/footer/type-evaluation.cjs +4 -4
- package/dist/application/transform/footer/type-evaluation.cjs.map +1 -1
- package/dist/application/transform/footer/type-evaluation.mjs +4 -4
- package/dist/application/transform/footer/type-evaluation.mjs.map +1 -1
- package/dist/application/transform/helper-types.cjs +3 -3
- package/dist/application/transform/helper-types.cjs.map +1 -1
- package/dist/application/transform/helper-types.mjs +3 -3
- package/dist/application/transform/helper-types.mjs.map +1 -1
- package/dist/application/transform/numbered-names.cjs +9 -0
- package/dist/application/transform/numbered-names.cjs.map +1 -1
- package/dist/application/transform/numbered-names.mjs +9 -1
- package/dist/application/transform/numbered-names.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/generated-location.cjs +5 -5
- package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/generated-location.mjs +3 -3
- package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/generated-shape.cjs +47 -66
- package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/generated-shape.mjs +36 -50
- package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/inline-cycles.cjs +2 -2
- package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/inline-cycles.mjs +1 -1
- package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/located-node.cjs +23 -0
- package/dist/application/transform/ref-pointer/located-node.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/located-node.mjs +18 -0
- package/dist/application/transform/ref-pointer/located-node.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/original-index.cjs +68 -13
- package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/original-index.mjs +70 -15
- package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/pointer-type.cjs +2 -2
- package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/pointer-type.mjs +1 -1
- package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/pointer-walk.cjs +54 -13
- package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/pointer-walk.mjs +46 -7
- package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -1
- package/dist/application/transform/ref-pointer/property-shape.cjs +52 -0
- package/dist/application/transform/ref-pointer/property-shape.cjs.map +1 -0
- package/dist/application/transform/ref-pointer/property-shape.mjs +45 -0
- package/dist/application/transform/ref-pointer/property-shape.mjs.map +1 -0
- package/dist/application/transform/ref-pointer/typed-walk.cjs +79 -21
- package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -1
- package/dist/application/transform/ref-pointer/typed-walk.mjs +76 -18
- package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -1
- package/dist/application/transform/ref-type.cjs +2 -1
- package/dist/application/transform/ref-type.cjs.map +1 -1
- package/dist/application/transform/ref-type.mjs +2 -1
- package/dist/application/transform/ref-type.mjs.map +1 -1
- package/dist/application/transform/schema/access-flags.cjs.map +1 -1
- package/dist/application/transform/schema/access-flags.mjs.map +1 -1
- package/dist/application/transform/schema/composition-type.cjs +1 -1
- package/dist/application/transform/schema/composition-type.cjs.map +1 -1
- package/dist/application/transform/schema/composition-type.mjs +2 -2
- package/dist/application/transform/schema/composition-type.mjs.map +1 -1
- package/dist/application/transform/schema/enum-rule.cjs +1 -1
- package/dist/application/transform/schema/enum-rule.cjs.map +1 -1
- package/dist/application/transform/schema/enum-rule.mjs +2 -2
- package/dist/application/transform/schema/enum-rule.mjs.map +1 -1
- package/dist/application/transform/schema/index-signature-type.cjs +21 -0
- package/dist/application/transform/schema/index-signature-type.cjs.map +1 -0
- package/dist/application/transform/schema/index-signature-type.mjs +19 -0
- package/dist/application/transform/schema/index-signature-type.mjs.map +1 -0
- package/dist/application/transform/schema/input-location.cjs +23 -0
- package/dist/application/transform/schema/input-location.cjs.map +1 -0
- package/dist/application/transform/schema/input-location.mjs +21 -0
- package/dist/application/transform/schema/input-location.mjs.map +1 -0
- package/dist/application/transform/schema/object-type.cjs +18 -8
- package/dist/application/transform/schema/object-type.cjs.map +1 -1
- package/dist/application/transform/schema/object-type.mjs +19 -9
- package/dist/application/transform/schema/object-type.mjs.map +1 -1
- package/dist/application/transform/schema/ref-siblings.cjs +47 -0
- package/dist/application/transform/schema/ref-siblings.cjs.map +1 -0
- package/dist/application/transform/schema/ref-siblings.mjs +45 -0
- package/dist/application/transform/schema/ref-siblings.mjs.map +1 -0
- package/dist/application/transform/schema/schema-transform.cjs +6 -3
- package/dist/application/transform/schema/schema-transform.cjs.map +1 -1
- package/dist/application/transform/schema/schema-transform.mjs +6 -3
- package/dist/application/transform/schema/schema-transform.mjs.map +1 -1
- package/dist/application/transform/schema/unevaluated-properties.cjs +2 -30
- package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -1
- package/dist/application/transform/schema/unevaluated-properties.mjs +3 -31
- package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -1
- package/dist/application/transform/schema-comment.cjs +5 -1
- package/dist/application/transform/schema-comment.cjs.map +1 -1
- package/dist/application/transform/schema-comment.mjs +5 -1
- package/dist/application/transform/schema-comment.mjs.map +1 -1
- package/dist/cli/api-logger.cjs +13 -0
- package/dist/cli/api-logger.cjs.map +1 -0
- package/dist/cli/api-logger.mjs +11 -0
- package/dist/cli/api-logger.mjs.map +1 -0
- package/dist/cli/api-settings.cjs +57 -9
- package/dist/cli/api-settings.cjs.map +1 -1
- package/dist/cli/api-settings.mjs +56 -11
- package/dist/cli/api-settings.mjs.map +1 -1
- package/dist/cli/api-writes.cjs +72 -0
- package/dist/cli/api-writes.cjs.map +1 -0
- package/dist/cli/api-writes.mjs +69 -0
- package/dist/cli/api-writes.mjs.map +1 -0
- package/dist/cli/cli-arguments.cjs +51 -11
- package/dist/cli/cli-arguments.cjs.map +1 -1
- package/dist/cli/cli-arguments.mjs +51 -11
- package/dist/cli/cli-arguments.mjs.map +1 -1
- package/dist/cli/cli-errors.cjs +29 -1
- package/dist/cli/cli-errors.cjs.map +1 -1
- package/dist/cli/cli-errors.mjs +29 -2
- package/dist/cli/cli-errors.mjs.map +1 -1
- package/dist/cli/cli-output.cjs +111 -4
- package/dist/cli/cli-output.cjs.map +1 -1
- package/dist/cli/cli-output.mjs +104 -5
- package/dist/cli/cli-output.mjs.map +1 -1
- package/dist/cli/main.cjs +13 -3
- package/dist/cli/main.cjs.map +1 -1
- package/dist/cli/main.mjs +14 -4
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/redocly-apis.cjs +94 -37
- package/dist/cli/redocly-apis.cjs.map +1 -1
- package/dist/cli/redocly-apis.mjs +99 -42
- package/dist/cli/redocly-apis.mjs.map +1 -1
- package/dist/cli/ref-limits.cjs +15 -1
- package/dist/cli/ref-limits.cjs.map +1 -1
- package/dist/cli/ref-limits.mjs +15 -2
- package/dist/cli/ref-limits.mjs.map +1 -1
- package/dist/cli/run-cli.cjs +37 -14
- package/dist/cli/run-cli.cjs.map +1 -1
- package/dist/cli/run-cli.mjs +39 -16
- package/dist/cli/run-cli.mjs.map +1 -1
- package/dist/domain/append-all.cjs +10 -0
- package/dist/domain/append-all.cjs.map +1 -0
- package/dist/domain/append-all.mjs +8 -0
- package/dist/domain/append-all.mjs.map +1 -0
- package/dist/domain/cause-secrets.cjs +52 -0
- package/dist/domain/cause-secrets.cjs.map +1 -0
- package/dist/domain/cause-secrets.mjs +50 -0
- package/dist/domain/cause-secrets.mjs.map +1 -0
- package/dist/domain/errors.cjs +11 -3
- package/dist/domain/errors.cjs.map +1 -1
- package/dist/domain/errors.mjs +11 -3
- package/dist/domain/errors.mjs.map +1 -1
- package/dist/domain/ir/identifier-text.cjs.map +1 -1
- package/dist/domain/ir/identifier-text.mjs +1 -1
- package/dist/domain/ir/identifier-text.mjs.map +1 -1
- package/dist/domain/ir/ir-shape.cjs +187 -0
- package/dist/domain/ir/ir-shape.cjs.map +1 -0
- package/dist/domain/ir/ir-shape.mjs +184 -0
- package/dist/domain/ir/ir-shape.mjs.map +1 -0
- package/dist/domain/ir/newer-identifier-ranges.cjs +182 -29
- package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -1
- package/dist/domain/ir/newer-identifier-ranges.mjs +182 -29
- package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -1
- package/dist/domain/location-text.cjs +9 -0
- package/dist/domain/location-text.cjs.map +1 -0
- package/dist/domain/location-text.mjs +7 -0
- package/dist/domain/location-text.mjs.map +1 -0
- package/dist/domain/openapi/alias-expansion.cjs +3 -1
- package/dist/domain/openapi/alias-expansion.cjs.map +1 -1
- package/dist/domain/openapi/alias-expansion.mjs +3 -1
- package/dist/domain/openapi/alias-expansion.mjs.map +1 -1
- package/dist/domain/openapi/discriminated-union.cjs +3 -3
- package/dist/domain/openapi/discriminated-union.cjs.map +1 -1
- package/dist/domain/openapi/discriminated-union.mjs +4 -4
- package/dist/domain/openapi/discriminated-union.mjs.map +1 -1
- package/dist/domain/openapi/discriminator-conflicts.cjs +10 -6
- package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -1
- package/dist/domain/openapi/discriminator-conflicts.mjs +11 -7
- package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -1
- package/dist/domain/openapi/document-places.cjs +55 -0
- package/dist/domain/openapi/document-places.cjs.map +1 -0
- package/dist/domain/openapi/document-places.mjs +53 -0
- package/dist/domain/openapi/document-places.mjs.map +1 -0
- package/dist/domain/openapi/json-pointer.cjs +43 -1
- package/dist/domain/openapi/json-pointer.cjs.map +1 -1
- package/dist/domain/openapi/json-pointer.mjs +40 -2
- package/dist/domain/openapi/json-pointer.mjs.map +1 -1
- package/dist/domain/openapi/schema-dialect.cjs +15 -0
- package/dist/domain/openapi/schema-dialect.cjs.map +1 -0
- package/dist/domain/openapi/schema-dialect.mjs +12 -0
- package/dist/domain/openapi/schema-dialect.mjs.map +1 -0
- package/dist/domain/openapi/unsupported-features.cjs +1 -1
- package/dist/domain/openapi/unsupported-features.cjs.map +1 -1
- package/dist/domain/openapi/unsupported-features.mjs +2 -2
- package/dist/domain/openapi/unsupported-features.mjs.map +1 -1
- package/dist/domain/output-fixes.cjs +20 -0
- package/dist/domain/output-fixes.cjs.map +1 -1
- package/dist/domain/output-fixes.mjs +20 -0
- package/dist/domain/output-fixes.mjs.map +1 -1
- package/dist/domain/terminal-text.cjs +31 -0
- package/dist/domain/terminal-text.cjs.map +1 -0
- package/dist/domain/terminal-text.mjs +29 -0
- package/dist/domain/terminal-text.mjs.map +1 -0
- package/dist/domain/url-secrets.cjs +48 -0
- package/dist/domain/url-secrets.cjs.map +1 -0
- package/dist/domain/url-secrets.mjs +45 -0
- package/dist/domain/url-secrets.mjs.map +1 -0
- package/dist/domain/warnings.cjs +1 -0
- package/dist/domain/warnings.cjs.map +1 -1
- package/dist/domain/warnings.mjs +1 -0
- package/dist/domain/warnings.mjs.map +1 -1
- package/dist/index.d.cts +46 -20
- package/dist/index.d.mts +46 -20
- package/dist/index.d.ts +46 -20
- package/package.json +4 -5
- package/src/adapters/node-file-system/file-claims.ts +138 -0
- package/src/adapters/node-file-system/file-identity.ts +137 -0
- package/src/adapters/node-file-system/node-file-system.ts +158 -18
- package/src/adapters/pipe-safe-writer/pipe-safe-writer.ts +29 -0
- package/src/adapters/redocly-loader/bundled-mapping-copies.ts +60 -0
- package/src/adapters/redocly-loader/bundled-ref-repair.ts +2 -2
- package/src/adapters/redocly-loader/component-schemas.ts +19 -0
- package/src/adapters/redocly-loader/loaded-documents.ts +46 -0
- package/src/adapters/redocly-loader/mapping-schema-names.ts +25 -0
- package/src/adapters/redocly-loader/query-named-components.ts +201 -0
- package/src/adapters/redocly-loader/redocly-schema-loader.ts +64 -38
- package/src/adapters/redocly-loader/ref-access.ts +51 -4
- package/src/adapters/redocly-loader/ref-holders.ts +76 -15
- package/src/adapters/redocly-loader/remote-body-limit.ts +66 -0
- package/src/adapters/redocly-loader/remote-fetch.ts +85 -13
- package/src/adapters/redocly-loader/remote-node-limit.ts +102 -0
- package/src/adapters/redocly-loader/schema-load-errors.ts +52 -13
- package/src/adapters/redocly-loader/schema-source.ts +35 -11
- package/src/adapters/redocly-loader/unsupported-keys.ts +3 -7
- package/src/adapters/terminal-logger/terminal-logger.ts +17 -6
- package/src/api/default-ports.ts +33 -4
- package/src/api/discriminator-enum-parent.ts +3 -3
- package/src/api/discriminator-other-owners.ts +5 -3
- package/src/api/discriminator-patch.ts +5 -1
- package/src/api/discriminator-scan.ts +16 -8
- package/src/api/document-refs.ts +29 -1
- package/src/api/document-run.ts +10 -19
- package/src/api/legacy-utils.ts +5 -1
- package/src/api/openapi-ts.ts +26 -8
- package/src/api/ref-limit-options.ts +76 -0
- package/src/api/run-context.ts +3 -0
- package/src/api/schema-callbacks.ts +60 -17
- package/src/api/transform-context.ts +7 -3
- package/src/api/transform-schema.ts +79 -12
- package/src/application/ports/file-system.ts +47 -0
- package/src/application/ports/schema-loader.ts +11 -1
- package/src/application/print/text-writer.ts +10 -3
- package/src/application/stack-overflow.ts +9 -5
- package/src/application/transform/declared-value-types.ts +42 -0
- package/src/application/transform/document/components.ts +2 -2
- package/src/application/transform/document/declared-type-names.ts +36 -0
- package/src/application/transform/document/defs-root.ts +2 -2
- package/src/application/transform/document/document.ts +8 -5
- package/src/application/transform/document/enum-names-given-back.ts +91 -0
- package/src/application/transform/document/exploded-query-values.ts +88 -0
- package/src/application/transform/document/global-type-references.ts +1 -1
- package/src/application/transform/document/header.ts +25 -5
- package/src/application/transform/document/media-type.ts +4 -3
- package/src/application/transform/document/operation-keys-written.ts +27 -0
- package/src/application/transform/document/operation.ts +2 -2
- package/src/application/transform/document/parameter-entries.ts +70 -0
- package/src/application/transform/document/parameter.ts +21 -9
- package/src/application/transform/document/parameters.ts +56 -66
- package/src/application/transform/document/path-item.ts +16 -34
- package/src/application/transform/document/path-template-key.ts +152 -0
- package/src/application/transform/document/path-template-refs.ts +106 -0
- package/src/application/transform/document/paths-enum.ts +24 -10
- package/src/application/transform/document/paths.ts +59 -125
- package/src/application/transform/document/referenced-parameter.ts +146 -0
- package/src/application/transform/document/request-body.ts +2 -2
- package/src/application/transform/document/response.ts +3 -3
- package/src/application/transform/document/responses.ts +2 -2
- package/src/application/transform/document/root-type-aliases.ts +17 -38
- package/src/application/transform/document/type-resolution.ts +2 -1
- package/src/application/transform/document/webhooks.ts +19 -6
- package/src/application/transform/footer/document-footer.ts +36 -9
- package/src/application/transform/footer/enum-name-claims.ts +62 -0
- package/src/application/transform/footer/operation-keys.ts +28 -0
- package/src/application/transform/footer/type-evaluation.ts +4 -4
- package/src/application/transform/helper-types.ts +8 -7
- package/src/application/transform/numbered-names.ts +15 -0
- package/src/application/transform/ref-pointer/generated-location.ts +3 -3
- package/src/application/transform/ref-pointer/generated-shape.ts +67 -78
- package/src/application/transform/ref-pointer/inline-cycles.ts +1 -1
- package/src/application/transform/ref-pointer/located-node.ts +38 -0
- package/src/application/transform/ref-pointer/original-index.ts +100 -17
- package/src/application/transform/ref-pointer/pointer-type.ts +1 -1
- package/src/application/transform/ref-pointer/pointer-walk.ts +82 -8
- package/src/application/transform/ref-pointer/property-shape.ts +97 -0
- package/src/application/transform/ref-pointer/typed-walk.ts +117 -25
- package/src/application/transform/ref-type.ts +2 -1
- package/src/application/transform/schema/access-flags.ts +5 -2
- package/src/application/transform/schema/composition-type.ts +2 -2
- package/src/application/transform/schema/enum-rule.ts +6 -2
- package/src/application/transform/schema/index-signature-type.ts +31 -0
- package/src/application/transform/schema/input-location.ts +35 -0
- package/src/application/transform/schema/object-type.ts +22 -12
- package/src/application/transform/schema/ref-siblings.ts +76 -0
- package/src/application/transform/schema/schema-context.ts +3 -0
- package/src/application/transform/schema/schema-transform.ts +6 -3
- package/src/application/transform/schema/unevaluated-properties.ts +4 -44
- package/src/application/transform/schema-comment.ts +5 -1
- package/src/application/transform/transform-context.ts +5 -0
- package/src/cli/api-logger.ts +17 -0
- package/src/cli/api-settings.ts +80 -13
- package/src/cli/api-writes.ts +117 -0
- package/src/cli/cli-arguments.ts +90 -14
- package/src/cli/cli-dependencies.ts +26 -4
- package/src/cli/cli-errors.ts +42 -1
- package/src/cli/cli-output.ts +195 -15
- package/src/cli/main.ts +14 -5
- package/src/cli/redocly-apis.ts +177 -52
- package/src/cli/ref-limits.ts +21 -2
- package/src/cli/run-cli.ts +76 -15
- package/src/domain/append-all.ts +10 -0
- package/src/domain/cause-secrets.ts +86 -0
- package/src/domain/errors.ts +16 -5
- package/src/domain/ir/identifier-text.ts +6 -5
- package/src/domain/ir/ir-shape.ts +299 -0
- package/src/domain/ir/newer-identifier-ranges.ts +183 -30
- package/src/domain/location-text.ts +12 -0
- package/src/domain/openapi/alias-expansion.ts +4 -1
- package/src/domain/openapi/discriminated-union.ts +6 -4
- package/src/domain/openapi/discriminator-conflicts.ts +21 -7
- package/src/domain/openapi/document-object.ts +2 -0
- package/src/domain/openapi/document-places.ts +78 -0
- package/src/domain/openapi/json-pointer.ts +96 -7
- package/src/domain/openapi/schema-dialect.ts +22 -0
- package/src/domain/openapi/unsupported-features.ts +2 -2
- package/src/domain/output-fixes.ts +28 -2
- package/src/domain/terminal-text.ts +44 -0
- package/src/domain/url-secrets.ts +72 -0
- package/src/domain/warnings.ts +1 -0
- package/src/types/generator-options.ts +1 -1
- package/dist/cli/main.d.cts +0 -2
- package/dist/cli/main.d.mts +0 -2
- package/dist/cli/main.d.ts +0 -2
- package/dist/domain/url-credentials.cjs +0 -10
- package/dist/domain/url-credentials.cjs.map +0 -1
- package/dist/domain/url-credentials.mjs +0 -8
- package/dist/domain/url-credentials.mjs.map +0 -1
- package/src/domain/url-credentials.ts +0 -18
|
@@ -1,35 +1,118 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
import { OpenAPITypesafeError, ERROR_CODES } from '../../domain/errors.mjs';
|
|
4
|
+
import { writeFileAt, claimFileAt } from './file-claims.mjs';
|
|
5
|
+
import { isSameFileNumber, fileIdentityKey } from './file-identity.mjs';
|
|
4
6
|
|
|
5
7
|
function causeMessage(cause) {
|
|
6
8
|
return cause instanceof Error ? cause.message : String(cause);
|
|
7
9
|
}
|
|
10
|
+
function statusOf(filePath) {
|
|
11
|
+
try {
|
|
12
|
+
const status = fs.statSync(filePath, { bigint: true });
|
|
13
|
+
return { device: status.dev, file: status.ino };
|
|
14
|
+
} catch {
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function realPathOf(filePath) {
|
|
19
|
+
try {
|
|
20
|
+
return fs.realpathSync.native(filePath);
|
|
21
|
+
} catch {
|
|
22
|
+
return filePath;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function entriesOf(directory) {
|
|
26
|
+
try {
|
|
27
|
+
return fs.readdirSync(directory);
|
|
28
|
+
} catch {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function linkTargetOf(filePath) {
|
|
33
|
+
try {
|
|
34
|
+
return fs.readlinkSync(filePath);
|
|
35
|
+
} catch {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const NODE_PATH_QUERIES = {
|
|
40
|
+
status: statusOf,
|
|
41
|
+
realPath: realPathOf,
|
|
42
|
+
entries: entriesOf,
|
|
43
|
+
linkTarget: linkTargetOf
|
|
44
|
+
};
|
|
45
|
+
function localPathOf(file) {
|
|
46
|
+
try {
|
|
47
|
+
return fileURLToPath(file);
|
|
48
|
+
} catch {
|
|
49
|
+
return void 0;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function fileError(code, verb, file, cause) {
|
|
53
|
+
const name = localPathOf(file) ?? file.href;
|
|
54
|
+
return new OpenAPITypesafeError({
|
|
55
|
+
code,
|
|
56
|
+
message: `Cannot ${verb} ${name}: ${causeMessage(cause)}`,
|
|
57
|
+
details: { file: name },
|
|
58
|
+
cause
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function typedWrite(file, step) {
|
|
62
|
+
try {
|
|
63
|
+
return step();
|
|
64
|
+
} catch (cause) {
|
|
65
|
+
throw fileError(ERROR_CODES.OUTPUT_WRITE_FAILED, "write", file, cause);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
8
68
|
class NodeFileSystem {
|
|
9
69
|
readText(file) {
|
|
10
70
|
try {
|
|
11
71
|
return fs.readFileSync(file, "utf8");
|
|
12
72
|
} catch (cause) {
|
|
13
|
-
throw
|
|
14
|
-
code: ERROR_CODES.OUTPUT_READ_FAILED,
|
|
15
|
-
message: `Cannot read ${fileURLToPath(file)}: ${causeMessage(cause)}`,
|
|
16
|
-
details: { file: fileURLToPath(file) },
|
|
17
|
-
cause
|
|
18
|
-
});
|
|
73
|
+
throw fileError(ERROR_CODES.OUTPUT_READ_FAILED, "read", file, cause);
|
|
19
74
|
}
|
|
20
75
|
}
|
|
21
76
|
writeText(file, contents) {
|
|
22
77
|
try {
|
|
23
|
-
|
|
24
|
-
fs.writeFileSync(file, contents, "utf8");
|
|
78
|
+
writeFileAt(fileURLToPath(file), contents, NODE_PATH_QUERIES);
|
|
25
79
|
} catch (cause) {
|
|
26
|
-
throw
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
80
|
+
throw fileError(ERROR_CODES.OUTPUT_WRITE_FAILED, "write", file, cause);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
claimFile(file) {
|
|
84
|
+
const claim = typedWrite(file, () => claimFileAt(fileURLToPath(file), NODE_PATH_QUERIES));
|
|
85
|
+
return {
|
|
86
|
+
identity: claim.identity,
|
|
87
|
+
release: () => typedWrite(file, () => claim.release())
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
isDirectory(file) {
|
|
91
|
+
try {
|
|
92
|
+
return fs.statSync(file).isDirectory();
|
|
93
|
+
} catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
isFile(file) {
|
|
98
|
+
try {
|
|
99
|
+
return fs.statSync(file).isFile();
|
|
100
|
+
} catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
isSameFile(left, right) {
|
|
105
|
+
const leftPath = fileURLToPath(left);
|
|
106
|
+
const rightPath = fileURLToPath(right);
|
|
107
|
+
if (leftPath === rightPath) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
const leftStatus = statusOf(leftPath);
|
|
111
|
+
const rightStatus = statusOf(rightPath);
|
|
112
|
+
if (leftStatus && rightStatus && isSameFileNumber(leftStatus, rightStatus)) {
|
|
113
|
+
return true;
|
|
32
114
|
}
|
|
115
|
+
return fileIdentityKey(leftPath, NODE_PATH_QUERIES) === fileIdentityKey(rightPath, NODE_PATH_QUERIES);
|
|
33
116
|
}
|
|
34
117
|
}
|
|
35
118
|
function createNodeFileSystem() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-file-system.mjs","sources":["../../../src/adapters/node-file-system/node-file-system.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport type {
|
|
1
|
+
{"version":3,"file":"node-file-system.mjs","sources":["../../../src/adapters/node-file-system/node-file-system.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport type {\n ClaimedFile,\n DirectoryCheck,\n FileCheck,\n FileClaims,\n FileIdentity,\n FileReader,\n FileWriter,\n} from \"../../application/ports/file-system.js\";\nimport { ERROR_CODES, type ErrorCode, OpenAPITypesafeError } from \"../../domain/errors.js\";\nimport { claimFileAt, writeFileAt } from \"./file-claims.js\";\nimport {\n type FileNumber,\n fileIdentityKey,\n isSameFileNumber,\n type PathQueries,\n} from \"./file-identity.js\";\n\n/** The file ports on Node's `fs`, with the failures as typed errors (ADR-011). */\n\nfunction causeMessage(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\n\n/**\n * The file number of a path, or undefined when it cannot be read. A missing output is the common\n * case; any other failure (no access, a file used as a directory) is reported by the read or write\n * that follows, so the identity check does not report it a second time.\n */\nfunction statusOf(filePath: string): FileNumber | undefined {\n try {\n const status = fs.statSync(filePath, { bigint: true });\n return { device: status.dev, file: status.ino };\n } catch {\n return undefined;\n }\n}\n\n/**\n * The native `realpath` resolves symbolic links and returns the letter case stored on disk, which\n * the JavaScript one does not do on a case-insensitive file system. A path that vanished since its\n * status was read keeps its own spelling.\n */\nfunction realPathOf(filePath: string): string {\n try {\n return fs.realpathSync.native(filePath);\n } catch {\n return filePath;\n }\n}\n\n/** A directory that cannot be listed has no entry to tell its letter case rules by. */\nfunction entriesOf(directory: string): readonly string[] {\n try {\n return fs.readdirSync(directory);\n } catch {\n return [];\n }\n}\n\n/**\n * The target of a symbolic link, as written in it; undefined for a path that is no link or cannot\n * be read. The key then treats the path as missing, and the claim at write time decides.\n */\nfunction linkTargetOf(filePath: string): string | undefined {\n try {\n return fs.readlinkSync(filePath);\n } catch {\n return undefined;\n }\n}\n\nconst NODE_PATH_QUERIES: PathQueries = {\n status: statusOf,\n realPath: realPathOf,\n entries: entriesOf,\n linkTarget: linkTargetOf,\n};\n\n/** The path of a `file:` URL, or undefined for a URL that names no file on this platform. */\nfunction localPathOf(file: URL): string | undefined {\n try {\n return fileURLToPath(file);\n } catch {\n return undefined;\n }\n}\n\n/**\n * A failed read or write as a typed error. The location is named by its path, or by the URL when\n * it names no local file: computing the path must not throw a second, untyped error here.\n */\nfunction fileError(code: ErrorCode, verb: string, file: URL, cause: unknown): OpenAPITypesafeError {\n const name = localPathOf(file) ?? file.href;\n return new OpenAPITypesafeError({\n code,\n message: `Cannot ${verb} ${name}: ${causeMessage(cause)}`,\n details: { file: name },\n cause,\n });\n}\n\n/** Run a step that writes `file`, with its failure as `OUTPUT_WRITE_FAILED`. */\nfunction typedWrite<T>(file: URL, step: () => T): T {\n try {\n return step();\n } catch (cause) {\n throw fileError(ERROR_CODES.OUTPUT_WRITE_FAILED, \"write\", file, cause);\n }\n}\n\nclass NodeFileSystem\n implements FileReader, FileWriter, FileIdentity, DirectoryCheck, FileCheck, FileClaims\n{\n readText(file: URL): string {\n try {\n return fs.readFileSync(file, \"utf8\");\n } catch (cause) {\n throw fileError(ERROR_CODES.OUTPUT_READ_FAILED, \"read\", file, cause);\n }\n }\n\n writeText(file: URL, contents: string): void {\n try {\n writeFileAt(fileURLToPath(file), contents, NODE_PATH_QUERIES);\n } catch (cause) {\n throw fileError(ERROR_CODES.OUTPUT_WRITE_FAILED, \"write\", file, cause);\n }\n }\n\n claimFile(file: URL): ClaimedFile {\n const claim = typedWrite(file, () => claimFileAt(fileURLToPath(file), NODE_PATH_QUERIES));\n return {\n identity: claim.identity,\n release: () => typedWrite(file, () => claim.release()),\n };\n }\n\n isDirectory(file: URL): boolean {\n try {\n return fs.statSync(file).isDirectory();\n } catch {\n // Missing or unreadable: not a directory; the write that follows reports a failure.\n return false;\n }\n }\n\n isFile(file: URL): boolean {\n try {\n return fs.statSync(file).isFile();\n } catch {\n // Missing or unreadable: no file; the read that follows reports a failure.\n return false;\n }\n }\n\n isSameFile(left: URL, right: URL): boolean {\n const leftPath = fileURLToPath(left);\n const rightPath = fileURLToPath(right);\n if (leftPath === rightPath) {\n return true;\n }\n const leftStatus = statusOf(leftPath);\n const rightStatus = statusOf(rightPath);\n if (leftStatus && rightStatus && isSameFileNumber(leftStatus, rightStatus)) {\n return true;\n }\n return (\n fileIdentityKey(leftPath, NODE_PATH_QUERIES) === fileIdentityKey(rightPath, NODE_PATH_QUERIES)\n );\n }\n}\n\n/** File access for the CLI. */\nexport function createNodeFileSystem(): FileReader &\n FileWriter &\n FileIdentity &\n DirectoryCheck &\n FileCheck &\n FileClaims {\n return new NodeFileSystem();\n}\n"],"names":[],"mappings":";;;;;;AAsBA,SAAS,aAAa,KAAA,EAAwB;AAC5C,EAAA,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC9D;AAOA,SAAS,SAAS,QAAA,EAA0C;AAC1D,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,EAAA,CAAG,QAAA,CAAS,UAAU,EAAE,MAAA,EAAQ,MAAM,CAAA;AACrD,IAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,CAAO,GAAA,EAAK,IAAA,EAAM,OAAO,GAAA,EAAI;AAAA,EAChD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAOA,SAAS,WAAW,QAAA,EAA0B;AAC5C,EAAA,IAAI;AACF,IAAA,OAAO,EAAA,CAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,EACxC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,QAAA;AAAA,EACT;AACF;AAGA,SAAS,UAAU,SAAA,EAAsC;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,EAAA,CAAG,YAAY,SAAS,CAAA;AAAA,EACjC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAMA,SAAS,aAAa,QAAA,EAAsC;AAC1D,EAAA,IAAI;AACF,IAAA,OAAO,EAAA,CAAG,aAAa,QAAQ,CAAA;AAAA,EACjC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEA,MAAM,iBAAA,GAAiC;AAAA,EACrC,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY;AACd,CAAA;AAGA,SAAS,YAAY,IAAA,EAA+B;AAClD,EAAA,IAAI;AACF,IAAA,OAAO,cAAc,IAAI,CAAA;AAAA,EAC3B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAMA,SAAS,SAAA,CAAU,IAAA,EAAiB,IAAA,EAAc,IAAA,EAAW,KAAA,EAAsC;AACjG,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,IAAI,CAAA,IAAK,IAAA,CAAK,IAAA;AACvC,EAAA,OAAO,IAAI,oBAAA,CAAqB;AAAA,IAC9B,IAAA;AAAA,IACA,OAAA,EAAS,UAAU,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,YAAA,CAAa,KAAK,CAAC,CAAA,CAAA;AAAA,IACvD,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACtB;AAAA,GACD,CAAA;AACH;AAGA,SAAS,UAAA,CAAc,MAAW,IAAA,EAAkB;AAClD,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,EAAK;AAAA,EACd,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,SAAA,CAAU,WAAA,CAAY,mBAAA,EAAqB,OAAA,EAAS,MAAM,KAAK,CAAA;AAAA,EACvE;AACF;AAEA,MAAM,cAAA,CAEN;AAAA,EACE,SAAS,IAAA,EAAmB;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,YAAA,CAAa,IAAA,EAAM,MAAM,CAAA;AAAA,IACrC,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,SAAA,CAAU,WAAA,CAAY,kBAAA,EAAoB,MAAA,EAAQ,MAAM,KAAK,CAAA;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,SAAA,CAAU,MAAW,QAAA,EAAwB;AAC3C,IAAA,IAAI;AACF,MAAA,WAAA,CAAY,aAAA,CAAc,IAAI,CAAA,EAAG,QAAA,EAAU,iBAAiB,CAAA;AAAA,IAC9D,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,SAAA,CAAU,WAAA,CAAY,mBAAA,EAAqB,OAAA,EAAS,MAAM,KAAK,CAAA;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,UAAU,IAAA,EAAwB;AAChC,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,MAAM,YAAY,aAAA,CAAc,IAAI,CAAA,EAAG,iBAAiB,CAAC,CAAA;AACxF,IAAA,OAAO;AAAA,MACL,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,SAAS,MAAM,UAAA,CAAW,MAAM,MAAM,KAAA,CAAM,SAAS;AAAA,KACvD;AAAA,EACF;AAAA,EAEA,YAAY,IAAA,EAAoB;AAC9B,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,QAAA,CAAS,IAAI,CAAA,CAAE,WAAA,EAAY;AAAA,IACvC,CAAA,CAAA,MAAQ;AAEN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO,IAAA,EAAoB;AACzB,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,QAAA,CAAS,IAAI,CAAA,CAAE,MAAA,EAAO;AAAA,IAClC,CAAA,CAAA,MAAQ;AAEN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,UAAA,CAAW,MAAW,KAAA,EAAqB;AACzC,IAAA,MAAM,QAAA,GAAW,cAAc,IAAI,CAAA;AACnC,IAAA,MAAM,SAAA,GAAY,cAAc,KAAK,CAAA;AACrC,IAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,UAAA,GAAa,SAAS,QAAQ,CAAA;AACpC,IAAA,MAAM,WAAA,GAAc,SAAS,SAAS,CAAA;AACtC,IAAA,IAAI,UAAA,IAAc,WAAA,IAAe,gBAAA,CAAiB,UAAA,EAAY,WAAW,CAAA,EAAG;AAC1E,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OACE,gBAAgB,QAAA,EAAU,iBAAiB,CAAA,KAAM,eAAA,CAAgB,WAAW,iBAAiB,CAAA;AAAA,EAEjG;AACF;AAGO,SAAS,oBAAA,GAKH;AACX,EAAA,OAAO,IAAI,cAAA,EAAe;AAC5B;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BROKEN_PIPE = "EPIPE";
|
|
4
|
+
function isBrokenPipe(error) {
|
|
5
|
+
return error.code === BROKEN_PIPE;
|
|
6
|
+
}
|
|
7
|
+
function createPipeSafeWriter(stream) {
|
|
8
|
+
stream.on("error", (error) => {
|
|
9
|
+
if (!isBrokenPipe(error)) {
|
|
10
|
+
throw error;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
return (text) => {
|
|
14
|
+
stream.write(text);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.createPipeSafeWriter = createPipeSafeWriter;
|
|
19
|
+
//# sourceMappingURL=pipe-safe-writer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-safe-writer.cjs","sources":["../../../src/adapters/pipe-safe-writer/pipe-safe-writer.ts"],"sourcesContent":["import type { Writable } from \"node:stream\";\n\n/**\n * A writer for the CLI's stdout that stops when the reader closes the pipe (`| head`): the write\n * fails with `EPIPE`, which Node raises as an unhandled `error` event and a crash with exit code\n * 1. The reader has all it wanted, so the rest is dropped and the run ends as it would have.\n * Every other write error is thrown again, as before.\n */\n\nconst BROKEN_PIPE = \"EPIPE\";\n\nfunction isBrokenPipe(error: Error): boolean {\n return (error as NodeJS.ErrnoException).code === BROKEN_PIPE;\n}\n\n/**\n * The text writer of the stream. After `EPIPE` the stream is destroyed, so later writes are\n * dropped by the stream itself and raise no second error.\n */\nexport function createPipeSafeWriter(stream: Writable): (text: string) => void {\n stream.on(\"error\", (error: Error) => {\n if (!isBrokenPipe(error)) {\n throw error;\n }\n });\n return (text) => {\n stream.write(text);\n };\n}\n"],"names":[],"mappings":";;AASA,MAAM,WAAA,GAAc,OAAA;AAEpB,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,OAAQ,MAAgC,IAAA,KAAS,WAAA;AACnD;AAMO,SAAS,qBAAqB,MAAA,EAA0C;AAC7E,EAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAC,KAAA,KAAiB;AACnC,IAAA,IAAI,CAAC,YAAA,CAAa,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,CAAC,IAAA,KAAS;AACf,IAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,EACnB,CAAA;AACF;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const BROKEN_PIPE = "EPIPE";
|
|
2
|
+
function isBrokenPipe(error) {
|
|
3
|
+
return error.code === BROKEN_PIPE;
|
|
4
|
+
}
|
|
5
|
+
function createPipeSafeWriter(stream) {
|
|
6
|
+
stream.on("error", (error) => {
|
|
7
|
+
if (!isBrokenPipe(error)) {
|
|
8
|
+
throw error;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
return (text) => {
|
|
12
|
+
stream.write(text);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { createPipeSafeWriter };
|
|
17
|
+
//# sourceMappingURL=pipe-safe-writer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-safe-writer.mjs","sources":["../../../src/adapters/pipe-safe-writer/pipe-safe-writer.ts"],"sourcesContent":["import type { Writable } from \"node:stream\";\n\n/**\n * A writer for the CLI's stdout that stops when the reader closes the pipe (`| head`): the write\n * fails with `EPIPE`, which Node raises as an unhandled `error` event and a crash with exit code\n * 1. The reader has all it wanted, so the rest is dropped and the run ends as it would have.\n * Every other write error is thrown again, as before.\n */\n\nconst BROKEN_PIPE = \"EPIPE\";\n\nfunction isBrokenPipe(error: Error): boolean {\n return (error as NodeJS.ErrnoException).code === BROKEN_PIPE;\n}\n\n/**\n * The text writer of the stream. After `EPIPE` the stream is destroyed, so later writes are\n * dropped by the stream itself and raise no second error.\n */\nexport function createPipeSafeWriter(stream: Writable): (text: string) => void {\n stream.on(\"error\", (error: Error) => {\n if (!isBrokenPipe(error)) {\n throw error;\n }\n });\n return (text) => {\n stream.write(text);\n };\n}\n"],"names":[],"mappings":"AASA,MAAM,WAAA,GAAc,OAAA;AAEpB,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,OAAQ,MAAgC,IAAA,KAAS,WAAA;AACnD;AAMO,SAAS,qBAAqB,MAAA,EAA0C;AAC7E,EAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAC,KAAA,KAAiB;AACnC,IAAA,IAAI,CAAC,YAAA,CAAa,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,CAAC,IAAA,KAAS;AACf,IAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,EACnB,CAAA;AACF;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsonPointer = require('../../domain/openapi/json-pointer.cjs');
|
|
4
|
+
const componentSchemas = require('./component-schemas.cjs');
|
|
5
|
+
const refHolders = require('./ref-holders.cjs');
|
|
6
|
+
|
|
7
|
+
function schemaKeysOf(document) {
|
|
8
|
+
return new Set(Object.keys(componentSchemas.componentSchemasOf(document) ?? {}));
|
|
9
|
+
}
|
|
10
|
+
function copiesIn(schemas, keysBefore) {
|
|
11
|
+
const originals = /* @__PURE__ */ new Map();
|
|
12
|
+
for (const key of keysBefore) {
|
|
13
|
+
if (Object.hasOwn(schemas, key) && !originals.has(schemas[key])) {
|
|
14
|
+
originals.set(schemas[key], key);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const copies = /* @__PURE__ */ new Map();
|
|
18
|
+
for (const [key, value] of Object.entries(schemas)) {
|
|
19
|
+
const original = keysBefore.has(key) ? void 0 : originals.get(value);
|
|
20
|
+
if (original !== void 0) {
|
|
21
|
+
copies.set(`${componentSchemas.SCHEMAS_POINTER}/${key}`, jsonPointer.childPointer(componentSchemas.SCHEMAS_POINTER, original));
|
|
22
|
+
delete schemas[key];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return copies;
|
|
26
|
+
}
|
|
27
|
+
function removeBundledMappingCopies(bundled, keysBefore) {
|
|
28
|
+
const schemas = componentSchemas.componentSchemasOf(bundled);
|
|
29
|
+
const copies = schemas === void 0 ? /* @__PURE__ */ new Map() : copiesIn(schemas, keysBefore);
|
|
30
|
+
if (copies.size === 0) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
for (const mapping of refHolders.findMappings(bundled)) {
|
|
34
|
+
for (const [name, value] of Object.entries(mapping)) {
|
|
35
|
+
const original = typeof value === "string" ? copies.get(value) : void 0;
|
|
36
|
+
if (original !== void 0) {
|
|
37
|
+
mapping[name] = original;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (const { node } of refHolders.findRefHolders(bundled)) {
|
|
42
|
+
node.$ref = copies.get(node.$ref) ?? node.$ref;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
exports.removeBundledMappingCopies = removeBundledMappingCopies;
|
|
47
|
+
exports.schemaKeysOf = schemaKeysOf;
|
|
48
|
+
//# sourceMappingURL=bundled-mapping-copies.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled-mapping-copies.cjs","sources":["../../../src/adapters/redocly-loader/bundled-mapping-copies.ts"],"sourcesContent":["import { childPointer } from \"../../domain/openapi/json-pointer.js\";\nimport { type ComponentSchemas, componentSchemasOf, SCHEMAS_POINTER } from \"./component-schemas.js\";\nimport { findMappings, findRefHolders } from \"./ref-holders.js\";\n\n/**\n * Redocly 1.x bundles every discriminator `mapping` value as if it were an external `$ref`: it\n * stores the target schema under the raw last segment of the pointer. For a local schema whose\n * key needs an escape (`a~b`, written `a~0b`; `c/d`, written `c~1d`) that segment is no existing\n * key, so the bundle added `a~0b` and `c~1d` to `components.schemas` as copies of `a~b` and\n * `c/d`, and the generator wrote each type twice. A copy is the very object of the schema it\n * copies, so a key the bundle added whose value is the value of a key the document had is removed,\n * and the mapping values and `$ref`s that name it point at the original.\n */\n\n/** The keys of `components.schemas` before bundling: the bundle edits the document in place. */\nexport function schemaKeysOf(document: unknown): ReadonlySet<string> {\n return new Set(Object.keys(componentSchemasOf(document) ?? {}));\n}\n\n/** Each key the bundle added as a copy, with the pointer of the schema it copies. */\nfunction copiesIn(schemas: ComponentSchemas, keysBefore: ReadonlySet<string>): Map<string, string> {\n const originals = new Map<unknown, string>();\n for (const key of keysBefore) {\n if (Object.hasOwn(schemas, key) && !originals.has(schemas[key])) {\n originals.set(schemas[key], key);\n }\n }\n const copies = new Map<string, string>();\n for (const [key, value] of Object.entries(schemas)) {\n const original = keysBefore.has(key) ? undefined : originals.get(value);\n if (original !== undefined) {\n copies.set(`${SCHEMAS_POINTER}/${key}`, childPointer(SCHEMAS_POINTER, original));\n delete schemas[key];\n }\n }\n return copies;\n}\n\n/** Remove the bundle's copies of the document's own schemas, in place. */\nexport function removeBundledMappingCopies(\n bundled: unknown,\n keysBefore: ReadonlySet<string>,\n): void {\n const schemas = componentSchemasOf(bundled);\n const copies = schemas === undefined ? new Map<string, string>() : copiesIn(schemas, keysBefore);\n if (copies.size === 0) {\n return;\n }\n for (const mapping of findMappings(bundled)) {\n for (const [name, value] of Object.entries(mapping)) {\n const original = typeof value === \"string\" ? copies.get(value) : undefined;\n if (original !== undefined) {\n mapping[name] = original;\n }\n }\n }\n for (const { node } of findRefHolders(bundled)) {\n node.$ref = copies.get(node.$ref) ?? node.$ref;\n }\n}\n"],"names":["componentSchemasOf","SCHEMAS_POINTER","childPointer","findMappings","findRefHolders"],"mappings":";;;;;;AAeO,SAAS,aAAa,QAAA,EAAwC;AACnE,EAAA,OAAO,IAAI,IAAI,MAAA,CAAO,IAAA,CAAKA,oCAAmB,QAAQ,CAAA,IAAK,EAAE,CAAC,CAAA;AAChE;AAGA,SAAS,QAAA,CAAS,SAA2B,UAAA,EAAsD;AACjG,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAqB;AAC3C,EAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,GAAG,CAAA,IAAK,CAAC,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAC,CAAA,EAAG;AAC/D,MAAA,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,EAAG,GAAG,CAAA;AAAA,IACjC;AAAA,EACF;AACA,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AACvC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAClD,IAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,GAAG,IAAI,MAAA,GAAY,SAAA,CAAU,IAAI,KAAK,CAAA;AACtE,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAA,CAAO,GAAA,CAAI,GAAGC,gCAAe,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAIC,wBAAA,CAAaD,gCAAA,EAAiB,QAAQ,CAAC,CAAA;AAC/E,MAAA,OAAO,QAAQ,GAAG,CAAA;AAAA,IACpB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,0BAAA,CACd,SACA,UAAA,EACM;AACN,EAAA,MAAM,OAAA,GAAUD,oCAAmB,OAAO,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,YAAY,MAAA,mBAAY,IAAI,KAAoB,GAAI,QAAA,CAAS,SAAS,UAAU,CAAA;AAC/F,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAWG,uBAAA,CAAa,OAAO,CAAA,EAAG;AAC3C,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,WAAW,OAAO,KAAA,KAAU,WAAW,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI,MAAA;AACjE,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,EAAE,IAAA,EAAK,IAAKC,yBAAA,CAAe,OAAO,CAAA,EAAG;AAC9C,IAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,IAAI,KAAK,IAAA,CAAK,IAAA;AAAA,EAC5C;AACF;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { childPointer } from '../../domain/openapi/json-pointer.mjs';
|
|
2
|
+
import { componentSchemasOf, SCHEMAS_POINTER } from './component-schemas.mjs';
|
|
3
|
+
import { findMappings, findRefHolders } from './ref-holders.mjs';
|
|
4
|
+
|
|
5
|
+
function schemaKeysOf(document) {
|
|
6
|
+
return new Set(Object.keys(componentSchemasOf(document) ?? {}));
|
|
7
|
+
}
|
|
8
|
+
function copiesIn(schemas, keysBefore) {
|
|
9
|
+
const originals = /* @__PURE__ */ new Map();
|
|
10
|
+
for (const key of keysBefore) {
|
|
11
|
+
if (Object.hasOwn(schemas, key) && !originals.has(schemas[key])) {
|
|
12
|
+
originals.set(schemas[key], key);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const copies = /* @__PURE__ */ new Map();
|
|
16
|
+
for (const [key, value] of Object.entries(schemas)) {
|
|
17
|
+
const original = keysBefore.has(key) ? void 0 : originals.get(value);
|
|
18
|
+
if (original !== void 0) {
|
|
19
|
+
copies.set(`${SCHEMAS_POINTER}/${key}`, childPointer(SCHEMAS_POINTER, original));
|
|
20
|
+
delete schemas[key];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return copies;
|
|
24
|
+
}
|
|
25
|
+
function removeBundledMappingCopies(bundled, keysBefore) {
|
|
26
|
+
const schemas = componentSchemasOf(bundled);
|
|
27
|
+
const copies = schemas === void 0 ? /* @__PURE__ */ new Map() : copiesIn(schemas, keysBefore);
|
|
28
|
+
if (copies.size === 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const mapping of findMappings(bundled)) {
|
|
32
|
+
for (const [name, value] of Object.entries(mapping)) {
|
|
33
|
+
const original = typeof value === "string" ? copies.get(value) : void 0;
|
|
34
|
+
if (original !== void 0) {
|
|
35
|
+
mapping[name] = original;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const { node } of findRefHolders(bundled)) {
|
|
40
|
+
node.$ref = copies.get(node.$ref) ?? node.$ref;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { removeBundledMappingCopies, schemaKeysOf };
|
|
45
|
+
//# sourceMappingURL=bundled-mapping-copies.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled-mapping-copies.mjs","sources":["../../../src/adapters/redocly-loader/bundled-mapping-copies.ts"],"sourcesContent":["import { childPointer } from \"../../domain/openapi/json-pointer.js\";\nimport { type ComponentSchemas, componentSchemasOf, SCHEMAS_POINTER } from \"./component-schemas.js\";\nimport { findMappings, findRefHolders } from \"./ref-holders.js\";\n\n/**\n * Redocly 1.x bundles every discriminator `mapping` value as if it were an external `$ref`: it\n * stores the target schema under the raw last segment of the pointer. For a local schema whose\n * key needs an escape (`a~b`, written `a~0b`; `c/d`, written `c~1d`) that segment is no existing\n * key, so the bundle added `a~0b` and `c~1d` to `components.schemas` as copies of `a~b` and\n * `c/d`, and the generator wrote each type twice. A copy is the very object of the schema it\n * copies, so a key the bundle added whose value is the value of a key the document had is removed,\n * and the mapping values and `$ref`s that name it point at the original.\n */\n\n/** The keys of `components.schemas` before bundling: the bundle edits the document in place. */\nexport function schemaKeysOf(document: unknown): ReadonlySet<string> {\n return new Set(Object.keys(componentSchemasOf(document) ?? {}));\n}\n\n/** Each key the bundle added as a copy, with the pointer of the schema it copies. */\nfunction copiesIn(schemas: ComponentSchemas, keysBefore: ReadonlySet<string>): Map<string, string> {\n const originals = new Map<unknown, string>();\n for (const key of keysBefore) {\n if (Object.hasOwn(schemas, key) && !originals.has(schemas[key])) {\n originals.set(schemas[key], key);\n }\n }\n const copies = new Map<string, string>();\n for (const [key, value] of Object.entries(schemas)) {\n const original = keysBefore.has(key) ? undefined : originals.get(value);\n if (original !== undefined) {\n copies.set(`${SCHEMAS_POINTER}/${key}`, childPointer(SCHEMAS_POINTER, original));\n delete schemas[key];\n }\n }\n return copies;\n}\n\n/** Remove the bundle's copies of the document's own schemas, in place. */\nexport function removeBundledMappingCopies(\n bundled: unknown,\n keysBefore: ReadonlySet<string>,\n): void {\n const schemas = componentSchemasOf(bundled);\n const copies = schemas === undefined ? new Map<string, string>() : copiesIn(schemas, keysBefore);\n if (copies.size === 0) {\n return;\n }\n for (const mapping of findMappings(bundled)) {\n for (const [name, value] of Object.entries(mapping)) {\n const original = typeof value === \"string\" ? copies.get(value) : undefined;\n if (original !== undefined) {\n mapping[name] = original;\n }\n }\n }\n for (const { node } of findRefHolders(bundled)) {\n node.$ref = copies.get(node.$ref) ?? node.$ref;\n }\n}\n"],"names":[],"mappings":";;;;AAeO,SAAS,aAAa,QAAA,EAAwC;AACnE,EAAA,OAAO,IAAI,IAAI,MAAA,CAAO,IAAA,CAAK,mBAAmB,QAAQ,CAAA,IAAK,EAAE,CAAC,CAAA;AAChE;AAGA,SAAS,QAAA,CAAS,SAA2B,UAAA,EAAsD;AACjG,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAqB;AAC3C,EAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,GAAG,CAAA,IAAK,CAAC,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAC,CAAA,EAAG;AAC/D,MAAA,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,EAAG,GAAG,CAAA;AAAA,IACjC;AAAA,EACF;AACA,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AACvC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAClD,IAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,GAAG,IAAI,MAAA,GAAY,SAAA,CAAU,IAAI,KAAK,CAAA;AACtE,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAA,CAAO,GAAA,CAAI,GAAG,eAAe,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,YAAA,CAAa,eAAA,EAAiB,QAAQ,CAAC,CAAA;AAC/E,MAAA,OAAO,QAAQ,GAAG,CAAA;AAAA,IACpB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,0BAAA,CACd,SACA,UAAA,EACM;AACN,EAAA,MAAM,OAAA,GAAU,mBAAmB,OAAO,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,YAAY,MAAA,mBAAY,IAAI,KAAoB,GAAI,QAAA,CAAS,SAAS,UAAU,CAAA;AAC/F,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAW,YAAA,CAAa,OAAO,CAAA,EAAG;AAC3C,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,WAAW,OAAO,KAAA,KAAU,WAAW,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI,MAAA;AACjE,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,EAAE,IAAA,EAAK,IAAK,cAAA,CAAe,OAAO,CAAA,EAAG;AAC9C,IAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,IAAI,KAAK,IAAA,CAAK,IAAA;AAAA,EAC5C;AACF;;"}
|
|
@@ -35,7 +35,7 @@ function repairedRef(document, ref) {
|
|
|
35
35
|
if (!resolves(document, raw)) {
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
|
-
return
|
|
38
|
+
return raw.reduce((pointer, key) => jsonPointer.childPointer(pointer, key), jsonPointer.ROOT_POINTER);
|
|
39
39
|
}
|
|
40
40
|
function repairBundledRefs(document) {
|
|
41
41
|
for (const { node } of refHolders.findRefHolders(document)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-ref-repair.cjs","sources":["../../../src/adapters/redocly-loader/bundled-ref-repair.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"bundled-ref-repair.cjs","sources":["../../../src/adapters/redocly-loader/bundled-ref-repair.ts"],"sourcesContent":["import { childPointer, parseRefPointer, ROOT_POINTER } from \"../../domain/openapi/json-pointer.js\";\nimport { findRefHolders } from \"./ref-holders.js\";\n\n/**\n * Redocly 1.x bundles an external `$ref` into a component named after the raw segment of the\n * original pointer (`a~0b`, `50%`), and writes the new local `$ref` without escaping it. Read as a\n * JSON Pointer, `#/components/schemas/a~0b` names the key `a~b`, which does not exist, and\n * `#/components/schemas/50%` is malformed, so the generator failed on it. This rewrites every\n * local `$ref` that does not resolve as a pointer but does resolve segment by segment as written.\n */\n\nconst LOCAL_REF_PREFIX = \"#/\";\n\nfunction isContainer(value: unknown): value is object {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction childAt(node: unknown, segment: string): unknown {\n if (!isContainer(node) || !Object.hasOwn(node, segment)) {\n return undefined;\n }\n return (node as Record<string, unknown>)[segment];\n}\n\nfunction resolves(document: unknown, segments: readonly string[]): boolean {\n return segments.reduce<unknown>(childAt, document) !== undefined;\n}\n\n/** The pointer's segments, or null when the pointer has a malformed percent escape. */\nfunction decodedSegments(ref: string): string[] | null {\n try {\n return parseRefPointer(ref);\n } catch (error) {\n if (error instanceof URIError) {\n return null;\n }\n throw error;\n }\n}\n\n/** The repaired `$ref`, or null when the ref resolves already or cannot be repaired. */\nfunction repairedRef(document: unknown, ref: string): string | null {\n const decoded = decodedSegments(ref);\n if (decoded && resolves(document, decoded)) {\n return null;\n }\n const raw = ref.slice(LOCAL_REF_PREFIX.length).split(\"/\").filter(Boolean);\n if (!resolves(document, raw)) {\n return null;\n }\n return raw.reduce((pointer, key) => childPointer(pointer, key), ROOT_POINTER);\n}\n\n/** Repair the local `$ref`s of a bundled document in place, as Redocly's bundle edits it. */\nexport function repairBundledRefs(document: unknown): void {\n for (const { node } of findRefHolders(document)) {\n if (!node.$ref.startsWith(LOCAL_REF_PREFIX)) {\n continue;\n }\n const repaired = repairedRef(document, node.$ref);\n if (repaired !== null) {\n node.$ref = repaired;\n }\n }\n}\n"],"names":["parseRefPointer","childPointer","ROOT_POINTER","findRefHolders"],"mappings":";;;;;AAWA,MAAM,gBAAA,GAAmB,IAAA;AAEzB,SAAS,YAAY,KAAA,EAAiC;AACpD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAEA,SAAS,OAAA,CAAQ,MAAe,OAAA,EAA0B;AACxD,EAAA,IAAI,CAAC,YAAY,IAAI,CAAA,IAAK,CAAC,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAG;AACvD,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAQ,KAAiC,OAAO,CAAA;AAClD;AAEA,SAAS,QAAA,CAAS,UAAmB,QAAA,EAAsC;AACzE,EAAA,OAAO,QAAA,CAAS,MAAA,CAAgB,OAAA,EAAS,QAAQ,CAAA,KAAM,MAAA;AACzD;AAGA,SAAS,gBAAgB,GAAA,EAA8B;AACrD,EAAA,IAAI;AACF,IAAA,OAAOA,4BAAgB,GAAG,CAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,iBAAiB,QAAA,EAAU;AAC7B,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAGA,SAAS,WAAA,CAAY,UAAmB,GAAA,EAA4B;AAClE,EAAA,MAAM,OAAA,GAAU,gBAAgB,GAAG,CAAA;AACnC,EAAA,IAAI,OAAA,IAAW,QAAA,CAAS,QAAA,EAAU,OAAO,CAAA,EAAG;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,gBAAA,CAAiB,MAAM,EAAE,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACxE,EAAA,IAAI,CAAC,QAAA,CAAS,QAAA,EAAU,GAAG,CAAA,EAAG;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,OAAA,EAAS,QAAQC,wBAAA,CAAa,OAAA,EAAS,GAAG,CAAA,EAAGC,wBAAY,CAAA;AAC9E;AAGO,SAAS,kBAAkB,QAAA,EAAyB;AACzD,EAAA,KAAA,MAAW,EAAE,IAAA,EAAK,IAAKC,yBAAA,CAAe,QAAQ,CAAA,EAAG;AAC/C,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,gBAAgB,CAAA,EAAG;AAC3C,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,QAAA,EAAU,IAAA,CAAK,IAAI,CAAA;AAChD,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAAA,IACd;AAAA,EACF;AACF;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { childPointer, ROOT_POINTER, parseRefPointer } from '../../domain/openapi/json-pointer.mjs';
|
|
2
2
|
import { findRefHolders } from './ref-holders.mjs';
|
|
3
3
|
|
|
4
4
|
const LOCAL_REF_PREFIX = "#/";
|
|
@@ -33,7 +33,7 @@ function repairedRef(document, ref) {
|
|
|
33
33
|
if (!resolves(document, raw)) {
|
|
34
34
|
return null;
|
|
35
35
|
}
|
|
36
|
-
return
|
|
36
|
+
return raw.reduce((pointer, key) => childPointer(pointer, key), ROOT_POINTER);
|
|
37
37
|
}
|
|
38
38
|
function repairBundledRefs(document) {
|
|
39
39
|
for (const { node } of findRefHolders(document)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-ref-repair.mjs","sources":["../../../src/adapters/redocly-loader/bundled-ref-repair.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"bundled-ref-repair.mjs","sources":["../../../src/adapters/redocly-loader/bundled-ref-repair.ts"],"sourcesContent":["import { childPointer, parseRefPointer, ROOT_POINTER } from \"../../domain/openapi/json-pointer.js\";\nimport { findRefHolders } from \"./ref-holders.js\";\n\n/**\n * Redocly 1.x bundles an external `$ref` into a component named after the raw segment of the\n * original pointer (`a~0b`, `50%`), and writes the new local `$ref` without escaping it. Read as a\n * JSON Pointer, `#/components/schemas/a~0b` names the key `a~b`, which does not exist, and\n * `#/components/schemas/50%` is malformed, so the generator failed on it. This rewrites every\n * local `$ref` that does not resolve as a pointer but does resolve segment by segment as written.\n */\n\nconst LOCAL_REF_PREFIX = \"#/\";\n\nfunction isContainer(value: unknown): value is object {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction childAt(node: unknown, segment: string): unknown {\n if (!isContainer(node) || !Object.hasOwn(node, segment)) {\n return undefined;\n }\n return (node as Record<string, unknown>)[segment];\n}\n\nfunction resolves(document: unknown, segments: readonly string[]): boolean {\n return segments.reduce<unknown>(childAt, document) !== undefined;\n}\n\n/** The pointer's segments, or null when the pointer has a malformed percent escape. */\nfunction decodedSegments(ref: string): string[] | null {\n try {\n return parseRefPointer(ref);\n } catch (error) {\n if (error instanceof URIError) {\n return null;\n }\n throw error;\n }\n}\n\n/** The repaired `$ref`, or null when the ref resolves already or cannot be repaired. */\nfunction repairedRef(document: unknown, ref: string): string | null {\n const decoded = decodedSegments(ref);\n if (decoded && resolves(document, decoded)) {\n return null;\n }\n const raw = ref.slice(LOCAL_REF_PREFIX.length).split(\"/\").filter(Boolean);\n if (!resolves(document, raw)) {\n return null;\n }\n return raw.reduce((pointer, key) => childPointer(pointer, key), ROOT_POINTER);\n}\n\n/** Repair the local `$ref`s of a bundled document in place, as Redocly's bundle edits it. */\nexport function repairBundledRefs(document: unknown): void {\n for (const { node } of findRefHolders(document)) {\n if (!node.$ref.startsWith(LOCAL_REF_PREFIX)) {\n continue;\n }\n const repaired = repairedRef(document, node.$ref);\n if (repaired !== null) {\n node.$ref = repaired;\n }\n }\n}\n"],"names":[],"mappings":";;;AAWA,MAAM,gBAAA,GAAmB,IAAA;AAEzB,SAAS,YAAY,KAAA,EAAiC;AACpD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAEA,SAAS,OAAA,CAAQ,MAAe,OAAA,EAA0B;AACxD,EAAA,IAAI,CAAC,YAAY,IAAI,CAAA,IAAK,CAAC,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAG;AACvD,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAQ,KAAiC,OAAO,CAAA;AAClD;AAEA,SAAS,QAAA,CAAS,UAAmB,QAAA,EAAsC;AACzE,EAAA,OAAO,QAAA,CAAS,MAAA,CAAgB,OAAA,EAAS,QAAQ,CAAA,KAAM,MAAA;AACzD;AAGA,SAAS,gBAAgB,GAAA,EAA8B;AACrD,EAAA,IAAI;AACF,IAAA,OAAO,gBAAgB,GAAG,CAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,iBAAiB,QAAA,EAAU;AAC7B,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAGA,SAAS,WAAA,CAAY,UAAmB,GAAA,EAA4B;AAClE,EAAA,MAAM,OAAA,GAAU,gBAAgB,GAAG,CAAA;AACnC,EAAA,IAAI,OAAA,IAAW,QAAA,CAAS,QAAA,EAAU,OAAO,CAAA,EAAG;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,gBAAA,CAAiB,MAAM,EAAE,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACxE,EAAA,IAAI,CAAC,QAAA,CAAS,QAAA,EAAU,GAAG,CAAA,EAAG;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,OAAA,EAAS,QAAQ,YAAA,CAAa,OAAA,EAAS,GAAG,CAAA,EAAG,YAAY,CAAA;AAC9E;AAGO,SAAS,kBAAkB,QAAA,EAAyB;AACzD,EAAA,KAAA,MAAW,EAAE,IAAA,EAAK,IAAK,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC/C,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,gBAAgB,CAAA,EAAG;AAC3C,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,QAAA,EAAU,IAAA,CAAK,IAAI,CAAA;AAChD,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAAA,IACd;AAAA,EACF;AACF;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsonPointer = require('../../domain/openapi/json-pointer.cjs');
|
|
4
|
+
|
|
5
|
+
const SCHEMAS_POINTER = jsonPointer.childPointer(jsonPointer.childPointer(jsonPointer.ROOT_POINTER, "components"), "schemas");
|
|
6
|
+
function isContainer(value) {
|
|
7
|
+
return typeof value === "object" && value !== null;
|
|
8
|
+
}
|
|
9
|
+
function componentSchemasOf(document) {
|
|
10
|
+
const components = isContainer(document) ? document.components : void 0;
|
|
11
|
+
const schemas = isContainer(components) ? components.schemas : void 0;
|
|
12
|
+
return isContainer(schemas) ? schemas : void 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.SCHEMAS_POINTER = SCHEMAS_POINTER;
|
|
16
|
+
exports.componentSchemasOf = componentSchemasOf;
|
|
17
|
+
//# sourceMappingURL=component-schemas.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-schemas.cjs","sources":["../../../src/adapters/redocly-loader/component-schemas.ts"],"sourcesContent":["import { childPointer, ROOT_POINTER } from \"../../domain/openapi/json-pointer.js\";\n\n/** `components.schemas` of a parsed document, which the loader repairs in place. */\n\nexport type ComponentSchemas = Record<string, unknown>;\n\n/** `#/components/schemas`. */\nexport const SCHEMAS_POINTER = childPointer(childPointer(ROOT_POINTER, \"components\"), \"schemas\");\n\nfunction isContainer(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\n/** The `components.schemas` object of a document, when it has one. */\nexport function componentSchemasOf(document: unknown): ComponentSchemas | undefined {\n const components = isContainer(document) ? document.components : undefined;\n const schemas = isContainer(components) ? components.schemas : undefined;\n return isContainer(schemas) ? schemas : undefined;\n}\n"],"names":["childPointer","ROOT_POINTER"],"mappings":";;;;AAOO,MAAM,kBAAkBA,wBAAA,CAAaA,wBAAA,CAAaC,wBAAA,EAAc,YAAY,GAAG,SAAS;AAE/F,SAAS,YAAY,KAAA,EAAkD;AACrE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAGO,SAAS,mBAAmB,QAAA,EAAiD;AAClF,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,QAAQ,CAAA,GAAI,SAAS,UAAA,GAAa,MAAA;AACjE,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,UAAU,CAAA,GAAI,WAAW,OAAA,GAAU,MAAA;AAC/D,EAAA,OAAO,WAAA,CAAY,OAAO,CAAA,GAAI,OAAA,GAAU,MAAA;AAC1C;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { childPointer, ROOT_POINTER } from '../../domain/openapi/json-pointer.mjs';
|
|
2
|
+
|
|
3
|
+
const SCHEMAS_POINTER = childPointer(childPointer(ROOT_POINTER, "components"), "schemas");
|
|
4
|
+
function isContainer(value) {
|
|
5
|
+
return typeof value === "object" && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function componentSchemasOf(document) {
|
|
8
|
+
const components = isContainer(document) ? document.components : void 0;
|
|
9
|
+
const schemas = isContainer(components) ? components.schemas : void 0;
|
|
10
|
+
return isContainer(schemas) ? schemas : void 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { SCHEMAS_POINTER, componentSchemasOf };
|
|
14
|
+
//# sourceMappingURL=component-schemas.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-schemas.mjs","sources":["../../../src/adapters/redocly-loader/component-schemas.ts"],"sourcesContent":["import { childPointer, ROOT_POINTER } from \"../../domain/openapi/json-pointer.js\";\n\n/** `components.schemas` of a parsed document, which the loader repairs in place. */\n\nexport type ComponentSchemas = Record<string, unknown>;\n\n/** `#/components/schemas`. */\nexport const SCHEMAS_POINTER = childPointer(childPointer(ROOT_POINTER, \"components\"), \"schemas\");\n\nfunction isContainer(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\n/** The `components.schemas` object of a document, when it has one. */\nexport function componentSchemasOf(document: unknown): ComponentSchemas | undefined {\n const components = isContainer(document) ? document.components : undefined;\n const schemas = isContainer(components) ? components.schemas : undefined;\n return isContainer(schemas) ? schemas : undefined;\n}\n"],"names":[],"mappings":";;AAOO,MAAM,kBAAkB,YAAA,CAAa,YAAA,CAAa,YAAA,EAAc,YAAY,GAAG,SAAS;AAE/F,SAAS,YAAY,KAAA,EAAkD;AACrE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAGO,SAAS,mBAAmB,QAAA,EAAiD;AAClF,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,QAAQ,CAAA,GAAI,SAAS,UAAA,GAAa,MAAA;AACjE,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,UAAU,CAAA,GAAI,WAAW,OAAA,GAAU,MAAA;AAC/D,EAAA,OAAO,WAAA,CAAY,OAAO,CAAA,GAAI,OAAA,GAAU,MAAA;AAC1C;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const path = require('node:path');
|
|
4
|
+
const node_url = require('node:url');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
|
|
7
|
+
|
|
8
|
+
const path__default = /*#__PURE__*/_interopDefaultCompat(path);
|
|
9
|
+
|
|
10
|
+
async function loadedDocuments(root, resolver) {
|
|
11
|
+
const settled = await Promise.allSettled(resolver.cache.values());
|
|
12
|
+
const cached = settled.flatMap((entry) => entry.status === "fulfilled" ? [entry.value] : []);
|
|
13
|
+
const bySource = /* @__PURE__ */ new Map([[root.source.absoluteRef, root.parsed]]);
|
|
14
|
+
for (const document of cached) {
|
|
15
|
+
if ("parsed" in document && !bySource.has(document.source.absoluteRef)) {
|
|
16
|
+
bySource.set(document.source.absoluteRef, document.parsed);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return [...bySource].map(([source, parsed]) => ({ source, parsed }));
|
|
20
|
+
}
|
|
21
|
+
async function localFilesRead(root, resolver, isRootAFile) {
|
|
22
|
+
const documents = await loadedDocuments(root, resolver);
|
|
23
|
+
return documents.map(({ source }) => source).filter((source) => path__default.isAbsolute(source)).filter((source) => isRootAFile || source !== root.source.absoluteRef).map((source) => node_url.pathToFileURL(source));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.loadedDocuments = loadedDocuments;
|
|
27
|
+
exports.localFilesRead = localFilesRead;
|
|
28
|
+
//# sourceMappingURL=loaded-documents.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaded-documents.cjs","sources":["../../../src/adapters/redocly-loader/loaded-documents.ts"],"sourcesContent":["import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { BaseResolver, Document } from \"@redocly/openapi-core\";\nimport type { LoadedDocument } from \"./unsupported-keys.js\";\n\n/** The documents one load read, from the Redocly resolver's cache. */\n\n/**\n * The root document and every other document the resolver loaded, as far as they parsed. A root\n * read from a file or URL is in the resolver cache too, and is listed once. A `$ref` that failed\n * to load leaves a rejected entry in the cache, also when bundling did not need it (an example's\n * `$ref`): that entry is no document, and must not fail the listing.\n */\nexport async function loadedDocuments(\n root: Document,\n resolver: BaseResolver,\n): Promise<LoadedDocument[]> {\n const settled = await Promise.allSettled(resolver.cache.values());\n const cached = settled.flatMap((entry) => (entry.status === \"fulfilled\" ? [entry.value] : []));\n const bySource = new Map<string, unknown>([[root.source.absoluteRef, root.parsed]]);\n for (const document of cached) {\n if (\"parsed\" in document && !bySource.has(document.source.absoluteRef)) {\n bySource.set(document.source.absoluteRef, document.parsed);\n }\n }\n return [...bySource].map(([source, parsed]) => ({ source, parsed }));\n}\n\n/**\n * The local files the load read: the root, when it is a file, and every `$ref`'d file. Redocly\n * names a local document by its absolute path and a remote one by its URL. An inline root (a\n * string, object, buffer or stream) has a made-up path in the working directory, so it is left\n * out unless it was read from a file.\n */\nexport async function localFilesRead(\n root: Document,\n resolver: BaseResolver,\n isRootAFile: boolean,\n): Promise<URL[]> {\n const documents = await loadedDocuments(root, resolver);\n return documents\n .map(({ source }) => source)\n .filter((source) => path.isAbsolute(source))\n .filter((source) => isRootAFile || source !== root.source.absoluteRef)\n .map((source) => pathToFileURL(source));\n}\n"],"names":["path","pathToFileURL"],"mappings":";;;;;;;;;AAaA,eAAsB,eAAA,CACpB,MACA,QAAA,EAC2B;AAC3B,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,WAAW,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA;AAChE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAW,KAAA,CAAM,MAAA,KAAW,WAAA,GAAc,CAAC,KAAA,CAAM,KAAK,CAAA,GAAI,EAAG,CAAA;AAC7F,EAAA,MAAM,QAAA,mBAAW,IAAI,GAAA,CAAqB,CAAC,CAAC,IAAA,CAAK,MAAA,CAAO,WAAA,EAAa,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA;AAClF,EAAA,KAAA,MAAW,YAAY,MAAA,EAAQ;AAC7B,IAAA,IAAI,QAAA,IAAY,YAAY,CAAC,QAAA,CAAS,IAAI,QAAA,CAAS,MAAA,CAAO,WAAW,CAAA,EAAG;AACtE,MAAA,QAAA,CAAS,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,WAAA,EAAa,SAAS,MAAM,CAAA;AAAA,IAC3D;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,MAAM,CAAA,MAAO,EAAE,MAAA,EAAQ,QAAO,CAAE,CAAA;AACrE;AAQA,eAAsB,cAAA,CACpB,IAAA,EACA,QAAA,EACA,WAAA,EACgB;AAChB,EAAA,MAAM,SAAA,GAAY,MAAM,eAAA,CAAgB,IAAA,EAAM,QAAQ,CAAA;AACtD,EAAA,OAAO,SAAA,CACJ,GAAA,CAAI,CAAC,EAAE,MAAA,EAAO,KAAM,MAAM,CAAA,CAC1B,MAAA,CAAO,CAAC,MAAA,KAAWA,aAAA,CAAK,WAAW,MAAM,CAAC,CAAA,CAC1C,MAAA,CAAO,CAAC,MAAA,KAAW,WAAA,IAAe,MAAA,KAAW,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,CACpE,GAAA,CAAI,CAAC,MAAA,KAAWC,sBAAA,CAAc,MAAM,CAAC,CAAA;AAC1C;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
3
|
+
|
|
4
|
+
async function loadedDocuments(root, resolver) {
|
|
5
|
+
const settled = await Promise.allSettled(resolver.cache.values());
|
|
6
|
+
const cached = settled.flatMap((entry) => entry.status === "fulfilled" ? [entry.value] : []);
|
|
7
|
+
const bySource = /* @__PURE__ */ new Map([[root.source.absoluteRef, root.parsed]]);
|
|
8
|
+
for (const document of cached) {
|
|
9
|
+
if ("parsed" in document && !bySource.has(document.source.absoluteRef)) {
|
|
10
|
+
bySource.set(document.source.absoluteRef, document.parsed);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return [...bySource].map(([source, parsed]) => ({ source, parsed }));
|
|
14
|
+
}
|
|
15
|
+
async function localFilesRead(root, resolver, isRootAFile) {
|
|
16
|
+
const documents = await loadedDocuments(root, resolver);
|
|
17
|
+
return documents.map(({ source }) => source).filter((source) => path.isAbsolute(source)).filter((source) => isRootAFile || source !== root.source.absoluteRef).map((source) => pathToFileURL(source));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { loadedDocuments, localFilesRead };
|
|
21
|
+
//# sourceMappingURL=loaded-documents.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaded-documents.mjs","sources":["../../../src/adapters/redocly-loader/loaded-documents.ts"],"sourcesContent":["import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { BaseResolver, Document } from \"@redocly/openapi-core\";\nimport type { LoadedDocument } from \"./unsupported-keys.js\";\n\n/** The documents one load read, from the Redocly resolver's cache. */\n\n/**\n * The root document and every other document the resolver loaded, as far as they parsed. A root\n * read from a file or URL is in the resolver cache too, and is listed once. A `$ref` that failed\n * to load leaves a rejected entry in the cache, also when bundling did not need it (an example's\n * `$ref`): that entry is no document, and must not fail the listing.\n */\nexport async function loadedDocuments(\n root: Document,\n resolver: BaseResolver,\n): Promise<LoadedDocument[]> {\n const settled = await Promise.allSettled(resolver.cache.values());\n const cached = settled.flatMap((entry) => (entry.status === \"fulfilled\" ? [entry.value] : []));\n const bySource = new Map<string, unknown>([[root.source.absoluteRef, root.parsed]]);\n for (const document of cached) {\n if (\"parsed\" in document && !bySource.has(document.source.absoluteRef)) {\n bySource.set(document.source.absoluteRef, document.parsed);\n }\n }\n return [...bySource].map(([source, parsed]) => ({ source, parsed }));\n}\n\n/**\n * The local files the load read: the root, when it is a file, and every `$ref`'d file. Redocly\n * names a local document by its absolute path and a remote one by its URL. An inline root (a\n * string, object, buffer or stream) has a made-up path in the working directory, so it is left\n * out unless it was read from a file.\n */\nexport async function localFilesRead(\n root: Document,\n resolver: BaseResolver,\n isRootAFile: boolean,\n): Promise<URL[]> {\n const documents = await loadedDocuments(root, resolver);\n return documents\n .map(({ source }) => source)\n .filter((source) => path.isAbsolute(source))\n .filter((source) => isRootAFile || source !== root.source.absoluteRef)\n .map((source) => pathToFileURL(source));\n}\n"],"names":[],"mappings":";;;AAaA,eAAsB,eAAA,CACpB,MACA,QAAA,EAC2B;AAC3B,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,WAAW,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA;AAChE,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAW,KAAA,CAAM,MAAA,KAAW,WAAA,GAAc,CAAC,KAAA,CAAM,KAAK,CAAA,GAAI,EAAG,CAAA;AAC7F,EAAA,MAAM,QAAA,mBAAW,IAAI,GAAA,CAAqB,CAAC,CAAC,IAAA,CAAK,MAAA,CAAO,WAAA,EAAa,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA;AAClF,EAAA,KAAA,MAAW,YAAY,MAAA,EAAQ;AAC7B,IAAA,IAAI,QAAA,IAAY,YAAY,CAAC,QAAA,CAAS,IAAI,QAAA,CAAS,MAAA,CAAO,WAAW,CAAA,EAAG;AACtE,MAAA,QAAA,CAAS,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,WAAA,EAAa,SAAS,MAAM,CAAA;AAAA,IAC3D;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,MAAM,CAAA,MAAO,EAAE,MAAA,EAAQ,QAAO,CAAE,CAAA;AACrE;AAQA,eAAsB,cAAA,CACpB,IAAA,EACA,QAAA,EACA,WAAA,EACgB;AAChB,EAAA,MAAM,SAAA,GAAY,MAAM,eAAA,CAAgB,IAAA,EAAM,QAAQ,CAAA;AACtD,EAAA,OAAO,SAAA,CACJ,GAAA,CAAI,CAAC,EAAE,MAAA,EAAO,KAAM,MAAM,CAAA,CAC1B,MAAA,CAAO,CAAC,MAAA,KAAW,IAAA,CAAK,WAAW,MAAM,CAAC,CAAA,CAC1C,MAAA,CAAO,CAAC,MAAA,KAAW,WAAA,IAAe,MAAA,KAAW,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,CACpE,GAAA,CAAI,CAAC,MAAA,KAAW,aAAA,CAAc,MAAM,CAAC,CAAA;AAC1C;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsonPointer = require('../../domain/openapi/json-pointer.cjs');
|
|
4
|
+
const componentSchemas = require('./component-schemas.cjs');
|
|
5
|
+
const refHolders = require('./ref-holders.cjs');
|
|
6
|
+
|
|
7
|
+
function pointMappingNamesAtSchemas(document) {
|
|
8
|
+
const schemas = componentSchemas.componentSchemasOf(document);
|
|
9
|
+
if (schemas === void 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
for (const mapping of refHolders.findMappings(document)) {
|
|
13
|
+
for (const [name, value] of Object.entries(mapping)) {
|
|
14
|
+
if (typeof value === "string" && Object.hasOwn(schemas, value)) {
|
|
15
|
+
mapping[name] = jsonPointer.childPointer(componentSchemas.SCHEMAS_POINTER, value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.pointMappingNamesAtSchemas = pointMappingNamesAtSchemas;
|
|
22
|
+
//# sourceMappingURL=mapping-schema-names.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-schema-names.cjs","sources":["../../../src/adapters/redocly-loader/mapping-schema-names.ts"],"sourcesContent":["import { childPointer } from \"../../domain/openapi/json-pointer.js\";\nimport { componentSchemasOf, SCHEMAS_POINTER } from \"./component-schemas.js\";\nimport { findMappings } from \"./ref-holders.js\";\n\n/**\n * A discriminator `mapping` value may be a schema name (`cat: Cat`) or a URI reference. Redocly\n * reads every value as a `$ref`, so a name failed with \"Can't resolve $ref\". OpenAPI 3.1.1\n * (§4.8.25) leaves a value that is both to the implementation and recommends the schema name; a\n * relative URI is then written `./Cat`. So a value that is a key of the document's\n * `components.schemas` becomes the pointer to that schema, in place, before the `$ref`s are\n * resolved. Any other value stays a URI reference.\n */\nexport function pointMappingNamesAtSchemas(document: unknown): void {\n const schemas = componentSchemasOf(document);\n if (schemas === undefined) {\n return;\n }\n for (const mapping of findMappings(document)) {\n for (const [name, value] of Object.entries(mapping)) {\n if (typeof value === \"string\" && Object.hasOwn(schemas, value)) {\n mapping[name] = childPointer(SCHEMAS_POINTER, value);\n }\n }\n }\n}\n"],"names":["componentSchemasOf","findMappings","childPointer","SCHEMAS_POINTER"],"mappings":";;;;;;AAYO,SAAS,2BAA2B,QAAA,EAAyB;AAClE,EAAA,MAAM,OAAA,GAAUA,oCAAmB,QAAQ,CAAA;AAC3C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAWC,uBAAA,CAAa,QAAQ,CAAA,EAAG;AAC5C,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACnD,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,MAAA,CAAO,OAAA,EAAS,KAAK,CAAA,EAAG;AAC9D,QAAA,OAAA,CAAQ,IAAI,CAAA,GAAIC,wBAAA,CAAaC,gCAAA,EAAiB,KAAK,CAAA;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACF;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { childPointer } from '../../domain/openapi/json-pointer.mjs';
|
|
2
|
+
import { componentSchemasOf, SCHEMAS_POINTER } from './component-schemas.mjs';
|
|
3
|
+
import { findMappings } from './ref-holders.mjs';
|
|
4
|
+
|
|
5
|
+
function pointMappingNamesAtSchemas(document) {
|
|
6
|
+
const schemas = componentSchemasOf(document);
|
|
7
|
+
if (schemas === void 0) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
for (const mapping of findMappings(document)) {
|
|
11
|
+
for (const [name, value] of Object.entries(mapping)) {
|
|
12
|
+
if (typeof value === "string" && Object.hasOwn(schemas, value)) {
|
|
13
|
+
mapping[name] = childPointer(SCHEMAS_POINTER, value);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { pointMappingNamesAtSchemas };
|
|
20
|
+
//# sourceMappingURL=mapping-schema-names.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-schema-names.mjs","sources":["../../../src/adapters/redocly-loader/mapping-schema-names.ts"],"sourcesContent":["import { childPointer } from \"../../domain/openapi/json-pointer.js\";\nimport { componentSchemasOf, SCHEMAS_POINTER } from \"./component-schemas.js\";\nimport { findMappings } from \"./ref-holders.js\";\n\n/**\n * A discriminator `mapping` value may be a schema name (`cat: Cat`) or a URI reference. Redocly\n * reads every value as a `$ref`, so a name failed with \"Can't resolve $ref\". OpenAPI 3.1.1\n * (§4.8.25) leaves a value that is both to the implementation and recommends the schema name; a\n * relative URI is then written `./Cat`. So a value that is a key of the document's\n * `components.schemas` becomes the pointer to that schema, in place, before the `$ref`s are\n * resolved. Any other value stays a URI reference.\n */\nexport function pointMappingNamesAtSchemas(document: unknown): void {\n const schemas = componentSchemasOf(document);\n if (schemas === undefined) {\n return;\n }\n for (const mapping of findMappings(document)) {\n for (const [name, value] of Object.entries(mapping)) {\n if (typeof value === \"string\" && Object.hasOwn(schemas, value)) {\n mapping[name] = childPointer(SCHEMAS_POINTER, value);\n }\n }\n }\n}\n"],"names":[],"mappings":";;;;AAYO,SAAS,2BAA2B,QAAA,EAAyB;AAClE,EAAA,MAAM,OAAA,GAAU,mBAAmB,QAAQ,CAAA;AAC3C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAW,YAAA,CAAa,QAAQ,CAAA,EAAG;AAC5C,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACnD,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,MAAA,CAAO,OAAA,EAAS,KAAK,CAAA,EAAG;AAC9D,QAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,YAAA,CAAa,eAAA,EAAiB,KAAK,CAAA;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACF;;"}
|