@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,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
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { isRef } from '../../../helpers/refFns.js';
|
|
2
|
+
import { checkTypeConflicts } from './check-type-conflicts.js';
|
|
3
|
+
import { checkReadOnlyWriteOnlyConflicts } from './check-read-only-write-only-conflicts.js';
|
|
4
|
+
import { checkFormatConflicts } from './check-format-conflicts.js';
|
|
5
|
+
import { checkEnumConflicts } from './check-enum-conflicts.js';
|
|
6
|
+
import { checkNumberConstraintsConflicts } from './check-number-constraints-conflicts.js';
|
|
7
|
+
import { checkArrayItemTypeConflicts } from './check-array-item-type-conflicts.js';
|
|
8
|
+
import { mergeObjectConstraints } from './merge-object-constraints.js';
|
|
9
|
+
import { mergeArrayConstraints } from './merge-array-constraints.js';
|
|
10
|
+
import { mergeStringConstraints } from './merge-string-constraints.js';
|
|
11
|
+
import { mergeNumberConstraints } from './merge-number-constraints.js';
|
|
12
|
+
import { mergeIntegerConstraints } from './merge-integer-constraints.js';
|
|
13
|
+
import { mergeBooleanConstraints } from './merge-boolean-constraints.js';
|
|
14
|
+
import { genericMerge } from './generic-merge.js';
|
|
15
|
+
import { checkAtLeastOneTypeMatch } from './check-at-least-one-type-match.js';
|
|
16
|
+
import { mergeIntersection } from './merge-intersection.js';
|
|
17
|
+
import { mergeCrossProduct } from './merge-union.js';
|
|
18
|
+
import { isEmpty } from '../../../helpers/isEmpty.js';
|
|
19
|
+
import { isNullOnly, mergeNullOnly } from './nullable-merge.js';
|
|
20
|
+
export const mergeSchemasOrRefs = (first, second, getRef) => {
|
|
21
|
+
if (containsRef(first, second)) {
|
|
22
|
+
return mergeWithRef(first, second, getRef);
|
|
23
|
+
}
|
|
24
|
+
if (isRef(first)) {
|
|
25
|
+
throw new Error('Ref in first');
|
|
26
|
+
}
|
|
27
|
+
if (isRef(second)) {
|
|
28
|
+
throw new Error('Ref in second');
|
|
29
|
+
}
|
|
30
|
+
if (containsAllOf(first) || containsAllOf(second)) {
|
|
31
|
+
const mergedFirst = containsAllOf(first) ? mergeIntersection({ schema: first, getRef }) : first;
|
|
32
|
+
const mergedSecond = containsAllOf(second)
|
|
33
|
+
? mergeIntersection({ schema: second, getRef })
|
|
34
|
+
: second;
|
|
35
|
+
return mergeSchemasOrRefs(mergedFirst, mergedSecond, getRef);
|
|
36
|
+
}
|
|
37
|
+
if (containsOneOf(first, second)) {
|
|
38
|
+
return mergeCrossProduct({ first, second, getRef, groupType: 'oneOf' });
|
|
39
|
+
}
|
|
40
|
+
if (containsAnyOf(first, second)) {
|
|
41
|
+
return mergeCrossProduct({ first, second, getRef, groupType: 'anyOf' });
|
|
42
|
+
}
|
|
43
|
+
if (isNullOnly(first)) {
|
|
44
|
+
return mergeNullOnly(second);
|
|
45
|
+
}
|
|
46
|
+
if (isNullOnly(second)) {
|
|
47
|
+
return mergeNullOnly(first);
|
|
48
|
+
}
|
|
49
|
+
return mergeSchemas(first, second, getRef);
|
|
50
|
+
};
|
|
51
|
+
const containsAllOf = (schema) => {
|
|
52
|
+
if (schema.allOf) {
|
|
53
|
+
if (schema.allOf?.length) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
throw new Error('Empty allOf');
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
};
|
|
60
|
+
const containsAnyOf = (first, second) => {
|
|
61
|
+
if (first.anyOf) {
|
|
62
|
+
if (first.anyOf?.length) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
throw new Error('Empty anyOf');
|
|
66
|
+
}
|
|
67
|
+
if (second.anyOf) {
|
|
68
|
+
if (second.anyOf?.length) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
throw new Error('Empty anyOf');
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
};
|
|
75
|
+
const containsOneOf = (first, second) => {
|
|
76
|
+
if (first.oneOf) {
|
|
77
|
+
if (first.oneOf?.length) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
throw new Error('Empty oneOf');
|
|
81
|
+
}
|
|
82
|
+
if (second.oneOf) {
|
|
83
|
+
if (second.oneOf?.length) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Empty oneOf');
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
};
|
|
90
|
+
const containsRef = (first, second) => {
|
|
91
|
+
return isRef(first) || isRef(second);
|
|
92
|
+
};
|
|
93
|
+
const mergeSchemas = (first, second, getRef) => {
|
|
94
|
+
try {
|
|
95
|
+
checkTypeConflicts(first, second);
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
throw e;
|
|
99
|
+
}
|
|
100
|
+
checkReadOnlyWriteOnlyConflicts(first, second);
|
|
101
|
+
checkFormatConflicts(first, second);
|
|
102
|
+
checkEnumConflicts(first, second);
|
|
103
|
+
checkNumberConstraintsConflicts(first, second);
|
|
104
|
+
checkArrayItemTypeConflicts(first, second);
|
|
105
|
+
if (first.not || second.not) {
|
|
106
|
+
throw new Error('Merging schemas with "not" keyword is not supported');
|
|
107
|
+
}
|
|
108
|
+
return typedMerge(first, second, getRef);
|
|
109
|
+
};
|
|
110
|
+
const typedMerge = (first, second, getRef) => {
|
|
111
|
+
if (!first.type && !second.type) {
|
|
112
|
+
return genericMerge(first, second, getRef);
|
|
113
|
+
}
|
|
114
|
+
if (checkAtLeastOneTypeMatch(first, second, 'object')) {
|
|
115
|
+
return mergeObjectConstraints(first, second, getRef);
|
|
116
|
+
}
|
|
117
|
+
if (checkAtLeastOneTypeMatch(first, second, 'array')) {
|
|
118
|
+
return mergeArrayConstraints(first, second, getRef);
|
|
119
|
+
}
|
|
120
|
+
if (checkAtLeastOneTypeMatch(first, second, 'string')) {
|
|
121
|
+
return mergeStringConstraints(first, second, getRef);
|
|
122
|
+
}
|
|
123
|
+
if (checkAtLeastOneTypeMatch(first, second, 'number')) {
|
|
124
|
+
return mergeNumberConstraints(first, second, getRef);
|
|
125
|
+
}
|
|
126
|
+
if (checkAtLeastOneTypeMatch(first, second, 'integer')) {
|
|
127
|
+
return mergeIntegerConstraints(first, second, getRef);
|
|
128
|
+
}
|
|
129
|
+
if (checkAtLeastOneTypeMatch(first, second, 'boolean')) {
|
|
130
|
+
return mergeBooleanConstraints(first, second, getRef);
|
|
131
|
+
}
|
|
132
|
+
throw new Error(`Cannot merge schemas with type "${first.type}" with type "${second.type}"`);
|
|
133
|
+
};
|
|
134
|
+
const mergeWithRef = (first, second, getRef) => {
|
|
135
|
+
if (isRef(first) && isRef(second)) {
|
|
136
|
+
if (first.$ref === second.$ref) {
|
|
137
|
+
return {
|
|
138
|
+
...first,
|
|
139
|
+
...second
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
return mergeSchemas(getRef(first), getRef(second), getRef);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (isRef(first) && !isRef(second)) {
|
|
147
|
+
const merged = isEmpty(second) ? first : mergeSchemas(getRef(first), second, getRef);
|
|
148
|
+
return merged;
|
|
149
|
+
}
|
|
150
|
+
if (!isRef(first) && isRef(second)) {
|
|
151
|
+
const merged = isEmpty(first) ? second : mergeSchemas(first, getRef(second), getRef);
|
|
152
|
+
return merged;
|
|
153
|
+
}
|
|
154
|
+
throw new Error('Invalid input');
|
|
155
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isEmpty } from '../../../helpers/isEmpty.js';
|
|
2
|
+
export const mergeNullOnly = (schema) => {
|
|
3
|
+
if (schema.enum && !schema.enum.includes(null)) {
|
|
4
|
+
schema.enum.push(null);
|
|
5
|
+
}
|
|
6
|
+
schema.nullable = true;
|
|
7
|
+
return schema;
|
|
8
|
+
};
|
|
9
|
+
export const isNullOnly = (schema) => {
|
|
10
|
+
const { type: _type, nullable, enum: enumValues, ...rest } = schema;
|
|
11
|
+
return (Boolean(nullable) && enumValues?.length === 1 && enumValues[0] === null && isEmpty(rest ?? {}));
|
|
12
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
export type GetRefFn = (ref: OpenAPIV3.ReferenceObject) => OpenAPIV3.SchemaObject;
|
|
4
|
+
export type OneOfObject = {
|
|
5
|
+
oneOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
|
|
6
|
+
} & OpenAPIV3.SchemaObject;
|
|
7
|
+
export type AnyOfObject = {
|
|
8
|
+
anyOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
|
|
9
|
+
} & OpenAPIV3.SchemaObject;
|
|
10
|
+
export type SchemaObject = OpenAPIV3.SchemaObject;
|
|
11
|
+
export type ReferenceObject = OpenAPIV3.ReferenceObject;
|
|
12
|
+
export type SchemaOrReference = SchemaObject | ReferenceObject;
|
|
13
|
+
export type ArraySchemaObject = OpenAPIV3.ArraySchemaObject;
|
|
14
|
+
export declare const IntegerSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, "The number must be an integer.">]>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import { OasArray } from '../../../oas/array/Array.js';
|
|
3
|
+
import type { ParseContextType } from '../../../context/parseTypes.js';
|
|
4
|
+
import type { StackTrail } from '../../../context/StackTrail.js';
|
|
5
|
+
export type ToArrayArgs = {
|
|
6
|
+
value: OpenAPIV3.ArraySchemaObject;
|
|
7
|
+
stackTrail: StackTrail;
|
|
8
|
+
context: ParseContextType;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
|
|
12
|
+
*
|
|
13
|
+
* This function processes OpenAPI array schemas by extracting and parsing nullable values,
|
|
14
|
+
* examples, enumerations, and default values. It handles the complete transformation from
|
|
15
|
+
* raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
|
|
16
|
+
*
|
|
17
|
+
* The transformation follows a pipeline approach:
|
|
18
|
+
* 1. Parse nullable flag and extract base value
|
|
19
|
+
* 2. Parse example values with nullable support
|
|
20
|
+
* 3. Parse enumeration constraints
|
|
21
|
+
* 4. Parse default values
|
|
22
|
+
* 5. Create final OasArray instance
|
|
23
|
+
*
|
|
24
|
+
* @param args - Transformation arguments
|
|
25
|
+
* @param args.value - The OpenAPI v3 array schema object to transform
|
|
26
|
+
* @param args.context - Parse context providing utilities and tracing
|
|
27
|
+
* @returns Transformed OAS array object with parsed properties
|
|
28
|
+
*
|
|
29
|
+
* @example Basic array transformation
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { toArray } from '@skmtc/core';
|
|
32
|
+
*
|
|
33
|
+
* const openApiArray = {
|
|
34
|
+
* type: 'array',
|
|
35
|
+
* items: { type: 'string' },
|
|
36
|
+
* maxItems: 10,
|
|
37
|
+
* uniqueItems: true
|
|
38
|
+
* };
|
|
39
|
+
*
|
|
40
|
+
* const oasArray = toArray({
|
|
41
|
+
* value: openApiArray,
|
|
42
|
+
* context: parseContext
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* console.log(oasArray.maxItems); // 10
|
|
46
|
+
* console.log(oasArray.uniqueItems); // true
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example Array with nullable and examples
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const complexArray = {
|
|
52
|
+
* type: 'array',
|
|
53
|
+
* items: { type: 'number' },
|
|
54
|
+
* nullable: true,
|
|
55
|
+
* example: [1, 2, 3],
|
|
56
|
+
* default: [],
|
|
57
|
+
* enum: [[1, 2], [3, 4], null]
|
|
58
|
+
* };
|
|
59
|
+
*
|
|
60
|
+
* const oasArray = toArray({
|
|
61
|
+
* value: complexArray,
|
|
62
|
+
* context: parseContext
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* console.log(oasArray.nullable); // true
|
|
66
|
+
* console.log(oasArray.example); // [1, 2, 3]
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare const toArray: ({ value, context, stackTrail }: ToArrayArgs) => OasArray;
|
|
70
|
+
type ToParsedArrayArgs<Nullable extends boolean | undefined> = {
|
|
71
|
+
value: Omit<OpenAPIV3.ArraySchemaObject, 'nullable' | 'example' | 'enums' | 'default'>;
|
|
72
|
+
stackTrail: StackTrail;
|
|
73
|
+
context: ParseContextType;
|
|
74
|
+
nullable: Nullable;
|
|
75
|
+
example: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
|
|
76
|
+
enums: Nullable extends true ? (unknown[] | null)[] | undefined : unknown[] | undefined;
|
|
77
|
+
defaultValue: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
|
|
78
|
+
};
|
|
79
|
+
export declare const toParsedArray: <Nullable extends boolean | undefined>({ context, stackTrail, nullable, example, enums, defaultValue, value }: ToParsedArrayArgs<Nullable>) => OasArray<Nullable>;
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { OasArray } from '../../../oas/array/Array.js';
|
|
2
|
+
import { toSchemaV3 } from '../schema/toSchemasV3.js';
|
|
3
|
+
import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
|
|
4
|
+
import { parseNullable } from '../_helpers/parseNullable.js';
|
|
5
|
+
import { parseEnum } from '../_helpers/parseEnum.js';
|
|
6
|
+
import { parseExample } from '../_helpers/parseExample.js';
|
|
7
|
+
import { parseDefault } from '../_helpers/parseDefault.js';
|
|
8
|
+
import * as v from 'valibot';
|
|
9
|
+
import { oasArrayDataWithoutItems } from '../../../oas/array/array-types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
|
|
12
|
+
*
|
|
13
|
+
* This function processes OpenAPI array schemas by extracting and parsing nullable values,
|
|
14
|
+
* examples, enumerations, and default values. It handles the complete transformation from
|
|
15
|
+
* raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
|
|
16
|
+
*
|
|
17
|
+
* The transformation follows a pipeline approach:
|
|
18
|
+
* 1. Parse nullable flag and extract base value
|
|
19
|
+
* 2. Parse example values with nullable support
|
|
20
|
+
* 3. Parse enumeration constraints
|
|
21
|
+
* 4. Parse default values
|
|
22
|
+
* 5. Create final OasArray instance
|
|
23
|
+
*
|
|
24
|
+
* @param args - Transformation arguments
|
|
25
|
+
* @param args.value - The OpenAPI v3 array schema object to transform
|
|
26
|
+
* @param args.context - Parse context providing utilities and tracing
|
|
27
|
+
* @returns Transformed OAS array object with parsed properties
|
|
28
|
+
*
|
|
29
|
+
* @example Basic array transformation
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { toArray } from '@skmtc/core';
|
|
32
|
+
*
|
|
33
|
+
* const openApiArray = {
|
|
34
|
+
* type: 'array',
|
|
35
|
+
* items: { type: 'string' },
|
|
36
|
+
* maxItems: 10,
|
|
37
|
+
* uniqueItems: true
|
|
38
|
+
* };
|
|
39
|
+
*
|
|
40
|
+
* const oasArray = toArray({
|
|
41
|
+
* value: openApiArray,
|
|
42
|
+
* context: parseContext
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* console.log(oasArray.maxItems); // 10
|
|
46
|
+
* console.log(oasArray.uniqueItems); // true
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example Array with nullable and examples
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const complexArray = {
|
|
52
|
+
* type: 'array',
|
|
53
|
+
* items: { type: 'number' },
|
|
54
|
+
* nullable: true,
|
|
55
|
+
* example: [1, 2, 3],
|
|
56
|
+
* default: [],
|
|
57
|
+
* enum: [[1, 2], [3, 4], null]
|
|
58
|
+
* };
|
|
59
|
+
*
|
|
60
|
+
* const oasArray = toArray({
|
|
61
|
+
* value: complexArray,
|
|
62
|
+
* context: parseContext
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* console.log(oasArray.nullable); // true
|
|
66
|
+
* console.log(oasArray.example); // [1, 2, 3]
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export const toArray = ({ value, context, stackTrail }) => {
|
|
70
|
+
const { nullable, value: valueWithoutNullable } = parseNullable({
|
|
71
|
+
value,
|
|
72
|
+
context,
|
|
73
|
+
stackTrail
|
|
74
|
+
});
|
|
75
|
+
const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
|
|
76
|
+
const example = parseExample({
|
|
77
|
+
value: unparsedExample,
|
|
78
|
+
context,
|
|
79
|
+
parent: valueWithoutNullable,
|
|
80
|
+
nullable,
|
|
81
|
+
check: isArray,
|
|
82
|
+
toMessage: item => `Removed invalid example. Expected "array", got: ${item}`,
|
|
83
|
+
stackTrail
|
|
84
|
+
});
|
|
85
|
+
const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
|
|
86
|
+
const enums = parseEnum({
|
|
87
|
+
value: unparsedEnums,
|
|
88
|
+
nullable,
|
|
89
|
+
stackTrail,
|
|
90
|
+
parent: valueWithoutExample,
|
|
91
|
+
context,
|
|
92
|
+
check: Array.isArray,
|
|
93
|
+
toMessage: item => `Removed invalid enum. Expected "array", got: ${item}`
|
|
94
|
+
});
|
|
95
|
+
const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
|
|
96
|
+
const defaultValue = parseDefault({
|
|
97
|
+
value: unparsedDefaultValue,
|
|
98
|
+
context,
|
|
99
|
+
parent: valueWithoutEnums,
|
|
100
|
+
nullable,
|
|
101
|
+
check: isArray,
|
|
102
|
+
toMessage: item => `Removed invalid default. Expected "array", got: ${item}`,
|
|
103
|
+
stackTrail
|
|
104
|
+
});
|
|
105
|
+
return toParsedArray({
|
|
106
|
+
context,
|
|
107
|
+
nullable,
|
|
108
|
+
example,
|
|
109
|
+
enums,
|
|
110
|
+
defaultValue,
|
|
111
|
+
stackTrail,
|
|
112
|
+
value: valueWithoutDefault
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
export const toParsedArray = ({ context, stackTrail, nullable, example, enums, defaultValue, value }) => {
|
|
116
|
+
// We only want parse non-items fields here since items is handled below
|
|
117
|
+
const { items, ...rest } = value;
|
|
118
|
+
// Parse the object without items field
|
|
119
|
+
if (!v.is(oasArrayDataWithoutItems, rest)) {
|
|
120
|
+
v.parse(oasArrayDataWithoutItems, rest);
|
|
121
|
+
}
|
|
122
|
+
const { type: _type, title, description, uniqueItems, maxItems, minItems, readOnly, writeOnly, deprecated, ...skipped } = rest;
|
|
123
|
+
const extensionFields = toSpecificationExtensionsV3({
|
|
124
|
+
skipped,
|
|
125
|
+
parent: value,
|
|
126
|
+
context,
|
|
127
|
+
stackTrail,
|
|
128
|
+
parentType: 'schema:array'
|
|
129
|
+
});
|
|
130
|
+
return context.withStackTrail(stackTrail, () => new OasArray({
|
|
131
|
+
title,
|
|
132
|
+
description,
|
|
133
|
+
nullable,
|
|
134
|
+
defaultValue,
|
|
135
|
+
items: stackTrail.trace('items', st => {
|
|
136
|
+
// An array schema with no `items` is invalid OAS but must not
|
|
137
|
+
// kill the run (fail open): log the issue and treat the items
|
|
138
|
+
// as unknown — `{}` falls through toSchemaV3 to OasUnknown.
|
|
139
|
+
if (items === undefined) {
|
|
140
|
+
context.logIssue({
|
|
141
|
+
key: 'items',
|
|
142
|
+
level: 'warning',
|
|
143
|
+
message: 'Array schema has no "items" — treating as an array of unknown values',
|
|
144
|
+
parent: value,
|
|
145
|
+
stackTrail: st,
|
|
146
|
+
type: 'INVALID_SCHEMA'
|
|
147
|
+
});
|
|
148
|
+
return toSchemaV3({ schema: {}, stackTrail: st, context });
|
|
149
|
+
}
|
|
150
|
+
return toSchemaV3({ schema: items, stackTrail: st, context });
|
|
151
|
+
}),
|
|
152
|
+
extensionFields,
|
|
153
|
+
example,
|
|
154
|
+
uniqueItems,
|
|
155
|
+
maxItems,
|
|
156
|
+
minItems,
|
|
157
|
+
enums,
|
|
158
|
+
readOnly,
|
|
159
|
+
writeOnly,
|
|
160
|
+
deprecated
|
|
161
|
+
}, context));
|
|
162
|
+
};
|
|
163
|
+
const isArray = (value) => {
|
|
164
|
+
return Array.isArray(value);
|
|
165
|
+
};
|