@speclynx/apidom-parser-adapter-arazzo-json-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.
@@ -20034,7 +20034,7 @@ __webpack_require__.r(__webpack_exports__);
20034
20034
  * @public
20035
20035
  */
20036
20036
  const emptyElement = element => {
20037
- const meta = !element.isMetaEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.meta) : undefined;
20037
+ const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
20038
20038
  const attributes = !element.isAttributesEmpty ? (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(element.attributes) : undefined;
20039
20039
 
20040
20040
  // @ts-ignore
@@ -20050,7 +20050,7 @@ const getMergeFunction = (keyElement, options) => {
20050
20050
  };
20051
20051
  const getMetaMergeFunction = options => {
20052
20052
  if (typeof options.customMetaMerge !== 'function') {
20053
- return targetMeta => (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetMeta);
20053
+ return targetMeta => targetMeta.cloneDeep();
20054
20054
  }
20055
20055
  return options.customMetaMerge;
20056
20056
  };
@@ -20122,8 +20122,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
20122
20122
  const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
20123
20123
 
20124
20124
  // merging meta & attributes
20125
- mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
20126
- mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
20125
+ if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
20126
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
20127
+ } else if (!targetElement.isMetaEmpty) {
20128
+ mergedElement.meta = targetElement.meta.cloneDeep();
20129
+ } else if (!sourceElement.isMetaEmpty) {
20130
+ mergedElement.meta = sourceElement.meta.cloneDeep();
20131
+ }
20132
+ if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
20133
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
20134
+ } else if (!targetElement.isAttributesEmpty) {
20135
+ mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(targetElement.attributes);
20136
+ } else if (!sourceElement.isAttributesEmpty) {
20137
+ mergedElement.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(sourceElement.attributes);
20138
+ }
20127
20139
  return mergedElement;
20128
20140
  };
20129
20141
  deepmerge.all = (list, options) => {
@@ -20462,6 +20474,105 @@ class KeyValuePair {
20462
20474
 
20463
20475
  /***/ },
20464
20476
 
20477
+ /***/ 1844
20478
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20479
+
20480
+ "use strict";
20481
+ __webpack_require__.r(__webpack_exports__);
20482
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
20483
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
20484
+ /* harmony export */ });
20485
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8138);
20486
+
20487
+ /**
20488
+ * Lightweight meta container for Element metadata.
20489
+ *
20490
+ * Data is stored as own properties on the instance; methods live on the prototype.
20491
+ * `Object.keys()`, `Object.entries()`, etc. only see data properties.
20492
+ *
20493
+ * @public
20494
+ */
20495
+ class Metadata {
20496
+ // Set via prototype assignment in registration.ts to avoid circular dependency
20497
+
20498
+ get(name) {
20499
+ return this[name];
20500
+ }
20501
+ set(name, value) {
20502
+ this[name] = value;
20503
+ }
20504
+ hasKey(name) {
20505
+ return Object.hasOwn(this, name);
20506
+ }
20507
+ keys() {
20508
+ return Object.keys(this);
20509
+ }
20510
+ remove(name) {
20511
+ delete this[name];
20512
+ }
20513
+ get isEmpty() {
20514
+ return Object.keys(this).length === 0;
20515
+ }
20516
+ get isFrozen() {
20517
+ return Object.isFrozen(this);
20518
+ }
20519
+ freeze() {
20520
+ for (const value of Object.values(this)) {
20521
+ if (value instanceof this.Element) {
20522
+ value.freeze();
20523
+ } else if (Array.isArray(value) || value !== null && typeof value === 'object') {
20524
+ Object.freeze(value);
20525
+ }
20526
+ }
20527
+ Object.freeze(this);
20528
+ }
20529
+
20530
+ /**
20531
+ * Creates a shallow clone. Same references, new container.
20532
+ */
20533
+ cloneShallow() {
20534
+ const clone = new Metadata();
20535
+ Object.assign(clone, this);
20536
+ return clone;
20537
+ }
20538
+
20539
+ /**
20540
+ * Merges another Metadata into a new instance.
20541
+ * Arrays are concatenated, all other values are overwritten by source.
20542
+ */
20543
+ merge(source) {
20544
+ const result = this.cloneShallow();
20545
+ for (const [key, value] of Object.entries(source)) {
20546
+ const existing = result.get(key);
20547
+ if (Array.isArray(existing) && Array.isArray(value)) {
20548
+ result.set(key, [...existing, ...value]);
20549
+ } else {
20550
+ result.set(key, value);
20551
+ }
20552
+ }
20553
+ return result;
20554
+ }
20555
+
20556
+ /**
20557
+ * Creates a deep clone. Elements are deep cloned,
20558
+ * all other values are deep cloned via ramda clone.
20559
+ */
20560
+ cloneDeep() {
20561
+ const copy = new Metadata();
20562
+ for (const [key, value] of Object.entries(this)) {
20563
+ if (value instanceof this.Element) {
20564
+ copy.set(key, this.cloneDeepElement(value));
20565
+ } else {
20566
+ copy.set(key, (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(value));
20567
+ }
20568
+ }
20569
+ return copy;
20570
+ }
20571
+ }
20572
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Metadata);
20573
+
20574
+ /***/ },
20575
+
20465
20576
  /***/ 5156
