@speclynx/apidom-reference 4.13.0 → 4.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +99 -3
  3. package/dist/apidom-reference.browser.js +2076 -216
  4. package/dist/apidom-reference.browser.min.js +1 -1
  5. package/package.json +33 -28
  6. package/src/bundle/strategies/arazzo-1/index.cjs +94 -0
  7. package/src/bundle/strategies/arazzo-1/index.mjs +81 -0
  8. package/src/bundle/strategies/arazzo-1/visitor.cjs +417 -0
  9. package/src/bundle/strategies/arazzo-1/visitor.mjs +409 -0
  10. package/src/bundle/strategies/openapi-2/visitor.cjs +8 -16
  11. package/src/bundle/strategies/openapi-2/visitor.mjs +8 -16
  12. package/src/bundle/strategies/openapi-3-0/visitor.cjs +10 -18
  13. package/src/bundle/strategies/openapi-3-0/visitor.mjs +10 -18
  14. package/src/bundle/strategies/openapi-3-1/index.cjs +59 -2
  15. package/src/bundle/strategies/openapi-3-1/index.mjs +54 -2
  16. package/src/bundle/strategies/openapi-3-1/visitor.cjs +811 -0
  17. package/src/bundle/strategies/openapi-3-1/visitor.mjs +803 -0
  18. package/src/configuration/saturated.cjs +10 -9
  19. package/src/configuration/saturated.mjs +2 -1
  20. package/src/util/url.cjs +26 -4
  21. package/src/util/url.mjs +23 -2
  22. package/types/apidom-reference.d.ts +10 -0
  23. package/types/bundle/strategies/arazzo-1/index.d.ts +31 -0
  24. package/types/bundle/strategies/arazzo-1/visitor.d.ts +90 -0
  25. package/types/bundle/strategies/openapi-2/visitor.d.ts +2 -2
  26. package/types/bundle/strategies/openapi-3-0/visitor.d.ts +2 -2
  27. package/types/bundle/strategies/openapi-3-1/index.d.ts +6 -1
  28. package/types/bundle/strategies/openapi-3-1/visitor.d.ts +141 -0
  29. package/types/util/url.d.ts +8 -0
@@ -288,6 +288,555 @@ class BundleStrategy {
288
288
 
289
289
  /***/ },
290
290
 
