@speclynx/apidom-ns-openapi-3-1 2.13.1 → 3.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.
@@ -1353,7 +1353,8 @@ __webpack_require__.r(__webpack_exports__);
1353
1353
  const refract = (value, {
1354
1354
  element = 'openApi3_1',
1355
1355
  plugins = [],
1356
- specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"]
1356
+ specificationObj = _specification_ts__WEBPACK_IMPORTED_MODULE_5__["default"],
1357
+ consume = false
1357
1358
  } = {}) => {
1358
1359
  const genericElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.refract)(value);
1359
1360
  const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__.resolveSpecification)(specificationObj);
@@ -1370,7 +1371,8 @@ const refract = (value, {
1370
1371
  */
1371
1372
  const RootVisitorClass = (0,ramda__WEBPACK_IMPORTED_MODULE_4__["default"])(specPath, resolvedSpec);
1372
1373
  const rootVisitor = new RootVisitorClass({
1373
- specObj: resolvedSpec
1374
+ specObj: resolvedSpec,
1375
+ consume
1374
1376
  });
1375
1377
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_3__.traverse)(genericElement, rootVisitor, {
1376
1378
  nodeTypeGetter: _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_3__.getNodePrimitiveType
@@ -1929,7 +1931,7 @@ const plugin = ({
1929
1931
  if (typeof linkElement.operationId === 'undefined') return;
1930
1932
  const linkOperationId = String((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(linkElement.operationId));
1931
1933
  const operationElement = normalizedOperations.find(normalizedOperationElement => {
1932
- const originalOperationId = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(normalizedOperationElement.meta.get('originalOperationId'));
1934
+ const originalOperationId = normalizedOperationElement.meta.get('originalOperationId');
1933
1935
  return originalOperationId === linkOperationId;
1934
1936
  });
1935
1937
 
@@ -1950,7 +1952,7 @@ const plugin = ({
1950
1952
  enter(path) {
1951
1953
  const pathItemElement = path.node;
1952
1954
  // `path` meta may not be always available, e.g. in Callback Object or Components Object
1953
- const pathTemplate = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])('path', (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(pathItemElement.meta.get('path')));
1955
+ const pathTemplate = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])('path', pathItemElement.meta.get('path'));
1954
1956
  pathTemplates.push(pathTemplate);
1955
1957
  },
1956
1958
  leave() {
@@ -1976,7 +1978,7 @@ const plugin = ({
1976
1978
  // perform operationId normalization
1977
1979
  const pathTemplate = (0,ramda__WEBPACK_IMPORTED_MODULE_2__["default"])(pathTemplates);
1978
1980
  // `http-method` meta may not be always available, e.g. in Callback Object or Components Object
1979
- const method = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])('method', (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(operationElement.meta.get('http-method')));
1981
+ const method = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])('method', operationElement.meta.get('http-method'));
1980
1982
  const normalizedOperationId = operationIdNormalizer(originalOperationId, pathTemplate, method);
1981
1983
 
1982
1984
  // normalization is not necessary
@@ -2471,8 +2473,8 @@ __webpack_require__.r(__webpack_exports__);
2471
2473
  /* harmony export */ });
2472
2474
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25162);
2473
2475
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12111);
2474
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18252);
2475
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97601);
2476
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97601);
2477
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18252);
2476
2478
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97071);
2477
2479
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25810);
2478
2480
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49686);
@@ -2658,7 +2660,7 @@ const schema = {
2658
2660
  },
2659
2661
  ServerVariableElement: {
2660
2662
  enum(...args) {
2661
- return new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2663
+ return new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2662
2664
  }
2663
2665
  },
2664
2666
  PathsElement: {
@@ -2827,7 +2829,7 @@ const schema = {
2827
2829
  },
2828
2830
  SecurityRequirementElement: {
2829
2831
  '[key: *]': function key(...args) {
2830
- return new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2832
+ return new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2831
2833
  }
2832
2834
  },
2833
2835
  TagElement: {
@@ -2847,17 +2849,17 @@ const schema = {
2847
2849
  return element;
2848
2850
  },
2849
2851
  allOf(...args) {
2850
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2852
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2851
2853
  element.classes.push('json-schema-allOf');
2852
2854
  return element;
2853
2855
  },
2854
2856
  anyOf(...args) {
2855
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2857
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2856
2858
  element.classes.push('json-schema-anyOf');
2857
2859
  return element;
2858
2860
  },
2859
2861
  oneOf(...args) {
2860
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2862
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2861
2863
  element.classes.push('json-schema-oneOf');
2862
2864
  return element;
2863
2865
  },
@@ -2879,7 +2881,7 @@ const schema = {
2879
2881
  return element;
2880
2882
  },
2881
2883
  prefixItems(...args) {
2882
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2884
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2883
2885
  element.classes.push('json-schema-prefixItems');
2884
2886
  return element;
2885
2887
  },
@@ -2912,17 +2914,17 @@ const schema = {
2912
2914
  return new _elements_Schema_ts__WEBPACK_IMPORTED_MODULE_50__["default"](...args);
2913
2915
  },
2914
2916
  type(...args) {
2915
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2917
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2916
2918
  element.classes.push('json-schema-type');
2917
2919
  return element;
2918
2920
  },
2919
2921
  enum(...args) {
2920
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2922
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2921
2923
  element.classes.push('json-schema-enum');
2922
2924
  return element;
2923
2925
  },
2924
2926
  required(...args) {
2925
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2927
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2926
2928
  element.classes.push('json-schema-required');
2927
2929
  return element;
2928
2930
  },
@@ -2932,7 +2934,7 @@ const schema = {
2932
2934
  return element;
2933
2935
  },
2934
2936
  examples(...args) {
2935
- const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](...args);
2937
+ const element = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](...args);
2936
2938
  element.classes.push('json-schema-examples');
2937
2939
  return element;
2938
2940
  },