20466
20577
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20467
20578
 
@@ -21108,7 +21219,7 @@ const cloneShallowElement = element => {
21108
21219
  const copy = new Ctor();
21109
21220
  copy.element = element.element;
21110
21221
  if (!element.isMetaEmpty) {
21111
- copy.meta = cloneDeep(element.meta);
21222
+ copy.meta = element.meta.cloneDeep();
21112
21223
  }
21113
21224
  if (!element.isAttributesEmpty) {
21114
21225
  copy.attributes = cloneDeep(element.attributes);
@@ -21136,8 +21247,8 @@ const cloneShallowElement = element => {
21136
21247
 
21137
21248
  /**
21138
21249
  * Creates a shallow clone of an ApiDOM Element, KeyValuePair, or ObjectSlice.
21139
- * The element itself is cloned, but content references are shared (except for
21140
- * meta and attributes which are deep cloned to preserve semantic information).
21250
+ * The element itself is cloned, but content references are shared.
21251
+ * Meta and attributes are deep cloned to preserve semantic information.
21141
21252
  * @public
21142
21253
  */
21143
21254
  const cloneShallow = value => {
@@ -22212,7 +22323,7 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
22212
22323
  * Search the tree recursively and find the element with the matching ID.
22213
22324
  */
22214
22325
  getById(id) {
22215
- return this.find(item => item.id.toValue() === id).first;
22326
+ return this.find(item => item.id === id).first;
22216
22327
  }
22217
22328
 
22218
22329
  /**
@@ -22242,18 +22353,24 @@ class CollectionElement extends _Element_mjs__WEBPACK_IMPORTED_MODULE_0__["defau
22242
22353
  "use strict";
22243
22354
  __webpack_require__.r(__webpack_exports__);
22244
22355
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
22356
+ /* harmony export */ Metadata: () => (/* reexport safe */ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]),
22245
22357
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
22246
22358
  /* harmony export */ });
22247
22359
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3654);
22248
- /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6663);
22249
- /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8504);
22360
+ /* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1844);
22361
+ /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6663);
22362
+ /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8504);
22363
+
22250
22364
 
22251
22365
 
22366
+ // shared singleton for frozen elements with no meta — avoids allocation on every access
22367
+ const FROZEN_EMPTY_METADATA = Object.freeze(new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]());
22252
22368
 
22253
22369
  /**
22254
22370
  * Valid content types for an Element.
22255
22371
  * @public
22256
22372
  */
22373
+
22257
22374
  /**
22258
22375
  * Base Element class that all ApiDOM elements extend.
22259
22376
  *
@@ -22351,7 +22468,7 @@ class Element {
22351
22468
  _attributes;
22352
22469
 
22353
22470
  // ============================================================
22354
- // Prototype-assigned properties (set in elements.ts)
22471
+ // Prototype-assigned properties (set in registration.ts)
22355
22472
  // Using 'declare' allows TypeScript to know about these
22356
22473
  // without generating runtime code.
22357
22474
  // ============================================================
@@ -22412,13 +22529,13 @@ class Element {
22412
22529
  }
22413
22530
 
22414
22531
  // KeyValuePair
22415
- if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
22532
+ if (value instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
22416
22533
  this._content = value;
22417
22534
  return;
22418
22535
  }
22419
22536
 
22420
22537
  // ObjectSlice - extract elements array
22421
- if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
22538
+ if (value instanceof _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]) {
22422
22539
  this._content = value.elements;
22423
22540
  return;
22424
22541
  }
@@ -22439,24 +22556,22 @@ class Element {
22439
22556
 
22440
22557
  /**
22441
22558
  * Metadata about this element (id, classes, title, description, links).
22442
- * Lazily creates an ObjectElement if not set.
22559
+ * Lazily creates a Metadata instance if not set.
22443
22560
  */