291
+ /***/ 17435
292
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
293
+
294
+ "use strict";
295
+ __webpack_require__.r(__webpack_exports__);
296
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
297
+ /* harmony export */ Arazzo1BundleVisitor: () => (/* reexport safe */ _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
298
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
299
+ /* harmony export */ });
300
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
301
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
302
+ /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(53787);
303
+ /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28839);
304
+ /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98979);
305
+ /* harmony import */ var _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24131);
306
+ /* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(75508);
307
+ /* harmony import */ var _visitor_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(35533);
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+ /**
317
+ * @public
318
+ */
319
+
320
+ /**
321
+ * @public
322
+ */
323
+ class Arazzo1BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
324
+ constructor(options) {
325
+ super({
326
+ ...(options ?? {}),
327
+ name: 'arazzo-1'
328
+ });
329
+ }
330
+ canBundle(file) {
331
+ // assert by media type
332
+ if (file.mediaType !== 'text/plain') {
333
+ return _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
334
+ }
335
+
336
+ // assert by inspecting ApiDOM
337
+ return (0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_3__.isArazzoSpecification1Element)(file.parseResult?.result);
338
+ }
339
+ async bundle(file, options) {
340
+ const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
341
+ const mutableRefSet = new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
342
+ let refSet = immutableRefSet;
343
+ let reference;
344
+
345
+ // determine the initial reference
346
+ if (!immutableRefSet.has(file.uri)) {
347
+ reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
348
+ uri: file.uri,
349
+ value: file.parseResult
350
+ });
351
+ immutableRefSet.add(reference);
352
+ } else {
353
+ // pre-computed refSet was provided as configuration option
354
+ reference = immutableRefSet.find(ref => ref.uri === file.uri);
355
+ }
356
+
357
+ /**
358
+ * Clone refSet due the bundling process being mutable.
359
+ * We don't want to mutate the original refSet and the references.
360
+ */
361
+ if (options.bundle.immutable) {
362
+ immutableRefSet.refs.map(ref => new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
363
+ ...ref,
364
+ value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(ref.value)
365
+ })).forEach(ref => mutableRefSet.add(ref));
366
+ reference = mutableRefSet.find(ref => ref.uri === file.uri);
367
+ refSet = mutableRefSet;
368
+ }
369
+ const visitor = new _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]({
370
+ reference: reference,
371
+ options
372
+ });
373
+ await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
374
+ mutable: true
375
+ });
376
+ const parseResult = reference.value;
377
+
378
+ /**
379
+ * Release all memory if this refSet was not provided as a configuration option.
380
+ * If provided as configuration option, then provider is responsible for cleanup.
381
+ */
382
+ if (options.bundle.refSet === null) {
383
+ immutableRefSet.clean();
384
+ }
385
+ mutableRefSet.clean();
386
+ return parseResult;
387
+ }
388
+ }
389
+
390
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Arazzo1BundleStrategy);
391
+
392
+ /***/ },
393
+
394
+ /***/ 35533
395
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
396
+
397
+ "use strict";
398
+ __webpack_require__.r(__webpack_exports__);
399
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
400
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
401
+ /* harmony export */ });
402
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87009);
403
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25162);
404
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12111);
405
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84660);
406
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(37205);
407
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44673);
408
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16280);
409
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(80796);
410
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(12020);
411
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61198);
412
+ /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(90016);
413
+ /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(41016);
414
+ /* harmony import */ var _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(81002);
415
+ /* harmony import */ var _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(8853);
416
+ /* harmony import */ var _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(16843);
417
+ /* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(51325);
418
+ /* harmony import */ var _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(44477);
419
+ /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(30658);
420
+ /* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(35014);
421
+ /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(98979);
422
+ /* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(10682);
423
+ /* harmony import */ var _dereference_strategies_arazzo_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(32054);
424
+ /* harmony import */ var _dereference_strategies_arazzo_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(56481);
425
+ /* harmony import */ var _dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(91005);
426
+ /* harmony import */ var _dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(60888);
427
+ /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(25939);
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+ /**
448
+ * The Components Object field where embedded JSON Schema resources are hoisted.
449
+ * Sourced from the Components Object fixed fields so it cannot drift from the
450
+ * namespace definition.
451
+ */
452
+ const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_4__.fixedFields)(_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_10__.ComponentsElement, {
453
+ indexed: true
454
+ });
455
+
456
+ /**
457
+ * @public
458
+ */
459
+
460
+ /**
461
+ * @public
462
+ */
463
+ class Arazzo1BundleVisitor {
464
+ reference;
465
+ options;
466
+
467
+ /**
468
+ * The entry parse result. Derived from the shared refSet's root reference.
469
+ */
470
+ get entryParseResult() {
471
+ return this.reference.refSet.rootRef.value;
472
+ }
473
+
474
+ /**
475
+ * The entry document element. Embedded external schema resources are placed
476
+ * into its `components.inputs` object. The `canBundle` guard guarantees it is
477
+ * an ArazzoSpecification1Element.
478
+ */
479
+ get entryResult() {
480
+ return this.entryParseResult.result;
481
+ }
482
+
483
+ /**
484
+ * Shared across the entry document and every external document visitor.
485
+ * Guarantees each external resource is embedded exactly once, keyed by its
486
+ * resource URI.
487
+ */
488
+ assignments;
489
+
490
+ /**
491
+ * Component names already reserved per Components Object field. Reserved
492
+ * before recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
493
+ * components that are still being bundled.
494
+ */
495
+ reservedNames;
496
+ constructor({
497
+ reference,
498
+ options,
499
+ assignments = new Map(),
500
+ reservedNames = new Map()
501
+ }) {
502
+ this.reference = reference;
503
+ this.options = options;
504
+ this.assignments = assignments;
505
+ this.reservedNames = reservedNames;
506
+ }
507
+ toBaseURI(uri) {
508
+ return _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(uri)));
509
+ }
510
+ async toReference(uri) {
511
+ // detect maximum depth of resolution
512
+ if (this.reference.depth >= this.options.resolve.maxDepth) {
513
+ throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_15__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
514
+ maxDepth: this.options.resolve.maxDepth,
515
+ uri: this.reference.uri
516
+ });
517
+ }
518
+ const baseURI = this.toBaseURI(uri);
519
+ const {
520
+ refSet
521
+ } = this.reference;
522
+
523
+ // we've already processed this Reference in past
524
+ if (refSet.has(baseURI)) {
525
+ return refSet.find(ref => ref.uri === baseURI);
526
+ }
527
+ const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_18__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.unsanitize(baseURI), {
528
+ ...this.options,
529
+ parse: {
530
+ ...this.options.parse,
531
+ mediaType: 'text/plain'
532
+ }
533
+ });
534
+ const reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_19__["default"]({
535
+ uri: baseURI,
536
+ value: parseResult,
537
+ depth: this.reference.depth + 1
538
+ });
539
+ refSet.add(reference);
540
+ return reference;
541
+ }
542
+
543
+ /**
544
+ * Handles an error according to the `bundle.continueOnError` option.
545
+ *
546
+ * For new errors: wraps in UnresolvableReferenceError with structured
547
+ * context. For errors already wrapped by a nested visitor: prepends the
548
+ * current hop to the trace.
549
+ *
550
+ * Inner/intermediate visitors always throw to let the trace accumulate. Only
551
+ * the entry document visitor respects continueOnError (callback/swallow/throw).
552
+ */
553
+ handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
554
+ // a collision reported as `error` is a deliberate hard stop with no
555
+ // resolution-failure analog, so pass it through unchanged. A maxDepth
556
+ // breach (MaximumBundleDepthError, which also extends BundleError) is a
557
+ // resolution failure and flows through below — wrapped and subject to
558
+ // continueOnError, like dereferencing.
559
+ if (error instanceof _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_12__["default"] && !(error instanceof _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_14__["default"])) {
560
+ throw error;
561
+ }
562
+ const {
563
+ continueOnError
564
+ } = this.options.bundle;
565
+ const isEntryDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
566
+ const uri = this.reference.uri;
567
+ const type = referencingElement.element;
568
+ const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement);
569
+ const location = visitorPath.formatPath();
570
+ const hop = {
571
+ uri,
572
+ type,
573
+ refFieldName,
574
+ refFieldValue,
575
+ location,
576
+ codeFrame
577
+ };
578
+ let unresolvedError;
579
+ if (error instanceof _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_13__["default"]) {
580
+ // @ts-ignore
581
+ error.trace = [hop, ...error.trace];
582
+ unresolvedError = error;
583
+ } else {
584
+ unresolvedError = new _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_13__["default"](message, {
585
+ cause: error,
586
+ type,
587
+ uri,
588
+ location,
589
+ codeFrame,
590
+ refFieldName,
591
+ refFieldValue,
592
+ trace: []
593
+ });
594
+ }
595
+ if (!isEntryDocument || continueOnError === false) throw unresolvedError;
596
+ if (typeof continueOnError === 'function') continueOnError(unresolvedError);
597
+ }
598
+
599
+ /**
600
+ * Lazily creates the Components Object (and the `inputs` field within it) on
601
+ * the entry document, returning the field where a resource is embedded.
602
+ */
603
+ ensureInputsField() {
604
+ const entryResult = this.entryResult;
605
+ let components = entryResult.components;
606
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(components)) {
607
+ components = new _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_10__.ComponentsElement();
608
+ entryResult.components = components;
609
+ }
610
+ let inputs = components.get(cf.inputs.name);
611
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(inputs)) {
612
+ inputs = new _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_11__["default"]();
613
+ components.set(cf.inputs.name, inputs);
614
+ }
615
+ return inputs;
616
+ }
617
+
618
+ /**
619
+ * Computes the base component name (before collision suffixing) according to
620
+ * the configured naming strategy.
621
+ */
622
+ baseName(element, baseURI) {
623
+ // strategy specific options take precedence over the top-level bundle options
624
+ const componentNamesStrategy = this.options.bundle.strategyOpts['arazzo-1']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
625
+ const fallback = _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.getBasename(baseURI) || 'Schema';
626
+ if (typeof componentNamesStrategy === 'function') {
627
+ const resolved = componentNamesStrategy({
628
+ element,
629
+ field: cf.inputs.name,
630
+ jsonPointer: '',
631
+ baseURI
632
+ });
633
+ if (typeof resolved === 'string' && resolved !== '') {
634
+ return resolved;
635
+ }
636
+ return fallback;
637
+ }
638
+ if (componentNamesStrategy === 'title') {
639
+ const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(element.get('title')) : undefined;
640
+ if (typeof title === 'string' && title.trim() !== '') {
641
+ const name = (0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.sanitizeComponentName)((0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.toPascalCase)(title));
642
+ if (name !== '') return name;
643
+ }
644
+ // fall back to basename when no usable title is present
645
+ }
646
+ return fallback;
647
+ }
648
+
649
+ /**
650
+ * Computes a collision-free component name within `components.inputs`. A name
651
+ * is taken if it's already placed in inputs or reserved by a component that is
652
+ * still being bundled (reserved before recursion).
653
+ */
654
+ uniqueName(candidate) {
655
+ const field = cf.inputs.name;
656
+ const inputs = this.ensureInputsField();
657
+ const reserved = this.reservedNames.get(field) ?? new Set();
658
+ return (0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.uniqueName)(candidate, name => inputs.hasKey(name) || reserved.has(name));
659
+ }
660
+
661
+ /**
662
+ * Reports a collision-forced rename according to the configured severity.
663
+ * A rename means two distinct targets resolved to the same name; each keeps
664
+ * its own component (and origin), so report the rename per severity.
665
+ */
666
+ reportNameCollision(preferredName, componentName) {
667
+ // strategy specific options take precedence over the top-level bundle options
668
+ const onComponentNameCollision = this.options.bundle.strategyOpts['arazzo-1']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
669
+ if (componentName === preferredName || onComponentNameCollision === 'off') {
670
+ return;
671
+ }
672
+ const message = `Component "${preferredName}" in components/${cf.inputs.name} is referenced with the same name but different content. Renamed to "${componentName}".`;
673
+ if (onComponentNameCollision === 'error') {
674
+ throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_12__["default"](message);
675
+ }
676
+ const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"](message);
677
+ annotation.classes.push('warning');
678
+ annotation.code = 'bundle-component-name-collision';
679
+ // append (never prepend) so the result element stays ahead of annotations
680
+ this.entryParseResult.content.push(annotation);
681
+ }
682
+
683
+ /**
684
+ * JSON Schema Objects in Arazzo (used by Input Objects and inline schemas) are
685
+ * a JSON Schema 2020-12 dialect — the only external reference type Arazzo
686
+ * defines. They are bundled per the JSON Schema Compound Document rules: the
687
+ * external schema RESOURCE is embedded verbatim into `components.inputs`
688
+ * (carrying its `$id`), and the referencing `$ref` is left UNCHANGED — it
689
+ * keeps resolving against the embedded resource's `$id`. This mirrors the
690
+ * openapi-3-1 strategy's Schema Object handling.
691
+ */
692
+ async JSONSchemaElement(path) {
693
+ const referencingElement = path.node;
694
+
695
+ // skip current referencing schema as $ref keyword was not defined
696
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(referencingElement.$ref)) {
697
+ return;
698
+ }
699
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref);
700
+ try {
701
+ // compute baseURI using rules around $id and $ref keywords. The current
702
+ // document's URI is the retrieval URI — derive it directly (not via
703
+ // toReference) so an internal $ref needs no resolution and never trips the
704
+ // resolve.maxDepth guard.
705
+ const retrievalURI = this.reference.uri;
706
+ const $refBaseURI = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_24__.resolveSchema$refField)(retrievalURI, referencingElement);
707
+ const $refBaseURIStrippedHash = _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash($refBaseURI);
708
+ const file = new _File_ts__WEBPACK_IMPORTED_MODULE_20__["default"]({
709
+ uri: $refBaseURIStrippedHash
710
+ });
711
+ const isUnknownURI = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(r => r.canRead(file), this.options.resolve.resolvers);
712
+ const isURL = !isUnknownURI;
713
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(this.reference.uri) === $refBaseURIStrippedHash;
714
+ const isExternalReference = !isInternalReference;
715
+
716
+ // internal Schema Object $refs resolve against the in-document $id graph;
717
+ // leaving them untouched keeps that resolution valid. A JSON Schema $ref is
718
+ // never normalized to a bare fragment.
719
+ if (isInternalReference) {
720
+ return;
721
+ }
722
+
723
+ // honor the resolve.external switch
724
+ if (!this.options.resolve.external && isExternalReference) {
725
+ return;
726
+ }
727
+
728
+ // detect maximum depth of bundling before fetching the external resource
729
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
730
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_14__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
731
+ maxDepth: this.options.bundle.maxDepth,
732
+ uri: this.reference.uri
733
+ });
734
+ }
735
+
736
+ // locate the external schema resource the $ref targets, reusing the
737
+ // dereference strategy's classification. First try to resolve the target
738
+ // as a canonical URI / URL against the current document's $id graph; if
739
+ // that fails, fall back to fetching the external document and resolving
740
+ // the fragment there as a $anchor or JSON Pointer.
741
+ let schemaReference = this.reference;
742
+ try {
743
+ const referenceAsSchema = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToJSONSchemaElement)(schemaReference.value.result);
744
+ (0,_dereference_strategies_arazzo_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_22__.evaluate)($refBaseURI, referenceAsSchema);
745
+ } catch (error) {
746
+ if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_16__["default"]) {
747
+ if ((0,_dereference_strategies_arazzo_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_21__.isAnchor)((0,_dereference_strategies_arazzo_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_21__.uriToAnchor)($refBaseURI))) {
748
+ schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.unsanitize($refBaseURI));
749
+ const selector = (0,_dereference_strategies_arazzo_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_21__.uriToAnchor)($refBaseURI);
750
+ const referenceAsSchema = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToJSONSchemaElement)(schemaReference.value.result);
751
+ (0,_dereference_strategies_arazzo_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_21__.evaluate)(selector, referenceAsSchema);
752
+ } else {
753
+ schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.unsanitize($refBaseURI));
754
+ const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.URIFragmentIdentifier.fromURIReference($refBaseURI);
755
+ const referenceAsSchema = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToJSONSchemaElement)(schemaReference.value.result);
756
+ (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__.evaluate)(referenceAsSchema, selector);
757
+ }
758
+ } else {
759
+ throw error;
760
+ }
761
+ }
762
+
763
+ // a $ref that resolves (by $id/$anchor/pointer) within the current document
764
+ // is internal even when its URI form (e.g. a URN or absolute $id) is not a
765
+ // bare fragment. Leave it untouched — it resolves against the in-document
766
+ // $id graph, and embedding the current document into itself would be wrong.
767
+ if (_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(schemaReference.uri) === _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(this.reference.uri)) {
768
+ return;
769
+ }
770
+
771
+ // the resource to embed is the WHOLE external document (its root schema),
772
+ // identified by its $id. A $ref into a fragment of the document embeds the
773
+ // entire document resource once; the fragment keeps resolving against the
774
+ // embedded $id.
775
+ const resourceRoot = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_23__.maybeRefractToJSONSchemaElement)(schemaReference.value.result);
776
+ const resourceBaseURI = (0,_dereference_strategies_arazzo_1_util_ts__WEBPACK_IMPORTED_MODULE_24__.resolveSchema$idField)(_util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(schemaReference.uri), resourceRoot) ?? _util_url_ts__WEBPACK_IMPORTED_MODULE_17__.stripHash(schemaReference.uri);
777
+ const field = cf.inputs.name;
778
+ const canonicalKey = `${field}\t${resourceBaseURI}`;
779
+
780
+ // resource already embedded (or being embedded) — leave the referencing
781
+ // $ref untouched and stop. This also terminates circular external schema
782
+ // references, since the assignment is reserved BEFORE recursion.
783
+ if (this.assignments.has(canonicalKey)) {
784
+ path.skip();
785
+ return;
786
+ }
787
+
788
+ // own a copy of the resource and ensure it carries a $id so the unchanged
789
+ // $ref still resolves against it once embedded
790
+ const embeddedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(resourceRoot);
791
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(embeddedElement.$id)) {
792
+ embeddedElement.set('$id', resourceBaseURI);
793
+ }
794
+
795
+ // the embedded thing is the WHOLE resource (keyed by its $id), so its name
796
+ // is derived from the resource URI
797
+ const preferredName = this.baseName(embeddedElement, resourceBaseURI);
798
+ const componentName = this.uniqueName(preferredName);
799
+ this.reportNameCollision(preferredName, componentName);
800
+
801
+ // reserve the assignment and component name before recursing so circular
802
+ // external schema references terminate
803
+ this.assignments.set(canonicalKey, `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.escape)(componentName)}`);
804
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
805
+ this.reservedNames.get(field).add(componentName);
806
+
807
+ // bundle external references contained within the embedded resource;
808
+ // nested external resources land flat in the same components.inputs
809
+ const visitor = new Arazzo1BundleVisitor({
810
+ reference: schemaReference,
811
+ options: this.options,
812
+ assignments: this.assignments,
813
+ reservedNames: this.reservedNames
814
+ });
815
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_7__.traverseAsync)(embeddedElement, visitor, {
816
+ mutable: true
817
+ });
818
+
819
+ // annotate the embedded resource with info about its origin
820
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
821
+ bundledElement.meta.set('ref-origin', schemaReference.uri);
822
+ }
823
+
824
+ // place the embedded resource into the entry document's components.inputs
825
+ this.ensureInputsField().set(componentName, bundledElement);
826
+
827
+ // the referencing $ref is left UNCHANGED — it resolves against the
828
+ // embedded resource's $id
829
+ path.skip();
830
+ } catch (error) {
831
+ this.handleError(`Error while bundling JSON Schema Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
832
+ path.skip();
833
+ }
834
+ }
835
+ }
836
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Arazzo1BundleVisitor);
837
+
838
+ /***/ },
839
+
291
840
  /***/ 11157
292
841
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
293
842
 
@@ -596,11 +1145,11 @@ class OpenAPI2BundleVisitor {
596
1145
  }
597
1146
 
598
1147
  /**
599
- * Normalizes a self-file reference (e.g. `./root.json#/definitions/Pet`)
1148
+ * Normalizes a self-reference (e.g. `./root.json#/definitions/Pet`)
600
1149
  * to a bare fragment (`#/definitions/Pet`) so the bundled document stays
601
1150
  * transferable. Bare fragments are returned unchanged.
602
1151
  */
603
- normalizeSelfFileRef(ref) {
1152
+ normalizeSelfReference(ref) {
604
1153
  return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.getHash(ref);
605
1154
  }
606
1155
 
@@ -681,16 +1230,8 @@ class OpenAPI2BundleVisitor {
681
1230
  */
682
1231
  basenameOf(jsonPointer, baseURI) {
683
1232
  const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.parse)(jsonPointer).tree;
684
- let candidate = tokens.length > 0 ? tokens[tokens.length - 1] : '';
685
- if (candidate === '') {
686
- const lastSlash = baseURI.lastIndexOf('/');
687
- const lastDot = baseURI.lastIndexOf('.');
688
- const fileName = baseURI.slice(lastSlash + 1);
689
- // strip the extension only when the last dot belongs to the file name
690
- candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
691
- }
692
- if (candidate === '') candidate = 'Schema';
693
- return candidate;
1233
+ const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
1234
+ return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.getBasename(baseURI) || 'Schema';
694
1235
  }
695
1236
 
696
1237
  /**
@@ -745,9 +1286,9 @@ class OpenAPI2BundleVisitor {
745
1286
  const isInternalReference = this.entryURI === retrievalURI;
746
1287
  const isExternalReference = !isInternalReference;
747
1288
  if (isInternalReference) {
748
- // normalize self-file references to a bare fragment so the bundled
1289
+ // normalize self-references to a bare fragment so the bundled
749
1290
  // document stays transferable; bare fragments are left untouched
750
- referencingElement.set('$ref', this.normalizeSelfFileRef($ref));
1291
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
751
1292
  path.skip();
752
1293
  return;
753
1294
  }
@@ -904,9 +1445,9 @@ class OpenAPI2BundleVisitor {
904
1445
  const isInternalReference = this.entryURI === retrievalURI;
905
1446
  const isExternalReference = !isInternalReference;
906
1447
  if (isInternalReference) {
907
- // normalize self-file references to a bare fragment so the bundled
1448
+ // normalize self-references to a bare fragment so the bundled
908
1449
  // document stays transferable; bare fragments are left untouched
909
- pathItemElement.set('$ref', this.normalizeSelfFileRef($ref));
1450
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
910
1451
  return;
911
1452
  }
912
1453
 
@@ -1313,11 +1854,11 @@ class OpenAPI3_0BundleVisitor {
1313
1854
  }
1314
1855
 
1315
1856
  /**
1316
- * Normalizes a self-file reference (e.g. `./root.json#/components/schemas/Pet`)
1857
+ * Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
1317
1858
  * to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
1318
1859
  * transferable. Bare fragments are returned unchanged.
1319
1860
  */
1320
- normalizeSelfFileRef(ref) {
1861
+ normalizeSelfReference(ref) {
1321
1862
  return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.getHash(ref);
1322
1863
  }
1323
1864
 
@@ -1403,16 +1944,8 @@ class OpenAPI3_0BundleVisitor {
1403
1944
  */
1404
1945
  basenameOf(jsonPointer, baseURI) {
1405
1946
  const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.parse)(jsonPointer).tree;
1406
- let candidate = tokens.length > 0 ? tokens[tokens.length - 1] : '';
1407
- if (candidate === '') {
1408
- const lastSlash = baseURI.lastIndexOf('/');
1409
- const lastDot = baseURI.lastIndexOf('.');
1410
- const fileName = baseURI.slice(lastSlash + 1);
1411
- // strip the extension only when the last dot belongs to the file name
1412
- candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
1413
- }
1414
- if (candidate === '') candidate = 'Schema';
1415
- return candidate;
1947
+ const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
1948
+ return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.getBasename(baseURI) || 'Schema';
1416
1949
  }
1417
1950
 
1418
1951
  /**
@@ -1462,9 +1995,9 @@ class OpenAPI3_0BundleVisitor {
1462
1995
  const isInternalReference = this.entryURI === retrievalURI;
1463
1996
  const isExternalReference = !isInternalReference;
1464
1997
  if (isInternalReference) {
1465
- // normalize self-file references to a bare fragment so the bundled
1998
+ // normalize self-references to a bare fragment so the bundled
1466
1999
  // document stays transferable; bare fragments are left untouched
1467
- referencingElement.set('$ref', this.normalizeSelfFileRef($ref));
2000
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
1468
2001
  path.skip();
1469
2002
  return;
1470
2003
  }
@@ -1503,7 +2036,814 @@ class OpenAPI3_0BundleVisitor {
1503
2036
  try {
1504
2037
  // detect maximum depth of bundling
1505
2038
  if (this.reference.depth >= this.options.bundle.maxDepth) {
1506
- throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
2039
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
2040
+ maxDepth: this.options.bundle.maxDepth,
2041
+ uri: this.reference.uri
2042
+ });
2043
+ }
2044
+ const reference = await this.toReference($ref);
2045
+
2046
+ // possibly non-semantic fragment
2047
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2048
+
2049
+ // apply semantics to the fragment so nested references become Reference Objects
2050
+ if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement)) {
2051
+ const cached = this.getRefracted(referencedElement, referencedElementType);
2052
+ if (cached !== undefined) {
2053
+ referencedElement = cached;
2054
+ } else if ((0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__.isReferenceLikeElement)(referencedElement)) {
2055
+ const sourceElement = referencedElement;
2056
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
2057
+ referencedElement.meta.set('referenced-element', referencedElementType);
2058
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
2059
+ } else {
2060
+ const sourceElement = referencedElement;
2061
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
2062
+ element: referencedElementType
2063
+ });
2064
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
2065
+ }
2066
+ }
2067
+ const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
2068
+ const componentName = this.uniqueName(preferredName, field);
2069
+ const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.escape)(componentName)}`;
2070
+
2071
+ // a rename means two distinct targets resolved to the same name; each
2072
+ // keeps its own component (and origin), so report the rename per severity.
2073
+ // strategy specific options take precedence over the top-level bundle options
2074
+ const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
2075
+ if (componentName !== preferredName && onComponentNameCollision !== 'off') {
2076
+ const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
2077
+ if (onComponentNameCollision === 'error') {
2078
+ throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__["default"](message);
2079
+ }
2080
+ const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
2081
+ annotation.classes.push('warning');
2082
+ annotation.code = 'bundle-component-name-collision';
2083
+ // append (never prepend) so the result element stays ahead of annotations
2084
+ this.entryParseResult.content.push(annotation);
2085
+ }
2086
+
2087
+ // reserve the assignment and component name before recursing so cyclic
2088
+ // references terminate
2089
+ this.assignments.set(canonicalKey, internalPointer);
2090
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
2091
+ this.reservedNames.get(field).add(componentName);
2092
+
2093
+ // own a copy of the fragment and bundle its own external references
2094
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
2095
+ const visitor = new OpenAPI3_0BundleVisitor({
2096
+ reference,
2097
+ options: this.options,
2098
+ assignments: this.assignments,
2099
+ reservedNames: this.reservedNames,
2100
+ refractCache: this.refractCache,
2101
+ inlineStack: this.inlineStack
2102
+ });
2103
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(hoistedElement, visitor, {
2104
+ mutable: true
2105
+ });
2106
+
2107
+ // annotate the hoisted fragment with info about its origin
2108
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
2109
+ bundledElement.meta.set('ref-origin', reference.uri);
2110
+ }
2111
+
2112
+ // place the bundled fragment into the entry document's components
2113
+ this.ensureComponentsField(field).set(componentName, bundledElement);
2114
+
2115
+ // rewrite the referencing element to point at the hoisted fragment
2116
+ referencingElement.set('$ref', internalPointer);
2117
+ path.skip();
2118
+ } catch (error) {
2119
+ this.handleError(`Error while bundling Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
2120
+ path.skip();
2121
+ }
2122
+ }
2123
+
2124
+ /**
2125
+ * Path Item Object is not a Components Object field in OpenAPI 3.0
2126
+ * (unlike 3.1 which has `components.pathItems`). An external Path Item
2127
+ * reference therefore cannot be hoisted; it is inlined in place instead,
2128
+ * after bundling its own external references.
2129
+ */
2130
+ async PathItemElement(path) {
2131
+ const pathItemElement = path.node;
2132
+
2133
+ // ignore Path Item Objects without a $ref field
2134
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
2135
+ return;
2136
+ }
2137
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
2138
+ const retrievalURI = this.toBaseURI($ref);
2139
+ const isInternalReference = this.entryURI === retrievalURI;
2140
+ const isExternalReference = !isInternalReference;
2141
+ if (isInternalReference) {
2142
+ // normalize self-references to a bare fragment so the bundled
2143
+ // document stays transferable; bare fragments are left untouched
2144
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
2145
+ return;
2146
+ }
2147
+
2148
+ // honor the resolve.external switch
2149
+ if (!this.options.resolve.external && isExternalReference) {
2150
+ return;
2151
+ }
2152
+ const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
2153
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2154
+ const canonicalKey = `${retrievalURI}#${jsonPointer}`;
2155
+
2156
+ // a circular external Path Item reference cannot be inlined without
2157
+ // recursing forever; leave the $ref in place to break the cycle
2158
+ if (this.inlineStack.has(canonicalKey)) {
2159
+ return;
2160
+ }
2161
+ try {
2162
+ // detect maximum depth of bundling
2163
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
2164
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
2165
+ maxDepth: this.options.bundle.maxDepth,
2166
+ uri: this.reference.uri
2167
+ });
2168
+ }
2169
+ const reference = await this.toReference($ref);
2170
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2171
+
2172
+ // apply Path Item semantics to the referenced fragment
2173
+ if (!(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
2174
+ const cached = this.getRefracted(referencedElement, 'pathItem');
2175
+ if (cached !== undefined) {
2176
+ referencedElement = cached;
2177
+ } else {
2178
+ const sourceElement = referencedElement;
2179
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
2180
+ this.setRefracted(sourceElement, 'pathItem', referencedElement);
2181
+ }
2182
+ }
2183
+
2184
+ // own a copy and bundle the external references it contains
2185
+ const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
2186
+ this.inlineStack.add(canonicalKey);
2187
+ const visitor = new OpenAPI3_0BundleVisitor({
2188
+ reference,
2189
+ options: this.options,
2190
+ assignments: this.assignments,
2191
+ reservedNames: this.reservedNames,
2192
+ refractCache: this.refractCache,
2193
+ inlineStack: this.inlineStack
2194
+ });
2195
+ let bundledElement;
2196
+ try {
2197
+ bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(inlinedElement, visitor, {
2198
+ mutable: true
2199
+ });
2200
+ } finally {
2201
+ this.inlineStack.delete(canonicalKey);
2202
+ }
2203
+
2204
+ // merge sibling fields from the referencing Path Item over the referenced
2205
+ // one. The referencing `$ref` is being resolved away and is skipped; the
2206
+ // referenced element keeps its own `$ref` if one survived (i.e. it was
2207
+ // left in place to break a circular external Path Item chain).
2208
+ pathItemElement.forEach((_value, keyElement, item) => {
2209
+ const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
2210
+ if (key === '$ref') return;
2211
+ bundledElement.remove(key);
2212
+ bundledElement.content.push(item);
2213
+ });
2214
+ bundledElement.meta.set('ref-origin', reference.uri);
2215
+ path.replaceWith(bundledElement);
2216
+ } catch (error) {
2217
+ this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
2218
+ }
2219
+ }
2220
+
2221
+ /**
2222
+ * Example Object `externalValue` points at arbitrary external content that
2223
+ * has no place in the Components Object. The referenced value is inlined into
2224
+ * the Example's `value` field.
2225
+ */
2226
+ async ExampleElement(path) {
2227
+ const exampleElement = path.node;
2228
+
2229
+ // ignore Example Objects without an externalValue field
2230
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
2231
+ return;
2232
+ }
2233
+
2234
+ // value and externalValue fields are mutually exclusive
2235
+ if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
2236
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
2237
+ value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.value),
2238
+ externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue)
2239
+ });
2240
+ }
2241
+ const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue);
2242
+ const retrievalURI = this.toBaseURI(externalValue);
2243
+ const isInternalReference = this.entryURI === retrievalURI;
2244
+ const isExternalReference = !isInternalReference;
2245
+
2246
+ // honor the resolve.external switch
2247
+ if (!this.options.resolve.external && isExternalReference) {
2248
+ return;
2249
+ }
2250
+ try {
2251
+ const reference = await this.toReference(externalValue);
2252
+ const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(reference.value.result);
2253
+ valueElement.meta.set('ref-origin', reference.uri);
2254
+ const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(exampleElement);
2255
+ exampleElementCopy.value = valueElement;
2256
+ exampleElementCopy.remove('externalValue');
2257
+ path.replaceWith(exampleElementCopy);
2258
+ } catch (error) {
2259
+ this.handleError(`Error while bundling Example Object. Cannot resolve externalValue "${externalValue}": ${error.message}`, error, exampleElement, 'externalValue', externalValue, path);
2260
+ }
2261
+ }
2262
+
2263
+ /**
2264
+ * Link Object `operationRef` points at an Operation Object, which has no
2265
+ * Components Object field in OpenAPI 3.0 and therefore cannot be hoisted or
2266
+ * inlined. To keep the link resolvable from the bundled document, an external
2267
+ * `operationRef` is rewritten to its absolute URI. Internal `operationRef`
2268
+ * values and `operationId` links are left untouched.
2269
+ */
2270
+ async LinkElement(path) {
2271
+ const linkElement = path.node;
2272
+
2273
+ // operationRef and operationId fields are mutually exclusive
2274
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationId)) {
2275
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
2276
+ operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef),
2277
+ operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationId)
2278
+ });
2279
+ }
2280
+
2281
+ // only external operationRef links need adjusting
2282
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef)) {
2283
+ return;
2284
+ }
2285
+ const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef);
2286
+ const retrievalURI = this.toBaseURI(operationRef);
2287
+ const isInternalReference = this.entryURI === retrievalURI;
2288
+ if (isInternalReference) {
2289
+ // normalize a self-reference operationRef to a bare fragment so the bundled
2290
+ // document stays transferable; bare fragments are left untouched
2291
+ linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
2292
+ return;
2293
+ }
2294
+
2295
+ // honor the resolve.external switch
2296
+ if (!this.options.resolve.external) {
2297
+ return;
2298
+ }
2299
+
2300
+ // rewrite to an absolute URI so the link keeps resolving once the document
2301
+ // is treated as self-contained
2302
+ const absoluteURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, operationRef);
2303
+ if (absoluteURI !== operationRef) {
2304
+ linkElement.set('operationRef', absoluteURI);
2305
+ }
2306
+ }
2307
+ }
2308
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleVisitor);
2309
+
2310
+ /***/ },
2311
+
2312
+ /***/ 16432
2313
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2314
+
2315
+ "use strict";
2316
+ __webpack_require__.r(__webpack_exports__);
2317
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2318
+ /* harmony export */ OpenAPI3_1BundleVisitor: () => (/* reexport safe */ _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
2319
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2320
+ /* harmony export */ });
2321
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
2322
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
2323
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7822);
2324
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76332);
2325
+ /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98979);
2326
+ /* harmony import */ var _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24131);
2327
+ /* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(75508);
2328
+ /* harmony import */ var _visitor_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31066);
2329
+
2330
+
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+ /**
2338
+ * @public
2339
+ */
2340
+
2341
+ /**
2342
+ * @public
2343
+ */
2344
+ class OpenAPI3_1BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
2345
+ constructor(options) {
2346
+ super({
2347
+ ...(options ?? {}),
2348
+ name: 'openapi-3-1'
2349
+ });
2350
+ }
2351
+ canBundle(file) {
2352
+ // assert by media type
2353
+ if (file.mediaType !== 'text/plain') {
2354
+ return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
2355
+ }
2356
+
2357
+ // assert by inspecting ApiDOM
2358
+ return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_1Element)(file.parseResult?.result);
2359
+ }
2360
+ async bundle(file, options) {
2361
+ const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
2362
+ const mutableRefSet = new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
2363
+ let refSet = immutableRefSet;
2364
+ let reference;
2365
+
2366
+ // determine the initial reference
2367
+ if (!immutableRefSet.has(file.uri)) {
2368
+ reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
2369
+ uri: file.uri,
2370
+ value: file.parseResult
2371
+ });
2372
+ immutableRefSet.add(reference);
2373
+ } else {
2374
+ // pre-computed refSet was provided as configuration option
2375
+ reference = immutableRefSet.find(ref => ref.uri === file.uri);
2376
+ }
2377
+
2378
+ /**
2379
+ * Clone refSet due the bundling process being mutable.
2380
+ * We don't want to mutate the original refSet and the references.
2381
+ */
2382
+ if (options.bundle.immutable) {
2383
+ immutableRefSet.refs.map(ref => new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
2384
+ ...ref,
2385
+ value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(ref.value)
2386
+ })).forEach(ref => mutableRefSet.add(ref));
2387
+ reference = mutableRefSet.find(ref => ref.uri === file.uri);
2388
+ refSet = mutableRefSet;
2389
+ }
2390
+ const visitor = new _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]({
2391
+ reference: reference,
2392
+ options
2393
+ });
2394
+ await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
2395
+ mutable: true
2396
+ });
2397
+ const parseResult = reference.value;
2398
+
2399
+ /**
2400
+ * Release all memory if this refSet was not provided as a configuration option.
2401
+ * If provided as configuration option, then provider is responsible for cleanup.
2402
+ */
2403
+ if (options.bundle.refSet === null) {
2404
+ immutableRefSet.clean();
2405
+ }
2406
+ mutableRefSet.clean();
2407
+ return parseResult;
2408
+ }
2409
+ }
2410
+
2411
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
2412
+
2413
+ /***/ },
2414
+
2415
+ /***/ 31066
2416
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2417
+
2418
+ "use strict";
2419
+ __webpack_require__.r(__webpack_exports__);
2420
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2421
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2422
+ /* harmony export */ });
2423
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87009);
2424
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6352);
2425
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25162);
2426
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12111);
2427
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97071);
2428
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(84660);
2429
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37205);
2430
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44673);
2431
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16280);
2432
+ /* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44641);
2433
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80796);
2434
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12020);
2435
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(61198);
2436
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(21314);
2437
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24329);
2438
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(29881);
2439
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(76332);
2440
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
2441
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(52645);
2442
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(23031);
2443
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(63842);
2444
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(87455);
2445
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(16363);
2446
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(55122);
2447
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71117);
2448
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(72257);
2449
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(69511);
2450
+ /* harmony import */ var _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(81002);
2451
+ /* harmony import */ var _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(8853);
2452
+ /* harmony import */ var _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(16843);
2453
+ /* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(51325);
2454
+ /* harmony import */ var _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(44477);
2455
+ /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(30658);
2456
+ /* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(35014);
2457
+ /* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(98979);
2458
+ /* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(10682);
2459
+ /* harmony import */ var _dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(32054);
2460
+ /* harmony import */ var _dereference_strategies_openapi_3_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(56481);
2461
+ /* harmony import */ var _dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(60888);
2462
+ /* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(25939);
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+ /**
2484
+ * Maps the `referenced-element` meta value (set during refraction) to the
2485
+ * Components Object field where the referenced element should be hoisted.
2486
+ * Field names are sourced from the Components Object fixed fields so they
2487
+ * cannot drift from the namespace definition.
2488
+ */
2489
+ const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__.fixedFields)(_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement, {
2490
+ indexed: true
2491
+ });
2492
+ const componentFieldByReferencedElement = {
2493
+ schema: cf.schemas.name,
2494
+ response: cf.responses.name,
2495
+ parameter: cf.parameters.name,
2496
+ example: cf.examples.name,
2497
+ requestBody: cf.requestBodies.name,
2498
+ header: cf.headers.name,
2499
+ securityScheme: cf.securitySchemes.name,
2500
+ link: cf.links.name,
2501
+ callback: cf.callbacks.name,
2502
+ pathItem: cf.pathItems.name
2503
+ };
2504
+
2505
+ /**
2506
+ * Maps a Components Object field to the named-content element the namespace
2507
+ * uses for it, so a bundle-created field matches a parsed/refracted one
2508
+ * (e.g. carries the `components-schemas` class) rather than being a generic
2509
+ * object.
2510
+ */
2511
+ const componentFieldElementByField = {
2512
+ [cf.schemas.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__["default"],
2513
+ [cf.responses.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__["default"],
2514
+ [cf.parameters.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__["default"],
2515
+ [cf.examples.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__["default"],
2516
+ [cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__["default"],
2517
+ [cf.headers.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__["default"],
2518
+ [cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__["default"],
2519
+ [cf.links.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__["default"],
2520
+ [cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__["default"],
2521
+ [cf.pathItems.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__["default"]
2522
+ };
2523
+
2524
+ /**
2525
+ * @public
2526
+ */
2527
+
2528
+ /**
2529
+ * @public
2530
+ */
2531
+ class OpenAPI3_1BundleVisitor {
2532
+ reference;
2533
+ options;
2534
+
2535
+ /**
2536
+ * The base URI (without hash) of the entry document. A reference is
2537
+ * considered internal when it resolves to this URI and external otherwise.
2538
+ * Derived from the shared refSet's root reference.
2539
+ */
2540
+ get entryURI() {
2541
+ return _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
2542
+ }
2543
+
2544
+ /**
2545
+ * The entry parse result. Derived from the shared refSet's root reference.
2546
+ */
2547
+ get entryParseResult() {
2548
+ return this.reference.refSet.rootRef.value;
2549
+ }
2550
+
2551
+ /**
2552
+ * The entry document element. Hoisted external fragments are placed into its
2553
+ * `components` object. The `canBundle` guard guarantees it is an
2554
+ * OpenApi3_1Element.
2555
+ */
2556
+ get entryResult() {
2557
+ return this.entryParseResult.result;
2558
+ }
2559
+
2560
+ /**
2561
+ * Shared across the entry document and every external document visitor.
2562
+ * Guarantees each external fragment is hoisted exactly once and gives us a
2563
+ * stable internal pointer to rewrite every referencing element to.
2564
+ */
2565
+ assignments;
2566
+
2567
+ /**
2568
+ * Component names already reserved per Components Object field. Reserved
2569
+ * before recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
2570
+ * components that are still being bundled.
2571
+ */
2572
+ reservedNames;
2573
+
2574
+ /**
2575
+ * Caches refracted fragments keyed by source element and target element type.
2576
+ * The type is part of the key because the same source can be refracted into
2577
+ * different semantic elements depending on the referencing context (e.g. a
2578
+ * generic object referenced once as a Parameter and once as a Response).
2579
+ */
2580
+ refractCache;
2581
+ constructor({
2582
+ reference,
2583
+ options,
2584
+ assignments = new Map(),
2585
+ reservedNames = new Map(),
2586
+ refractCache = new WeakMap()
2587
+ }) {
2588
+ this.reference = reference;
2589
+ this.options = options;
2590
+ this.assignments = assignments;
2591
+ this.reservedNames = reservedNames;
2592
+ this.refractCache = refractCache;
2593
+ }
2594
+ getRefracted(source, type) {
2595
+ return this.refractCache.get(source)?.get(type);
2596
+ }
2597
+ setRefracted(source, type, refracted) {
2598
+ let byType = this.refractCache.get(source);
2599
+ if (byType === undefined) {
2600
+ byType = new Map();
2601
+ this.refractCache.set(source, byType);
2602
+ }
2603
+ byType.set(type, refracted);
2604
+ }
2605
+ toBaseURI(uri) {
2606
+ return _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(uri)));
2607
+ }
2608
+ async toReference(uri) {
2609
+ // detect maximum depth of resolution
2610
+ if (this.reference.depth >= this.options.resolve.maxDepth) {
2611
+ throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_30__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
2612
+ maxDepth: this.options.resolve.maxDepth,
2613
+ uri: this.reference.uri
2614
+ });
2615
+ }
2616
+ const baseURI = this.toBaseURI(uri);
2617
+ const {
2618
+ refSet
2619
+ } = this.reference;
2620
+
2621
+ // we've already processed this Reference in past
2622
+ if (refSet.has(baseURI)) {
2623
+ return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURI, 'uri'));
2624
+ }
2625
+ const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_33__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize(baseURI), {
2626
+ ...this.options,
2627
+ parse: {
2628
+ ...this.options.parse,
2629
+ mediaType: 'text/plain'
2630
+ }
2631
+ });
2632
+ const reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_34__["default"]({
2633
+ uri: baseURI,
2634
+ value: parseResult,
2635
+ depth: this.reference.depth + 1
2636
+ });
2637
+ refSet.add(reference);
2638
+ return reference;
2639
+ }
2640
+
2641
+ /**
2642
+ * Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
2643
+ * to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
2644
+ * transferable. Bare fragments are returned unchanged.
2645
+ */
2646
+ normalizeSelfReference(ref) {
2647
+ return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.getHash(ref);
2648
+ }
2649
+
2650
+ /**
2651
+ * Handles an error according to the `bundle.continueOnError` option.
2652
+ *
2653
+ * For new errors: wraps in UnresolvableReferenceError with structured
2654
+ * context. For errors already wrapped by a nested visitor: prepends the
2655
+ * current hop to the trace.
2656
+ *
2657
+ * Inner/intermediate visitors always throw to let the trace accumulate. Only
2658
+ * the entry document visitor respects continueOnError (callback/swallow/throw).
2659
+ */
2660
+ handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
2661
+ // a collision reported as `error` is a deliberate hard stop with no
2662
+ // resolution-failure analog, so pass it through unchanged. A maxDepth
2663
+ // breach (MaximumBundleDepthError, which also extends BundleError) is a
2664
+ // resolution failure and flows through below — wrapped and subject to
2665
+ // continueOnError, like dereferencing.
2666
+ if (error instanceof _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__["default"] && !(error instanceof _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__["default"])) {
2667
+ throw error;
2668
+ }
2669
+ const {
2670
+ continueOnError
2671
+ } = this.options.bundle;
2672
+ const isEntryDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
2673
+ const uri = this.reference.uri;
2674
+ const type = referencingElement.element;
2675
+ const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement);
2676
+ const location = visitorPath.formatPath();
2677
+ const hop = {
2678
+ uri,
2679
+ type,
2680
+ refFieldName,
2681
+ refFieldValue,
2682
+ location,
2683
+ codeFrame
2684
+ };
2685
+ let unresolvedError;
2686
+ if (error instanceof _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__["default"]) {
2687
+ // @ts-ignore
2688
+ error.trace = [hop, ...error.trace];
2689
+ unresolvedError = error;
2690
+ } else {
2691
+ unresolvedError = new _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__["default"](message, {
2692
+ cause: error,
2693
+ type,
2694
+ uri,
2695
+ location,
2696
+ codeFrame,
2697
+ refFieldName,
2698
+ refFieldValue,
2699
+ trace: []
2700
+ });
2701
+ }
2702
+ if (!isEntryDocument || continueOnError === false) throw unresolvedError;
2703
+ if (typeof continueOnError === 'function') continueOnError(unresolvedError);
2704
+ }
2705
+
2706
+ /**
2707
+ * Lazily creates the Components Object (and the requested field within it)
2708
+ * on the entry document, returning the field where a fragment is hoisted.
2709
+ */
2710
+ ensureComponentsField(field) {
2711
+ const entryResult = this.entryResult;
2712
+ let components = entryResult.components;
2713
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(components)) {
2714
+ components = new _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement();
2715
+ entryResult.components = components;
2716
+ }
2717
+ let fieldElement = components.get(field);
2718
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(fieldElement)) {
2719
+ const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"];
2720
+ fieldElement = new FieldElement();
2721
+ components.set(field, fieldElement);
2722
+ }
2723
+ return fieldElement;
2724
+ }
2725
+
2726
+ /**
2727
+ * Derives a component name from the referenced JSON Pointer's last token,
2728
+ * falling back to the referenced file's basename.
2729
+ */
2730
+ basenameOf(jsonPointer, baseURI) {
2731
+ const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.parse)(jsonPointer).tree;
2732
+ const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
2733
+ return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.getBasename(baseURI) || 'Schema';
2734
+ }
2735
+
2736
+ /**
2737
+ * Computes the base component name (before collision suffixing) according to
2738
+ * the configured naming strategy.
2739
+ */
2740
+ baseName(element, field, jsonPointer, baseURI) {
2741
+ // strategy specific options take precedence over the top-level bundle options
2742
+ const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-1']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
2743
+ if (typeof componentNamesStrategy === 'function') {
2744
+ const resolved = componentNamesStrategy({
2745
+ element,
2746
+ field,
2747
+ jsonPointer,
2748
+ baseURI
2749
+ });
2750
+ if (typeof resolved === 'string' && resolved !== '') {
2751
+ return resolved;
2752
+ }
2753
+ return this.basenameOf(jsonPointer, baseURI);
2754
+ }
2755
+ if (componentNamesStrategy === 'title') {
2756
+ const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(element.get('title')) : undefined;
2757
+ if (typeof title === 'string' && title.trim() !== '') {
2758
+ const name = (0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.sanitizeComponentName)((0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.toPascalCase)(title));
2759
+ if (name !== '') return name;
2760
+ }
2761
+ // fall back to basename when no usable title is present
2762
+ }
2763
+ return this.basenameOf(jsonPointer, baseURI);
2764
+ }
2765
+
2766
+ /**
2767
+ * Computes a collision-free component name within the target field. A name is
2768
+ * taken if it's already placed in components or reserved by a component that
2769
+ * is still being bundled (reserved before recursion).
2770
+ */
2771
+ uniqueName(candidate, field) {
2772
+ const fieldElement = this.ensureComponentsField(field);
2773
+ const reserved = this.reservedNames.get(field) ?? new Set();
2774
+ return (0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
2775
+ }
2776
+
2777
+ /**
2778
+ * Reports a collision-forced rename according to the configured severity.
2779
+ * A rename means two distinct targets resolved to the same name; each keeps
2780
+ * its own component (and origin), so report the rename per severity.
2781
+ */
2782
+ reportNameCollision(preferredName, componentName, field) {
2783
+ // strategy specific options take precedence over the top-level bundle options
2784
+ const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-1']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
2785
+ if (componentName === preferredName || onComponentNameCollision === 'off') {
2786
+ return;
2787
+ }
2788
+ const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
2789
+ if (onComponentNameCollision === 'error') {
2790
+ throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](message);
2791
+ }
2792
+ const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](message);
2793
+ annotation.classes.push('warning');
2794
+ annotation.code = 'bundle-component-name-collision';
2795
+ // append (never prepend) so the result element stays ahead of annotations
2796
+ this.entryParseResult.content.push(annotation);
2797
+ }
2798
+ async ReferenceElement(path) {
2799
+ const referencingElement = path.node;
2800
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
2801
+ const retrievalURI = this.toBaseURI($ref);
2802
+ const isInternalReference = this.entryURI === retrievalURI;
2803
+ const isExternalReference = !isInternalReference;
2804
+ if (isInternalReference) {
2805
+ // normalize self-references to a bare fragment so the bundled
2806
+ // document stays transferable; bare fragments are left untouched
2807
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
2808
+ path.skip();
2809
+ return;
2810
+ }
2811
+
2812
+ // honor the resolve.external switch
2813
+ if (!this.options.resolve.external && isExternalReference) {
2814
+ path.skip();
2815
+ return;
2816
+ }
2817
+ const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
2818
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2819
+
2820
+ // the target bucket depends on the referencing context, so it's part of the
2821
+ // identity: the same external target referenced as e.g. both a parameter and
2822
+ // a response must be hoisted into both components fields. The refractor sets
2823
+ // `referenced-element` for every Reference Object position; the `schemas`
2824
+ // fallback is a defensive default for the (unexpected) untagged case.
2825
+ const referencedElementType = referencingElement.meta.get('referenced-element');
2826
+ const field = componentFieldByReferencedElement[referencedElementType] ?? componentFieldByReferencedElement.schema;
2827
+ const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
2828
+
2829
+ // already hoisted (or being hoisted) — just rewrite the pointer.
2830
+ //
2831
+ // this is also how circular references terminate: the assignment is
2832
+ // reserved BEFORE recursing into the fragment (see below), so a reference
2833
+ // that cycles back (directly or indirectly) finds its pointer already
2834
+ // reserved here and is rewritten without recursing. Cycles are deliberately
2835
+ // preserved as internal `$ref`s pointing at each other — that is valid,
2836
+ // serializable output; resolving the cycle (if desired) is dereferencing's
2837
+ // job, not bundling's.
2838
+ if (this.assignments.has(canonicalKey)) {
2839
+ referencingElement.set('$ref', this.assignments.get(canonicalKey));
2840
+ path.skip();
2841
+ return;
2842
+ }
2843
+ try {
2844
+ // detect maximum depth of bundling
2845
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
2846
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
1507
2847
  maxDepth: this.options.bundle.maxDepth,
1508
2848
  uri: this.reference.uri
1509
2849
  });
