@speclynx/apidom-ns-openapi-2 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/package.json +8 -9
- package/src/elements/Contact.cjs +33 -0
- package/src/elements/Contact.mjs +30 -0
- package/src/elements/Contact.ts +42 -0
- package/src/elements/Definitions.cjs +15 -0
- package/src/elements/Definitions.mjs +12 -0
- package/src/elements/Definitions.ts +13 -0
- package/src/elements/Example.cjs +15 -0
- package/src/elements/Example.mjs +12 -0
- package/src/elements/Example.ts +13 -0
- package/src/elements/ExternalDocumentation.cjs +27 -0
- package/src/elements/ExternalDocumentation.mjs +24 -0
- package/src/elements/ExternalDocumentation.ts +34 -0
- package/src/elements/Header.cjs +185 -0
- package/src/elements/Header.mjs +182 -0
- package/src/elements/Header.ts +261 -0
- package/src/elements/Headers.cjs +15 -0
- package/src/elements/Headers.mjs +12 -0
- package/src/elements/Headers.ts +13 -0
- package/src/elements/Info.cjs +52 -0
- package/src/elements/Info.mjs +48 -0
- package/src/elements/Info.ts +70 -0
- package/src/elements/Items.cjs +190 -0
- package/src/elements/Items.mjs +187 -0
- package/src/elements/Items.ts +264 -0
- package/src/elements/License.cjs +27 -0
- package/src/elements/License.mjs +24 -0
- package/src/elements/License.ts +34 -0
- package/src/elements/Operation.cjs +78 -0
- package/src/elements/Operation.mjs +74 -0
- package/src/elements/Operation.ts +106 -0
- package/src/elements/Parameter.cjs +230 -0
- package/src/elements/Parameter.mjs +226 -0
- package/src/elements/Parameter.ts +326 -0
- package/src/elements/ParametersDefinitions.cjs +15 -0
- package/src/elements/ParametersDefinitions.mjs +12 -0
- package/src/elements/ParametersDefinitions.ts +13 -0
- package/src/elements/PathItem.cjs +69 -0
- package/src/elements/PathItem.mjs +65 -0
- package/src/elements/PathItem.ts +93 -0
- package/src/elements/Paths.cjs +15 -0
- package/src/elements/Paths.mjs +12 -0
- package/src/elements/Paths.ts +13 -0
- package/src/elements/Reference.cjs +22 -0
- package/src/elements/Reference.mjs +19 -0
- package/src/elements/Reference.ts +27 -0
- package/src/elements/Response.cjs +39 -0
- package/src/elements/Response.mjs +35 -0
- package/src/elements/Response.ts +54 -0
- package/src/elements/Responses.cjs +21 -0
- package/src/elements/Responses.mjs +17 -0
- package/src/elements/Responses.ts +24 -0
- package/src/elements/ResponsesDefinitions.cjs +15 -0
- package/src/elements/ResponsesDefinitions.mjs +12 -0
- package/src/elements/ResponsesDefinitions.ts +13 -0
- package/src/elements/Schema.cjs +151 -0
- package/src/elements/Schema.mjs +147 -0
- package/src/elements/Schema.ts +204 -0
- package/src/elements/Scopes.cjs +15 -0
- package/src/elements/Scopes.mjs +12 -0
- package/src/elements/Scopes.ts +13 -0
- package/src/elements/SecurityDefinitions.cjs +15 -0
- package/src/elements/SecurityDefinitions.mjs +12 -0
- package/src/elements/SecurityDefinitions.ts +13 -0
- package/src/elements/SecurityRequirement.cjs +15 -0
- package/src/elements/SecurityRequirement.mjs +12 -0
- package/src/elements/SecurityRequirement.ts +13 -0
- package/src/elements/SecurityScheme.cjs +63 -0
- package/src/elements/SecurityScheme.mjs +60 -0
- package/src/elements/SecurityScheme.ts +83 -0
- package/src/elements/Swagger.cjs +106 -0
- package/src/elements/Swagger.mjs +102 -0
- package/src/elements/Swagger.ts +149 -0
- package/src/elements/SwaggerVersion.cjs +17 -0
- package/src/elements/SwaggerVersion.mjs +14 -0
- package/src/elements/SwaggerVersion.ts +15 -0
- package/src/elements/Tag.cjs +33 -0
- package/src/elements/Tag.mjs +29 -0
- package/src/elements/Tag.ts +44 -0
- package/src/elements/Xml.cjs +45 -0
- package/src/elements/Xml.mjs +42 -0
- package/src/elements/Xml.ts +59 -0
- package/src/elements/nces/OperationConsumes.cjs +16 -0
- package/src/elements/nces/OperationConsumes.mjs +13 -0
- package/src/elements/nces/OperationConsumes.ts +15 -0
- package/src/elements/nces/OperationParameters.cjs +17 -0
- package/src/elements/nces/OperationParameters.mjs +14 -0
- package/src/elements/nces/OperationParameters.ts +16 -0
- package/src/elements/nces/OperationProduces.cjs +16 -0
- package/src/elements/nces/OperationProduces.mjs +13 -0
- package/src/elements/nces/OperationProduces.ts +15 -0
- package/src/elements/nces/OperationSchemes.cjs +16 -0
- package/src/elements/nces/OperationSchemes.mjs +13 -0
- package/src/elements/nces/OperationSchemes.ts +15 -0
- package/src/elements/nces/OperationSecurity.cjs +17 -0
- package/src/elements/nces/OperationSecurity.mjs +14 -0
- package/src/elements/nces/OperationSecurity.ts +16 -0
- package/src/elements/nces/OperationTags.cjs +17 -0
- package/src/elements/nces/OperationTags.mjs +14 -0
- package/src/elements/nces/OperationTags.ts +16 -0
- package/src/elements/nces/PathItemParameters.cjs +17 -0
- package/src/elements/nces/PathItemParameters.mjs +14 -0
- package/src/elements/nces/PathItemParameters.ts +16 -0
- package/src/elements/nces/SwaggerConsumes.cjs +16 -0
- package/src/elements/nces/SwaggerConsumes.mjs +13 -0
- package/src/elements/nces/SwaggerConsumes.ts +15 -0
- package/src/elements/nces/SwaggerProduces.cjs +16 -0
- package/src/elements/nces/SwaggerProduces.mjs +13 -0
- package/src/elements/nces/SwaggerProduces.ts +15 -0
- package/src/elements/nces/SwaggerSchemes.cjs +16 -0
- package/src/elements/nces/SwaggerSchemes.mjs +13 -0
- package/src/elements/nces/SwaggerSchemes.ts +15 -0
- package/src/elements/nces/SwaggerSecurity.cjs +17 -0
- package/src/elements/nces/SwaggerSecurity.mjs +14 -0
- package/src/elements/nces/SwaggerSecurity.ts +16 -0
- package/src/elements/nces/SwaggerTags.cjs +16 -0
- package/src/elements/nces/SwaggerTags.mjs +13 -0
- package/src/elements/nces/SwaggerTags.ts +15 -0
- package/src/index.cjs +156 -0
- package/src/index.mjs +32 -0
- package/src/index.ts +368 -0
- package/src/media-types.cjs +34 -0
- package/src/media-types.mjs +30 -0
- package/src/media-types.ts +42 -0
- package/src/namespace.cjs +71 -0
- package/src/namespace.mjs +66 -0
- package/src/namespace.ts +70 -0
- package/src/predicates.cjs +193 -0
- package/src/predicates.mjs +161 -0
- package/src/predicates.ts +194 -0
- package/src/refractor/index.cjs +316 -0
- package/src/refractor/index.mjs +283 -0
- package/src/refractor/index.ts +330 -0
- package/src/refractor/inspect.cjs +157 -0
- package/src/refractor/inspect.mjs +126 -0
- package/src/refractor/inspect.ts +181 -0
- package/src/refractor/plugins/replace-empty-element.cjs +366 -0
- package/src/refractor/plugins/replace-empty-element.mjs +358 -0
- package/src/refractor/plugins/replace-empty-element.ts +389 -0
- package/src/refractor/predicates.cjs +26 -0
- package/src/refractor/predicates.mjs +21 -0
- package/src/refractor/predicates.ts +29 -0
- package/src/refractor/specification.cjs +519 -0
- package/src/refractor/specification.mjs +513 -0
- package/src/refractor/specification.ts +444 -0
- package/src/refractor/toolbox.cjs +28 -0
- package/src/refractor/toolbox.mjs +21 -0
- package/src/refractor/toolbox.ts +24 -0
- package/src/refractor/visitors/FallbackVisitor.cjs +24 -0
- package/src/refractor/visitors/FallbackVisitor.mjs +18 -0
- package/src/refractor/visitors/FallbackVisitor.ts +25 -0
- package/src/refractor/visitors/SpecificationExtensionVisitor.cjs +18 -0
- package/src/refractor/visitors/SpecificationExtensionVisitor.mjs +13 -0
- package/src/refractor/visitors/SpecificationExtensionVisitor.ts +22 -0
- package/src/refractor/visitors/SpecificationVisitor.cjs +75 -0
- package/src/refractor/visitors/SpecificationVisitor.mjs +69 -0
- package/src/refractor/visitors/SpecificationVisitor.ts +83 -0
- package/src/refractor/visitors/Visitor.cjs +36 -0
- package/src/refractor/visitors/Visitor.mjs +33 -0
- package/src/refractor/visitors/Visitor.ts +47 -0
- package/src/refractor/visitors/generics/AlternatingVisitor.cjs +42 -0
- package/src/refractor/visitors/generics/AlternatingVisitor.mjs +35 -0
- package/src/refractor/visitors/generics/AlternatingVisitor.ts +45 -0
- package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +73 -0
- package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +66 -0
- package/src/refractor/visitors/generics/FixedFieldsVisitor.ts +109 -0
- package/src/refractor/visitors/generics/MapVisitor.cjs +21 -0
- package/src/refractor/visitors/generics/MapVisitor.mjs +15 -0
- package/src/refractor/visitors/generics/MapVisitor.ts +25 -0
- package/src/refractor/visitors/generics/MixedFieldsVisitor.cjs +67 -0
- package/src/refractor/visitors/generics/MixedFieldsVisitor.mjs +61 -0
- package/src/refractor/visitors/generics/MixedFieldsVisitor.ts +77 -0
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +72 -0
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +66 -0
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.ts +99 -0
- package/src/refractor/visitors/open-api-2/BasePathVisitor.cjs +16 -0
- package/src/refractor/visitors/open-api-2/BasePathVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-2/BasePathVisitor.ts +20 -0
- package/src/refractor/visitors/open-api-2/ConsumesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/ConsumesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/ConsumesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/HostVisitor.cjs +16 -0
- package/src/refractor/visitors/open-api-2/HostVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-2/HostVisitor.ts +20 -0
- package/src/refractor/visitors/open-api-2/ProducesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/ProducesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/ProducesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/SchemesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/SchemesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/SchemesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/SecurityVisitor.cjs +27 -0
- package/src/refractor/visitors/open-api-2/SecurityVisitor.mjs +22 -0
- package/src/refractor/visitors/open-api-2/SecurityVisitor.ts +34 -0
- package/src/refractor/visitors/open-api-2/SwaggerVisitor.cjs +21 -0
- package/src/refractor/visitors/open-api-2/SwaggerVisitor.mjs +16 -0
- package/src/refractor/visitors/open-api-2/SwaggerVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/TagsVisitor.cjs +27 -0
- package/src/refractor/visitors/open-api-2/TagsVisitor.mjs +22 -0
- package/src/refractor/visitors/open-api-2/TagsVisitor.ts +34 -0
- package/src/refractor/visitors/open-api-2/bases.cjs +72 -0
- package/src/refractor/visitors/open-api-2/bases.mjs +67 -0
- package/src/refractor/visitors/open-api-2/bases.ts +82 -0
- package/src/refractor/visitors/open-api-2/contact/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/contact/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/contact/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/definitions/index.cjs +31 -0
- package/src/refractor/visitors/open-api-2/definitions/index.mjs +26 -0
- package/src/refractor/visitors/open-api-2/definitions/index.ts +48 -0
- package/src/refractor/visitors/open-api-2/example/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/example/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/example/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/external-documentation/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/external-documentation/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/external-documentation/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/header/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/header/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/header/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/headers/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/headers/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/headers/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/index.cjs +21 -0
- package/src/refractor/visitors/open-api-2/index.mjs +16 -0
- package/src/refractor/visitors/open-api-2/index.ts +28 -0
- package/src/refractor/visitors/open-api-2/info/VersionVisitor.cjs +17 -0
- package/src/refractor/visitors/open-api-2/info/VersionVisitor.mjs +12 -0
- package/src/refractor/visitors/open-api-2/info/VersionVisitor.ts +21 -0
- package/src/refractor/visitors/open-api-2/info/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/info/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/info/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/items/index.cjs +22 -0
- package/src/refractor/visitors/open-api-2/items/index.mjs +17 -0
- package/src/refractor/visitors/open-api-2/items/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/license/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/license/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/license/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/operation/ParametersVisitor.cjs +32 -0
- package/src/refractor/visitors/open-api-2/operation/ParametersVisitor.mjs +27 -0
- package/src/refractor/visitors/open-api-2/operation/ParametersVisitor.ts +44 -0
- package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/operation/SecurityVisitor.cjs +27 -0
- package/src/refractor/visitors/open-api-2/operation/SecurityVisitor.mjs +22 -0
- package/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts +34 -0
- package/src/refractor/visitors/open-api-2/operation/TagsVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/operation/TagsVisitor.mjs +18 -0
- package/src/refractor/visitors/open-api-2/operation/TagsVisitor.ts +29 -0
- package/src/refractor/visitors/open-api-2/operation/index.cjs +19 -0
- package/src/refractor/visitors/open-api-2/operation/index.mjs +14 -0
- package/src/refractor/visitors/open-api-2/operation/index.ts +24 -0
- package/src/refractor/visitors/open-api-2/parameter/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/parameter/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/parameter/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/parameters-definitions/index.cjs +19 -0
- package/src/refractor/visitors/open-api-2/parameters-definitions/index.mjs +14 -0
- package/src/refractor/visitors/open-api-2/parameters-definitions/index.ts +24 -0
- package/src/refractor/visitors/open-api-2/path-item/$RefVisitor.cjs +16 -0
- package/src/refractor/visitors/open-api-2/path-item/$RefVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-2/path-item/$RefVisitor.ts +20 -0
- package/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.cjs +32 -0
- package/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.mjs +27 -0
- package/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.ts +44 -0
- package/src/refractor/visitors/open-api-2/path-item/index.cjs +39 -0
- package/src/refractor/visitors/open-api-2/path-item/index.mjs +34 -0
- package/src/refractor/visitors/open-api-2/path-item/index.ts +48 -0
- package/src/refractor/visitors/open-api-2/paths/index.cjs +37 -0
- package/src/refractor/visitors/open-api-2/paths/index.mjs +32 -0
- package/src/refractor/visitors/open-api-2/paths/index.ts +48 -0
- package/src/refractor/visitors/open-api-2/reference/$RefVisitor.cjs +16 -0
- package/src/refractor/visitors/open-api-2/reference/$RefVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-2/reference/$RefVisitor.ts +20 -0
- package/src/refractor/visitors/open-api-2/reference/index.cjs +29 -0
- package/src/refractor/visitors/open-api-2/reference/index.mjs +24 -0
- package/src/refractor/visitors/open-api-2/reference/index.ts +38 -0
- package/src/refractor/visitors/open-api-2/response/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/response/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/response/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/responses/DefaultVisitor.cjs +36 -0
- package/src/refractor/visitors/open-api-2/responses/DefaultVisitor.mjs +31 -0
- package/src/refractor/visitors/open-api-2/responses/DefaultVisitor.ts +36 -0
- package/src/refractor/visitors/open-api-2/responses/index.cjs +45 -0
- package/src/refractor/visitors/open-api-2/responses/index.mjs +40 -0
- package/src/refractor/visitors/open-api-2/responses/index.ts +64 -0
- package/src/refractor/visitors/open-api-2/responses-definitions/index.cjs +19 -0
- package/src/refractor/visitors/open-api-2/responses-definitions/index.mjs +14 -0
- package/src/refractor/visitors/open-api-2/responses-definitions/index.ts +24 -0
- package/src/refractor/visitors/open-api-2/schema/AllOfVisitor.cjs +24 -0
- package/src/refractor/visitors/open-api-2/schema/AllOfVisitor.mjs +20 -0
- package/src/refractor/visitors/open-api-2/schema/AllOfVisitor.ts +35 -0
- package/src/refractor/visitors/open-api-2/schema/ItemsVisitor.cjs +26 -0
- package/src/refractor/visitors/open-api-2/schema/ItemsVisitor.mjs +23 -0
- package/src/refractor/visitors/open-api-2/schema/ItemsVisitor.ts +38 -0
- package/src/refractor/visitors/open-api-2/schema/PropertiesVisitor.cjs +24 -0
- package/src/refractor/visitors/open-api-2/schema/PropertiesVisitor.mjs +20 -0
- package/src/refractor/visitors/open-api-2/schema/PropertiesVisitor.ts +35 -0
- package/src/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.cjs +23 -0
- package/src/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.mjs +19 -0
- package/src/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.ts +37 -0
- package/src/refractor/visitors/open-api-2/schema/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/schema/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/schema/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/scopes/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/scopes/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/scopes/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/security-definitions/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/security-definitions/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/security-definitions/index.ts +24 -0
- package/src/refractor/visitors/open-api-2/security-requirement/index.cjs +19 -0
- package/src/refractor/visitors/open-api-2/security-requirement/index.mjs +14 -0
- package/src/refractor/visitors/open-api-2/security-requirement/index.ts +24 -0
- package/src/refractor/visitors/open-api-2/security-scheme/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/security-scheme/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/security-scheme/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/tag/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/tag/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/tag/index.ts +27 -0
- package/src/refractor/visitors/open-api-2/xml/index.cjs +20 -0
- package/src/refractor/visitors/open-api-2/xml/index.mjs +15 -0
- package/src/refractor/visitors/open-api-2/xml/index.ts +27 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isStringElement,
|
|
3
|
+
MemberElement,
|
|
4
|
+
Element,
|
|
5
|
+
ObjectElement,
|
|
6
|
+
cloneDeep,
|
|
7
|
+
} from '@speclynx/apidom-datamodel';
|
|
8
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
9
|
+
import { Path } from '@speclynx/apidom-traverse';
|
|
10
|
+
|
|
11
|
+
import SpecificationVisitor, { SpecificationVisitorOptions } from '../SpecificationVisitor.ts';
|
|
12
|
+
import { isSwaggerExtension } from '../../predicates.ts';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export type SpecPath<T = string[]> = (element: unknown) => T;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export interface FixedFieldsVisitorOptions extends SpecificationVisitorOptions {
|
|
23
|
+
readonly specPath: SpecPath;
|
|
24
|
+
readonly ignoredFields?: string[];
|
|
25
|
+
readonly canSupportSpecificationExtensions?: boolean;
|
|
26
|
+
readonly specificationExtensionPredicate?: typeof isSwaggerExtension;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
class FixedFieldsVisitor extends SpecificationVisitor {
|
|
33
|
+
protected specPath: SpecPath;
|
|
34
|
+
|
|
35
|
+
protected ignoredFields: string[];
|
|
36
|
+
|
|
37
|
+
protected canSupportSpecificationExtensions: boolean = true;
|
|
38
|
+
|
|
39
|
+
protected specificationExtensionPredicate = isSwaggerExtension;
|
|
40
|
+
|
|
41
|
+
constructor({
|
|
42
|
+
specPath,
|
|
43
|
+
ignoredFields,
|
|
44
|
+
canSupportSpecificationExtensions,
|
|
45
|
+
specificationExtensionPredicate,
|
|
46
|
+
...rest
|
|
47
|
+
}: FixedFieldsVisitorOptions) {
|
|
48
|
+
super({ ...rest });
|
|
49
|
+
this.specPath = specPath;
|
|
50
|
+
this.ignoredFields = ignoredFields || [];
|
|
51
|
+
|
|
52
|
+
if (typeof canSupportSpecificationExtensions === 'boolean') {
|
|
53
|
+
this.canSupportSpecificationExtensions = canSupportSpecificationExtensions;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (typeof specificationExtensionPredicate === 'function') {
|
|
57
|
+
this.specificationExtensionPredicate = specificationExtensionPredicate;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
ObjectElement(path: Path<ObjectElement>) {
|
|
62
|
+
const objectElement = path.node;
|
|
63
|
+
const specPath = this.specPath(objectElement);
|
|
64
|
+
const fields = this.retrieveFixedFields(specPath);
|
|
65
|
+
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
objectElement.forEach((value: Element, key: Element, memberElement: MemberElement) => {
|
|
68
|
+
const keyValue = toValue(key) as string;
|
|
69
|
+
if (
|
|
70
|
+
isStringElement(key) &&
|
|
71
|
+
fields.includes(keyValue) &&
|
|
72
|
+
!this.ignoredFields.includes(keyValue)
|
|
73
|
+
) {
|
|
74
|
+
const fixedFieldElement = this.toRefractedElement(
|
|
75
|
+
[...specPath, 'fixedFields', keyValue],
|
|
76
|
+
value,
|
|
77
|
+
);
|
|
78
|
+
const newMemberElement = new MemberElement(
|
|
79
|
+
this.consume ? key : cloneDeep(key),
|
|
80
|
+
fixedFieldElement,
|
|
81
|
+
);
|
|
82
|
+
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
83
|
+
(this.element.content as Element[]).push(newMemberElement);
|
|
84
|
+
// consume: release processed generic subtree
|
|
85
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen)
|
|
86
|
+
memberElement.value = undefined;
|
|
87
|
+
} else if (
|
|
88
|
+
this.canSupportSpecificationExtensions &&
|
|
89
|
+
this.specificationExtensionPredicate(memberElement)
|
|
90
|
+
) {
|
|
91
|
+
const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
|
|
92
|
+
(this.element.content as Element[]).push(extensionElement);
|
|
93
|
+
// consume: release processed generic subtree
|
|
94
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen)
|
|
95
|
+
memberElement.value = undefined;
|
|
96
|
+
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
97
|
+
(this.element.content as Element[]).push(
|
|
98
|
+
this.consume ? memberElement : cloneDeep(memberElement),
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
this.copyMetaAndAttributes(objectElement, this.element);
|
|
104
|
+
|
|
105
|
+
path.stop();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export default FixedFieldsVisitor;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
7
|
+
var _PatternedFieldsVisitor = _interopRequireDefault(require("./PatternedFieldsVisitor.cjs"));
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
class MapVisitor extends _PatternedFieldsVisitor.default {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super(options);
|
|
18
|
+
this.fieldPatternPredicate = _ramdaAdjunct.isNonEmptyString;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
var _default = exports.default = MapVisitor;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isNonEmptyString } from 'ramda-adjunct';
|
|
2
|
+
import PatternedFieldsVisitor from "./PatternedFieldsVisitor.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
class MapVisitor extends PatternedFieldsVisitor {
|
|
10
|
+
constructor(options) {
|
|
11
|
+
super(options);
|
|
12
|
+
this.fieldPatternPredicate = isNonEmptyString;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export default MapVisitor;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isNonEmptyString } from 'ramda-adjunct';
|
|
2
|
+
|
|
3
|
+
import PatternedFieldsVisitor, {
|
|
4
|
+
PatternedFieldsVisitorOptions,
|
|
5
|
+
SpecPath,
|
|
6
|
+
} from './PatternedFieldsVisitor.ts';
|
|
7
|
+
|
|
8
|
+
export type { SpecPath };
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export interface MapVisitorOptions extends PatternedFieldsVisitorOptions {}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
class MapVisitor extends PatternedFieldsVisitor {
|
|
19
|
+
constructor(options: MapVisitorOptions) {
|
|
20
|
+
super(options);
|
|
21
|
+
this.fieldPatternPredicate = isNonEmptyString;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default MapVisitor;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = exports.MixedFieldsVisitorBase = void 0;
|
|
6
|
+
var _tsMixer = require("ts-mixer");
|
|
7
|
+
var _ramda = require("ramda");
|
|
8
|
+
var _apidomCore = require("@speclynx/apidom-core");
|
|
9
|
+
var _FixedFieldsVisitor = _interopRequireDefault(require("./FixedFieldsVisitor.cjs"));
|
|
10
|
+
var _PatternedFieldsVisitor = _interopRequireDefault(require("./PatternedFieldsVisitor.cjs"));
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Base class for MixedFieldsVisitor combining FixedFieldsVisitor and PatternedFieldsVisitor.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
const MixedFieldsVisitorBase = exports.MixedFieldsVisitorBase = (0, _tsMixer.Mixin)(_FixedFieldsVisitor.default, _PatternedFieldsVisitor.default);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
class MixedFieldsVisitor extends MixedFieldsVisitorBase {
|
|
25
|
+
specPathFixedFields;
|
|
26
|
+
specPathPatternedFields;
|
|
27
|
+
constructor({
|
|
28
|
+
specPathFixedFields,
|
|
29
|
+
specPathPatternedFields,
|
|
30
|
+
...rest
|
|
31
|
+
}) {
|
|
32
|
+
super({
|
|
33
|
+
...rest
|
|
34
|
+
});
|
|
35
|
+
this.specPathFixedFields = specPathFixedFields;
|
|
36
|
+
this.specPathPatternedFields = specPathPatternedFields;
|
|
37
|
+
}
|
|
38
|
+
ObjectElement(path) {
|
|
39
|
+
const objectElement = path.node;
|
|
40
|
+
const {
|
|
41
|
+
specPath,
|
|
42
|
+
ignoredFields
|
|
43
|
+
} = this;
|
|
44
|
+
try {
|
|
45
|
+
this.specPath = this.specPathFixedFields;
|
|
46
|
+
const fixedFields = this.retrieveFixedFields(this.specPath(objectElement));
|
|
47
|
+
// let FixedFieldsVisitor only process fixed fields and leave rest to PatternedFieldsVisitor
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
this.ignoredFields = [...ignoredFields, ...(0, _ramda.difference)(objectElement.keys(), fixedFields)];
|
|
50
|
+
_FixedFieldsVisitor.default.prototype.ObjectElement.call(this, path);
|
|
51
|
+
this.specPath = this.specPathPatternedFields;
|
|
52
|
+
this.ignoredFields = fixedFields;
|
|
53
|
+
_PatternedFieldsVisitor.default.prototype.ObjectElement.call(this, path);
|
|
54
|
+
|
|
55
|
+
// reorder this.element members by original objectElement keys
|
|
56
|
+
const objectElementKeys = objectElement.keys();
|
|
57
|
+
this.element.content.sort((a, b) => {
|
|
58
|
+
return objectElementKeys.indexOf((0, _apidomCore.toValue)(a.key)) - objectElementKeys.indexOf((0, _apidomCore.toValue)(b.key));
|
|
59
|
+
});
|
|
60
|
+
} catch (e) {
|
|
61
|
+
this.specPath = specPath;
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
path.stop();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
var _default = exports.default = MixedFieldsVisitor;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Mixin } from 'ts-mixer';
|
|
2
|
+
import { difference } from 'ramda';
|
|
3
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
4
|
+
import FixedFieldsVisitor from "./FixedFieldsVisitor.mjs";
|
|
5
|
+
import PatternedFieldsVisitor from "./PatternedFieldsVisitor.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Base class for MixedFieldsVisitor combining FixedFieldsVisitor and PatternedFieldsVisitor.
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export const MixedFieldsVisitorBase = Mixin(FixedFieldsVisitor, PatternedFieldsVisitor);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
class MixedFieldsVisitor extends MixedFieldsVisitorBase {
|
|
19
|
+
specPathFixedFields;
|
|
20
|
+
specPathPatternedFields;
|
|
21
|
+
constructor({
|
|
22
|
+
specPathFixedFields,
|
|
23
|
+
specPathPatternedFields,
|
|
24
|
+
...rest
|
|
25
|
+
}) {
|
|
26
|
+
super({
|
|
27
|
+
...rest
|
|
28
|
+
});
|
|
29
|
+
this.specPathFixedFields = specPathFixedFields;
|
|
30
|
+
this.specPathPatternedFields = specPathPatternedFields;
|
|
31
|
+
}
|
|
32
|
+
ObjectElement(path) {
|
|
33
|
+
const objectElement = path.node;
|
|
34
|
+
const {
|
|
35
|
+
specPath,
|
|
36
|
+
ignoredFields
|
|
37
|
+
} = this;
|
|
38
|
+
try {
|
|
39
|
+
this.specPath = this.specPathFixedFields;
|
|
40
|
+
const fixedFields = this.retrieveFixedFields(this.specPath(objectElement));
|
|
41
|
+
// let FixedFieldsVisitor only process fixed fields and leave rest to PatternedFieldsVisitor
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
this.ignoredFields = [...ignoredFields, ...difference(objectElement.keys(), fixedFields)];
|
|
44
|
+
FixedFieldsVisitor.prototype.ObjectElement.call(this, path);
|
|
45
|
+
this.specPath = this.specPathPatternedFields;
|
|
46
|
+
this.ignoredFields = fixedFields;
|
|
47
|
+
PatternedFieldsVisitor.prototype.ObjectElement.call(this, path);
|
|
48
|
+
|
|
49
|
+
// reorder this.element members by original objectElement keys
|
|
50
|
+
const objectElementKeys = objectElement.keys();
|
|
51
|
+
this.element.content.sort((a, b) => {
|
|
52
|
+
return objectElementKeys.indexOf(toValue(a.key)) - objectElementKeys.indexOf(toValue(b.key));
|
|
53
|
+
});
|
|
54
|
+
} catch (e) {
|
|
55
|
+
this.specPath = specPath;
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
58
|
+
path.stop();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export default MixedFieldsVisitor;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Mixin } from 'ts-mixer';
|
|
2
|
+
import { difference } from 'ramda';
|
|
3
|
+
import { ObjectElement, MemberElement, Element } from '@speclynx/apidom-datamodel';
|
|
4
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
5
|
+
import { Path } from '@speclynx/apidom-traverse';
|
|
6
|
+
|
|
7
|
+
import FixedFieldsVisitor, { SpecPath } from './FixedFieldsVisitor.ts';
|
|
8
|
+
import PatternedFieldsVisitor, { PatternedFieldsVisitorOptions } from './PatternedFieldsVisitor.ts';
|
|
9
|
+
|
|
10
|
+
export type { SpecPath };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export interface MixedFieldsVisitorOptions extends PatternedFieldsVisitorOptions {
|
|
16
|
+
readonly specPathFixedFields: SpecPath;
|
|
17
|
+
readonly specPathPatternedFields: SpecPath;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Base class for MixedFieldsVisitor combining FixedFieldsVisitor and PatternedFieldsVisitor.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export const MixedFieldsVisitorBase = Mixin(FixedFieldsVisitor, PatternedFieldsVisitor);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
class MixedFieldsVisitor extends MixedFieldsVisitorBase {
|
|
30
|
+
protected readonly specPathFixedFields: SpecPath;
|
|
31
|
+
|
|
32
|
+
protected readonly specPathPatternedFields: SpecPath;
|
|
33
|
+
|
|
34
|
+
constructor({
|
|
35
|
+
specPathFixedFields,
|
|
36
|
+
specPathPatternedFields,
|
|
37
|
+
...rest
|
|
38
|
+
}: MixedFieldsVisitorOptions) {
|
|
39
|
+
super({ ...rest });
|
|
40
|
+
this.specPathFixedFields = specPathFixedFields;
|
|
41
|
+
this.specPathPatternedFields = specPathPatternedFields;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
ObjectElement(path: Path<ObjectElement>) {
|
|
45
|
+
const objectElement = path.node;
|
|
46
|
+
const { specPath, ignoredFields } = this;
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
this.specPath = this.specPathFixedFields;
|
|
50
|
+
const fixedFields = this.retrieveFixedFields(this.specPath(objectElement));
|
|
51
|
+
// let FixedFieldsVisitor only process fixed fields and leave rest to PatternedFieldsVisitor
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
this.ignoredFields = [...ignoredFields, ...difference(objectElement.keys(), fixedFields)];
|
|
54
|
+
FixedFieldsVisitor.prototype.ObjectElement.call(this, path);
|
|
55
|
+
|
|
56
|
+
this.specPath = this.specPathPatternedFields;
|
|
57
|
+
this.ignoredFields = fixedFields;
|
|
58
|
+
PatternedFieldsVisitor.prototype.ObjectElement.call(this, path);
|
|
59
|
+
|
|
60
|
+
// reorder this.element members by original objectElement keys
|
|
61
|
+
const objectElementKeys = objectElement.keys() as string[];
|
|
62
|
+
(this.element.content as Element[]).sort((a: unknown, b: unknown) => {
|
|
63
|
+
return (
|
|
64
|
+
objectElementKeys.indexOf(toValue((a as MemberElement).key) as string) -
|
|
65
|
+
objectElementKeys.indexOf(toValue((b as MemberElement).key) as string)
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
} catch (e) {
|
|
69
|
+
this.specPath = specPath;
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
path.stop();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export default MixedFieldsVisitor;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _ramda = require("ramda");
|
|
7
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
8
|
+
var _apidomCore = require("@speclynx/apidom-core");
|
|
9
|
+
var _SpecificationVisitor = _interopRequireDefault(require("../SpecificationVisitor.cjs"));
|
|
10
|
+
var _predicates = require("../../predicates.cjs");
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
class PatternedFieldsVisitor extends _SpecificationVisitor.default {
|
|
19
|
+
specPath;
|
|
20
|
+
ignoredFields;
|
|
21
|
+
fieldPatternPredicate = _ramda.F;
|
|
22
|
+
canSupportSpecificationExtensions = false;
|
|
23
|
+
specificationExtensionPredicate = _predicates.isSwaggerExtension;
|
|
24
|
+
constructor({
|
|
25
|
+
specPath,
|
|
26
|
+
ignoredFields,
|
|
27
|
+
fieldPatternPredicate,
|
|
28
|
+
canSupportSpecificationExtensions,
|
|
29
|
+
specificationExtensionPredicate,
|
|
30
|
+
...rest
|
|
31
|
+
}) {
|
|
32
|
+
super({
|
|
33
|
+
...rest
|
|
34
|
+
});
|
|
35
|
+
this.specPath = specPath;
|
|
36
|
+
this.ignoredFields = ignoredFields || [];
|
|
37
|
+
if (typeof fieldPatternPredicate === 'function') {
|
|
38
|
+
this.fieldPatternPredicate = fieldPatternPredicate;
|
|
39
|
+
}
|
|
40
|
+
if (typeof canSupportSpecificationExtensions === 'boolean') {
|
|
41
|
+
this.canSupportSpecificationExtensions = canSupportSpecificationExtensions;
|
|
42
|
+
}
|
|
43
|
+
if (typeof specificationExtensionPredicate === 'function') {
|
|
44
|
+
this.specificationExtensionPredicate = specificationExtensionPredicate;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ObjectElement(path) {
|
|
48
|
+
const objectElement = path.node;
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
objectElement.forEach((value, key, memberElement) => {
|
|
51
|
+
const keyValue = (0, _apidomCore.toValue)(key);
|
|
52
|
+
if (this.canSupportSpecificationExtensions && this.specificationExtensionPredicate(memberElement)) {
|
|
53
|
+
const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
|
|
54
|
+
this.element.content.push(extensionElement);
|
|
55
|
+
} else if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
56
|
+
const specPath = this.specPath(value);
|
|
57
|
+
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
58
|
+
const newMemberElement = new _apidomDatamodel.MemberElement(this.consume ? key : (0, _apidomDatamodel.cloneDeep)(key), patternedFieldElement);
|
|
59
|
+
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
60
|
+
newMemberElement.classes.push('patterned-field');
|
|
61
|
+
this.element.content.push(newMemberElement);
|
|
62
|
+
// consume: release processed generic subtree
|
|
63
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
64
|
+
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
65
|
+
this.element.content.push(this.consume ? memberElement : (0, _apidomDatamodel.cloneDeep)(memberElement));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
this.copyMetaAndAttributes(objectElement, this.element);
|
|
69
|
+
path.stop();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
var _default = exports.default = PatternedFieldsVisitor;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { F as stubFalse } from 'ramda';
|
|
2
|
+
import { MemberElement, cloneDeep } from '@speclynx/apidom-datamodel';
|
|
3
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
4
|
+
import SpecificationVisitor from "../SpecificationVisitor.mjs";
|
|
5
|
+
import { isSwaggerExtension } from "../../predicates.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
class PatternedFieldsVisitor extends SpecificationVisitor {
|
|
13
|
+
specPath;
|
|
14
|
+
ignoredFields;
|
|
15
|
+
fieldPatternPredicate = stubFalse;
|
|
16
|
+
canSupportSpecificationExtensions = false;
|
|
17
|
+
specificationExtensionPredicate = isSwaggerExtension;
|
|
18
|
+
constructor({
|
|
19
|
+
specPath,
|
|
20
|
+
ignoredFields,
|
|
21
|
+
fieldPatternPredicate,
|
|
22
|
+
canSupportSpecificationExtensions,
|
|
23
|
+
specificationExtensionPredicate,
|
|
24
|
+
...rest
|
|
25
|
+
}) {
|
|
26
|
+
super({
|
|
27
|
+
...rest
|
|
28
|
+
});
|
|
29
|
+
this.specPath = specPath;
|
|
30
|
+
this.ignoredFields = ignoredFields || [];
|
|
31
|
+
if (typeof fieldPatternPredicate === 'function') {
|
|
32
|
+
this.fieldPatternPredicate = fieldPatternPredicate;
|
|
33
|
+
}
|
|
34
|
+
if (typeof canSupportSpecificationExtensions === 'boolean') {
|
|
35
|
+
this.canSupportSpecificationExtensions = canSupportSpecificationExtensions;
|
|
36
|
+
}
|
|
37
|
+
if (typeof specificationExtensionPredicate === 'function') {
|
|
38
|
+
this.specificationExtensionPredicate = specificationExtensionPredicate;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ObjectElement(path) {
|
|
42
|
+
const objectElement = path.node;
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
objectElement.forEach((value, key, memberElement) => {
|
|
45
|
+
const keyValue = toValue(key);
|
|
46
|
+
if (this.canSupportSpecificationExtensions && this.specificationExtensionPredicate(memberElement)) {
|
|
47
|
+
const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
|
|
48
|
+
this.element.content.push(extensionElement);
|
|
49
|
+
} else if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
50
|
+
const specPath = this.specPath(value);
|
|
51
|
+
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
52
|
+
const newMemberElement = new MemberElement(this.consume ? key : cloneDeep(key), patternedFieldElement);
|
|
53
|
+
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
54
|
+
newMemberElement.classes.push('patterned-field');
|
|
55
|
+
this.element.content.push(newMemberElement);
|
|
56
|
+
// consume: release processed generic subtree
|
|
57
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
|
|
58
|
+
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
59
|
+
this.element.content.push(this.consume ? memberElement : cloneDeep(memberElement));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.copyMetaAndAttributes(objectElement, this.element);
|
|
63
|
+
path.stop();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export default PatternedFieldsVisitor;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { F as stubFalse } from 'ramda';
|
|
2
|
+
import { ObjectElement, Element, MemberElement, cloneDeep } from '@speclynx/apidom-datamodel';
|
|
3
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
4
|
+
import { Path } from '@speclynx/apidom-traverse';
|
|
5
|
+
|
|
6
|
+
import SpecificationVisitor, { SpecificationVisitorOptions } from '../SpecificationVisitor.ts';
|
|
7
|
+
import type { SpecPath } from './FixedFieldsVisitor.ts';
|
|
8
|
+
import { isSwaggerExtension } from '../../predicates.ts';
|
|
9
|
+
|
|
10
|
+
export type { SpecPath };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export interface PatternedFieldsVisitorOptions extends SpecificationVisitorOptions {
|
|
16
|
+
readonly specPath: SpecPath;
|
|
17
|
+
readonly ignoredFields?: string[];
|
|
18
|
+
readonly fieldPatternPredicate?: (...args: unknown[]) => boolean;
|
|
19
|
+
readonly canSupportSpecificationExtensions?: boolean;
|
|
20
|
+
readonly specificationExtensionPredicate?: typeof isSwaggerExtension;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
class PatternedFieldsVisitor extends SpecificationVisitor {
|
|
27
|
+
protected specPath: SpecPath;
|
|
28
|
+
|
|
29
|
+
protected ignoredFields: string[];
|
|
30
|
+
|
|
31
|
+
protected fieldPatternPredicate: (value: unknown) => boolean = stubFalse;
|
|
32
|
+
|
|
33
|
+
protected canSupportSpecificationExtensions: boolean = false;
|
|
34
|
+
|
|
35
|
+
protected specificationExtensionPredicate = isSwaggerExtension;
|
|
36
|
+
|
|
37
|
+
constructor({
|
|
38
|
+
specPath,
|
|
39
|
+
ignoredFields,
|
|
40
|
+
fieldPatternPredicate,
|
|
41
|
+
canSupportSpecificationExtensions,
|
|
42
|
+
specificationExtensionPredicate,
|
|
43
|
+
...rest
|
|
44
|
+
}: PatternedFieldsVisitorOptions) {
|
|
45
|
+
super({ ...rest });
|
|
46
|
+
this.specPath = specPath;
|
|
47
|
+
this.ignoredFields = ignoredFields || [];
|
|
48
|
+
|
|
49
|
+
if (typeof fieldPatternPredicate === 'function') {
|
|
50
|
+
this.fieldPatternPredicate = fieldPatternPredicate;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (typeof canSupportSpecificationExtensions === 'boolean') {
|
|
54
|
+
this.canSupportSpecificationExtensions = canSupportSpecificationExtensions;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (typeof specificationExtensionPredicate === 'function') {
|
|
58
|
+
this.specificationExtensionPredicate = specificationExtensionPredicate;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
ObjectElement(path: Path<ObjectElement>) {
|
|
63
|
+
const objectElement = path.node;
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
objectElement.forEach((value: Element, key: Element, memberElement: MemberElement) => {
|
|
66
|
+
const keyValue = toValue(key) as string;
|
|
67
|
+
if (
|
|
68
|
+
this.canSupportSpecificationExtensions &&
|
|
69
|
+
this.specificationExtensionPredicate(memberElement)
|
|
70
|
+
) {
|
|
71
|
+
const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
|
|
72
|
+
(this.element.content as Element[]).push(extensionElement);
|
|
73
|
+
} else if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
|
|
74
|
+
const specPath = this.specPath(value);
|
|
75
|
+
const patternedFieldElement = this.toRefractedElement(specPath, value);
|
|
76
|
+
const newMemberElement = new MemberElement(
|
|
77
|
+
this.consume ? key : cloneDeep(key),
|
|
78
|
+
patternedFieldElement,
|
|
79
|
+
);
|
|
80
|
+
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
81
|
+
newMemberElement.classes.push('patterned-field');
|
|
82
|
+
(this.element.content as Element[]).push(newMemberElement);
|
|
83
|
+
// consume: release processed generic subtree
|
|
84
|
+
if (this.consume && this.consumeSafe && !memberElement.isFrozen)
|
|
85
|
+
memberElement.value = undefined;
|
|
86
|
+
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
87
|
+
(this.element.content as Element[]).push(
|
|
88
|
+
this.consume ? memberElement : cloneDeep(memberElement),
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
this.copyMetaAndAttributes(objectElement, this.element);
|
|
94
|
+
|
|
95
|
+
path.stop();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export default PatternedFieldsVisitor;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _FallbackVisitor = _interopRequireDefault(require("../FallbackVisitor.cjs"));
|
|
7
|
+
/**
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
class BasePathVisitor extends _FallbackVisitor.default {
|
|
11
|
+
StringElement(path) {
|
|
12
|
+
super.enter(path);
|
|
13
|
+
this.element.classes.push('swagger-base-path');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
var _default = exports.default = BasePathVisitor;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import FallbackVisitor from "../FallbackVisitor.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
class BasePathVisitor extends FallbackVisitor {
|
|
6
|
+
StringElement(path) {
|
|
7
|
+
super.enter(path);
|
|
8
|
+
this.element.classes.push('swagger-base-path');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export default BasePathVisitor;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StringElement } from '@speclynx/apidom-datamodel';
|
|
2
|
+
import { Path } from '@speclynx/apidom-traverse';
|
|
3
|
+
|
|
4
|
+
import FallbackVisitor, { FallbackVisitorOptions } from '../FallbackVisitor.ts';
|
|
5
|
+
|
|
6
|
+
export type { FallbackVisitorOptions as BasePathVisitorOptions };
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class BasePathVisitor extends FallbackVisitor {
|
|
12
|
+
declare public readonly element: StringElement;
|
|
13
|
+
|
|
14
|
+
StringElement(path: Path<StringElement>) {
|
|
15
|
+
super.enter(path);
|
|
16
|
+
this.element.classes.push('swagger-base-path');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default BasePathVisitor;
|