@speclynx/apidom-reference 2.3.0 → 2.4.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.
@@ -2351,26 +2351,27 @@ __webpack_require__.r(__webpack_exports__);
2351
2351
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25162);
2352
2352
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12111);
2353
2353
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(78894);
2354
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41482);
2355
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44673);
2356
- /* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16126);
2357
- /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80796);
2358
- /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12020);
2359
- /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61198);
2360
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(21314);
2361
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(24329);
2362
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(76332);
2363
- /* harmony import */ var _selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(32054);
2364
- /* harmony import */ var _selectors_uri_ts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(56481);
2365
- /* harmony import */ var _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(37757);
2366
- /* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(51325);
2367
- /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(30658);
2368
- /* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(35014);
2369
- /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(98979);
2370
- /* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(10682);
2371
- /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(60888);
2372
- /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(53429);
2373
- /* harmony import */ var _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(44477);
2354
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37205);
2355
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(41482);
2356
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44673);
2357
+ /* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(16126);
2358
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80796);
2359
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12020);
2360
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(61198);
2361
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(21314);
2362
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24329);
2363
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(76332);
2364
+ /* harmony import */ var _selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(32054);
2365
+ /* harmony import */ var _selectors_uri_ts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(56481);
2366
+ /* harmony import */ var _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(37757);
2367
+ /* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(51325);
2368
+ /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(30658);
2369
+ /* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(35014);
2370
+ /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(98979);
2371
+ /* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(10682);
2372
+ /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(60888);
2373
+ /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(53429);
2374
+ /* harmony import */ var _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(44477);
2374
2375
 
2375
2376
 
2376
2377
 
@@ -2391,7 +2392,7 @@ __webpack_require__.r(__webpack_exports__);
2391
2392
 
2392
2393
 
2393
2394
  // initialize element identity manager
2394
- const identityManager = new _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__.IdentityManager();
2395
+ const identityManager = new _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__.IdentityManager();
2395
2396
 
2396
2397
  /**
2397
2398
  * @public
@@ -2412,23 +2413,23 @@ class OpenAPI3_1DereferenceVisitor {
2412
2413
  namespace,
2413
2414
  options,
2414
2415
  indirections = [],
2415
- ancestors = new _util_ts__WEBPACK_IMPORTED_MODULE_24__.AncestorLineage(),
2416
+ ancestors = new _util_ts__WEBPACK_IMPORTED_MODULE_25__.AncestorLineage(),
2416
2417
  refractCache = new Map()
2417
2418
  }) {
2418
2419
  this.indirections = indirections;
2419
2420
  this.namespace = namespace;
2420
2421
  this.reference = reference;
2421
2422
  this.options = options;
2422
- this.ancestors = new _util_ts__WEBPACK_IMPORTED_MODULE_24__.AncestorLineage(...ancestors);
2423
+ this.ancestors = new _util_ts__WEBPACK_IMPORTED_MODULE_25__.AncestorLineage(...ancestors);
2423
2424
  this.refractCache = refractCache;
2424
2425
  }
2425
2426
  toBaseURI(uri) {
2426
- return _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(uri)));
2427
+ return _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(uri)));
2427
2428
  }
2428
2429
  async toReference(uri) {
2429
2430
  // detect maximum depth of resolution
2430
2431
  if (this.reference.depth >= this.options.resolve.maxDepth) {
2431
- throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`);
2432
+ throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_19__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`);
2432
2433
  }
2433
2434
  const baseURI = this.toBaseURI(uri);
2434
2435
  const {
@@ -2439,7 +2440,7 @@ class OpenAPI3_1DereferenceVisitor {
2439
2440
  if (refSet.has(baseURI)) {
2440
2441
  return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURI, 'uri'));
2441
2442
  }
2442
- const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_20__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize(baseURI), {
2443
+ const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_21__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize(baseURI), {
2443
2444
  ...this.options,
2444
2445
  parse: {
2445
2446
  ...this.options.parse,
@@ -2448,7 +2449,7 @@ class OpenAPI3_1DereferenceVisitor {
2448
2449
  });
2449
2450
 
2450
2451
  // register new mutable reference with a refSet
2451
- const mutableReference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_21__["default"]({
2452
+ const mutableReference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_22__["default"]({
2452
2453
  uri: baseURI,
2453
2454
  value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(parseResult),
2454
2455
  depth: this.reference.depth + 1
@@ -2456,7 +2457,7 @@ class OpenAPI3_1DereferenceVisitor {
2456
2457
  refSet.add(mutableReference);
2457
2458
  if (this.options.dereference.immutable) {
2458
2459
  // register new immutable reference with a refSet
2459
- const immutableReference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_21__["default"]({
2460
+ const immutableReference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_22__["default"]({
2460
2461
  uri: `immutable://${baseURI}`,
2461
2462
  value: parseResult,
2462
2463
  depth: this.reference.depth + 1
@@ -2472,7 +2473,7 @@ class OpenAPI3_1DereferenceVisitor {
2472
2473
  */