@@ -1511,21 +2851,21 @@ class OpenAPI3_0BundleVisitor {
1511
2851
  const reference = await this.toReference($ref);
1512
2852
 
1513
2853
  // possibly non-semantic fragment
1514
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2854
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
1515
2855
 
1516
2856
  // apply semantics to the fragment so nested references become Reference Objects
1517
- if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement)) {
2857
+ if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement)) {
1518
2858
  const cached = this.getRefracted(referencedElement, referencedElementType);
1519
2859
  if (cached !== undefined) {
1520
2860
  referencedElement = cached;
1521
- } else if ((0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__.isReferenceLikeElement)(referencedElement)) {
2861
+ } else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.isReferenceLikeElement)(referencedElement)) {
1522
2862
  const sourceElement = referencedElement;
1523
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
2863
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractReference)(referencedElement);
1524
2864
  referencedElement.meta.set('referenced-element', referencedElementType);
1525
2865
  this.setRefracted(sourceElement, referencedElementType, referencedElement);
1526
2866
  } else {
1527
2867
  const sourceElement = referencedElement;
1528
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
2868
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__["default"])(referencedElement, {
1529
2869
  element: referencedElementType
1530
2870
  });
1531
2871
  this.setRefracted(sourceElement, referencedElementType, referencedElement);