@@ -3165,7 +3167,8 @@ const schema = {
3165
3167
  };
3166
3168
  const findElementFactory = (ancestor, keyName) => {
3167
3169
  const elementType = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.getNodeType)(ancestor);
3168
- const keyMapping = schema[elementType] || schema[(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(ancestor.classes.first)];
3170
+ const classType = ancestor.isMetaEmpty ? undefined : ancestor.classes.at(0);
3171
+ const keyMapping = schema[elementType] || schema[classType];
3169
3172
  return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
3170
3173
  };
3171
3174
 
@@ -3173,7 +3176,7 @@ const findElementFactory = (ancestor, keyName) => {
3173
3176
  * @public
3174
3177
  */
3175
3178
  const plugin = () => () => {
3176
- const isEmptyElement = element => (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(element) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.includesClasses)(element, ['yaml-e-node', 'yaml-e-scalar']);
3179
+ const isEmptyElement = element => (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(element) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.includesClasses)(element, ['yaml-e-node', 'yaml-e-scalar']);
3177
3180
  return {
3178
3181
  visitor: {
3179
3182
  StringElement(path) {
@@ -3195,7 +3198,7 @@ const plugin = () => () => {
3195
3198
  if (typeof elementFactory !== 'function') return;
3196
3199
  const newElement = elementFactory.call({
3197
3200
  context
3198
- }, undefined, (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.meta), (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes));
3201
+ }, undefined, element.isMetaEmpty ? undefined : element.meta.cloneDeep(), element.isAttributesEmpty ? undefined : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes));
3199
3202
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"].transfer(element, newElement);
3200
3203
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"].transfer(element, newElement);
3201
3204
  path.replaceWith(newElement);
@@ -4435,9 +4438,13 @@ __webpack_require__.r(__webpack_exports__);
4435
4438
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
4436
4439
  /* harmony export */ });
4437
4440
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29498);
4438
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58368);
4439
- /* harmony import */ var _elements_OpenApi3_1_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(75474);
4440
- /* harmony import */ var _bases_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55996);
4441
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25162);
4442
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44673);
4443
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58368);
4444
+ /* harmony import */ var _elements_OpenApi3_1_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75474);
4445
+ /* harmony import */ var _bases_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55996);
4446
+
4447
+
4441
4448
 
4442
4449
 
4443
4450
 
@@ -4451,18 +4458,25 @@ __webpack_require__.r(__webpack_exports__);
4451
4458
  * @public
4452
4459
  */
4453
4460
 
4454
- class OpenApi3_1Visitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_3__.BaseFixedFieldsVisitor {
4461
+ class OpenApi3_1Visitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_5__.BaseFixedFieldsVisitor {
4455
4462
  constructor(options) {
4456
4463
  super(options);
4457
- this.element = new _elements_OpenApi3_1_ts__WEBPACK_IMPORTED_MODULE_2__["default"]();
4464
+ this.element = new _elements_OpenApi3_1_ts__WEBPACK_IMPORTED_MODULE_4__["default"]();
4458
4465
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'OpenApi']);
4459
4466
  this.canSupportSpecificationExtensions = true;
4467
+ this.consumeSafe = true;
4460
4468
  this.openApiSemanticElement = this.element;
4461
4469
  }
4462
4470
  ObjectElement(path) {
4463
4471
  const objectElement = path.node;
4464
4472
  this.openApiGenericElement = objectElement;
4465
- _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_1__["default"].prototype.ObjectElement.call(this, path);
4473
+ // precompute values from generic root before consume may release fields
4474
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(objectElement.get('jsonSchemaDialect'))) {
4475
+ this.sourceContext = {
4476
+ jsonSchemaDialect: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(objectElement.get('jsonSchemaDialect'))
4477
+ };
4478
+ }
4479
+ _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__["default"].prototype.ObjectElement.call(this, path);
4466
4480
  }
4467
4481
  }
4468
4482
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenApi3_1Visitor);
@@ -5143,8 +5157,8 @@ class SchemaVisitor extends _bases_ts__WEBPACK_IMPORTED_MODULE_8__.BaseSchemaVis
5143
5157
  (0,_predicates_ts__WEBPACK_IMPORTED_MODULE_5__.isJsonSchemaDialectElement)(this.openApiSemanticElement.jsonSchemaDialect)) {
5144
5158
  // @ts-ignore
5145
5159
  jsonSchemaDialect = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(this.openApiSemanticElement.jsonSchemaDialect);
5146
- } else if (this.openApiGenericElement !== undefined && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(this.openApiGenericElement.get('jsonSchemaDialect'))) {
5147
- jsonSchemaDialect = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(this.openApiGenericElement.get('jsonSchemaDialect'));
5160
+ } else if (this.sourceContext?.jsonSchemaDialect !== undefined) {
5161
+ jsonSchemaDialect = this.sourceContext.jsonSchemaDialect;
5148
5162
  } else {
5149
5163
  jsonSchemaDialect = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(this.jsonSchemaDefaultDialect);
5150
5164
  }
@@ -21622,7 +21636,7 @@ __webpack_require__.r(__webpack_exports__);
21622
21636
  * @public
21623
21637
  */
21624
21638
  const emptyElement = element => {
21625
- const meta = !element.isMetaEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.meta) : undefined;
21639
+ const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
21626
21640
  const attributes = !element.isAttributesEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes) : undefined;
21627
21641
 
21628
21642
  // @ts-ignore
@@ -21638,7 +21652,7 @@ const getMergeFunction = (keyElement, options) => {
21638
21652
  };
21639
21653
  const getMetaMergeFunction = options => {
21640
21654
  if (typeof options.customMetaMerge !== 'function') {
21641
- return targetMeta => (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetMeta);
21655
+ return targetMeta => targetMeta.cloneDeep();
21642
21656
  }
21643
21657
  return options.customMetaMerge;
21644
21658
  };