22444
22561
  get meta() {
22445
22562
  if (!this._meta) {
22446
- if (this.isFrozen) {
22447
- const meta = new this.ObjectElement();
22448
- meta.freeze();
22449
- return meta;
22450
- }
22451
- this._meta = new this.ObjectElement();
22563
+ if (this.isFrozen) return FROZEN_EMPTY_METADATA;
22564
+ this._meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
22452
22565
  }
22453
22566
  return this._meta;
22454
22567
  }
22455
22568
  set meta(value) {
22456
- if (value instanceof Element) {
22569
+ if (value instanceof _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
22457
22570
  this._meta = value;
22458
- } else {
22459
- this.meta.set(value ?? {});
22571
+ } else if (value && typeof value === 'object') {
22572
+ const meta = new _Metadata_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]();
22573
+ Object.assign(meta, value);
22574
+ this._meta = meta;
22460
22575
  }
22461
22576
  }
22462
22577
 
@@ -22489,10 +22604,8 @@ class Element {
22489
22604
 
22490
22605
  /** Unique identifier for this element. */
22491
22606
  get id() {
22492
- if (this.isFrozen) {
22493
- return this.getMetaProperty('id', '');
22494
- }
22495
22607
  if (!this.hasMetaProperty('id')) {
22608
+ if (this.isFrozen) return '';
22496
22609
  this.setMetaProperty('id', '');
22497
22610
  }
22498
22611
  return this.meta.get('id');
@@ -22503,10 +22616,8 @@ class Element {
22503
22616
 
22504
22617
  /** CSS-like class names. */
22505
22618
  get classes() {
22506
- if (this.isFrozen) {
22507
- return this.getMetaProperty('classes', []);
22508
- }
22509
22619
  if (!this.hasMetaProperty('classes')) {
22620
+ if (this.isFrozen) return [];
22510
22621
  this.setMetaProperty('classes', []);
22511
22622
  }
22512
22623
  return this.meta.get('classes');
@@ -22517,11 +22628,13 @@ class Element {
22517
22628
 
22518
22629
  /** Hyperlinks associated with this element. */
22519
22630
  get links() {
22520
- if (this.isFrozen) {
22521
- return this.getMetaProperty('links', []);
22522
- }
22523
22631
  if (!this.hasMetaProperty('links')) {
22524
- this.setMetaProperty('links', []);
22632
+ if (this.isFrozen) {
22633
+ const empty = new this.ArrayElement();
22634
+ empty.freeze();
22635
+ return empty;
22636
+ }
22637
+ this.setMetaProperty('links', new this.ArrayElement());
22525
22638
  }
22526
22639
  return this.meta.get('links');
22527
22640
  }
@@ -22541,7 +22654,7 @@ class Element {
22541
22654
  if (Array.isArray(content)) {
22542
22655
  return content;
22543
22656
  }
22544
- if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
22657
+ if (content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
22545
22658
  const children = [];
22546
22659
  if (content.key) children.push(content.key);
22547
22660
  if (content.value) children.push(content.value);
@@ -22571,7 +22684,6 @@ class Element {
22571
22684
 
22572
22685
  // Freeze meta and attributes
22573
22686
  if (this._meta) {
22574
- this._meta.parent = this;
22575
22687
  this._meta.freeze();
22576
22688
  }
22577
22689
  if (this._attributes) {
@@ -22606,7 +22718,7 @@ class Element {
22606
22718
  if (_content instanceof Element) {
22607
22719
  return _content.toValue();
22608
22720
  }
22609
- if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]) {
22721
+ if (_content instanceof _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]) {
22610
22722
  return _content.toValue();
22611
22723
  }
22612
22724
  if (Array.isArray(_content)) {
@@ -22662,7 +22774,7 @@ class Element {
22662
22774
  * @throws Error if this element has no ID
22663
22775
  */
22664
22776
  toRef(path) {
22665
- const idValue = this.id.toValue();
22777
+ const idValue = this.id;
22666
22778
  if (idValue === '') {
22667
22779
  throw new Error('Cannot create reference to an element without an ID');
22668
22780
  }
@@ -22674,26 +22786,16 @@ class Element {
22674
22786
  }
22675
22787
 
22676
22788
  /**
22677
- * Gets a meta property.
22789
+ * Gets a meta property value.
22678
22790
  *
22679
22791
  * When the property doesn't exist:
22680
- * - With defaultValue: returns a new refracted element instance (not cached)
22792
+ * - With defaultValue: returns the provided default value
22681
22793
  * - Without defaultValue: returns undefined
22682
- *
22683
- * Note: Each call with a default creates a new instance. Use setMetaProperty
22684
- * first if you need reference equality across multiple accesses.
22685
22794
  */
22686
22795
 
22687
22796
  getMetaProperty(name, defaultValue) {
22688
22797
  if (!this.hasMetaProperty(name)) {
22689
- if (defaultValue === undefined) {
22690
- return undefined;
22691
- }
22692
- const element = this.refract(defaultValue);
22693
- if (element && this.isFrozen) {
22694
- element.freeze();
22695
- }
22696
- return element;
22798
+ return defaultValue;
22697
22799
  }
22698
22800
  return this.meta.get(name);
22699
22801
  }
@@ -22706,20 +22808,17 @@ class Element {
22706
22808
  }
22707
22809
 
22708
22810
  /**
22709
- * Has meta property.
22811
+ * Checks whether a meta property exists.
22710
22812
  */
22711
22813
  hasMetaProperty(name) {
22712
- if (!this.isMetaEmpty) {
22713
- return this.meta.hasKey(name);
22714
- }
22715
- return false;
22814
+ return this._meta !== undefined && this._meta.hasKey(name);
22716
22815
  }
22717
22816
 
22718
22817
  /**
22719
22818
  * Checks if meta is empty.
22720
22819
  */
22721
22820
  get isMetaEmpty() {
22722
- return this._meta === undefined || this.meta.isEmpty;
22821
+ return this._meta === undefined || this._meta.isEmpty;
22723
22822
  }
22724
22823
 
22725
22824
  /**
@@ -22745,7 +22844,7 @@ class Element {
22745
22844
  }
22746
22845
 
22747
22846
  /**
22748
- * Has attributes property.
22847
+ * Checks whether an attributes property exists.
22749
22848
  */
22750
22849
  hasAttributesProperty(name) {
22751
22850
  if (!this.isAttributesEmpty) {
@@ -22764,6 +22863,7 @@ class Element {
22764
22863
 
22765
22864
  // Re-export types for convenience
22766
22865
 
22866
+
22767
22867
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Element);
22768
22868
 
22769
22869
  /***/ },
@@ -23202,6 +23302,10 @@ __webpack_require__.r(__webpack_exports__);
23202
23302
  /* harmony import */ var _elements_Style_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(9686);
23203
23303
  /* harmony import */ var _ObjectSlice_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(8504);
23204
23304
  /* harmony import */ var _KeyValuePair_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6663);
23305
+ /* harmony import */ var _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(1844);
23306
+ /* harmony import */ var _clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2111);
23307
+
23308
+
23205
23309
 
23206
23310
 
23207
23311
 
@@ -23261,14 +23365,16 @@ function refract(value) {
23261
23365
  }
23262
23366
 
23263
23367
  // Set up prototype assignments for circular dependency resolution.
23264
- // These allow Element instances to create ObjectElement, MemberElement, RefElement
23265
- // without importing them directly (which would cause circular imports).
23368
+ // These allow Element and Metadata instances to reference classes they can't import
23369
+ // directly (which would cause circular imports).
23266
23370
  // Using 'declare' in the class definitions enables type-safe access to these properties.
23267
23371
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ObjectElement = _primitives_ObjectElement_mjs__WEBPACK_IMPORTED_MODULE_8__["default"];
23268
23372
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.ArrayElement = _primitives_ArrayElement_mjs__WEBPACK_IMPORTED_MODULE_6__["default"];
23269
23373
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.RefElement = _elements_RefElement_mjs__WEBPACK_IMPORTED_MODULE_10__["default"];
23270
23374
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.MemberElement = _primitives_MemberElement_mjs__WEBPACK_IMPORTED_MODULE_7__["default"];
23271
23375
  _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.refract = refract;
23376
+ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.Element = _primitives_Element_mjs__WEBPACK_IMPORTED_MODULE_0__["default"];
23377
+ _Metadata_mjs__WEBPACK_IMPORTED_MODULE_18__["default"].prototype.cloneDeepElement = element => (0,_clone_index_mjs__WEBPACK_IMPORTED_MODULE_19__.cloneDeep)(element);
23272
23378
 
23273
23379
  /**
23274
23380
  * Contains all of the element classes, and related structures and methods
@@ -23333,7 +23439,13 @@ class JSONSerialiser {
23333
23439
  element: element.element
23334
23440
  };
23335
23441
  if (!element.isMetaEmpty) {
23336
- payload.meta = this.serialiseObject(element.meta);
23442
+ const serialisedMeta = this.serialiseMeta(element);
23443
+ if (serialisedMeta) {
23444
+ payload.meta = serialisedMeta.meta;
23445
+ if (serialisedMeta.rawKeys.length > 0) {
23446
+ payload.__meta_raw__ = serialisedMeta.rawKeys;
23447
+ }
23448
+ }
23337
23449
  }
23338
23450
  if (!element.isAttributesEmpty) {
23339
23451
  payload.attributes = this.serialiseObject(element.attributes);
@@ -23380,7 +23492,7 @@ class JSONSerialiser {
23380
23492
  element.element = value.element;
23381
23493
  }
23382
23494
 
23383
- // Extract __mappings__ and __styles__ without mutating input, filter remaining meta
23495
+ // Extract special meta keys without mutating input, filter remaining meta
23384
23496
  let mappingsDoc;
23385
23497
  let stylesDoc;
23386
23498
  let metaToDeserialize = value.meta;
@@ -23394,8 +23506,15 @@ class JSONSerialiser {
23394
23506
  stylesDoc = __styles__;
23395
23507
  metaToDeserialize = Object.keys(rest).length > 0 ? rest : undefined;
23396
23508
  }
23509
+
23510
+ // determine which meta keys were raw primitives before serialization
23511
+ const rawKeys = value.__meta_raw__ ? new Set(value.__meta_raw__) : undefined;
23397
23512
  if (metaToDeserialize) {
23398
- this.deserialiseObject(metaToDeserialize, element.meta);
23513
+ for (const [key, doc] of Object.entries(metaToDeserialize)) {
23514
+ const deserialized = this.deserialise(doc);
23515
+ // unwrap keys that were raw primitives before serialization
23516
+ element.setMetaProperty(key, rawKeys?.has(key) ? deserialized.toValue() : deserialized);
23517
+ }
23399
23518
  }
23400
23519
 
23401
23520
  // Restore source position from __mappings__
@@ -23458,6 +23577,27 @@ class JSONSerialiser {
23458
23577
  }
23459
23578
  return content;
23460
23579
  }
23580
+ serialiseMeta(element) {
23581
+ const meta = {};
23582
+ const rawKeys = [];
23583
+ let hasEntries = false;
23584
+ for (const [key, value] of Object.entries(element.meta)) {
23585
+ if (value instanceof this.namespace.elements.Element) {
23586
+ meta[key] = this.serialise(value);
23587
+ hasEntries = true;
23588
+ } else if (value !== undefined) {
23589
+ // refract primitives to maintain JSON Refract spec compatibility
23590
+ const refracted = element.refract(value);
23591
+ meta[key] = this.serialise(refracted);
23592
+ rawKeys.push(key);
23593
+ hasEntries = true;
23594
+ }
23595
+ }
23596
+ return hasEntries ? {
23597
+ meta,
23598
+ rawKeys
23599
+ } : undefined;
23600
+ }
23461
23601
  serialiseObject(obj) {
23462
23602
  const result = {};
23463
23603
  obj.forEach((value, key) => {
@@ -25364,7 +25504,8 @@ __webpack_require__.r(__webpack_exports__);
25364
25504
  const refract = (value, {
25365
25505
  element = 'arazzoSpecification1',
25366
25506
  plugins = [],
25367
- specificationObj = _specification_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]
25507
+ specificationObj = _specification_mjs__WEBPACK_IMPORTED_MODULE_5__["default"],
25508
+ consume = false
25368
25509
  } = {}) => {
25369
25510
  const genericElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.refract)(value);
25370
25511
  const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_1__.resolveSpecification)(specificationObj);
@@ -25381,7 +25522,8 @@ const refract = (value, {
25381
25522
  */
25382
25523
  const RootVisitorClass = (0,ramda__WEBPACK_IMPORTED_MODULE_4__["default"])(specPath, resolvedSpec);
25383
25524
  const rootVisitor = new RootVisitorClass({
25384
- specObj: resolvedSpec
25525
+ specObj: resolvedSpec,
25526
+ consume
25385
25527
  });
25386
25528
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_2__.traverse)(genericElement, rootVisitor);
25387
25529
 
@@ -25973,7 +26115,7 @@ __webpack_require__.r(__webpack_exports__);
25973
26115
  */
25974
26116
  class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
25975
26117
  enter(path) {
25976
- this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
26118
+ this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
25977
26119
  path.stop();
25978
26120
  }
25979
26121
  }
@@ -26040,7 +26182,7 @@ __webpack_require__.r(__webpack_exports__);
26040
26182
  */
26041
26183
  class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
26042
26184
  specObj;
26043
- passingOptionsNames = ['specObj'];
26185
+ passingOptionsNames = ['specObj', 'consume'];
26044
26186
  constructor({
26045
26187
  specObj,
26046
26188
  ...rest
@@ -26086,7 +26228,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
26086
26228
  */
26087
26229
  const visitor = this.retrieveVisitorInstance(specPath, options);
26088
26230
  if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
26089
- return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
26231
+ return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
26090
26232
  }
26091
26233
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
26092
26234
  return visitor.element;
@@ -26105,7 +26247,7 @@ __webpack_require__.r(__webpack_exports__);
26105
26247
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
26106
26248
  /* harmony export */ });
26107
26249
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
26108
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7071);
26250
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
26109
26251
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
26110
26252
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
26111
26253
 
@@ -26120,19 +26262,21 @@ __webpack_require__.r(__webpack_exports__);
26120
26262
  */
26121
26263
  class Visitor {
26122
26264
  element;
26265
+ consume = false;
26266
+ consumeSafe = false;
26123
26267
  constructor(options = {}) {
26124
26268
  Object.assign(this, options);
26125
26269
  }
26126
26270
  copyMetaAndAttributes(from, to) {
26127
- if (!from.isMetaEmpty || !to.isMetaEmpty) {
26128
- const target = to.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.meta;
26129
- const source = from.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.meta;
26130
- to.meta = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
26271
+ if (!from.isMetaEmpty && !to.isMetaEmpty) {
26272
+ to.meta = to.meta.merge(from.meta);
26273
+ } else if (!from.isMetaEmpty) {
26274
+ to.meta = from.meta.cloneDeep();
26131
26275
  }
26132
- if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
26133
- const target = to.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.attributes;
26134
- const source = from.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.attributes;
26135
- to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
26276
+ if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
26277
+ to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
26278
+ } else if (!from.isAttributesEmpty) {
26279
+ to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
26136
26280
  }
26137
26281
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
26138
26282
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
@@ -26679,6 +26823,7 @@ class ArazzoSpecificationVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_2__
26679
26823
  constructor(options) {
26680
26824
  super(options);
26681
26825
  this.element = new _elements_ArazzoSpecification1_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]();
26826
+ this.consumeSafe = true;
26682
26827
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'ArazzoSpecification']);
26683
26828
  this.canSupportSpecificationExtensions = true;
26684
26829
  }
@@ -27672,15 +27817,18 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
27672
27817
  objectElement.forEach((value, key, memberElement) => {
27673
27818
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key)) && !this.ignoredFields.includes((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key))) {
27674
27819
  const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key)], value);
27675
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
27820
+ 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);
27676
27821
  this.copyMetaAndAttributes(memberElement, newMemberElement);
27677
- newMemberElement.classes.push('fixed-field');
27678
27822
  this.element.push(newMemberElement);
27823
+ // consume: release processed generic subtree
27824
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
27679
27825
  } else if (this.canSupportSpecificationExtensions && this.specificationExtensionPredicate(memberElement)) {
27680
27826
  const extensionElement = this.toRefractedElement(['document', 'extension'], memberElement);
27681
27827
  this.element.push(extensionElement);
27828
+ // consume: release processed generic subtree
27829
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
27682
27830
  } else if (!this.ignoredFields.includes((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key))) {
27683
- this.element.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27831
+ this.element.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27684
27832
  }
