@speclynx/apidom-ns-openapi-3-1 3.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/apidom-ns-openapi-3-1.browser.js +24 -20
  3. package/package.json +8 -8
  4. package/src/elements/Callback.cjs +0 -10
  5. package/src/elements/Callback.mjs +0 -7
  6. package/src/elements/Components.cjs +0 -17
  7. package/src/elements/Components.mjs +0 -14
  8. package/src/elements/Contact.cjs +0 -10
  9. package/src/elements/Contact.mjs +0 -7
  10. package/src/elements/Discriminator.cjs +0 -10
  11. package/src/elements/Discriminator.mjs +0 -7
  12. package/src/elements/Encoding.cjs +0 -10
  13. package/src/elements/Encoding.mjs +0 -7
  14. package/src/elements/Example.cjs +0 -10
  15. package/src/elements/Example.mjs +0 -7
  16. package/src/elements/ExternalDocumentation.cjs +0 -10
  17. package/src/elements/ExternalDocumentation.mjs +0 -7
  18. package/src/elements/Header.cjs +0 -17
  19. package/src/elements/Header.mjs +0 -13
  20. package/src/elements/Info.cjs +0 -23
  21. package/src/elements/Info.mjs +0 -19
  22. package/src/elements/JsonSchemaDialect.cjs +0 -16
  23. package/src/elements/JsonSchemaDialect.mjs +0 -13
  24. package/src/elements/License.cjs +0 -17
  25. package/src/elements/License.mjs +0 -14
  26. package/src/elements/Link.cjs +0 -10
  27. package/src/elements/Link.mjs +0 -7
  28. package/src/elements/MediaType.cjs +0 -17
  29. package/src/elements/MediaType.mjs +0 -13
  30. package/src/elements/OAuthFlow.cjs +0 -10
  31. package/src/elements/OAuthFlow.mjs +0 -7
  32. package/src/elements/OAuthFlows.cjs +0 -10
  33. package/src/elements/OAuthFlows.mjs +0 -7
  34. package/src/elements/OpenApi3-1.cjs +0 -77
  35. package/src/elements/OpenApi3-1.mjs +0 -73
  36. package/src/elements/Openapi.cjs +0 -10
  37. package/src/elements/Openapi.mjs +0 -7
  38. package/src/elements/Operation.cjs +0 -17
  39. package/src/elements/Operation.mjs +0 -13
  40. package/src/elements/Parameter.cjs +0 -17
  41. package/src/elements/Parameter.mjs +0 -13
  42. package/src/elements/PathItem.cjs +0 -59
  43. package/src/elements/PathItem.mjs +0 -55
  44. package/src/elements/Paths.cjs +0 -10
  45. package/src/elements/Paths.mjs +0 -7
  46. package/src/elements/Reference.cjs +0 -28
  47. package/src/elements/Reference.mjs +0 -25
  48. package/src/elements/RequestBody.cjs +0 -10
  49. package/src/elements/RequestBody.mjs +0 -7
  50. package/src/elements/Response.cjs +0 -10
  51. package/src/elements/Response.mjs +0 -7
  52. package/src/elements/Responses.cjs +0 -10
  53. package/src/elements/Responses.mjs +0 -7
  54. package/src/elements/Schema.cjs +0 -50
  55. package/src/elements/Schema.mjs +0 -46
  56. package/src/elements/SecurityRequirement.cjs +0 -10
  57. package/src/elements/SecurityRequirement.mjs +0 -7
  58. package/src/elements/SecurityScheme.cjs +0 -10
  59. package/src/elements/SecurityScheme.mjs +0 -7
  60. package/src/elements/Server.cjs +0 -10
  61. package/src/elements/Server.mjs +0 -7
  62. package/src/elements/ServerVariable.cjs +0 -10
  63. package/src/elements/ServerVariable.mjs +0 -7
  64. package/src/elements/Tag.cjs +0 -10
  65. package/src/elements/Tag.mjs +0 -7
  66. package/src/elements/Xml.cjs +0 -10
  67. package/src/elements/Xml.mjs +0 -7
  68. package/src/elements/nces/ComponentsPathItems.cjs +0 -16
  69. package/src/elements/nces/ComponentsPathItems.mjs +0 -13
  70. package/src/elements/nces/Webhooks.cjs +0 -16
  71. package/src/elements/nces/Webhooks.mjs +0 -13
  72. package/src/index.cjs +0 -182
  73. package/src/index.mjs +0 -31
  74. package/src/media-types.cjs +0 -34
  75. package/src/media-types.mjs +0 -30
  76. package/src/namespace.cjs +0 -81
  77. package/src/namespace.mjs +0 -76
  78. package/src/predicates.cjs +0 -228
  79. package/src/predicates.mjs +0 -195
  80. package/src/refractor/index.cjs +0 -368
  81. package/src/refractor/index.mjs +0 -330
  82. package/src/refractor/inspect.cjs +0 -207
  83. package/src/refractor/inspect.mjs +0 -171
  84. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.cjs +0 -38
  85. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.mjs +0 -34
  86. package/src/refractor/plugins/normalize-header-examples/index.cjs +0 -109
  87. package/src/refractor/plugins/normalize-header-examples/index.mjs +0 -103
  88. package/src/refractor/plugins/normalize-operation-ids.cjs +0 -166
  89. package/src/refractor/plugins/normalize-operation-ids.mjs +0 -161
  90. package/src/refractor/plugins/normalize-parameter-examples.cjs +0 -109
  91. package/src/refractor/plugins/normalize-parameter-examples.mjs +0 -103
  92. package/src/refractor/plugins/normalize-parameters.cjs +0 -109
  93. package/src/refractor/plugins/normalize-parameters.mjs +0 -103
  94. package/src/refractor/plugins/normalize-security-requirements.cjs +0 -75
  95. package/src/refractor/plugins/normalize-security-requirements.mjs +0 -69
  96. package/src/refractor/plugins/normalize-servers.cjs +0 -124
  97. package/src/refractor/plugins/normalize-servers.mjs +0 -118
  98. package/src/refractor/plugins/replace-empty-element.cjs +0 -669
  99. package/src/refractor/plugins/replace-empty-element.mjs +0 -661
  100. package/src/refractor/predicates.cjs +0 -36
  101. package/src/refractor/predicates.mjs +0 -31
  102. package/src/refractor/specification.cjs +0 -531
  103. package/src/refractor/specification.mjs +0 -526
  104. package/src/refractor/toolbox.cjs +0 -61
  105. package/src/refractor/toolbox.mjs +0 -53
  106. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.cjs +0 -25
  107. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.mjs +0 -19
  108. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.cjs +0 -25
  109. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.mjs +0 -19
  110. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.cjs +0 -43
  111. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.mjs +0 -37
  112. package/src/refractor/visitors/open-api-3-1/bases.cjs +0 -46
  113. package/src/refractor/visitors/open-api-3-1/bases.mjs +0 -43
  114. package/src/refractor/visitors/open-api-3-1/callback/index.cjs +0 -36
  115. package/src/refractor/visitors/open-api-3-1/callback/index.mjs +0 -31
  116. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.cjs +0 -33
  117. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.mjs +0 -27
  118. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +0 -22
  119. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +0 -17
  120. package/src/refractor/visitors/open-api-3-1/components/index.cjs +0 -21
  121. package/src/refractor/visitors/open-api-3-1/components/index.mjs +0 -16
  122. package/src/refractor/visitors/open-api-3-1/contact/index.cjs +0 -21
  123. package/src/refractor/visitors/open-api-3-1/contact/index.mjs +0 -16
  124. package/src/refractor/visitors/open-api-3-1/distriminator/index.cjs +0 -22
  125. package/src/refractor/visitors/open-api-3-1/distriminator/index.mjs +0 -17
  126. package/src/refractor/visitors/open-api-3-1/encoding/index.cjs +0 -21
  127. package/src/refractor/visitors/open-api-3-1/encoding/index.mjs +0 -16
  128. package/src/refractor/visitors/open-api-3-1/example/index.cjs +0 -21
  129. package/src/refractor/visitors/open-api-3-1/example/index.mjs +0 -16
  130. package/src/refractor/visitors/open-api-3-1/external-documentation/index.cjs +0 -21
  131. package/src/refractor/visitors/open-api-3-1/external-documentation/index.mjs +0 -16
  132. package/src/refractor/visitors/open-api-3-1/header/index.cjs +0 -21
  133. package/src/refractor/visitors/open-api-3-1/header/index.mjs +0 -16
  134. package/src/refractor/visitors/open-api-3-1/index.cjs +0 -41
  135. package/src/refractor/visitors/open-api-3-1/index.mjs +0 -35
  136. package/src/refractor/visitors/open-api-3-1/info/index.cjs +0 -21
  137. package/src/refractor/visitors/open-api-3-1/info/index.mjs +0 -16
  138. package/src/refractor/visitors/open-api-3-1/license/index.cjs +0 -21
  139. package/src/refractor/visitors/open-api-3-1/license/index.mjs +0 -16
  140. package/src/refractor/visitors/open-api-3-1/link/index.cjs +0 -21
  141. package/src/refractor/visitors/open-api-3-1/link/index.mjs +0 -16
  142. package/src/refractor/visitors/open-api-3-1/media-type/index.cjs +0 -21
  143. package/src/refractor/visitors/open-api-3-1/media-type/index.mjs +0 -16
  144. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.cjs +0 -21
  145. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.mjs +0 -16
  146. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.cjs +0 -21
  147. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.mjs +0 -16
  148. package/src/refractor/visitors/open-api-3-1/operation/index.cjs +0 -21
  149. package/src/refractor/visitors/open-api-3-1/operation/index.mjs +0 -16
  150. package/src/refractor/visitors/open-api-3-1/parameter/index.cjs +0 -21
  151. package/src/refractor/visitors/open-api-3-1/parameter/index.mjs +0 -16
  152. package/src/refractor/visitors/open-api-3-1/path-item/index.cjs +0 -21
  153. package/src/refractor/visitors/open-api-3-1/path-item/index.mjs +0 -16
  154. package/src/refractor/visitors/open-api-3-1/paths/index.cjs +0 -21
  155. package/src/refractor/visitors/open-api-3-1/paths/index.mjs +0 -16
  156. package/src/refractor/visitors/open-api-3-1/reference/index.cjs +0 -21
  157. package/src/refractor/visitors/open-api-3-1/reference/index.mjs +0 -16
  158. package/src/refractor/visitors/open-api-3-1/request-body/index.cjs +0 -21
  159. package/src/refractor/visitors/open-api-3-1/request-body/index.mjs +0 -16
  160. package/src/refractor/visitors/open-api-3-1/response/index.cjs +0 -21
  161. package/src/refractor/visitors/open-api-3-1/response/index.mjs +0 -16
  162. package/src/refractor/visitors/open-api-3-1/responses/index.cjs +0 -21
  163. package/src/refractor/visitors/open-api-3-1/responses/index.mjs +0 -16
  164. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +0 -19
  165. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +0 -16
  166. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +0 -15
  167. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +0 -11
  168. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +0 -15
  169. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +0 -11
  170. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +0 -15
  171. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +0 -11
  172. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +0 -15
  173. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +0 -11
  174. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +0 -15
  175. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +0 -11
  176. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +0 -15
  177. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +0 -11
  178. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +0 -15
  179. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +0 -11
  180. package/src/refractor/visitors/open-api-3-1/schema/index.cjs +0 -76
  181. package/src/refractor/visitors/open-api-3-1/schema/index.mjs +0 -70
  182. package/src/refractor/visitors/open-api-3-1/security-requirement/index.cjs +0 -21
  183. package/src/refractor/visitors/open-api-3-1/security-requirement/index.mjs +0 -16
  184. package/src/refractor/visitors/open-api-3-1/security-scheme/index.cjs +0 -21
  185. package/src/refractor/visitors/open-api-3-1/security-scheme/index.mjs +0 -16
  186. package/src/refractor/visitors/open-api-3-1/server/index.cjs +0 -21
  187. package/src/refractor/visitors/open-api-3-1/server/index.mjs +0 -16
  188. package/src/refractor/visitors/open-api-3-1/server-variable/index.cjs +0 -21
  189. package/src/refractor/visitors/open-api-3-1/server-variable/index.mjs +0 -16
  190. package/src/refractor/visitors/open-api-3-1/tag/index.cjs +0 -21
  191. package/src/refractor/visitors/open-api-3-1/tag/index.mjs +0 -16
  192. package/src/refractor/visitors/open-api-3-1/xml/index.cjs +0 -21
  193. package/src/refractor/visitors/open-api-3-1/xml/index.mjs +0 -16