@@ -1533,23 +2873,8 @@ class OpenAPI3_0BundleVisitor {
1533
2873
  }
1534
2874
  const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
1535
2875
  const componentName = this.uniqueName(preferredName, field);
1536
- const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.escape)(componentName)}`;
1537
-
1538
- // a rename means two distinct targets resolved to the same name; each
1539
- // keeps its own component (and origin), so report the rename per severity.
1540
- // strategy specific options take precedence over the top-level bundle options
1541
- const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
1542
- if (componentName !== preferredName && onComponentNameCollision !== 'off') {
1543
- const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
1544
- if (onComponentNameCollision === 'error') {
1545
- throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__["default"](message);
1546
- }
1547
- const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
1548
- annotation.classes.push('warning');
1549
- annotation.code = 'bundle-component-name-collision';
1550
- // append (never prepend) so the result element stays ahead of annotations
1551
- this.entryParseResult.content.push(annotation);
1552
- }
2876
+ const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
2877
+ this.reportNameCollision(preferredName, componentName, field);
1553
2878
 
1554
2879
  // reserve the assignment and component name before recursing so cyclic
1555
2880
  // references terminate
@@ -1558,21 +2883,20 @@ class OpenAPI3_0BundleVisitor {
1558
2883
  this.reservedNames.get(field).add(componentName);
1559
2884
 
1560
2885
  // own a copy of the fragment and bundle its own external references
1561
- const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
1562
- const visitor = new OpenAPI3_0BundleVisitor({
2886
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
2887
+ const visitor = new OpenAPI3_1BundleVisitor({
1563
2888
  reference,
1564
2889
  options: this.options,
1565
2890
  assignments: this.assignments,
1566
2891
  reservedNames: this.reservedNames,
1567
- refractCache: this.refractCache,
1568
- inlineStack: this.inlineStack
2892
+ refractCache: this.refractCache
1569
2893
  });
1570
- const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(hoistedElement, visitor, {
2894
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
1571
2895
  mutable: true
1572
2896
  });
1573
2897
 
1574
2898
  // annotate the hoisted fragment with info about its origin
1575
- if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
2899
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isElement)(bundledElement)) {
1576
2900
  bundledElement.meta.set('ref-origin', reference.uri);
1577
2901
  }
1578
2902
 
@@ -1589,99 +2913,265 @@ class OpenAPI3_0BundleVisitor {
1589
2913
  }
1590
2914
 
1591
2915
  /**
1592
- * Path Item Object is not a Components Object field in OpenAPI 3.0
1593
- * (unlike 3.1 which has `components.pathItems`). An external Path Item
1594
- * reference therefore cannot be hoisted; it is inlined in place instead,
1595
- * after bundling its own external references.
2916
+ * Unlike OpenAPI 3.0 (which has no `components.pathItems` field and therefore
2917
+ * inlines external Path Items in place), OpenAPI 3.1 hoists an external Path
2918
+ * Item Object into `components.pathItems` and rewrites the referencing `$ref`
2919
+ * to an internal pointer — mirroring how Reference Objects are bundled.
2920
+ * Sibling fields next to the `$ref` (e.g. `summary`, `description`) are kept
2921
+ * on the referencing element.
1596
2922
  */
1597
2923
  async PathItemElement(path) {
1598
2924
  const pathItemElement = path.node;
1599
2925
 
1600
2926
  // ignore Path Item Objects without a $ref field
1601
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
2927
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(pathItemElement.$ref)) {
1602
2928
  return;
1603
2929
  }
1604
- const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
2930
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(pathItemElement.$ref);
1605
2931
  const retrievalURI = this.toBaseURI($ref);
1606
2932
  const isInternalReference = this.entryURI === retrievalURI;
1607
2933
  const isExternalReference = !isInternalReference;
1608
2934
  if (isInternalReference) {
1609
- // normalize self-file references to a bare fragment so the bundled
2935
+ // normalize self-references to a bare fragment so the bundled
1610
2936
  // document stays transferable; bare fragments are left untouched
1611
- pathItemElement.set('$ref', this.normalizeSelfFileRef($ref));
2937
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
2938
+ path.skip();
1612
2939
  return;
1613
2940
  }
1614
2941
 
1615
2942
  // honor the resolve.external switch
1616
2943
  if (!this.options.resolve.external && isExternalReference) {
2944
+ path.skip();
1617
2945
  return;
1618
2946
  }
1619
- const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
1620
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
1621
- const canonicalKey = `${retrievalURI}#${jsonPointer}`;
2947
+ const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
2948
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
2949
+ const field = cf.pathItems.name;
2950
+ const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
1622
2951
 