27685
27833
  });
27686
27834
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -27783,12 +27931,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
27783
27931
  } else if (!this.ignoredFields.includes((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key)) && this.fieldPatternPredicate((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key))) {
27784
27932
  const specPath = this.specPath(value);
27785
27933
  const patternedFieldElement = this.toRefractedElement(specPath, value);
27786
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
27934
+ 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);
27787
27935
  this.copyMetaAndAttributes(memberElement, newMemberElement);
27788
27936
  newMemberElement.classes.push('patterned-field');
27789
27937
  this.element.push(newMemberElement);
27938
+ // consume: release processed generic subtree
27939
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
27790
27940
  } else if (!this.ignoredFields.includes((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key))) {
27791
- this.element.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27941
+ this.element.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
27792
27942
  }
27793
27943
  });
27794
27944
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -29807,7 +29957,7 @@ __webpack_require__.r(__webpack_exports__);
29807
29957
  */
29808
29958
  class FallbackVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_1__["default"] {
29809
29959
  enter(path) {
29810
- this.element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
29960
+ this.element = this.consume ? path.node : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(path.node);
29811
29961
  path.stop();
29812
29962
  }
29813
29963
  }
@@ -29847,7 +29997,7 @@ __webpack_require__.r(__webpack_exports__);
29847
29997
  */