@@ -21710,8 +21724,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
21710
21724
  const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
21711
21725
 
21712
21726
  // merging meta & attributes
21713
- mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
21714
- mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
21727
+ if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
21728
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
21729
+ } else if (!targetElement.isMetaEmpty) {
21730
+ mergedElement.meta = targetElement.meta.cloneDeep();
21731
+ } else if (!sourceElement.isMetaEmpty) {
21732
+ mergedElement.meta = sourceElement.meta.cloneDeep();
21733
+ }
21734
+ if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
21735
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
21736
+ } else if (!targetElement.isAttributesEmpty) {
21737
+ mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetElement.attributes);
21738
+ } else if (!sourceElement.isAttributesEmpty) {
21739
+ mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(sourceElement.attributes);
21740
+ }
21715
21741
  return mergedElement;
21716
21742
  };
21717
21743
  deepmerge.all = (list, options) => {
@@ -22044,6 +22070,104 @@ class KeyValuePair {
22044
22070
 
22045
22071
  /***/ },
22046
22072
 
22073
+ /***/ 51844
22074
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22075
+
22076
+ __webpack_require__.r(__webpack_exports__);
22077
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
22078
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
22079
+ /* harmony export */ });
22080
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8138);
22081
+
22082
+ /**
22083
+ * Lightweight meta container for Element metadata.
22084
+ *
22085
+ * Data is stored as own properties on the instance; methods live on the prototype.
22086
+ * `Object.keys()`, `Object.entries()`, etc. only see data properties.
22087
+ *
22088
+ * @public
22089
+ */
22090
+ class Metadata {
22091
+ // Set via prototype assignment in registration.ts to avoid circular dependency
22092
+
22093
+ get(name) {
22094
+ return this[name];
22095
+ }
22096
+ set(name, value) {
22097
+ this[name] = value;
22098
+ }
22099
+ hasKey(name) {
22100
+ return Object.hasOwn(this, name);
22101
+ }
22102
+ keys() {
22103
+ return Object.keys(this);
22104
+ }
22105
+ remove(name) {
22106
+ delete this[name];
22107
+ }
22108
+ get isEmpty() {
22109
+ return Object.keys(this).length === 0;
22110
+ }
22111
+ get isFrozen() {
22112
+ return Object.isFrozen(this);
22113
+ }
22114
+ freeze() {
22115
+ for (const value of Object.values(this)) {
22116
+ if (value instanceof this.Element) {
22117
+ value.freeze();
22118
+ } else if (Array.isArray(value) || value !== null && typeof value === 'object') {
22119
+ Object.freeze(value);
22120
+ }
22121
+ }
22122
+ Object.freeze(this);
22123
+ }
22124
+
22125
+ /**
22126
+ * Creates a shallow clone. Same references, new container.
22127
+ */
22128
+ cloneShallow() {
22129
+ const clone = new Metadata();
22130
+ Object.assign(clone, this);
22131
+ return clone;
22132
+ }
22133
+
22134
+ /**
22135
+ * Merges another Metadata into a new instance.
22136
+ * Arrays are concatenated, all other values are overwritten by source.
22137
+ */
22138
+ merge(source) {
22139
+ const result = this.cloneShallow();
22140
+ for (const [key, value] of Object.entries(source)) {
22141
+ const existing = result.get(key);
22142
+ if (Array.isArray(existing) && Array.isArray(value)) {
22143
+ result.set(key, [...existing, ...value]);
22144
+ } else {
22145
+ result.set(key, value);
22146
+ }
22147
+ }
22148
+ return result;
22149
+ }
22150
+
22151
+ /**
22152
+ * Creates a deep clone. Elements are deep cloned,
22153
+ * all other values are deep cloned via ramda clone.
22154
+ */
22155
+ cloneDeep() {
22156
+ const copy = new Metadata();
22157
+ for (const [key, value] of Object.entries(this)) {
22158
+ if (value instanceof this.Element) {
22159
+ copy.set(key, this.cloneDeepElement(value));
22160
+ } else {
22161
+ copy.set(key, (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(value));
22162
+ }
22163
+ }
22164
+ return copy;
22165
+ }
22166
+ }
22167
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Metadata);
22168
+
22169
+ /***/ },
22170
+
22047
22171
  /***/ 55156
22048
22172
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22049
22173
 
@@ -22684,7 +22808,7 @@ const cloneShallowElement = element => {
22684
22808
  const copy = new Ctor();
22685
22809
  copy.element = element.element;
22686
22810
  if (!element.isMetaEmpty) {
22687
- copy.meta = cloneDeep(element.meta);
22811
+ copy.meta = element.meta.cloneDeep();
22688
22812
  }
22689
22813
  if (!element.isAttributesEmpty) {
22690
22814
  copy.attributes = cloneDeep(element.attributes);
@@ -22712,8 +22836,8 @@ const cloneShallowElement = element => {
22712
22836
 
22713
22837
  /**
22714
22838
  * Creates a shallow clone of an ApiDOM Element, KeyValuePair, or ObjectSlice.
22715
- * The element itself is cloned, but content references are shared (except for
22716
- * meta and attributes which are deep cloned to preserve semantic information).
22839
+ * The element itself is cloned, but content references are shared.
22840
+ * Meta and attributes are deep cloned to preserve semantic information.
22717
22841
  * @public
22718
22842
  */
22719
22843
  const cloneShallow = value => {
@@ -23775,7 +23899,7 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
23775
23899
  * Search the tree recursively and find the element with the matching ID.
23776
23900
  */
23777
23901
  getById(id) {
23778
- return this.find(item => item.id.toValue() === id).first;
23902
+ return this.find(item => item.id === id).first;
23779
23903
  }
23780
23904
 
23781
23905
  /**
@@ -23804,18 +23928,24 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
23804
23928
 
23805
23929
  __webpack_require__.r(__webpack_exports__);
23806
23930
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23931
+ /* harmony export */ Metadata: () => (/* reexport safe */ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
23807
23932
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
23808
23933
  /* harmony export */ });
23809
23934
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53654);
23810
- /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36663);
23811
- /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38504);
23935
+ /* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51844);
23936
+ /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36663);
23937
+ /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(38504);
23938
+
23812
23939
 
23813
23940
 
23941
+ // shared singleton for frozen elements with no meta — avoids allocation on every access
23942
+ const FROZEN_EMPTY_METADATA = Object.freeze(new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]());
23814
23943
 
23815
23944
  /**
23816
23945
  * Valid content types for an Element.
23817
23946
  * @public
23818
23947
  */