2473
2474
  const ancestorNodes = path.getAncestorNodes();
2474
2475
  const directAncestors = new Set(ancestorNodes.filter(_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isElement));
2475
- const ancestorsLineage = new _util_ts__WEBPACK_IMPORTED_MODULE_24__.AncestorLineage(...this.ancestors, directAncestors);
2476
+ const ancestorsLineage = new _util_ts__WEBPACK_IMPORTED_MODULE_25__.AncestorLineage(...this.ancestors, directAncestors);
2476
2477
  return [ancestorsLineage, directAncestors];
2477
2478
  }
2478
2479
  async ReferenceElement(path) {
@@ -2484,8 +2485,8 @@ class OpenAPI3_1DereferenceVisitor {
2484
2485
  return;
2485
2486
  }
2486
2487
  const [ancestorsLineage, directAncestors] = this.toAncestorLineage(path);
2487
- const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2488
- const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2488
+ const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2489
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2489
2490
  const isExternalReference = !isInternalReference;
2490
2491
 
2491
2492
  // ignore resolving internal Reference Objects
@@ -2500,29 +2501,29 @@ class OpenAPI3_1DereferenceVisitor {
2500
2501
  path.skip();
2501
2502
  return;
2502
2503
  }
2503
- const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2504
- const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.resolve(retrievalURI, (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2504
+ const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2505
+ const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.resolve(retrievalURI, (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2505
2506
  this.indirections.push(referencingElement);
2506
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2507
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2507
2508
 
2508
2509
  // possibly non-semantic fragment
2509
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2510
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
2510
2511
  referencedElement.id = identityManager.identify(referencedElement);
2511
2512
 
2512
2513
  // applying semantics to a fragment
2513
2514
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isPrimitiveElement)(referencedElement)) {
2514
- const referencedElementType = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.meta.get('referenced-element'));
2515
- const cacheKey = `${referencedElementType}-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(identityManager.identify(referencedElement))}`;
2515
+ const referencedElementType = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.meta.get('referenced-element'));
2516
+ const cacheKey = `${referencedElementType}-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(identityManager.identify(referencedElement))}`;
2516
2517
  if (this.refractCache.has(cacheKey)) {
2517
2518
  referencedElement = this.refractCache.get(cacheKey);
2518
- } else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__.isReferenceLikeElement)(referencedElement)) {
2519
+ } else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.isReferenceLikeElement)(referencedElement)) {
2519
2520
  // handling indirect references
2520
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
2521
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractReference)(referencedElement);
2521
2522
  referencedElement.meta.set('referenced-element', referencedElementType);
2522
2523
  this.refractCache.set(cacheKey, referencedElement);
2523
2524
  } else {
2524
2525
  // handling direct references
2525
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
2526
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__["default"])(referencedElement, {
2526
2527
  element: referencedElementType
2527
2528
  });
2528
2529
  this.refractCache.set(cacheKey, referencedElement);