29848
29998
  class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
29849
29999
  specObj;
29850
- passingOptionsNames = ['specObj', 'parent'];
30000
+ passingOptionsNames = ['specObj', 'parent', 'consume'];
29851
30001
  constructor({
29852
30002
  specObj,
29853
30003
  ...rest
@@ -29893,7 +30043,7 @@ class SpecificationVisitor extends _Visitor_mjs__WEBPACK_IMPORTED_MODULE_6__["de
29893
30043
  */
29894
30044
  const visitor = this.retrieveVisitorInstance(specPath, options);
29895
30045
  if (visitor instanceof _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"] && visitor?.constructor === _FallbackVisitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) {
29896
- return (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
30046
+ return this.consume ? element : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(element);
29897
30047
  }
29898
30048
  (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_5__.traverse)(element, visitor, options);
29899
30049
  return visitor.element;
@@ -29912,7 +30062,7 @@ __webpack_require__.r(__webpack_exports__);
29912
30062
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
29913
30063
  /* harmony export */ });
29914
30064
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8400);
29915
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7071);
30065
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2111);
29916
30066
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5810);
29917
30067
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9686);
29918
30068
 
@@ -29927,19 +30077,21 @@ __webpack_require__.r(__webpack_exports__);
29927
30077
  */
29928
30078
  class Visitor {
29929
30079
  element;
30080
+ consume = false;
30081
+ consumeSafe = false;
29930
30082
  constructor(options) {
29931
30083
  Object.assign(this, options);
29932
30084
  }
29933
30085
  copyMetaAndAttributes(from, to) {
29934
- if (!from.isMetaEmpty || !to.isMetaEmpty) {
29935
- const target = to.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.meta;
29936
- const source = from.isMetaEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.meta;
29937
- to.meta = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
30086
+ if (!from.isMetaEmpty && !to.isMetaEmpty) {
30087
+ to.meta = to.meta.merge(from.meta);
30088
+ } else if (!from.isMetaEmpty) {
30089
+ to.meta = from.meta.cloneDeep();
29938
30090
  }
29939
- if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
29940
- const target = to.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : to.attributes;
29941
- const source = from.isAttributesEmpty ? new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]() : from.attributes;
29942
- to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(target, source);
30091
+ if (!from.isAttributesEmpty && !to.isAttributesEmpty) {
30092
+ to.attributes = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(to.attributes, from.attributes);
30093
+ } else if (!from.isAttributesEmpty) {
30094
+ to.attributes = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(from.attributes);
29943
30095
  }
29944
30096
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"].transfer(from, to);
29945
30097
  _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"].transfer(from, to);
@@ -30049,12 +30201,13 @@ class FixedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED_MOD
30049
30201
  const keyValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_3__["default"])(key);
30050
30202
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
30051
30203
  const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
30052
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), fixedFieldElement);
30204
+ 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);
30053
30205
  this.copyMetaAndAttributes(memberElement, newMemberElement);