23948
+
23819
23949
  /**
23820
23950
  * Base Element class that all ApiDOM elements extend.
23821
23951
  *
@@ -23913,7 +24043,7 @@ class Element {
23913
24043
  _attributes;
23914
24044
 
23915
24045
  // ============================================================
23916
- // Prototype-assigned properties (set in elements.ts)
24046
+ // Prototype-assigned properties (set in registration.ts)
23917
24047
  // Using 'declare' allows TypeScript to know about these
23918
24048
  // without generating runtime code.
23919
24049
  // ============================================================
@@ -23974,13 +24104,13 @@ class Element {
23974
24104
  }
23975
24105
 
23976
24106
  // KeyValuePair
23977
- if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
24107
+ if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
23978
24108
  this._content = value;
23979
24109
  return;
23980
24110
  }
23981
24111
 
23982
24112
  // ObjectSlice - extract elements array
23983
- if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
24113
+ if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]) {
23984
24114
  this._content = value.elements;
23985
24115
  return;
23986
24116
  }
@@ -24001,24 +24131,22 @@ class Element {
24001
24131
 
24002
24132
  /**
24003
24133
  * Metadata about this element (id, classes, title, description, links).
24004
- * Lazily creates an ObjectElement if not set.
24134
+ * Lazily creates a Metadata instance if not set.
24005
24135
  */
24006
24136
  get meta() {
24007
24137
  if (!this._meta) {
24008
- if (this.isFrozen) {
24009
- const meta = new this.ObjectElement();
24010
- meta.freeze();
24011
- return meta;
24012
- }
24013
- this._meta = new this.ObjectElement();
24138
+ if (this.isFrozen) return FROZEN_EMPTY_METADATA;
24139
+ this._meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
24014
24140
  }
24015
24141
  return this._meta;
24016
24142
  }