@@ -2531,24 +2532,24 @@ class OpenAPI3_1DereferenceVisitor {
2531
2532
 
2532
2533
  // detect direct or indirect reference
2533
2534
  if (referencingElement === referencedElement) {
2534
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Recursive Reference Object detected');
2535
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Recursive Reference Object detected');
2535
2536
  }
2536
2537
 
2537
2538
  // detect maximum depth of dereferencing
2538
2539
  if (this.indirections.length > this.options.dereference.maxDepth) {
2539
- throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_17__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
2540
+ throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
2540
2541
  }
2541
2542
 
2542
2543
  // detect second deep dive into the same fragment and avoid it
2543
2544
  if (ancestorsLineage.includes(referencedElement)) {
2544
2545
  reference.refSet.circular = true;
2545
2546
  if (this.options.dereference.circular === 'error') {
2546
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Circular reference detected');
2547
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Circular reference detected');
2547
2548
  } else if (this.options.dereference.circular === 'replace') {
2548
2549
  const refElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](referencedElement.id, {
2549
2550
  type: 'reference',
2550
2551
  uri: reference.uri,
2551
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
2552
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
2552
2553
  });
2553
2554
  const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
2554
2555
  const replacement = replacer(refElement);
@@ -2567,9 +2568,9 @@ class OpenAPI3_1DereferenceVisitor {
2567
2568
  * 3. Fragment is a Reference Object. We need to follow it to get the eventual value
2568
2569
  * 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
2569
2570
  */
2570
- const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
2571
+ const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
2571
2572
  const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
2572
- if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
2573
+ if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
2573
2574
  // append referencing reference to ancestors lineage
2574
2575
  directAncestors.add(referencingElement);
2575
2576
  const visitor = new OpenAPI3_1DereferenceVisitor({
@@ -2580,7 +2581,7 @@ class OpenAPI3_1DereferenceVisitor {
2580
2581
  refractCache: this.refractCache,
2581
2582
  ancestors: ancestorsLineage
2582
2583
  });
2583
- referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(referencedElement, visitor, {
2584
+ referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
2584
2585
  mutable: true
2585
2586
  });
2586
2587
 
@@ -2597,11 +2598,11 @@ class OpenAPI3_1DereferenceVisitor {
2597
2598
  mergedElement.meta.set('id', identityManager.generateId());
2598
2599
  // annotate fragment with info about original Reference element
2599
2600
  mergedElement.meta.set('ref-fields', {
2600
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref),
2601
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref),
2601
2602
  // @ts-ignore
2602
- description: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.description),
2603
+ description: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.description),
2603
2604
  // @ts-ignore
2604
- summary: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.summary)
2605
+ summary: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.summary)
2605
2606
  });
2606
2607
  // annotate fragment with info about origin
2607
2608
  mergedElement.meta.set('ref-origin', reference.uri);
@@ -2610,11 +2611,14 @@ class OpenAPI3_1DereferenceVisitor {
2610
2611
 
2611
2612
  // override description and summary (outer has higher priority then inner)
2612
2613
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isObjectElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isObjectElement)(mergedElement)) {
2613
- if (referencingElement.hasKey('description') && 'description' in referencedElement) {
2614
+ const fields = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__.fixedFields)(referencedElement, {
2615
+ indexed: true
2616
+ });
2617
+ if (referencingElement.hasKey('description') && Object.hasOwn(fields, 'description')) {
2614
2618
  mergedElement.remove('description');
2615
2619
  mergedElement.set('description', referencingElement.get('description'));
2616
2620
  }
2617
- if (referencingElement.hasKey('summary') && 'summary' in referencedElement) {
2621
+ if (referencingElement.hasKey('summary') && Object.hasOwn(fields, 'summary')) {
2618
2622
  mergedElement.remove('summary');
2619
2623
  mergedElement.set('summary', referencingElement.get('summary'));
2620
2624
  }
@@ -2639,8 +2643,8 @@ class OpenAPI3_1DereferenceVisitor {
2639
2643
  return;
2640
2644
  }
2641
2645
  const [ancestorsLineage, directAncestors] = this.toAncestorLineage(path);
2642
- const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2643
- const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2646
+ const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2647
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2644
2648
  const isExternalReference = !isInternalReference;
2645
2649
 
2646
2650
  // ignore resolving internal Path Item Objects
@@ -2653,48 +2657,48 @@ class OpenAPI3_1DereferenceVisitor {
2653
2657
  // skip traversing this Path Item element but traverse all it's child elements
2654
2658
  return;
2655
2659
  }
2656
- const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2657
- const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.resolve(retrievalURI, (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref));
2660
+ const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2661
+ const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.resolve(retrievalURI, (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref));
2658
2662
  this.indirections.push(referencingElement);
2659
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2663
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2660
2664
 
2661
2665
  // possibly non-semantic referenced element
2662
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2666
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
2663
2667
  referencedElement.id = identityManager.identify(referencedElement);
2664
2668
 
2665
2669
  /**
2666
2670
  * Applying semantics to a referenced element if semantics are missing.
2667
2671
  */
2668
2672
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isPrimitiveElement)(referencedElement)) {
2669
- const cacheKey = `path-item-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(identityManager.identify(referencedElement))}`;
2673
+ const cacheKey = `path-item-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(identityManager.identify(referencedElement))}`;
2670
2674
  if (this.refractCache.has(cacheKey)) {
2671
2675
  referencedElement = this.refractCache.get(cacheKey);
2672
2676
  } else {
2673
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
2677
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractPathItem)(referencedElement);
2674
2678
  this.refractCache.set(cacheKey, referencedElement);
2675
2679
  }