30054
- newMemberElement.classes.push('fixed-field');
30055
30206
  this.element.content.push(newMemberElement);
30207
+ // consume: release processed generic subtree
30208
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
30056
30209
  } else if (!this.ignoredFields.includes(keyValue)) {
30057
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
30210
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
30058
30211
  }
30059
30212
  });
30060
30213
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -30143,12 +30296,14 @@ class PatternedFieldsVisitor extends _SpecificationVisitor_mjs__WEBPACK_IMPORTED
30143
30296
  if (!this.ignoredFields.includes(keyValue) && this.fieldPatternPredicate(keyValue)) {
30144
30297
  const specPath = this.specPath(value);
30145
30298
  const patternedFieldElement = this.toRefractedElement(specPath, value);
30146
- const newMemberElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(key), patternedFieldElement);
30299
+ 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);
30147
30300
  this.copyMetaAndAttributes(memberElement, newMemberElement);
30148
30301
  newMemberElement.classes.push('patterned-field');
30149
30302
  this.element.content.push(newMemberElement);
30303
+ // consume: release processed generic subtree
30304
+ if (this.consume && this.consumeSafe && !memberElement.isFrozen) memberElement.value = undefined;
30150
30305
  } else if (!this.ignoredFields.includes(keyValue)) {
30151
- this.element.content.push((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
30306
+ this.element.content.push(this.consume ? memberElement : (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(memberElement));
30152
30307
  }
30153
30308
  });
30154
30309
  this.copyMetaAndAttributes(objectElement, this.element);
@@ -30706,13 +30861,11 @@ __webpack_require__.r(__webpack_exports__);
30706
30861
  /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3031);