24017
24143
  set meta(value) {
24018
- if (value instanceof Element) {
24144
+ if (value instanceof _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
24019
24145
  this._meta = value;
24020
- } else {
24021
- this.meta.set(value ?? {});
24146
+ } else if (value && typeof value === 'object') {
24147
+ const meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
24148
+ Object.assign(meta, value);
24149
+ this._meta = meta;
24022
24150
  }
24023
24151
  }
24024
24152
 
@@ -24051,10 +24179,8 @@ class Element {
24051
24179
 
24052
24180
  /** Unique identifier for this element. */
24053
24181
  get id() {
24054
- if (this.isFrozen) {
24055
- return this.getMetaProperty('id', '');
24056
- }
24057
24182
  if (!this.hasMetaProperty('id')) {
24183
+ if (this.isFrozen) return '';
24058
24184
  this.setMetaProperty('id', '');
24059
24185
  }
24060
24186
  return this.meta.get('id');
@@ -24065,10 +24191,8 @@ class Element {
24065
24191
 
24066
24192
  /** CSS-like class names. */
24067
24193
  get classes() {
24068
- if (this.isFrozen) {
24069
- return this.getMetaProperty('classes', []);
24070
- }
24071
24194
  if (!this.hasMetaProperty('classes')) {
24195
+ if (this.isFrozen) return [];
24072
24196
  this.setMetaProperty('classes', []);
24073
24197
  }
24074
24198
  return this.meta.get('classes');
@@ -24079,11 +24203,13 @@ class Element {
24079
24203
 
24080
24204
  /** Hyperlinks associated with this element. */
24081
24205
  get links() {
24082
- if (this.isFrozen) {
24083
- return this.getMetaProperty('links', []);
24084
- }
24085
24206
  if (!this.hasMetaProperty('links')) {
24086
- this.setMetaProperty('links', []);
24207
+ if (this.isFrozen) {
24208
+ const empty = new this.ArrayElement();
24209
+ empty.freeze();
24210
+ return empty;
24211
+ }
24212
+ this.setMetaProperty('links', new this.ArrayElement());
24087
24213
  }
24088
24214
  return this.meta.get('links');
24089
24215
  }
@@ -24103,7 +24229,7 @@ class Element {
24103
24229
  if (Array.isArray(content)) {
24104
24230
  return content;
24105
24231
  }
24106
- if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
24232
+ if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
24107
24233
  const children = [];
24108
24234
  if (content.key) children.push(content.key);
24109
24235
  if (content.value) children.push(content.value);
@@ -24133,7 +24259,6 @@ class Element {
24133
24259
 
24134
24260
  // Freeze meta and attributes
24135
24261
  if (this._meta) {
24136
- this._meta.parent = this;
24137
24262
  this._meta.freeze();
24138
24263
  }
24139
24264
  if (this._attributes) {
@@ -24168,7 +24293,7 @@ class Element {
24168
24293
  if (_content instanceof Element) {
24169
24294
  return _content.toValue();
24170
24295
  }
24171
- if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
24296
+ if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
24172
24297
  return _content.toValue();
24173
24298
  }
24174
24299
  if (Array.isArray(_content)) {
@@ -24224,7 +24349,7 @@ class Element {
24224
24349
  * @throws Error if this element has no ID
24225
24350
  */
24226
24351
  toRef(path) {
24227
- const idValue = this.id.toValue();
24352
+ const idValue = this.id;
24228
24353
  if (idValue === '') {
24229
24354
  throw new Error('Cannot create reference to an element without an ID');
24230
24355
  }
@@ -24236,26 +24361,16 @@ class Element {
24236
24361
  }
24237
24362
 
24238
24363
  /**
24239
- * Gets a meta property.
24364
+ * Gets a meta property value.
24240
24365
  *
24241
24366
  * When the property doesn't exist:
24242
- * - With defaultValue: returns a new refracted element instance (not cached)
24367
+ * - With defaultValue: returns the provided default value
24243
24368
  * - Without defaultValue: returns undefined
24244
- *
24245
- * Note: Each call with a default creates a new instance. Use setMetaProperty
24246
- * first if you need reference equality across multiple accesses.
24247
24369
  */
24248
24370
 
24249
24371
  getMetaProperty(name, defaultValue) {
24250
24372
  if (!this.hasMetaProperty(name)) {
24251
- if (defaultValue === undefined) {
24252
- return undefined;
24253
- }
24254
- const element = this.refract(defaultValue);
24255
- if (element && this.isFrozen) {
24256
- element.freeze();
24257
- }
24258
- return element;
24373
+ return defaultValue;
24259
24374
  }
24260
24375
  return this.meta.get(name);
24261
24376
  }
@@ -24268,20 +24383,17 @@ class Element {
24268
24383
  }
24269
24384
 
24270
24385
  /**
24271
- * Has meta property.
24386
+ * Checks whether a meta property exists.
24272
24387
  */
24273
24388
  hasMetaProperty(name) {
24274
- if (!this.isMetaEmpty) {
24275
- return this.meta.hasKey(name);
24276
- }
24277
- return false;
24389
+ return this._meta !== undefined && this._meta.hasKey(name);
24278
24390
  }
24279
24391
 
24280
24392
  /**
24281
24393
  * Checks if meta is empty.
24282
24394
  */
24283
24395
  get isMetaEmpty() {
24284
- return this._meta === undefined || this.meta.isEmpty;
24396
+ return this._meta === undefined || this._meta.isEmpty;
24285
24397
  }
24286
24398
 
24287
24399
  /**
@@ -24307,7 +24419,7 @@ class Element {
24307
24419
  }
24308
24420
 
24309
24421
  /**
24310
- * Has attributes property.
24422
+ * Checks whether an attributes property exists.
24311
24423
  */
24312
24424
  hasAttributesProperty(name) {
24313
24425
  if (!this.isAttributesEmpty) {
@@ -24326,6 +24438,7 @@ class Element {
24326
24438
 
24327
24439
  // Re-export types for convenience
24328
24440
 
24441
+
24329
24442
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Element);
24330
24443
 
24331
24444
  /***/ },
@@ -24758,6 +24871,10 @@ __webpack_require__.r(__webpack_exports__);
24758
24871
  /* harmony import */ var _elements_Style_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(49686);
24759
24872
  /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(38504);
24760
24873
  /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(36663);
24874
+ /* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(51844);
24875
+ /* harmony import */ var _clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(12111);
24876
+
24877
+
24761
24878
 
24762
24879
 
24763
24880
 
@@ -24817,14 +24934,16 @@ function refract(value) {
24817
24934
  }
24818
24935
 
24819
24936
  // Set up prototype assignments for circular dependency resolution.
24820
- // These allow Element instances to create ObjectElement, MemberElement, RefElement
24821
- // without importing them directly (which would cause circular imports).
24937
+ // These allow Element and Metadata instances to reference classes they can't import
24938
+ // directly (which would cause circular imports).
24822
24939
  // Using 'declare' in the class definitions enables type-safe access to these properties.
24823
24940
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ObjectElement = _primitives_ObjectElement_mjs__WEBPACK_IMPORTED_MODULE_8__["default"];
24824
24941
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ArrayElement = _primitives_ArrayElement_mjs__WEBPACK_IMPORTED_MODULE_6__["default"];
24825
24942
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.RefElement = _elements_RefElement_mjs__WEBPACK_IMPORTED_MODULE_10__["default"];
24826
24943
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.MemberElement = _primitives_MemberElement_mjs__WEBPACK_IMPORTED_MODULE_7__["default"];
24827
24944
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.refract = refract;
24945
+ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.Element = _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"];
24946
+ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.cloneDeepElement = element => (0,_clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__.cloneDeep)(element);
24828
24947
 
24829
24948
  /**
24830
24949
  * Contains all of the element classes, and related structures and methods
@@ -24888,7 +25007,13 @@ class JSONSerialiser {
24888
25007
  element: element.element
24889
25008
  };
24890
25009
  if (!element.isMetaEmpty) {
24891
- payload.meta = this.serialiseObject(element.meta);
25010
+ const serialisedMeta = this.serialiseMeta(element);
25011
+ if (serialisedMeta) {
25012
+ payload.meta = serialisedMeta.meta;
25013
+ if (serialisedMeta.rawKeys.length > 0) {
25014
+ payload.__meta_raw__ = serialisedMeta.rawKeys;
25015
+ }
25016
+ }
24892
25017
  }
24893
25018
  if (!element.isAttributesEmpty) {
24894
25019
  payload.attributes = this.serialiseObject(element.attributes);
@@ -24935,7 +25060,7 @@ class JSONSerialiser {
24935
25060
  element.element = value.element;
24936
25061
  }
24937
25062
 
24938
- // Extract __mappings__ and __styles__ without mutating input, filter remaining meta
25063
+ // Extract special meta keys without mutating input, filter remaining meta
24939
25064
  let mappingsDoc;
24940
25065
  let stylesDoc;
24941
25066
  let metaToDeserialize = value.meta;
@@ -24949,8 +25074,15 @@ class JSONSerialiser {
24949
25074
  stylesDoc = __styles__;
24950
25075
  metaToDeserialize = Object.keys(rest).length > 0 ? rest : undefined;
24951
25076
  }
25077
+
25078
+ // determine which meta keys were raw primitives before serialization
25079
+ const rawKeys = value.__meta_raw__ ? new Set(value.__meta_raw__) : undefined;
24952
25080
  if (metaToDeserialize) {
24953
- this.deserialiseObject(metaToDeserialize, element.meta);
25081
+ for (const [key, doc] of Object.entries(metaToDeserialize)) {
25082
+ const deserialized = this.deserialise(doc);
25083
+ // unwrap keys that were raw primitives before serialization
25084
+ element.setMetaProperty(key, rawKeys?.has(key) ? deserialized.toValue() : deserialized);
25085
+ }
24954
25086
  }
24955
25087
 
24956
25088
  // Restore source position from __mappings__
@@ -25013,6 +25145,27 @@ class JSONSerialiser {
25013
25145
  }
25014
25146
  return content;
25015
25147
  }
25148
+ serialiseMeta(element) {
25149
+ const meta = {};
25150
+ const rawKeys = [];
25151
+ let hasEntries = false;
25152
+ for (const [key, value] of Object.entries(element.meta)) {
25153
+ if (value instanceof this.namespace.elements.Element) {
25154
+ meta[key] = this.serialise(value);
25155
+ hasEntries = true;
25156
+ } else if (value !== undefined) {
25157
+ // refract primitives to maintain JSON Refract spec compatibility
25158
+ const refracted = element.refract(value);
25159
+ meta[key] = this.serialise(refracted);
25160
+ rawKeys.push(key);
25161
+ hasEntries = true;
25162
+ }
25163
+ }
25164
+ return hasEntries ? {
25165
+ meta,
25166
+ rawKeys
25167
+ } : undefined;
25168
+ }
25016
25169
  serialiseObject(obj) {
25017
25170
  const result = {};
25018
25171
  obj.forEach((value, key) => {
@@ -27095,7 +27248,7 @@ __webpack_require__.r(__webpack_exports__);
27095
27248
  */
27096
27249
  class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
27097
27250
  enter(path) {
27098
- this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
27251
+ this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
27099
27252
  path.stop();
27100
27253
  }
27101
27254
  }
@@ -27134,7 +27287,7 @@ __webpack_require__.r(__webpack_exports__);
27134
27287
  */
27135
27288
  class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
27136
27289
  specObj;
27137
- passingOptionsNames = ['specObj', 'parent'];
27290
+ passingOptionsNames = ['specObj', 'parent', 'consume'];
27138
27291
  constructor({
27139
27292
  specObj,
27140
27293
  ...rest
@@ -27180,7 +27333,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
27180
27333
  */
27181
27334
  const visitor = this.retrieveVisitorInstance(specPath, options);
27182
27335
  if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
27183
- return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
27336
+ return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
27184
27337
  }
27185
27338
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
27186
27339
  return visitor.element;
@@ -27198,7 +27351,7 @@ __webpack_require__.r(__webpack_exports__);
27198
27351
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
27199
27352
  /* harmony export */ });
27200
27353
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28400);
27201
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97071);
27354
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12111);
27202
27355
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25810);
27203
27356
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49686);
27204
27357
 
@@ -27213,19 +27366,21 @@ __webpack_require__.r(__webpack_exports__);
27213
27366
  */
27214
27367
  class Visitor {
27215
27368
  element;
27369
+ consume = false;
27370
+ consumeSafe = false;
27216
27371
  constructor(options) {
27217
27372
  Object.assign(this, options);
27218
27373
  }
27219
27374
  copyMetaAndAttributes(from, to) {
27220
- if (!from.isMetaEmpty || !to.isMetaEmpty) {
27221
- const target = to.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.meta;
27222
- const source = from.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.meta;
27223
- to.meta = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
27375
+ if (!from.isMetaEmpty && !to.isMetaEmpty) {
27376
+ to.meta = to.meta.merge(from.meta);
27377
+ } else if (!from.isMetaEmpty) {
27378
+ to.meta = from.meta.cloneDeep();
27224
27379
  }
27225
- if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
27226
- const target = to.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.attributes;
27227
- const source = from.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.attributes;
27228
- to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
27380
+ if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
27381
+ to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
27382
+ } else if (!from.isAttributesEmpty) {
27383
+ to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
27229
27384
  }
27230
27385
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
27231
27386
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
@@ -27333,12 +27488,13 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
27333
27488
  const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
27334
27489
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
27335
27490
  const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
27336
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
27491
+ const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
27337
27492
  this.copyMetaAndAttributes(memberElement, newMemberElement);
27338
- newMemberElement.classes.push('fixed-field');
27339
27493
  this.element.content.push(newMemberElement);
27494
+ // consume: release processed generic subtree
27495
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
27340
27496
  } else if (!this.ignoredFields.includes(keyValue)) {
27341
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27497
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27342
27498
  }
27343
27499
  });
27344
27500
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -27425,12 +27581,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
27425
27581
  if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
27426
27582
  const specPath = this.specPath(value);
27427
27583
  const patternedFieldElement = this.toRefractedElement(specPath, value);
27428
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
27584
+ const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
27429
27585
  this.copyMetaAndAttributes(memberElement, newMemberElement);
27430
27586
  newMemberElement.classes.push('patterned-field');
27431
27587
  this.element.content.push(newMemberElement);
27588
+ // consume: release processed generic subtree
27589
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
27432
27590
  } else if (!this.ignoredFields.includes(keyValue)) {
27433
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27591
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27434
27592
  }
27435
27593
  });
27436
27594
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -27972,13 +28130,11 @@ __webpack_require__.r(__webpack_exports__);
27972
28130
  /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33031);
27973
28131
  /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68894);