1623
- // a circular external Path Item reference cannot be inlined without
1624
- // recursing forever; leave the $ref in place to break the cycle
1625
- if (this.inlineStack.has(canonicalKey)) {
2952
+ // already hoisted (or being hoisted) — just rewrite the pointer. The
2953
+ // assignment is reserved BEFORE recursing, so a circular Path Item chain
2954
+ // terminates here with an internal pointer instead of recursing forever.
2955
+ if (this.assignments.has(canonicalKey)) {
2956
+ pathItemElement.set('$ref', this.assignments.get(canonicalKey));
2957
+ path.skip();
1626
2958
  return;
1627
2959
  }
1628
2960
  try {
1629
2961
  // detect maximum depth of bundling
1630
2962
  if (this.reference.depth >= this.options.bundle.maxDepth) {
1631
- throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
2963
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
1632
2964
  maxDepth: this.options.bundle.maxDepth,
1633
2965
  uri: this.reference.uri
1634
2966
  });
1635
2967
  }
1636
2968
  const reference = await this.toReference($ref);
1637
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
2969
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
1638
2970
 
1639
2971
  // apply Path Item semantics to the referenced fragment
1640
- if (!(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
2972
+ if (!(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement)) {
1641
2973
  const cached = this.getRefracted(referencedElement, 'pathItem');
1642
2974
  if (cached !== undefined) {
1643
2975
  referencedElement = cached;
1644
2976
  } else {
1645
2977
  const sourceElement = referencedElement;
1646
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
2978
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractPathItem)(referencedElement);
1647
2979
  this.setRefracted(sourceElement, 'pathItem', referencedElement);
1648
2980
  }
1649
2981
  }
2982
+ const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
2983
+ const componentName = this.uniqueName(preferredName, field);
2984
+ const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
2985
+ this.reportNameCollision(preferredName, componentName, field);
1650
2986
 
1651
- // own a copy and bundle the external references it contains
1652
- const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
1653
- this.inlineStack.add(canonicalKey);
1654
- const visitor = new OpenAPI3_0BundleVisitor({
2987
+ // reserve the assignment and component name before recursing so cyclic
2988
+ // references terminate
2989
+ this.assignments.set(canonicalKey, internalPointer);
2990
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
2991
+ this.reservedNames.get(field).add(componentName);
2992
+
2993
+ // own a copy of the fragment and bundle its own external references
2994
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
2995
+ const visitor = new OpenAPI3_1BundleVisitor({
1655
2996
  reference,
1656
2997
  options: this.options,
1657
2998
  assignments: this.assignments,
1658
2999
  reservedNames: this.reservedNames,
1659
- refractCache: this.refractCache,
1660
- inlineStack: this.inlineStack
3000
+ refractCache: this.refractCache
1661
3001
  });
1662
- let bundledElement;
1663
- try {
1664
- bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(inlinedElement, visitor, {
1665
- mutable: true
3002
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
3003
+ mutable: true
3004
+ });
3005
+
3006
+ // a `$ref` surviving on the hoisted Path Item means it pointed at another
3007
+ // Path Item (a chain or cycle); it has already been rewritten to an
3008
+ // internal `#/components/pathItems/...` pointer by the child traversal
3009
+ bundledElement.meta.set('ref-origin', reference.uri);
3010
+
3011
+ // place the bundled Path Item into the entry document's components
3012
+ this.ensureComponentsField(field).set(componentName, bundledElement);
3013
+
3014
+ // rewrite the referencing Path Item to point at the hoisted one, keeping
3015
+ // any sibling fields (e.g. summary, description) next to the $ref
3016
+ pathItemElement.set('$ref', internalPointer);
3017
+ path.skip();
3018
+ } catch (error) {
3019
+ this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
3020
+ path.skip();
3021
+ }
3022
+ }
3023
+
3024
+ /**
3025
+ * Schema Objects in OpenAPI 3.1 are a JSON Schema 2020-12 dialect, so they are
3026
+ * bundled per the JSON Schema Compound Document rules: the external schema
3027
+ * RESOURCE is embedded verbatim into `components.schemas` (carrying its `$id`),
3028
+ * and the referencing `$ref` is left UNCHANGED — it keeps resolving against the
3029
+ * embedded resource's `$id`. This mirrors the canonical hyperjump
3030
+ * `json-schema-bundle` behavior (the whole resource is embedded once, keyed by
3031
+ * its `$id`; references are not rewritten).
3032
+ */
3033
+ async SchemaElement(path) {
3034
+ const referencingElement = path.node;
3035
+
3036
+ // skip current referencing schema as $ref keyword was not defined
3037
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencingElement.$ref)) {
3038
+ return;
3039
+ }
3040
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
3041
+ try {
3042
+ // compute baseURI using rules around $id and $ref keywords. The current
3043
+ // document's URI is the retrieval URI — derive it directly (not via
3044
+ // toReference) so an internal $ref needs no resolution and never trips the
3045
+ // resolve.maxDepth guard, matching how ReferenceElement returns early.
3046
+ const retrievalURI = this.reference.uri;
3047
+ const $refBaseURI = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.resolveSchema$refField)(retrievalURI, referencingElement);
3048
+ const $refBaseURIStrippedHash = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash($refBaseURI);
3049
+ const file = new _File_ts__WEBPACK_IMPORTED_MODULE_35__["default"]({
3050
+ uri: $refBaseURIStrippedHash
3051
+ });
3052
+ const isUnknownURI = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(r => r.canRead(file), this.options.resolve.resolvers);
3053
+ const isURL = !isUnknownURI;
3054
+ const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri) === $refBaseURIStrippedHash;
3055
+ const isExternalReference = !isInternalReference;
3056
+
3057
+ // internal Schema Object $refs resolve against the in-document $id graph;
3058
+ // leaving them untouched keeps that resolution valid. Unlike Reference
3059
+ // Objects, a JSON Schema $ref is NOT normalized to a bare fragment.
3060
+ if (isInternalReference) {
3061
+ return;
3062
+ }
3063
+
3064
+ // honor the resolve.external switch
3065
+ if (!this.options.resolve.external && isExternalReference) {
3066
+ return;
3067
+ }
3068
+
3069
+ // detect maximum depth of bundling before fetching the external resource,
3070
+ // matching ReferenceElement/PathItemElement (which check before toReference)
3071
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
3072
+ throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
3073
+ maxDepth: this.options.bundle.maxDepth,
3074
+ uri: this.reference.uri
1666
3075
  });
