@speclynx/apidom-ns-openapi-2 5.0.2 → 5.1.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 (24) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/apidom-ns-openapi-2.browser.js +73 -40
  3. package/dist/apidom-ns-openapi-2.browser.min.js +1 -1
  4. package/package.json +8 -8
  5. package/src/refractor/plugins/normalize-parameters.cjs +16 -1
  6. package/src/refractor/plugins/normalize-parameters.mjs +17 -2
  7. package/src/refractor/plugins/replace-empty-element.cjs +1 -1
  8. package/src/refractor/plugins/replace-empty-element.mjs +1 -1
  9. package/src/refractor/visitors/Visitor.cjs +1 -1
  10. package/src/refractor/visitors/Visitor.mjs +1 -1
  11. package/src/refractor/visitors/open-api-2/ConsumesVisitor.cjs +1 -0
  12. package/src/refractor/visitors/open-api-2/ConsumesVisitor.mjs +1 -0
  13. package/src/refractor/visitors/open-api-2/ProducesVisitor.cjs +1 -0
  14. package/src/refractor/visitors/open-api-2/ProducesVisitor.mjs +1 -0
  15. package/src/refractor/visitors/open-api-2/SchemesVisitor.cjs +1 -0
  16. package/src/refractor/visitors/open-api-2/SchemesVisitor.mjs +1 -0
  17. package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.cjs +1 -0
  18. package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.mjs +1 -0
  19. package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.cjs +1 -0
  20. package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.mjs +1 -0
  21. package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.cjs +1 -0
  22. package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.mjs +1 -0
  23. package/src/refractor/visitors/open-api-2/operation/TagsVisitor.cjs +1 -0
  24. package/src/refractor/visitors/open-api-2/operation/TagsVisitor.mjs +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speclynx/apidom-ns-openapi-2",
3
- "version": "5.0.2",
3
+ "version": "5.1.0",
4
4
  "description": "OpenAPI 2.0 namespace for ApiDOM.",
5
5
  "keywords": [
6
6
  "apidom",
@@ -56,12 +56,12 @@
56
56
  "license": "Apache-2.0",
57
57
  "dependencies": {
58
58
  "@babel/runtime-corejs3": "^8.0.0",
59
- "@speclynx/apidom-core": "5.0.2",
60
- "@speclynx/apidom-datamodel": "5.0.2",
61
- "@speclynx/apidom-error": "5.0.2",
62
- "@speclynx/apidom-json-pointer": "5.0.2",
63
- "@speclynx/apidom-ns-json-schema-draft-4": "5.0.2",
64
- "@speclynx/apidom-traverse": "5.0.2",
59
+ "@speclynx/apidom-core": "5.1.0",
60
+ "@speclynx/apidom-datamodel": "5.1.0",
61
+ "@speclynx/apidom-error": "5.1.0",
62
+ "@speclynx/apidom-json-pointer": "5.1.0",
63
+ "@speclynx/apidom-ns-json-schema-draft-4": "5.1.0",
64
+ "@speclynx/apidom-traverse": "5.1.0",
65
65
  "ramda": "~0.32.0",
66
66
  "ramda-adjunct": "^6.1.0",
67
67
  "ts-mixer": "^6.0.4"
@@ -76,5 +76,5 @@
76
76
  "README.md",
77
77
  "CHANGELOG.md"
78
78
  ],
79
- "gitHead": "01792b567baea3a47cb08d09e478178aa04afda9"
79
+ "gitHead": "2976a9fe41a9eb3a2de387695c41d21603f57c98"
80
80
  }
@@ -54,7 +54,22 @@ const inheritParametersToOperation = (operationElement, pathItemElement) => {
54
54
 
55
55
  // prefers the first item if two items compare equal based on the predicate
56
56
  const mergedParameters = (0, _ramda.uniqWith)(parameterEquals, [...operationParams, ...pathItemParams]);
57
- operationElement.parameters = new _OperationParameters.default(mergedParameters);
57
+ const originalParameters = operationElement.parameters;
58
+ const mergedElement = new _OperationParameters.default(mergedParameters);
59
+
60
+ // the merged container may replace an existing source container — carry over
61
+ // its meta, attributes, source map and style
62
+ if ((0, _apidomDatamodel.isArrayElement)(originalParameters)) {
63
+ if (!originalParameters.isMetaEmpty) {
64
+ mergedElement.meta = (0, _apidomDatamodel.cloneDeep)(originalParameters.meta);
65
+ }
66
+ if (!originalParameters.isAttributesEmpty) {
67
+ mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(originalParameters.attributes);
68
+ }
69
+ _apidomDatamodel.SourceMapElement.transfer(originalParameters, mergedElement);
70
+ _apidomDatamodel.StyleElement.transfer(originalParameters, mergedElement);
71
+ }
72
+ operationElement.parameters = mergedElement;
58
73
  };
59
74
 