2676
2680
  }
2677
2681
 
2678
2682
  // detect direct or indirect reference
2679
2683
  if (referencingElement === referencedElement) {
2680
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Recursive Path Item Object reference detected');
2684
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Recursive Path Item Object reference detected');
2681
2685
  }
2682
2686
 
2683
2687
  // detect maximum depth of dereferencing
2684
2688
  if (this.indirections.length > this.options.dereference.maxDepth) {
2685
- throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_17__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
2689
+ throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
2686
2690
  }
2687
2691
 
2688
2692
  // detect second deep dive into the same fragment and avoid it
2689
2693
  if (ancestorsLineage.includes(referencedElement)) {
2690
2694
  reference.refSet.circular = true;
2691
2695
  if (this.options.dereference.circular === 'error') {
2692
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Circular reference detected');
2696
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Circular reference detected');
2693
2697
  } else if (this.options.dereference.circular === 'replace') {
2694
2698
  const refElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](referencedElement.id, {
2695
2699
  type: 'path-item',
2696
2700
  uri: reference.uri,
2697
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
2701
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
2698
2702
  });
2699
2703
  const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
2700
2704
  const replacement = replacer(refElement);
@@ -2713,9 +2717,9 @@ class OpenAPI3_1DereferenceVisitor {
2713
2717
  * 3. Fragment is a Path Item Object with $ref field. We need to follow it to get the eventual value
2714
2718
  * 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
2715
2719
  */
2716
- const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
2720
+ const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
2717
2721
  const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
2718
- if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
2722
+ if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
2719
2723
  // append referencing reference to ancestors lineage
2720
2724
  directAncestors.add(referencingElement);
2721
2725
  const visitor = new OpenAPI3_1DereferenceVisitor({
@@ -2726,7 +2730,7 @@ class OpenAPI3_1DereferenceVisitor {
2726
2730
  refractCache: this.refractCache,
2727
2731
  ancestors: ancestorsLineage
2728
2732
  });
2729
- referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(referencedElement, visitor, {
2733
+ referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
2730
2734
  mutable: true
2731
2735
  });
2732
2736
 
@@ -2738,20 +2742,20 @@ class OpenAPI3_1DereferenceVisitor {
2738
2742
  /**
2739
2743
  * Creating a new version of Path Item by merging fields from referenced Path Item with referencing one.
2740
2744
  */
2741
- if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
2745
+ if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement)) {
2742
2746
  const mergedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneShallow)(referencedElement);
2743
2747
  // assign unique id to merged element
2744
2748
  mergedElement.meta.set('id', identityManager.generateId());
2745
2749
  // existing keywords from referencing PathItemElement overrides ones from referenced element
2746
2750
  referencingElement.forEach((value, keyElement, item) => {
2747
- mergedElement.remove((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(keyElement));
2751
+ mergedElement.remove((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(keyElement));
2748
2752
  mergedElement.content.push(item);
2749
2753
  });
2750
2754
  mergedElement.remove('$ref');
2751
2755
 
2752
2756
  // annotate referenced element with info about original referencing element
2753
2757
  mergedElement.meta.set('ref-fields', {
2754
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
2758
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
2755
2759
  });
2756
2760
  // annotate referenced element with info about origin
2757
2761
  mergedElement.meta.set('ref-origin', reference.uri);
@@ -2775,14 +2779,14 @@ class OpenAPI3_1DereferenceVisitor {
2775
2779
 
2776
2780
  // operationRef and operationId fields are mutually exclusive
2777
2781
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(linkElement.operationId)) {
2778
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive.');
2782
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('LinkElement operationRef and operationId fields are mutually exclusive.');
2779
2783
  }
2780
2784
  let operationElement;
2781
2785
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(linkElement.operationRef)) {
2782
2786
  // possibly non-semantic referenced element
2783
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef));
2784
- const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef));
2785
- const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2787
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(linkElement.operationRef));
2788
+ const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(linkElement.operationRef));
2789
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2786
2790
  const isExternalReference = !isInternalReference;
2787
2791
 
2788
2792
  // ignore resolving internal Operation Object reference
@@ -2795,15 +2799,15 @@ class OpenAPI3_1DereferenceVisitor {
2795
2799
  // skip traversing this Link element but traverse all it's child elements
2796
2800
  return;
2797
2801
  }
