@skmtc/core 0.28.7 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/_dnt.polyfills.d.ts +11 -0
- package/esm/_dnt.polyfills.js +14 -0
- package/esm/context/GenerateContext.js +16 -16
- package/esm/context/ParseContext.js +9 -1
- package/esm/context/RenderContext.d.ts +7 -7
- package/esm/context/RenderContext.js +17 -12
- package/esm/context/generateTypes.d.ts +2 -2
- package/esm/context/generateTypes.js +3 -1
- package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +23 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +38 -0
- package/esm/dsl/GeneratorKeys.d.ts +2 -2
- package/esm/dsl/GeneratorKeys.js +6 -3
- package/esm/dsl/model/ModelDriver.js +4 -3
- package/esm/dsl/operation/gql/GqlOperationDriver.js +4 -3
- package/esm/dsl/operation/oas/OasOperationDriver.js +4 -3
- package/esm/dsl/webhook/WebhookDriver.js +4 -3
- package/esm/helpers/applyGeneratedSuffix.js +1 -1
- package/esm/helpers/isImported.d.ts +10 -74
- package/esm/helpers/isImported.js +12 -76
- package/esm/helpers/naming.d.ts +2 -1
- package/esm/helpers/naming.js +4 -2
- package/esm/helpers/normalizeWorkspacePath.d.ts +64 -0
- package/esm/helpers/normalizeWorkspacePath.js +98 -0
- package/esm/helpers/toResolvedArtifactPath.d.ts +8 -5
- package/esm/helpers/toResolvedArtifactPath.js +11 -7
- package/esm/helpers/toWorkspacePath.d.ts +3 -3
- package/esm/helpers/toWorkspacePath.js +5 -5
- package/esm/mod.d.ts +1 -0
- package/esm/mod.js +1 -0
- package/esm/oas/discriminator/Discriminator.d.ts +3 -0
- package/esm/oas/discriminator/Discriminator.js +7 -0
- package/esm/oas/document/Document.d.ts +7 -0
- package/esm/oas/document/Document.js +8 -0
- package/esm/oas/example/Example.d.ts +10 -1
- package/esm/oas/example/Example.js +16 -0
- package/esm/oas/mediaType/MediaType.d.ts +12 -0
- package/esm/oas/mediaType/MediaType.js +24 -0
- package/esm/oas/parameter/Parameter.d.ts +2 -1
- package/esm/oas/parameter/Parameter.js +5 -2
- package/esm/oas/parameter/parameter-types.d.ts +10 -2
- package/esm/oas/parameter/parameter-types.js +3 -1
- package/esm/oas/response/Response.d.ts +6 -1
- package/esm/oas/response/Response.js +8 -0
- package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
- package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
- package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
- package/esm/oas/server/Server.d.ts +8 -2
- package/esm/oas/server/Server.js +10 -1
- package/esm/oas/tag/Tag.d.ts +9 -0
- package/esm/oas/tag/Tag.js +9 -0
- package/esm/parse/toOasDialect.d.ts +8 -7
- package/esm/parse/toOasDialect.js +4 -2
- package/esm/parse/v3-0/methods.d.ts +11 -0
- package/esm/parse/v3-0/methods.js +16 -0
- package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
- package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
- package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
- package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
- package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
- package/esm/parse/v3-1/methods.d.ts +11 -0
- package/esm/parse/v3-1/methods.js +16 -0
- package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
- package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
- package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
- package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
- package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
- package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
- package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
- package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
- package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
- package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
- package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
- package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
- package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
- package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
- package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
- package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
- package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
- package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
- package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
- package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
- package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
- package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
- package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
- package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
- package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
- package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
- package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
- package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
- package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
- package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
- package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
- package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
- package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
- package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
- package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
- package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
- package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
- package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
- package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
- package/esm/parse/v3-2/array/toArray.d.ts +80 -0
- package/esm/parse/v3-2/array/toArray.js +165 -0
- package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
- package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
- package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
- package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
- package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
- package/esm/parse/v3-2/contact/toContactV3.js +18 -0
- package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
- package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
- package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
- package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
- package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
- package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
- package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
- package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
- package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
- package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
- package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
- package/esm/parse/v3-2/info/toInfoV3.js +23 -0
- package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
- package/esm/parse/v3-2/integer/toInteger.js +115 -0
- package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
- package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
- package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
- package/esm/parse/v3-2/link/toLinksV3.js +40 -0
- package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
- package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
- package/esm/parse/v3-2/methods.d.ts +17 -0
- package/esm/parse/v3-2/methods.js +21 -0
- package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
- package/esm/parse/v3-2/number/toNumber.js +115 -0
- package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
- package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
- package/esm/parse/v3-2/object/toObject.d.ts +10 -0
- package/esm/parse/v3-2/object/toObject.js +90 -0
- package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
- package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
- package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
- package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
- package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
- package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
- package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
- package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
- package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
- package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
- package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
- package/esm/parse/v3-2/ref/toRefV31.js +10 -0
- package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
- package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +44 -0
- package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/esm/parse/v3-2/response/toResponseV3.js +56 -0
- package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
- package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
- package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
- package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
- package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
- package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
- package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
- package/esm/parse/v3-2/server/toServerV3.js +31 -0
- package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
- package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
- package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
- package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
- package/esm/parse/v3-2/string/toString.d.ts +146 -0
- package/esm/parse/v3-2/string/toString.js +211 -0
- package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
- package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
- package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
- package/esm/parse/v3-2/union/toUnion.js +68 -0
- package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
- package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
- package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
- package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
- package/esm/types/Method.d.ts +7 -4
- package/esm/types/Method.js +17 -4
- package/esm/types/Preview.d.ts +2 -1
- package/esm/types/Settings.js +6 -8
- package/esm/types/SkmtcDocument.d.ts +6 -6
- package/package.json +1 -1
- package/script/_dnt.polyfills.d.ts +11 -0
- package/script/_dnt.polyfills.js +14 -0
- package/script/context/GenerateContext.js +16 -16
- package/script/context/ParseContext.js +9 -1
- package/script/context/RenderContext.d.ts +7 -7
- package/script/context/RenderContext.js +17 -12
- package/script/context/generateTypes.d.ts +2 -2
- package/script/context/generateTypes.js +3 -1
- package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
- package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +26 -0
- package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
- package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +41 -0
- package/script/dsl/GeneratorKeys.d.ts +2 -2
- package/script/dsl/GeneratorKeys.js +6 -3
- package/script/dsl/model/ModelDriver.js +4 -3
- package/script/dsl/operation/gql/GqlOperationDriver.js +4 -3
- package/script/dsl/operation/oas/OasOperationDriver.js +4 -3
- package/script/dsl/webhook/WebhookDriver.js +4 -3
- package/script/helpers/applyGeneratedSuffix.js +1 -1
- package/script/helpers/isImported.d.ts +10 -74
- package/script/helpers/isImported.js +12 -76
- package/script/helpers/naming.d.ts +2 -1
- package/script/helpers/naming.js +4 -2
- package/script/helpers/normalizeWorkspacePath.d.ts +64 -0
- package/script/helpers/normalizeWorkspacePath.js +107 -0
- package/script/helpers/toResolvedArtifactPath.d.ts +8 -5
- package/script/helpers/toResolvedArtifactPath.js +11 -7
- package/script/helpers/toWorkspacePath.d.ts +3 -3
- package/script/helpers/toWorkspacePath.js +5 -5
- package/script/mod.d.ts +1 -0
- package/script/mod.js +1 -0
- package/script/oas/discriminator/Discriminator.d.ts +3 -0
- package/script/oas/discriminator/Discriminator.js +7 -0
- package/script/oas/document/Document.d.ts +7 -0
- package/script/oas/document/Document.js +8 -0
- package/script/oas/example/Example.d.ts +10 -1
- package/script/oas/example/Example.js +16 -0
- package/script/oas/mediaType/MediaType.d.ts +12 -0
- package/script/oas/mediaType/MediaType.js +24 -0
- package/script/oas/parameter/Parameter.d.ts +2 -1
- package/script/oas/parameter/Parameter.js +5 -2
- package/script/oas/parameter/parameter-types.d.ts +10 -2
- package/script/oas/parameter/parameter-types.js +3 -1
- package/script/oas/response/Response.d.ts +6 -1
- package/script/oas/response/Response.js +8 -0
- package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
- package/script/oas/securitySchemes/SecurityScheme.js +46 -1
- package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
- package/script/oas/server/Server.d.ts +8 -2
- package/script/oas/server/Server.js +10 -1
- package/script/oas/tag/Tag.d.ts +9 -0
- package/script/oas/tag/Tag.js +9 -0
- package/script/parse/toOasDialect.d.ts +8 -7
- package/script/parse/toOasDialect.js +4 -2
- package/script/parse/v3-0/methods.d.ts +11 -0
- package/script/parse/v3-0/methods.js +20 -0
- package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
- package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
- package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
- package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
- package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
- package/script/parse/v3-1/methods.d.ts +11 -0
- package/script/parse/v3-1/methods.js +20 -0
- package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
- package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
- package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
- package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
- package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
- package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
- package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
- package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
- package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
- package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
- package/script/parse/v3-2/_helpers/parseExample.js +41 -0
- package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
- package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
- package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
- package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
- package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
- package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
- package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
- package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
- package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
- package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
- package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
- package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
- package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
- package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
- package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
- package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
- package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
- package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
- package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
- package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
- package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
- package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
- package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
- package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
- package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
- package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
- package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
- package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
- package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
- package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
- package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
- package/script/parse/v3-2/_merge-all-of/types.js +38 -0
- package/script/parse/v3-2/array/toArray.d.ts +80 -0
- package/script/parse/v3-2/array/toArray.js +203 -0
- package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
- package/script/parse/v3-2/boolean/toBoolean.js +177 -0
- package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
- package/script/parse/v3-2/components/toComponentsV3.js +47 -0
- package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
- package/script/parse/v3-2/contact/toContactV3.js +22 -0
- package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
- package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
- package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
- package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
- package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
- package/script/parse/v3-2/example/toExamplesV3.js +149 -0
- package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
- package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
- package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
- package/script/parse/v3-2/header/toHeadersV3.js +51 -0
- package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
- package/script/parse/v3-2/info/toInfoV3.js +27 -0
- package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
- package/script/parse/v3-2/integer/toInteger.js +153 -0
- package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
- package/script/parse/v3-2/license/toLicenseV3.js +21 -0
- package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
- package/script/parse/v3-2/link/toLinksV3.js +44 -0
- package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
- package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
- package/script/parse/v3-2/methods.d.ts +17 -0
- package/script/parse/v3-2/methods.js +25 -0
- package/script/parse/v3-2/number/toNumber.d.ts +10 -0
- package/script/parse/v3-2/number/toNumber.js +152 -0
- package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
- package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
- package/script/parse/v3-2/object/toObject.d.ts +10 -0
- package/script/parse/v3-2/object/toObject.js +94 -0
- package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
- package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
- package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
- package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
- package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
- package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
- package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
- package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
- package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
- package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
- package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
- package/script/parse/v3-2/ref/toRefV31.js +14 -0
- package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
- package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +49 -0
- package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/script/parse/v3-2/response/toResponseV3.js +62 -0
- package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
- package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
- package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
- package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
- package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
- package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
- package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
- package/script/parse/v3-2/server/toServerV3.js +37 -0
- package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
- package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
- package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
- package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
- package/script/parse/v3-2/string/toString.d.ts +146 -0
- package/script/parse/v3-2/string/toString.js +249 -0
- package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
- package/script/parse/v3-2/tag/toTagsV3.js +83 -0
- package/script/parse/v3-2/union/toUnion.d.ts +12 -0
- package/script/parse/v3-2/union/toUnion.js +72 -0
- package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
- package/script/parse/v3-2/unknown/toUnknown.js +23 -0
- package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
- package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
- package/script/types/Method.d.ts +7 -4
- package/script/types/Method.js +17 -4
- package/script/types/Preview.d.ts +2 -1
- package/script/types/Settings.js +7 -9
- package/script/types/SkmtcDocument.d.ts +6 -6
- package/esm/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
- package/esm/deps/jsr.io/@std/path/1.1.6/extname.js +0 -31
- package/esm/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
- package/esm/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -32
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -83
- package/script/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
- package/script/deps/jsr.io/@std/path/1.1.6/extname.js +0 -34
- package/script/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
- package/script/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -35
- package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
- package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -86
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Convert a schema object into an array of schemas that can be merged iteratively into a new schema
|
|
2
|
+
export const decomposeUnion = ({ schema, groupType }) => {
|
|
3
|
+
if (!schema[groupType]) {
|
|
4
|
+
return {
|
|
5
|
+
beforeExcluded: {},
|
|
6
|
+
decomposed: [schema],
|
|
7
|
+
afterExcluded: {}
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
let location = 'before';
|
|
11
|
+
const output = {
|
|
12
|
+
before: [],
|
|
13
|
+
inside: [],
|
|
14
|
+
after: []
|
|
15
|
+
};
|
|
16
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
17
|
+
if (key === groupType) {
|
|
18
|
+
// do not decompose wrapper for unions (oneOf, anyOf)
|
|
19
|
+
output.inside = [{ [groupType]: value }];
|
|
20
|
+
location = 'after';
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
output[location].push([key, value]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const { retained: before, excluded: beforeExcluded } = exclude(output.before);
|
|
27
|
+
const { retained: after, excluded: afterExcluded } = exclude(output.after);
|
|
28
|
+
const decomposed = [
|
|
29
|
+
before.length > 0 ? Object.fromEntries(before) : undefined,
|
|
30
|
+
...output.inside,
|
|
31
|
+
after.length > 0 ? Object.fromEntries(after) : undefined
|
|
32
|
+
].filter(item => item !== undefined);
|
|
33
|
+
const result = {
|
|
34
|
+
beforeExcluded: Object.fromEntries(beforeExcluded),
|
|
35
|
+
decomposed,
|
|
36
|
+
afterExcluded: Object.fromEntries(afterExcluded)
|
|
37
|
+
};
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
// Union-level keys: kept on the union (via beforeExcluded/afterExcluded)
|
|
41
|
+
// rather than cross-product-merged into each member. Merging a metadata key
|
|
42
|
+
// *into* a member would resolve `$ref` members (to merge it in), losing their
|
|
43
|
+
// names — `toUnion` already captures these on the union itself.
|
|
44
|
+
// (`not` is deliberately NOT excluded here — it has no faithful TypeScript
|
|
45
|
+
// representation, so a schema using it is refused upstream in `toSchemaV3`
|
|
46
|
+
// rather than silently dropped from the union.)
|
|
47
|
+
const excludedProperties = [
|
|
48
|
+
'discriminator',
|
|
49
|
+
'default',
|
|
50
|
+
'description',
|
|
51
|
+
'title',
|
|
52
|
+
'nullable',
|
|
53
|
+
'example',
|
|
54
|
+
'examples',
|
|
55
|
+
'readOnly',
|
|
56
|
+
'writeOnly',
|
|
57
|
+
'deprecated'
|
|
58
|
+
];
|
|
59
|
+
const exclude = (entries) => {
|
|
60
|
+
return entries.reduce((acc, [key, value]) => {
|
|
61
|
+
if (excludedProperties.includes(key)) {
|
|
62
|
+
acc.excluded.push([key, value]);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
acc.retained.push([key, value]);
|
|
66
|
+
}
|
|
67
|
+
return acc;
|
|
68
|
+
}, { retained: [], excluded: [] });
|
|
69
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { mergeEnumValues } from './merge-enum-values.js';
|
|
2
|
+
import { mergeProperties } from './merge-properties.js';
|
|
3
|
+
import { mergeRequired } from './merge-required.js';
|
|
4
|
+
export const genericMerge = (first, second, getRef, typeCheck) => {
|
|
5
|
+
return {
|
|
6
|
+
...first,
|
|
7
|
+
...second,
|
|
8
|
+
...mergeProperties(first, second, getRef),
|
|
9
|
+
...mergeRequired(first, second),
|
|
10
|
+
...mergeEnumValues(first, second, typeCheck)
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isEqual: (first: unknown, second: unknown) => boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const isEqual = (first, second) => {
|
|
2
|
+
if (Array.isArray(first) && Array.isArray(second)) {
|
|
3
|
+
if (first.length !== second.length)
|
|
4
|
+
return false;
|
|
5
|
+
return first.every((value, index) => isEqual(value, second[index]));
|
|
6
|
+
}
|
|
7
|
+
if (typeof first === 'object' &&
|
|
8
|
+
typeof second === 'object' &&
|
|
9
|
+
first !== null &&
|
|
10
|
+
second !== null) {
|
|
11
|
+
const aKeys = Object.keys(first);
|
|
12
|
+
const bKeys = Object.keys(second);
|
|
13
|
+
if (aKeys.length !== bKeys.length)
|
|
14
|
+
return false;
|
|
15
|
+
return aKeys.every(key => bKeys.includes(key) &&
|
|
16
|
+
isEqual(first[key], second[key]));
|
|
17
|
+
}
|
|
18
|
+
return first === second;
|
|
19
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { mergeSchemasOrRefs } from './merge.js';
|
|
2
|
+
import { genericMerge } from './generic-merge.js';
|
|
3
|
+
import * as v from 'valibot';
|
|
4
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
5
|
+
export function mergeArrayConstraints(first, second, getRef) {
|
|
6
|
+
checkTypeConflicts(first, second);
|
|
7
|
+
if (!('items' in first) && !('items' in second)) {
|
|
8
|
+
throw new Error('Cannot merge array constraints: no items found');
|
|
9
|
+
}
|
|
10
|
+
const result = {
|
|
11
|
+
...genericMerge(first, second, getRef, v.array(v.any())),
|
|
12
|
+
type: 'array',
|
|
13
|
+
items: mergeItems(first, second, getRef)
|
|
14
|
+
};
|
|
15
|
+
// Merge minItems
|
|
16
|
+
if (first.minItems !== undefined || second.minItems !== undefined) {
|
|
17
|
+
const minA = first.minItems ?? 0;
|
|
18
|
+
const minB = second.minItems ?? 0;
|
|
19
|
+
result.minItems = Math.max(minA, minB);
|
|
20
|
+
}
|
|
21
|
+
// Merge maxItems
|
|
22
|
+
if (first.maxItems !== undefined || second.maxItems !== undefined) {
|
|
23
|
+
const maxA = first.maxItems ?? Infinity;
|
|
24
|
+
const maxB = second.maxItems ?? Infinity;
|
|
25
|
+
result.maxItems = Math.min(maxA, maxB);
|
|
26
|
+
}
|
|
27
|
+
// Merge uniqueItems
|
|
28
|
+
if (first.uniqueItems || second.uniqueItems) {
|
|
29
|
+
result.uniqueItems = true;
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
const mergeItems = (first, second, getRef) => {
|
|
34
|
+
if ('items' in first && 'items' in second && first.items && second.items) {
|
|
35
|
+
return mergeSchemasOrRefs(first.items, second.items, getRef);
|
|
36
|
+
}
|
|
37
|
+
if ('items' in first && first.items) {
|
|
38
|
+
return first.items;
|
|
39
|
+
}
|
|
40
|
+
if ('items' in second && second.items) {
|
|
41
|
+
return second.items;
|
|
42
|
+
}
|
|
43
|
+
throw new Error('Cannot merge array constraints: no items found');
|
|
44
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { genericMerge } from './generic-merge.js';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
4
|
+
export function mergeBooleanConstraints(first, second, getRef) {
|
|
5
|
+
checkTypeConflicts(first, second);
|
|
6
|
+
return genericMerge(first, second, getRef, v.boolean());
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { isEqual } from './is-equal.js';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
const containsEnum = (schema) => {
|
|
4
|
+
return Array.isArray(schema.enum);
|
|
5
|
+
};
|
|
6
|
+
export function mergeEnumValues(first, second, typeCheck) {
|
|
7
|
+
if (!containsEnum(first) && !containsEnum(second)) {
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
10
|
+
if (!containsEnum(first) && containsEnum(second)) {
|
|
11
|
+
return {
|
|
12
|
+
enum: second.enum
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (containsEnum(first) && !containsEnum(second)) {
|
|
16
|
+
return {
|
|
17
|
+
enum: first.enum
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Find intersection of enum values
|
|
21
|
+
const intersection = first
|
|
22
|
+
.enum.filter(value => second.enum.some(bValue => isEqual(value, bValue)))
|
|
23
|
+
.map(value => (typeCheck ? (v.is(typeCheck, value) ? value : undefined) : value));
|
|
24
|
+
// If intersection is empty, throw error
|
|
25
|
+
if (intersection.length === 0) {
|
|
26
|
+
throw new Error('Merged schema has empty enum array');
|
|
27
|
+
}
|
|
28
|
+
// Return merged schema with intersection of enum values
|
|
29
|
+
return {
|
|
30
|
+
enum: intersection
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { genericMerge } from './generic-merge.js';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
4
|
+
export function mergeIntegerConstraints(first, second, getRef) {
|
|
5
|
+
checkTypeConflicts(first, second);
|
|
6
|
+
// First merge enum values if present
|
|
7
|
+
const result = genericMerge(first, second, getRef, v.number());
|
|
8
|
+
// Then merge other constraints
|
|
9
|
+
result.type = 'integer';
|
|
10
|
+
// Merge minimum and exclusiveMinimum
|
|
11
|
+
if (first.minimum !== undefined || second.minimum !== undefined) {
|
|
12
|
+
const minA = first.minimum ?? -Infinity;
|
|
13
|
+
const minB = second.minimum ?? -Infinity;
|
|
14
|
+
result.minimum = Math.max(minA, minB);
|
|
15
|
+
// If either minimum is exclusive, the result is exclusive
|
|
16
|
+
if (first.exclusiveMinimum || second.exclusiveMinimum) {
|
|
17
|
+
result.exclusiveMinimum = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// Merge maximum and exclusiveMaximum
|
|
21
|
+
if (first.maximum !== undefined || second.maximum !== undefined) {
|
|
22
|
+
const maxA = first.maximum ?? Infinity;
|
|
23
|
+
const maxB = second.maximum ?? Infinity;
|
|
24
|
+
result.maximum = Math.min(maxA, maxB);
|
|
25
|
+
// If either maximum is exclusive, the result is exclusive
|
|
26
|
+
if (first.exclusiveMaximum || second.exclusiveMaximum) {
|
|
27
|
+
result.exclusiveMaximum = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Merge multipleOf
|
|
31
|
+
if (first.multipleOf !== undefined && second.multipleOf !== undefined) {
|
|
32
|
+
result.multipleOf = first.multipleOf * second.multipleOf;
|
|
33
|
+
}
|
|
34
|
+
else if (first.multipleOf !== undefined) {
|
|
35
|
+
result.multipleOf = first.multipleOf;
|
|
36
|
+
}
|
|
37
|
+
else if (second.multipleOf !== undefined) {
|
|
38
|
+
result.multipleOf = second.multipleOf;
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GetRefFn, SchemaOrReference, SchemaObject } from './types.js';
|
|
2
|
+
type MergeIntersectionArgs = {
|
|
3
|
+
schema: SchemaObject;
|
|
4
|
+
getRef: GetRefFn;
|
|
5
|
+
throwOnConflict?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const mergeIntersection: ({ schema, getRef }: MergeIntersectionArgs) => SchemaOrReference;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { decomposeIntersection } from './decompose-intersection.js';
|
|
2
|
+
import { mergeSchemasOrRefs } from './merge.js';
|
|
3
|
+
export const mergeIntersection = ({ schema, getRef }) => {
|
|
4
|
+
const decomposed = decomposeIntersection({ schema });
|
|
5
|
+
if (decomposed.length === 1) {
|
|
6
|
+
return decomposed[0];
|
|
7
|
+
}
|
|
8
|
+
const dereffed = decomposed.map(decomposed => {
|
|
9
|
+
return '$ref' in decomposed ? getRef(decomposed) : decomposed;
|
|
10
|
+
});
|
|
11
|
+
const result = dereffed.reduce((acc, decomposed) => {
|
|
12
|
+
const merged = mergeSchemasOrRefs(acc, decomposed, getRef);
|
|
13
|
+
return merged;
|
|
14
|
+
}, {});
|
|
15
|
+
return result;
|
|
16
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { genericMerge } from './generic-merge.js';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
4
|
+
export function mergeNumberConstraints(first, second, getRef) {
|
|
5
|
+
checkTypeConflicts(first, second);
|
|
6
|
+
// First merge enum values if present
|
|
7
|
+
const result = genericMerge(first, second, getRef, v.number());
|
|
8
|
+
// Then merge other constraints
|
|
9
|
+
result.type = 'number';
|
|
10
|
+
// Merge minimum and exclusiveMinimum
|
|
11
|
+
if (first.minimum !== undefined || second.minimum !== undefined) {
|
|
12
|
+
const minA = first.minimum ?? -Infinity;
|
|
13
|
+
const minB = second.minimum ?? -Infinity;
|
|
14
|
+
result.minimum = Math.max(minA, minB);
|
|
15
|
+
// If either minimum is exclusive, the result is exclusive
|
|
16
|
+
if (first.exclusiveMinimum || second.exclusiveMinimum) {
|
|
17
|
+
result.exclusiveMinimum = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// Merge maximum and exclusiveMaximum
|
|
21
|
+
if (first.maximum !== undefined || second.maximum !== undefined) {
|
|
22
|
+
const maxA = first.maximum ?? Infinity;
|
|
23
|
+
const maxB = second.maximum ?? Infinity;
|
|
24
|
+
result.maximum = Math.min(maxA, maxB);
|
|
25
|
+
// If either maximum is exclusive, the result is exclusive
|
|
26
|
+
if (first.exclusiveMaximum || second.exclusiveMaximum) {
|
|
27
|
+
result.exclusiveMaximum = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Merge multipleOf
|
|
31
|
+
if (first.multipleOf !== undefined && second.multipleOf !== undefined) {
|
|
32
|
+
result.multipleOf = first.multipleOf * second.multipleOf;
|
|
33
|
+
}
|
|
34
|
+
else if (first.multipleOf !== undefined) {
|
|
35
|
+
result.multipleOf = first.multipleOf;
|
|
36
|
+
}
|
|
37
|
+
else if (second.multipleOf !== undefined) {
|
|
38
|
+
result.multipleOf = second.multipleOf;
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
type SchemaObject = OpenAPIV3.SchemaObject;
|
|
3
|
+
type ReferenceObject = OpenAPIV3.ReferenceObject;
|
|
4
|
+
export declare const mergeObjectConstraints: (first: SchemaObject, second: SchemaObject, getRef: (ref: ReferenceObject) => SchemaObject) => SchemaObject;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { mergeSchemasOrRefs } from './merge.js';
|
|
2
|
+
import { genericMerge } from './generic-merge.js';
|
|
3
|
+
import * as v from 'valibot';
|
|
4
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
5
|
+
export const mergeObjectConstraints = (first, second, getRef) => {
|
|
6
|
+
// Check for type conflicts
|
|
7
|
+
checkTypeConflicts(first, second);
|
|
8
|
+
const result = genericMerge(first, second, getRef, v.record(v.string(), v.any()));
|
|
9
|
+
if (typeof second.additionalProperties === 'object' &&
|
|
10
|
+
typeof first.additionalProperties === 'object') {
|
|
11
|
+
// If both have additionalProperties as schemas, merge them
|
|
12
|
+
result.additionalProperties = mergeSchemasOrRefs(first.additionalProperties, second.additionalProperties, getRef);
|
|
13
|
+
}
|
|
14
|
+
else if (second.additionalProperties !== undefined) {
|
|
15
|
+
result.additionalProperties = second.additionalProperties;
|
|
16
|
+
}
|
|
17
|
+
else if (first.additionalProperties !== undefined) {
|
|
18
|
+
result.additionalProperties = first.additionalProperties;
|
|
19
|
+
}
|
|
20
|
+
// Merge minProperties and maxProperties
|
|
21
|
+
if (second.minProperties !== undefined || first.minProperties !== undefined) {
|
|
22
|
+
result.minProperties = Math.max(second.minProperties ?? 0, first.minProperties ?? 0);
|
|
23
|
+
}
|
|
24
|
+
if (second.maxProperties !== undefined || first.maxProperties !== undefined) {
|
|
25
|
+
result.maxProperties = Math.min(second.maxProperties ?? Infinity, first.maxProperties ?? Infinity);
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { mergeSchemasOrRefs } from './merge.js';
|
|
2
|
+
export const mergeProperties = (first, second, getRef) => {
|
|
3
|
+
if (containsProperties(first, second)) {
|
|
4
|
+
const properties = { ...first.properties };
|
|
5
|
+
if (!properties) {
|
|
6
|
+
return {
|
|
7
|
+
properties: second.properties
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
for (const key in second.properties) {
|
|
11
|
+
if (key in properties) {
|
|
12
|
+
properties[key] = mergeSchemasOrRefs(properties[key], second.properties[key], getRef);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
properties[key] = second.properties[key];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
properties
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const containsProperties = (first, second) => {
|
|
24
|
+
return Boolean(first.properties || second.properties);
|
|
25
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const containsRequired = (first, second) => {
|
|
2
|
+
return Boolean(first.required || second.required);
|
|
3
|
+
};
|
|
4
|
+
export const mergeRequired = (first, second) => {
|
|
5
|
+
if (containsRequired(first, second)) {
|
|
6
|
+
return {
|
|
7
|
+
required: [...(first.required ?? []), ...(second.required ?? [])]
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { genericMerge } from './generic-merge.js';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
4
|
+
import { checkAtLeastOneTypeMatch } from './check-at-least-one-type-match.js';
|
|
5
|
+
export function mergeStringConstraints(first, second, getRef) {
|
|
6
|
+
checkTypeConflicts(first, second);
|
|
7
|
+
if (!checkAtLeastOneTypeMatch(first, second, 'string')) {
|
|
8
|
+
return genericMerge(first, second, getRef);
|
|
9
|
+
}
|
|
10
|
+
// First merge enum values if present
|
|
11
|
+
const result = genericMerge(first, second, getRef, v.string());
|
|
12
|
+
// Then merge other constraints
|
|
13
|
+
result.type = 'string';
|
|
14
|
+
// Merge minLength
|
|
15
|
+
if (first.minLength !== undefined || second.minLength !== undefined) {
|
|
16
|
+
const minA = first.minLength ?? 0;
|
|
17
|
+
const minB = second.minLength ?? 0;
|
|
18
|
+
result.minLength = Math.max(minA, minB);
|
|
19
|
+
}
|
|
20
|
+
// Merge maxLength
|
|
21
|
+
if (first.maxLength !== undefined || second.maxLength !== undefined) {
|
|
22
|
+
const maxA = first.maxLength ?? Infinity;
|
|
23
|
+
const maxB = second.maxLength ?? Infinity;
|
|
24
|
+
result.maxLength = Math.min(maxA, maxB);
|
|
25
|
+
}
|
|
26
|
+
// Merge pattern
|
|
27
|
+
if (first.pattern !== undefined && second.pattern !== undefined) {
|
|
28
|
+
// If both have patterns, they must match
|
|
29
|
+
if (first.pattern !== second.pattern) {
|
|
30
|
+
throw new Error(`Cannot merge schemas: conflicting patterns '${first.pattern}' and '${second.pattern}'`);
|
|
31
|
+
}
|
|
32
|
+
result.pattern = first.pattern;
|
|
33
|
+
}
|
|
34
|
+
else if (first.pattern !== undefined) {
|
|
35
|
+
result.pattern = first.pattern;
|
|
36
|
+
}
|
|
37
|
+
else if (second.pattern !== undefined) {
|
|
38
|
+
result.pattern = second.pattern;
|
|
39
|
+
}
|
|
40
|
+
// Merge format
|
|
41
|
+
if (first.format !== undefined && second.format !== undefined) {
|
|
42
|
+
// If both have formats, they must match
|
|
43
|
+
if (first.format !== second.format) {
|
|
44
|
+
throw new Error('Incompatible string formats');
|
|
45
|
+
}
|
|
46
|
+
result.format = first.format;
|
|
47
|
+
}
|
|
48
|
+
else if (first.format !== undefined) {
|
|
49
|
+
result.format = first.format;
|
|
50
|
+
}
|
|
51
|
+
else if (second.format !== undefined) {
|
|
52
|
+
result.format = second.format;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GetRefFn, SchemaOrReference, SchemaObject } from './types.js';
|
|
2
|
+
type MergeUnionArgs = {
|
|
3
|
+
schema: SchemaObject;
|
|
4
|
+
getRef: GetRefFn;
|
|
5
|
+
groupType: 'oneOf' | 'anyOf';
|
|
6
|
+
};
|
|
7
|
+
export declare const mergeUnion: ({ schema, getRef, groupType }: MergeUnionArgs) => SchemaOrReference;
|
|
8
|
+
type MergeCrossProductArgs = {
|
|
9
|
+
first: SchemaObject;
|
|
10
|
+
second: SchemaObject;
|
|
11
|
+
getRef: GetRefFn;
|
|
12
|
+
groupType: 'oneOf' | 'anyOf';
|
|
13
|
+
};
|
|
14
|
+
export declare const mergeCrossProduct: ({ first, second, getRef, groupType }: MergeCrossProductArgs) => SchemaObject;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { decomposeUnion } from './decompose-union.js';
|
|
2
|
+
import { mergeSchemasOrRefs } from './merge.js';
|
|
3
|
+
import { crossProduct } from './cross-product.js';
|
|
4
|
+
import { isRef } from '../../../helpers/refFns.js';
|
|
5
|
+
export const mergeUnion = ({ schema, getRef, groupType }) => {
|
|
6
|
+
const { beforeExcluded, decomposed, afterExcluded } = decomposeUnion({ schema, groupType });
|
|
7
|
+
// if (decomposed.length === 1) {
|
|
8
|
+
// console.log('DECOMPOSED', JSON.stringify(decomposed[0], null, 2))
|
|
9
|
+
// const result = {
|
|
10
|
+
// ...beforeExcluded,
|
|
11
|
+
// ...decomposed[0],
|
|
12
|
+
// ...afterExcluded
|
|
13
|
+
// }
|
|
14
|
+
// console.log('MERGED UNION - SHORT', JSON.stringify(result, null, 2))
|
|
15
|
+
// return result
|
|
16
|
+
// }
|
|
17
|
+
const dereffed = decomposed.map(decomposed => {
|
|
18
|
+
return '$ref' in decomposed ? getRef(decomposed) : decomposed;
|
|
19
|
+
});
|
|
20
|
+
const result = dereffed.reduce((acc, decomposed) => {
|
|
21
|
+
const merged = mergeCrossProduct({ first: acc, second: decomposed, getRef, groupType });
|
|
22
|
+
return merged;
|
|
23
|
+
}, {});
|
|
24
|
+
const output = {
|
|
25
|
+
...beforeExcluded,
|
|
26
|
+
...result,
|
|
27
|
+
...afterExcluded
|
|
28
|
+
};
|
|
29
|
+
return output;
|
|
30
|
+
};
|
|
31
|
+
export const mergeCrossProduct = ({ first, second, getRef, groupType }) => {
|
|
32
|
+
const firstGroup = Array.isArray(first[groupType]) ? first[groupType] : [first];
|
|
33
|
+
const secondGroup = Array.isArray(second[groupType]) ? second[groupType] : [second];
|
|
34
|
+
const mergedGroup = crossProduct(firstGroup, secondGroup)
|
|
35
|
+
.map(([firstItem, secondItem]) => {
|
|
36
|
+
try {
|
|
37
|
+
const result = mergeSchemasOrRefs(firstItem, secondItem, getRef);
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
catch (_error) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
.filter(item => item !== undefined);
|
|
45
|
+
return {
|
|
46
|
+
[groupType]: mergedGroup.flatMap(item => {
|
|
47
|
+
if (!isRef(item) && Array.isArray(item[groupType])) {
|
|
48
|
+
return item[groupType];
|
|
49
|
+
}
|
|
50
|
+
return [item];
|
|
51
|
+
})
|
|
52
|
+
};
|
|
53
|
+
};
|