30707
30862
  /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6513);
30708
30863
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5162);
30709
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2111);
30710
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7601);
30711
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4673);
30712
- /* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5320);
30713
- /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9033);
30714
- /* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4686);
30715
- /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6059);
30864
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4673);
30865
+ /* harmony import */ var _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5320);
30866
+ /* harmony import */ var _bases_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9033);
30867
+ /* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4686);
30868
+ /* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6059);
30716
30869
 
30717
30870
 
30718
30871
 
@@ -30727,10 +30880,11 @@ __webpack_require__.r(__webpack_exports__);
30727
30880
  /**
30728
30881
  * @public
30729
30882
  */
30730
- class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSchemaVisitorBase {
30883
+ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_7__.JSONSchemaVisitorBase {
30731
30884
  constructor(options) {
30732
30885
  super(options);
30733
- this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]();
30886
+ this.element = new _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]();
30887
+ this.consumeSafe = true;
30734
30888
  this.specPath = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(['document', 'objects', 'JSONSchema']);
30735
30889
  }
30736
30890
  get defaultDialectIdentifier() {
@@ -30743,27 +30897,27 @@ class JSONSchemaVisitor extends _bases_mjs__WEBPACK_IMPORTED_MODULE_9__.JSONSche
30743
30897
 
30744
30898
  // for further processing consider this JSONSchema Element as parent for all sub-schemas
30745
30899
  this.parent = this.element;
30746
- return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_8__["default"].prototype.ObjectElement.call(this, path);
30900
+ return _generics_FixedFieldsVisitor_mjs__WEBPACK_IMPORTED_MODULE_6__["default"].prototype.ObjectElement.call(this, path);
30747
30901
  }