2798
- const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef));
2799
- operationElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2802
+ const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(linkElement.operationRef));
2803
+ operationElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
2800
2804
  // applying semantics to a referenced element
2801
2805
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isPrimitiveElement)(operationElement)) {
2802
- const cacheKey = `operation-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(identityManager.identify(operationElement))}`;
2806
+ const cacheKey = `operation-${(0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(identityManager.identify(operationElement))}`;
2803
2807
  if (this.refractCache.has(cacheKey)) {
2804
2808
  operationElement = this.refractCache.get(cacheKey);
2805
2809
  } else {
2806
- operationElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.refractOperation)(operationElement);
2810
+ operationElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractOperation)(operationElement);
2807
2811
  this.refractCache.set(cacheKey, operationElement);
2808
2812
  }
2809
2813
  }
@@ -2821,12 +2825,12 @@ class OpenAPI3_1DereferenceVisitor {
2821
2825
  return;
2822
2826
  }
2823
2827
  if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(linkElement.operationId)) {
2824
- const operationId = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationId);
2825
- const reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize(this.reference.uri));
2826
- operationElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.find)(reference.value.result, e => (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isOperationElement)(e) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isElement)(e.operationId) && e.operationId.equals(operationId));
2828
+ const operationId = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(linkElement.operationId);
2829
+ const reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize(this.reference.uri));
2830
+ operationElement = (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.find)(reference.value.result, e => (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isOperationElement)(e) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isElement)(e.operationId) && e.operationId.equals(operationId));
2827
2831
  // OperationElement not found by its operationId
2828
2832
  if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_2__["default"])(operationElement)) {
2829
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"](`OperationElement(operationId=${operationId}) not found.`);
2833
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"](`OperationElement(operationId=${operationId}) not found.`);
2830
2834
  }
2831
2835
  const linkElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneShallow)(linkElement);
2832
2836
  linkElementCopy.operationId?.meta.set('operation', operationElement);
@@ -2847,10 +2851,10 @@ class OpenAPI3_1DereferenceVisitor {
2847
2851
 
2848
2852
  // value and externalValue fields are mutually exclusive
2849
2853
  if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(exampleElement.externalValue)) {
2850
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive.');
2854
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('ExampleElement value and externalValue fields are mutually exclusive.');
2851
2855
  }
2852
- const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue));
2853
- const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2856
+ const retrievalURI = this.toBaseURI((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(exampleElement.externalValue));
2857
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2854
2858
  const isExternalReference = !isInternalReference;
2855
2859
 
2856
2860
  // ignore resolving internal Example Objects
@@ -2863,7 +2867,7 @@ class OpenAPI3_1DereferenceVisitor {
2863
2867
  // skip traversing this Example element but traverse all it's child elements
2864
2868
  return;
2865
2869
  }
2866
- const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue));
2870
+ const reference = await this.toReference((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(exampleElement.externalValue));
2867
2871
 
2868
2872
  // shallow clone of the referenced element
2869
2873
  const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneShallow)(reference.value.result);
@@ -2893,18 +2897,18 @@ class OpenAPI3_1DereferenceVisitor {
2893
2897
  const [ancestorsLineage, directAncestors] = this.toAncestorLineage(path);
2894
2898
 
2895
2899
  // compute baseURI using rules around $id and $ref keywords
2896
- let reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize(this.reference.uri));
2900
+ let reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize(this.reference.uri));
2897
2901
  let {
2898
2902
  uri: retrievalURI
2899
2903
  } = reference;
