@skmtc/core 0.29.0 → 0.31.0
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/ParseContext.js +9 -1
- package/esm/context/generateTypes.d.ts +14 -2
- package/esm/context/generateTypes.js +5 -1
- package/esm/dsl/GeneratorKeys.d.ts +2 -2
- package/esm/dsl/GeneratorKeys.js +6 -3
- package/esm/helpers/naming.d.ts +2 -1
- package/esm/helpers/naming.js +4 -2
- 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/header/Header.d.ts +4 -2
- package/esm/oas/header/Header.js +12 -5
- package/esm/oas/mediaType/MediaType.d.ts +12 -0
- package/esm/oas/mediaType/MediaType.js +24 -0
- package/esm/oas/mediaType/jsonMediaType.d.ts +50 -0
- package/esm/oas/mediaType/jsonMediaType.js +64 -0
- package/esm/oas/mediaType/toContentSchema.d.ts +8 -0
- package/esm/oas/mediaType/toContentSchema.js +6 -0
- package/esm/oas/operation/Operation.d.ts +10 -2
- package/esm/oas/operation/Operation.js +20 -7
- package/esm/oas/parameter/Parameter.d.ts +3 -2
- package/esm/oas/parameter/Parameter.js +11 -5
- package/esm/oas/parameter/parameter-types.d.ts +10 -2
- package/esm/oas/parameter/parameter-types.js +3 -1
- package/esm/oas/requestBody/RequestBody.d.ts +11 -0
- package/esm/oas/requestBody/RequestBody.js +16 -2
- package/esm/oas/response/Response.d.ts +17 -1
- package/esm/oas/response/Response.js +24 -2
- 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/oas/webhook/Webhook.d.ts +4 -4
- package/esm/oas/webhook/Webhook.js +6 -6
- package/esm/parse/logBodyMediaTypes.d.ts +27 -0
- package/esm/parse/logBodyMediaTypes.js +50 -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/requestBody/toRequestBodiesV3.js +4 -1
- package/esm/parse/v3-0/response/toResponseV3.js +4 -1
- 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/requestBody/toRequestBodiesV3.js +4 -1
- package/esm/parse/v3-1/response/toResponseV3.js +4 -1
- 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 +47 -0
- package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/esm/parse/v3-2/response/toResponseV3.js +59 -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/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/ParseContext.js +9 -1
- package/script/context/generateTypes.d.ts +14 -2
- package/script/context/generateTypes.js +5 -1
- package/script/dsl/GeneratorKeys.d.ts +2 -2
- package/script/dsl/GeneratorKeys.js +6 -3
- package/script/helpers/naming.d.ts +2 -1
- package/script/helpers/naming.js +4 -2
- 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/header/Header.d.ts +4 -2
- package/script/oas/header/Header.js +12 -5
- package/script/oas/mediaType/MediaType.d.ts +12 -0
- package/script/oas/mediaType/MediaType.js +24 -0
- package/script/oas/mediaType/jsonMediaType.d.ts +50 -0
- package/script/oas/mediaType/jsonMediaType.js +71 -0
- package/script/oas/mediaType/toContentSchema.d.ts +8 -0
- package/script/oas/mediaType/toContentSchema.js +10 -0
- package/script/oas/operation/Operation.d.ts +10 -2
- package/script/oas/operation/Operation.js +20 -7
- package/script/oas/parameter/Parameter.d.ts +3 -2
- package/script/oas/parameter/Parameter.js +11 -5
- package/script/oas/parameter/parameter-types.d.ts +10 -2
- package/script/oas/parameter/parameter-types.js +3 -1
- package/script/oas/requestBody/RequestBody.d.ts +11 -0
- package/script/oas/requestBody/RequestBody.js +16 -2
- package/script/oas/response/Response.d.ts +17 -1
- package/script/oas/response/Response.js +24 -2
- 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/oas/webhook/Webhook.d.ts +4 -4
- package/script/oas/webhook/Webhook.js +6 -6
- package/script/parse/logBodyMediaTypes.d.ts +27 -0
- package/script/parse/logBodyMediaTypes.js +54 -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/requestBody/toRequestBodiesV3.js +4 -1
- package/script/parse/v3-0/response/toResponseV3.js +4 -1
- 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/requestBody/toRequestBodiesV3.js +4 -1
- package/script/parse/v3-1/response/toResponseV3.js +4 -1
- 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 +52 -0
- package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/script/parse/v3-2/response/toResponseV3.js +65 -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/SkmtcDocument.d.ts +6 -6
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses and validates the nullable property from OpenAPI schema objects.
|
|
3
|
+
*
|
|
4
|
+
* This function extracts and validates the `nullable` property from OpenAPI
|
|
5
|
+
* schema objects, ensuring it's a valid boolean value. Invalid nullable values
|
|
6
|
+
* are removed and logged as warnings through the parse context.
|
|
7
|
+
*
|
|
8
|
+
* The nullable property determines whether a schema value can be null in addition
|
|
9
|
+
* to its primary type, which affects type generation and validation logic.
|
|
10
|
+
*
|
|
11
|
+
* @template Value - The OpenAPI schema object type
|
|
12
|
+
*
|
|
13
|
+
* @param args - Parsing configuration
|
|
14
|
+
* @returns Parsed nullable data with the validated flag and cleaned schema
|
|
15
|
+
*
|
|
16
|
+
* @example Valid nullable property
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { parseNullable } from '@skmtc/core/oas/_helpers';
|
|
19
|
+
*
|
|
20
|
+
* const result = parseNullable({
|
|
21
|
+
* value: {
|
|
22
|
+
* type: 'string',
|
|
23
|
+
* nullable: true,
|
|
24
|
+
* description: 'An optional string that can be null'
|
|
25
|
+
* },
|
|
26
|
+
* context: parseContext
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* console.log(result.nullable); // true
|
|
30
|
+
* console.log(result.value); // { type: 'string', description: 'An optional string that can be null' }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example Explicitly non-nullable
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const result = parseNullable({
|
|
36
|
+
* value: {
|
|
37
|
+
* type: 'number',
|
|
38
|
+
* nullable: false,
|
|
39
|
+
* minimum: 0
|
|
40
|
+
* },
|
|
41
|
+
* context: parseContext
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* console.log(result.nullable); // false
|
|
45
|
+
* console.log(result.value); // { type: 'number', minimum: 0 }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @example Missing nullable property (undefined)
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const result = parseNullable({
|
|
51
|
+
* value: {
|
|
52
|
+
* type: 'string',
|
|
53
|
+
* format: 'email'
|
|
54
|
+
* },
|
|
55
|
+
* context: parseContext
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* console.log(result.nullable); // undefined (property not present)
|
|
59
|
+
* console.log(result.value); // { type: 'string', format: 'email' }
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @example Invalid nullable value
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const result = parseNullable({
|
|
65
|
+
* value: {
|
|
66
|
+
* type: 'boolean',
|
|
67
|
+
* nullable: 'yes', // Invalid - should be boolean
|
|
68
|
+
* description: 'A flag'
|
|
69
|
+
* } as any,
|
|
70
|
+
* context: parseContext
|
|
71
|
+
* });
|
|
72
|
+
*
|
|
73
|
+
* console.log(result.nullable); // undefined (invalid value removed)
|
|
74
|
+
* console.log(result.value); // { type: 'boolean', description: 'A flag' }
|
|
75
|
+
* // Context will log a warning about the invalid nullable value
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* @example Usage in type generation
|
|
79
|
+
* ```typescript
|
|
80
|
+
* function generateTypeScript(schema: OpenAPIV3.SchemaObject) {
|
|
81
|
+
* const { nullable, value } = parseNullable({ value: schema, context });
|
|
82
|
+
*
|
|
83
|
+
* const baseType = generateBaseType(value);
|
|
84
|
+
* const nullableType = nullable ? ` | null` : '';
|
|
85
|
+
*
|
|
86
|
+
* return `${baseType}${nullableType}`;
|
|
87
|
+
* }
|
|
88
|
+
*
|
|
89
|
+
* // Examples:
|
|
90
|
+
* // nullable: true -> 'string | null'
|
|
91
|
+
* // nullable: false -> 'string'
|
|
92
|
+
* // nullable: undefined -> 'string' (default behavior)
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example Complex schema with nullable
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const result = parseNullable({
|
|
98
|
+
* value: {
|
|
99
|
+
* type: 'object',
|
|
100
|
+
* properties: {
|
|
101
|
+
* name: { type: 'string' },
|
|
102
|
+
* age: { type: 'number' }
|
|
103
|
+
* },
|
|
104
|
+
* required: ['name'],
|
|
105
|
+
* nullable: true // The entire object can be null
|
|
106
|
+
* },
|
|
107
|
+
* context: parseContext
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* console.log(result.nullable); // true
|
|
111
|
+
* // Generated type might be: { name: string; age?: number } | null
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export const parseNullable = ({ value, stackTrail, context }) => {
|
|
115
|
+
if (value.nullable === undefined) {
|
|
116
|
+
return {
|
|
117
|
+
nullable: undefined,
|
|
118
|
+
value: value
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const { nullable, ...rest } = value;
|
|
122
|
+
if (typeof nullable === 'boolean') {
|
|
123
|
+
return {
|
|
124
|
+
nullable: nullable,
|
|
125
|
+
value: rest
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
context.logIssue({
|
|
129
|
+
key: 'nullable',
|
|
130
|
+
stackTrail,
|
|
131
|
+
parent: value,
|
|
132
|
+
level: 'warning',
|
|
133
|
+
message: `Invalid nullable: ${value}`,
|
|
134
|
+
type: 'INVALID_NULLABLE'
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
nullable: undefined,
|
|
138
|
+
value: rest
|
|
139
|
+
};
|
|
140
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const checkArrayItemTypeConflicts = (a, b) => {
|
|
2
|
+
if (a.type === 'array' && b.type === 'array' && 'items' in a && 'items' in b) {
|
|
3
|
+
const aItems = a.items;
|
|
4
|
+
const bItems = b.items;
|
|
5
|
+
if (aItems.type && bItems.type && aItems.type !== bItems.type) {
|
|
6
|
+
throw new Error(`Cannot merge schemas: array items have conflicting types '${aItems.type}' and '${bItems.type}'`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isEqual } from './is-equal.js';
|
|
2
|
+
export const checkEnumConflicts = (first, second) => {
|
|
3
|
+
if (first.enum && second.enum) {
|
|
4
|
+
const intersection = first.enum.filter(value => {
|
|
5
|
+
return second.enum.some(bValue => isEqual(value, bValue));
|
|
6
|
+
});
|
|
7
|
+
if (intersection.length === 0) {
|
|
8
|
+
throw new Error(`Cannot merge schemas: enum values have no intersection. First: ${first.enum}, Second: ${second.enum}`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const checkNumberConstraintsConflicts = (a, b) => {
|
|
2
|
+
if (a.type === 'number' && b.type === 'number') {
|
|
3
|
+
const aMin = a.minimum ?? -Infinity;
|
|
4
|
+
const aMax = a.maximum ?? Infinity;
|
|
5
|
+
const bMin = b.minimum ?? -Infinity;
|
|
6
|
+
const bMax = b.maximum ?? Infinity;
|
|
7
|
+
if (aMin > bMax || bMin > aMax) {
|
|
8
|
+
throw new Error(`Cannot merge schemas: incompatible number ranges [${aMin},${aMax}] and [${bMin},${bMax}]`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const checkTypeConflicts = (first, second) => {
|
|
2
|
+
if (first.type && second.type && first.type !== second.type) {
|
|
3
|
+
throw new Error(`Cannot merge schemas: conflicting types '${first.type}' and '${second.type}', ${JSON.stringify(first)} and ${JSON.stringify(second)}`);
|
|
4
|
+
}
|
|
5
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
type DecomposeIntersectionArgs = {
|
|
3
|
+
schema: OpenAPIV3.SchemaObject;
|
|
4
|
+
};
|
|
5
|
+
export declare const decomposeIntersection: ({ schema }: DecomposeIntersectionArgs) => (OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject)[];
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Convert a schema object into an array of schemas that can be merged iteratively into a new schema
|
|
2
|
+
export const decomposeIntersection = ({ schema }) => {
|
|
3
|
+
if (!schema.allOf) {
|
|
4
|
+
return [schema];
|
|
5
|
+
}
|
|
6
|
+
let location = 'before';
|
|
7
|
+
const output = {
|
|
8
|
+
before: [],
|
|
9
|
+
inside: [],
|
|
10
|
+
after: []
|
|
11
|
+
};
|
|
12
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
13
|
+
if (key === 'allOf') {
|
|
14
|
+
// do not decompose wrapper for unions (oneOf, anyOf)
|
|
15
|
+
output.inside = value;
|
|
16
|
+
location = 'after';
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
output[location].push([key, value]);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [
|
|
23
|
+
output.before.length > 0 ? Object.fromEntries(output.before) : undefined,
|
|
24
|
+
...output.inside,
|
|
25
|
+
output.after.length > 0 ? Object.fromEntries(output.after) : undefined
|
|
26
|
+
].filter(item => item !== undefined);
|
|
27
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SchemaObject, ReferenceObject } from './types.js';
|
|
2
|
+
type DecomposeUnionArgs = {
|
|
3
|
+
schema: SchemaObject;
|
|
4
|
+
groupType: 'oneOf' | 'anyOf';
|
|
5
|
+
};
|
|
6
|
+
type DecomposeUnionReturn = {
|
|
7
|
+
beforeExcluded: SchemaObject;
|
|
8
|
+
decomposed: (SchemaObject | ReferenceObject)[];
|
|
9
|
+
afterExcluded: SchemaObject;
|
|
10
|
+
};
|
|
11
|
+
export declare const decomposeUnion: ({ schema, groupType }: DecomposeUnionArgs) => DecomposeUnionReturn;
|
|
12
|
+
export {};
|
|
@@ -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 {};
|