27974
28132
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25162);
27975
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(12111);
27976
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(97601);
27977
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44673);
27978
- /* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(55320);
27979
- /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(89033);
27980
- /* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(94686);
27981
- /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(86059);
28133
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44673);
28134
+ /* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55320);
28135
+ /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89033);
28136
+ /* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(94686);
28137
+ /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(86059);
27982
28138
 
27983
28139
 
27984
28140
 
@@ -27993,10 +28149,11 @@ __webpack_require__.r(__webpack_exports__);
27993
28149
  /**
27994
28150
  * @public
27995
28151
  */
27996
- class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSchemaVisitorBase {
28152
+ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_7__.JSONSchemaVisitorBase {
27997
28153
  constructor(options) {
27998
28154
  super(options);
27999
- this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]();
28155
+ this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]();
28156
+ this.consumeSafe = true;
28000
28157
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'JSONSchema']);
28001
28158
  }
28002
28159
  get defaultDialectIdentifier() {
@@ -28009,27 +28166,27 @@ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSche
28009
28166
 
28010
28167
  // for further processing consider this JSONSchema Element as parent for all sub-schemas
28011
28168
  this.parent = this.element;
28012
- return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_8__["default"].prototype.ObjectElement.call(this, path);
28169
+ return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"].prototype.ObjectElement.call(this, path);
28013
28170
  }