60
75
  /**
@@ -1,6 +1,6 @@
1
1
  import { uniqWith } from 'ramda';
2
2
  import { toValue } from '@speclynx/apidom-core';
3
- import { isStringElement, isArrayElement } from '@speclynx/apidom-datamodel';
3
+ import { SourceMapElement, StyleElement, cloneDeep, isStringElement, isArrayElement } from '@speclynx/apidom-datamodel';
4
4
  import OperationParametersElement from "../../elements/nces/OperationParameters.mjs";
5
5
  import NormalizeStorage from "./normalize-storage/index.mjs";
6
6
  import { isParameterElement } from "../../predicates.mjs";
@@ -46,7 +46,22 @@ const inheritParametersToOperation = (operationElement, pathItemElement) => {
46
46
 
47
47
  // prefers the first item if two items compare equal based on the predicate
48
48
  const mergedParameters = uniqWith(parameterEquals, [...operationParams, ...pathItemParams]);
49
- operationElement.parameters = new OperationParametersElement(mergedParameters);
49
+ const originalParameters = operationElement.parameters;
50
+ const mergedElement = new OperationParametersElement(mergedParameters);
51
+
52
+ // the merged container may replace an existing source container — carry over
53
+ // its meta, attributes, source map and style
54
+ if (isArrayElement(originalParameters)) {
55
+ if (!originalParameters.isMetaEmpty) {
56
+ mergedElement.meta = cloneDeep(originalParameters.meta);
57
+ }
58
+ if (!originalParameters.isAttributesEmpty) {
59
+ mergedElement.attributes = cloneDeep(originalParameters.attributes);
60
+ }
61
+ SourceMapElement.transfer(originalParameters, mergedElement);
62
+ StyleElement.transfer(originalParameters, mergedElement);
63
+ }
64
+ operationElement.parameters = mergedElement;
50
65
  };
51
66
 
52
67
  /**
@@ -358,7 +358,7 @@ const plugin = () => () => ({
358
358
  if (typeof elementFactory !== 'function') return;
359
359
  const replacement = elementFactory.call({
360
360
  context
361
- }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.attributes));
361
+ }, undefined, element.isMetaEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.meta), element.isAttributesEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.attributes));
362
362
  _apidomDatamodel.SourceMapElement.transfer(element, replacement);
363
363
  _apidomDatamodel.StyleElement.transfer(element, replacement);
364
364
  path.replaceWith(replacement);
@@ -348,7 +348,7 @@ const plugin = () => () => ({
348
348
  if (typeof elementFactory !== 'function') return;
349
349
  const replacement = elementFactory.call({
350
350
  context
351
- }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : cloneDeep(element.attributes));
351
+ }, undefined, element.isMetaEmpty ? undefined : cloneDeep(element.meta), element.isAttributesEmpty ? undefined : cloneDeep(element.attributes));
352
352
  SourceMapElement.transfer(element, replacement);
353
353
  StyleElement.transfer(element, replacement);
354
354
  path.replaceWith(replacement);
@@ -24,7 +24,7 @@ class Visitor {
24
24
  if (!from.isMetaEmpty && !to.isMetaEmpty) {
25
25
  to.meta = to.meta.merge(from.meta);
26
26
  } else if (!from.isMetaEmpty) {
27
- to.meta = from.meta.cloneDeep();
27
+ to.meta = (0, _apidomDatamodel.cloneDeep)(from.meta);
28
28
  }
29
29
  if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
30
30
  to.attributes = (0, _apidomCore.deepmerge)(to.attributes, from.attributes);
@@ -19,7 +19,7 @@ class Visitor {
19
19
  if (!from.isMetaEmpty && !to.isMetaEmpty) {
20
20
  to.meta = to.meta.merge(from.meta);
21
21
  } else if (!from.isMetaEmpty) {
22
- to.meta = from.meta.cloneDeep();
22
+ to.meta = cloneDeep(from.meta);
23
23
  }
24
24
  if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
25
25
  to.attributes = deepmerge(to.attributes, from.attributes);
@@ -19,6 +19,7 @@ class ConsumesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class ConsumesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class ProducesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class ProducesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class SchemesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class SchemesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class ConsumesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class ConsumesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class ProducesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class ProducesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class SchemesVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class SchemesVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }
@@ -19,6 +19,7 @@ class TagsVisitor extends _FallbackVisitor.default {
19
19
  ArrayElement(path) {
20
20
  const arrayElement = path.node;
21
21
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
22
+ this.copyMetaAndAttributes(arrayElement, this.element);
22
23
  path.stop();
23
24
  }
24
25
  }
@@ -12,6 +12,7 @@ class TagsVisitor extends FallbackVisitor {
12
12
  ArrayElement(path) {
13
13
  const arrayElement = path.node;
14
14
  this.element = this.element.concat(cloneDeep(arrayElement));
15
+ this.copyMetaAndAttributes(arrayElement, this.element);
15
16
  path.stop();
16
17
  }
17
18
  }