@speclynx/apidom-ns-openapi-3-1 1.12.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/CHANGELOG.md +87 -0
- package/LICENSE +202 -0
- package/LICENSES/AFL-3.0.txt +182 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/LICENSES/BSD-3-Clause.txt +26 -0
- package/LICENSES/MIT.txt +9 -0
- package/NOTICE +65 -0
- package/README.md +472 -0
- package/dist/apidom-ns-openapi-3-1.browser.js +36144 -0
- package/dist/apidom-ns-openapi-3-1.browser.min.js +1 -0
- package/package.json +70 -0
- package/src/elements/Callback.cjs +10 -0
- package/src/elements/Callback.mjs +7 -0
- package/src/elements/Components.cjs +17 -0
- package/src/elements/Components.mjs +14 -0
- package/src/elements/Contact.cjs +10 -0
- package/src/elements/Contact.mjs +7 -0
- package/src/elements/Discriminator.cjs +10 -0
- package/src/elements/Discriminator.mjs +7 -0
- package/src/elements/Encoding.cjs +10 -0
- package/src/elements/Encoding.mjs +7 -0
- package/src/elements/Example.cjs +10 -0
- package/src/elements/Example.mjs +7 -0
- package/src/elements/ExternalDocumentation.cjs +10 -0
- package/src/elements/ExternalDocumentation.mjs +7 -0
- package/src/elements/Header.cjs +17 -0
- package/src/elements/Header.mjs +13 -0
- package/src/elements/Info.cjs +23 -0
- package/src/elements/Info.mjs +19 -0
- package/src/elements/JsonSchemaDialect.cjs +16 -0
- package/src/elements/JsonSchemaDialect.mjs +13 -0
- package/src/elements/License.cjs +17 -0
- package/src/elements/License.mjs +14 -0
- package/src/elements/Link.cjs +10 -0
- package/src/elements/Link.mjs +7 -0
- package/src/elements/MediaType.cjs +17 -0
- package/src/elements/MediaType.mjs +13 -0
- package/src/elements/OAuthFlow.cjs +10 -0
- package/src/elements/OAuthFlow.mjs +7 -0
- package/src/elements/OAuthFlows.cjs +10 -0
- package/src/elements/OAuthFlows.mjs +7 -0
- package/src/elements/OpenApi3-1.cjs +77 -0
- package/src/elements/OpenApi3-1.mjs +73 -0
- package/src/elements/Openapi.cjs +10 -0
- package/src/elements/Openapi.mjs +7 -0
- package/src/elements/Operation.cjs +17 -0
- package/src/elements/Operation.mjs +13 -0
- package/src/elements/Parameter.cjs +17 -0
- package/src/elements/Parameter.mjs +13 -0
- package/src/elements/PathItem.cjs +59 -0
- package/src/elements/PathItem.mjs +55 -0
- package/src/elements/Paths.cjs +10 -0
- package/src/elements/Paths.mjs +7 -0
- package/src/elements/Reference.cjs +28 -0
- package/src/elements/Reference.mjs +25 -0
- package/src/elements/RequestBody.cjs +10 -0
- package/src/elements/RequestBody.mjs +7 -0
- package/src/elements/Response.cjs +10 -0
- package/src/elements/Response.mjs +7 -0
- package/src/elements/Responses.cjs +10 -0
- package/src/elements/Responses.mjs +7 -0
- package/src/elements/Schema.cjs +50 -0
- package/src/elements/Schema.mjs +46 -0
- package/src/elements/SecurityRequirement.cjs +10 -0
- package/src/elements/SecurityRequirement.mjs +7 -0
- package/src/elements/SecurityScheme.cjs +10 -0
- package/src/elements/SecurityScheme.mjs +7 -0
- package/src/elements/Server.cjs +10 -0
- package/src/elements/Server.mjs +7 -0
- package/src/elements/ServerVariable.cjs +10 -0
- package/src/elements/ServerVariable.mjs +7 -0
- package/src/elements/Tag.cjs +10 -0
- package/src/elements/Tag.mjs +7 -0
- package/src/elements/Xml.cjs +10 -0
- package/src/elements/Xml.mjs +7 -0
- package/src/elements/nces/ComponentsPathItems.cjs +16 -0
- package/src/elements/nces/ComponentsPathItems.mjs +13 -0
- package/src/elements/nces/Webhooks.cjs +16 -0
- package/src/elements/nces/Webhooks.mjs +13 -0
- package/src/index.cjs +158 -0
- package/src/index.mjs +28 -0
- package/src/media-types.cjs +34 -0
- package/src/media-types.mjs +30 -0
- package/src/namespace.cjs +82 -0
- package/src/namespace.mjs +76 -0
- package/src/predicates.cjs +365 -0
- package/src/predicates.mjs +357 -0
- package/src/refractor/index.cjs +45 -0
- package/src/refractor/index.mjs +39 -0
- package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.cjs +38 -0
- package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.mjs +34 -0
- package/src/refractor/plugins/normalize-header-examples/index.cjs +105 -0
- package/src/refractor/plugins/normalize-header-examples/index.mjs +99 -0
- package/src/refractor/plugins/normalize-operation-ids.cjs +159 -0
- package/src/refractor/plugins/normalize-operation-ids.mjs +154 -0
- package/src/refractor/plugins/normalize-parameter-examples.cjs +105 -0
- package/src/refractor/plugins/normalize-parameter-examples.mjs +99 -0
- package/src/refractor/plugins/normalize-parameters.cjs +103 -0
- package/src/refractor/plugins/normalize-parameters.mjs +97 -0
- package/src/refractor/plugins/normalize-security-requirements.cjs +71 -0
- package/src/refractor/plugins/normalize-security-requirements.mjs +65 -0
- package/src/refractor/plugins/normalize-servers.cjs +118 -0
- package/src/refractor/plugins/normalize-servers.mjs +112 -0
- package/src/refractor/plugins/replace-empty-element.cjs +665 -0
- package/src/refractor/plugins/replace-empty-element.mjs +658 -0
- package/src/refractor/registration.cjs +102 -0
- package/src/refractor/registration.mjs +66 -0
- package/src/refractor/specification.cjs +492 -0
- package/src/refractor/specification.mjs +487 -0
- package/src/refractor/toolbox.cjs +70 -0
- package/src/refractor/toolbox.mjs +60 -0
- package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.cjs +25 -0
- package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.mjs +19 -0
- package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.cjs +44 -0
- package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.mjs +38 -0
- package/src/refractor/visitors/open-api-3-1/callback/index.cjs +37 -0
- package/src/refractor/visitors/open-api-3-1/callback/index.mjs +32 -0
- package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.cjs +34 -0
- package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.mjs +28 -0
- package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +22 -0
- package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +19 -0
- package/src/refractor/visitors/open-api-3-1/components/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/components/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/contact/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/contact/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/distriminator/index.cjs +22 -0
- package/src/refractor/visitors/open-api-3-1/distriminator/index.mjs +17 -0
- package/src/refractor/visitors/open-api-3-1/encoding/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/encoding/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/example/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/example/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/external-documentation/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/external-documentation/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/header/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/header/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/index.cjs +31 -0
- package/src/refractor/visitors/open-api-3-1/index.mjs +25 -0
- package/src/refractor/visitors/open-api-3-1/info/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/info/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/license/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/license/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/link/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/link/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/media-type/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/media-type/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/oauth-flow/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/oauth-flow/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/oauth-flows/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/oauth-flows/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/operation/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/operation/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/parameter/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/parameter/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/path-item/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/path-item/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/paths/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/paths/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/reference/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/reference/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/request-body/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/request-body/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/response/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/response/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/responses/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/responses/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +19 -0
- package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +15 -0
- package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +11 -0
- package/src/refractor/visitors/open-api-3-1/schema/index.cjs +75 -0
- package/src/refractor/visitors/open-api-3-1/schema/index.mjs +69 -0
- package/src/refractor/visitors/open-api-3-1/security-requirement/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/security-requirement/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/security-scheme/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/security-scheme/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/server/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/server/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/server-variable/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/server-variable/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/tag/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/tag/index.mjs +16 -0
- package/src/refractor/visitors/open-api-3-1/xml/index.cjs +21 -0
- package/src/refractor/visitors/open-api-3-1/xml/index.mjs +16 -0
- package/src/traversal/visitor.cjs +57 -0
- package/src/traversal/visitor.mjs +54 -0
- package/types/apidom-ns-openapi-3-1.d.ts +2745 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { createPredicate, isBooleanElement, isStringElement, toValue } from '@speclynx/apidom-core';
|
|
2
|
+
import CallbackElement from "./elements/Callback.mjs";
|
|
3
|
+
import ComponentsElement from "./elements/Components.mjs";
|
|
4
|
+
import ContactElement from "./elements/Contact.mjs";
|
|
5
|
+
import ExampleElement from "./elements/Example.mjs";
|
|
6
|
+
import ExternalDocumentationElement from "./elements/ExternalDocumentation.mjs";
|
|
7
|
+
import HeaderElement from "./elements/Header.mjs";
|
|
8
|
+
import InfoElement from "./elements/Info.mjs";
|
|
9
|
+
import JsonSchemaDialectElement from "./elements/JsonSchemaDialect.mjs";
|
|
10
|
+
import LicenseElement from "./elements/License.mjs";
|
|
11
|
+
import LinkElement from "./elements/Link.mjs";
|
|
12
|
+
import OpenapiElement from "./elements/Openapi.mjs";
|
|
13
|
+
import OpenApi3_1Element from "./elements/OpenApi3-1.mjs";
|
|
14
|
+
import OperationElement from "./elements/Operation.mjs";
|
|
15
|
+
import ParameterElement from "./elements/Parameter.mjs";
|
|
16
|
+
import PathItemElement from "./elements/PathItem.mjs";
|
|
17
|
+
import PathsElement from "./elements/Paths.mjs";
|
|
18
|
+
import ReferenceElement from "./elements/Reference.mjs";
|
|
19
|
+
import RequestBodyElement from "./elements/RequestBody.mjs";
|
|
20
|
+
import ResponseElement from "./elements/Response.mjs";
|
|
21
|
+
import ResponsesElement from "./elements/Responses.mjs";
|
|
22
|
+
import SchemaElement from "./elements/Schema.mjs";
|
|
23
|
+
import SecurityRequirementElement from "./elements/SecurityRequirement.mjs";
|
|
24
|
+
import SecuritySchemeElement from "./elements/SecurityScheme.mjs";
|
|
25
|
+
import ServerElement from "./elements/Server.mjs";
|
|
26
|
+
import ServerVariableElement from "./elements/ServerVariable.mjs";
|
|
27
|
+
import MediaTypeElement from "./elements/MediaType.mjs";
|
|
28
|
+
/**
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export const isCallbackElement = createPredicate(({
|
|
32
|
+
hasBasicElementProps,
|
|
33
|
+
isElementType,
|
|
34
|
+
primitiveEq
|
|
35
|
+
}) => {
|
|
36
|
+
return element => element instanceof CallbackElement || hasBasicElementProps(element) && isElementType('callback', element) && primitiveEq('object', element);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export const isComponentsElement = createPredicate(({
|
|
43
|
+
hasBasicElementProps,
|
|
44
|
+
isElementType,
|
|
45
|
+
primitiveEq
|
|
46
|
+
}) => {
|
|
47
|
+
return element => element instanceof ComponentsElement || hasBasicElementProps(element) && isElementType('components', element) && primitiveEq('object', element);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export const isContactElement = createPredicate(({
|
|
54
|
+
hasBasicElementProps,
|
|
55
|
+
isElementType,
|
|
56
|
+
primitiveEq
|
|
57
|
+
}) => {
|
|
58
|
+
return element => element instanceof ContactElement || hasBasicElementProps(element) && isElementType('contact', element) && primitiveEq('object', element);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export const isExampleElement = createPredicate(({
|
|
65
|
+
hasBasicElementProps,
|
|
66
|
+
isElementType,
|
|
67
|
+
primitiveEq
|
|
68
|
+
}) => {
|
|
69
|
+
return element => element instanceof ExampleElement || hasBasicElementProps(element) && isElementType('example', element) && primitiveEq('object', element);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
75
|
+
export const isExternalDocumentationElement = createPredicate(({
|
|
76
|
+
hasBasicElementProps,
|
|
77
|
+
isElementType,
|
|
78
|
+
primitiveEq
|
|
79
|
+
}) => {
|
|
80
|
+
return element => element instanceof ExternalDocumentationElement || hasBasicElementProps(element) && isElementType('externalDocumentation', element) && primitiveEq('object', element);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
export const isHeaderElement = createPredicate(({
|
|
87
|
+
hasBasicElementProps,
|
|
88
|
+
isElementType,
|
|
89
|
+
primitiveEq
|
|
90
|
+
}) => {
|
|
91
|
+
return element => element instanceof HeaderElement || hasBasicElementProps(element) && isElementType('header', element) && primitiveEq('object', element);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
export const isInfoElement = createPredicate(({
|
|
98
|
+
hasBasicElementProps,
|
|
99
|
+
isElementType,
|
|
100
|
+
primitiveEq
|
|
101
|
+
}) => {
|
|
102
|
+
return element => element instanceof InfoElement || hasBasicElementProps(element) && isElementType('info', element) && primitiveEq('object', element);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @public
|
|
107
|
+
*/
|
|
108
|
+
export const isJsonSchemaDialectElement = createPredicate(({
|
|
109
|
+
hasBasicElementProps,
|
|
110
|
+
isElementType,
|
|
111
|
+
primitiveEq
|
|
112
|
+
}) => {
|
|
113
|
+
return element => element instanceof JsonSchemaDialectElement || hasBasicElementProps(element) && isElementType('jsonSchemaDialect', element) && primitiveEq('string', element);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @public
|
|
118
|
+
*/
|
|
119
|
+
export const isLicenseElement = createPredicate(({
|
|
120
|
+
hasBasicElementProps,
|
|
121
|
+
isElementType,
|
|
122
|
+
primitiveEq
|
|
123
|
+
}) => {
|
|
124
|
+
return element => element instanceof LicenseElement || hasBasicElementProps(element) && isElementType('license', element) && primitiveEq('object', element);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
export const isLinkElement = createPredicate(({
|
|
131
|
+
hasBasicElementProps,
|
|
132
|
+
isElementType,
|
|
133
|
+
primitiveEq
|
|
134
|
+
}) => {
|
|
135
|
+
return element => element instanceof LinkElement || hasBasicElementProps(element) && isElementType('link', element) && primitiveEq('object', element);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @public
|
|
140
|
+
*/
|
|
141
|
+
export const isOpenapiElement = createPredicate(({
|
|
142
|
+
hasBasicElementProps,
|
|
143
|
+
isElementType,
|
|
144
|
+
primitiveEq
|
|
145
|
+
}) => {
|
|
146
|
+
return element => element instanceof OpenapiElement || hasBasicElementProps(element) && isElementType('openapi', element) && primitiveEq('string', element);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @public
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
export const isOpenApi3_1Element = createPredicate(({
|
|
154
|
+
hasBasicElementProps,
|
|
155
|
+
isElementType,
|
|
156
|
+
primitiveEq,
|
|
157
|
+
hasClass
|
|
158
|
+
}) => {
|
|
159
|
+
return element => element instanceof OpenApi3_1Element || hasBasicElementProps(element) && isElementType('openApi3_1', element) && primitiveEq('object', element) && hasClass('api', element);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @public
|
|
164
|
+
*/
|
|
165
|
+
export const isOperationElement = createPredicate(({
|
|
166
|
+
hasBasicElementProps,
|
|
167
|
+
isElementType,
|
|
168
|
+
primitiveEq
|
|
169
|
+
}) => {
|
|
170
|
+
return element => element instanceof OperationElement || hasBasicElementProps(element) && isElementType('operation', element) && primitiveEq('object', element);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @public
|
|
175
|
+
*/
|
|
176
|
+
export const isParameterElement = createPredicate(({
|
|
177
|
+
hasBasicElementProps,
|
|
178
|
+
isElementType,
|
|
179
|
+
primitiveEq
|
|
180
|
+
}) => {
|
|
181
|
+
return element => element instanceof ParameterElement || hasBasicElementProps(element) && isElementType('parameter', element) && primitiveEq('object', element);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @public
|
|
186
|
+
*/
|
|
187
|
+
export const isPathItemElement = createPredicate(({
|
|
188
|
+
hasBasicElementProps,
|
|
189
|
+
isElementType,
|
|
190
|
+
primitiveEq
|
|
191
|
+
}) => {
|
|
192
|
+
return element => element instanceof PathItemElement || hasBasicElementProps(element) && isElementType('pathItem', element) && primitiveEq('object', element);
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @deprecated
|
|
197
|
+
* Determining whether a PathItemElement is external or internal is not possible by just looking
|
|
198
|
+
* at value of the $ref fixed field. The value of the $ref field needs to be resolved in runtime
|
|
199
|
+
* using the referring document as the Base URI.
|
|
200
|
+
* @public
|
|
201
|
+
*/
|
|
202
|
+
export const isPathItemElementExternal = element => {
|
|
203
|
+
if (!isPathItemElement(element)) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
if (!isStringElement(element.$ref)) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
const value = toValue(element.$ref);
|
|
210
|
+
return typeof value === 'string' && value.length > 0 && !value.startsWith('#');
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @public
|
|
215
|
+
*/
|
|
216
|
+
export const isPathsElement = createPredicate(({
|
|
217
|
+
hasBasicElementProps,
|
|
218
|
+
isElementType,
|
|
219
|
+
primitiveEq
|
|
220
|
+
}) => {
|
|
221
|
+
return element => element instanceof PathsElement || hasBasicElementProps(element) && isElementType('paths', element) && primitiveEq('object', element);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @public
|
|
226
|
+
*/
|
|
227
|
+
export const isReferenceElement = createPredicate(({
|
|
228
|
+
hasBasicElementProps,
|
|
229
|
+
isElementType,
|
|
230
|
+
primitiveEq
|
|
231
|
+
}) => {
|
|
232
|
+
return element => element instanceof ReferenceElement || hasBasicElementProps(element) && isElementType('reference', element) && primitiveEq('object', element);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @deprecated
|
|
237
|
+
* Determining whether a ReferenceElement is external or internal is not possible by just looking
|
|
238
|
+
* at value of the $ref fixed field. The value of the $ref field needs to be resolved in runtime
|
|
239
|
+
* using the referring document as the Base URI.
|
|
240
|
+
* @public
|
|
241
|
+
*/
|
|
242
|
+
export const isReferenceElementExternal = element => {
|
|
243
|
+
if (!isReferenceElement(element)) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
if (!isStringElement(element.$ref)) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
const value = toValue(element.$ref);
|
|
250
|
+
return typeof value === 'string' && value.length > 0 && !value.startsWith('#');
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* @public
|
|
255
|
+
*/
|
|
256
|
+
export const isRequestBodyElement = createPredicate(({
|
|
257
|
+
hasBasicElementProps,
|
|
258
|
+
isElementType,
|
|
259
|
+
primitiveEq
|
|
260
|
+
}) => {
|
|
261
|
+
return element => element instanceof RequestBodyElement || hasBasicElementProps(element) && isElementType('requestBody', element) && primitiveEq('object', element);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* @public
|
|
266
|
+
*/
|
|
267
|
+
export const isResponseElement = createPredicate(({
|
|
268
|
+
hasBasicElementProps,
|
|
269
|
+
isElementType,
|
|
270
|
+
primitiveEq
|
|
271
|
+
}) => {
|
|
272
|
+
return element => element instanceof ResponseElement || hasBasicElementProps(element) && isElementType('response', element) && primitiveEq('object', element);
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* @public
|
|
277
|
+
*/
|
|
278
|
+
export const isResponsesElement = createPredicate(({
|
|
279
|
+
hasBasicElementProps,
|
|
280
|
+
isElementType,
|
|
281
|
+
primitiveEq
|
|
282
|
+
}) => {
|
|
283
|
+
return element => element instanceof ResponsesElement || hasBasicElementProps(element) && isElementType('responses', element) && primitiveEq('object', element);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* @public
|
|
288
|
+
*/
|
|
289
|
+
export const isSchemaElement = createPredicate(({
|
|
290
|
+
hasBasicElementProps,
|
|
291
|
+
isElementType,
|
|
292
|
+
primitiveEq
|
|
293
|
+
}) => {
|
|
294
|
+
return element => element instanceof SchemaElement || hasBasicElementProps(element) && isElementType('schema', element) && primitiveEq('object', element);
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
300
|
+
export const isBooleanJsonSchemaElement = element => {
|
|
301
|
+
return isBooleanElement(element) && element.classes.includes('boolean-json-schema');
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* @public
|
|
306
|
+
*/
|
|
307
|
+
export const isSecurityRequirementElement = createPredicate(({
|
|
308
|
+
hasBasicElementProps,
|
|
309
|
+
isElementType,
|
|
310
|
+
primitiveEq
|
|
311
|
+
}) => {
|
|
312
|
+
return element => element instanceof SecurityRequirementElement || hasBasicElementProps(element) && isElementType('securityRequirement', element) && primitiveEq('object', element);
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* @public
|
|
317
|
+
*/
|
|
318
|
+
export const isSecuritySchemeElement = createPredicate(({
|
|
319
|
+
hasBasicElementProps,
|
|
320
|
+
isElementType,
|
|
321
|
+
primitiveEq
|
|
322
|
+
}) => {
|
|
323
|
+
return element => element instanceof SecuritySchemeElement || hasBasicElementProps(element) && isElementType('securityScheme', element) && primitiveEq('object', element);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* @public
|
|
328
|
+
*/
|
|
329
|
+
export const isServerElement = createPredicate(({
|
|
330
|
+
hasBasicElementProps,
|
|
331
|
+
isElementType,
|
|
332
|
+
primitiveEq
|
|
333
|
+
}) => {
|
|
334
|
+
return element => element instanceof ServerElement || hasBasicElementProps(element) && isElementType('server', element) && primitiveEq('object', element);
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* @public
|
|
339
|
+
*/
|
|
340
|
+
export const isServerVariableElement = createPredicate(({
|
|
341
|
+
hasBasicElementProps,
|
|
342
|
+
isElementType,
|
|
343
|
+
primitiveEq
|
|
344
|
+
}) => {
|
|
345
|
+
return element => element instanceof ServerVariableElement || hasBasicElementProps(element) && isElementType('serverVariable', element) && primitiveEq('object', element);
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* @public
|
|
350
|
+
*/
|
|
351
|
+
export const isMediaTypeElement = createPredicate(({
|
|
352
|
+
hasBasicElementProps,
|
|
353
|
+
isElementType,
|
|
354
|
+
primitiveEq
|
|
355
|
+
}) => {
|
|
356
|
+
return element => element instanceof MediaTypeElement || hasBasicElementProps(element) && isElementType('mediaType', element) && primitiveEq('object', element);
|
|
357
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = exports.createRefractor = void 0;
|
|
6
|
+
var _apidomCore = require("@speclynx/apidom-core");
|
|
7
|
+
var _ramda = require("ramda");
|
|
8
|
+
var _specification = _interopRequireDefault(require("./specification.cjs"));
|
|
9
|
+
var _visitor = require("../traversal/visitor.cjs");
|
|
10
|
+
var _toolbox = _interopRequireDefault(require("./toolbox.cjs"));
|
|
11
|
+
const refract = (value, {
|
|
12
|
+
specPath = ['visitors', 'document', 'objects', 'OpenApi', '$visitor'],
|
|
13
|
+
plugins = []
|
|
14
|
+
} = {}) => {
|
|
15
|
+
const element = (0, _apidomCore.refract)(value);
|
|
16
|
+
const resolvedSpec = (0, _apidomCore.dereference)(_specification.default);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* This is where generic ApiDOM becomes semantic (namespace applied).
|
|
20
|
+
* We don't allow consumers to hook into this translation.
|
|
21
|
+
* Though we allow consumers to define their onw plugins on already transformed ApiDOM.
|
|
22
|
+
*/
|
|
23
|
+
const RootVisitorClass = (0, _ramda.path)(specPath, resolvedSpec);
|
|
24
|
+
const rootVisitor = new RootVisitorClass({
|
|
25
|
+
specObj: resolvedSpec
|
|
26
|
+
});
|
|
27
|
+
(0, _apidomCore.visit)(element, rootVisitor);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Running plugins visitors means extra single traversal === performance hit.
|
|
31
|
+
*/
|
|
32
|
+
return (0, _apidomCore.dispatchRefractorPlugins)(rootVisitor.element, plugins, {
|
|
33
|
+
toolboxCreator: _toolbox.default,
|
|
34
|
+
visitorOptions: {
|
|
35
|
+
keyMap: _visitor.keyMap,
|
|
36
|
+
nodeTypeGetter: _visitor.getNodeType
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const createRefractor = specPath => (value, options = {}) => refract(value, {
|
|
41
|
+
specPath,
|
|
42
|
+
...options
|
|
43
|
+
});
|
|
44
|
+
exports.createRefractor = createRefractor;
|
|
45
|
+
var _default = exports.default = refract;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { visit, dereference, refract as baseRefract, dispatchRefractorPlugins } from '@speclynx/apidom-core';
|
|
2
|
+
import { path } from 'ramda';
|
|
3
|
+
import specification from "./specification.mjs";
|
|
4
|
+
import { keyMap, getNodeType } from "../traversal/visitor.mjs";
|
|
5
|
+
import createToolbox from "./toolbox.mjs";
|
|
6
|
+
const refract = (value, {
|
|
7
|
+
specPath = ['visitors', 'document', 'objects', 'OpenApi', '$visitor'],
|
|
8
|
+
plugins = []
|
|
9
|
+
} = {}) => {
|
|
10
|
+
const element = baseRefract(value);
|
|
11
|
+
const resolvedSpec = dereference(specification);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This is where generic ApiDOM becomes semantic (namespace applied).
|
|
15
|
+
* We don't allow consumers to hook into this translation.
|
|
16
|
+
* Though we allow consumers to define their onw plugins on already transformed ApiDOM.
|
|
17
|
+
*/
|
|
18
|
+
const RootVisitorClass = path(specPath, resolvedSpec);
|
|
19
|
+
const rootVisitor = new RootVisitorClass({
|
|
20
|
+
specObj: resolvedSpec
|
|
21
|
+
});
|
|
22
|
+
visit(element, rootVisitor);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Running plugins visitors means extra single traversal === performance hit.
|
|
26
|
+
*/
|
|
27
|
+
return dispatchRefractorPlugins(rootVisitor.element, plugins, {
|
|
28
|
+
toolboxCreator: createToolbox,
|
|
29
|
+
visitorOptions: {
|
|
30
|
+
keyMap,
|
|
31
|
+
nodeTypeGetter: getNodeType
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export const createRefractor = specPath => (value, options = {}) => refract(value, {
|
|
36
|
+
specPath,
|
|
37
|
+
...options
|
|
38
|
+
});
|
|
39
|
+
export default refract;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var _apidomCore = require("@speclynx/apidom-core");
|
|
6
|
+
class NormalizeStorage {
|
|
7
|
+
internalStore;
|
|
8
|
+
constructor(storageElement, storageField, storageSubField) {
|
|
9
|
+
this.storageElement = storageElement;
|
|
10
|
+
this.storageField = storageField;
|
|
11
|
+
this.storageSubField = storageSubField;
|
|
12
|
+
}
|
|
13
|
+
get store() {
|
|
14
|
+
if (!this.internalStore) {
|
|
15
|
+
let rootStore = this.storageElement.get(this.storageField);
|
|
16
|
+
if (!(0, _apidomCore.isObjectElement)(rootStore)) {
|
|
17
|
+
rootStore = new _apidomCore.ObjectElement();
|
|
18
|
+
this.storageElement.set(this.storageField, rootStore);
|
|
19
|
+
}
|
|
20
|
+
let store = rootStore.get(this.storageSubField);
|
|
21
|
+
if (!(0, _apidomCore.isArrayElement)(store)) {
|
|
22
|
+
store = new _apidomCore.ArrayElement();
|
|
23
|
+
rootStore.set(this.storageSubField, store);
|
|
24
|
+
}
|
|
25
|
+
this.internalStore = store;
|
|
26
|
+
}
|
|
27
|
+
return this.internalStore;
|
|
28
|
+
}
|
|
29
|
+
append(pointer) {
|
|
30
|
+
if (!this.includes(pointer)) {
|
|
31
|
+
this.store.push(pointer);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
includes(pointer) {
|
|
35
|
+
return this.store.includes(pointer);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
var _default = exports.default = NormalizeStorage;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ArrayElement, ObjectElement, isObjectElement, isArrayElement } from '@speclynx/apidom-core';
|
|
2
|
+
class NormalizeStorage {
|
|
3
|
+
internalStore;
|
|
4
|
+
constructor(storageElement, storageField, storageSubField) {
|
|
5
|
+
this.storageElement = storageElement;
|
|
6
|
+
this.storageField = storageField;
|
|
7
|
+
this.storageSubField = storageSubField;
|
|
8
|
+
}
|
|
9
|
+
get store() {
|
|
10
|
+
if (!this.internalStore) {
|
|
11
|
+
let rootStore = this.storageElement.get(this.storageField);
|
|
12
|
+
if (!isObjectElement(rootStore)) {
|
|
13
|
+
rootStore = new ObjectElement();
|
|
14
|
+
this.storageElement.set(this.storageField, rootStore);
|
|
15
|
+
}
|
|
16
|
+
let store = rootStore.get(this.storageSubField);
|
|
17
|
+
if (!isArrayElement(store)) {
|
|
18
|
+
store = new ArrayElement();
|
|
19
|
+
rootStore.set(this.storageSubField, store);
|
|
20
|
+
}
|
|
21
|
+
this.internalStore = store;
|
|
22
|
+
}
|
|
23
|
+
return this.internalStore;
|
|
24
|
+
}
|
|
25
|
+
append(pointer) {
|
|
26
|
+
if (!this.includes(pointer)) {
|
|
27
|
+
this.store.push(pointer);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
includes(pointer) {
|
|
31
|
+
return this.store.includes(pointer);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export default NormalizeStorage;
|
|
@@ -0,0 +1,105 @@
|
|
|
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 _apidomCore = require("@speclynx/apidom-core");
|
|
7
|
+
var _NormalizeStorage = _interopRequireDefault(require("./NormalizeStorage.cjs"));
|
|
8
|
+
/**
|
|
9
|
+
* Override of Schema.example and Schema.examples field inside the Header Objects.
|
|
10
|
+
*
|
|
11
|
+
* Header Object has two fixed fields:
|
|
12
|
+
* - `example` of type `Any`
|
|
13
|
+
* - `examples` of type `Map[string, Example Object | Reference Object]`
|
|
14
|
+
*
|
|
15
|
+
* OpenAPI 3.1 specification excerpt that defines the override behavior:
|
|
16
|
+
*
|
|
17
|
+
* The example value SHALL override the example provided by the schema.
|
|
18
|
+
* Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema.
|
|
19
|
+
*
|
|
20
|
+
* NOTE: this plugin is idempotent
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
const plugin = ({
|
|
28
|
+
storageField = 'x-normalized'
|
|
29
|
+
} = {}) => toolbox => {
|
|
30
|
+
const {
|
|
31
|
+
predicates,
|
|
32
|
+
ancestorLineageToJSONPointer
|
|
33
|
+
} = toolbox;
|
|
34
|
+
let storage;
|
|
35
|
+
return {
|
|
36
|
+
visitor: {
|
|
37
|
+
OpenApi3_1Element: {
|
|
38
|
+
enter(element) {
|
|
39
|
+
storage = new _NormalizeStorage.default(element, storageField, 'header-examples');
|
|
40
|
+
},
|
|
41
|
+
leave() {
|
|
42
|
+
storage = undefined;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
HeaderElement: {
|
|
46
|
+
leave(headerElement, key, parent, path, ancestors) {
|
|
47
|
+
// skip visiting this Header Object
|
|
48
|
+
if (ancestors.some(predicates.isComponentsElement)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// no Header.schema field present
|
|
53
|
+
if (typeof headerElement.schema === 'undefined' || !predicates.isSchemaElement(headerElement.schema)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Schema contains no example
|
|
57
|
+
if (typeof headerElement.schema?.example === 'undefined' && typeof headerElement.schema?.examples === 'undefined') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const headerJSONPointer = ancestorLineageToJSONPointer([...ancestors, parent, headerElement]);
|
|
61
|
+
|
|
62
|
+
// skip visiting this Header Object if it's already normalized
|
|
63
|
+
if (storage.includes(headerJSONPointer)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Header.examples and Schema.examples have preferences over the older
|
|
69
|
+
* and deprected `example` field.
|
|
70
|
+
*/
|
|
71
|
+
if (typeof headerElement.examples !== 'undefined' && predicates.isObjectElement(headerElement.examples)) {
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
const examples = headerElement.examples.map(example => {
|
|
74
|
+
return _apidomCore.cloneDeep.safe(example.value);
|
|
75
|
+
});
|
|
76
|
+
if (typeof headerElement.schema.examples !== 'undefined') {
|
|
77
|
+
headerElement.schema.set('examples', examples);
|
|
78
|
+
storage.append(headerJSONPointer);
|
|
79
|
+
}
|
|
80
|
+
if (typeof headerElement.schema.example !== 'undefined') {
|
|
81
|
+
headerElement.schema.set('example', examples[0]);
|
|
82
|
+
storage.append(headerJSONPointer);
|
|
83
|
+
}
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Handle deprecated `example` field.
|
|
89
|
+
*/
|
|
90
|
+
if (typeof headerElement.example !== 'undefined') {
|
|
91
|
+
if (typeof headerElement.schema.examples !== 'undefined') {
|
|
92
|
+
headerElement.schema.set('examples', [(0, _apidomCore.cloneDeep)(headerElement.example)]);
|
|
93
|
+
storage.append(headerJSONPointer);
|
|
94
|
+
}
|
|
95
|
+
if (typeof headerElement.schema.example !== 'undefined') {
|
|
96
|
+
headerElement.schema.set('example', (0, _apidomCore.cloneDeep)(headerElement.example));
|
|
97
|
+
storage.append(headerJSONPointer);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
var _default = exports.default = plugin;
|