1667
- } finally {
1668
- this.inlineStack.delete(canonicalKey);
1669
3076
  }
1670
3077
 
1671
- // merge sibling fields from the referencing Path Item over the referenced
1672
- // one. The referencing `$ref` is being resolved away and is skipped; the
1673
- // referenced element keeps its own `$ref` if one survived (i.e. it was
1674
- // left in place to break a circular external Path Item chain).
1675
- pathItemElement.forEach((_value, keyElement, item) => {
1676
- const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
1677
- if (key === '$ref') return;
1678
- bundledElement.remove(key);
1679
- bundledElement.content.push(item);
3078
+ // locate the external schema resource the $ref targets, reusing the
3079
+ // dereference strategy's classification. First try to resolve the target
3080
+ // as a canonical URI / URL against the current document's $id graph; if
3081
+ // that fails, fall back to fetching the external document and resolving
3082
+ // the fragment there as a $anchor or JSON Pointer.
3083
+ let schemaReference = this.reference;
3084
+ try {
3085
+ const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
3086
+ (0,_dereference_strategies_openapi_3_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_37__.evaluate)($refBaseURI, referenceAsSchema);
3087
+ } catch (error) {
3088
+ if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_31__["default"]) {
3089
+ if ((0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.isAnchor)((0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.uriToAnchor)($refBaseURI))) {
3090
+ schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
3091
+ const selector = (0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.uriToAnchor)($refBaseURI);
3092
+ const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
3093
+ (0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.evaluate)(selector, referenceAsSchema);
3094
+ } else {
3095
+ schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
3096
+ const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
3097
+ const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
3098
+ (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(referenceAsSchema, selector);
3099
+ }
3100
+ } else {
3101
+ throw error;
3102
+ }
3103
+ }
3104
+
3105
+ // a $ref that resolves (by $id/$anchor/pointer) within the current document
3106
+ // is internal even when its URI form (e.g. a URN or absolute $id) is not a
3107
+ // bare fragment. Leave it untouched — it resolves against the in-document
3108
+ // $id graph, and embedding the current document into itself would be wrong.
3109
+ if (_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri) === _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri)) {
3110
+ return;
3111
+ }
3112
+
3113
+ // the resource to embed is the WHOLE external document (its root schema),
3114
+ // identified by its $id. A $ref into a fragment of the document embeds the
3115
+ // entire document resource once; the fragment keeps resolving against the
3116
+ // embedded $id.
3117
+ const resourceRoot = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
3118
+ const resourceBaseURI = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.resolveSchema$idField)(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri), resourceRoot) ?? _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri);
3119
+ const field = cf.schemas.name;
3120
+ const canonicalKey = `${field}\t${resourceBaseURI}`;
3121
+
3122
+ // resource already embedded (or being embedded) — leave the referencing
3123
+ // $ref untouched and stop. This also terminates circular external schema
3124
+ // references, since the assignment is reserved BEFORE recursion.
3125
+ if (this.assignments.has(canonicalKey)) {
3126
+ path.skip();
3127
+ return;
3128
+ }
3129
+
3130
+ // own a copy of the resource and ensure it carries a $id so the unchanged
3131
+ // $ref still resolves against it once embedded
3132
+ const embeddedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(resourceRoot);
3133
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(embeddedElement.$id)) {
3134
+ embeddedElement.set('$id', resourceBaseURI);
3135
+ }
3136
+
3137
+ // the embedded thing is the WHOLE resource (keyed by its $id), so its name
3138
+ // is derived from the resource URI, not the $ref fragment — passing a root
3139
+ // pointer makes baseName fall back to the resource basename
3140
+ const preferredName = this.baseName(embeddedElement, field, '', resourceBaseURI);
3141
+ const componentName = this.uniqueName(preferredName, field);
3142
+ this.reportNameCollision(preferredName, componentName, field);
3143
+
3144
+ // reserve the assignment and component name before recursing so circular
3145
+ // external schema references terminate
3146
+ this.assignments.set(canonicalKey, `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`);
3147
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
3148
+ this.reservedNames.get(field).add(componentName);
3149
+
3150
+ // bundle external references contained within the embedded resource;
3151
+ // nested external resources land flat in the same components.schemas
3152
+ const visitor = new OpenAPI3_1BundleVisitor({
3153
+ reference: schemaReference,
3154
+ options: this.options,
3155
+ assignments: this.assignments,
3156
+ reservedNames: this.reservedNames,
3157
+ refractCache: this.refractCache
1680
3158
  });