28014
28171
  handleDialectIdentifier(objectElement) {
28015
28172
  // handle $schema keyword in embedded resources
28016
28173
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
28017
28174
  // no parent available and no $schema is defined, set default $schema
28018
28175
  this.element.meta.set('inheritedDialectIdentifier', this.defaultDialectIdentifier);
28019
- } else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_11__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
28176
+ } else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
28020
28177
  // parent is available and no $schema is defined, set parent $schema
28021
- const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(this.parent.meta.get('inheritedDialectIdentifier')), (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(this.parent.$schema));
28178
+ const inheritedDialectIdentifier = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(this.parent.meta.get('inheritedDialectIdentifier'), (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(this.parent.$schema));
28022
28179
  this.element.meta.set('inheritedDialectIdentifier', inheritedDialectIdentifier);
28023
28180
  }
28024
28181
  }
28025
28182
  handleSchemaIdentifier(objectElement, identifierKeyword = 'id') {
28026
28183
  // handle schema identifier in embedded resources
28027
- // fetch parent's ancestorsSchemaIdentifiers
28028
- const ancestorsSchemaIdentifiers = this.parent !== undefined ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__.cloneDeep)(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"]()) : new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__["default"]();
28184
+ // fetch parent's ancestorsSchemaIdentifiers (stored as plain string[])
28185
+ const ancestorsSchemaIdentifiers = this.parent !== undefined ? [...(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? [])] : [];
28029
28186
  // get current schema identifier
28030
- const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(objectElement.get(identifierKeyword));
28187
+ const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(objectElement.get(identifierKeyword));
28031
28188
 
28032
- // remember schema identifier if it's a non-empty strings
28189
+ // remember schema identifier if it's a non-empty string
28033
28190
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(schemaIdentifier)) {
28034
28191
  ancestorsSchemaIdentifiers.push(schemaIdentifier);
28035
28192
  }
@@ -32666,7 +32823,7 @@ __webpack_require__.r(__webpack_exports__);
32666
32823
  */
32667
32824
  class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
32668
32825
  enter(path) {
32669
- this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
32826
+ this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
32670
32827
  path.stop();
32671
32828
  }
32672
32829
  }
@@ -32730,8 +32887,9 @@ __webpack_require__.r(__webpack_exports__);
32730
32887
  */
32731
32888
  class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
32732
32889
  specObj;
32733
- passingOptionsNames = ['specObj', 'openApiGenericElement', 'openApiSemanticElement'];
32890
+ passingOptionsNames = ['specObj', 'openApiGenericElement', 'sourceContext', 'openApiSemanticElement', 'consume'];
32734
32891
  openApiGenericElement;
32892
+ sourceContext;
32735
32893
  openApiSemanticElement;
32736
32894
  constructor({
32737
32895
  specObj,
@@ -32786,7 +32944,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
32786
32944
  */
32787
32945
  const visitor = this.retrieveVisitorInstance(specPath, options);
32788
32946
  if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
32789
- return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
32947
+ return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
32790
32948
  }
32791
32949
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, {
32792
32950
  nodeTypeGetter: _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.getNodePrimitiveType
@@ -32806,7 +32964,7 @@ __webpack_require__.r(__webpack_exports__);
32806
32964
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
32807
32965
  /* harmony export */ });
32808
32966
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28400);
32809
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(97071);
32967
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12111);
32810
32968
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25810);
32811
32969
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49686);
32812
32970
 
@@ -32821,19 +32979,21 @@ __webpack_require__.r(__webpack_exports__);
32821
32979
  */
32822
32980
  class Visitor {
32823
32981
  element;
32982
+ consume = false;
32983
+ consumeSafe = false;
32824
32984
  constructor(options = {}) {
32825
32985
  Object.assign(this, options);
32826
32986
  }
32827
32987
  copyMetaAndAttributes(from, to) {
32828
- if (!from.isMetaEmpty || !to.isMetaEmpty) {
32829
- const target = to.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.meta;
32830
- const source = from.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.meta;
32831
- to.meta = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
32988
+ if (!from.isMetaEmpty && !to.isMetaEmpty) {
32989
+ to.meta = to.meta.merge(from.meta);
32990
+ } else if (!from.isMetaEmpty) {
32991
+ to.meta = from.meta.cloneDeep();
32832
32992
  }
32833
- if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
32834
- const target = to.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.attributes;
32835
- const source = from.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.attributes;
32836
- to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
32993
+ if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
32994
+ to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
32995
+ } else if (!from.isAttributesEmpty) {
32996
+ to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
32837
32997
  }
32838
32998
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
32839
32999
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
@@ -32953,15 +33113,20 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
32953
33113
  const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
32954
33114
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
32955
33115
  const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
32956
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
33116
+ const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
32957
33117
  this.copyMetaAndAttributes(memberElement, newMemberElement);
32958
- newMemberElement.classes.push('fixed-field');
32959
33118
  this.element.content.push(newMemberElement);
33119
+ // consume: release processed generic subtree
33120
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
32960
33121
  } else if (this.canSupportSpecificationExtensions && this.specificationExtensionPredicate(memberElement)) {
32961
33122
  const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
32962
33123
  this.element.content.push(extensionElement);
33124
+ // consume: release processed generic subtree
33125
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) {
33126
+ memberElement.value = undefined;
33127
+ }
32963
33128
  } else if (!this.ignoredFields.includes(keyValue)) {
32964
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
33129
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
32965
33130
  }
