@speclynx/apidom-reference 4.12.1 → 4.14.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.
- package/CHANGELOG.md +12 -0
- package/README.md +99 -4
- package/dist/apidom-reference.browser.js +2353 -293
- package/dist/apidom-reference.browser.min.js +1 -1
- package/package.json +33 -28
- package/src/bundle/strategies/openapi-2/index.cjs +94 -0
- package/src/bundle/strategies/openapi-2/index.mjs +81 -0
- package/src/bundle/strategies/openapi-2/visitor.cjs +559 -0
- package/src/bundle/strategies/openapi-2/visitor.mjs +551 -0
- package/src/bundle/strategies/openapi-3-0/visitor.cjs +10 -18
- package/src/bundle/strategies/openapi-3-0/visitor.mjs +10 -18
- package/src/bundle/strategies/openapi-3-1/index.cjs +59 -2
- package/src/bundle/strategies/openapi-3-1/index.mjs +54 -2
- package/src/bundle/strategies/openapi-3-1/visitor.cjs +811 -0
- package/src/bundle/strategies/openapi-3-1/visitor.mjs +803 -0
- package/src/configuration/saturated.cjs +12 -11
- package/src/configuration/saturated.mjs +2 -1
- package/src/util/url.cjs +26 -4
- package/src/util/url.mjs +23 -2
- package/types/apidom-reference.d.ts +10 -0
- package/types/bundle/strategies/openapi-2/index.d.ts +31 -0
- package/types/bundle/strategies/openapi-2/visitor.d.ts +131 -0
- package/types/bundle/strategies/openapi-3-0/visitor.d.ts +2 -2
- package/types/bundle/strategies/openapi-3-1/index.d.ts +6 -1
- package/types/bundle/strategies/openapi-3-1/visitor.d.ts +141 -0
- package/types/util/url.d.ts +8 -0
|
@@ -288,23 +288,1495 @@ class BundleStrategy {
|
|
|
288
288
|
|
|
289
289
|
/***/ },
|
|
290
290
|
|
|
291
|
+
/***/ 11157
|
|
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 */ OpenAPI2BundleVisitor: () => (/* 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_openapi_2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3677);
|
|
303
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26365);
|
|
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__(45979);
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* @public
|
|
318
|
+
*/
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* @public
|
|
322
|
+
*/
|
|
323
|
+
class OpenAPI2BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
324
|
+
constructor(options) {
|
|
325
|
+
super({
|
|
326
|
+
...(options ?? {}),
|
|
327
|
+
name: 'openapi-2'
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
canBundle(file) {
|
|
331
|
+
// assert by media type
|
|
332
|
+
if (file.mediaType !== 'text/plain') {
|
|
333
|
+
return _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// assert by inspecting ApiDOM
|
|
337
|
+
return (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_3__.isSwaggerElement)(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__ = (OpenAPI2BundleStrategy);
|
|
391
|
+
|
|
392
|
+
/***/ },
|
|
393
|
+
|
|
394
|
+
/***/ 45979
|
|
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__(6352);
|
|
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__(97071);
|
|
406
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84660);
|
|
407
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37205);
|
|
408
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44673);
|
|
409
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16280);
|
|
410
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80796);
|
|
411
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(12020);
|
|
412
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(61198);
|
|
413
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61500);
|
|
414
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(86059);
|
|
415
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(59014);
|
|
416
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(3498);
|
|
417
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(26365);
|
|
418
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(72880);
|
|
419
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(60574);
|
|
420
|
+
/* harmony import */ var _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(81002);
|
|
421
|
+
/* harmony import */ var _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8853);
|
|
422
|
+
/* harmony import */ var _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(16843);
|
|
423
|
+
/* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(51325);
|
|
424
|
+
/* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(30658);
|
|
425
|
+
/* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(35014);
|
|
426
|
+
/* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(98979);
|
|
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
|
+
* Maps the `referenced-element` meta value (set during refraction) to the
|
|
444
|
+
* top-level Swagger Object field where the referenced element should be
|
|
445
|
+
* hoisted. Unlike OpenAPI 3.x, OpenAPI 2.0 has no single Components Object;
|
|
446
|
+
* reusable definitions live directly under the document root. Field names are
|
|
447
|
+
* sourced from the Swagger Object fixed fields so they cannot drift from the
|
|
448
|
+
* namespace definition.
|
|
449
|
+
*/
|
|
450
|
+
const sf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__.fixedFields)(_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.SwaggerElement, {
|
|
451
|
+
indexed: true
|
|
452
|
+
});
|
|
453
|
+
const fieldByReferencedElement = {
|
|
454
|
+
schema: sf.definitions.name,
|
|
455
|
+
parameter: sf.parameters.name,
|
|
456
|
+
response: sf.responses.name
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Maps a top-level Swagger Object field to the named-content element the
|
|
461
|
+
* namespace uses for it, so a bundle-created field matches a parsed/refracted
|
|
462
|
+
* one (e.g. carries the `definitions` class) rather than being a generic
|
|
463
|
+
* object.
|
|
464
|
+
*/
|
|
465
|
+
const fieldElementByField = {
|
|
466
|
+
[sf.definitions.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.DefinitionsElement,
|
|
467
|
+
[sf.parameters.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.ParametersDefinitionsElement,
|
|
468
|
+
[sf.responses.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.ResponsesDefinitionsElement
|
|
469
|
+
};
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* @public
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* @public
|
|
477
|
+
*/
|
|
478
|
+
class OpenAPI2BundleVisitor {
|
|
479
|
+
reference;
|
|
480
|
+
options;
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* The base URI (without hash) of the entry document. A reference is
|
|
484
|
+
* considered internal when it resolves to this URI and external otherwise.
|
|
485
|
+
* Derived from the shared refSet's root reference.
|
|
486
|
+
*/
|
|
487
|
+
get entryURI() {
|
|
488
|
+
return _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* The entry parse result. Derived from the shared refSet's root reference.
|
|
493
|
+
*/
|
|
494
|
+
get entryParseResult() {
|
|
495
|
+
return this.reference.refSet.rootRef.value;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* The entry document element. Hoisted external fragments are placed into its
|
|
500
|
+
* top-level definition fields. The `canBundle` guard guarantees it is a
|
|
501
|
+
* SwaggerElement.
|
|
502
|
+
*/
|
|
503
|
+
get entryResult() {
|
|
504
|
+
return this.entryParseResult.result;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Shared across the entry document and every external document visitor.
|
|
509
|
+
* Guarantees each external fragment is hoisted exactly once and gives us a
|
|
510
|
+
* stable internal pointer to rewrite every referencing element to.
|
|
511
|
+
*/
|
|
512
|
+
assignments;
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Component names already reserved per definition field. Reserved before
|
|
516
|
+
* recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
|
|
517
|
+
* components that are still being bundled.
|
|
518
|
+
*/
|
|
519
|
+
reservedNames;
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Caches refracted fragments keyed by source element and target element type.
|
|
523
|
+
* The type is part of the key because the same source can be refracted into
|
|
524
|
+
* different semantic elements depending on the referencing context (e.g. a
|
|
525
|
+
* generic object referenced once as a Parameter and once as a Response).
|
|
526
|
+
*/
|
|
527
|
+
refractCache;
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Canonical URIs of Path Item Objects currently being inlined. Path Items
|
|
531
|
+
* are not a top-level definition field in OpenAPI 2.0, so the `assignments`
|
|
532
|
+
* map can't break their cycles. This stack guards against circular external
|
|
533
|
+
* Path Item references.
|
|
534
|
+
*/
|
|
535
|
+
inlineStack;
|
|
536
|
+
constructor({
|
|
537
|
+
reference,
|
|
538
|
+
options,
|
|
539
|
+
assignments = new Map(),
|
|
540
|
+
reservedNames = new Map(),
|
|
541
|
+
refractCache = new WeakMap(),
|
|
542
|
+
inlineStack = new Set()
|
|
543
|
+
}) {
|
|
544
|
+
this.reference = reference;
|
|
545
|
+
this.options = options;
|
|
546
|
+
this.inlineStack = inlineStack;
|
|
547
|
+
this.assignments = assignments;
|
|
548
|
+
this.reservedNames = reservedNames;
|
|
549
|
+
this.refractCache = refractCache;
|
|
550
|
+
}
|
|
551
|
+
getRefracted(source, type) {
|
|
552
|
+
return this.refractCache.get(source)?.get(type);
|
|
553
|
+
}
|
|
554
|
+
setRefracted(source, type, refracted) {
|
|
555
|
+
let byType = this.refractCache.get(source);
|
|
556
|
+
if (byType === undefined) {
|
|
557
|
+
byType = new Map();
|
|
558
|
+
this.refractCache.set(source, byType);
|
|
559
|
+
}
|
|
560
|
+
byType.set(type, refracted);
|
|
561
|
+
}
|
|
562
|
+
toBaseURI(uri) {
|
|
563
|
+
return _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_22__.stripHash(uri)));
|
|
564
|
+
}
|
|
565
|
+
async toReference(uri) {
|
|
566
|
+
// detect maximum depth of resolution
|
|
567
|
+
if (this.reference.depth >= this.options.resolve.maxDepth) {
|
|
568
|
+
throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_21__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
|
|
569
|
+
maxDepth: this.options.resolve.maxDepth,
|
|
570
|
+
uri: this.reference.uri
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
const baseURI = this.toBaseURI(uri);
|
|
574
|
+
const {
|
|
575
|
+
refSet
|
|
576
|
+
} = this.reference;
|
|
577
|
+
|
|
578
|
+
// we've already processed this Reference in past
|
|
579
|
+
if (refSet.has(baseURI)) {
|
|
580
|
+
return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(baseURI, 'uri'));
|
|
581
|
+
}
|
|
582
|
+
const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_23__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_22__.unsanitize(baseURI), {
|
|
583
|
+
...this.options,
|
|
584
|
+
parse: {
|
|
585
|
+
...this.options.parse,
|
|
586
|
+
mediaType: 'text/plain'
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
const reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_24__["default"]({
|
|
590
|
+
uri: baseURI,
|
|
591
|
+
value: parseResult,
|
|
592
|
+
depth: this.reference.depth + 1
|
|
593
|
+
});
|
|
594
|
+
refSet.add(reference);
|
|
595
|
+
return reference;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Normalizes a self-reference (e.g. `./root.json#/definitions/Pet`)
|
|
600
|
+
* to a bare fragment (`#/definitions/Pet`) so the bundled document stays
|
|
601
|
+
* transferable. Bare fragments are returned unchanged.
|
|
602
|
+
*/
|
|
603
|
+
normalizeSelfReference(ref) {
|
|
604
|
+
return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.getHash(ref);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Handles an error according to the `bundle.continueOnError` option.
|
|
609
|
+
*
|
|
610
|
+
* For new errors: wraps in UnresolvableReferenceError with structured
|
|
611
|
+
* context. For errors already wrapped by a nested visitor: prepends the
|
|
612
|
+
* current hop to the trace.
|
|
613
|
+
*
|
|
614
|
+
* Inner/intermediate visitors always throw to let the trace accumulate. Only
|
|
615
|
+
* the entry document visitor respects continueOnError (callback/swallow/throw).
|
|
616
|
+
*/
|
|
617
|
+
handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
|
|
618
|
+
// a collision reported as `error` is a deliberate hard stop with no
|
|
619
|
+
// resolution-failure analog, so pass it through unchanged. A maxDepth
|
|
620
|
+
// breach (MaximumBundleDepthError, which also extends BundleError) is a
|
|
621
|
+
// resolution failure and flows through below — wrapped and subject to
|
|
622
|
+
// continueOnError, like dereferencing.
|
|
623
|
+
if (error instanceof _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_18__["default"] && !(error instanceof _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_20__["default"])) {
|
|
624
|
+
throw error;
|
|
625
|
+
}
|
|
626
|
+
const {
|
|
627
|
+
continueOnError
|
|
628
|
+
} = this.options.bundle;
|
|
629
|
+
const isEntryDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
|
|
630
|
+
const uri = this.reference.uri;
|
|
631
|
+
const type = referencingElement.element;
|
|
632
|
+
const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement);
|
|
633
|
+
const location = visitorPath.formatPath();
|
|
634
|
+
const hop = {
|
|
635
|
+
uri,
|
|
636
|
+
type,
|
|
637
|
+
refFieldName,
|
|
638
|
+
refFieldValue,
|
|
639
|
+
location,
|
|
640
|
+
codeFrame
|
|
641
|
+
};
|
|
642
|
+
let unresolvedError;
|
|
643
|
+
if (error instanceof _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_19__["default"]) {
|
|
644
|
+
// @ts-ignore
|
|
645
|
+
error.trace = [hop, ...error.trace];
|
|
646
|
+
unresolvedError = error;
|
|
647
|
+
} else {
|
|
648
|
+
unresolvedError = new _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_19__["default"](message, {
|
|
649
|
+
cause: error,
|
|
650
|
+
type,
|
|
651
|
+
uri,
|
|
652
|
+
location,
|
|
653
|
+
codeFrame,
|
|
654
|
+
refFieldName,
|
|
655
|
+
refFieldValue,
|
|
656
|
+
trace: []
|
|
657
|
+
});
|
|
658
|
+
}
|
|
659
|
+
if (!isEntryDocument || continueOnError === false) throw unresolvedError;
|
|
660
|
+
if (typeof continueOnError === 'function') continueOnError(unresolvedError);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Lazily creates the requested top-level definition field on the entry
|
|
665
|
+
* document, returning the field where a fragment is hoisted.
|
|
666
|
+
*/
|
|
667
|
+
ensureField(field) {
|
|
668
|
+
const entryResult = this.entryResult;
|
|
669
|
+
let fieldElement = entryResult.get(field);
|
|
670
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(fieldElement)) {
|
|
671
|
+
const FieldElement = fieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"];
|
|
672
|
+
fieldElement = new FieldElement();
|
|
673
|
+
entryResult.set(field, fieldElement);
|
|
674
|
+
}
|
|
675
|
+
return fieldElement;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Derives a component name from the referenced JSON Pointer's last token,
|
|
680
|
+
* falling back to the referenced file's basename.
|
|
681
|
+
*/
|
|
682
|
+
basenameOf(jsonPointer, baseURI) {
|
|
683
|
+
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.parse)(jsonPointer).tree;
|
|
684
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
685
|
+
return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.getBasename(baseURI) || 'Schema';
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* Computes the base component name (before collision suffixing) according to
|
|
690
|
+
* the configured naming strategy.
|
|
691
|
+
*/
|
|
692
|
+
baseName(element, field, jsonPointer, baseURI) {
|
|
693
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
694
|
+
const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-2']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
|
|
695
|
+
if (typeof componentNamesStrategy === 'function') {
|
|
696
|
+
const resolved = componentNamesStrategy({
|
|
697
|
+
element,
|
|
698
|
+
field,
|
|
699
|
+
jsonPointer,
|
|
700
|
+
baseURI
|
|
701
|
+
});
|
|
702
|
+
if (typeof resolved === 'string' && resolved !== '') {
|
|
703
|
+
return resolved;
|
|
704
|
+
}
|
|
705
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
706
|
+
}
|
|
707
|
+
if (componentNamesStrategy === 'title') {
|
|
708
|
+
const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(element.get('title')) : undefined;
|
|
709
|
+
if (typeof title === 'string' && title.trim() !== '') {
|
|
710
|
+
const name = (0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.sanitizeComponentName)((0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.toPascalCase)(title));
|
|
711
|
+
if (name !== '') return name;
|
|
712
|
+
}
|
|
713
|
+
// fall back to basename when no usable title is present
|
|
714
|
+
}
|
|
715
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Computes a collision-free component name within the target field. A name is
|
|
720
|
+
* taken if it's already placed in the field or reserved by a component that
|
|
721
|
+
* is still being bundled (reserved before recursion).
|
|
722
|
+
*/
|
|
723
|
+
uniqueName(candidate, field) {
|
|
724
|
+
const fieldElement = this.ensureField(field);
|
|
725
|
+
const reserved = this.reservedNames.get(field) ?? new Set();
|
|
726
|
+
return (0,_util_ts__WEBPACK_IMPORTED_MODULE_25__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
/**
|
|
730
|
+
* Bundles a Reference Object (parameters/responses) or a JSON Reference
|
|
731
|
+
* Object (schemas). The two reference flavors differ only in their predicate
|
|
732
|
+
* and refraction helpers, so the shared logic is parameterized here.
|
|
733
|
+
*/
|
|
734
|
+
async bundleReference(path, referencingElement, isSemanticReference, isReferenceLike, refractReferenceFn, label) {
|
|
735
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement.$ref);
|
|
736
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
737
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
738
|
+
const isExternalReference = !isInternalReference;
|
|
739
|
+
if (isInternalReference) {
|
|
740
|
+
// normalize self-references to a bare fragment so the bundled
|
|
741
|
+
// document stays transferable; bare fragments are left untouched
|
|
742
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
743
|
+
path.skip();
|
|
744
|
+
return;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
// honor the resolve.external switch
|
|
748
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
749
|
+
path.skip();
|
|
750
|
+
return;
|
|
751
|
+
}
|
|
752
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.resolve(retrievalURI, $ref);
|
|
753
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
754
|
+
|
|
755
|
+
// the target field depends on the referencing context, so it's part of the
|
|
756
|
+
// identity: the same external target referenced as e.g. both a parameter and
|
|
757
|
+
// a response must be hoisted into both fields. The refractor sets
|
|
758
|
+
// `referenced-element` for every Reference Object position; the `schema`
|
|
759
|
+
// fallback is a defensive default for the (unexpected) untagged case.
|
|
760
|
+
const referencedElementType = referencingElement.meta.get('referenced-element');
|
|
761
|
+
const field = fieldByReferencedElement[referencedElementType] ?? fieldByReferencedElement.schema;
|
|
762
|
+
const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
|
|
763
|
+
|
|
764
|
+
// already hoisted (or being hoisted) — just rewrite the pointer.
|
|
765
|
+
//
|
|
766
|
+
// this is also how circular references terminate: the assignment is
|
|
767
|
+
// reserved BEFORE recursing into the fragment (see below), so a reference
|
|
768
|
+
// that cycles back (directly or indirectly) finds its pointer already
|
|
769
|
+
// reserved here and is rewritten without recursing. Cycles are deliberately
|
|
770
|
+
// preserved as internal `$ref`s pointing at each other — that is valid,
|
|
771
|
+
// serializable output; resolving the cycle (if desired) is dereferencing's
|
|
772
|
+
// job, not bundling's.
|
|
773
|
+
if (this.assignments.has(canonicalKey)) {
|
|
774
|
+
referencingElement.set('$ref', this.assignments.get(canonicalKey));
|
|
775
|
+
path.skip();
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
try {
|
|
779
|
+
// detect maximum depth of bundling
|
|
780
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
781
|
+
throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_20__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
|
|
782
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
783
|
+
uri: this.reference.uri
|
|
784
|
+
});
|
|
785
|
+
}
|
|
786
|
+
const reference = await this.toReference($ref);
|
|
787
|
+
|
|
788
|
+
// possibly non-semantic fragment
|
|
789
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.evaluate)(reference.value.result, jsonPointer);
|
|
790
|
+
|
|
791
|
+
// apply semantics to the fragment so nested references become Reference Objects
|
|
792
|
+
if (referencedElement.element !== referencedElementType && !isSemanticReference(referencedElement)) {
|
|
793
|
+
const cached = this.getRefracted(referencedElement, referencedElementType);
|
|
794
|
+
if (cached !== undefined) {
|
|
795
|
+
referencedElement = cached;
|
|
796
|
+
} else if (isReferenceLike(referencedElement)) {
|
|
797
|
+
const sourceElement = referencedElement;
|
|
798
|
+
referencedElement = refractReferenceFn(referencedElement);
|
|
799
|
+
referencedElement.meta.set('referenced-element', referencedElementType);
|
|
800
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
801
|
+
} else {
|
|
802
|
+
const sourceElement = referencedElement;
|
|
803
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
|
|
804
|
+
element: referencedElementType
|
|
805
|
+
});
|
|
806
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
810
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
811
|
+
const internalPointer = `#/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.escape)(componentName)}`;
|
|
812
|
+
|
|
813
|
+
// a rename means two distinct targets resolved to the same name; each
|
|
814
|
+
// keeps its own component (and origin), so report the rename per severity.
|
|
815
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
816
|
+
const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-2']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
|
|
817
|
+
if (componentName !== preferredName && onComponentNameCollision !== 'off') {
|
|
818
|
+
const message = `Component "${preferredName}" in ${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
|
|
819
|
+
if (onComponentNameCollision === 'error') {
|
|
820
|
+
throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](message);
|
|
821
|
+
}
|
|
822
|
+
const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
|
|
823
|
+
annotation.classes.push('warning');
|
|
824
|
+
annotation.code = 'bundle-component-name-collision';
|
|
825
|
+
// append (never prepend) so the result element stays ahead of annotations
|
|
826
|
+
this.entryParseResult.content.push(annotation);
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
// reserve the assignment and component name before recursing so cyclic
|
|
830
|
+
// references terminate
|
|
831
|
+
this.assignments.set(canonicalKey, internalPointer);
|
|
832
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
833
|
+
this.reservedNames.get(field).add(componentName);
|
|
834
|
+
|
|
835
|
+
// own a copy of the fragment and bundle its own external references
|
|
836
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
|
|
837
|
+
const visitor = new OpenAPI2BundleVisitor({
|
|
838
|
+
reference,
|
|
839
|
+
options: this.options,
|
|
840
|
+
assignments: this.assignments,
|
|
841
|
+
reservedNames: this.reservedNames,
|
|
842
|
+
refractCache: this.refractCache,
|
|
843
|
+
inlineStack: this.inlineStack
|
|
844
|
+
});
|
|
845
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(hoistedElement, visitor, {
|
|
846
|
+
mutable: true
|
|
847
|
+
});
|
|
848
|
+
|
|
849
|
+
// annotate the hoisted fragment with info about its origin
|
|
850
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
|
|
851
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
// place the bundled fragment into the entry document's definitions
|
|
855
|
+
this.ensureField(field).set(componentName, bundledElement);
|
|
856
|
+
|
|
857
|
+
// rewrite the referencing element to point at the hoisted fragment
|
|
858
|
+
referencingElement.set('$ref', internalPointer);
|
|
859
|
+
path.skip();
|
|
860
|
+
} catch (error) {
|
|
861
|
+
this.handleError(`Error while bundling ${label}. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
862
|
+
path.skip();
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Reference Object covers reusable Parameter and Response Objects, which are
|
|
868
|
+
* hoisted into the top-level `parameters` and `responses` fields.
|
|
869
|
+
*/
|
|
870
|
+
async ReferenceElement(path) {
|
|
871
|
+
await this.bundleReference(path, path.node, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__.isReferenceElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_16__.isReferenceLikeElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__.refractReference, 'Reference Object');
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* JSON Reference Object covers reusable Schema Objects, which are hoisted
|
|
876
|
+
* into the top-level `definitions` field.
|
|
877
|
+
*/
|
|
878
|
+
async JSONReferenceElement(path) {
|
|
879
|
+
await this.bundleReference(path, path.node, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_12__.isJSONReferenceElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isJSONReferenceLikeElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__.refractJSONReference, 'JSON Reference Object');
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* Path Item Object is not a top-level definition field in OpenAPI 2.0, so an
|
|
884
|
+
* external Path Item reference cannot be hoisted; it is inlined in place
|
|
885
|
+
* instead, after bundling its own external references.
|
|
886
|
+
*/
|
|
887
|
+
async PathItemElement(path) {
|
|
888
|
+
const pathItemElement = path.node;
|
|
889
|
+
|
|
890
|
+
// ignore Path Item Objects without a $ref field
|
|
891
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
|
|
892
|
+
return;
|
|
893
|
+
}
|
|
894
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
|
|
895
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
896
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
897
|
+
const isExternalReference = !isInternalReference;
|
|
898
|
+
if (isInternalReference) {
|
|
899
|
+
// normalize self-references to a bare fragment so the bundled
|
|
900
|
+
// document stays transferable; bare fragments are left untouched
|
|
901
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
902
|
+
return;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
// honor the resolve.external switch
|
|
906
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
907
|
+
return;
|
|
908
|
+
}
|
|
909
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_22__.resolve(retrievalURI, $ref);
|
|
910
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
911
|
+
const canonicalKey = `${retrievalURI}#${jsonPointer}`;
|
|
912
|
+
|
|
913
|
+
// a circular external Path Item reference cannot be inlined without
|
|
914
|
+
// recursing forever; leave the $ref in place to break the cycle
|
|
915
|
+
if (this.inlineStack.has(canonicalKey)) {
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
try {
|
|
919
|
+
// detect maximum depth of bundling
|
|
920
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
921
|
+
throw new _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_20__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
|
|
922
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
923
|
+
uri: this.reference.uri
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
const reference = await this.toReference($ref);
|
|
927
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.evaluate)(reference.value.result, jsonPointer);
|
|
928
|
+
|
|
929
|
+
// apply Path Item semantics to the referenced fragment
|
|
930
|
+
if (!(0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement)) {
|
|
931
|
+
const cached = this.getRefracted(referencedElement, 'pathItem');
|
|
932
|
+
if (cached !== undefined) {
|
|
933
|
+
referencedElement = cached;
|
|
934
|
+
} else {
|
|
935
|
+
const sourceElement = referencedElement;
|
|
936
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
|
|
937
|
+
this.setRefracted(sourceElement, 'pathItem', referencedElement);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// own a copy and bundle the external references it contains
|
|
942
|
+
const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
|
|
943
|
+
this.inlineStack.add(canonicalKey);
|
|
944
|
+
const visitor = new OpenAPI2BundleVisitor({
|
|
945
|
+
reference,
|
|
946
|
+
options: this.options,
|
|
947
|
+
assignments: this.assignments,
|
|
948
|
+
reservedNames: this.reservedNames,
|
|
949
|
+
refractCache: this.refractCache,
|
|
950
|
+
inlineStack: this.inlineStack
|
|
951
|
+
});
|
|
952
|
+
let bundledElement;
|
|
953
|
+
try {
|
|
954
|
+
bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(inlinedElement, visitor, {
|
|
955
|
+
mutable: true
|
|
956
|
+
});
|
|
957
|
+
} finally {
|
|
958
|
+
this.inlineStack.delete(canonicalKey);
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
// merge sibling fields from the referencing Path Item over the referenced
|
|
962
|
+
// one. The referencing `$ref` is being resolved away and is skipped; the
|
|
963
|
+
// referenced element keeps its own `$ref` if one survived (i.e. it was
|
|
964
|
+
// left in place to break a circular external Path Item chain).
|
|
965
|
+
pathItemElement.forEach((_value, keyElement, item) => {
|
|
966
|
+
const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
|
|
967
|
+
if (key === '$ref') return;
|
|
968
|
+
bundledElement.remove(key);
|
|
969
|
+
bundledElement.content.push(item);
|
|
970
|
+
});
|
|
971
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
972
|
+
path.replaceWith(bundledElement);
|
|
973
|
+
} catch (error) {
|
|
974
|
+
this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI2BundleVisitor);
|
|
979
|
+
|
|
980
|
+
/***/ },
|
|
981
|
+
|
|
291
982
|
/***/ 12087
|
|
292
983
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
293
984
|
|
|
294
985
|
"use strict";
|
|
295
986
|
__webpack_require__.r(__webpack_exports__);
|
|
296
987
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
297
|
-
/* harmony export */ OpenAPI3_0BundleVisitor: () => (/* reexport safe */ _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
988
|
+
/* harmony export */ OpenAPI3_0BundleVisitor: () => (/* reexport safe */ _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
989
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
990
|
+
/* harmony export */ });
|
|
991
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
|
|
992
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
|
|
993
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43151);
|
|
994
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32131);
|
|
995
|
+
/* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98979);
|
|
996
|
+
/* harmony import */ var _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24131);
|
|
997
|
+
/* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(75508);
|
|
998
|
+
/* harmony import */ var _visitor_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(74985);
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* @public
|
|
1009
|
+
*/
|
|
1010
|
+
|
|
1011
|
+
/**
|
|
1012
|
+
* @public
|
|
1013
|
+
*/
|
|
1014
|
+
class OpenAPI3_0BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
1015
|
+
constructor(options) {
|
|
1016
|
+
super({
|
|
1017
|
+
...(options ?? {}),
|
|
1018
|
+
name: 'openapi-3-0'
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
1021
|
+
canBundle(file) {
|
|
1022
|
+
// assert by media type
|
|
1023
|
+
if (file.mediaType !== 'text/plain') {
|
|
1024
|
+
return _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
// assert by inspecting ApiDOM
|
|
1028
|
+
return (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_0Element)(file.parseResult?.result);
|
|
1029
|
+
}
|
|
1030
|
+
async bundle(file, options) {
|
|
1031
|
+
const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
|
1032
|
+
const mutableRefSet = new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
|
1033
|
+
let refSet = immutableRefSet;
|
|
1034
|
+
let reference;
|
|
1035
|
+
|
|
1036
|
+
// determine the initial reference
|
|
1037
|
+
if (!immutableRefSet.has(file.uri)) {
|
|
1038
|
+
reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
1039
|
+
uri: file.uri,
|
|
1040
|
+
value: file.parseResult
|
|
1041
|
+
});
|
|
1042
|
+
immutableRefSet.add(reference);
|
|
1043
|
+
} else {
|
|
1044
|
+
// pre-computed refSet was provided as configuration option
|
|
1045
|
+
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
/**
|
|
1049
|
+
* Clone refSet due the bundling process being mutable.
|
|
1050
|
+
* We don't want to mutate the original refSet and the references.
|
|
1051
|
+
*/
|
|
1052
|
+
if (options.bundle.immutable) {
|
|
1053
|
+
immutableRefSet.refs.map(ref => new _Reference_ts__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
1054
|
+
...ref,
|
|
1055
|
+
value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(ref.value)
|
|
1056
|
+
})).forEach(ref => mutableRefSet.add(ref));
|
|
1057
|
+
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
1058
|
+
refSet = mutableRefSet;
|
|
1059
|
+
}
|
|
1060
|
+
const visitor = new _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]({
|
|
1061
|
+
reference: reference,
|
|
1062
|
+
options
|
|
1063
|
+
});
|
|
1064
|
+
await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
1065
|
+
mutable: true
|
|
1066
|
+
});
|
|
1067
|
+
const parseResult = reference.value;
|
|
1068
|
+
|
|
1069
|
+
/**
|
|
1070
|
+
* Release all memory if this refSet was not provided as a configuration option.
|
|
1071
|
+
* If provided as configuration option, then provider is responsible for cleanup.
|
|
1072
|
+
*/
|
|
1073
|
+
if (options.bundle.refSet === null) {
|
|
1074
|
+
immutableRefSet.clean();
|
|
1075
|
+
}
|
|
1076
|
+
mutableRefSet.clean();
|
|
1077
|
+
return parseResult;
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleStrategy);
|
|
1082
|
+
|
|
1083
|
+
/***/ },
|
|
1084
|
+
|
|
1085
|
+
/***/ 74985
|
|
1086
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1087
|
+
|
|
1088
|
+
"use strict";
|
|
1089
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1090
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1091
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1092
|
+
/* harmony export */ });
|
|
1093
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6352);
|
|
1094
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25162);
|
|
1095
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12111);
|
|
1096
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97071);
|
|
1097
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84660);
|
|
1098
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37205);
|
|
1099
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44673);
|
|
1100
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16280);
|
|
1101
|
+
/* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44641);
|
|
1102
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80796);
|
|
1103
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12020);
|
|
1104
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61198);
|
|
1105
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(30609);
|
|
1106
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64708);
|
|
1107
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(32131);
|
|
1108
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(21314);
|
|
1109
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(29881);
|
|
1110
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
|
|
1111
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(23031);
|
|
1112
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(63842);
|
|
1113
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(87455);
|
|
1114
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(55122);
|
|
1115
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(71117);
|
|
1116
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(72257);
|
|
1117
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(69511);
|
|
1118
|
+
/* harmony import */ var _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(81002);
|
|
1119
|
+
/* harmony import */ var _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(8853);
|
|
1120
|
+
/* harmony import */ var _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(16843);
|
|
1121
|
+
/* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(51325);
|
|
1122
|
+
/* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(30658);
|
|
1123
|
+
/* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(35014);
|
|
1124
|
+
/* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(98979);
|
|
1125
|
+
/* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(25939);
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
/**
|
|
1142
|
+
* Maps the `referenced-element` meta value (set during refraction) to the
|
|
1143
|
+
* Components Object field where the referenced element should be hoisted.
|
|
1144
|
+
* Field names are sourced from the Components Object fixed fields so they
|
|
1145
|
+
* cannot drift from the namespace definition.
|
|
1146
|
+
*/
|
|
1147
|
+
const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__.fixedFields)(_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"], {
|
|
1148
|
+
indexed: true
|
|
1149
|
+
});
|
|
1150
|
+
const componentFieldByReferencedElement = {
|
|
1151
|
+
schema: cf.schemas.name,
|
|
1152
|
+
response: cf.responses.name,
|
|
1153
|
+
parameter: cf.parameters.name,
|
|
1154
|
+
example: cf.examples.name,
|
|
1155
|
+
requestBody: cf.requestBodies.name,
|
|
1156
|
+
header: cf.headers.name,
|
|
1157
|
+
securityScheme: cf.securitySchemes.name,
|
|
1158
|
+
link: cf.links.name,
|
|
1159
|
+
callback: cf.callbacks.name
|
|
1160
|
+
};
|
|
1161
|
+
|
|
1162
|
+
/**
|
|
1163
|
+
* Maps a Components Object field to the named-content element the namespace
|
|
1164
|
+
* uses for it, so a bundle-created field matches a parsed/refracted one
|
|
1165
|
+
* (e.g. carries the `components-schemas` class) rather than being a generic
|
|
1166
|
+
* object.
|
|
1167
|
+
*/
|
|
1168
|
+
const componentFieldElementByField = {
|
|
1169
|
+
[cf.schemas.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__["default"],
|
|
1170
|
+
[cf.responses.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__["default"],
|
|
1171
|
+
[cf.parameters.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__["default"],
|
|
1172
|
+
[cf.examples.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__["default"],
|
|
1173
|
+
[cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__["default"],
|
|
1174
|
+
[cf.headers.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__["default"],
|
|
1175
|
+
[cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__["default"],
|
|
1176
|
+
[cf.links.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__["default"],
|
|
1177
|
+
[cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__["default"]
|
|
1178
|
+
};
|
|
1179
|
+
|
|
1180
|
+
/**
|
|
1181
|
+
* @public
|
|
1182
|
+
*/
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* @public
|
|
1186
|
+
*/
|
|
1187
|
+
class OpenAPI3_0BundleVisitor {
|
|
1188
|
+
reference;
|
|
1189
|
+
options;
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* The base URI (without hash) of the entry document. A reference is
|
|
1193
|
+
* considered internal when it resolves to this URI and external otherwise.
|
|
1194
|
+
* Derived from the shared refSet's root reference.
|
|
1195
|
+
*/
|
|
1196
|
+
get entryURI() {
|
|
1197
|
+
return _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* The entry parse result. Derived from the shared refSet's root reference.
|
|
1202
|
+
*/
|
|
1203
|
+
get entryParseResult() {
|
|
1204
|
+
return this.reference.refSet.rootRef.value;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
/**
|
|
1208
|
+
* The entry document element. Hoisted external fragments are placed into its
|
|
1209
|
+
* `components` object. The `canBundle` guard guarantees it is an
|
|
1210
|
+
* OpenApi3_0Element.
|
|
1211
|
+
*/
|
|
1212
|
+
get entryResult() {
|
|
1213
|
+
return this.entryParseResult.result;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
/**
|
|
1217
|
+
* Shared across the entry document and every external document visitor.
|
|
1218
|
+
* Guarantees each external fragment is hoisted exactly once and gives us a
|
|
1219
|
+
* stable internal pointer to rewrite every referencing element to.
|
|
1220
|
+
*/
|
|
1221
|
+
assignments;
|
|
1222
|
+
|
|
1223
|
+
/**
|
|
1224
|
+
* Component names already reserved per Components Object field. Reserved
|
|
1225
|
+
* before recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
|
|
1226
|
+
* components that are still being bundled.
|
|
1227
|
+
*/
|
|
1228
|
+
reservedNames;
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* Caches refracted fragments keyed by source element and target element type.
|
|
1232
|
+
* The type is part of the key because the same source can be refracted into
|
|
1233
|
+
* different semantic elements depending on the referencing context (e.g. a
|
|
1234
|
+
* generic object referenced once as a Parameter and once as a Response).
|
|
1235
|
+
*/
|
|
1236
|
+
refractCache;
|
|
1237
|
+
|
|
1238
|
+
/**
|
|
1239
|
+
* Canonical URIs of Path Item Objects currently being inlined. Path Items
|
|
1240
|
+
* are not hoisted into Components Object (no `components.pathItems` in
|
|
1241
|
+
* OpenAPI 3.0), so the `assignments` map can't break their cycles. This
|
|
1242
|
+
* stack guards against circular external Path Item references.
|
|
1243
|
+
*/
|
|
1244
|
+
inlineStack;
|
|
1245
|
+
constructor({
|
|
1246
|
+
reference,
|
|
1247
|
+
options,
|
|
1248
|
+
assignments = new Map(),
|
|
1249
|
+
reservedNames = new Map(),
|
|
1250
|
+
refractCache = new WeakMap(),
|
|
1251
|
+
inlineStack = new Set()
|
|
1252
|
+
}) {
|
|
1253
|
+
this.reference = reference;
|
|
1254
|
+
this.options = options;
|
|
1255
|
+
this.inlineStack = inlineStack;
|
|
1256
|
+
this.assignments = assignments;
|
|
1257
|
+
this.reservedNames = reservedNames;
|
|
1258
|
+
this.refractCache = refractCache;
|
|
1259
|
+
}
|
|
1260
|
+
getRefracted(source, type) {
|
|
1261
|
+
return this.refractCache.get(source)?.get(type);
|
|
1262
|
+
}
|
|
1263
|
+
setRefracted(source, type, refracted) {
|
|
1264
|
+
let byType = this.refractCache.get(source);
|
|
1265
|
+
if (byType === undefined) {
|
|
1266
|
+
byType = new Map();
|
|
1267
|
+
this.refractCache.set(source, byType);
|
|
1268
|
+
}
|
|
1269
|
+
byType.set(type, refracted);
|
|
1270
|
+
}
|
|
1271
|
+
toBaseURI(uri) {
|
|
1272
|
+
return _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_29__.stripHash(uri)));
|
|
1273
|
+
}
|
|
1274
|
+
async toReference(uri) {
|
|
1275
|
+
// detect maximum depth of resolution
|
|
1276
|
+
if (this.reference.depth >= this.options.resolve.maxDepth) {
|
|
1277
|
+
throw new _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_28__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
|
|
1278
|
+
maxDepth: this.options.resolve.maxDepth,
|
|
1279
|
+
uri: this.reference.uri
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
const baseURI = this.toBaseURI(uri);
|
|
1283
|
+
const {
|
|
1284
|
+
refSet
|
|
1285
|
+
} = this.reference;
|
|
1286
|
+
|
|
1287
|
+
// we've already processed this Reference in past
|
|
1288
|
+
if (refSet.has(baseURI)) {
|
|
1289
|
+
return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(baseURI, 'uri'));
|
|
1290
|
+
}
|
|
1291
|
+
const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_30__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_29__.unsanitize(baseURI), {
|
|
1292
|
+
...this.options,
|
|
1293
|
+
parse: {
|
|
1294
|
+
...this.options.parse,
|
|
1295
|
+
mediaType: 'text/plain'
|
|
1296
|
+
}
|
|
1297
|
+
});
|
|
1298
|
+
const reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_31__["default"]({
|
|
1299
|
+
uri: baseURI,
|
|
1300
|
+
value: parseResult,
|
|
1301
|
+
depth: this.reference.depth + 1
|
|
1302
|
+
});
|
|
1303
|
+
refSet.add(reference);
|
|
1304
|
+
return reference;
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
/**
|
|
1308
|
+
* Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
|
|
1309
|
+
* to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
|
|
1310
|
+
* transferable. Bare fragments are returned unchanged.
|
|
1311
|
+
*/
|
|
1312
|
+
normalizeSelfReference(ref) {
|
|
1313
|
+
return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.getHash(ref);
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
/**
|
|
1317
|
+
* Handles an error according to the `bundle.continueOnError` option.
|
|
1318
|
+
*
|
|
1319
|
+
* For new errors: wraps in UnresolvableReferenceError with structured
|
|
1320
|
+
* context. For errors already wrapped by a nested visitor: prepends the
|
|
1321
|
+
* current hop to the trace.
|
|
1322
|
+
*
|
|
1323
|
+
* Inner/intermediate visitors always throw to let the trace accumulate. Only
|
|
1324
|
+
* the entry document visitor respects continueOnError (callback/swallow/throw).
|
|
1325
|
+
*/
|
|
1326
|
+
handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
|
|
1327
|
+
// a collision reported as `error` is a deliberate hard stop with no
|
|
1328
|
+
// resolution-failure analog, so pass it through unchanged. A maxDepth
|
|
1329
|
+
// breach (MaximumBundleDepthError, which also extends BundleError) is a
|
|
1330
|
+
// resolution failure and flows through below — wrapped and subject to
|
|
1331
|
+
// continueOnError, like dereferencing.
|
|
1332
|
+
if (error instanceof _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__["default"] && !(error instanceof _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_27__["default"])) {
|
|
1333
|
+
throw error;
|
|
1334
|
+
}
|
|
1335
|
+
const {
|
|
1336
|
+
continueOnError
|
|
1337
|
+
} = this.options.bundle;
|
|
1338
|
+
const isEntryDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
|
|
1339
|
+
const uri = this.reference.uri;
|
|
1340
|
+
const type = referencingElement.element;
|
|
1341
|
+
const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement);
|
|
1342
|
+
const location = visitorPath.formatPath();
|
|
1343
|
+
const hop = {
|
|
1344
|
+
uri,
|
|
1345
|
+
type,
|
|
1346
|
+
refFieldName,
|
|
1347
|
+
refFieldValue,
|
|
1348
|
+
location,
|
|
1349
|
+
codeFrame
|
|
1350
|
+
};
|
|
1351
|
+
let unresolvedError;
|
|
1352
|
+
if (error instanceof _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_26__["default"]) {
|
|
1353
|
+
// @ts-ignore
|
|
1354
|
+
error.trace = [hop, ...error.trace];
|
|
1355
|
+
unresolvedError = error;
|
|
1356
|
+
} else {
|
|
1357
|
+
unresolvedError = new _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_26__["default"](message, {
|
|
1358
|
+
cause: error,
|
|
1359
|
+
type,
|
|
1360
|
+
uri,
|
|
1361
|
+
location,
|
|
1362
|
+
codeFrame,
|
|
1363
|
+
refFieldName,
|
|
1364
|
+
refFieldValue,
|
|
1365
|
+
trace: []
|
|
1366
|
+
});
|
|
1367
|
+
}
|
|
1368
|
+
if (!isEntryDocument || continueOnError === false) throw unresolvedError;
|
|
1369
|
+
if (typeof continueOnError === 'function') continueOnError(unresolvedError);
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
/**
|
|
1373
|
+
* Lazily creates the Components Object (and the requested field within it)
|
|
1374
|
+
* on the entry document, returning the field where a fragment is hoisted.
|
|
1375
|
+
*/
|
|
1376
|
+
ensureComponentsField(field) {
|
|
1377
|
+
const entryResult = this.entryResult;
|
|
1378
|
+
let components = entryResult.components;
|
|
1379
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(components)) {
|
|
1380
|
+
components = new _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"]();
|
|
1381
|
+
entryResult.components = components;
|
|
1382
|
+
}
|
|
1383
|
+
let fieldElement = components.get(field);
|
|
1384
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(fieldElement)) {
|
|
1385
|
+
const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"];
|
|
1386
|
+
fieldElement = new FieldElement();
|
|
1387
|
+
components.set(field, fieldElement);
|
|
1388
|
+
}
|
|
1389
|
+
return fieldElement;
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
/**
|
|
1393
|
+
* Derives a component name from the referenced JSON Pointer's last token,
|
|
1394
|
+
* falling back to the referenced file's basename.
|
|
1395
|
+
*/
|
|
1396
|
+
basenameOf(jsonPointer, baseURI) {
|
|
1397
|
+
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.parse)(jsonPointer).tree;
|
|
1398
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
1399
|
+
return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.getBasename(baseURI) || 'Schema';
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
/**
|
|
1403
|
+
* Computes the base component name (before collision suffixing) according to
|
|
1404
|
+
* the configured naming strategy.
|
|
1405
|
+
*/
|
|
1406
|
+
baseName(element, field, jsonPointer, baseURI) {
|
|
1407
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
1408
|
+
const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-0']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
|
|
1409
|
+
if (typeof componentNamesStrategy === 'function') {
|
|
1410
|
+
const resolved = componentNamesStrategy({
|
|
1411
|
+
element,
|
|
1412
|
+
field,
|
|
1413
|
+
jsonPointer,
|
|
1414
|
+
baseURI
|
|
1415
|
+
});
|
|
1416
|
+
if (typeof resolved === 'string' && resolved !== '') {
|
|
1417
|
+
return resolved;
|
|
1418
|
+
}
|
|
1419
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
1420
|
+
}
|
|
1421
|
+
if (componentNamesStrategy === 'title') {
|
|
1422
|
+
const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(element.get('title')) : undefined;
|
|
1423
|
+
if (typeof title === 'string' && title.trim() !== '') {
|
|
1424
|
+
const name = (0,_util_ts__WEBPACK_IMPORTED_MODULE_32__.sanitizeComponentName)((0,_util_ts__WEBPACK_IMPORTED_MODULE_32__.toPascalCase)(title));
|
|
1425
|
+
if (name !== '') return name;
|
|
1426
|
+
}
|
|
1427
|
+
// fall back to basename when no usable title is present
|
|
1428
|
+
}
|
|
1429
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
/**
|
|
1433
|
+
* Computes a collision-free component name within the target field. A name is
|
|
1434
|
+
* taken if it's already placed in components or reserved by a component that
|
|
1435
|
+
* is still being bundled (reserved before recursion).
|
|
1436
|
+
*/
|
|
1437
|
+
uniqueName(candidate, field) {
|
|
1438
|
+
const fieldElement = this.ensureComponentsField(field);
|
|
1439
|
+
const reserved = this.reservedNames.get(field) ?? new Set();
|
|
1440
|
+
return (0,_util_ts__WEBPACK_IMPORTED_MODULE_32__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
|
|
1441
|
+
}
|
|
1442
|
+
async ReferenceElement(path) {
|
|
1443
|
+
const referencingElement = path.node;
|
|
1444
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement.$ref);
|
|
1445
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
1446
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
1447
|
+
const isExternalReference = !isInternalReference;
|
|
1448
|
+
if (isInternalReference) {
|
|
1449
|
+
// normalize self-references to a bare fragment so the bundled
|
|
1450
|
+
// document stays transferable; bare fragments are left untouched
|
|
1451
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
1452
|
+
path.skip();
|
|
1453
|
+
return;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
// honor the resolve.external switch
|
|
1457
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
1458
|
+
path.skip();
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
|
|
1462
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
1463
|
+
|
|
1464
|
+
// the target bucket depends on the referencing context, so it's part of the
|
|
1465
|
+
// identity: the same external target referenced as e.g. both a parameter and
|
|
1466
|
+
// a response must be hoisted into both components fields. The refractor sets
|
|
1467
|
+
// `referenced-element` for every Reference Object position; the `schemas`
|
|
1468
|
+
// fallback is a defensive default for the (unexpected) untagged case.
|
|
1469
|
+
const referencedElementType = referencingElement.meta.get('referenced-element');
|
|
1470
|
+
const field = componentFieldByReferencedElement[referencedElementType] ?? componentFieldByReferencedElement.schema;
|
|
1471
|
+
const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
|
|
1472
|
+
|
|
1473
|
+
// already hoisted (or being hoisted) — just rewrite the pointer.
|
|
1474
|
+
//
|
|
1475
|
+
// this is also how circular references terminate: the assignment is
|
|
1476
|
+
// reserved BEFORE recursing into the fragment (see below), so a reference
|
|
1477
|
+
// that cycles back (directly or indirectly) finds its pointer already
|
|
1478
|
+
// reserved here and is rewritten without recursing. Cycles are deliberately
|
|
1479
|
+
// preserved as internal `$ref`s pointing at each other — that is valid,
|
|
1480
|
+
// serializable output; resolving the cycle (if desired) is dereferencing's
|
|
1481
|
+
// job, not bundling's.
|
|
1482
|
+
if (this.assignments.has(canonicalKey)) {
|
|
1483
|
+
referencingElement.set('$ref', this.assignments.get(canonicalKey));
|
|
1484
|
+
path.skip();
|
|
1485
|
+
return;
|
|
1486
|
+
}
|
|
1487
|
+
try {
|
|
1488
|
+
// detect maximum depth of bundling
|
|
1489
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
1490
|
+
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}"`, {
|
|
1491
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
1492
|
+
uri: this.reference.uri
|
|
1493
|
+
});
|
|
1494
|
+
}
|
|
1495
|
+
const reference = await this.toReference($ref);
|
|
1496
|
+
|
|
1497
|
+
// possibly non-semantic fragment
|
|
1498
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
|
|
1499
|
+
|
|
1500
|
+
// apply semantics to the fragment so nested references become Reference Objects
|
|
1501
|
+
if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement)) {
|
|
1502
|
+
const cached = this.getRefracted(referencedElement, referencedElementType);
|
|
1503
|
+
if (cached !== undefined) {
|
|
1504
|
+
referencedElement = cached;
|
|
1505
|
+
} else if ((0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__.isReferenceLikeElement)(referencedElement)) {
|
|
1506
|
+
const sourceElement = referencedElement;
|
|
1507
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
|
|
1508
|
+
referencedElement.meta.set('referenced-element', referencedElementType);
|
|
1509
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
1510
|
+
} else {
|
|
1511
|
+
const sourceElement = referencedElement;
|
|
1512
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
|
|
1513
|
+
element: referencedElementType
|
|
1514
|
+
});
|
|
1515
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
1519
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
1520
|
+
const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.escape)(componentName)}`;
|
|
1521
|
+
|
|
1522
|
+
// a rename means two distinct targets resolved to the same name; each
|
|
1523
|
+
// keeps its own component (and origin), so report the rename per severity.
|
|
1524
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
1525
|
+
const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
|
|
1526
|
+
if (componentName !== preferredName && onComponentNameCollision !== 'off') {
|
|
1527
|
+
const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
|
|
1528
|
+
if (onComponentNameCollision === 'error') {
|
|
1529
|
+
throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__["default"](message);
|
|
1530
|
+
}
|
|
1531
|
+
const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
|
|
1532
|
+
annotation.classes.push('warning');
|
|
1533
|
+
annotation.code = 'bundle-component-name-collision';
|
|
1534
|
+
// append (never prepend) so the result element stays ahead of annotations
|
|
1535
|
+
this.entryParseResult.content.push(annotation);
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
|
+
// reserve the assignment and component name before recursing so cyclic
|
|
1539
|
+
// references terminate
|
|
1540
|
+
this.assignments.set(canonicalKey, internalPointer);
|
|
1541
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
1542
|
+
this.reservedNames.get(field).add(componentName);
|
|
1543
|
+
|
|
1544
|
+
// own a copy of the fragment and bundle its own external references
|
|
1545
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
|
|
1546
|
+
const visitor = new OpenAPI3_0BundleVisitor({
|
|
1547
|
+
reference,
|
|
1548
|
+
options: this.options,
|
|
1549
|
+
assignments: this.assignments,
|
|
1550
|
+
reservedNames: this.reservedNames,
|
|
1551
|
+
refractCache: this.refractCache,
|
|
1552
|
+
inlineStack: this.inlineStack
|
|
1553
|
+
});
|
|
1554
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(hoistedElement, visitor, {
|
|
1555
|
+
mutable: true
|
|
1556
|
+
});
|
|
1557
|
+
|
|
1558
|
+
// annotate the hoisted fragment with info about its origin
|
|
1559
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
|
|
1560
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
// place the bundled fragment into the entry document's components
|
|
1564
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
1565
|
+
|
|
1566
|
+
// rewrite the referencing element to point at the hoisted fragment
|
|
1567
|
+
referencingElement.set('$ref', internalPointer);
|
|
1568
|
+
path.skip();
|
|
1569
|
+
} catch (error) {
|
|
1570
|
+
this.handleError(`Error while bundling Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
1571
|
+
path.skip();
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
/**
|
|
1576
|
+
* Path Item Object is not a Components Object field in OpenAPI 3.0
|
|
1577
|
+
* (unlike 3.1 which has `components.pathItems`). An external Path Item
|
|
1578
|
+
* reference therefore cannot be hoisted; it is inlined in place instead,
|
|
1579
|
+
* after bundling its own external references.
|
|
1580
|
+
*/
|
|
1581
|
+
async PathItemElement(path) {
|
|
1582
|
+
const pathItemElement = path.node;
|
|
1583
|
+
|
|
1584
|
+
// ignore Path Item Objects without a $ref field
|
|
1585
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
|
|
1586
|
+
return;
|
|
1587
|
+
}
|
|
1588
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
|
|
1589
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
1590
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
1591
|
+
const isExternalReference = !isInternalReference;
|
|
1592
|
+
if (isInternalReference) {
|
|
1593
|
+
// normalize self-references to a bare fragment so the bundled
|
|
1594
|
+
// document stays transferable; bare fragments are left untouched
|
|
1595
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
1596
|
+
return;
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
// honor the resolve.external switch
|
|
1600
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
1601
|
+
return;
|
|
1602
|
+
}
|
|
1603
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
|
|
1604
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
1605
|
+
const canonicalKey = `${retrievalURI}#${jsonPointer}`;
|
|
1606
|
+
|
|
1607
|
+
// a circular external Path Item reference cannot be inlined without
|
|
1608
|
+
// recursing forever; leave the $ref in place to break the cycle
|
|
1609
|
+
if (this.inlineStack.has(canonicalKey)) {
|
|
1610
|
+
return;
|
|
1611
|
+
}
|
|
1612
|
+
try {
|
|
1613
|
+
// detect maximum depth of bundling
|
|
1614
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
1615
|
+
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}"`, {
|
|
1616
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
1617
|
+
uri: this.reference.uri
|
|
1618
|
+
});
|
|
1619
|
+
}
|
|
1620
|
+
const reference = await this.toReference($ref);
|
|
1621
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
|
|
1622
|
+
|
|
1623
|
+
// apply Path Item semantics to the referenced fragment
|
|
1624
|
+
if (!(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
|
|
1625
|
+
const cached = this.getRefracted(referencedElement, 'pathItem');
|
|
1626
|
+
if (cached !== undefined) {
|
|
1627
|
+
referencedElement = cached;
|
|
1628
|
+
} else {
|
|
1629
|
+
const sourceElement = referencedElement;
|
|
1630
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
|
|
1631
|
+
this.setRefracted(sourceElement, 'pathItem', referencedElement);
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
// own a copy and bundle the external references it contains
|
|
1636
|
+
const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
|
|
1637
|
+
this.inlineStack.add(canonicalKey);
|
|
1638
|
+
const visitor = new OpenAPI3_0BundleVisitor({
|
|
1639
|
+
reference,
|
|
1640
|
+
options: this.options,
|
|
1641
|
+
assignments: this.assignments,
|
|
1642
|
+
reservedNames: this.reservedNames,
|
|
1643
|
+
refractCache: this.refractCache,
|
|
1644
|
+
inlineStack: this.inlineStack
|
|
1645
|
+
});
|
|
1646
|
+
let bundledElement;
|
|
1647
|
+
try {
|
|
1648
|
+
bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(inlinedElement, visitor, {
|
|
1649
|
+
mutable: true
|
|
1650
|
+
});
|
|
1651
|
+
} finally {
|
|
1652
|
+
this.inlineStack.delete(canonicalKey);
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
// merge sibling fields from the referencing Path Item over the referenced
|
|
1656
|
+
// one. The referencing `$ref` is being resolved away and is skipped; the
|
|
1657
|
+
// referenced element keeps its own `$ref` if one survived (i.e. it was
|
|
1658
|
+
// left in place to break a circular external Path Item chain).
|
|
1659
|
+
pathItemElement.forEach((_value, keyElement, item) => {
|
|
1660
|
+
const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
|
|
1661
|
+
if (key === '$ref') return;
|
|
1662
|
+
bundledElement.remove(key);
|
|
1663
|
+
bundledElement.content.push(item);
|
|
1664
|
+
});
|
|
1665
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
1666
|
+
path.replaceWith(bundledElement);
|
|
1667
|
+
} catch (error) {
|
|
1668
|
+
this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
/**
|
|
1673
|
+
* Example Object `externalValue` points at arbitrary external content that
|
|
1674
|
+
* has no place in the Components Object. The referenced value is inlined into
|
|
1675
|
+
* the Example's `value` field.
|
|
1676
|
+
*/
|
|
1677
|
+
async ExampleElement(path) {
|
|
1678
|
+
const exampleElement = path.node;
|
|
1679
|
+
|
|
1680
|
+
// ignore Example Objects without an externalValue field
|
|
1681
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
|
|
1682
|
+
return;
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
// value and externalValue fields are mutually exclusive
|
|
1686
|
+
if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
|
|
1687
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
|
|
1688
|
+
value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.value),
|
|
1689
|
+
externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue)
|
|
1690
|
+
});
|
|
1691
|
+
}
|
|
1692
|
+
const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue);
|
|
1693
|
+
const retrievalURI = this.toBaseURI(externalValue);
|
|
1694
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
1695
|
+
const isExternalReference = !isInternalReference;
|
|
1696
|
+
|
|
1697
|
+
// honor the resolve.external switch
|
|
1698
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
1699
|
+
return;
|
|
1700
|
+
}
|
|
1701
|
+
try {
|
|
1702
|
+
const reference = await this.toReference(externalValue);
|
|
1703
|
+
const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(reference.value.result);
|
|
1704
|
+
valueElement.meta.set('ref-origin', reference.uri);
|
|
1705
|
+
const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(exampleElement);
|
|
1706
|
+
exampleElementCopy.value = valueElement;
|
|
1707
|
+
exampleElementCopy.remove('externalValue');
|
|
1708
|
+
path.replaceWith(exampleElementCopy);
|
|
1709
|
+
} catch (error) {
|
|
1710
|
+
this.handleError(`Error while bundling Example Object. Cannot resolve externalValue "${externalValue}": ${error.message}`, error, exampleElement, 'externalValue', externalValue, path);
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
/**
|
|
1715
|
+
* Link Object `operationRef` points at an Operation Object, which has no
|
|
1716
|
+
* Components Object field in OpenAPI 3.0 and therefore cannot be hoisted or
|
|
1717
|
+
* inlined. To keep the link resolvable from the bundled document, an external
|
|
1718
|
+
* `operationRef` is rewritten to its absolute URI. Internal `operationRef`
|
|
1719
|
+
* values and `operationId` links are left untouched.
|
|
1720
|
+
*/
|
|
1721
|
+
async LinkElement(path) {
|
|
1722
|
+
const linkElement = path.node;
|
|
1723
|
+
|
|
1724
|
+
// operationRef and operationId fields are mutually exclusive
|
|
1725
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationId)) {
|
|
1726
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
|
|
1727
|
+
operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef),
|
|
1728
|
+
operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationId)
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
// only external operationRef links need adjusting
|
|
1733
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef)) {
|
|
1734
|
+
return;
|
|
1735
|
+
}
|
|
1736
|
+
const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef);
|
|
1737
|
+
const retrievalURI = this.toBaseURI(operationRef);
|
|
1738
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
1739
|
+
if (isInternalReference) {
|
|
1740
|
+
// normalize a self-reference operationRef to a bare fragment so the bundled
|
|
1741
|
+
// document stays transferable; bare fragments are left untouched
|
|
1742
|
+
linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
|
|
1743
|
+
return;
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
// honor the resolve.external switch
|
|
1747
|
+
if (!this.options.resolve.external) {
|
|
1748
|
+
return;
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
// rewrite to an absolute URI so the link keeps resolving once the document
|
|
1752
|
+
// is treated as self-contained
|
|
1753
|
+
const absoluteURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, operationRef);
|
|
1754
|
+
if (absoluteURI !== operationRef) {
|
|
1755
|
+
linkElement.set('operationRef', absoluteURI);
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1759
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleVisitor);
|
|
1760
|
+
|
|
1761
|
+
/***/ },
|
|
1762
|
+
|
|
1763
|
+
/***/ 16432
|
|
1764
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1765
|
+
|
|
1766
|
+
"use strict";
|
|
1767
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1768
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1769
|
+
/* harmony export */ OpenAPI3_1BundleVisitor: () => (/* reexport safe */ _visitor_ts__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
298
1770
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
299
1771
|
/* harmony export */ });
|
|
300
1772
|
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
|
|
301
1773
|
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
|
|
302
|
-
/* harmony import */ var
|
|
303
|
-
/* harmony import */ var
|
|
1774
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7822);
|
|
1775
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76332);
|
|
304
1776
|
/* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(98979);
|
|
305
1777
|
/* harmony import */ var _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24131);
|
|
306
1778
|
/* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(75508);
|
|
307
|
-
/* harmony import */ var _visitor_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(
|
|
1779
|
+
/* harmony import */ var _visitor_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31066);
|
|
308
1780
|
|
|
309
1781
|
|
|
310
1782
|
|
|
@@ -320,21 +1792,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
320
1792
|
/**
|
|
321
1793
|
* @public
|
|
322
1794
|
*/
|
|
323
|
-
class
|
|
1795
|
+
class OpenAPI3_1BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
324
1796
|
constructor(options) {
|
|
325
1797
|
super({
|
|
326
1798
|
...(options ?? {}),
|
|
327
|
-
name: 'openapi-3-
|
|
1799
|
+
name: 'openapi-3-1'
|
|
328
1800
|
});
|
|
329
1801
|
}
|
|
330
1802
|
canBundle(file) {
|
|
331
1803
|
// assert by media type
|
|
332
1804
|
if (file.mediaType !== 'text/plain') {
|
|
333
|
-
return
|
|
1805
|
+
return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
|
|
334
1806
|
}
|
|
335
1807
|
|
|
336
1808
|
// assert by inspecting ApiDOM
|
|
337
|
-
return (0,
|
|
1809
|
+
return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_1Element)(file.parseResult?.result);
|
|
338
1810
|
}
|
|
339
1811
|
async bundle(file, options) {
|
|
340
1812
|
const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_ts__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
|
@@ -387,11 +1859,11 @@ class OpenAPI3_0BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODU
|
|
|
387
1859
|
}
|
|
388
1860
|
}
|
|
389
1861
|
|
|
390
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
1862
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
|
|
391
1863
|
|
|
392
1864
|
/***/ },
|
|
393
1865
|
|
|
394
|
-
/***/
|
|
1866
|
+
/***/ 31066
|
|
395
1867
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
396
1868
|
|
|
397
1869
|
"use strict";
|
|
@@ -399,39 +1871,51 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
399
1871
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
400
1872
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
401
1873
|
/* harmony export */ });
|
|
402
|
-
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
403
|
-
/* harmony import */ var
|
|
404
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
405
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
406
|
-
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
407
|
-
/* harmony import */ var
|
|
408
|
-
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
|
|
409
|
-
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(
|
|
410
|
-
/* harmony import */ var
|
|
411
|
-
/* harmony import */ var
|
|
412
|
-
/* harmony import */ var
|
|
413
|
-
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(
|
|
414
|
-
/* harmony import */ var
|
|
415
|
-
/* harmony import */ var
|
|
416
|
-
/* harmony import */ var
|
|
417
|
-
/* harmony import */ var
|
|
418
|
-
/* harmony import */ var
|
|
419
|
-
/* harmony import */ var
|
|
420
|
-
/* harmony import */ var
|
|
421
|
-
/* harmony import */ var
|
|
422
|
-
/* harmony import */ var
|
|
423
|
-
/* harmony import */ var
|
|
424
|
-
/* harmony import */ var
|
|
425
|
-
/* harmony import */ var
|
|
426
|
-
/* harmony import */ var
|
|
427
|
-
/* harmony import */ var
|
|
428
|
-
/* harmony import */ var
|
|
429
|
-
/* harmony import */ var
|
|
430
|
-
/* harmony import */ var
|
|
431
|
-
/* harmony import */ var
|
|
432
|
-
/* harmony import */ var
|
|
433
|
-
/* harmony import */ var
|
|
434
|
-
/* harmony import */ var
|
|
1874
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87009);
|
|
1875
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6352);
|
|
1876
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25162);
|
|
1877
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12111);
|
|
1878
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97071);
|
|
1879
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(84660);
|
|
1880
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37205);
|
|
1881
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44673);
|
|
1882
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16280);
|
|
1883
|
+
/* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44641);
|
|
1884
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80796);
|
|
1885
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12020);
|
|
1886
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(61198);
|
|
1887
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(21314);
|
|
1888
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24329);
|
|
1889
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(29881);
|
|
1890
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(76332);
|
|
1891
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
|
|
1892
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(52645);
|
|
1893
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(23031);
|
|
1894
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(63842);
|
|
1895
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(87455);
|
|
1896
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(16363);
|
|
1897
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(55122);
|
|
1898
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71117);
|
|
1899
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(72257);
|
|
1900
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(69511);
|
|
1901
|
+
/* harmony import */ var _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(81002);
|
|
1902
|
+
/* harmony import */ var _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(8853);
|
|
1903
|
+
/* harmony import */ var _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(16843);
|
|
1904
|
+
/* harmony import */ var _errors_MaximumResolveDepthError_ts__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(51325);
|
|
1905
|
+
/* harmony import */ var _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(44477);
|
|
1906
|
+
/* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(30658);
|
|
1907
|
+
/* harmony import */ var _parse_index_ts__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(35014);
|
|
1908
|
+
/* harmony import */ var _Reference_ts__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(98979);
|
|
1909
|
+
/* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(10682);
|
|
1910
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(32054);
|
|
1911
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(56481);
|
|
1912
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(60888);
|
|
1913
|
+
/* harmony import */ var _util_ts__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(25939);
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
|
|
435
1919
|
|
|
436
1920
|
|
|
437
1921
|
|
|
@@ -453,7 +1937,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
453
1937
|
* Field names are sourced from the Components Object fixed fields so they
|
|
454
1938
|
* cannot drift from the namespace definition.
|
|
455
1939
|
*/
|
|
456
|
-
const cf = (0,
|
|
1940
|
+
const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__.fixedFields)(_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement, {
|
|
457
1941
|
indexed: true
|
|
458
1942
|
});
|
|
459
1943
|
const componentFieldByReferencedElement = {
|
|
@@ -465,7 +1949,8 @@ const componentFieldByReferencedElement = {
|
|
|
465
1949
|
header: cf.headers.name,
|
|
466
1950
|
securityScheme: cf.securitySchemes.name,
|
|
467
1951
|
link: cf.links.name,
|
|
468
|
-
callback: cf.callbacks.name
|
|
1952
|
+
callback: cf.callbacks.name,
|
|
1953
|
+
pathItem: cf.pathItems.name
|
|
469
1954
|
};
|
|
470
1955
|
|
|
471
1956
|
/**
|
|
@@ -475,15 +1960,16 @@ const componentFieldByReferencedElement = {
|
|
|
475
1960
|
* object.
|
|
476
1961
|
*/
|
|
477
1962
|
const componentFieldElementByField = {
|
|
478
|
-
[cf.schemas.name]:
|
|
479
|
-
[cf.responses.name]:
|
|
480
|
-
[cf.parameters.name]:
|
|
481
|
-
[cf.examples.name]:
|
|
482
|
-
[cf.requestBodies.name]:
|
|
483
|
-
[cf.headers.name]:
|
|
484
|
-
[cf.securitySchemes.name]:
|
|
485
|
-
[cf.links.name]:
|
|
486
|
-
[cf.callbacks.name]:
|
|
1963
|
+
[cf.schemas.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__["default"],
|
|
1964
|
+
[cf.responses.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__["default"],
|
|
1965
|
+
[cf.parameters.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__["default"],
|
|
1966
|
+
[cf.examples.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__["default"],
|
|
1967
|
+
[cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__["default"],
|
|
1968
|
+
[cf.headers.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__["default"],
|
|
1969
|
+
[cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__["default"],
|
|
1970
|
+
[cf.links.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__["default"],
|
|
1971
|
+
[cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__["default"],
|
|
1972
|
+
[cf.pathItems.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__["default"]
|
|
487
1973
|
};
|
|
488
1974
|
|
|
489
1975
|
/**
|
|
@@ -493,7 +1979,7 @@ const componentFieldElementByField = {
|
|
|
493
1979
|
/**
|
|
494
1980
|
* @public
|
|
495
1981
|
*/
|
|
496
|
-
class
|
|
1982
|
+
class OpenAPI3_1BundleVisitor {
|
|
497
1983
|
reference;
|
|
498
1984
|
options;
|
|
499
1985
|
|
|
@@ -503,7 +1989,7 @@ class OpenAPI3_0BundleVisitor {
|
|
|
503
1989
|
* Derived from the shared refSet's root reference.
|
|
504
1990
|
*/
|
|
505
1991
|
get entryURI() {
|
|
506
|
-
return
|
|
1992
|
+
return _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
|
|
507
1993
|
}
|
|
508
1994
|
|
|
509
1995
|
/**
|
|
@@ -516,7 +2002,7 @@ class OpenAPI3_0BundleVisitor {
|
|
|
516
2002
|
/**
|
|
517
2003
|
* The entry document element. Hoisted external fragments are placed into its
|
|
518
2004
|
* `components` object. The `canBundle` guard guarantees it is an
|
|
519
|
-
*
|
|
2005
|
+
* OpenApi3_1Element.
|
|
520
2006
|
*/
|
|
521
2007
|
get entryResult() {
|
|
522
2008
|
return this.entryParseResult.result;
|
|
@@ -543,25 +2029,15 @@ class OpenAPI3_0BundleVisitor {
|
|
|
543
2029
|
* generic object referenced once as a Parameter and once as a Response).
|
|
544
2030
|
*/
|
|
545
2031
|
refractCache;
|
|
546
|
-
|
|
547
|
-
/**
|
|
548
|
-
* Canonical URIs of Path Item Objects currently being inlined. Path Items
|
|
549
|
-
* are not hoisted into Components Object (no `components.pathItems` in
|
|
550
|
-
* OpenAPI 3.0), so the `assignments` map can't break their cycles. This
|
|
551
|
-
* stack guards against circular external Path Item references.
|
|
552
|
-
*/
|
|
553
|
-
inlineStack;
|
|
554
2032
|
constructor({
|
|
555
2033
|
reference,
|
|
556
2034
|
options,
|
|
557
2035
|
assignments = new Map(),
|
|
558
2036
|
reservedNames = new Map(),
|
|
559
|
-
refractCache = new WeakMap()
|
|
560
|
-
inlineStack = new Set()
|
|
2037
|
+
refractCache = new WeakMap()
|
|
561
2038
|
}) {
|
|
562
2039
|
this.reference = reference;
|
|
563
2040
|
this.options = options;
|
|
564
|
-
this.inlineStack = inlineStack;
|
|
565
2041
|
this.assignments = assignments;
|
|
566
2042
|
this.reservedNames = reservedNames;
|
|
567
2043
|
this.refractCache = refractCache;
|
|
@@ -578,12 +2054,12 @@ class OpenAPI3_0BundleVisitor {
|
|
|
578
2054
|
byType.set(type, refracted);
|
|
579
2055
|
}
|
|
580
2056
|
toBaseURI(uri) {
|
|
581
|
-
return
|
|
2057
|
+
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)));
|
|
582
2058
|
}
|
|
583
2059
|
async toReference(uri) {
|
|
584
2060
|
// detect maximum depth of resolution
|
|
585
2061
|
if (this.reference.depth >= this.options.resolve.maxDepth) {
|
|
586
|
-
throw new
|
|
2062
|
+
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}"`, {
|
|
587
2063
|
maxDepth: this.options.resolve.maxDepth,
|
|
588
2064
|
uri: this.reference.uri
|
|
589
2065
|
});
|
|
@@ -595,16 +2071,16 @@ class OpenAPI3_0BundleVisitor {
|
|
|
595
2071
|
|
|
596
2072
|
// we've already processed this Reference in past
|
|
597
2073
|
if (refSet.has(baseURI)) {
|
|
598
|
-
return refSet.find((0,
|
|
2074
|
+
return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURI, 'uri'));
|
|
599
2075
|
}
|
|
600
|
-
const parseResult = await (0,
|
|
2076
|
+
const parseResult = await (0,_parse_index_ts__WEBPACK_IMPORTED_MODULE_33__["default"])(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize(baseURI), {
|
|
601
2077
|
...this.options,
|
|
602
2078
|
parse: {
|
|
603
2079
|
...this.options.parse,
|
|
604
2080
|
mediaType: 'text/plain'
|
|
605
2081
|
}
|
|
606
2082
|
});
|
|
607
|
-
const reference = new
|
|
2083
|
+
const reference = new _Reference_ts__WEBPACK_IMPORTED_MODULE_34__["default"]({
|
|
608
2084
|
uri: baseURI,
|
|
609
2085
|
value: parseResult,
|
|
610
2086
|
depth: this.reference.depth + 1
|
|
@@ -614,12 +2090,12 @@ class OpenAPI3_0BundleVisitor {
|
|
|
614
2090
|
}
|
|
615
2091
|
|
|
616
2092
|
/**
|
|
617
|
-
* Normalizes a self-
|
|
2093
|
+
* Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
|
|
618
2094
|
* to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
|
|
619
2095
|
* transferable. Bare fragments are returned unchanged.
|
|
620
2096
|
*/
|
|
621
|
-
|
|
622
|
-
return ref.startsWith('#') ? ref :
|
|
2097
|
+
normalizeSelfReference(ref) {
|
|
2098
|
+
return ref.startsWith('#') ? ref : _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.getHash(ref);
|
|
623
2099
|
}
|
|
624
2100
|
|
|
625
2101
|
/**
|
|
@@ -638,16 +2114,16 @@ class OpenAPI3_0BundleVisitor {
|
|
|
638
2114
|
// breach (MaximumBundleDepthError, which also extends BundleError) is a
|
|
639
2115
|
// resolution failure and flows through below — wrapped and subject to
|
|
640
2116
|
// continueOnError, like dereferencing.
|
|
641
|
-
if (error instanceof
|
|
2117
|
+
if (error instanceof _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__["default"] && !(error instanceof _errors_MaximumBundleDepthError_ts__WEBPACK_IMPORTED_MODULE_29__["default"])) {
|
|
642
2118
|
throw error;
|
|
643
2119
|
}
|
|
644
2120
|
const {
|
|
645
2121
|
continueOnError
|
|
646
2122
|
} = this.options.bundle;
|
|
647
|
-
const isEntryDocument =
|
|
2123
|
+
const isEntryDocument = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
|
|
648
2124
|
const uri = this.reference.uri;
|
|
649
2125
|
const type = referencingElement.element;
|
|
650
|
-
const codeFrame = (0,
|
|
2126
|
+
const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement);
|
|
651
2127
|
const location = visitorPath.formatPath();
|
|
652
2128
|
const hop = {
|
|
653
2129
|
uri,
|
|
@@ -658,12 +2134,12 @@ class OpenAPI3_0BundleVisitor {
|
|
|
658
2134
|
codeFrame
|
|
659
2135
|
};
|
|
660
2136
|
let unresolvedError;
|
|
661
|
-
if (error instanceof
|
|
2137
|
+
if (error instanceof _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__["default"]) {
|
|
662
2138
|
// @ts-ignore
|
|
663
2139
|
error.trace = [hop, ...error.trace];
|
|
664
2140
|
unresolvedError = error;
|
|
665
2141
|
} else {
|
|
666
|
-
unresolvedError = new
|
|
2142
|
+
unresolvedError = new _errors_UnresolvableReferenceError_ts__WEBPACK_IMPORTED_MODULE_28__["default"](message, {
|
|
667
2143
|
cause: error,
|
|
668
2144
|
type,
|
|
669
2145
|
uri,
|
|
@@ -685,13 +2161,13 @@ class OpenAPI3_0BundleVisitor {
|
|
|
685
2161
|
ensureComponentsField(field) {
|
|
686
2162
|
const entryResult = this.entryResult;
|
|
687
2163
|
let components = entryResult.components;
|
|
688
|
-
if (!(0,
|
|
689
|
-
components = new
|
|
2164
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(components)) {
|
|
2165
|
+
components = new _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement();
|
|
690
2166
|
entryResult.components = components;
|
|
691
2167
|
}
|
|
692
2168
|
let fieldElement = components.get(field);
|
|
693
|
-
if (!(0,
|
|
694
|
-
const FieldElement = componentFieldElementByField[field] ??
|
|
2169
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(fieldElement)) {
|
|
2170
|
+
const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"];
|
|
695
2171
|
fieldElement = new FieldElement();
|
|
696
2172
|
components.set(field, fieldElement);
|
|
697
2173
|
}
|
|
@@ -703,17 +2179,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
703
2179
|
* falling back to the referenced file's basename.
|
|
704
2180
|
*/
|
|
705
2181
|
basenameOf(jsonPointer, baseURI) {
|
|
706
|
-
const tokens = (0,
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
const lastSlash = baseURI.lastIndexOf('/');
|
|
710
|
-
const lastDot = baseURI.lastIndexOf('.');
|
|
711
|
-
const fileName = baseURI.slice(lastSlash + 1);
|
|
712
|
-
// strip the extension only when the last dot belongs to the file name
|
|
713
|
-
candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
|
|
714
|
-
}
|
|
715
|
-
if (candidate === '') candidate = 'Schema';
|
|
716
|
-
return candidate;
|
|
2182
|
+
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.parse)(jsonPointer).tree;
|
|
2183
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
2184
|
+
return lastToken || _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.getBasename(baseURI) || 'Schema';
|
|
717
2185
|
}
|
|
718
2186
|
|
|
719
2187
|
/**
|
|
@@ -722,7 +2190,7 @@ class OpenAPI3_0BundleVisitor {
|
|
|
722
2190
|
*/
|
|
723
2191
|
baseName(element, field, jsonPointer, baseURI) {
|
|
724
2192
|
// strategy specific options take precedence over the top-level bundle options
|
|
725
|
-
const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-
|
|
2193
|
+
const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-1']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
|
|
726
2194
|
if (typeof componentNamesStrategy === 'function') {
|
|
727
2195
|
const resolved = componentNamesStrategy({
|
|
728
2196
|
element,
|
|
@@ -736,9 +2204,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
736
2204
|
return this.basenameOf(jsonPointer, baseURI);
|
|
737
2205
|
}
|
|
738
2206
|
if (componentNamesStrategy === 'title') {
|
|
739
|
-
const title = (0,
|
|
2207
|
+
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;
|
|
740
2208
|
if (typeof title === 'string' && title.trim() !== '') {
|
|
741
|
-
const name = (0,
|
|
2209
|
+
const name = (0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.sanitizeComponentName)((0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.toPascalCase)(title));
|
|
742
2210
|
if (name !== '') return name;
|
|
743
2211
|
}
|
|
744
2212
|
// fall back to basename when no usable title is present
|
|
@@ -754,18 +2222,40 @@ class OpenAPI3_0BundleVisitor {
|
|
|
754
2222
|
uniqueName(candidate, field) {
|
|
755
2223
|
const fieldElement = this.ensureComponentsField(field);
|
|
756
2224
|
const reserved = this.reservedNames.get(field) ?? new Set();
|
|
757
|
-
return (0,
|
|
2225
|
+
return (0,_util_ts__WEBPACK_IMPORTED_MODULE_39__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
/**
|
|
2229
|
+
* Reports a collision-forced rename according to the configured severity.
|
|
2230
|
+
* A rename means two distinct targets resolved to the same name; each keeps
|
|
2231
|
+
* its own component (and origin), so report the rename per severity.
|
|
2232
|
+
*/
|
|
2233
|
+
reportNameCollision(preferredName, componentName, field) {
|
|
2234
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
2235
|
+
const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-1']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
|
|
2236
|
+
if (componentName === preferredName || onComponentNameCollision === 'off') {
|
|
2237
|
+
return;
|
|
2238
|
+
}
|
|
2239
|
+
const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
|
|
2240
|
+
if (onComponentNameCollision === 'error') {
|
|
2241
|
+
throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_27__["default"](message);
|
|
2242
|
+
}
|
|
2243
|
+
const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](message);
|
|
2244
|
+
annotation.classes.push('warning');
|
|
2245
|
+
annotation.code = 'bundle-component-name-collision';
|
|
2246
|
+
// append (never prepend) so the result element stays ahead of annotations
|
|
2247
|
+
this.entryParseResult.content.push(annotation);
|
|
758
2248
|
}
|
|
759
2249
|
async ReferenceElement(path) {
|
|
760
2250
|
const referencingElement = path.node;
|
|
761
|
-
const $ref = (0,
|
|
2251
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
|
|
762
2252
|
const retrievalURI = this.toBaseURI($ref);
|
|
763
2253
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
764
2254
|
const isExternalReference = !isInternalReference;
|
|
765
2255
|
if (isInternalReference) {
|
|
766
|
-
// normalize self-
|
|
2256
|
+
// normalize self-references to a bare fragment so the bundled
|
|
767
2257
|
// document stays transferable; bare fragments are left untouched
|
|
768
|
-
referencingElement.set('$ref', this.
|
|
2258
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
769
2259
|
path.skip();
|
|
770
2260
|
return;
|
|
771
2261
|
}
|
|
@@ -775,8 +2265,8 @@ class OpenAPI3_0BundleVisitor {
|
|
|
775
2265
|
path.skip();
|
|
776
2266
|
return;
|
|
777
2267
|
}
|
|
778
|
-
const $refBaseURI =
|
|
779
|
-
const jsonPointer =
|
|
2268
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
|
|
2269
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
780
2270
|
|
|
781
2271
|
// the target bucket depends on the referencing context, so it's part of the
|
|
782
2272
|
// identity: the same external target referenced as e.g. both a parameter and
|
|
@@ -804,7 +2294,7 @@ class OpenAPI3_0BundleVisitor {
|
|
|
804
2294
|
try {
|
|
805
2295
|
// detect maximum depth of bundling
|
|
806
2296
|
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
807
|
-
throw new
|
|
2297
|
+
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}"`, {
|
|
808
2298
|
maxDepth: this.options.bundle.maxDepth,
|
|
809
2299
|
uri: this.reference.uri
|
|
810
2300
|
});
|
|
@@ -812,21 +2302,21 @@ class OpenAPI3_0BundleVisitor {
|
|
|
812
2302
|
const reference = await this.toReference($ref);
|
|
813
2303
|
|
|
814
2304
|
// possibly non-semantic fragment
|
|
815
|
-
let referencedElement = (0,
|
|
2305
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
|
|
816
2306
|
|
|
817
2307
|
// apply semantics to the fragment so nested references become Reference Objects
|
|
818
|
-
if (referencedElement.element !== referencedElementType && !(0,
|
|
2308
|
+
if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement)) {
|
|
819
2309
|
const cached = this.getRefracted(referencedElement, referencedElementType);
|
|
820
2310
|
if (cached !== undefined) {
|
|
821
2311
|
referencedElement = cached;
|
|
822
|
-
} else if ((0,
|
|
2312
|
+
} else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.isReferenceLikeElement)(referencedElement)) {
|
|
823
2313
|
const sourceElement = referencedElement;
|
|
824
|
-
referencedElement = (0,
|
|
2314
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractReference)(referencedElement);
|
|
825
2315
|
referencedElement.meta.set('referenced-element', referencedElementType);
|
|
826
2316
|
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
827
2317
|
} else {
|
|
828
2318
|
const sourceElement = referencedElement;
|
|
829
|
-
referencedElement = (0,
|
|
2319
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__["default"])(referencedElement, {
|
|
830
2320
|
element: referencedElementType
|
|
831
2321
|
});
|
|
832
2322
|
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
@@ -834,23 +2324,8 @@ class OpenAPI3_0BundleVisitor {
|
|
|
834
2324
|
}
|
|
835
2325
|
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
836
2326
|
const componentName = this.uniqueName(preferredName, field);
|
|
837
|
-
const internalPointer = `#/components/${field}/${(0,
|
|
838
|
-
|
|
839
|
-
// a rename means two distinct targets resolved to the same name; each
|
|
840
|
-
// keeps its own component (and origin), so report the rename per severity.
|
|
841
|
-
// strategy specific options take precedence over the top-level bundle options
|
|
842
|
-
const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
|
|
843
|
-
if (componentName !== preferredName && onComponentNameCollision !== 'off') {
|
|
844
|
-
const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
|
|
845
|
-
if (onComponentNameCollision === 'error') {
|
|
846
|
-
throw new _errors_BundleError_ts__WEBPACK_IMPORTED_MODULE_25__["default"](message);
|
|
847
|
-
}
|
|
848
|
-
const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
|
|
849
|
-
annotation.classes.push('warning');
|
|
850
|
-
annotation.code = 'bundle-component-name-collision';
|
|
851
|
-
// append (never prepend) so the result element stays ahead of annotations
|
|
852
|
-
this.entryParseResult.content.push(annotation);
|
|
853
|
-
}
|
|
2327
|
+
const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
|
|
2328
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
854
2329
|
|
|
855
2330
|
// reserve the assignment and component name before recursing so cyclic
|
|
856
2331
|
// references terminate
|
|
@@ -859,21 +2334,20 @@ class OpenAPI3_0BundleVisitor {
|
|
|
859
2334
|
this.reservedNames.get(field).add(componentName);
|
|
860
2335
|
|
|
861
2336
|
// own a copy of the fragment and bundle its own external references
|
|
862
|
-
const hoistedElement = (0,
|
|
863
|
-
const visitor = new
|
|
2337
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
|
|
2338
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
864
2339
|
reference,
|
|
865
2340
|
options: this.options,
|
|
866
2341
|
assignments: this.assignments,
|
|
867
2342
|
reservedNames: this.reservedNames,
|
|
868
|
-
refractCache: this.refractCache
|
|
869
|
-
inlineStack: this.inlineStack
|
|
2343
|
+
refractCache: this.refractCache
|
|
870
2344
|
});
|
|
871
|
-
const bundledElement = await (0,
|
|
2345
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
|
|
872
2346
|
mutable: true
|
|
873
2347
|
});
|
|
874
2348
|
|
|
875
2349
|
// annotate the hoisted fragment with info about its origin
|
|
876
|
-
if ((0,
|
|
2350
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isElement)(bundledElement)) {
|
|
877
2351
|
bundledElement.meta.set('ref-origin', reference.uri);
|
|
878
2352
|
}
|
|
879
2353
|
|
|
@@ -890,99 +2364,265 @@ class OpenAPI3_0BundleVisitor {
|
|
|
890
2364
|
}
|
|
891
2365
|
|
|
892
2366
|
/**
|
|
893
|
-
*
|
|
894
|
-
*
|
|
895
|
-
*
|
|
896
|
-
*
|
|
2367
|
+
* Unlike OpenAPI 3.0 (which has no `components.pathItems` field and therefore
|
|
2368
|
+
* inlines external Path Items in place), OpenAPI 3.1 hoists an external Path
|
|
2369
|
+
* Item Object into `components.pathItems` and rewrites the referencing `$ref`
|
|
2370
|
+
* to an internal pointer — mirroring how Reference Objects are bundled.
|
|
2371
|
+
* Sibling fields next to the `$ref` (e.g. `summary`, `description`) are kept
|
|
2372
|
+
* on the referencing element.
|
|
897
2373
|
*/
|
|
898
2374
|
async PathItemElement(path) {
|
|
899
2375
|
const pathItemElement = path.node;
|
|
900
2376
|
|
|
901
2377
|
// ignore Path Item Objects without a $ref field
|
|
902
|
-
if (!(0,
|
|
2378
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(pathItemElement.$ref)) {
|
|
903
2379
|
return;
|
|
904
2380
|
}
|
|
905
|
-
const $ref = (0,
|
|
2381
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(pathItemElement.$ref);
|
|
906
2382
|
const retrievalURI = this.toBaseURI($ref);
|
|
907
2383
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
908
2384
|
const isExternalReference = !isInternalReference;
|
|
909
2385
|
if (isInternalReference) {
|
|
910
|
-
// normalize self-
|
|
2386
|
+
// normalize self-references to a bare fragment so the bundled
|
|
911
2387
|
// document stays transferable; bare fragments are left untouched
|
|
912
|
-
pathItemElement.set('$ref', this.
|
|
2388
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
2389
|
+
path.skip();
|
|
913
2390
|
return;
|
|
914
2391
|
}
|
|
915
2392
|
|
|
916
2393
|
// honor the resolve.external switch
|
|
917
2394
|
if (!this.options.resolve.external && isExternalReference) {
|
|
2395
|
+
path.skip();
|
|
918
2396
|
return;
|
|
919
2397
|
}
|
|
920
|
-
const $refBaseURI =
|
|
921
|
-
const jsonPointer =
|
|
922
|
-
const
|
|
2398
|
+
const $refBaseURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
|
|
2399
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
2400
|
+
const field = cf.pathItems.name;
|
|
2401
|
+
const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
|
|
923
2402
|
|
|
924
|
-
//
|
|
925
|
-
//
|
|
926
|
-
|
|
2403
|
+
// already hoisted (or being hoisted) — just rewrite the pointer. The
|
|
2404
|
+
// assignment is reserved BEFORE recursing, so a circular Path Item chain
|
|
2405
|
+
// terminates here with an internal pointer instead of recursing forever.
|
|
2406
|
+
if (this.assignments.has(canonicalKey)) {
|
|
2407
|
+
pathItemElement.set('$ref', this.assignments.get(canonicalKey));
|
|
2408
|
+
path.skip();
|
|
927
2409
|
return;
|
|
928
2410
|
}
|
|
929
2411
|
try {
|
|
930
2412
|
// detect maximum depth of bundling
|
|
931
2413
|
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
932
|
-
throw new
|
|
2414
|
+
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}"`, {
|
|
933
2415
|
maxDepth: this.options.bundle.maxDepth,
|
|
934
2416
|
uri: this.reference.uri
|
|
935
2417
|
});
|
|
936
2418
|
}
|
|
937
2419
|
const reference = await this.toReference($ref);
|
|
938
|
-
let referencedElement = (0,
|
|
2420
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
|
|
939
2421
|
|
|
940
2422
|
// apply Path Item semantics to the referenced fragment
|
|
941
|
-
if (!(0,
|
|
2423
|
+
if (!(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement)) {
|
|
942
2424
|
const cached = this.getRefracted(referencedElement, 'pathItem');
|
|
943
2425
|
if (cached !== undefined) {
|
|
944
2426
|
referencedElement = cached;
|
|
945
2427
|
} else {
|
|
946
2428
|
const sourceElement = referencedElement;
|
|
947
|
-
referencedElement = (0,
|
|
2429
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractPathItem)(referencedElement);
|
|
948
2430
|
this.setRefracted(sourceElement, 'pathItem', referencedElement);
|
|
949
2431
|
}
|
|
950
2432
|
}
|
|
2433
|
+
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
2434
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
2435
|
+
const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
|
|
2436
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
951
2437
|
|
|
952
|
-
//
|
|
953
|
-
|
|
954
|
-
this.
|
|
955
|
-
|
|
2438
|
+
// reserve the assignment and component name before recursing so cyclic
|
|
2439
|
+
// references terminate
|
|
2440
|
+
this.assignments.set(canonicalKey, internalPointer);
|
|
2441
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
2442
|
+
this.reservedNames.get(field).add(componentName);
|
|
2443
|
+
|
|
2444
|
+
// own a copy of the fragment and bundle its own external references
|
|
2445
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
|
|
2446
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
956
2447
|
reference,
|
|
957
2448
|
options: this.options,
|
|
958
2449
|
assignments: this.assignments,
|
|
959
2450
|
reservedNames: this.reservedNames,
|
|
960
|
-
refractCache: this.refractCache
|
|
961
|
-
inlineStack: this.inlineStack
|
|
2451
|
+
refractCache: this.refractCache
|
|
962
2452
|
});
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
2453
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
|
|
2454
|
+
mutable: true
|
|
2455
|
+
});
|
|
2456
|
+
|
|
2457
|
+
// a `$ref` surviving on the hoisted Path Item means it pointed at another
|
|
2458
|
+
// Path Item (a chain or cycle); it has already been rewritten to an
|
|
2459
|
+
// internal `#/components/pathItems/...` pointer by the child traversal
|
|
2460
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
2461
|
+
|
|
2462
|
+
// place the bundled Path Item into the entry document's components
|
|
2463
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
2464
|
+
|
|
2465
|
+
// rewrite the referencing Path Item to point at the hoisted one, keeping
|
|
2466
|
+
// any sibling fields (e.g. summary, description) next to the $ref
|
|
2467
|
+
pathItemElement.set('$ref', internalPointer);
|
|
2468
|
+
path.skip();
|
|
2469
|
+
} catch (error) {
|
|
2470
|
+
this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
|
|
2471
|
+
path.skip();
|
|
2472
|
+
}
|
|
2473
|
+
}
|
|
2474
|
+
|
|
2475
|
+
/**
|
|
2476
|
+
* Schema Objects in OpenAPI 3.1 are a JSON Schema 2020-12 dialect, so they are
|
|
2477
|
+
* bundled per the JSON Schema Compound Document rules: the external schema
|
|
2478
|
+
* RESOURCE is embedded verbatim into `components.schemas` (carrying its `$id`),
|
|
2479
|
+
* and the referencing `$ref` is left UNCHANGED — it keeps resolving against the
|
|
2480
|
+
* embedded resource's `$id`. This mirrors the canonical hyperjump
|
|
2481
|
+
* `json-schema-bundle` behavior (the whole resource is embedded once, keyed by
|
|
2482
|
+
* its `$id`; references are not rewritten).
|
|
2483
|
+
*/
|
|
2484
|
+
async SchemaElement(path) {
|
|
2485
|
+
const referencingElement = path.node;
|
|
2486
|
+
|
|
2487
|
+
// skip current referencing schema as $ref keyword was not defined
|
|
2488
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencingElement.$ref)) {
|
|
2489
|
+
return;
|
|
2490
|
+
}
|
|
2491
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
|
|
2492
|
+
try {
|
|
2493
|
+
// compute baseURI using rules around $id and $ref keywords. The current
|
|
2494
|
+
// document's URI is the retrieval URI — derive it directly (not via
|
|
2495
|
+
// toReference) so an internal $ref needs no resolution and never trips the
|
|
2496
|
+
// resolve.maxDepth guard, matching how ReferenceElement returns early.
|
|
2497
|
+
const retrievalURI = this.reference.uri;
|
|
2498
|
+
const $refBaseURI = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.resolveSchema$refField)(retrievalURI, referencingElement);
|
|
2499
|
+
const $refBaseURIStrippedHash = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash($refBaseURI);
|
|
2500
|
+
const file = new _File_ts__WEBPACK_IMPORTED_MODULE_35__["default"]({
|
|
2501
|
+
uri: $refBaseURIStrippedHash
|
|
2502
|
+
});
|
|
2503
|
+
const isUnknownURI = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(r => r.canRead(file), this.options.resolve.resolvers);
|
|
2504
|
+
const isURL = !isUnknownURI;
|
|
2505
|
+
const isInternalReference = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri) === $refBaseURIStrippedHash;
|
|
2506
|
+
const isExternalReference = !isInternalReference;
|
|
2507
|
+
|
|
2508
|
+
// internal Schema Object $refs resolve against the in-document $id graph;
|
|
2509
|
+
// leaving them untouched keeps that resolution valid. Unlike Reference
|
|
2510
|
+
// Objects, a JSON Schema $ref is NOT normalized to a bare fragment.
|
|
2511
|
+
if (isInternalReference) {
|
|
2512
|
+
return;
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2515
|
+
// honor the resolve.external switch
|
|
2516
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2517
|
+
return;
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
// detect maximum depth of bundling before fetching the external resource,
|
|
2521
|
+
// matching ReferenceElement/PathItemElement (which check before toReference)
|
|
2522
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
2523
|
+
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}"`, {
|
|
2524
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
2525
|
+
uri: this.reference.uri
|
|
967
2526
|
});
|
|
968
|
-
} finally {
|
|
969
|
-
this.inlineStack.delete(canonicalKey);
|
|
970
2527
|
}
|
|
971
2528
|
|
|
972
|
-
//
|
|
973
|
-
//
|
|
974
|
-
//
|
|
975
|
-
//
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
2529
|
+
// locate the external schema resource the $ref targets, reusing the
|
|
2530
|
+
// dereference strategy's classification. First try to resolve the target
|
|
2531
|
+
// as a canonical URI / URL against the current document's $id graph; if
|
|
2532
|
+
// that fails, fall back to fetching the external document and resolving
|
|
2533
|
+
// the fragment there as a $anchor or JSON Pointer.
|
|
2534
|
+
let schemaReference = this.reference;
|
|
2535
|
+
try {
|
|
2536
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
2537
|
+
(0,_dereference_strategies_openapi_3_1_selectors_uri_ts__WEBPACK_IMPORTED_MODULE_37__.evaluate)($refBaseURI, referenceAsSchema);
|
|
2538
|
+
} catch (error) {
|
|
2539
|
+
if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_ts__WEBPACK_IMPORTED_MODULE_31__["default"]) {
|
|
2540
|
+
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))) {
|
|
2541
|
+
schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
|
|
2542
|
+
const selector = (0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.uriToAnchor)($refBaseURI);
|
|
2543
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
2544
|
+
(0,_dereference_strategies_openapi_3_1_selectors_$anchor_ts__WEBPACK_IMPORTED_MODULE_36__.evaluate)(selector, referenceAsSchema);
|
|
2545
|
+
} else {
|
|
2546
|
+
schemaReference = await this.toReference(_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
|
|
2547
|
+
const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
2548
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
2549
|
+
(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(referenceAsSchema, selector);
|
|
2550
|
+
}
|
|
2551
|
+
} else {
|
|
2552
|
+
throw error;
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
// a $ref that resolves (by $id/$anchor/pointer) within the current document
|
|
2557
|
+
// is internal even when its URI form (e.g. a URN or absolute $id) is not a
|
|
2558
|
+
// bare fragment. Leave it untouched — it resolves against the in-document
|
|
2559
|
+
// $id graph, and embedding the current document into itself would be wrong.
|
|
2560
|
+
if (_util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri) === _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri)) {
|
|
2561
|
+
return;
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2564
|
+
// the resource to embed is the WHOLE external document (its root schema),
|
|
2565
|
+
// identified by its $id. A $ref into a fragment of the document embeds the
|
|
2566
|
+
// entire document resource once; the fragment keeps resolving against the
|
|
2567
|
+
// embedded $id.
|
|
2568
|
+
const resourceRoot = (0,_dereference_strategies_openapi_3_1_util_ts__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
2569
|
+
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);
|
|
2570
|
+
const field = cf.schemas.name;
|
|
2571
|
+
const canonicalKey = `${field}\t${resourceBaseURI}`;
|
|
2572
|
+
|
|
2573
|
+
// resource already embedded (or being embedded) — leave the referencing
|
|
2574
|
+
// $ref untouched and stop. This also terminates circular external schema
|
|
2575
|
+
// references, since the assignment is reserved BEFORE recursion.
|
|
2576
|
+
if (this.assignments.has(canonicalKey)) {
|
|
2577
|
+
path.skip();
|
|
2578
|
+
return;
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
// own a copy of the resource and ensure it carries a $id so the unchanged
|
|
2582
|
+
// $ref still resolves against it once embedded
|
|
2583
|
+
const embeddedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(resourceRoot);
|
|
2584
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(embeddedElement.$id)) {
|
|
2585
|
+
embeddedElement.set('$id', resourceBaseURI);
|
|
2586
|
+
}
|
|
2587
|
+
|
|
2588
|
+
// the embedded thing is the WHOLE resource (keyed by its $id), so its name
|
|
2589
|
+
// is derived from the resource URI, not the $ref fragment — passing a root
|
|
2590
|
+
// pointer makes baseName fall back to the resource basename
|
|
2591
|
+
const preferredName = this.baseName(embeddedElement, field, '', resourceBaseURI);
|
|
2592
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
2593
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
2594
|
+
|
|
2595
|
+
// reserve the assignment and component name before recursing so circular
|
|
2596
|
+
// external schema references terminate
|
|
2597
|
+
this.assignments.set(canonicalKey, `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`);
|
|
2598
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
2599
|
+
this.reservedNames.get(field).add(componentName);
|
|
2600
|
+
|
|
2601
|
+
// bundle external references contained within the embedded resource;
|
|
2602
|
+
// nested external resources land flat in the same components.schemas
|
|
2603
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
2604
|
+
reference: schemaReference,
|
|
2605
|
+
options: this.options,
|
|
2606
|
+
assignments: this.assignments,
|
|
2607
|
+
reservedNames: this.reservedNames,
|
|
2608
|
+
refractCache: this.refractCache
|
|
981
2609
|
});
|
|
982
|
-
bundledElement.
|
|
983
|
-
|
|
2610
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(embeddedElement, visitor, {
|
|
2611
|
+
mutable: true
|
|
2612
|
+
});
|
|
2613
|
+
|
|
2614
|
+
// annotate the embedded resource with info about its origin
|
|
2615
|
+
bundledElement.meta.set('ref-origin', schemaReference.uri);
|
|
2616
|
+
|
|
2617
|
+
// place the embedded resource into the entry document's components
|
|
2618
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
2619
|
+
|
|
2620
|
+
// the referencing $ref is left UNCHANGED — it resolves against the
|
|
2621
|
+
// embedded resource's $id
|
|
2622
|
+
path.skip();
|
|
984
2623
|
} catch (error) {
|
|
985
|
-
this.handleError(`Error while bundling
|
|
2624
|
+
this.handleError(`Error while bundling Schema Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
2625
|
+
path.skip();
|
|
986
2626
|
}
|
|
987
2627
|
}
|
|
988
2628
|
|
|
@@ -995,18 +2635,18 @@ class OpenAPI3_0BundleVisitor {
|
|
|
995
2635
|
const exampleElement = path.node;
|
|
996
2636
|
|
|
997
2637
|
// ignore Example Objects without an externalValue field
|
|
998
|
-
if (!(0,
|
|
2638
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
|
|
999
2639
|
return;
|
|
1000
2640
|
}
|
|
1001
2641
|
|
|
1002
2642
|
// value and externalValue fields are mutually exclusive
|
|
1003
|
-
if (exampleElement.hasKey('value') && (0,
|
|
1004
|
-
throw new
|
|
1005
|
-
value: (0,
|
|
1006
|
-
externalValue: (0,
|
|
2643
|
+
if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
|
|
2644
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
|
|
2645
|
+
value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.value),
|
|
2646
|
+
externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue)
|
|
1007
2647
|
});
|
|
1008
2648
|
}
|
|
1009
|
-
const externalValue = (0,
|
|
2649
|
+
const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue);
|
|
1010
2650
|
const retrievalURI = this.toBaseURI(externalValue);
|
|
1011
2651
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
1012
2652
|
const isExternalReference = !isInternalReference;
|
|
@@ -1017,9 +2657,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
1017
2657
|
}
|
|
1018
2658
|
try {
|
|
1019
2659
|
const reference = await this.toReference(externalValue);
|
|
1020
|
-
const valueElement = (0,
|
|
2660
|
+
const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(reference.value.result);
|
|
1021
2661
|
valueElement.meta.set('ref-origin', reference.uri);
|
|
1022
|
-
const exampleElementCopy = (0,
|
|
2662
|
+
const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(exampleElement);
|
|
1023
2663
|
exampleElementCopy.value = valueElement;
|
|
1024
2664
|
exampleElementCopy.remove('externalValue');
|
|
1025
2665
|
path.replaceWith(exampleElementCopy);
|
|
@@ -1030,7 +2670,7 @@ class OpenAPI3_0BundleVisitor {
|
|
|
1030
2670
|
|
|
1031
2671
|
/**
|
|
1032
2672
|
* Link Object `operationRef` points at an Operation Object, which has no
|
|
1033
|
-
* Components Object field in OpenAPI 3.
|
|
2673
|
+
* Components Object field in OpenAPI 3.1 and therefore cannot be hoisted or
|
|
1034
2674
|
* inlined. To keep the link resolvable from the bundled document, an external
|
|
1035
2675
|
* `operationRef` is rewritten to its absolute URI. Internal `operationRef`
|
|
1036
2676
|
* values and `operationId` links are left untouched.
|
|
@@ -1039,24 +2679,24 @@ class OpenAPI3_0BundleVisitor {
|
|
|
1039
2679
|
const linkElement = path.node;
|
|
1040
2680
|
|
|
1041
2681
|
// operationRef and operationId fields are mutually exclusive
|
|
1042
|
-
if ((0,
|
|
1043
|
-
throw new
|
|
1044
|
-
operationRef: (0,
|
|
1045
|
-
operationId: (0,
|
|
2682
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationId)) {
|
|
2683
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
|
|
2684
|
+
operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef),
|
|
2685
|
+
operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationId)
|
|
1046
2686
|
});
|
|
1047
2687
|
}
|
|
1048
2688
|
|
|
1049
2689
|
// only external operationRef links need adjusting
|
|
1050
|
-
if (!(0,
|
|
2690
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef)) {
|
|
1051
2691
|
return;
|
|
1052
2692
|
}
|
|
1053
|
-
const operationRef = (0,
|
|
2693
|
+
const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef);
|
|
1054
2694
|
const retrievalURI = this.toBaseURI(operationRef);
|
|
1055
2695
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
1056
2696
|
if (isInternalReference) {
|
|
1057
|
-
// normalize self-
|
|
2697
|
+
// normalize a self-reference operationRef to a bare fragment so the bundled
|
|
1058
2698
|
// document stays transferable; bare fragments are left untouched
|
|
1059
|
-
linkElement.set('operationRef', this.
|
|
2699
|
+
linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
|
|
1060
2700
|
return;
|
|
1061
2701
|
}
|
|
1062
2702
|
|
|
@@ -1067,58 +2707,13 @@ class OpenAPI3_0BundleVisitor {
|
|
|
1067
2707
|
|
|
1068
2708
|
// rewrite to an absolute URI so the link keeps resolving once the document
|
|
1069
2709
|
// is treated as self-contained
|
|
1070
|
-
const absoluteURI =
|
|
2710
|
+
const absoluteURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, operationRef);
|
|
1071
2711
|
if (absoluteURI !== operationRef) {
|
|
1072
2712
|
linkElement.set('operationRef', absoluteURI);
|
|
1073
2713
|
}
|
|
1074
2714
|
}
|
|
1075
2715
|
}
|
|
1076
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
1077
|
-
|
|
1078
|
-
/***/ },
|
|
1079
|
-
|
|
1080
|
-
/***/ 16432
|
|
1081
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1082
|
-
|
|
1083
|
-
"use strict";
|
|
1084
|
-
__webpack_require__.r(__webpack_exports__);
|
|
1085
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1086
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1087
|
-
/* harmony export */ });
|
|
1088
|
-
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7822);
|
|
1089
|
-
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76332);
|
|
1090
|
-
/* harmony import */ var _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(75508);
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
/**
|
|
1095
|
-
* @public
|
|
1096
|
-
*/
|
|
1097
|
-
|
|
1098
|
-
/**
|
|
1099
|
-
* @public
|
|
1100
|
-
*/
|
|
1101
|
-
class OpenAPI3_1BundleStrategy extends _BundleStrategy_ts__WEBPACK_IMPORTED_MODULE_2__["default"] {
|
|
1102
|
-
constructor(options) {
|
|
1103
|
-
super({
|
|
1104
|
-
...(options ?? {}),
|
|
1105
|
-
name: 'openapi-3-1'
|
|
1106
|
-
});
|
|
1107
|
-
}
|
|
1108
|
-
canBundle(file) {
|
|
1109
|
-
// assert by media type
|
|
1110
|
-
if (file.mediaType !== 'text/plain') {
|
|
1111
|
-
return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__["default"].includes(file.mediaType);
|
|
1112
|
-
}
|
|
1113
|
-
|
|
1114
|
-
// assert by inspecting ApiDOM
|
|
1115
|
-
return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__.isOpenApi3_1Element)(file.parseResult?.result);
|
|
1116
|
-
}
|
|
1117
|
-
async bundle(file) {
|
|
1118
|
-
return file.parseResult;
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
|
|
2716
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleVisitor);
|
|
1122
2717
|
|
|
1123
2718
|
/***/ },
|
|
1124
2719
|
|
|
@@ -10006,6 +11601,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
10006
11601
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10007
11602
|
/* harmony export */ cwd: () => (/* binding */ cwd),
|
|
10008
11603
|
/* harmony export */ fromFileSystemPath: () => (/* binding */ fromFileSystemPath),
|
|
11604
|
+
/* harmony export */ getBasename: () => (/* binding */ getBasename),
|
|
10009
11605
|
/* harmony export */ getExtension: () => (/* binding */ getExtension),
|
|
10010
11606
|
/* harmony export */ getHash: () => (/* binding */ getHash),
|
|
10011
11607
|
/* harmony export */ getProtocol: () => (/* binding */ getProtocol),
|
|
@@ -10065,19 +11661,40 @@ const getProtocol = url => {
|
|
|
10065
11661
|
*/
|
|
10066
11662
|
const hasProtocol = (0,ramda__WEBPACK_IMPORTED_MODULE_3__["default"])(getProtocol, ramda_adjunct__WEBPACK_IMPORTED_MODULE_6__["default"]);
|
|
10067
11663
|
|
|
11664
|
+
/**
|
|
11665
|
+
* Returns the final path segment of the given URI (the part after the last
|
|
11666
|
+
* `/`). Inputs are URIs, whose path separator is `/` — filesystem paths are
|
|
11667
|
+
* forward-slashed by `sanitize` before reaching here.
|
|
11668
|
+
*/
|
|
11669
|
+
const getFilename = uri => uri.slice(uri.lastIndexOf('/') + 1);
|
|
11670
|
+
|
|
10068
11671
|
/**
|
|
10069
11672
|
* Returns the lower-cased file extension of the given URL,
|
|
10070
11673
|
* or an empty string if it has no extension.
|
|
10071
11674
|
* @public
|
|
10072
11675
|
*/
|
|
10073
11676
|
const getExtension = url => {
|
|
10074
|
-
const
|
|
11677
|
+
const fileName = getFilename(url);
|
|
11678
|
+
const lastDotPosition = fileName.lastIndexOf('.');
|
|
10075
11679
|
if (lastDotPosition >= 0) {
|
|
10076
|
-
return
|
|
11680
|
+
return fileName.substring(lastDotPosition).toLowerCase();
|
|
10077
11681
|
}
|
|
10078
11682
|
return '';
|
|
10079
11683
|
};
|
|
10080
11684
|
|
|
11685
|
+
/**
|
|
11686
|
+
* Returns the final path segment of the given URI with its file extension
|
|
11687
|
+
* removed (e.g. `./schemas/Pet.json` -> `Pet`). Returns the whole segment when
|
|
11688
|
+
* there is no extension, and the whole URI when there is no path segment
|
|
11689
|
+
* (e.g. a URN).
|
|
11690
|
+
* @public
|
|
11691
|
+
*/
|
|
11692
|
+
const getBasename = uri => {
|
|
11693
|
+
const fileName = getFilename(uri);
|
|
11694
|
+
const extension = getExtension(uri);
|
|
11695
|
+
return extension === '' ? fileName : fileName.slice(0, -extension.length);
|
|
11696
|
+
};
|
|
11697
|
+
|
|
10081
11698
|
/**
|
|
10082
11699
|
* Determines whether the given path is a filesystem path.
|
|
10083
11700
|
* This includes "file://" URLs.
|
|
@@ -74126,6 +75743,199 @@ const refractSecurityRequirement = (value, options = {}) => refract(value, {
|
|
|
74126
75743
|
});
|
|
74127
75744
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
|
|
74128
75745
|
|
|
75746
|
+
/***/ },
|
|
75747
|
+
|
|
75748
|
+
/***/ 60574
|
|
75749
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
75750
|
+
|
|
75751
|
+
"use strict";
|
|
75752
|
+
__webpack_require__.r(__webpack_exports__);
|
|
75753
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
75754
|
+
/* harmony export */ ContactElement: () => (/* reexport safe */ _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
|
|
75755
|
+
/* harmony export */ DefinitionsElement: () => (/* reexport safe */ _elements_Definitions_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
|
|
75756
|
+
/* harmony export */ ExampleElement: () => (/* reexport safe */ _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
|
|
75757
|
+
/* harmony export */ ExternalDocumentationElement: () => (/* reexport safe */ _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
|
|
75758
|
+
/* harmony export */ HeaderElement: () => (/* reexport safe */ _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
|
|
75759
|
+
/* harmony export */ HeadersElement: () => (/* reexport safe */ _elements_Headers_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
|
|
75760
|
+
/* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
|
|
75761
|
+
/* harmony export */ ItemsElement: () => (/* reexport safe */ _elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
|
|
75762
|
+
/* harmony export */ LicenseElement: () => (/* reexport safe */ _elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
|
|
75763
|
+
/* harmony export */ OperationElement: () => (/* reexport safe */ _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
|
|
75764
|
+
/* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
|
|
75765
|
+
/* harmony export */ ParametersDefinitionsElement: () => (/* reexport safe */ _elements_ParametersDefinitions_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]),
|
|
75766
|
+
/* harmony export */ PathItemElement: () => (/* reexport safe */ _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
|
|
75767
|
+
/* harmony export */ PathsElement: () => (/* reexport safe */ _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
75768
|
+
/* harmony export */ ReferenceElement: () => (/* reexport safe */ _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
|
|
75769
|
+
/* harmony export */ ResponseElement: () => (/* reexport safe */ _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
|
|
75770
|
+
/* harmony export */ ResponsesDefinitionsElement: () => (/* reexport safe */ _elements_ResponsesDefinitions_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]),
|
|
75771
|
+
/* harmony export */ ResponsesElement: () => (/* reexport safe */ _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
|
|
75772
|
+
/* harmony export */ SchemaElement: () => (/* reexport safe */ _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
|
|
75773
|
+
/* harmony export */ ScopesElement: () => (/* reexport safe */ _elements_Scopes_mjs__WEBPACK_IMPORTED_MODULE_27__["default"]),
|
|
75774
|
+
/* harmony export */ SecurityDefinitionsElement: () => (/* reexport safe */ _elements_SecurityDefinitions_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]),
|
|
75775
|
+
/* harmony export */ SecurityRequirementElement: () => (/* reexport safe */ _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]),
|
|
75776
|
+
/* harmony export */ SecuritySchemeElement: () => (/* reexport safe */ _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]),
|
|
75777
|
+
/* harmony export */ SwaggerElement: () => (/* reexport safe */ _elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
|
|
75778
|
+
/* harmony export */ SwaggerVersionElement: () => (/* reexport safe */ _elements_SwaggerVersion_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
|
|
75779
|
+
/* harmony export */ TagElement: () => (/* reexport safe */ _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
|
|
75780
|
+
/* harmony export */ XmlElement: () => (/* reexport safe */ _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__["default"])
|
|
75781
|
+
/* harmony export */ });
|
|
75782
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
|
|
75783
|
+
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
|
|
75784
|
+
/* harmony import */ var _elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25077);
|
|
75785
|
+
/* harmony import */ var _elements_SwaggerVersion_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85263);
|
|
75786
|
+
/* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60135);
|
|
75787
|
+
/* harmony import */ var _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(22389);
|
|
75788
|
+
/* harmony import */ var _elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67684);
|
|
75789
|
+
/* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38253);
|
|
75790
|
+
/* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(83419);
|
|
75791
|
+
/* harmony import */ var _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(87162);
|
|
75792
|
+
/* harmony import */ var _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65292);
|
|
75793
|
+
/* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(52508);
|
|
75794
|
+
/* harmony import */ var _elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(52445);
|
|
75795
|
+
/* harmony import */ var _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(31297);
|
|
75796
|
+
/* harmony import */ var _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96730);
|
|
75797
|
+
/* harmony import */ var _elements_Headers_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(35811);
|
|
75798
|
+
/* harmony import */ var _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(523);
|
|
75799
|
+
/* harmony import */ var _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(53188);
|
|
75800
|
+
/* harmony import */ var _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(19561);
|
|
75801
|
+
/* harmony import */ var _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(94170);
|
|
75802
|
+
/* harmony import */ var _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(89750);
|
|
75803
|
+
/* harmony import */ var _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(73418);
|
|
75804
|
+
/* harmony import */ var _elements_Definitions_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(50703);
|
|
75805
|
+
/* harmony import */ var _elements_ParametersDefinitions_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(15783);
|
|
75806
|
+
/* harmony import */ var _elements_ResponsesDefinitions_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(23133);
|
|
75807
|
+
/* harmony import */ var _elements_SecurityDefinitions_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(35553);
|
|
75808
|
+
/* harmony import */ var _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(63100);
|
|
75809
|
+
/* harmony import */ var _elements_Scopes_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(91408);
|
|
75810
|
+
/* harmony import */ var _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(66234);
|
|
75811
|
+
/* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(59845);
|
|
75812
|
+
|
|
75813
|
+
|
|
75814
|
+
|
|
75815
|
+
/**
|
|
75816
|
+
* OpenAPI 2.0 specification elements.
|
|
75817
|
+
*/
|
|
75818
|
+
|
|
75819
|
+
|
|
75820
|
+
|
|
75821
|
+
|
|
75822
|
+
|
|
75823
|
+
|
|
75824
|
+
|
|
75825
|
+
|
|
75826
|
+
|
|
75827
|
+
|
|
75828
|
+
|
|
75829
|
+
|
|
75830
|
+
|
|
75831
|
+
|
|
75832
|
+
|
|
75833
|
+
|
|
75834
|
+
|
|
75835
|
+
|
|
75836
|
+
|
|
75837
|
+
|
|
75838
|
+
|
|
75839
|
+
|
|
75840
|
+
|
|
75841
|
+
|
|
75842
|
+
|
|
75843
|
+
|
|
75844
|
+
|
|
75845
|
+
|
|
75846
|
+
/**
|
|
75847
|
+
* @public
|
|
75848
|
+
*/
|
|
75849
|
+
// Resolve specification to dereference $ref pointers
|
|
75850
|
+
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_29__["default"]);
|
|
75851
|
+
|
|
75852
|
+
// Extract fixed fields as list of { name, alias?, $visitor }
|
|
75853
|
+
const getFixedFields = fixedFieldsSpec => {
|
|
75854
|
+
return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
|
|
75855
|
+
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
|
|
75856
|
+
return {
|
|
75857
|
+
name,
|
|
75858
|
+
...fieldSpec
|
|
75859
|
+
};
|
|
75860
|
+
}
|
|
75861
|
+
return {
|
|
75862
|
+
name,
|
|
75863
|
+
$visitor: fieldSpec
|
|
75864
|
+
};
|
|
75865
|
+
});
|
|
75866
|
+
};
|
|
75867
|
+
|
|
75868
|
+
// OpenAPI 2.0 specification elements
|
|
75869
|
+
Object.defineProperty(_elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__["default"], 'fixedFields', {
|
|
75870
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Swagger.fixedFields),
|
|
75871
|
+
enumerable: true
|
|
75872
|
+
});
|
|
75873
|
+
Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
|
|
75874
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
|
|
75875
|
+
enumerable: true
|
|
75876
|
+
});
|
|
75877
|
+
Object.defineProperty(_elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
|
|
75878
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
|
|
75879
|
+
enumerable: true
|
|
75880
|
+
});
|
|
75881
|
+
Object.defineProperty(_elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
|
|
75882
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
|
|
75883
|
+
enumerable: true
|
|
75884
|
+
});
|
|
75885
|
+
Object.defineProperty(_elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
|
|
75886
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
|
|
75887
|
+
enumerable: true
|
|
75888
|
+
});
|
|
75889
|
+
Object.defineProperty(_elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
|
|
75890
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
|
|
75891
|
+
enumerable: true
|
|
75892
|
+
});
|
|
75893
|
+
Object.defineProperty(_elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
|
|
75894
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
|
|
75895
|
+
enumerable: true
|
|
75896
|
+
});
|
|
75897
|
+
Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__["default"], 'fixedFields', {
|
|
75898
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
|
|
75899
|
+
enumerable: true
|
|
75900
|
+
});
|
|
75901
|
+
Object.defineProperty(_elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
|
|
75902
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Items.fixedFields),
|
|
75903
|
+
enumerable: true
|
|
75904
|
+
});
|
|
75905
|
+
Object.defineProperty(_elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
|
|
75906
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
|
|
75907
|
+
enumerable: true
|
|
75908
|
+
});
|
|
75909
|
+
Object.defineProperty(_elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
|
|
75910
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
|
|
75911
|
+
enumerable: true
|
|
75912
|
+
});
|
|
75913
|
+
Object.defineProperty(_elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__["default"], 'fixedFields', {
|
|
75914
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
|
|
75915
|
+
enumerable: true
|
|
75916
|
+
});
|
|
75917
|
+
Object.defineProperty(_elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], 'fixedFields', {
|
|
75918
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
|
|
75919
|
+
enumerable: true
|
|
75920
|
+
});
|
|
75921
|
+
Object.defineProperty(_elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], 'fixedFields', {
|
|
75922
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
|
|
75923
|
+
enumerable: true
|
|
75924
|
+
});
|
|
75925
|
+
Object.defineProperty(_elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], 'fixedFields', {
|
|
75926
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
|
|
75927
|
+
enumerable: true
|
|
75928
|
+
});
|
|
75929
|
+
Object.defineProperty(_elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], 'fixedFields', {
|
|
75930
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
|
|
75931
|
+
enumerable: true
|
|
75932
|
+
});
|
|
75933
|
+
Object.defineProperty(_elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__["default"], 'fixedFields', {
|
|
75934
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
|
|
75935
|
+
enumerable: true
|
|
75936
|
+
});
|
|
75937
|
+
|
|
75938
|
+
|
|
74129
75939
|
/***/ },
|
|
74130
75940
|
|
|
74131
75941
|
/***/ 72880
|
|
@@ -86651,6 +88461,254 @@ const refractJsonSchemaDialect = (value, options = {}) => refract(value, {
|
|
|
86651
88461
|
});
|
|
86652
88462
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
|
|
86653
88463
|
|
|
88464
|
+
/***/ },
|
|
88465
|
+
|
|
88466
|
+
/***/ 52645
|
|
88467
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
88468
|
+
|
|
88469
|
+
"use strict";
|
|
88470
|
+
__webpack_require__.r(__webpack_exports__);
|
|
88471
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
88472
|
+
/* harmony export */ CallbackElement: () => (/* reexport safe */ _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
|
|
88473
|
+
/* harmony export */ ComponentsElement: () => (/* reexport safe */ _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
|
|
88474
|
+
/* harmony export */ ContactElement: () => (/* reexport safe */ _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
|
|
88475
|
+
/* harmony export */ DiscriminatorElement: () => (/* reexport safe */ _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
|
|
88476
|
+
/* harmony export */ EncodingElement: () => (/* reexport safe */ _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
|
|
88477
|
+
/* harmony export */ ExampleElement: () => (/* reexport safe */ _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
88478
|
+
/* harmony export */ ExternalDocumentationElement: () => (/* reexport safe */ _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
|
|
88479
|
+
/* harmony export */ HeaderElement: () => (/* reexport safe */ _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
|
|
88480
|
+
/* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
|
|
88481
|
+
/* harmony export */ JsonSchemaDialectElement: () => (/* reexport safe */ _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
|
|
88482
|
+
/* harmony export */ LicenseElement: () => (/* reexport safe */ _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
|
|
88483
|
+
/* harmony export */ LinkElement: () => (/* reexport safe */ _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
|
|
88484
|
+
/* harmony export */ MediaTypeElement: () => (/* reexport safe */ _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
|
|
88485
|
+
/* harmony export */ OAuthFlowElement: () => (/* reexport safe */ _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
|
|
88486
|
+
/* harmony export */ OAuthFlowsElement: () => (/* reexport safe */ _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
|
|
88487
|
+
/* harmony export */ OpenApi3_1Element: () => (/* reexport safe */ _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
|
|
88488
|
+
/* harmony export */ OpenapiElement: () => (/* reexport safe */ _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
|
|
88489
|
+
/* harmony export */ OperationElement: () => (/* reexport safe */ _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
|
|
88490
|
+
/* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
|
|
88491
|
+
/* harmony export */ PathItemElement: () => (/* reexport safe */ _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]),
|
|
88492
|
+
/* harmony export */ PathsElement: () => (/* reexport safe */ _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
|
|
88493
|
+
/* harmony export */ ReferenceElement: () => (/* reexport safe */ _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]),
|
|
88494
|
+
/* harmony export */ RequestBodyElement: () => (/* reexport safe */ _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]),
|
|
88495
|
+
/* harmony export */ ResponseElement: () => (/* reexport safe */ _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]),
|
|
88496
|
+
/* harmony export */ ResponsesElement: () => (/* reexport safe */ _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]),
|
|
88497
|
+
/* harmony export */ SchemaElement: () => (/* reexport safe */ _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"]),
|
|
88498
|
+
/* harmony export */ SecurityRequirementElement: () => (/* reexport safe */ _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]),
|
|
88499
|
+
/* harmony export */ SecuritySchemeElement: () => (/* reexport safe */ _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"]),
|
|
88500
|
+
/* harmony export */ ServerElement: () => (/* reexport safe */ _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"]),
|
|
88501
|
+
/* harmony export */ ServerVariableElement: () => (/* reexport safe */ _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]),
|
|
88502
|
+
/* harmony export */ TagElement: () => (/* reexport safe */ _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"]),
|
|
88503
|
+
/* harmony export */ XmlElement: () => (/* reexport safe */ _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"])
|
|
88504
|
+
/* harmony export */ });
|
|
88505
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
|
|
88506
|
+
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
|
|
88507
|
+
/* harmony import */ var _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8041);
|
|
88508
|
+
/* harmony import */ var _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68772);
|
|
88509
|
+
/* harmony import */ var _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16368);
|
|
88510
|
+
/* harmony import */ var _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13456);
|
|
88511
|
+
/* harmony import */ var _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67071);
|
|
88512
|
+
/* harmony import */ var _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(91210);
|
|
88513
|
+
/* harmony import */ var _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82753);
|
|
88514
|
+
/* harmony import */ var _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(10391);
|
|
88515
|
+
/* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80064);
|
|
88516
|
+
/* harmony import */ var _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(66035);
|
|
88517
|
+
/* harmony import */ var _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(10673);
|
|
88518
|
+
/* harmony import */ var _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64720);
|
|
88519
|
+
/* harmony import */ var _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(91784);
|
|
88520
|
+
/* harmony import */ var _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(73645);
|
|
88521
|
+
/* harmony import */ var _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(28308);
|
|
88522
|
+
/* harmony import */ var _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(14540);
|
|
88523
|
+
/* harmony import */ var _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(81793);
|
|
88524
|
+
/* harmony import */ var _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(54427);
|
|
88525
|
+
/* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(5849);
|
|
88526
|
+
/* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(43360);
|
|
88527
|
+
/* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(85652);
|
|
88528
|
+
/* harmony import */ var _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(36539);
|
|
88529
|
+
/* harmony import */ var _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71387);
|
|
88530
|
+
/* harmony import */ var _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(51193);
|
|
88531
|
+
/* harmony import */ var _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(77080);
|
|
88532
|
+
/* harmony import */ var _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(26385);
|
|
88533
|
+
/* harmony import */ var _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(87051);
|
|
88534
|
+
/* harmony import */ var _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(3719);
|
|
88535
|
+
/* harmony import */ var _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(93497);
|
|
88536
|
+
/* harmony import */ var _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(7929);
|
|
88537
|
+
/* harmony import */ var _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(24224);
|
|
88538
|
+
/* harmony import */ var _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(10931);
|
|
88539
|
+
/* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(56110);
|
|
88540
|
+
|
|
88541
|
+
|
|
88542
|
+
|
|
88543
|
+
/**
|
|
88544
|
+
* OpenAPI 3.1 specification elements.
|
|
88545
|
+
*/
|
|
88546
|
+
|
|
88547
|
+
|
|
88548
|
+
|
|
88549
|
+
|
|
88550
|
+
|
|
88551
|
+
|
|
88552
|
+
|
|
88553
|
+
|
|
88554
|
+
|
|
88555
|
+
|
|
88556
|
+
|
|
88557
|
+
|
|
88558
|
+
|
|
88559
|
+
|
|
88560
|
+
|
|
88561
|
+
|
|
88562
|
+
|
|
88563
|
+
|
|
88564
|
+
|
|
88565
|
+
|
|
88566
|
+
|
|
88567
|
+
|
|
88568
|
+
|
|
88569
|
+
|
|
88570
|
+
|
|
88571
|
+
|
|
88572
|
+
|
|
88573
|
+
|
|
88574
|
+
|
|
88575
|
+
|
|
88576
|
+
|
|
88577
|
+
|
|
88578
|
+
|
|
88579
|
+
/**
|
|
88580
|
+
* @public
|
|
88581
|
+
*/
|
|
88582
|
+
// Resolve specification to dereference $ref pointers
|
|
88583
|
+
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]);
|
|
88584
|
+
|
|
88585
|
+
// Extract fixed fields as list of { name, alias?, $visitor }
|
|
88586
|
+
const getFixedFields = fixedFieldsSpec => {
|
|
88587
|
+
return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
|
|
88588
|
+
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
|
|
88589
|
+
return {
|
|
88590
|
+
name,
|
|
88591
|
+
...fieldSpec
|
|
88592
|
+
};
|
|
88593
|
+
}
|
|
88594
|
+
return {
|
|
88595
|
+
name,
|
|
88596
|
+
$visitor: fieldSpec
|
|
88597
|
+
};
|
|
88598
|
+
});
|
|
88599
|
+
};
|
|
88600
|
+
|
|
88601
|
+
// OpenAPI 3.1 specification elements
|
|
88602
|
+
Object.defineProperty(_elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], 'fixedFields', {
|
|
88603
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
|
|
88604
|
+
enumerable: true
|
|
88605
|
+
});
|
|
88606
|
+
Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
|
|
88607
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
|
|
88608
|
+
enumerable: true
|
|
88609
|
+
});
|
|
88610
|
+
Object.defineProperty(_elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
|
|
88611
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
|
|
88612
|
+
enumerable: true
|
|
88613
|
+
});
|
|
88614
|
+
Object.defineProperty(_elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
|
|
88615
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
|
|
88616
|
+
enumerable: true
|
|
88617
|
+
});
|
|
88618
|
+
Object.defineProperty(_elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"], 'fixedFields', {
|
|
88619
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
|
|
88620
|
+
enumerable: true
|
|
88621
|
+
});
|
|
88622
|
+
Object.defineProperty(_elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"], 'fixedFields', {
|
|
88623
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
|
|
88624
|
+
enumerable: true
|
|
88625
|
+
});
|
|
88626
|
+
Object.defineProperty(_elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], 'fixedFields', {
|
|
88627
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
|
|
88628
|
+
enumerable: true
|
|
88629
|
+
});
|
|
88630
|
+
Object.defineProperty(_elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], 'fixedFields', {
|
|
88631
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
|
|
88632
|
+
enumerable: true
|
|
88633
|
+
});
|
|
88634
|
+
Object.defineProperty(_elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], 'fixedFields', {
|
|
88635
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
|
|
88636
|
+
enumerable: true
|
|
88637
|
+
});
|
|
88638
|
+
Object.defineProperty(_elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
|
|
88639
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
|
|
88640
|
+
enumerable: true
|
|
88641
|
+
});
|
|
88642
|
+
Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], 'fixedFields', {
|
|
88643
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
|
|
88644
|
+
enumerable: true
|
|
88645
|
+
});
|
|
88646
|
+
Object.defineProperty(_elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"], 'fixedFields', {
|
|
88647
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
|
|
88648
|
+
enumerable: true
|
|
88649
|
+
});
|
|
88650
|
+
Object.defineProperty(_elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
|
|
88651
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
|
|
88652
|
+
enumerable: true
|
|
88653
|
+
});
|
|
88654
|
+
Object.defineProperty(_elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
|
|
88655
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
|
|
88656
|
+
enumerable: true
|
|
88657
|
+
});
|
|
88658
|
+
Object.defineProperty(_elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"], 'fixedFields', {
|
|
88659
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
|
|
88660
|
+
enumerable: true
|
|
88661
|
+
});
|
|
88662
|
+
Object.defineProperty(_elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"], 'fixedFields', {
|
|
88663
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
|
|
88664
|
+
enumerable: true
|
|
88665
|
+
});
|
|
88666
|
+
Object.defineProperty(_elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], 'fixedFields', {
|
|
88667
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
|
|
88668
|
+
enumerable: true
|
|
88669
|
+
});
|
|
88670
|
+
Object.defineProperty(_elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
|
|
88671
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
|
|
88672
|
+
enumerable: true
|
|
88673
|
+
});
|
|
88674
|
+
Object.defineProperty(_elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
|
|
88675
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
|
|
88676
|
+
enumerable: true
|
|
88677
|
+
});
|
|
88678
|
+
Object.defineProperty(_elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"], 'fixedFields', {
|
|
88679
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
|
|
88680
|
+
enumerable: true
|
|
88681
|
+
});
|
|
88682
|
+
Object.defineProperty(_elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"], 'fixedFields', {
|
|
88683
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
|
|
88684
|
+
enumerable: true
|
|
88685
|
+
});
|
|
88686
|
+
Object.defineProperty(_elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"], 'fixedFields', {
|
|
88687
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
|
|
88688
|
+
enumerable: true
|
|
88689
|
+
});
|
|
88690
|
+
Object.defineProperty(_elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
|
|
88691
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
|
|
88692
|
+
enumerable: true
|
|
88693
|
+
});
|
|
88694
|
+
Object.defineProperty(_elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"], 'fixedFields', {
|
|
88695
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
|
|
88696
|
+
enumerable: true
|
|
88697
|
+
});
|
|
88698
|
+
Object.defineProperty(_elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"], 'fixedFields', {
|
|
88699
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
|
|
88700
|
+
enumerable: true
|
|
88701
|
+
});
|
|
88702
|
+
Object.defineProperty(_elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], 'fixedFields', {
|
|
88703
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
|
|
88704
|
+
enumerable: true
|
|
88705
|
+
});
|
|
88706
|
+
Object.defineProperty(_elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], 'fixedFields', {
|
|
88707
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
|
|
88708
|
+
enumerable: true
|
|
88709
|
+
});
|
|
88710
|
+
|
|
88711
|
+
|
|
86654
88712
|
/***/ },
|
|
86655
88713
|
|
|
86656
88714
|
/***/ 68201
|
|
@@ -102082,48 +104140,48 @@ var __webpack_exports__ = {};
|
|
|
102082
104140
|
"use strict";
|
|
102083
104141
|
__webpack_require__.r(__webpack_exports__);
|
|
102084
104142
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
102085
|
-
/* harmony export */ BundleError: () => (/* reexport safe */
|
|
102086
|
-
/* harmony export */ BundleStrategy: () => (/* reexport safe */
|
|
102087
|
-
/* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */
|
|
102088
|
-
/* harmony export */ DereferenceError: () => (/* reexport safe */
|
|
102089
|
-
/* harmony export */ DereferenceStrategy: () => (/* reexport safe */
|
|
102090
|
-
/* harmony export */ EvaluationElementIdError: () => (/* reexport safe */
|
|
102091
|
-
/* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */
|
|
102092
|
-
/* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */
|
|
102093
|
-
/* harmony export */ File: () => (/* reexport safe */
|
|
102094
|
-
/* harmony export */ HTTPResolver: () => (/* reexport safe */
|
|
102095
|
-
/* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */
|
|
102096
|
-
/* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */
|
|
102097
|
-
/* harmony export */ JsonSchemaURIError: () => (/* reexport safe */
|
|
102098
|
-
/* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */
|
|
102099
|
-
/* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */
|
|
102100
|
-
/* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */
|
|
102101
|
-
/* harmony export */ ParseError: () => (/* reexport safe */
|
|
102102
|
-
/* harmony export */ Parser: () => (/* reexport safe */
|
|
102103
|
-
/* harmony export */ ParserError: () => (/* reexport safe */
|
|
102104
|
-
/* harmony export */ PluginError: () => (/* reexport safe */
|
|
102105
|
-
/* harmony export */ Reference: () => (/* reexport safe */
|
|
102106
|
-
/* harmony export */ ReferenceSet: () => (/* reexport safe */
|
|
102107
|
-
/* harmony export */ ResolveError: () => (/* reexport safe */
|
|
102108
|
-
/* harmony export */ ResolveStrategy: () => (/* reexport safe */
|
|
102109
|
-
/* harmony export */ Resolver: () => (/* reexport safe */
|
|
102110
|
-
/* harmony export */ ResolverError: () => (/* reexport safe */
|
|
102111
|
-
/* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */
|
|
102112
|
-
/* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */
|
|
102113
|
-
/* harmony export */ UnmatchedParserError: () => (/* reexport safe */
|
|
102114
|
-
/* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */
|
|
102115
|
-
/* harmony export */ UnmatchedResolverError: () => (/* reexport safe */
|
|
102116
|
-
/* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */
|
|
102117
|
-
/* harmony export */ bundle: () => (/* reexport safe */
|
|
102118
|
-
/* harmony export */ dereference: () => (/* reexport safe */
|
|
102119
|
-
/* harmony export */ dereferenceApiDOM: () => (/* reexport safe */
|
|
102120
|
-
/* harmony export */ mergeOptions: () => (/* reexport safe */
|
|
102121
|
-
/* harmony export */ options: () => (/* reexport safe */
|
|
102122
|
-
/* harmony export */ parse: () => (/* reexport safe */
|
|
102123
|
-
/* harmony export */ readFile: () => (/* reexport safe */
|
|
102124
|
-
/* harmony export */ resolve: () => (/* reexport safe */
|
|
102125
|
-
/* harmony export */ resolveApiDOM: () => (/* reexport safe */
|
|
102126
|
-
/* harmony export */ url: () => (/* reexport safe */
|
|
104143
|
+
/* harmony export */ BundleError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.BundleError),
|
|
104144
|
+
/* harmony export */ BundleStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.BundleStrategy),
|
|
104145
|
+
/* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceAncestorLineage),
|
|
104146
|
+
/* harmony export */ DereferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceError),
|
|
104147
|
+
/* harmony export */ DereferenceStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.DereferenceStrategy),
|
|
104148
|
+
/* harmony export */ EvaluationElementIdError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationElementIdError),
|
|
104149
|
+
/* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchema$anchorError),
|
|
104150
|
+
/* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchemaUriError),
|
|
104151
|
+
/* harmony export */ File: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.File),
|
|
104152
|
+
/* harmony export */ HTTPResolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.HTTPResolver),
|
|
104153
|
+
/* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.InvalidJsonSchema$anchorError),
|
|
104154
|
+
/* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.JsonSchema$anchorError),
|
|
104155
|
+
/* harmony export */ JsonSchemaURIError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.JsonSchemaURIError),
|
|
104156
|
+
/* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumBundleDepthError),
|
|
104157
|
+
/* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumDereferenceDepthError),
|
|
104158
|
+
/* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.MaximumResolveDepthError),
|
|
104159
|
+
/* harmony export */ ParseError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ParseError),
|
|
104160
|
+
/* harmony export */ Parser: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Parser),
|
|
104161
|
+
/* harmony export */ ParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ParserError),
|
|
104162
|
+
/* harmony export */ PluginError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.PluginError),
|
|
104163
|
+
/* harmony export */ Reference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Reference),
|
|
104164
|
+
/* harmony export */ ReferenceSet: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ReferenceSet),
|
|
104165
|
+
/* harmony export */ ResolveError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolveError),
|
|
104166
|
+
/* harmony export */ ResolveStrategy: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolveStrategy),
|
|
104167
|
+
/* harmony export */ Resolver: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.Resolver),
|
|
104168
|
+
/* harmony export */ ResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.ResolverError),
|
|
104169
|
+
/* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedBundleStrategyError),
|
|
104170
|
+
/* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedDereferenceStrategyError),
|
|
104171
|
+
/* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedParserError),
|
|
104172
|
+
/* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolveStrategyError),
|
|
104173
|
+
/* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolverError),
|
|
104174
|
+
/* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.UnresolvableReferenceError),
|
|
104175
|
+
/* harmony export */ bundle: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.bundle),
|
|
104176
|
+
/* harmony export */ dereference: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.dereference),
|
|
104177
|
+
/* harmony export */ dereferenceApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.dereferenceApiDOM),
|
|
104178
|
+
/* harmony export */ mergeOptions: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.mergeOptions),
|
|
104179
|
+
/* harmony export */ options: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.options),
|
|
104180
|
+
/* harmony export */ parse: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.parse),
|
|
104181
|
+
/* harmony export */ readFile: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.readFile),
|
|
104182
|
+
/* harmony export */ resolve: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.resolve),
|
|
104183
|
+
/* harmony export */ resolveApiDOM: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.resolveApiDOM),
|
|
104184
|
+
/* harmony export */ url: () => (/* reexport safe */ _index_ts__WEBPACK_IMPORTED_MODULE_36__.url)
|
|
102127
104185
|
/* harmony export */ });
|
|
102128
104186
|
/* harmony import */ var _resolve_resolvers_file_index_node_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50365);
|
|
102129
104187
|
/* harmony import */ var _resolve_resolvers_http_axios_index_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16341);
|
|
@@ -102157,10 +104215,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
102157
104215
|
/* harmony import */ var _dereference_strategies_asyncapi_2_index_ts__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(12683);
|
|
102158
104216
|
/* harmony import */ var _dereference_strategies_arazzo_1_index_ts__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(82941);
|
|
102159
104217
|
/* harmony import */ var _dereference_strategies_overlay_1_index_ts__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(39782);
|
|
102160
|
-
/* harmony import */ var
|
|
102161
|
-
/* harmony import */ var
|
|
102162
|
-
/* harmony import */ var
|
|
102163
|
-
/* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(
|
|
104218
|
+
/* harmony import */ var _bundle_strategies_openapi_2_index_ts__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(11157);
|
|
104219
|
+
/* harmony import */ var _bundle_strategies_openapi_3_0_index_ts__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(12087);
|
|
104220
|
+
/* harmony import */ var _bundle_strategies_openapi_3_1_index_ts__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(16432);
|
|
104221
|
+
/* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(98363);
|
|
104222
|
+
/* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(33906);
|
|
104223
|
+
|
|
102164
104224
|
|
|
102165
104225
|
|
|
102166
104226
|
|
|
@@ -102196,7 +104256,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
102196
104256
|
|
|
102197
104257
|
|
|
102198
104258
|
|
|
102199
|
-
|
|
104259
|
+
_index_ts__WEBPACK_IMPORTED_MODULE_35__["default"].parse.parsers = [new _parse_parsers_openapi_json_2_index_ts__WEBPACK_IMPORTED_MODULE_9__["default"]({
|
|
102200
104260
|
allowEmpty: true,
|
|
102201
104261
|
sourceMap: false
|
|
102202
104262
|
}), new _parse_parsers_openapi_yaml_2_index_ts__WEBPACK_IMPORTED_MODULE_10__["default"]({
|
|
@@ -102244,14 +104304,14 @@ _index_ts__WEBPACK_IMPORTED_MODULE_34__["default"].parse.parsers = [new _parse_p
|
|
|
102244
104304
|
}), new _parse_parsers_binary_index_node_ts__WEBPACK_IMPORTED_MODULE_24__["default"]({
|
|
102245
104305
|
allowEmpty: true
|
|
102246
104306
|
})];
|
|
102247
|
-
|
|
104307
|
+
_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"]({
|
|
102248
104308
|
timeout: 5000,
|
|
102249
104309
|
redirects: 5,
|
|
102250
104310
|
withCredentials: false
|
|
102251
104311
|
})];
|
|
102252
|
-
|
|
102253
|
-
|
|
102254
|
-
|
|
104312
|
+
_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"]()];
|
|
104313
|
+
_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"]()];
|
|
104314
|
+
_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"]()];
|
|
102255
104315
|
|
|
102256
104316
|
})();
|
|
102257
104317
|
|