@speclynx/apidom-ns-openapi-3-0 5.0.2 → 5.1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speclynx/apidom-ns-openapi-3-0",
3
- "version": "5.0.2",
3
+ "version": "5.1.1",
4
4
  "description": "OpenAPI 3.0.x namespace for ApiDOM.",
5
5
  "keywords": [
6
6
  "apidom",
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "type": "module",
24
24
  "sideEffects": [
25
- "./src/refractor/registration.mjs",
26
- "./src/refractor/registration.cjs"
25
+ "./src/refractor/inspect.mjs",
26
+ "./src/refractor/inspect.cjs"
27
27
  ],
28
28
  "unpkg": "./dist/apidom-ns-openapi-3-0.browser.min.js",
29
29
  "main": "./src/index.cjs",
@@ -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.1",
60
+ "@speclynx/apidom-datamodel": "5.1.1",
61
+ "@speclynx/apidom-error": "5.1.1",
62
+ "@speclynx/apidom-json-pointer": "5.1.1",
63
+ "@speclynx/apidom-ns-json-schema-draft-4": "5.1.1",
64
+ "@speclynx/apidom-traverse": "5.1.1",
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": "b661f6f038953d118ad09eec0d7da7927db46f5c"
80
80
  }
@@ -53,7 +53,22 @@ const inheritParametersToOperation = (operationElement, pathItemElement) => {
53
53
 
54
54
  // prefers the first item if two items compare equal based on the predicate
55
55
  const mergedParameters = (0, _ramda.uniqWith)(parameterEquals, [...operationParams, ...pathItemParams]);
56
- operationElement.parameters = new _OperationParameters.default(mergedParameters);
56
+ const originalParameters = operationElement.parameters;
57
+ const mergedElement = new _OperationParameters.default(mergedParameters);
58
+
59
+ // the merged container may replace an existing source container — carry over
60
+ // its meta, attributes, source map and style
61
+ if ((0, _apidomDatamodel.isArrayElement)(originalParameters)) {
62
+ if (!originalParameters.isMetaEmpty) {
63
+ mergedElement.meta = (0, _apidomDatamodel.cloneDeep)(originalParameters.meta);
64
+ }
65
+ if (!originalParameters.isAttributesEmpty) {
66
+ mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(originalParameters.attributes);
67
+ }
68
+ _apidomDatamodel.SourceMapElement.transfer(originalParameters, mergedElement);
69
+ _apidomDatamodel.StyleElement.transfer(originalParameters, mergedElement);
70
+ }
71
+ operationElement.parameters = mergedElement;
57
72
  };
58
73
 
59
74
  /**
@@ -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";
@@ -45,7 +45,22 @@ const inheritParametersToOperation = (operationElement, pathItemElement) => {
45
45
 
46
46
  // prefers the first item if two items compare equal based on the predicate
47
47
  const mergedParameters = uniqWith(parameterEquals, [...operationParams, ...pathItemParams]);
48
- operationElement.parameters = new OperationParametersElement(mergedParameters);
48
+ const originalParameters = operationElement.parameters;
49
+ const mergedElement = new OperationParametersElement(mergedParameters);
50
+
51
+ // the merged container may replace an existing source container — carry over
52
+ // its meta, attributes, source map and style
53
+ if (isArrayElement(originalParameters)) {
54
+ if (!originalParameters.isMetaEmpty) {
55
+ mergedElement.meta = cloneDeep(originalParameters.meta);
56
+ }
57
+ if (!originalParameters.isAttributesEmpty) {
58
+ mergedElement.attributes = cloneDeep(originalParameters.attributes);
59
+ }
60
+ SourceMapElement.transfer(originalParameters, mergedElement);
61
+ StyleElement.transfer(originalParameters, mergedElement);
62
+ }
63
+ operationElement.parameters = mergedElement;
49
64
  };
50
65
 
51
66
  /**
@@ -625,7 +625,7 @@ const plugin = () => () => ({
625
625
  if (typeof elementFactory !== 'function') return;
626
626
  const newElement = elementFactory.call({
627
627
  context
628
- }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.attributes));
628
+ }, undefined, element.isMetaEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.meta), element.isAttributesEmpty ? undefined : (0, _apidomDatamodel.cloneDeep)(element.attributes));
629
629
  _apidomDatamodel.SourceMapElement.transfer(element, newElement);
630
630
  _apidomDatamodel.StyleElement.transfer(element, newElement);
631
631
  path.replaceWith(newElement);
@@ -615,7 +615,7 @@ const plugin = () => () => ({
615
615
  if (typeof elementFactory !== 'function') return;
616
616
  const newElement = elementFactory.call({
617
617
  context
618
- }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : cloneDeep(element.attributes));
618
+ }, undefined, element.isMetaEmpty ? undefined : cloneDeep(element.meta), element.isAttributesEmpty ? undefined : cloneDeep(element.attributes));
619
619
  SourceMapElement.transfer(element, newElement);
620
620
  StyleElement.transfer(element, newElement);
621
621
  path.replaceWith(newElement);
@@ -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);
@@ -23,6 +23,7 @@ class TagsVisitor extends _FallbackVisitor.default {
23
23
  ArrayElement(path) {
24
24
  const arrayElement = path.node;
25
25
  this.element = this.element.concat((0, _apidomDatamodel.cloneDeep)(arrayElement));
26
+ this.copyMetaAndAttributes(arrayElement, this.element);
26
27
  path.stop();
27
28
  }
28
29
  }
@@ -15,6 +15,7 @@ class TagsVisitor extends FallbackVisitor {
15
15
  ArrayElement(path) {
16
16
  const arrayElement = path.node;
17
17
  this.element = this.element.concat(cloneDeep(arrayElement));
18
+ this.copyMetaAndAttributes(arrayElement, this.element);
18
19
  path.stop();
19
20
  }
20
21
  }