30748
30902
  handleDialectIdentifier(objectElement) {
30749
30903
  // handle $schema keyword in embedded resources
30750
30904
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
30751
30905
  // no parent available and no $schema is defined, set default $schema
30752
30906
  this.element.meta.set('inheritedDialectIdentifier', this.defaultDialectIdentifier);
30753
- } else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_11__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
30907
+ } else if ((0,_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__.isJSONSchemaElement)(this.parent) && !(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.isStringElement)(objectElement.get('$schema'))) {
30754
30908
  // parent is available and no $schema is defined, set parent $schema
30755
- 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));
30909
+ 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));
30756
30910
  this.element.meta.set('inheritedDialectIdentifier', inheritedDialectIdentifier);
30757
30911
  }
30758
30912
  }
30759
30913
  handleSchemaIdentifier(objectElement, identifierKeyword = 'id') {
30760
30914
  // handle schema identifier in embedded resources
30761
- // fetch parent's ancestorsSchemaIdentifiers
30762
- 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"]();
30915
+ // fetch parent's ancestorsSchemaIdentifiers (stored as plain string[])
30916
+ const ancestorsSchemaIdentifiers = this.parent !== undefined ? [...(this.parent.meta.get('ancestorsSchemaIdentifiers') ?? [])] : [];
30763
30917
  // get current schema identifier
30764
- const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(objectElement.get(identifierKeyword));
30918
+ const schemaIdentifier = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(objectElement.get(identifierKeyword));
30765
30919
 
30766
- // remember schema identifier if it's a non-empty strings
30920
+ // remember schema identifier if it's a non-empty string
30767
30921
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_3__["default"])(schemaIdentifier)) {
30768
30922
  ancestorsSchemaIdentifiers.push(schemaIdentifier);
30769
30923
  }
@@ -31925,8 +32079,9 @@ const parse = async source => {
31925
32079
  if (source.trim().length === 0) {
31926
32080
  return parseResult;
31927
32081
  }
31928
- const pojo = JSON.parse(source);
32082
+ let pojo = JSON.parse(source);
31929
32083
  const element = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.refract)(pojo);
32084
+ pojo = null; // allow GC to reclaim POJO
31930
32085
  element.classes.push('result');
31931
32086
  parseResult.push(element);
31932
32087
  return parseResult;
@@ -33900,7 +34055,10 @@ const parse = async (source, options = {}) => {
33900
34055
  result
33901
34056
  } = parseResultElement;
33902
34057
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(result)) {
33903
- const arazzoSpecificationElement = (0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_6__.refractArazzoSpecification1)(result, refractorOpts);
34058
+ const arazzoSpecificationElement = (0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_6__.refractArazzoSpecification1)(result, {
34059
+ consume: true,
34060
+ ...refractorOpts
34061
+ });
33904
34062
  arazzoSpecificationElement.classes.push('result');
33905
34063
  parseResultElement.replaceResult(arazzoSpecificationElement);
33906
34064
  }