2900
- const $refBaseURI = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.resolveSchema$refField)(retrievalURI, referencingElement);
2901
- const $refBaseURIStrippedHash = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash($refBaseURI);
2902
- const file = new _File_ts__WEBPACK_IMPORTED_MODULE_22__["default"]({
2904
+ const $refBaseURI = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.resolveSchema$refField)(retrievalURI, referencingElement);
2905
+ const $refBaseURIStrippedHash = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash($refBaseURI);
2906
+ const file = new _File_ts__WEBPACK_IMPORTED_MODULE_23__["default"]({
2903
2907
  uri: $refBaseURIStrippedHash
2904
2908
  });
2905
2909
  const isUnknownURI = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(r => r.canRead(file), this.options.resolve.resolvers);
2906
2910
  const isURL = !isUnknownURI;
2907
- let isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === $refBaseURI;
2911
+ let isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === $refBaseURI;
2908
2912
  let isExternalReference = !isInternalReference;
2909
2913
  this.indirections.push(referencingElement);
2910
2914
 
@@ -2915,9 +2919,9 @@ class OpenAPI3_1DereferenceVisitor {
2915
2919
  // we're dealing with canonical URI or URL with possible fragment
2916
2920
  retrievalURI = this.toBaseURI($refBaseURI);
2917
2921
  const selector = $refBaseURI;
2918
- const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(reference.value.result);
2919
- referencedElement = (0,_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_16__.evaluate)(selector, referenceAsSchema);
2920
- referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(referencedElement);
2922
+ const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(reference.value.result);
2923
+ referencedElement = (0,_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_17__.evaluate)(selector, referenceAsSchema);
2924
+ referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(referencedElement);
2921
2925
  referencedElement.id = identityManager.identify(referencedElement);
2922
2926
 
2923
2927
  // ignore resolving internal Schema Objects
@@ -2933,7 +2937,7 @@ class OpenAPI3_1DereferenceVisitor {
2933
2937
  } else {
2934
2938
  // we're assuming here that we're dealing with JSON Pointer here
2935
2939
  retrievalURI = this.toBaseURI($refBaseURI);
2936
- isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2940
+ isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2937
2941
  isExternalReference = !isInternalReference;
2938
2942
 
2939
2943
  // ignore resolving internal Schema Objects
@@ -2946,11 +2950,11 @@ class OpenAPI3_1DereferenceVisitor {
2946
2950
  // skip traversing this schema element but traverse all it's child elements
2947
2951
  return;
2948
2952
  }
2949
- reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize($refBaseURI));
2950
- const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2951
- const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(reference.value.result);
2952
- referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(referenceAsSchema, selector);
2953
- referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(referencedElement);
2953
+ reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize($refBaseURI));
2954
+ const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2955
+ const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(reference.value.result);
2956
+ referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(referenceAsSchema, selector);
2957
+ referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(referencedElement);
2954
2958
  referencedElement.id = identityManager.identify(referencedElement);
2955
2959
  }
2956
2960
  } catch (error) {
@@ -2958,10 +2962,10 @@ class OpenAPI3_1DereferenceVisitor {
2958
2962
  * No SchemaElement($id=URL) was not found, so we're going to try to resolve
2959
2963
  * the URL and assume the returned response is a JSON Schema.
2960
2964
  */
2961
- if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_25__["default"]) {
2962
- if ((0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_15__.isAnchor)((0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_15__.uriToAnchor)($refBaseURI))) {
2965
+ if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_26__["default"]) {
2966
+ if ((0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_16__.isAnchor)((0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_16__.uriToAnchor)($refBaseURI))) {
2963
2967
  // we're dealing with JSON Schema $anchor here
2964
- isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2968
+ isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2965
2969
  isExternalReference = !isInternalReference;
2966
2970
 
2967
2971
  // ignore resolving internal Schema Objects
@@ -2974,16 +2978,16 @@ class OpenAPI3_1DereferenceVisitor {
2974
2978
  // skip traversing this schema element but traverse all it's child elements
2975
2979
  return;
2976
2980
  }
2977
- reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize($refBaseURI));
2978
- const selector = (0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_15__.uriToAnchor)($refBaseURI);
2979
- const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(reference.value.result);
2980
- referencedElement = (0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_15__.evaluate)(selector, referenceAsSchema);
2981
- referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(referencedElement);
2981
+ reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize($refBaseURI));
2982
+ const selector = (0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_16__.uriToAnchor)($refBaseURI);
2983
+ const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(reference.value.result);
2984
+ referencedElement = (0,_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_16__.evaluate)(selector, referenceAsSchema);
2985
+ referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(referencedElement);
2982
2986
  referencedElement.id = identityManager.identify(referencedElement);
2983
2987
  } else {
2984
2988
  // we're assuming here that we're dealing with JSON Pointer here
2985
2989
  retrievalURI = this.toBaseURI($refBaseURI);
2986
- isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(this.reference.uri) === retrievalURI;
2990
+ isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(this.reference.uri) === retrievalURI;
2987
2991
  isExternalReference = !isInternalReference;
2988
2992
 
2989
2993
  // ignore resolving internal Schema Objects
@@ -2996,11 +3000,11 @@ class OpenAPI3_1DereferenceVisitor {
2996
3000
  // skip traversing this schema element but traverse all it's child elements
2997
3001
  return;
2998
3002
  }
2999
- reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_19__.unsanitize($refBaseURI));
3000
- const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
3001
- const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(reference.value.result);
3002
- referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(referenceAsSchema, selector);
3003
- referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToSchemaElement)(referencedElement);
3003
+ reference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_20__.unsanitize($refBaseURI));
3004
+ const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
3005
+ const referenceAsSchema = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(reference.value.result);
3006
+ referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(referenceAsSchema, selector);
3007
+ referencedElement = (0,_util_ts__WEBPACK_IMPORTED_MODULE_24__.maybeRefractToSchemaElement)(referencedElement);
3004
3008
  referencedElement.id = identityManager.identify(referencedElement);