32966
33131
  });
32967
33132
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -33140,12 +33305,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
33140
33305
  } else if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
33141
33306
  const specPath = this.specPath(value);
33142
33307
  const patternedFieldElement = this.toRefractedElement(specPath, value);
33143
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
33308
+ const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"](this.consume ? key : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
33144
33309
  this.copyMetaAndAttributes(memberElement, newMemberElement);
33145
33310
  newMemberElement.classes.push('patterned-field');
33146
33311
  this.element.content.push(newMemberElement);
33312
+ // consume: release processed generic subtree
33313
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
33147
33314
  } else if (!this.ignoredFields.includes(keyValue)) {
33148
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
33315
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
33149
33316
  }
33150
33317
  });
33151
33318
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -33989,6 +34156,7 @@ class ComponentsVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseFixe
33989
34156
  this.element = new _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
33990
34157
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'Components']);
33991
34158
  this.canSupportSpecificationExtensions = true;
34159
+ this.consumeSafe = true;
33992
34160
  }
33993
34161
  }
33994
34162
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ComponentsVisitor);
@@ -34414,6 +34582,7 @@ class OpenApi3_0Visitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_1__.BaseFixe
34414
34582
  this.element = new _elements_OpenApi3_0_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]();
34415
34583
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'OpenApi']);
34416
34584
  this.canSupportSpecificationExtensions = true;
34585
+ this.consumeSafe = true;
34417
34586
  }
34418
34587
  ObjectElement(path) {
34419
34588
  _bases_mjs__WEBPACK_IMPORTED_MODULE_1__.BaseFixedFieldsVisitor.prototype.ObjectElement.call(this, path);
@@ -35275,11 +35444,10 @@ __webpack_require__.r(__webpack_exports__);
35275
35444
  /* harmony export */ });
35276
35445
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29498);
35277
35446
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25162);
35278
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12111);
35279
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44673);
35280
- /* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98557);
35281
- /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32131);
35282
- /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(74367);
35447
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44673);
35448
+ /* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(98557);
35449
+ /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(32131);
35450
+ /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74367);
35283
35451
 
35284
35452
 
35285
35453
 
@@ -35292,22 +35460,21 @@ __webpack_require__.r(__webpack_exports__);
35292
35460
  /**
35293
35461
  * @public
35294
35462
  */
35295
- class PathItemVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_6__.BaseFixedFieldsVisitor {
35463
+ class PathItemVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_5__.BaseFixedFieldsVisitor {
35296
35464
  constructor(options) {
35297
35465
  super(options);
35298
- this.element = new _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]();
35466
+ this.element = new _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]();
35299
35467
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'PathItem']);
35468
+ this.consumeSafe = true;
35300
35469
  }
35301
35470
  ObjectElement(path) {
35302
- _bases_mjs__WEBPACK_IMPORTED_MODULE_6__.BaseFixedFieldsVisitor.prototype.ObjectElement.call(this, path);
35471
+ _bases_mjs__WEBPACK_IMPORTED_MODULE_5__.BaseFixedFieldsVisitor.prototype.ObjectElement.call(this, path);
35303
35472
 
35304
35473
  // decorate Operation elements with HTTP method
35305
- this.element.filter(_predicates_mjs__WEBPACK_IMPORTED_MODULE_5__.isOperationElement)
35474
+ this.element.filter(_predicates_mjs__WEBPACK_IMPORTED_MODULE_4__.isOperationElement)
35306
35475
  // @ts-ignore
35307
35476
  .forEach((operationElement, httpMethodElementCI) => {
35308
- const httpMethodElementCS = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(httpMethodElementCI);
35309
- httpMethodElementCS.content = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(httpMethodElementCS).toUpperCase();
35310
- operationElement.meta.set('http-method', httpMethodElementCS);
35477
+ operationElement.meta.set('http-method', (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(httpMethodElementCI).toUpperCase());
35311
35478
  });
35312
35479
 
35313
35480
  // mark this PathItemElement with reference metadata
@@ -35329,7 +35496,7 @@ __webpack_require__.r(__webpack_exports__);
35329
35496
  /* harmony export */ });
35330
35497
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53679);
35331
35498
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29498);
35332
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12111);
35499
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44673);
35333
35500
  /* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8535);
35334
35501
  /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(32131);
35335
35502
  /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74367);
@@ -35350,6 +35517,7 @@ class PathsVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_5__.BasePatterned
35350
35517
  this.element = new _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]();
35351
35518
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(['document', 'objects', 'PathItem']);
35352
35519
  this.canSupportSpecificationExtensions = true;
35520
+ this.consumeSafe = true;
35353
35521
  this.fieldPatternPredicate = ramda__WEBPACK_IMPORTED_MODULE_0__["default"];
35354
35522
  }
35355
35523
  ObjectElement(path) {
@@ -35361,7 +35529,7 @@ class PathsVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_5__.BasePatterned
35361
35529
  .forEach((pathItemElement, key) => {
35362
35530
  key.classes.push('openapi-path-template');
35363
35531
  key.classes.push('path-template');
35364
- pathItemElement.meta.set('path', (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(key));
35532
+ pathItemElement.meta.set('path', (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_2__["default"])(key));
35365
35533
  });
35366
35534
  }
35367
35535
  }