1681
- bundledElement.meta.set('ref-origin', reference.uri);
1682
- path.replaceWith(bundledElement);
3159
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(embeddedElement, visitor, {
3160
+ mutable: true
3161
+ });
3162
+
3163
+ // annotate the embedded resource with info about its origin
3164
+ bundledElement.meta.set('ref-origin', schemaReference.uri);
3165
+
3166
+ // place the embedded resource into the entry document's components
3167
+ this.ensureComponentsField(field).set(componentName, bundledElement);
3168
+
3169
+ // the referencing $ref is left UNCHANGED — it resolves against the
3170
+ // embedded resource's $id
3171
+ path.skip();
1683
3172
  } catch (error) {
1684
- this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
3173
+ this.handleError(`Error while bundling Schema Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
3174
+ path.skip();
1685
3175
  }
1686
3176
  }
1687
3177
 
@@ -1694,18 +3184,18 @@ class OpenAPI3_0BundleVisitor {
1694
3184
  const exampleElement = path.node;
1695
3185
 
1696
3186
  // ignore Example Objects without an externalValue field
1697
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
3187
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
1698
3188
  return;
1699
3189
  }
1700
3190
 
1701
3191
  // value and externalValue fields are mutually exclusive
1702
- if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
1703
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
1704
- value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.value),
1705
- externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue)
3192
+ if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
3193
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
3194
+ value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.value),
3195
+ externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue)
1706
3196
  });
1707
3197
  }
1708
- const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue);
3198
+ const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue);
1709
3199
  const retrievalURI = this.toBaseURI(externalValue);
1710
3200
  const isInternalReference = this.entryURI === retrievalURI;
1711
3201
  const isExternalReference = !isInternalReference;
@@ -1716,9 +3206,9 @@ class OpenAPI3_0BundleVisitor {
1716
3206
  }
1717
3207
  try {
1718
3208
  const reference = await this.toReference(externalValue);
1719
- const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(reference.value.result);
3209
+ const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(reference.value.result);
1720
3210
  valueElement.meta.set('ref-origin', reference.uri);
1721
- const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(exampleElement);
3211
+ const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(exampleElement);
1722
3212
  exampleElementCopy.value = valueElement;
1723
3213
  exampleElementCopy.remove('externalValue');
1724
3214
  path.replaceWith(exampleElementCopy);
@@ -1729,7 +3219,7 @@ class OpenAPI3_0BundleVisitor {
1729
3219
 
1730
3220
  /**
1731
3221
  * Link Object `operationRef` points at an Operation Object, which has no
1732
- * Components Object field in OpenAPI 3.0 and therefore cannot be hoisted or
3222
+ * Components Object field in OpenAPI 3.1 and therefore cannot be hoisted or
1733
3223
  * inlined. To keep the link resolvable from the bundled document, an external
1734
3224
  * `operationRef` is rewritten to its absolute URI. Internal `operationRef`
1735
3225
  * values and `operationId` links are left untouched.
@@ -1738,24 +3228,24 @@ class OpenAPI3_0BundleVisitor {
1738
3228
  const linkElement = path.node;
1739
3229
 
1740
3230
  // operationRef and operationId fields are mutually exclusive
1741
- if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationId)) {
1742
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
1743
- operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef),
1744
- operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationId)
3231
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationId)) {
3232
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
3233
+ operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef),
3234
+ operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationId)
1745
3235
  });
1746
3236
  }
1747
3237
 
1748
3238
  // only external operationRef links need adjusting
1749
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef)) {
3239
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef)) {
1750
3240
  return;
1751
3241
  }
1752
- const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef);
3242
+ const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef);
1753
3243
  const retrievalURI = this.toBaseURI(operationRef);
1754
3244
  const isInternalReference = this.entryURI === retrievalURI;
1755
3245
  if (isInternalReference) {
1756
- // normalize self-file operationRef to a bare fragment so the bundled
3246
+ // normalize a self-reference operationRef to a bare fragment so the bundled
1757
3247
  // document stays transferable; bare fragments are left untouched
1758
- linkElement.set('operationRef', this.normalizeSelfFileRef(operationRef));
3248
+ linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
1759
3249
  return;
1760
3250
  }
1761
3251
 
@@ -1766,58 +3256,13 @@ class OpenAPI3_0BundleVisitor {
1766
3256
 
1767
3257
  // rewrite to an absolute URI so the link keeps resolving once the document
1768
3258
  // is treated as self-contained
1769
- const absoluteURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, operationRef);
3259
+ const absoluteURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, operationRef);
1770
3260
  if (absoluteURI !== operationRef) {
1771
3261
  linkElement.set('operationRef', absoluteURI);
1772
3262
  }
1773
3263
  }
1774
3264
  }
1775
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleVisitor);
1776
-
1777
- /***/ },
1778
-
1779
- /***/ 16432
1780
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1781
-
1782
- "use strict";
1783
- __webpack_require__.r(__webpack_exports__);
1784
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1785
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1786
- /* harmony export */ });
1787
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7822);
1788
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76332);
1789
- /* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(75508);
1790
-
1791
-
1792
-
1793
- /**
1794
- * @public
1795
- */
1796
-
1797
- /**
1798
- * @public
1799
- */
1800
- class OpenAPI3_1BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_2__["default"] {
1801
- constructor(options) {
1802
- super({
1803
- ...(options ?? {}),
1804
- name: 'openapi-3-1'
1805
- });
1806
- }
1807
- canBundle(file) {
1808
- // assert by media type
1809
- if (file.mediaType !== 'text/plain') {
1810
- return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__["default"].includes(file.mediaType);
1811
- }
1812
-
1813
- // assert by inspecting ApiDOM
1814
- return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__.isOpenApi3_1Element)(file.parseResult?.result);
1815
- }
1816
- async bundle(file) {
1817
- return file.parseResult;
1818
- }
1819
- }
1820
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
3265
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleVisitor);
1821
3266
 
1822
3267
  /***/ },
1823
3268
 
@@ -10705,6 +12150,7 @@ __webpack_require__.r(__webpack_exports__);
10705
12150
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10706
12151
  /* harmony export */ cwd: () => (/* binding */ cwd),
10707
12152
  /* harmony export */ fromFileSystemPath: () => (/* binding */ fromFileSystemPath),
12153
+ /* harmony export */ getBasename: () => (/* binding */ getBasename),
10708
12154
  /* harmony export */ getExtension: () => (/* binding */ getExtension),
10709
12155
  /* harmony export */ getHash: () => (/* binding */ getHash),
10710
12156
  /* harmony export */ getProtocol: () => (/* binding */ getProtocol),
@@ -10764,19 +12210,40 @@ const getProtocol = url => {
10764
12210
  */
10765
12211
  const hasProtocol = (0,ramda__WEBPACK_IMPORTED_MODULE_3__["default"])(getProtocol, ramda_adjunct__WEBPACK_IMPORTED_MODULE_6__["default"]);
10766
12212
 
12213
+ /**
12214
+ * Returns the final path segment of the given URI (the part after the last
12215
+ * `/`). Inputs are URIs, whose path separator is `/` — filesystem paths are
12216
+ * forward-slashed by `sanitize` before reaching here.
12217
+ */
12218
+ const getFilename = uri => uri.slice(uri.lastIndexOf('/') + 1);
12219
+
10767
12220
  /**
10768
12221
  * Returns the lower-cased file extension of the given URL,
10769
12222
  * or an empty string if it has no extension.
10770
12223
  * @public
10771
12224
  */
10772
12225
  const getExtension = url => {
10773
- const lastDotPosition = url.lastIndexOf('.');
12226
+ const fileName = getFilename(url);
12227
+ const lastDotPosition = fileName.lastIndexOf('.');
10774
12228
  if (lastDotPosition >= 0) {
10775
- return url.substring(lastDotPosition).toLowerCase();
12229
+ return fileName.substring(lastDotPosition).toLowerCase();
10776
12230
  }
10777
12231
  return '';
10778
12232
  };
10779
12233
 
12234
+ /**
12235
+ * Returns the final path segment of the given URI with its file extension
12236
+ * removed (e.g. `./schemas/Pet.json` -> `Pet`). Returns the whole segment when
12237
+ * there is no extension, and the whole URI when there is no path segment
12238
+ * (e.g. a URN).
12239
+ * @public
12240
+ */
12241
+ const getBasename = uri => {
12242
+ const fileName = getFilename(uri);
12243
+ const extension = getExtension(uri);
12244
+ return extension === '' ? fileName : fileName.slice(0, -extension.length);
12245
+ };
12246
+
10780
12247
  /**
10781
12248
  * Determines whether the given path is a filesystem path.
10782
12249
  * This includes "file://" URLs.
@@ -50707,6 +52174,149 @@ const refractWorkflow = (value, options = {}) => refract(value, {
50707
52174
  });
50708
52175
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
50709
52176
 
52177
+ /***/ },
52178
+
52179
+ /***/ 90016
52180
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
52181
+
52182
+ "use strict";
52183
+ __webpack_require__.r(__webpack_exports__);
52184
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
52185
+ /* harmony export */ ArazzoElement: () => (/* reexport safe */ _elements_Arazzo_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
52186
+ /* harmony export */ ArazzoSpecification1Element: () => (/* reexport safe */ _elements_ArazzoSpecification1_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
52187
+ /* harmony export */ ComponentsElement: () => (/* reexport safe */ _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
52188
+ /* harmony export */ CriterionElement: () => (/* reexport safe */ _elements_Criterion_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
52189
+ /* harmony export */ CriterionExpressionTypeElement: () => (/* reexport safe */ _elements_CriterionExpressionType_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
52190
+ /* harmony export */ FailureActionElement: () => (/* reexport safe */ _elements_FailureAction_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
52191
+ /* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
52192
+ /* harmony export */ JSONSchemaElement: () => (/* reexport safe */ _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
52193
+ /* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
52194
+ /* harmony export */ PayloadReplacementElement: () => (/* reexport safe */ _elements_PayloadReplacement_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
52195
+ /* harmony export */ RequestBodyElement: () => (/* reexport safe */ _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
52196
+ /* harmony export */ ReusableElement: () => (/* reexport safe */ _elements_Reusable_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
52197
+ /* harmony export */ SourceDescriptionElement: () => (/* reexport safe */ _elements_SourceDescription_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
52198
+ /* harmony export */ StepElement: () => (/* reexport safe */ _elements_Step_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
52199
+ /* harmony export */ SuccessActionElement: () => (/* reexport safe */ _elements_SuccessAction_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
52200
+ /* harmony export */ WorkflowElement: () => (/* reexport safe */ _elements_Workflow_mjs__WEBPACK_IMPORTED_MODULE_17__["default"])
52201
+ /* harmony export */ });
52202
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
52203
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
52204
+ /* harmony import */ var _elements_Arazzo_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12400);
52205
+ /* harmony import */ var _elements_ArazzoSpecification1_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53540);
52206
+ /* harmony import */ var _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36245);
52207
+ /* harmony import */ var _elements_Criterion_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(59302);
52208
+ /* harmony import */ var _elements_CriterionExpressionType_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(90696);
52209
+ /* harmony import */ var _elements_FailureAction_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(32623);
52210
+ /* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(59801);
52211
+ /* harmony import */ var _elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(99922);
52212
+ /* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(66726);
52213
+ /* harmony import */ var _elements_PayloadReplacement_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(2923);
52214
+ /* harmony import */ var _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(44452);
52215
+ /* harmony import */ var _elements_Reusable_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(8954);
52216
+ /* harmony import */ var _elements_SourceDescription_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(43368);
52217
+ /* harmony import */ var _elements_Step_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(67923);
52218
+ /* harmony import */ var _elements_SuccessAction_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(256);
52219
+ /* harmony import */ var _elements_Workflow_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(46750);
52220
+ /* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(62707);
52221
+
52222
+
52223
+
52224
+
52225
+
52226
+
52227
+
52228
+
52229
+
52230
+
52231
+
52232
+
52233
+
52234
+
52235
+
52236
+
52237
+
52238
+
52239
+
52240
+ /**
52241
+ * @public
52242
+ */
52243
+ const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]);
52244
+ const getFixedFields = fixedFieldsSpec => {
52245
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
52246
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
52247
+ return {
52248
+ name,
52249
+ ...fieldSpec
52250
+ };
52251
+ }
52252
+ return {
52253
+ name,
52254
+ $visitor: fieldSpec
52255
+ };
52256
+ });
52257
+ };
52258
+ Object.defineProperty(_elements_ArazzoSpecification1_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], 'fixedFields', {
52259
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ArazzoSpecification.fixedFields),
52260
+ enumerable: true
52261
+ });
52262
+ Object.defineProperty(_elements_Components_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
52263
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
52264
+ enumerable: true
52265
+ });
52266
+ Object.defineProperty(_elements_Criterion_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
52267
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Criterion.fixedFields),
52268
+ enumerable: true
52269
+ });
52270
+ Object.defineProperty(_elements_CriterionExpressionType_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
52271
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.CriterionExpressionType.fixedFields),
52272
+ enumerable: true
52273
+ });
52274
+ Object.defineProperty(_elements_FailureAction_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], 'fixedFields', {
52275
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.FailureAction.fixedFields),
52276
+ enumerable: true
52277
+ });
52278
+ Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
52279
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
52280
+ enumerable: true
52281
+ });
52282
+ Object.defineProperty(_elements_JSONSchema_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
52283
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.JSONSchema.fixedFields),
52284
+ enumerable: true
52285
+ });
52286
+ Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
52287
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
52288
+ enumerable: true
52289
+ });
52290
+ Object.defineProperty(_elements_PayloadReplacement_mjs__WEBPACK_IMPORTED_MODULE_11__["default"], 'fixedFields', {
52291
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PayloadReplacement.fixedFields),
52292
+ enumerable: true
52293
+ });
52294
+ Object.defineProperty(_elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
52295
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
52296
+ enumerable: true
52297
+ });
52298
+ Object.defineProperty(_elements_Reusable_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
52299
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reusable.fixedFields),
52300
+ enumerable: true
52301
+ });
52302
+ Object.defineProperty(_elements_SourceDescription_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
52303
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SourceDescription.fixedFields),
52304
+ enumerable: true
52305
+ });
52306
+ Object.defineProperty(_elements_Step_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], 'fixedFields', {
52307
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Step.fixedFields),
52308
+ enumerable: true
52309
+ });
52310
+ Object.defineProperty(_elements_SuccessAction_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], 'fixedFields', {
52311
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SuccessAction.fixedFields),
52312
+ enumerable: true
52313
+ });
52314
+ Object.defineProperty(_elements_Workflow_mjs__WEBPACK_IMPORTED_MODULE_17__["default"], 'fixedFields', {
52315
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Workflow.fixedFields),
52316
+ enumerable: true
52317
+ });
52318
+
52319
+
50710
52320
  /***/ },
50711
52321
 
50712
52322
  /***/ 59726
@@ -87543,6 +89153,254 @@ const refractJsonSchemaDialect = (value, options = {}) => refract(value, {
87543
89153
  });
87544
89154
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
87545
89155
 
89156
+ /***/ },
89157
+
89158
+ /***/ 52645
89159
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
89160
+
89161
+ "use strict";
89162
+ __webpack_require__.r(__webpack_exports__);
89163
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
89164
+ /* harmony export */ CallbackElement: () => (/* reexport safe */ _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
89165
+ /* harmony export */ ComponentsElement: () => (/* reexport safe */ _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
89166
+ /* harmony export */ ContactElement: () => (/* reexport safe */ _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
89167
+ /* harmony export */ DiscriminatorElement: () => (/* reexport safe */ _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
89168
+ /* harmony export */ EncodingElement: () => (/* reexport safe */ _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
89169
+ /* harmony export */ ExampleElement: () => (/* reexport safe */ _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
89170
+ /* harmony export */ ExternalDocumentationElement: () => (/* reexport safe */ _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
89171
+ /* harmony export */ HeaderElement: () => (/* reexport safe */ _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
89172
+ /* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
89173
+ /* harmony export */ JsonSchemaDialectElement: () => (/* reexport safe */ _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
89174
+ /* harmony export */ LicenseElement: () => (/* reexport safe */ _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
89175
+ /* harmony export */ LinkElement: () => (/* reexport safe */ _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
89176
+ /* harmony export */ MediaTypeElement: () => (/* reexport safe */ _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
89177
+ /* harmony export */ OAuthFlowElement: () => (/* reexport safe */ _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
89178
+ /* harmony export */ OAuthFlowsElement: () => (/* reexport safe */ _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
89179
+ /* harmony export */ OpenApi3_1Element: () => (/* reexport safe */ _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
89180
+ /* harmony export */ OpenapiElement: () => (/* reexport safe */ _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
89181
+ /* harmony export */ OperationElement: () => (/* reexport safe */ _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
89182
+ /* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
89183
+ /* harmony export */ PathItemElement: () => (/* reexport safe */ _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]),
89184
+ /* harmony export */ PathsElement: () => (/* reexport safe */ _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
89185
+ /* harmony export */ ReferenceElement: () => (/* reexport safe */ _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]),
89186
+ /* harmony export */ RequestBodyElement: () => (/* reexport safe */ _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]),
89187
+ /* harmony export */ ResponseElement: () => (/* reexport safe */ _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]),
89188
+ /* harmony export */ ResponsesElement: () => (/* reexport safe */ _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]),
89189
+ /* harmony export */ SchemaElement: () => (/* reexport safe */ _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"]),
89190
+ /* harmony export */ SecurityRequirementElement: () => (/* reexport safe */ _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]),
89191
+ /* harmony export */ SecuritySchemeElement: () => (/* reexport safe */ _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"]),
89192
+ /* harmony export */ ServerElement: () => (/* reexport safe */ _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"]),
89193
+ /* harmony export */ ServerVariableElement: () => (/* reexport safe */ _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]),
89194
+ /* harmony export */ TagElement: () => (/* reexport safe */ _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"]),
89195
+ /* harmony export */ XmlElement: () => (/* reexport safe */ _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"])
89196
+ /* harmony export */ });
89197
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
89198
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
89199
+ /* harmony import */ var _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8041);
89200
+ /* harmony import */ var _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68772);
89201
+ /* harmony import */ var _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16368);
89202
+ /* harmony import */ var _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13456);
89203
+ /* harmony import */ var _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67071);
89204
+ /* harmony import */ var _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(91210);
89205
+ /* harmony import */ var _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82753);
89206
+ /* harmony import */ var _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(10391);
89207
+ /* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80064);
89208
+ /* harmony import */ var _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(66035);
89209
+ /* harmony import */ var _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(10673);
89210
+ /* harmony import */ var _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64720);
89211
+ /* harmony import */ var _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(91784);
89212
+ /* harmony import */ var _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(73645);
89213
+ /* harmony import */ var _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(28308);
89214
+ /* harmony import */ var _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(14540);
89215
+ /* harmony import */ var _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(81793);
89216
+ /* harmony import */ var _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(54427);
89217
+ /* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(5849);
89218
+ /* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(43360);
89219
+ /* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(85652);
89220
+ /* harmony import */ var _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(36539);
89221
+ /* harmony import */ var _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71387);
89222
+ /* harmony import */ var _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(51193);
89223
+ /* harmony import */ var _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(77080);
89224
+ /* harmony import */ var _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(26385);
89225
+ /* harmony import */ var _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(87051);
89226
+ /* harmony import */ var _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(3719);
89227
+ /* harmony import */ var _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(93497);
89228
+ /* harmony import */ var _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(7929);
89229
+ /* harmony import */ var _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(24224);
89230
+ /* harmony import */ var _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(10931);
89231
+ /* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(56110);
89232
+
89233
+
89234
+
89235
+ /**
89236
+ * OpenAPI 3.1 specification elements.
89237
+ */
89238
+
89239
+
89240
+
89241
+
89242
+
89243
+
89244
+
89245
+
89246
+
89247
+
89248
+
89249
+
89250
+
89251
+
89252
+
89253
+
89254
+
89255
+
89256
+
89257
+
89258
+
89259
+
89260
+
89261
+
89262
+
89263
+
89264
+
89265
+
89266
+
89267
+
89268
+
89269
+
89270
+
89271
+ /**
89272
+ * @public
89273
+ */
89274
+ // Resolve specification to dereference $ref pointers
89275
+ const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]);
89276
+
89277
+ // Extract fixed fields as list of { name, alias?, $visitor }
89278
+ const getFixedFields = fixedFieldsSpec => {
89279
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
89280
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
89281
+ return {
89282
+ name,
89283
+ ...fieldSpec
89284
+ };
89285
+ }
89286
+ return {
89287
+ name,
89288
+ $visitor: fieldSpec
89289
+ };
89290
+ });
89291
+ };
89292
+
89293
+ // OpenAPI 3.1 specification elements
89294
+ Object.defineProperty(_elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], 'fixedFields', {
89295
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
89296
+ enumerable: true
89297
+ });
89298
+ Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
89299
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
89300
+ enumerable: true
89301
+ });
89302
+ Object.defineProperty(_elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
89303
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
89304
+ enumerable: true
89305
+ });
89306
+ Object.defineProperty(_elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
89307
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
89308
+ enumerable: true
89309
+ });
89310
+ Object.defineProperty(_elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"], 'fixedFields', {
89311
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
89312
+ enumerable: true
89313
+ });
89314
+ Object.defineProperty(_elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"], 'fixedFields', {
89315
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
89316
+ enumerable: true
89317
+ });
89318
+ Object.defineProperty(_elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], 'fixedFields', {
89319
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
89320
+ enumerable: true
89321
+ });
89322
+ Object.defineProperty(_elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], 'fixedFields', {
89323
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
89324
+ enumerable: true
89325
+ });
89326
+ Object.defineProperty(_elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], 'fixedFields', {
89327
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
89328
+ enumerable: true
89329
+ });
89330
+ Object.defineProperty(_elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
89331
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
89332
+ enumerable: true
89333
+ });
89334
+ Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], 'fixedFields', {
89335
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
89336
+ enumerable: true
89337
+ });
89338
+ Object.defineProperty(_elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"], 'fixedFields', {
89339
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
89340
+ enumerable: true
89341
+ });
89342
+ Object.defineProperty(_elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
89343
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
89344
+ enumerable: true
89345
+ });
89346
+ Object.defineProperty(_elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
89347
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
89348
+ enumerable: true
89349
+ });
89350
+ Object.defineProperty(_elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"], 'fixedFields', {
89351
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
89352
+ enumerable: true
89353
+ });
89354
+ Object.defineProperty(_elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"], 'fixedFields', {
89355
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
89356
+ enumerable: true
89357
+ });
89358
+ Object.defineProperty(_elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], 'fixedFields', {
89359
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
89360
+ enumerable: true
89361
+ });
89362
+ Object.defineProperty(_elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
89363
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
89364
+ enumerable: true
89365
+ });
89366
+ Object.defineProperty(_elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
89367
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
89368
+ enumerable: true
89369
+ });
89370
+ Object.defineProperty(_elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"], 'fixedFields', {
89371
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
89372
+ enumerable: true
89373
+ });
89374
+ Object.defineProperty(_elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"], 'fixedFields', {
89375
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
89376
+ enumerable: true
89377
+ });
89378
+ Object.defineProperty(_elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"], 'fixedFields', {
89379
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
89380
+ enumerable: true
89381
+ });
89382
+ Object.defineProperty(_elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
89383
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
89384
+ enumerable: true
89385
+ });
89386
+ Object.defineProperty(_elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"], 'fixedFields', {
89387
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
89388
+ enumerable: true
89389
+ });
89390
+ Object.defineProperty(_elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"], 'fixedFields', {
89391
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
89392
+ enumerable: true
89393
+ });
89394
+ Object.defineProperty(_elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], 'fixedFields', {
89395
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
89396
+ enumerable: true
89397
+ });
89398
+ Object.defineProperty(_elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], 'fixedFields', {
89399
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
89400
+ enumerable: true
89401
+ });
89402
+
89403
+
87546
89404
  /***/ },
87547
89405
 
87548
89406
  /***/ 68201
@@ -102974,48 +104832,48 @@ var __webpack_exports__ = {};
102974
104832
  "use strict";
102975
104833
  __webpack_require__.r(__webpack_exports__);
102976
104834
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
102977
- /* harmony export */ BundleError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.BundleError),
102978
- /* harmony export */ BundleStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.BundleStrategy),
102979
- /* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceAncestorLineage),
102980
- /* harmony export */ DereferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceError),
102981
- /* harmony export */ DereferenceStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceStrategy),
102982
- /* harmony export */ EvaluationElementIdError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationElementIdError),
102983
- /* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchema$anchorError),
102984
- /* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchemaUriError),
102985
- /* harmony export */ File: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.File),
102986
- /* harmony export */ HTTPResolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.HTTPResolver),
102987
- /* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.InvalidJsonSchema$anchorError),
102988
- /* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.JsonSchema$anchorError),
102989
- /* harmony export */ JsonSchemaURIError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.JsonSchemaURIError),
102990
- /* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumBundleDepthError),
102991
- /* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumDereferenceDepthError),
102992
- /* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumResolveDepthError),
102993
- /* harmony export */ ParseError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ParseError),
102994
- /* harmony export */ Parser: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Parser),
102995
- /* harmony export */ ParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ParserError),
102996
- /* harmony export */ PluginError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.PluginError),
102997
- /* harmony export */ Reference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Reference),
102998
- /* harmony export */ ReferenceSet: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ReferenceSet),
102999
- /* harmony export */ ResolveError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolveError),
103000
- /* harmony export */ ResolveStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolveStrategy),
103001
- /* harmony export */ Resolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Resolver),
103002
- /* harmony export */ ResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolverError),
103003
- /* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedBundleStrategyError),
103004
- /* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedDereferenceStrategyError),
103005
- /* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedParserError),
103006
- /* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolveStrategyError),
103007
- /* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolverError),
103008
- /* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnresolvableReferenceError),
103009
- /* harmony export */ bundle: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.bundle),
103010
- /* harmony export */ dereference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.dereference),
103011
- /* harmony export */ dereferenceApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.dereferenceApiDOM),
103012
- /* harmony export */ mergeOptions: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.mergeOptions),
103013
- /* harmony export */ options: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.options),
103014
- /* harmony export */ parse: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.parse),
103015
- /* harmony export */ readFile: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.readFile),
103016
- /* harmony export */ resolve: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.resolve),
103017
- /* harmony export */ resolveApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.resolveApiDOM),
103018
- /* harmony export */ url: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.url)
104835
+ /* harmony export */ BundleError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.BundleError),
104836
+ /* harmony export */ BundleStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.BundleStrategy),
104837
+ /* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.DereferenceAncestorLineage),
104838
+ /* harmony export */ DereferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.DereferenceError),
104839
+ /* harmony export */ DereferenceStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.DereferenceStrategy),
104840
+ /* harmony export */ EvaluationElementIdError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.EvaluationElementIdError),
104841
+ /* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.EvaluationJsonSchema$anchorError),
104842
+ /* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.EvaluationJsonSchemaUriError),
104843
+ /* harmony export */ File: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.File),
104844
+ /* harmony export */ HTTPResolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.HTTPResolver),
104845
+ /* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.InvalidJsonSchema$anchorError),
104846
+ /* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.JsonSchema$anchorError),
104847
+ /* harmony export */ JsonSchemaURIError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.JsonSchemaURIError),
104848
+ /* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.MaximumBundleDepthError),
104849
+ /* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.MaximumDereferenceDepthError),
104850
+ /* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.MaximumResolveDepthError),
104851
+ /* harmony export */ ParseError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ParseError),
104852
+ /* harmony export */ Parser: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.Parser),
104853
+ /* harmony export */ ParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ParserError),
104854
+ /* harmony export */ PluginError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.PluginError),
104855
+ /* harmony export */ Reference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.Reference),
104856
+ /* harmony export */ ReferenceSet: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ReferenceSet),
104857
+ /* harmony export */ ResolveError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ResolveError),
104858
+ /* harmony export */ ResolveStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ResolveStrategy),
104859
+ /* harmony export */ Resolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.Resolver),
104860
+ /* harmony export */ ResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.ResolverError),
104861
+ /* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnmatchedBundleStrategyError),
104862
+ /* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnmatchedDereferenceStrategyError),
104863
+ /* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnmatchedParserError),
104864
+ /* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnmatchedResolveStrategyError),
104865
+ /* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnmatchedResolverError),
104866
+ /* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.UnresolvableReferenceError),
104867
+ /* harmony export */ bundle: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.bundle),
104868
+ /* harmony export */ dereference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.dereference),
104869
+ /* harmony export */ dereferenceApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.dereferenceApiDOM),
104870
+ /* harmony export */ mergeOptions: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.mergeOptions),
104871
+ /* harmony export */ options: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.options),
104872
+ /* harmony export */ parse: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.parse),
104873
+ /* harmony export */ readFile: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.readFile),
104874
+ /* harmony export */ resolve: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.resolve),
104875
+ /* harmony export */ resolveApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.resolveApiDOM),
104876
+ /* harmony export */ url: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_37__.url)
103019
104877
  /* harmony export */ });
103020
104878
  /* harmony import */ var _resolve_resolvers_file_index_node_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50365);
103021
104879
  /* harmony import */ var _resolve_resolvers_http_axios_index_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16341);
@@ -103052,8 +104910,10 @@ __webpack_require__.r(__webpack_exports__);
103052
104910
  /* harmony import */ var _bundle_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(11157);
103053
104911
  /* harmony import */ var _bundle_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(12087);
103054
104912
  /* harmony import */ var _bundle_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(16432);
103055
- /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(98363);
103056
- /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(33906);
104913
+ /* harmony import */ var _bundle_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(17435);
104914
+ /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(98363);
104915
+ /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(33906);
104916
+
103057
104917
 
103058
104918
 
103059
104919
 
@@ -103090,7 +104950,7 @@ __webpack_require__.r(__webpack_exports__);
103090
104950
 
103091
104951
 
103092
104952
 
103093
- _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].parse.parsers = [new _parse_parsers_openapi_json_2_index_ts__WEBPACK_IMPORTED_MODULE_9__["default"]({
104953
+ _index_ts__WEBPACK_IMPORTED_MODULE_36__["default"].parse.parsers = [new _parse_parsers_openapi_json_2_index_ts__WEBPACK_IMPORTED_MODULE_9__["default"]({
103094
104954
  allowEmpty: true,
103095
104955
  sourceMap: false
103096
104956
  }), new _parse_parsers_openapi_yaml_2_index_ts__WEBPACK_IMPORTED_MODULE_10__["default"]({
@@ -103138,14 +104998,14 @@ _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].parse.parsers = [new _parse_p
103138
104998
  }), new _parse_parsers_binary_index_node_ts__WEBPACK_IMPORTED_MODULE_24__["default"]({
103139
104999
  allowEmpty: true
103140
105000
  })];
103141
- _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].resolve.resolvers = [new _resolve_resolvers_file_index_node_ts__WEBPACK_IMPORTED_MODULE_0__["default"](), new _resolve_resolvers_http_axios_index_ts__WEBPACK_IMPORTED_MODULE_1__["default"]({
105001
+ _index_ts__WEBPACK_IMPORTED_MODULE_36__["default"].resolve.resolvers = [new _resolve_resolvers_file_index_node_ts__WEBPACK_IMPORTED_MODULE_0__["default"](), new _resolve_resolvers_http_axios_index_ts__WEBPACK_IMPORTED_MODULE_1__["default"]({
103142
105002
  timeout: 5000,
103143
105003
  redirects: 5,
103144
105004
  withCredentials: false
103145
105005
  })];
103146
- _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].resolve.strategies = [new _resolve_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_2__["default"](), new _resolve_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_3__["default"](), new _resolve_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_4__["default"](), new _resolve_strategies_asyncapi_2_index_ts__WEBPACK_IMPORTED_MODULE_5__["default"](), new _resolve_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_6__["default"](), new _resolve_strategies_overlay_1_index_ts__WEBPACK_IMPORTED_MODULE_7__["default"](), new _resolve_strategies_apidom_index_ts__WEBPACK_IMPORTED_MODULE_8__["default"]()];
103147
- _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].dereference.strategies = [new _dereference_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_26__["default"](), new _dereference_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_27__["default"](), new _dereference_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_28__["default"](), new _dereference_strategies_asyncapi_2_index_ts__WEBPACK_IMPORTED_MODULE_29__["default"](), new _dereference_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_30__["default"](), new _dereference_strategies_overlay_1_index_ts__WEBPACK_IMPORTED_MODULE_31__["default"](), new _dereference_strategies_apidom_index_ts__WEBPACK_IMPORTED_MODULE_25__["default"]()];
103148
- _index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].bundle.strategies = [new _bundle_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_32__["default"](), new _bundle_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_33__["default"](), new _bundle_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_34__["default"]()];
105006
+ _index_ts__WEBPACK_IMPORTED_MODULE_36__["default"].resolve.strategies = [new _resolve_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_2__["default"](), new _resolve_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_3__["default"](), new _resolve_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_4__["default"](), new _resolve_strategies_asyncapi_2_index_ts__WEBPACK_IMPORTED_MODULE_5__["default"](), new _resolve_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_6__["default"](), new _resolve_strategies_overlay_1_index_ts__WEBPACK_IMPORTED_MODULE_7__["default"](), new _resolve_strategies_apidom_index_ts__WEBPACK_IMPORTED_MODULE_8__["default"]()];
105007
+ _index_ts__WEBPACK_IMPORTED_MODULE_36__["default"].dereference.strategies = [new _dereference_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_26__["default"](), new _dereference_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_27__["default"](), new _dereference_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_28__["default"](), new _dereference_strategies_asyncapi_2_index_ts__WEBPACK_IMPORTED_MODULE_29__["default"](), new _dereference_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_30__["default"](), new _dereference_strategies_overlay_1_index_ts__WEBPACK_IMPORTED_MODULE_31__["default"](), new _dereference_strategies_apidom_index_ts__WEBPACK_IMPORTED_MODULE_25__["default"]()];
105008
+ _index_ts__WEBPACK_IMPORTED_MODULE_36__["default"].bundle.strategies = [new _bundle_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_32__["default"](), new _bundle_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_33__["default"](), new _bundle_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_34__["default"](), new _bundle_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_35__["default"]()];
103149
105009
 
103150
105010
  })();
103151
105011