@@ -1,103 +0,0 @@
1
- import { uniqWith, pathOr, last } from 'ramda';
2
- import { toValue } from '@speclynx/apidom-core';
3
- import { OperationParametersElement } from '@speclynx/apidom-ns-openapi-3-0';
4
- import NormalizeStorage from "./normalize-header-examples/NormalizeStorage.mjs";
5
- /**
6
- * Inheritance of Parameter Objects.
7
- *
8
- * OpenAPI 3.1 specification excerpt that defines the inheritance behavior:
9
- *
10
- * A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item,
11
- * the new definition will override it but can never remove it. The list MUST NOT include duplicated parameters.
12
- * A unique parameter is defined by a combination of a name and location.
13
- *
14
- * NOTE: this plugin is idempotent
15
- * @public
16
- */
17
- /**
18
- * @public
19
- */
20
- const plugin = ({
21
- storageField = 'x-normalized'
22
- } = {}) => toolbox => {
23
- const {
24
- predicates,
25
- ancestorLineageToJSONPointer
26
- } = toolbox;
27
- /**
28
- * Establishes identity between two Parameter Objects.
29
- *
30
- * {@link https://spec.openapis.org/oas/v3.1.2.html#operation-parameters}
31
- */
32
- const parameterEquals = (parameter1, parameter2) => {
33
- if (!predicates.isParameterElement(parameter1)) return false;
34
- if (!predicates.isParameterElement(parameter2)) return false;
35
- if (!predicates.isStringElement(parameter1.name)) return false;
36
- if (!predicates.isStringElement(parameter1.in)) return false;
37
- if (!predicates.isStringElement(parameter2.name)) return false;
38
- if (!predicates.isStringElement(parameter2.in)) return false;
39
- return toValue(parameter1.name) === toValue(parameter2.name) && toValue(parameter1.in) === toValue(parameter2.in);
40
- };
41
- const pathItemParameters = [];
42
- let storage;
43
- return {
44
- visitor: {
45
- OpenApi3_1Element: {
46
- enter(path) {
47
- const element = path.node;
48
- storage = new NormalizeStorage(element, storageField, 'parameters');
49
- },
50
- leave() {
51
- storage = undefined;
52
- }
53
- },
54
- PathItemElement: {
55
- enter(path) {
56
- const pathItemElement = path.node;
57
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
58
-
59
- // skip visiting this Path Item
60
- if (ancestors.some(predicates.isComponentsElement)) {
61
- return;
62
- }
63
- const {
64
- parameters
65
- } = pathItemElement;
66
- if (predicates.isArrayElement(parameters)) {
67
- pathItemParameters.push([...(parameters.content ?? [])]);
68
- } else {
69
- pathItemParameters.push([]);
70
- }
71
- },
72
- leave() {
73
- pathItemParameters.pop();
74
- }
75
- },
76
- OperationElement: {
77
- leave(path) {
78
- const operationElement = path.node;
79
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
80
- const parentPathItemParameters = last(pathItemParameters);
81
-
82
- // no Path Item Object parameters to inherit from
83
- if (!Array.isArray(parentPathItemParameters) || parentPathItemParameters.length === 0) {
84
- return;
85
- }
86
- const operationJSONPointer = ancestorLineageToJSONPointer([...ancestors, operationElement]);
87
-
88
- // skip visiting this Operation Object if it's already normalized
89
- if (storage.includes(operationJSONPointer)) {
90
- return;
91
- }
92
- const operationParameters = pathOr([], ['parameters', 'content'], operationElement);
93
-
94
- // prefers the first item if two items compare equal based on the predicate
95
- const mergedParameters = uniqWith(parameterEquals, [...operationParameters, ...parentPathItemParameters]);
96
- operationElement.parameters = new OperationParametersElement(mergedParameters);
97
- storage.append(operationJSONPointer);
98
- }
99
- }
100
- }
101
- };
102
- };
103
- export default plugin;
@@ -1,75 +0,0 @@
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 _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
7
- var _NormalizeStorage = _interopRequireDefault(require("./normalize-header-examples/NormalizeStorage.cjs"));
8
- /**
9
- * Override of Security Requirement Objects.
10
- *
11
- * OpenAPI 3.1 specification excerpt that defines the override behavior:
12
- *
13
- * Operation.security definition overrides any declared top-level security.
14
- * To remove a top-level security declaration, an empty array can be used.
15
- * When a list of Security Requirement Objects is defined on the OpenAPI Object or Operation Object,
16
- * only one of the Security Requirement Objects in the list needs to be satisfied to authorize the request.
17
- *
18
- * NOTE: this plugin is idempotent
19
- * @public
20
- */
21
-
22
- /**
23
- * @public
24
- */
25
- const plugin = ({
26
- storageField = 'x-normalized'
27
- } = {}) => toolbox => {
28
- const {
29
- predicates,
30
- ancestorLineageToJSONPointer
31
- } = toolbox;
32
- let topLevelSecurity;
33
- let storage;
34
- return {
35
- visitor: {
36
- OpenApi3_1Element: {
37
- enter(path) {
38
- const openapiElement = path.node;
39
- storage = new _NormalizeStorage.default(openapiElement, storageField, 'security-requirements');
40
- if (predicates.isArrayElement(openapiElement.security)) {
41
- topLevelSecurity = openapiElement.security;
42
- }
43
- },
44
- leave() {
45
- storage = undefined;
46
- topLevelSecurity = undefined;
47
- }
48
- },
49
- OperationElement: {
50
- leave(path) {
51
- const operationElement = path.node;
52
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
53
-
54
- // skip visiting this Operation
55
- if (ancestors.some(predicates.isComponentsElement)) {
56
- return;
57
- }
58
- const operationJSONPointer = ancestorLineageToJSONPointer([...ancestors, operationElement]);
59
-
60
- // skip visiting this Operation Object if it's already normalized
61
- if (storage.includes(operationJSONPointer)) {
62
- return;
63
- }
64
- const missingOperationLevelSecurity = typeof operationElement.security === 'undefined';
65
- const hasTopLevelSecurity = typeof topLevelSecurity !== 'undefined';
66
- if (missingOperationLevelSecurity && hasTopLevelSecurity) {
67
- operationElement.security = new _apidomNsOpenapi.OperationSecurityElement(topLevelSecurity?.content ?? undefined);
68
- storage.append(operationJSONPointer);
69
- }
70
- }
71
- }
72
- }
73
- };
74
- };
75
- var _default = exports.default = plugin;
@@ -1,69 +0,0 @@
1
- import { OperationSecurityElement } from '@speclynx/apidom-ns-openapi-3-0';
2
- import NormalizeStorage from "./normalize-header-examples/NormalizeStorage.mjs";
3
- /**
4
- * Override of Security Requirement Objects.
5
- *
6
- * OpenAPI 3.1 specification excerpt that defines the override behavior:
7
- *
8
- * Operation.security definition overrides any declared top-level security.
9
- * To remove a top-level security declaration, an empty array can be used.
10
- * When a list of Security Requirement Objects is defined on the OpenAPI Object or Operation Object,
11
- * only one of the Security Requirement Objects in the list needs to be satisfied to authorize the request.
12
- *
13
- * NOTE: this plugin is idempotent
14
- * @public
15
- */
16
- /**
17
- * @public
18
- */
19
- const plugin = ({
20
- storageField = 'x-normalized'
21
- } = {}) => toolbox => {
22
- const {
23
- predicates,
24
- ancestorLineageToJSONPointer
25
- } = toolbox;
26
- let topLevelSecurity;
27
- let storage;
28
- return {
29
- visitor: {
30
- OpenApi3_1Element: {
31
- enter(path) {
32
- const openapiElement = path.node;
33
- storage = new NormalizeStorage(openapiElement, storageField, 'security-requirements');
34
- if (predicates.isArrayElement(openapiElement.security)) {
35
- topLevelSecurity = openapiElement.security;
36
- }
37
- },
38
- leave() {
39
- storage = undefined;
40
- topLevelSecurity = undefined;
41
- }
42
- },
43
- OperationElement: {
44
- leave(path) {
45
- const operationElement = path.node;
46
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
47
-
48
- // skip visiting this Operation
49
- if (ancestors.some(predicates.isComponentsElement)) {
50
- return;
51
- }
52
- const operationJSONPointer = ancestorLineageToJSONPointer([...ancestors, operationElement]);
53
-
54
- // skip visiting this Operation Object if it's already normalized
55
- if (storage.includes(operationJSONPointer)) {
56
- return;
57
- }
58
- const missingOperationLevelSecurity = typeof operationElement.security === 'undefined';
59
- const hasTopLevelSecurity = typeof topLevelSecurity !== 'undefined';
60
- if (missingOperationLevelSecurity && hasTopLevelSecurity) {
61
- operationElement.security = new OperationSecurityElement(topLevelSecurity?.content ?? undefined);
62
- storage.append(operationJSONPointer);
63
- }
64
- }
65
- }
66
- }
67
- };
68
- };
69
- export default plugin;
@@ -1,124 +0,0 @@
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 _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
7
- var _NormalizeStorage = _interopRequireDefault(require("./normalize-header-examples/NormalizeStorage.cjs"));
8
- var _index = require("../index.cjs");
9
- /**
10
- * Override of Server Objects.
11
- *
12
- * List of Server Objects can be defined in OpenAPI 3.1 on multiple levels:
13
- *
14
- * - OpenAPI.servers
15
- * - PathItem.servers
16
- * - Operation.servers
17
- *
18
- * If a servers array is specified at the OpenAPI Object level, it will be overridden by `PathItem`.servers.
19
- * If a servers array is specified at the Path Item Object or OpenAPI Object level, it will be overridden by Operation.servers.
20
- * @public
21
- */
22
-
23
- /**
24
- * @public
25
- */
26
- const plugin = ({
27
- storageField = 'x-normalized'
28
- } = {}) => toolbox => {
29
- const {
30
- ancestorLineageToJSONPointer,
31
- predicates
32
- } = toolbox;
33
- let storage;
34
- return {
35
- visitor: {
36
- OpenApi3_1Element: {
37
- enter(path) {
38
- const openapiElement = path.node;
39
- const isServersUndefined = typeof openapiElement.servers === 'undefined';
40
- const isServersArrayElement = predicates.isArrayElement(openapiElement.servers);
41
- const isServersEmpty = isServersArrayElement && openapiElement.servers.length === 0;
42
- const defaultServer = (0, _index.refractServer)({
43
- url: '/'
44
- });
45
- if (isServersUndefined || !isServersArrayElement) {
46
- openapiElement.servers = new _apidomNsOpenapi.ServersElement([defaultServer]);
47
- } else if (isServersArrayElement && isServersEmpty) {
48
- openapiElement.servers.push(defaultServer);
49
- }
50
- storage = new _NormalizeStorage.default(openapiElement, storageField, 'servers');
51
- },
52
- leave() {
53
- storage = undefined;
54
- }
55
- },
56
- PathItemElement(path) {
57
- const pathItemElement = path.node;
58
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
59
-
60
- // skip visiting this Path Item
61
- if (ancestors.some(predicates.isComponentsElement)) return;
62
- if (!ancestors.some(predicates.isOpenApi3_1Element)) return;
63
- const pathItemJSONPointer = ancestorLineageToJSONPointer([...ancestors, pathItemElement]);
64
-
65
- // skip visiting this Path Item Object if it's already normalized
66
- if (storage.includes(pathItemJSONPointer)) {
67
- return;
68
- }
69
- const parentOpenapiElement = ancestors.find(predicates.isOpenApi3_1Element);
70
- const isServersUndefined = typeof pathItemElement.servers === 'undefined';
71
- const isServersArrayElement = predicates.isArrayElement(pathItemElement.servers);
72
- const isServersEmpty = isServersArrayElement && pathItemElement.servers.length === 0;
73
-
74
- // duplicate OpenAPI.servers into this Path Item object
75
- if (predicates.isOpenApi3_1Element(parentOpenapiElement)) {
76
- const openapiServersContent = parentOpenapiElement.servers?.content;
77
- const openapiServers = openapiServersContent ?? [];
78
- if (isServersUndefined || !isServersArrayElement) {
79
- pathItemElement.servers = new _apidomNsOpenapi.PathItemServersElement(openapiServers);
80
- } else if (isServersArrayElement && isServersEmpty) {
81
- openapiServers.forEach(server => {
82
- pathItemElement.servers.push(server);
83
- });
84
- }
85
- storage.append(pathItemJSONPointer);
86
- }
87
- },
88
- OperationElement(path) {
89
- const operationElement = path.node;
90
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
91
-
92
- // skip visiting this Operation
93
- if (ancestors.some(predicates.isComponentsElement)) return;
94
- if (!ancestors.some(predicates.isOpenApi3_1Element)) return;
95
- const operationJSONPointer = ancestorLineageToJSONPointer([...ancestors, operationElement]);
96
-
97
- // skip visiting this Operation Object if it's already normalized
98
- if (storage.includes(operationJSONPointer)) {
99
- return;
100
- }
101
-
102
- // @TODO(vladimir.gorej@gmail.com): can be replaced by Array.prototype.findLast in future
103
- const parentPathItemElement = ancestors.findLast(predicates.isPathItemElement);
104
- const isServersUndefined = typeof operationElement.servers === 'undefined';
105
- const isServersArrayElement = predicates.isArrayElement(operationElement.servers);
106
- const isServersEmpty = isServersArrayElement && operationElement.servers.length === 0;
107
- if (predicates.isPathItemElement(parentPathItemElement)) {
108
- const pathItemServersContent = parentPathItemElement.servers?.content;
109
- const pathItemServers = pathItemServersContent ?? [];
110
- if (isServersUndefined || !isServersArrayElement) {
111
- // duplicate parent PathItem.servers into this Operation object
112
- operationElement.servers = new _apidomNsOpenapi.OperationServersElement(pathItemServers);
113
- } else if (isServersArrayElement && isServersEmpty) {
114
- pathItemServers.forEach(server => {
115
- operationElement.servers.push(server);
116
- });
117
- }
118
- storage.append(operationJSONPointer);
119
- }
120
- }
121
- }
122
- };
123
- };
124
- var _default = exports.default = plugin;
@@ -1,118 +0,0 @@
1
- import { PathItemServersElement, OperationServersElement, ServersElement } from '@speclynx/apidom-ns-openapi-3-0';
2
- import NormalizeStorage from "./normalize-header-examples/NormalizeStorage.mjs";
3
- import { refractServer } from "../index.mjs";
4
- /**
5
- * Override of Server Objects.
6
- *
7
- * List of Server Objects can be defined in OpenAPI 3.1 on multiple levels:
8
- *
9
- * - OpenAPI.servers
10
- * - PathItem.servers
11
- * - Operation.servers
12
- *
13
- * If a servers array is specified at the OpenAPI Object level, it will be overridden by `PathItem`.servers.
14
- * If a servers array is specified at the Path Item Object or OpenAPI Object level, it will be overridden by Operation.servers.
15
- * @public
16
- */
17
- /**
18
- * @public
19
- */
20
- const plugin = ({
21
- storageField = 'x-normalized'
22
- } = {}) => toolbox => {
23
- const {
24
- ancestorLineageToJSONPointer,
25
- predicates
26
- } = toolbox;
27
- let storage;
28
- return {
29
- visitor: {
30
- OpenApi3_1Element: {
31
- enter(path) {
32
- const openapiElement = path.node;
33
- const isServersUndefined = typeof openapiElement.servers === 'undefined';
34
- const isServersArrayElement = predicates.isArrayElement(openapiElement.servers);
35
- const isServersEmpty = isServersArrayElement && openapiElement.servers.length === 0;
36
- const defaultServer = refractServer({
37
- url: '/'
38
- });
39
- if (isServersUndefined || !isServersArrayElement) {
40
- openapiElement.servers = new ServersElement([defaultServer]);
41
- } else if (isServersArrayElement && isServersEmpty) {
42
- openapiElement.servers.push(defaultServer);
43
- }
44
- storage = new NormalizeStorage(openapiElement, storageField, 'servers');
45
- },
46
- leave() {
47
- storage = undefined;
48
- }
49
- },
50
- PathItemElement(path) {
51
- const pathItemElement = path.node;
52
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
53
-
54
- // skip visiting this Path Item
55
- if (ancestors.some(predicates.isComponentsElement)) return;
56
- if (!ancestors.some(predicates.isOpenApi3_1Element)) return;
57
- const pathItemJSONPointer = ancestorLineageToJSONPointer([...ancestors, pathItemElement]);
58
-
59
- // skip visiting this Path Item Object if it's already normalized
60
- if (storage.includes(pathItemJSONPointer)) {
61
- return;
62
- }
63
- const parentOpenapiElement = ancestors.find(predicates.isOpenApi3_1Element);
64
- const isServersUndefined = typeof pathItemElement.servers === 'undefined';
65
- const isServersArrayElement = predicates.isArrayElement(pathItemElement.servers);
66
- const isServersEmpty = isServersArrayElement && pathItemElement.servers.length === 0;
67
-
68
- // duplicate OpenAPI.servers into this Path Item object
69
- if (predicates.isOpenApi3_1Element(parentOpenapiElement)) {
70
- const openapiServersContent = parentOpenapiElement.servers?.content;
71
- const openapiServers = openapiServersContent ?? [];
72
- if (isServersUndefined || !isServersArrayElement) {
73
- pathItemElement.servers = new PathItemServersElement(openapiServers);
74
- } else if (isServersArrayElement && isServersEmpty) {
75
- openapiServers.forEach(server => {
76
- pathItemElement.servers.push(server);
77
- });
78
- }
79
- storage.append(pathItemJSONPointer);
80
- }
81
- },
82
- OperationElement(path) {
83
- const operationElement = path.node;
84
- const ancestors = path.getAncestorNodes().reverse(); // root to parent order
85
-
86
- // skip visiting this Operation
87
- if (ancestors.some(predicates.isComponentsElement)) return;
88
- if (!ancestors.some(predicates.isOpenApi3_1Element)) return;
89
- const operationJSONPointer = ancestorLineageToJSONPointer([...ancestors, operationElement]);
90
-
91
- // skip visiting this Operation Object if it's already normalized
92
- if (storage.includes(operationJSONPointer)) {
93
- return;
94
- }
95
-
96
- // @TODO(vladimir.gorej@gmail.com): can be replaced by Array.prototype.findLast in future
97
- const parentPathItemElement = ancestors.findLast(predicates.isPathItemElement);
98
- const isServersUndefined = typeof operationElement.servers === 'undefined';
99
- const isServersArrayElement = predicates.isArrayElement(operationElement.servers);
100
- const isServersEmpty = isServersArrayElement && operationElement.servers.length === 0;
101
- if (predicates.isPathItemElement(parentPathItemElement)) {
102
- const pathItemServersContent = parentPathItemElement.servers?.content;
103
- const pathItemServers = pathItemServersContent ?? [];
104
- if (isServersUndefined || !isServersArrayElement) {
105
- // duplicate parent PathItem.servers into this Operation object
106
- operationElement.servers = new OperationServersElement(pathItemServers);
107
- } else if (isServersArrayElement && isServersEmpty) {
108
- pathItemServers.forEach(server => {
109
- operationElement.servers.push(server);
110
- });
111
- }
112
- storage.append(operationJSONPointer);
113
- }
114
- }
115
- }
116
- };
117
- };
118
- export default plugin;