@skmtc/core 0.28.7 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/_dnt.polyfills.d.ts +11 -0
- package/esm/_dnt.polyfills.js +14 -0
- package/esm/context/GenerateContext.js +16 -16
- package/esm/context/ParseContext.js +9 -1
- package/esm/context/RenderContext.d.ts +7 -7
- package/esm/context/RenderContext.js +17 -12
- package/esm/context/generateTypes.d.ts +2 -2
- package/esm/context/generateTypes.js +3 -1
- package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +23 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +38 -0
- package/esm/dsl/GeneratorKeys.d.ts +2 -2
- package/esm/dsl/GeneratorKeys.js +6 -3
- package/esm/dsl/model/ModelDriver.js +4 -3
- package/esm/dsl/operation/gql/GqlOperationDriver.js +4 -3
- package/esm/dsl/operation/oas/OasOperationDriver.js +4 -3
- package/esm/dsl/webhook/WebhookDriver.js +4 -3
- package/esm/helpers/applyGeneratedSuffix.js +1 -1
- package/esm/helpers/isImported.d.ts +10 -74
- package/esm/helpers/isImported.js +12 -76
- package/esm/helpers/naming.d.ts +2 -1
- package/esm/helpers/naming.js +4 -2
- package/esm/helpers/normalizeWorkspacePath.d.ts +64 -0
- package/esm/helpers/normalizeWorkspacePath.js +98 -0
- package/esm/helpers/toResolvedArtifactPath.d.ts +8 -5
- package/esm/helpers/toResolvedArtifactPath.js +11 -7
- package/esm/helpers/toWorkspacePath.d.ts +3 -3
- package/esm/helpers/toWorkspacePath.js +5 -5
- package/esm/mod.d.ts +1 -0
- package/esm/mod.js +1 -0
- package/esm/oas/discriminator/Discriminator.d.ts +3 -0
- package/esm/oas/discriminator/Discriminator.js +7 -0
- package/esm/oas/document/Document.d.ts +7 -0
- package/esm/oas/document/Document.js +8 -0
- package/esm/oas/example/Example.d.ts +10 -1
- package/esm/oas/example/Example.js +16 -0
- package/esm/oas/mediaType/MediaType.d.ts +12 -0
- package/esm/oas/mediaType/MediaType.js +24 -0
- package/esm/oas/parameter/Parameter.d.ts +2 -1
- package/esm/oas/parameter/Parameter.js +5 -2
- package/esm/oas/parameter/parameter-types.d.ts +10 -2
- package/esm/oas/parameter/parameter-types.js +3 -1
- package/esm/oas/response/Response.d.ts +6 -1
- package/esm/oas/response/Response.js +8 -0
- package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
- package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
- package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
- package/esm/oas/server/Server.d.ts +8 -2
- package/esm/oas/server/Server.js +10 -1
- package/esm/oas/tag/Tag.d.ts +9 -0
- package/esm/oas/tag/Tag.js +9 -0
- package/esm/parse/toOasDialect.d.ts +8 -7
- package/esm/parse/toOasDialect.js +4 -2
- package/esm/parse/v3-0/methods.d.ts +11 -0
- package/esm/parse/v3-0/methods.js +16 -0
- package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
- package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
- package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
- package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
- package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
- package/esm/parse/v3-1/methods.d.ts +11 -0
- package/esm/parse/v3-1/methods.js +16 -0
- package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
- package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
- package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
- package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
- package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
- package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
- package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
- package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
- package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
- package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
- package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
- package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
- package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
- package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
- package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
- package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
- package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
- package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
- package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
- package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
- package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
- package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
- package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
- package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
- package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
- package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
- package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
- package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
- package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
- package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
- package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
- package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
- package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
- package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
- package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
- package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
- package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
- package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
- package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
- package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
- package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
- package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
- package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
- package/esm/parse/v3-2/array/toArray.d.ts +80 -0
- package/esm/parse/v3-2/array/toArray.js +165 -0
- package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
- package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
- package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
- package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
- package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
- package/esm/parse/v3-2/contact/toContactV3.js +18 -0
- package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
- package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
- package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
- package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
- package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
- package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
- package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
- package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
- package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
- package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
- package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
- package/esm/parse/v3-2/info/toInfoV3.js +23 -0
- package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
- package/esm/parse/v3-2/integer/toInteger.js +115 -0
- package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
- package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
- package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
- package/esm/parse/v3-2/link/toLinksV3.js +40 -0
- package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
- package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
- package/esm/parse/v3-2/methods.d.ts +17 -0
- package/esm/parse/v3-2/methods.js +21 -0
- package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
- package/esm/parse/v3-2/number/toNumber.js +115 -0
- package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
- package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
- package/esm/parse/v3-2/object/toObject.d.ts +10 -0
- package/esm/parse/v3-2/object/toObject.js +90 -0
- package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
- package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
- package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
- package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
- package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
- package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
- package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
- package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
- package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
- package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
- package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
- package/esm/parse/v3-2/ref/toRefV31.js +10 -0
- package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
- package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +44 -0
- package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/esm/parse/v3-2/response/toResponseV3.js +56 -0
- package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
- package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
- package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
- package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
- package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
- package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
- package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
- package/esm/parse/v3-2/server/toServerV3.js +31 -0
- package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
- package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
- package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
- package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
- package/esm/parse/v3-2/string/toString.d.ts +146 -0
- package/esm/parse/v3-2/string/toString.js +211 -0
- package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
- package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
- package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
- package/esm/parse/v3-2/union/toUnion.js +68 -0
- package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
- package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
- package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
- package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
- package/esm/types/Method.d.ts +7 -4
- package/esm/types/Method.js +17 -4
- package/esm/types/Preview.d.ts +2 -1
- package/esm/types/Settings.js +6 -8
- package/esm/types/SkmtcDocument.d.ts +6 -6
- package/package.json +1 -1
- package/script/_dnt.polyfills.d.ts +11 -0
- package/script/_dnt.polyfills.js +14 -0
- package/script/context/GenerateContext.js +16 -16
- package/script/context/ParseContext.js +9 -1
- package/script/context/RenderContext.d.ts +7 -7
- package/script/context/RenderContext.js +17 -12
- package/script/context/generateTypes.d.ts +2 -2
- package/script/context/generateTypes.js +3 -1
- package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
- package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +26 -0
- package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
- package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +41 -0
- package/script/dsl/GeneratorKeys.d.ts +2 -2
- package/script/dsl/GeneratorKeys.js +6 -3
- package/script/dsl/model/ModelDriver.js +4 -3
- package/script/dsl/operation/gql/GqlOperationDriver.js +4 -3
- package/script/dsl/operation/oas/OasOperationDriver.js +4 -3
- package/script/dsl/webhook/WebhookDriver.js +4 -3
- package/script/helpers/applyGeneratedSuffix.js +1 -1
- package/script/helpers/isImported.d.ts +10 -74
- package/script/helpers/isImported.js +12 -76
- package/script/helpers/naming.d.ts +2 -1
- package/script/helpers/naming.js +4 -2
- package/script/helpers/normalizeWorkspacePath.d.ts +64 -0
- package/script/helpers/normalizeWorkspacePath.js +107 -0
- package/script/helpers/toResolvedArtifactPath.d.ts +8 -5
- package/script/helpers/toResolvedArtifactPath.js +11 -7
- package/script/helpers/toWorkspacePath.d.ts +3 -3
- package/script/helpers/toWorkspacePath.js +5 -5
- package/script/mod.d.ts +1 -0
- package/script/mod.js +1 -0
- package/script/oas/discriminator/Discriminator.d.ts +3 -0
- package/script/oas/discriminator/Discriminator.js +7 -0
- package/script/oas/document/Document.d.ts +7 -0
- package/script/oas/document/Document.js +8 -0
- package/script/oas/example/Example.d.ts +10 -1
- package/script/oas/example/Example.js +16 -0
- package/script/oas/mediaType/MediaType.d.ts +12 -0
- package/script/oas/mediaType/MediaType.js +24 -0
- package/script/oas/parameter/Parameter.d.ts +2 -1
- package/script/oas/parameter/Parameter.js +5 -2
- package/script/oas/parameter/parameter-types.d.ts +10 -2
- package/script/oas/parameter/parameter-types.js +3 -1
- package/script/oas/response/Response.d.ts +6 -1
- package/script/oas/response/Response.js +8 -0
- package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
- package/script/oas/securitySchemes/SecurityScheme.js +46 -1
- package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
- package/script/oas/server/Server.d.ts +8 -2
- package/script/oas/server/Server.js +10 -1
- package/script/oas/tag/Tag.d.ts +9 -0
- package/script/oas/tag/Tag.js +9 -0
- package/script/parse/toOasDialect.d.ts +8 -7
- package/script/parse/toOasDialect.js +4 -2
- package/script/parse/v3-0/methods.d.ts +11 -0
- package/script/parse/v3-0/methods.js +20 -0
- package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
- package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
- package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
- package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
- package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
- package/script/parse/v3-1/methods.d.ts +11 -0
- package/script/parse/v3-1/methods.js +20 -0
- package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
- package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
- package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
- package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
- package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
- package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
- package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
- package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
- package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
- package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
- package/script/parse/v3-2/_helpers/parseExample.js +41 -0
- package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
- package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
- package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
- package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
- package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
- package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
- package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
- package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
- package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
- package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
- package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
- package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
- package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
- package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
- package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
- package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
- package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
- package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
- package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
- package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
- package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
- package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
- package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
- package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
- package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
- package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
- package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
- package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
- package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
- package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
- package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
- package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
- package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
- package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
- package/script/parse/v3-2/_merge-all-of/types.js +38 -0
- package/script/parse/v3-2/array/toArray.d.ts +80 -0
- package/script/parse/v3-2/array/toArray.js +203 -0
- package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
- package/script/parse/v3-2/boolean/toBoolean.js +177 -0
- package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
- package/script/parse/v3-2/components/toComponentsV3.js +47 -0
- package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
- package/script/parse/v3-2/contact/toContactV3.js +22 -0
- package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
- package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
- package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
- package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
- package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
- package/script/parse/v3-2/example/toExamplesV3.js +149 -0
- package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
- package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
- package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
- package/script/parse/v3-2/header/toHeadersV3.js +51 -0
- package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
- package/script/parse/v3-2/info/toInfoV3.js +27 -0
- package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
- package/script/parse/v3-2/integer/toInteger.js +153 -0
- package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
- package/script/parse/v3-2/license/toLicenseV3.js +21 -0
- package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
- package/script/parse/v3-2/link/toLinksV3.js +44 -0
- package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
- package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
- package/script/parse/v3-2/methods.d.ts +17 -0
- package/script/parse/v3-2/methods.js +25 -0
- package/script/parse/v3-2/number/toNumber.d.ts +10 -0
- package/script/parse/v3-2/number/toNumber.js +152 -0
- package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
- package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
- package/script/parse/v3-2/object/toObject.d.ts +10 -0
- package/script/parse/v3-2/object/toObject.js +94 -0
- package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
- package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
- package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
- package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
- package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
- package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
- package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
- package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
- package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
- package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
- package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
- package/script/parse/v3-2/ref/toRefV31.js +14 -0
- package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
- package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +49 -0
- package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
- package/script/parse/v3-2/response/toResponseV3.js +62 -0
- package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
- package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
- package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
- package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
- package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
- package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
- package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
- package/script/parse/v3-2/server/toServerV3.js +37 -0
- package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
- package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
- package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
- package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
- package/script/parse/v3-2/string/toString.d.ts +146 -0
- package/script/parse/v3-2/string/toString.js +249 -0
- package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
- package/script/parse/v3-2/tag/toTagsV3.js +83 -0
- package/script/parse/v3-2/union/toUnion.d.ts +12 -0
- package/script/parse/v3-2/union/toUnion.js +72 -0
- package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
- package/script/parse/v3-2/unknown/toUnknown.js +23 -0
- package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
- package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
- package/script/types/Method.d.ts +7 -4
- package/script/types/Method.js +17 -4
- package/script/types/Preview.d.ts +2 -1
- package/script/types/Settings.js +7 -9
- package/script/types/SkmtcDocument.d.ts +6 -6
- package/esm/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
- package/esm/deps/jsr.io/@std/path/1.1.6/extname.js +0 -31
- package/esm/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
- package/esm/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -32
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
- package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -83
- package/script/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
- package/script/deps/jsr.io/@std/path/1.1.6/extname.js +0 -34
- package/script/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
- package/script/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -35
- package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
- package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -86
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { toOptionalSchemaV3 } from '../schema/toSchemasV3.js';
|
|
2
|
+
import { toExamplesV3 } from '../example/toExamplesV3.js';
|
|
3
|
+
import { OasMediaType } from '../../../oas/mediaType/MediaType.js';
|
|
4
|
+
import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
|
|
5
|
+
import { isRef } from '../../../helpers/refFns.js';
|
|
6
|
+
import { fromJsonPointer } from '../../../types/JsonPointer.js';
|
|
7
|
+
/**
|
|
8
|
+
* Transforms an OpenAPI v3 media type object into an internal OAS media type representation.
|
|
9
|
+
*
|
|
10
|
+
* This function processes OpenAPI v3 MediaType objects, extracting schema definitions,
|
|
11
|
+
* examples, encoding information, and specification extensions. It creates a structured
|
|
12
|
+
* internal representation that can be used by the SKMTC pipeline for code generation
|
|
13
|
+
* and validation.
|
|
14
|
+
*
|
|
15
|
+
* The transformation handles all standard OpenAPI v3 MediaType properties including
|
|
16
|
+
* schema references, inline schemas, examples, encoding specifications, and custom
|
|
17
|
+
* extension fields that begin with 'x-'.
|
|
18
|
+
*
|
|
19
|
+
* @param args - Transformation arguments
|
|
20
|
+
* @param args.mediaTypeItem - The OpenAPI v3 media type object to process
|
|
21
|
+
* @param args.mediaType - The media type identifier (MIME type)
|
|
22
|
+
* @param args.context - Parsing context for tracing and error handling
|
|
23
|
+
* @returns Structured OAS media type object for internal processing
|
|
24
|
+
*
|
|
25
|
+
* @example Transforming JSON media type
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { toMediaTypeItemV3 } from '@skmtc/core/oas/mediaType';
|
|
28
|
+
*
|
|
29
|
+
* const jsonMediaType = {
|
|
30
|
+
* schema: {
|
|
31
|
+
* type: 'object',
|
|
32
|
+
* properties: {
|
|
33
|
+
* name: { type: 'string' },
|
|
34
|
+
* email: { type: 'string', format: 'email' }
|
|
35
|
+
* }
|
|
36
|
+
* },
|
|
37
|
+
* example: {
|
|
38
|
+
* name: 'John Doe',
|
|
39
|
+
* email: 'john@example.com'
|
|
40
|
+
* }
|
|
41
|
+
* };
|
|
42
|
+
*
|
|
43
|
+
* const result = toMediaTypeItemV3({
|
|
44
|
+
* mediaTypeItem: jsonMediaType,
|
|
45
|
+
* mediaType: 'application/json',
|
|
46
|
+
* context: parseContext
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* console.log(result.mediaType); // 'application/json'
|
|
50
|
+
* console.log(result.schema); // Processed schema object
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example Processing form data with encoding
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const formMediaType = {
|
|
56
|
+
* schema: {
|
|
57
|
+
* type: 'object',
|
|
58
|
+
* properties: {
|
|
59
|
+
* file: { type: 'string', format: 'binary' },
|
|
60
|
+
* metadata: { type: 'string' }
|
|
61
|
+
* }
|
|
62
|
+
* },
|
|
63
|
+
* encoding: {
|
|
64
|
+
* file: {
|
|
65
|
+
* contentType: 'image/png',
|
|
66
|
+
* headers: {
|
|
67
|
+
* 'X-Rate-Limit': {
|
|
68
|
+
* schema: { type: 'integer' }
|
|
69
|
+
* }
|
|
70
|
+
* }
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
* };
|
|
74
|
+
*
|
|
75
|
+
* const result = toMediaTypeItemV3({
|
|
76
|
+
* mediaTypeItem: formMediaType,
|
|
77
|
+
* mediaType: 'multipart/form-data',
|
|
78
|
+
* context: parseContext
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* console.log(result.encoding); // Processed encoding configuration
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Handling multiple examples
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const mediaTypeWithExamples = {
|
|
87
|
+
* schema: { type: 'string' },
|
|
88
|
+
* examples: {
|
|
89
|
+
* success: {
|
|
90
|
+
* summary: 'Successful response',
|
|
91
|
+
* value: 'Operation completed'
|
|
92
|
+
* },
|
|
93
|
+
* error: {
|
|
94
|
+
* summary: 'Error response',
|
|
95
|
+
* value: 'Operation failed'
|
|
96
|
+
* }
|
|
97
|
+
* }
|
|
98
|
+
* };
|
|
99
|
+
*
|
|
100
|
+
* const result = toMediaTypeItemV3({
|
|
101
|
+
* mediaTypeItem: mediaTypeWithExamples,
|
|
102
|
+
* mediaType: 'text/plain',
|
|
103
|
+
* context: parseContext
|
|
104
|
+
* });
|
|
105
|
+
*
|
|
106
|
+
* console.log(Object.keys(result.examples)); // ['success', 'error']
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export const toMediaTypeItemV3 = ({ mediaTypeItem, mediaType, stackTrail, context }) => {
|
|
110
|
+
const { schema, itemSchema, example, examples, encoding, prefixEncoding, itemEncoding, ...skipped } = mediaTypeItem;
|
|
111
|
+
const extensionFields = toSpecificationExtensionsV3({
|
|
112
|
+
skipped,
|
|
113
|
+
parent: mediaTypeItem,
|
|
114
|
+
context,
|
|
115
|
+
stackTrail,
|
|
116
|
+
parentType: 'mediaType'
|
|
117
|
+
});
|
|
118
|
+
if (encoding !== undefined && (prefixEncoding !== undefined || itemEncoding !== undefined)) {
|
|
119
|
+
context.logIssue({
|
|
120
|
+
key: 'encoding',
|
|
121
|
+
level: 'warning',
|
|
122
|
+
message: `'encoding' must not be present together with 'prefixEncoding' or 'itemEncoding' in ${mediaType}`,
|
|
123
|
+
parent: mediaTypeItem,
|
|
124
|
+
stackTrail,
|
|
125
|
+
type: 'UNEXPECTED_PROPERTY'
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const fields = {
|
|
129
|
+
mediaType,
|
|
130
|
+
encoding,
|
|
131
|
+
prefixEncoding,
|
|
132
|
+
itemEncoding,
|
|
133
|
+
schema: stackTrail.trace('schema', st => toOptionalSchemaV3({ schema, stackTrail: st, context })),
|
|
134
|
+
itemSchema: stackTrail.trace('itemSchema', st => toOptionalSchemaV3({ schema: itemSchema, stackTrail: st, context })),
|
|
135
|
+
examples: stackTrail.trace('examples', st => toExamplesV3({
|
|
136
|
+
example,
|
|
137
|
+
examples,
|
|
138
|
+
exampleKey: mediaType,
|
|
139
|
+
stackTrail: st,
|
|
140
|
+
context
|
|
141
|
+
})),
|
|
142
|
+
extensionFields
|
|
143
|
+
};
|
|
144
|
+
return context.withStackTrail(stackTrail, () => new OasMediaType(fields, context));
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Transforms multiple OpenAPI v3 media type objects into internal OAS representations.
|
|
148
|
+
*
|
|
149
|
+
* This function processes a complete content map from OpenAPI v3, transforming each
|
|
150
|
+
* media type entry into its internal OAS representation. It's commonly used to process
|
|
151
|
+
* the `content` property of request bodies, responses, and parameters that support
|
|
152
|
+
* multiple media types.
|
|
153
|
+
*
|
|
154
|
+
* The function maintains the original media type keys while transforming the values
|
|
155
|
+
* into structured OAS media type objects. Each transformation is traced for debugging
|
|
156
|
+
* and error tracking purposes.
|
|
157
|
+
*
|
|
158
|
+
* @param args - Transformation arguments
|
|
159
|
+
* @param args.content - Map of media types to OpenAPI MediaType objects
|
|
160
|
+
* @param args.context - Parsing context for tracing and error handling
|
|
161
|
+
* @returns Map of media type strings to processed OAS media type objects
|
|
162
|
+
*
|
|
163
|
+
* @example Processing multiple content types
|
|
164
|
+
* ```typescript
|
|
165
|
+
* import { toMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
|
|
166
|
+
*
|
|
167
|
+
* const content = {
|
|
168
|
+
* 'application/json': {
|
|
169
|
+
* schema: {
|
|
170
|
+
* type: 'object',
|
|
171
|
+
* properties: { message: { type: 'string' } }
|
|
172
|
+
* }
|
|
173
|
+
* },
|
|
174
|
+
* 'application/xml': {
|
|
175
|
+
* schema: {
|
|
176
|
+
* type: 'string'
|
|
177
|
+
* }
|
|
178
|
+
* },
|
|
179
|
+
* 'text/plain': {
|
|
180
|
+
* schema: {
|
|
181
|
+
* type: 'string'
|
|
182
|
+
* },
|
|
183
|
+
* example: 'Plain text response'
|
|
184
|
+
* }
|
|
185
|
+
* };
|
|
186
|
+
*
|
|
187
|
+
* const result = toMediaTypeItemsV3({
|
|
188
|
+
* content,
|
|
189
|
+
* context: parseContext
|
|
190
|
+
* });
|
|
191
|
+
*
|
|
192
|
+
* console.log(Object.keys(result)); // ['application/json', 'application/xml', 'text/plain']
|
|
193
|
+
* console.log(result['application/json'].mediaType); // 'application/json'
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @example Processing request body content types
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const requestBodyContent = {
|
|
199
|
+
* 'application/json': {
|
|
200
|
+
* schema: { $ref: '#/components/schemas/CreateUserRequest' }
|
|
201
|
+
* },
|
|
202
|
+
* 'application/x-www-form-urlencoded': {
|
|
203
|
+
* schema: {
|
|
204
|
+
* type: 'object',
|
|
205
|
+
* properties: {
|
|
206
|
+
* name: { type: 'string' },
|
|
207
|
+
* email: { type: 'string' }
|
|
208
|
+
* }
|
|
209
|
+
* },
|
|
210
|
+
* encoding: {
|
|
211
|
+
* email: {
|
|
212
|
+
* style: 'form',
|
|
213
|
+
* explode: false
|
|
214
|
+
* }
|
|
215
|
+
* }
|
|
216
|
+
* }
|
|
217
|
+
* };
|
|
218
|
+
*
|
|
219
|
+
* const processed = toMediaTypeItemsV3({
|
|
220
|
+
* content: requestBodyContent,
|
|
221
|
+
* context: parseContext
|
|
222
|
+
* });
|
|
223
|
+
*
|
|
224
|
+
* // Each media type is processed with its specific configuration
|
|
225
|
+
* console.log(processed['application/json'].schema); // Reference object
|
|
226
|
+
* console.log(processed['application/x-www-form-urlencoded'].encoding); // Form encoding config
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
export const toMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
|
|
230
|
+
const output = {};
|
|
231
|
+
const entries = Object.entries(content);
|
|
232
|
+
for (const [mediaType, value] of entries) {
|
|
233
|
+
// A `$ref` is replaced by the Media Type Object it names, so a
|
|
234
|
+
// referenced media type parses exactly like an inline one.
|
|
235
|
+
const mediaTypeItem = isRef(value) ? toComponentMediaType({ $ref: value.$ref, context }) : value;
|
|
236
|
+
if (mediaTypeItem === undefined) {
|
|
237
|
+
context.logIssue({
|
|
238
|
+
key: mediaType,
|
|
239
|
+
level: 'error',
|
|
240
|
+
message: `Reference ${JSON.stringify(value)} does not resolve to an entry in components.mediaTypes; dropping '${mediaType}'`,
|
|
241
|
+
parent: value,
|
|
242
|
+
stackTrail,
|
|
243
|
+
type: 'INVALID_DEPENDENCY_REF'
|
|
244
|
+
});
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
output[mediaType] = stackTrail.trace(mediaType, st => toMediaTypeItemV3({ mediaTypeItem, mediaType, stackTrail: st, context }));
|
|
248
|
+
}
|
|
249
|
+
return output;
|
|
250
|
+
};
|
|
251
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
252
|
+
const isMediaTypeObject = (value) => isRecord(value) && !isRef(value);
|
|
253
|
+
/**
|
|
254
|
+
* The Media Type Object a `$ref` names in `components.mediaTypes`, read off
|
|
255
|
+
* the raw document. An entry that is itself a `$ref` is followed. `undefined`
|
|
256
|
+
* when a `$ref` on the chain points elsewhere or names a missing entry, or
|
|
257
|
+
* when the chain is a cycle.
|
|
258
|
+
*/
|
|
259
|
+
const toComponentMediaType = ({ $ref, context, visited = new Set() }) => {
|
|
260
|
+
const segments = $ref.startsWith('#') ? fromJsonPointer($ref) : undefined;
|
|
261
|
+
if (segments?.length !== 3 || segments[0] !== 'components' || segments[1] !== 'mediaTypes') {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
const [, , name] = segments;
|
|
265
|
+
if (visited.has(name)) {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
const { components } = context.documentObject;
|
|
269
|
+
const mediaTypes = isRecord(components) ? components.mediaTypes : undefined;
|
|
270
|
+
if (!isRecord(mediaTypes) || !Object.hasOwn(mediaTypes, name)) {
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
const mediaTypeItem = mediaTypes[name];
|
|
274
|
+
if (isRef(mediaTypeItem)) {
|
|
275
|
+
return toComponentMediaType({
|
|
276
|
+
$ref: mediaTypeItem.$ref,
|
|
277
|
+
context,
|
|
278
|
+
visited: new Set([...visited, name])
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
return isMediaTypeObject(mediaTypeItem) ? mediaTypeItem : undefined;
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* Optionally transforms OpenAPI v3 media type objects when content is provided.
|
|
285
|
+
*
|
|
286
|
+
* This function provides a safe way to process media type content that may or may not
|
|
287
|
+
* be present in the OpenAPI specification. It handles the common pattern where content
|
|
288
|
+
* properties are optional in OpenAPI objects (like responses without bodies or
|
|
289
|
+
* operations without request bodies).
|
|
290
|
+
*
|
|
291
|
+
* When content is undefined, the function returns undefined without processing.
|
|
292
|
+
* When content is provided, it delegates to `toMediaTypeItemsV3` for full processing.
|
|
293
|
+
*
|
|
294
|
+
* @param args - Transformation arguments
|
|
295
|
+
* @param args.content - Optional map of media types to OpenAPI MediaType objects
|
|
296
|
+
* @param args.context - Parsing context for tracing and error handling
|
|
297
|
+
* @returns Map of processed media types if content exists, undefined otherwise
|
|
298
|
+
*
|
|
299
|
+
* @example Handling optional response content
|
|
300
|
+
* ```typescript
|
|
301
|
+
* import { toOptionalMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
|
|
302
|
+
*
|
|
303
|
+
* // Response with content
|
|
304
|
+
* const responseWithContent = {
|
|
305
|
+
* description: 'Successful response',
|
|
306
|
+
* content: {
|
|
307
|
+
* 'application/json': {
|
|
308
|
+
* schema: { type: 'object' }
|
|
309
|
+
* }
|
|
310
|
+
* }
|
|
311
|
+
* };
|
|
312
|
+
*
|
|
313
|
+
* const withContent = toOptionalMediaTypeItemsV3({
|
|
314
|
+
* content: responseWithContent.content,
|
|
315
|
+
* context: parseContext
|
|
316
|
+
* });
|
|
317
|
+
* console.log(withContent); // { 'application/json': OasMediaType }
|
|
318
|
+
*
|
|
319
|
+
* // Response without content (like 204 No Content)
|
|
320
|
+
* const responseNoContent = {
|
|
321
|
+
* description: 'No content response'
|
|
322
|
+
* };
|
|
323
|
+
*
|
|
324
|
+
* const noContent = toOptionalMediaTypeItemsV3({
|
|
325
|
+
* content: responseNoContent.content, // undefined
|
|
326
|
+
* context: parseContext
|
|
327
|
+
* });
|
|
328
|
+
* console.log(noContent); // undefined
|
|
329
|
+
* ```
|
|
330
|
+
*
|
|
331
|
+
* @example Processing operations with optional request bodies
|
|
332
|
+
* ```typescript
|
|
333
|
+
* function processOperation(operation: OpenAPIV3.OperationObject) {
|
|
334
|
+
* const requestBodyContent = toOptionalMediaTypeItemsV3({
|
|
335
|
+
* content: operation.requestBody?.content,
|
|
336
|
+
* context: parseContext
|
|
337
|
+
* });
|
|
338
|
+
*
|
|
339
|
+
* if (requestBodyContent) {
|
|
340
|
+
* console.log('Operation has request body with media types:');
|
|
341
|
+
* console.log(Object.keys(requestBodyContent));
|
|
342
|
+
* } else {
|
|
343
|
+
* console.log('Operation has no request body');
|
|
344
|
+
* }
|
|
345
|
+
* }
|
|
346
|
+
* ```
|
|
347
|
+
*
|
|
348
|
+
* @example Safe processing in response handlers
|
|
349
|
+
* ```typescript
|
|
350
|
+
* class ResponseProcessor {
|
|
351
|
+
* processResponse(response: OpenAPIV3.ResponseObject) {
|
|
352
|
+
* const mediaTypes = toOptionalMediaTypeItemsV3({
|
|
353
|
+
* content: response.content,
|
|
354
|
+
* context: this.context
|
|
355
|
+
* });
|
|
356
|
+
*
|
|
357
|
+
* // Safe to check without worrying about undefined content
|
|
358
|
+
* const hasJsonResponse = mediaTypes && 'application/json' in mediaTypes;
|
|
359
|
+
*
|
|
360
|
+
* if (hasJsonResponse) {
|
|
361
|
+
* const jsonMediaType = mediaTypes['application/json'];
|
|
362
|
+
* return this.generateJsonResponseHandler(jsonMediaType);
|
|
363
|
+
* }
|
|
364
|
+
*
|
|
365
|
+
* return this.generateEmptyResponseHandler();
|
|
366
|
+
* }
|
|
367
|
+
* }
|
|
368
|
+
* ```
|
|
369
|
+
*/
|
|
370
|
+
export const toOptionalMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
|
|
371
|
+
if (!content) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
return toMediaTypeItemsV3({ content, stackTrail, context });
|
|
375
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import type { Method } from '../../types/Method.js';
|
|
3
|
+
/**
|
|
4
|
+
* The path item fields that hold an Operation Object in OpenAPI 3.2.
|
|
5
|
+
* `query` is new in 3.2.
|
|
6
|
+
*/
|
|
7
|
+
export declare const pathItemMethods: readonly Method[];
|
|
8
|
+
/**
|
|
9
|
+
* A 3.2 path item: the `openapi-types` path item plus the `query` operation.
|
|
10
|
+
*/
|
|
11
|
+
export type PathItemObjectV3 = OpenAPIV3.PathItemObject & {
|
|
12
|
+
query?: OpenAPIV3.OperationObject;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Returns `key` as a {@link Method} when it is one of {@link pathItemMethods}.
|
|
16
|
+
*/
|
|
17
|
+
export declare const toPathItemMethod: (key: string) => Method | undefined;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The path item fields that hold an Operation Object in OpenAPI 3.2.
|
|
3
|
+
* `query` is new in 3.2.
|
|
4
|
+
*/
|
|
5
|
+
export const pathItemMethods = [
|
|
6
|
+
'get',
|
|
7
|
+
'put',
|
|
8
|
+
'post',
|
|
9
|
+
'delete',
|
|
10
|
+
'options',
|
|
11
|
+
'head',
|
|
12
|
+
'patch',
|
|
13
|
+
'trace',
|
|
14
|
+
'query'
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Returns `key` as a {@link Method} when it is one of {@link pathItemMethods}.
|
|
18
|
+
*/
|
|
19
|
+
export const toPathItemMethod = (key) => {
|
|
20
|
+
return pathItemMethods.find(method => method === key);
|
|
21
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import type { ParseContextType } from '../../../context/parseTypes.js';
|
|
3
|
+
import { OasNumber } from '../../../oas/number/Number.js';
|
|
4
|
+
import type { StackTrail } from '../../../context/StackTrail.js';
|
|
5
|
+
export type ToNumberArgs = {
|
|
6
|
+
value: OpenAPIV3.SchemaObject;
|
|
7
|
+
stackTrail: StackTrail;
|
|
8
|
+
context: ParseContextType;
|
|
9
|
+
};
|
|
10
|
+
export declare const toNumber: ({ context, value, stackTrail }: ToNumberArgs) => OasNumber;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { OasNumber } from '../../../oas/number/Number.js';
|
|
2
|
+
import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
|
|
3
|
+
import { oasNumberData, numberFormat } from '../../../oas/number/number-types.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
|
+
export const toNumber = ({ context, value, stackTrail }) => {
|
|
10
|
+
const { nullable, value: valueWithoutNullable } = parseNullable({
|
|
11
|
+
value,
|
|
12
|
+
context,
|
|
13
|
+
stackTrail
|
|
14
|
+
});
|
|
15
|
+
const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
|
|
16
|
+
const example = parseExample({
|
|
17
|
+
value: unparsedExample,
|
|
18
|
+
context,
|
|
19
|
+
parent: valueWithoutNullable,
|
|
20
|
+
nullable,
|
|
21
|
+
check: isNumber,
|
|
22
|
+
toMessage: item => `Removed invalid example. Expected "number", got: ${item}`,
|
|
23
|
+
stackTrail
|
|
24
|
+
});
|
|
25
|
+
const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
|
|
26
|
+
const enums = parseEnum({
|
|
27
|
+
value: unparsedEnums,
|
|
28
|
+
nullable,
|
|
29
|
+
stackTrail,
|
|
30
|
+
parent: valueWithoutExample,
|
|
31
|
+
context,
|
|
32
|
+
check: isNumber,
|
|
33
|
+
toMessage: item => `Removed invalid enum. Expected "number", got: ${item}`
|
|
34
|
+
});
|
|
35
|
+
const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
|
|
36
|
+
const defaultValue = parseDefault({
|
|
37
|
+
value: unparsedDefaultValue,
|
|
38
|
+
context,
|
|
39
|
+
parent: valueWithoutEnums,
|
|
40
|
+
nullable,
|
|
41
|
+
check: isNumber,
|
|
42
|
+
toMessage: item => `Removed invalid default. Expected "number", got: ${item}`,
|
|
43
|
+
stackTrail
|
|
44
|
+
});
|
|
45
|
+
return toParsedNumber({
|
|
46
|
+
context,
|
|
47
|
+
nullable,
|
|
48
|
+
example,
|
|
49
|
+
enums,
|
|
50
|
+
defaultValue,
|
|
51
|
+
value: valueWithoutDefault,
|
|
52
|
+
stackTrail
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const toParsedNumber = ({ context, nullable, example, enums, defaultValue, value: valueWithoutEnums, stackTrail }) => {
|
|
56
|
+
const { format: unparsedFormat, ...valueWithoutFormat } = valueWithoutEnums;
|
|
57
|
+
const format = parseNumberFormat({
|
|
58
|
+
format: unparsedFormat,
|
|
59
|
+
context,
|
|
60
|
+
stackTrail,
|
|
61
|
+
parent: valueWithoutEnums
|
|
62
|
+
});
|
|
63
|
+
if (!v.is(oasNumberData, valueWithoutFormat)) {
|
|
64
|
+
v.parse(oasNumberData, valueWithoutFormat);
|
|
65
|
+
}
|
|
66
|
+
const { type: _type, title, description, multipleOf, maximum, exclusiveMaximum, minimum, exclusiveMinimum, readOnly, writeOnly, deprecated, ...skipped } = valueWithoutFormat;
|
|
67
|
+
const extensionFields = toSpecificationExtensionsV3({
|
|
68
|
+
skipped,
|
|
69
|
+
parent: valueWithoutFormat,
|
|
70
|
+
context,
|
|
71
|
+
stackTrail,
|
|
72
|
+
parentType: 'schema:number'
|
|
73
|
+
});
|
|
74
|
+
return context.withStackTrail(stackTrail, () => new OasNumber({
|
|
75
|
+
title,
|
|
76
|
+
description,
|
|
77
|
+
nullable,
|
|
78
|
+
default: defaultValue,
|
|
79
|
+
extensionFields,
|
|
80
|
+
example,
|
|
81
|
+
enums,
|
|
82
|
+
format,
|
|
83
|
+
multipleOf,
|
|
84
|
+
maximum,
|
|
85
|
+
exclusiveMaximum,
|
|
86
|
+
minimum,
|
|
87
|
+
readOnly,
|
|
88
|
+
writeOnly,
|
|
89
|
+
exclusiveMinimum,
|
|
90
|
+
deprecated
|
|
91
|
+
}, context));
|
|
92
|
+
};
|
|
93
|
+
const parseNumberFormat = ({ format, context, parent, stackTrail }) => {
|
|
94
|
+
if (format === undefined) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
if (!v.is(numberFormat, format)) {
|
|
98
|
+
// `format` is an open vocabulary; a value the IR's numberFormat can't
|
|
99
|
+
// hold (e.g. `decimal`) is dropped. Recorded at `debug` — the dropped
|
|
100
|
+
// hint is informational, not a correctness issue.
|
|
101
|
+
context.logIssue({
|
|
102
|
+
key: 'format',
|
|
103
|
+
level: 'debug',
|
|
104
|
+
message: `Invalid format: ${format}`,
|
|
105
|
+
parent,
|
|
106
|
+
stackTrail,
|
|
107
|
+
type: 'INVALID_FORMAT'
|
|
108
|
+
});
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return format;
|
|
112
|
+
};
|
|
113
|
+
const isNumber = (value) => {
|
|
114
|
+
return typeof value === 'number';
|
|
115
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import type { ParseContextType } from '../../../context/parseTypes.js';
|
|
3
|
+
import type { OasSchema } from '../../../oas/schema/Schema.js';
|
|
4
|
+
import type { OasRef } from '../../../oas/ref/Ref.js';
|
|
5
|
+
import type { StackTrail } from '../../../context/StackTrail.js';
|
|
6
|
+
export type ToAdditionalPropertiesV3Args = {
|
|
7
|
+
additionalProperties: boolean | OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject | undefined;
|
|
8
|
+
stackTrail: StackTrail;
|
|
9
|
+
context: ParseContextType;
|
|
10
|
+
};
|
|
11
|
+
export declare const toAdditionalPropertiesV3: ({ additionalProperties, stackTrail, context }: ToAdditionalPropertiesV3Args) => OasSchema | OasRef<"schema"> | boolean | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { toSchemaV3 } from '../schema/toSchemasV3.js';
|
|
2
|
+
export const toAdditionalPropertiesV3 = ({ additionalProperties, stackTrail, context }) => {
|
|
3
|
+
if (typeof additionalProperties === 'boolean') {
|
|
4
|
+
return additionalProperties;
|
|
5
|
+
}
|
|
6
|
+
if (additionalProperties === undefined) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
return toSchemaV3({ schema: additionalProperties, stackTrail, context });
|
|
10
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import type { ParseContextType } from '../../../context/parseTypes.js';
|
|
3
|
+
import { OasObject } from '../../../oas/object/Object.js';
|
|
4
|
+
import type { StackTrail } from '../../../context/StackTrail.js';
|
|
5
|
+
export type ToObjectArgs = {
|
|
6
|
+
value: OpenAPIV3.SchemaObject;
|
|
7
|
+
context: ParseContextType;
|
|
8
|
+
stackTrail: StackTrail;
|
|
9
|
+
};
|
|
10
|
+
export declare const toObject: ({ value, context, stackTrail }: ToObjectArgs) => OasObject;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { OasObject } from '../../../oas/object/Object.js';
|
|
2
|
+
import { toOptionalSchemasV3 } from '../schema/toSchemasV3.js';
|
|
3
|
+
import { toAdditionalPropertiesV3 } from './toAdditionalPropertiesV3.js';
|
|
4
|
+
import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
|
|
5
|
+
import { parseNullable } from '../_helpers/parseNullable.js';
|
|
6
|
+
import { parseEnum } from '../_helpers/parseEnum.js';
|
|
7
|
+
import { parseExample } from '../_helpers/parseExample.js';
|
|
8
|
+
import { parseDefault } from '../_helpers/parseDefault.js';
|
|
9
|
+
import { toExternalDocs } from '../externalDocs/toExternalDocs.js';
|
|
10
|
+
export const toObject = ({ value, context, stackTrail }) => {
|
|
11
|
+
const { nullable, value: valueWithoutNullable } = parseNullable({
|
|
12
|
+
value,
|
|
13
|
+
context,
|
|
14
|
+
stackTrail
|
|
15
|
+
});
|
|
16
|
+
const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
|
|
17
|
+
const example = parseExample({
|
|
18
|
+
value: unparsedExample,
|
|
19
|
+
context,
|
|
20
|
+
parent: valueWithoutNullable,
|
|
21
|
+
nullable,
|
|
22
|
+
check: isObject,
|
|
23
|
+
toMessage: item => `Removed invalid example. Expected "object", got: ${item}`,
|
|
24
|
+
stackTrail
|
|
25
|
+
});
|
|
26
|
+
const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
|
|
27
|
+
const enums = parseEnum({
|
|
28
|
+
value: unparsedEnums,
|
|
29
|
+
nullable,
|
|
30
|
+
parent: valueWithoutExample,
|
|
31
|
+
context,
|
|
32
|
+
stackTrail,
|
|
33
|
+
check: isObject,
|
|
34
|
+
toMessage: item => `Removed invalid enum. Expected "object", got: ${item}`
|
|
35
|
+
});
|
|
36
|
+
const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
|
|
37
|
+
const defaultValue = parseDefault({
|
|
38
|
+
value: unparsedDefaultValue,
|
|
39
|
+
context,
|
|
40
|
+
parent: valueWithoutEnums,
|
|
41
|
+
nullable,
|
|
42
|
+
check: isObject,
|
|
43
|
+
toMessage: item => `Removed invalid default. Expected "object", got: ${item}`,
|
|
44
|
+
stackTrail
|
|
45
|
+
});
|
|
46
|
+
return toParsedObject({
|
|
47
|
+
context,
|
|
48
|
+
nullable,
|
|
49
|
+
example,
|
|
50
|
+
enums,
|
|
51
|
+
defaultValue,
|
|
52
|
+
value: valueWithoutDefault,
|
|
53
|
+
stackTrail
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const toParsedObject = ({ context, stackTrail, nullable, example, enums, defaultValue, value }) => {
|
|
57
|
+
const { type: _type, title, description, externalDocs, deprecated, properties, required, maxProperties, minProperties, additionalProperties, readOnly, writeOnly, ...skipped } = value;
|
|
58
|
+
const extensionFields = toSpecificationExtensionsV3({
|
|
59
|
+
skipped,
|
|
60
|
+
parent: value,
|
|
61
|
+
context,
|
|
62
|
+
stackTrail,
|
|
63
|
+
parentType: 'schema:object'
|
|
64
|
+
});
|
|
65
|
+
return context.withStackTrail(stackTrail, () => new OasObject({
|
|
66
|
+
title,
|
|
67
|
+
description,
|
|
68
|
+
externalDocs: stackTrail.trace('externalDocs', st => toExternalDocs({ externalDocs, stackTrail: st, context })),
|
|
69
|
+
nullable,
|
|
70
|
+
example,
|
|
71
|
+
enums,
|
|
72
|
+
properties: stackTrail.trace('properties', st => toOptionalSchemasV3({
|
|
73
|
+
schemas: properties,
|
|
74
|
+
stackTrail: st,
|
|
75
|
+
context
|
|
76
|
+
})),
|
|
77
|
+
required,
|
|
78
|
+
maxProperties,
|
|
79
|
+
minProperties,
|
|
80
|
+
additionalProperties: stackTrail.trace('additionalProperties', st => toAdditionalPropertiesV3({ additionalProperties, stackTrail: st, context })),
|
|
81
|
+
extensionFields,
|
|
82
|
+
default: defaultValue,
|
|
83
|
+
deprecated,
|
|
84
|
+
readOnly,
|
|
85
|
+
writeOnly
|
|
86
|
+
}, context));
|
|
87
|
+
};
|
|
88
|
+
const isObject = (value) => {
|
|
89
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
90
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
+
import type { Method } from '../../../types/Method.js';
|
|
3
|
+
import type { ParseContextType } from '../../../context/parseTypes.js';
|
|
4
|
+
import { OasOperation } from '../../../oas/operation/Operation.js';
|
|
5
|
+
import type { OasPathItem } from '../../../oas/pathItem/PathItem.js';
|
|
6
|
+
import type { StackTrail } from '../../../context/StackTrail.js';
|
|
7
|
+
type OperationInfo = {
|
|
8
|
+
method: Method;
|
|
9
|
+
path: string;
|
|
10
|
+
pathItem: OasPathItem | undefined;
|
|
11
|
+
};
|
|
12
|
+
export type ToOperationV3Args = {
|
|
13
|
+
operation: OpenAPIV3.OperationObject;
|
|
14
|
+
operationInfo: OperationInfo;
|
|
15
|
+
stackTrail: StackTrail;
|
|
16
|
+
context: ParseContextType;
|
|
17
|
+
};
|
|
18
|
+
export declare const toOperationV3: ({ operation, operationInfo, stackTrail, context }: ToOperationV3Args) => OasOperation;
|
|
19
|
+
export type ToOperationsV3Args = {
|
|
20
|
+
paths: OpenAPIV3.PathsObject | undefined;
|
|
21
|
+
stackTrail: StackTrail;
|
|
22
|
+
context: ParseContextType;
|
|
23
|
+
};
|
|
24
|
+
export declare const toOperationsV3: ({ paths, stackTrail, context }: ToOperationsV3Args) => OasOperation[];
|
|
25
|
+
export {};
|