3005
3009
  }
3006
3010
  } else {
@@ -3010,24 +3014,24 @@ class OpenAPI3_1DereferenceVisitor {
3010
3014
 
3011
3015
  // detect direct or indirect reference
3012
3016
  if (referencingElement === referencedElement) {
3013
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Recursive Schema Object reference detected');
3017
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Recursive Schema Object reference detected');
3014
3018
  }
3015
3019
 
3016
3020
  // detect maximum depth of dereferencing
3017
3021
  if (this.indirections.length > this.options.dereference.maxDepth) {
3018
- throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_17__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
3022
+ throw new _errors_MaximumDereferenceDepthError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
3019
3023
  }
3020
3024
 
3021
3025
  // detect second deep dive into the same fragment and avoid it
3022
3026
  if (ancestorsLineage.includes(referencedElement)) {
3023
3027
  reference.refSet.circular = true;
3024
3028
  if (this.options.dereference.circular === 'error') {
3025
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('Circular reference detected');
3029
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('Circular reference detected');
3026
3030
  } else if (this.options.dereference.circular === 'replace') {
3027
3031
  const refElement = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](referencedElement.id, {
3028
3032
  type: 'json-schema',
3029
3033
  uri: reference.uri,
3030
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
3034
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
3031
3035
  });
3032
3036
  const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
3033
3037
  const replacement = replacer(refElement);
@@ -3046,9 +3050,9 @@ class OpenAPI3_1DereferenceVisitor {
3046
3050
  * 3. Fragment is a Schema Object with $ref field. We need to follow it to get the eventual value
3047
3051
  * 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
3048
3052
  */
3049
- const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_19__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
3053
+ const isNonRootDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_20__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
3050
3054
  const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
3051
- if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
3055
+ if ((isExternalReference || isNonRootDocument || (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isSchemaElement)(referencedElement) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
3052
3056
  // append referencing reference to ancestors lineage
3053
3057
  directAncestors.add(referencingElement);
3054
3058
  const visitor = new OpenAPI3_1DereferenceVisitor({
@@ -3059,7 +3063,7 @@ class OpenAPI3_1DereferenceVisitor {
3059
3063
  refractCache: this.refractCache,
3060
3064
  ancestors: ancestorsLineage
3061
3065
  });
3062
- referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(referencedElement, visitor, {
3066
+ referencedElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(referencedElement, visitor, {
3063
3067
  mutable: true
3064
3068
  });
3065
3069
 
@@ -3069,13 +3073,13 @@ class OpenAPI3_1DereferenceVisitor {
3069
3073
  this.indirections.pop();
3070
3074
 
3071
3075
  // Boolean JSON Schemas
3072
- if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isBooleanJsonSchemaElement)(referencedElement)) {
3076
+ if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isBooleanJsonSchemaElement)(referencedElement)) {
3073
3077
  const booleanJsonSchemaElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(referencedElement);
3074
3078
  // assign unique id to merged element
3075
3079
  booleanJsonSchemaElement.meta.set('id', identityManager.generateId());
3076
3080
  // annotate referenced element with info about original referencing element
3077
3081
  booleanJsonSchemaElement.meta.set('ref-fields', {
3078
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
3082
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
3079
3083
  });
3080
3084
  // annotate referenced element with info about origin
3081
3085
  booleanJsonSchemaElement.meta.set('ref-origin', reference.uri);
@@ -3088,19 +3092,19 @@ class OpenAPI3_1DereferenceVisitor {
3088
3092
  /**
3089
3093
  * Creating a new version of Schema Object by merging fields from referenced Schema Object with referencing one.
3090
3094
  */
3091
- if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.isSchemaElement)(referencedElement)) {
3095
+ if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isSchemaElement)(referencedElement)) {
3092
3096
  const mergedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__.cloneShallow)(referencedElement);
3093
3097
  // assign unique id to merged element
3094
3098
  mergedElement.meta.set('id', identityManager.generateId());
3095
3099
  // existing keywords from referencing schema overrides ones from referenced schema
3096
3100
  referencingElement.forEach((value, keyElement, item) => {
3097
- mergedElement.remove((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(keyElement));
3101
+ mergedElement.remove((0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(keyElement));
3098
3102
  mergedElement.content.push(item);
3099
3103
  });
3100
3104
  mergedElement.remove('$ref');
3101
3105
  // annotate referenced element with info about original referencing element
3102
3106
  mergedElement.meta.set('ref-fields', {
3103
- $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref)
3107
+ $ref: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement.$ref)
3104
3108
  });
3105
3109
  // annotate fragment with info about origin
3106
3110
  mergedElement.meta.set('ref-origin', reference.uri);
@@ -18014,7 +18018,7 @@ __webpack_require__.r(__webpack_exports__);
18014
18018
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
18015
18019
  /* harmony export */ VERSION: () => (/* binding */ VERSION)
18016
18020
  /* harmony export */ });
18017
- const VERSION = "1.13.3";
18021
+ const VERSION = "1.13.4";
18018
18022
 
18019
18023
  /***/ },
18020
18024
 
@@ -36431,6 +36435,58 @@ var and = /*#__PURE__*/(0,_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["defa
36431
36435
 
36432
36436
  /***/ },
36433
36437
 
36438
+ /***/ 37205
36439
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
36440
+
36441
+ "use strict";
36442
+ __webpack_require__.r(__webpack_exports__);
36443
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
36444
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
36445
+ /* harmony export */ fixedFields: () => (/* binding */ fixedFields)
36446
+ /* harmony export */ });
36447
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60728);
36448
+
36449
+
36450
+ /**
36451
+ * Represents a fixed field definition.
36452
+ * @public
36453
+ */
36454
+
36455
+ /**
36456
+ * Returns the fixed fields for an Element class or instance.
36457
+ *
36458
+ * @param elementOrClass - Element instance or class
36459
+ * @param options - Options for return format
36460
+ * @returns Array of fixed fields, or object indexed by name if options.indexed is true
36461
+ *
36462
+ * @example
36463
+ * ```ts
36464
+ * import { fixedFields } from '@speclynx/apidom-core';
36465
+ *
36466
+ * // Get fixed fields as array
36467
+ * const fields = fixedFields(ParameterElement);
36468
+ *
36469
+ * // Get fixed fields as indexed object for O(1) lookups
36470
+ * const fieldsIndex = fixedFields(ParameterElement, { indexed: true });
36471
+ * if (Object.hasOwn(fieldsIndex, 'description')) {
36472
+ * // field exists
36473
+ * }
36474
+ * ```
36475
+ *
36476
+ * @public
36477
+ */
36478
+ function fixedFields(elementOrClass, options) {
36479
+ const constructor = elementOrClass instanceof _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__["default"] ? elementOrClass.constructor : elementOrClass;
36480
+ const fields = constructor.fixedFields ?? [];
36481
+ if (options?.indexed) {
36482
+ return Object.fromEntries(fields.map(f => [f.name, f]));
36483
+ }
36484
+ return fields;
36485
+ }
36486
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (fixedFields);
36487
+
36488
+ /***/ },
36489
+
36434
36490
  /***/ 37297
36435
36491
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
36436
36492
 
@@ -64189,13 +64245,8 @@ class Axios {
64189
64245
 
64190
64246
  promise = Promise.resolve(config);
64191
64247
 
64192
- let prevResult = config;
64193
64248
  while (i < len) {
64194
- promise = promise
64195
- .then(chain[i++])
64196
- .then(result => { prevResult = result !== undefined ? result : prevResult })
64197
- .catch(chain[i++])
64198
- .then(() => prevResult);
64249
+ promise = promise.then(chain[i++], chain[i++]);
64199
64250
  }
64200
64251
 
64201
64252
  return promise;
@@ -64226,7 +64277,7 @@ class Axios {
64226
64277
  len = responseInterceptorChain.length;
64227
64278
 
64228
64279
  while (i < len) {
64229
- promise = promise.then(responseInterceptorChain[i++]).catch(responseInterceptorChain[i++]);
64280
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
64230
64281
  }
64231
64282
 
64232
64283
  return promise;