swagger-client 3.26.8 → 3.27.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/dist/swagger-client.browser.js +557 -412
- package/dist/swagger-client.browser.min.js +1 -1
- package/dist/swagger-client.browser.min.js.map +1 -1
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +35 -11
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +39 -30
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +322 -239
- package/es/resolver/strategies/openapi-3-1-apidom/resolve.js +18 -4
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +34 -10
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +37 -28
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +320 -237
- package/lib/resolver/strategies/openapi-3-1-apidom/resolve.js +17 -2
- package/package.json +5 -5
|
@@ -2192,11 +2192,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2192
2192
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46571);
|
|
2193
2193
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(68618);
|
|
2194
2194
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1667);
|
|
2195
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(87024);
|
|
2195
2196
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31387);
|
|
2196
2197
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12349);
|
|
2197
2198
|
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(57016);
|
|
2198
2199
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41544);
|
|
2199
|
-
/* harmony import */ var
|
|
2200
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(66648);
|
|
2200
2201
|
/* harmony import */ var _visitors_dereference_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7882);
|
|
2201
2202
|
/* harmony import */ var _visitors_parameters_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53628);
|
|
2202
2203
|
/* harmony import */ var _visitors_properties_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85001);
|
|
@@ -2214,7 +2215,6 @@ const visitAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__.visit[S
|
|
|
2214
2215
|
const mergeAllVisitorsAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__.mergeAll[Symbol.for('nodejs.util.promisify.custom')];
|
|
2215
2216
|
const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_6__["default"].compose({
|
|
2216
2217
|
props: {
|
|
2217
|
-
useCircularStructures: true,
|
|
2218
2218
|
allowMetaPatches: false,
|
|
2219
2219
|
parameterMacro: null,
|
|
2220
2220
|
modelPropertyMacro: null,
|
|
@@ -2222,7 +2222,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2222
2222
|
ancestors: null
|
|
2223
2223
|
},
|
|
2224
2224
|
init({
|
|
2225
|
-
useCircularStructures = this.useCircularStructures,
|
|
2226
2225
|
allowMetaPatches = this.allowMetaPatches,
|
|
2227
2226
|
parameterMacro = this.parameterMacro,
|
|
2228
2227
|
modelPropertyMacro = this.modelPropertyMacro,
|
|
@@ -2230,7 +2229,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2230
2229
|
ancestors = []
|
|
2231
2230
|
} = {}) {
|
|
2232
2231
|
this.name = 'openapi-3-1-swagger-client';
|
|
2233
|
-
this.useCircularStructures = useCircularStructures;
|
|
2234
2232
|
this.allowMetaPatches = allowMetaPatches;
|
|
2235
2233
|
this.parameterMacro = parameterMacro;
|
|
2236
2234
|
this.modelPropertyMacro = modelPropertyMacro;
|
|
@@ -2241,17 +2239,32 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2241
2239
|
async dereference(file, options) {
|
|
2242
2240
|
const visitors = [];
|
|
2243
2241
|
const namespace = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_7__.createNamespace)(_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_8__["default"]);
|
|
2244
|
-
const
|
|
2242
|
+
const immutableRefSet = options.dereference.refSet ?? (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_9__["default"])();
|
|
2243
|
+
const mutableRefsSet = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_9__["default"])();
|
|
2244
|
+
let refSet = immutableRefSet;
|
|
2245
2245
|
let reference;
|
|
2246
|
-
if (!
|
|
2246
|
+
if (!immutableRefSet.has(file.uri)) {
|
|
2247
2247
|
reference = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__["default"])({
|
|
2248
2248
|
uri: file.uri,
|
|
2249
2249
|
value: file.parseResult
|
|
2250
2250
|
});
|
|
2251
|
-
|
|
2251
|
+
immutableRefSet.add(reference);
|
|
2252
2252
|
} else {
|
|
2253
2253
|
// pre-computed refSet was provided as configuration option
|
|
2254
|
-
reference =
|
|
2254
|
+
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
/**
|
|
2258
|
+
* Clone refSet due the dereferencing process being mutable.
|
|
2259
|
+
* We don't want to mutate the original refSet and the references.
|
|
2260
|
+
*/
|
|
2261
|
+
if (options.dereference.immutable) {
|
|
2262
|
+
immutableRefSet.refs.map(ref => (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__["default"])({
|
|
2263
|
+
...ref,
|
|
2264
|
+
value: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_11__.cloneDeep)(ref.value)
|
|
2265
|
+
})).forEach(ref => mutableRefsSet.add(ref));
|
|
2266
|
+
reference = mutableRefsSet.find(ref => ref.uri === file.uri);
|
|
2267
|
+
refSet = mutableRefsSet;
|
|
2255
2268
|
}
|
|
2256
2269
|
|
|
2257
2270
|
// create main dereference visitor
|
|
@@ -2259,7 +2272,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2259
2272
|
reference,
|
|
2260
2273
|
namespace,
|
|
2261
2274
|
options,
|
|
2262
|
-
useCircularStructures: this.useCircularStructures,
|
|
2263
2275
|
allowMetaPatches: this.allowMetaPatches,
|
|
2264
2276
|
ancestors: this.ancestors
|
|
2265
2277
|
});
|
|
@@ -2293,20 +2305,33 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2293
2305
|
|
|
2294
2306
|
// establish root visitor by visitor merging
|
|
2295
2307
|
const rootVisitor = mergeAllVisitorsAsync(visitors, {
|
|
2296
|
-
nodeTypeGetter:
|
|
2308
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__.getNodeType
|
|
2297
2309
|
});
|
|
2298
2310
|
const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
|
|
2299
|
-
keyMap:
|
|
2300
|
-
nodeTypeGetter:
|
|
2311
|
+
keyMap: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__.keyMap,
|
|
2312
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__.getNodeType
|
|
2301
2313
|
});
|
|
2302
2314
|
|
|
2303
2315
|
/**
|
|
2304
|
-
*
|
|
2316
|
+
* If immutable option is set, replay refs from the refSet.
|
|
2317
|
+
*/
|
|
2318
|
+
if (options.dereference.immutable) {
|
|
2319
|
+
mutableRefsSet.refs.filter(ref => ref.uri.startsWith('immutable://')).map(ref => (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__["default"])({
|
|
2320
|
+
...ref,
|
|
2321
|
+
uri: ref.uri.replace(/^immutable:\/\//, '')
|
|
2322
|
+
})).forEach(ref => immutableRefSet.add(ref));
|
|
2323
|
+
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
2324
|
+
refSet = immutableRefSet;
|
|
2325
|
+
}
|
|
2326
|
+
|
|
2327
|
+
/**
|
|
2328
|
+
* Release all memory if this refSet was not provided as an configuration option.
|
|
2305
2329
|
* If provided as configuration option, then provider is responsible for cleanup.
|
|
2306
2330
|
*/
|
|
2307
2331
|
if (options.dereference.refSet === null) {
|
|
2308
|
-
|
|
2332
|
+
immutableRefSet.clean();
|
|
2309
2333
|
}
|
|
2334
|
+
mutableRefsSet.clean();
|
|
2310
2335
|
return dereferencedElement;
|
|
2311
2336
|
}
|
|
2312
2337
|
}
|
|
@@ -2406,11 +2431,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2406
2431
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2407
2432
|
/* harmony export */ });
|
|
2408
2433
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33501);
|
|
2409
|
-
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
2410
|
-
/* harmony import */ var
|
|
2411
|
-
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15461);
|
|
2412
|
-
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3117);
|
|
2413
|
-
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(70281);
|
|
2434
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15461);
|
|
2435
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70281);
|
|
2414
2436
|
/* harmony import */ var _utils_compose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79170);
|
|
2415
2437
|
/* harmony import */ var _utils_to_path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12201);
|
|
2416
2438
|
|
|
@@ -2440,48 +2462,57 @@ const AllOfVisitor = (0,_utils_compose_js__WEBPACK_IMPORTED_MODULE_0__["default"
|
|
|
2440
2462
|
|
|
2441
2463
|
// remove allOf keyword if empty
|
|
2442
2464
|
if (schemaElement.allOf.isEmpty) {
|
|
2443
|
-
|
|
2465
|
+
schemaElement.remove('allOf');
|
|
2466
|
+
return undefined;
|
|
2444
2467
|
}
|
|
2445
2468
|
|
|
2446
2469
|
// collect errors if allOf keyword contains anything else than Schema Object
|
|
2447
|
-
const includesSchemaElementOnly = schemaElement.allOf.content.every(
|
|
2470
|
+
const includesSchemaElementOnly = schemaElement.allOf.content.every(_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__.isSchemaElement);
|
|
2448
2471
|
if (!includesSchemaElementOnly) {
|
|
2449
2472
|
const error = new TypeError('Elements in allOf must be objects');
|
|
2450
2473
|
error.fullPath = [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])([...ancestors, parent, schemaElement]), 'allOf'];
|
|
2451
2474
|
this.options.dereference.dereferenceOpts?.errors?.push?.(error);
|
|
2452
2475
|
return undefined;
|
|
2453
2476
|
}
|
|
2454
|
-
|
|
2477
|
+
while (schemaElement.hasKey('allOf')) {
|
|
2478
|
+
const {
|
|
2479
|
+
allOf
|
|
2480
|
+
} = schemaElement;
|
|
2481
|
+
schemaElement.remove('allOf');
|
|
2482
|
+
const allOfMerged = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"].all([...allOf.content, schemaElement]);
|
|
2455
2483
|
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2484
|
+
/**
|
|
2485
|
+
* If there was not an original $$ref value, make sure to remove
|
|
2486
|
+
* any $$ref value that may exist from the result of `allOf` merges.
|
|
2487
|
+
*/
|
|
2488
|
+
if (!schemaElement.hasKey('$$ref')) {
|
|
2489
|
+
allOfMerged.remove('$$ref');
|
|
2490
|
+
}
|
|
2463
2491
|
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2492
|
+
/**
|
|
2493
|
+
* If there was an example keyword in the original schema,
|
|
2494
|
+
* keep it instead of merging with example from other schema.
|
|
2495
|
+
*/
|
|
2496
|
+
if (schemaElement.hasKey('example')) {
|
|
2497
|
+
const member = allOfMerged.getMember('example');
|
|
2498
|
+
if (member) {
|
|
2499
|
+
member.value = schemaElement.get('example');
|
|
2500
|
+
}
|
|
2501
|
+
}
|
|
2472
2502
|
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2503
|
+
/**
|
|
2504
|
+
* If there was an examples keyword in the original schema,
|
|
2505
|
+
* keep it instead of merging with examples from other schema.
|
|
2506
|
+
*/
|
|
2507
|
+
if (schemaElement.hasKey('examples')) {
|
|
2508
|
+
const member = allOfMerged.getMember('examples');
|
|
2509
|
+
if (member) {
|
|
2510
|
+
member.value = schemaElement.get('examples');
|
|
2511
|
+
}
|
|
2512
|
+
}
|
|
2513
|
+
schemaElement.content = allOfMerged.content;
|
|
2480
2514
|
}
|
|
2481
|
-
|
|
2482
|
-
// remove allOf keyword after the merge
|
|
2483
|
-
mergedSchemaElement.remove('allOf');
|
|
2484
|
-
return mergedSchemaElement;
|
|
2515
|
+
return undefined;
|
|
2485
2516
|
}
|
|
2486
2517
|
}
|
|
2487
2518
|
}
|
|
@@ -2500,26 +2531,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2500
2531
|
/* harmony export */ });
|
|
2501
2532
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46571);
|
|
2502
2533
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42209);
|
|
2503
|
-
/* harmony import */ var
|
|
2504
|
-
/* harmony import */ var
|
|
2505
|
-
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(
|
|
2534
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9999);
|
|
2535
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(33501);
|
|
2536
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(44824);
|
|
2537
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(87024);
|
|
2506
2538
|
/* harmony import */ var _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(98219);
|
|
2507
2539
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(85013);
|
|
2508
2540
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(3117);
|
|
2509
|
-
/* harmony import */ var
|
|
2510
|
-
/* harmony import */ var
|
|
2511
|
-
/* harmony import */ var
|
|
2512
|
-
/* harmony import */ var
|
|
2513
|
-
/* harmony import */ var
|
|
2541
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(70281);
|
|
2542
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(66648);
|
|
2543
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85270);
|
|
2544
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18316);
|
|
2545
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83748);
|
|
2514
2546
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(60503);
|
|
2515
|
-
/* harmony import */ var
|
|
2516
|
-
/* harmony import */ var
|
|
2517
|
-
/* harmony import */ var
|
|
2518
|
-
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$
|
|
2519
|
-
/* harmony import */ var
|
|
2520
|
-
/* harmony import */ var
|
|
2521
|
-
/* harmony import */ var
|
|
2522
|
-
/* harmony import */ var
|
|
2547
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(15767);
|
|
2548
|
+
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(32346);
|
|
2549
|
+
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(51776);
|
|
2550
|
+
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$anchor__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(46432);
|
|
2551
|
+
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_uri__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(16129);
|
|
2552
|
+
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_uri__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(78311);
|
|
2553
|
+
/* harmony import */ var _utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(12201);
|
|
2554
|
+
/* harmony import */ var _utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(17381);
|
|
2523
2555
|
/* harmony import */ var _specmap_lib_refs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7247);
|
|
2524
2556
|
/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21806);
|
|
2525
2557
|
/* eslint-disable camelcase */
|
|
@@ -2542,13 +2574,7 @@ const visitAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_2__.visit[S
|
|
|
2542
2574
|
|
|
2543
2575
|
// initialize element identity manager
|
|
2544
2576
|
const identityManager = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_3__.IdentityManager)();
|
|
2545
|
-
|
|
2546
|
-
/**
|
|
2547
|
-
* Predicate for detecting if element was created by merging referencing
|
|
2548
|
-
* element with particular element identity with a referenced element.
|
|
2549
|
-
*/
|
|
2550
|
-
const wasReferencedBy = referencingElement => element => element.meta.hasKey('ref-referencing-element-id') && element.meta.get('ref-referencing-element-id').equals((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(identityManager.identify(referencingElement)));
|
|
2551
|
-
const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_5__["default"].compose({
|
|
2577
|
+
const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_4__["default"].compose({
|
|
2552
2578
|
props: {
|
|
2553
2579
|
useCircularStructures: true,
|
|
2554
2580
|
allowMetaPatches: false,
|
|
@@ -2566,19 +2592,13 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2566
2592
|
methods: {
|
|
2567
2593
|
async ReferenceElement(referencingElement, key, parent, path, ancestors) {
|
|
2568
2594
|
try {
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
// skip already identified cycled Path Item Objects
|
|
2572
|
-
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_6__.includesClasses)(['cycle'], referencingElement.$ref)) {
|
|
2573
|
-
return false;
|
|
2574
|
-
}
|
|
2575
|
-
|
|
2576
|
-
// detect possible cycle in traversal and avoid it
|
|
2577
|
-
if (ancestorsLineage.includesCycle(referencingElement)) {
|
|
2595
|
+
// skip current referencing element as it's already been access
|
|
2596
|
+
if (this.indirections.includes(referencingElement)) {
|
|
2578
2597
|
return false;
|
|
2579
2598
|
}
|
|
2580
|
-
const
|
|
2581
|
-
const
|
|
2599
|
+
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2600
|
+
const retrievalURI = this.toBaseURI((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref));
|
|
2601
|
+
const isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
2582
2602
|
const isExternalReference = !isInternalReference;
|
|
2583
2603
|
|
|
2584
2604
|
// ignore resolving internal Reference Objects
|
|
@@ -2589,18 +2609,19 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2589
2609
|
if (!this.options.resolve.external && isExternalReference) {
|
|
2590
2610
|
return false;
|
|
2591
2611
|
}
|
|
2592
|
-
const reference = await this.toReference((0,
|
|
2593
|
-
const $refBaseURI =
|
|
2612
|
+
const reference = await this.toReference((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref));
|
|
2613
|
+
const $refBaseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref));
|
|
2594
2614
|
this.indirections.push(referencingElement);
|
|
2595
|
-
const jsonPointer = (0,
|
|
2615
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
2596
2616
|
|
|
2597
2617
|
// possibly non-semantic fragment
|
|
2598
|
-
let referencedElement = (0,
|
|
2618
|
+
let referencedElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__["default"])(jsonPointer, reference.value.result);
|
|
2619
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2599
2620
|
|
|
2600
2621
|
// applying semantics to a fragment
|
|
2601
|
-
if ((0,
|
|
2602
|
-
const referencedElementType = (0,
|
|
2603
|
-
const cacheKey = `${referencedElementType}-${(0,
|
|
2622
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isPrimitiveElement)(referencedElement)) {
|
|
2623
|
+
const referencedElementType = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.meta.get('referenced-element'));
|
|
2624
|
+
const cacheKey = `${referencedElementType}-${(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(identityManager.identify(referencedElement))}`;
|
|
2604
2625
|
if (this.refractCache.has(cacheKey)) {
|
|
2605
2626
|
referencedElement = this.refractCache.get(cacheKey);
|
|
2606
2627
|
} else if ((0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_10__.isReferenceLikeElement)(referencedElement)) {
|
|
@@ -2617,109 +2638,127 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2617
2638
|
}
|
|
2618
2639
|
|
|
2619
2640
|
// detect direct or indirect reference
|
|
2620
|
-
if (
|
|
2621
|
-
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive
|
|
2641
|
+
if (referencingElement === referencedElement) {
|
|
2642
|
+
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive Reference Object detected');
|
|
2622
2643
|
}
|
|
2623
2644
|
|
|
2624
2645
|
// detect maximum depth of dereferencing
|
|
2625
2646
|
if (this.indirections.length > this.options.dereference.maxDepth) {
|
|
2626
2647
|
throw new _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_13__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
|
|
2627
2648
|
}
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2649
|
+
|
|
2650
|
+
// detect second deep dive into the same fragment and avoid it
|
|
2651
|
+
if (ancestorsLineage.includes(referencedElement)) {
|
|
2652
|
+
reference.refSet.circular = true;
|
|
2653
|
+
if (this.options.dereference.circular === 'error') {
|
|
2654
|
+
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Circular reference detected');
|
|
2655
|
+
} else if (this.options.dereference.circular === 'replace') {
|
|
2656
|
+
const refElement = new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.RefElement(referencedElement.id, {
|
|
2657
|
+
type: 'reference',
|
|
2658
|
+
uri: reference.uri,
|
|
2659
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref),
|
|
2660
|
+
baseURI: $refBaseURI,
|
|
2661
|
+
referencingElement
|
|
2662
|
+
});
|
|
2663
|
+
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
2664
|
+
const replacement = replacer(refElement);
|
|
2665
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
2666
|
+
parent.value = replacement; // eslint-disable-line no-param-reassign
|
|
2667
|
+
} else if (Array.isArray(parent)) {
|
|
2668
|
+
parent[key] = replacement; // eslint-disable-line no-param-reassign
|
|
2638
2669
|
}
|
|
2639
|
-
|
|
2640
|
-
return false;
|
|
2670
|
+
return !parent ? replacement : false;
|
|
2641
2671
|
}
|
|
2642
2672
|
}
|
|
2643
2673
|
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2674
|
+
/**
|
|
2675
|
+
* Dive deep into the fragment.
|
|
2676
|
+
*
|
|
2677
|
+
* Cases to consider:
|
|
2678
|
+
* 1. We're crossing document boundary
|
|
2679
|
+
* 2. Fragment is from non-root document
|
|
2680
|
+
* 3. Fragment is a Reference Object. We need to follow it to get the eventual value
|
|
2681
|
+
* 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
|
|
2682
|
+
*/
|
|
2683
|
+
const isNonRootDocument = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
2684
|
+
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
2685
|
+
if ((isExternalReference || isNonRootDocument || (0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isReferenceElement)(referencedElement) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
2686
|
+
// append referencing reference to ancestors lineage
|
|
2687
|
+
directAncestors.add(referencingElement);
|
|
2688
|
+
const visitor = OpenApi3_1SwaggerClientDereferenceVisitor({
|
|
2689
|
+
reference,
|
|
2690
|
+
namespace: this.namespace,
|
|
2691
|
+
indirections: [...this.indirections],
|
|
2692
|
+
options: this.options,
|
|
2693
|
+
refractCache: this.refractCache,
|
|
2694
|
+
ancestors: ancestorsLineage,
|
|
2695
|
+
allowMetaPatches: this.allowMetaPatches,
|
|
2696
|
+
useCircularStructures: this.useCircularStructures,
|
|
2697
|
+
basePath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, referencingElement]), '$ref']
|
|
2698
|
+
});
|
|
2699
|
+
referencedElement = await visitAsync(referencedElement, visitor, {
|
|
2700
|
+
keyMap: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.keyMap,
|
|
2701
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.getNodeType
|
|
2702
|
+
});
|
|
2662
2703
|
|
|
2663
|
-
|
|
2664
|
-
|
|
2704
|
+
// remove referencing reference from ancestors lineage
|
|
2705
|
+
directAncestors.delete(referencingElement);
|
|
2706
|
+
}
|
|
2665
2707
|
this.indirections.pop();
|
|
2666
|
-
const
|
|
2667
|
-
const copy = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.cloneShallow)(refedElement);
|
|
2668
|
-
|
|
2669
|
-
// annotate fragment with info about original Reference element
|
|
2670
|
-
copy.setMetaProperty('ref-fields', {
|
|
2671
|
-
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref),
|
|
2672
|
-
description: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.description),
|
|
2673
|
-
summary: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.summary)
|
|
2674
|
-
});
|
|
2675
|
-
// annotate fragment with info about origin
|
|
2676
|
-
copy.setMetaProperty('ref-origin', reference.uri);
|
|
2677
|
-
// annotate fragment with info about referencing element
|
|
2678
|
-
copy.setMetaProperty('ref-referencing-element-id', (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.cloneDeep)(identityManager.identify(referencingElement)));
|
|
2708
|
+
const mergedElement = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneShallow)(referencedElement);
|
|
2679
2709
|
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
}
|
|
2710
|
+
// annotate fragment with info about original Reference element
|
|
2711
|
+
mergedElement.setMetaProperty('ref-fields', {
|
|
2712
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref),
|
|
2713
|
+
description: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.description),
|
|
2714
|
+
summary: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.summary)
|
|
2715
|
+
});
|
|
2716
|
+
// annotate fragment with info about origin
|
|
2717
|
+
mergedElement.setMetaProperty('ref-origin', reference.uri);
|
|
2718
|
+
// annotate fragment with info about referencing element
|
|
2719
|
+
mergedElement.setMetaProperty('ref-referencing-element-id', (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(identityManager.identify(referencingElement)));
|
|
2691
2720
|
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
copy.set('$$ref', baseURI);
|
|
2698
|
-
}
|
|
2721
|
+
// override description and summary (outer has higher priority then inner)
|
|
2722
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isObjectElement)(referencedElement)) {
|
|
2723
|
+
if (referencingElement.hasKey('description') && 'description' in referencedElement) {
|
|
2724
|
+
mergedElement.remove('description');
|
|
2725
|
+
mergedElement.set('description', referencingElement.get('description'));
|
|
2699
2726
|
}
|
|
2700
|
-
|
|
2701
|
-
|
|
2727
|
+
if (referencingElement.hasKey('summary') && 'summary' in referencedElement) {
|
|
2728
|
+
mergedElement.remove('summary');
|
|
2729
|
+
mergedElement.set('summary', referencingElement.get('summary'));
|
|
2730
|
+
}
|
|
2731
|
+
}
|
|
2702
2732
|
|
|
2703
|
-
//
|
|
2704
|
-
if (
|
|
2705
|
-
|
|
2706
|
-
if (
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
parent[key] = replaceWith; // eslint-disable-line no-param-reassign
|
|
2733
|
+
// apply meta patches
|
|
2734
|
+
if (this.allowMetaPatches && (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isObjectElement)(mergedElement)) {
|
|
2735
|
+
// apply meta patch only when not already applied
|
|
2736
|
+
if (!mergedElement.hasKey('$$ref')) {
|
|
2737
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI);
|
|
2738
|
+
mergedElement.set('$$ref', baseURI);
|
|
2710
2739
|
}
|
|
2711
|
-
return false;
|
|
2712
2740
|
}
|
|
2713
2741
|
|
|
2714
|
-
|
|
2715
|
-
|
|
2742
|
+
/**
|
|
2743
|
+
* Transclude referencing element with merged referenced element.
|
|
2744
|
+
*/
|
|
2745
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
2746
|
+
parent.value = mergedElement; // eslint-disable-line no-param-reassign
|
|
2747
|
+
} else if (Array.isArray(parent)) {
|
|
2748
|
+
parent[key] = mergedElement; // eslint-disable-line no-param-reassign
|
|
2749
|
+
}
|
|
2750
|
+
|
|
2751
|
+
/**
|
|
2752
|
+
* We're at the root of the tree, so we're just replacing the entire tree.
|
|
2753
|
+
*/
|
|
2754
|
+
return !parent ? mergedElement : false;
|
|
2716
2755
|
} catch (error) {
|
|
2717
|
-
const rootCause = (0,
|
|
2756
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
2718
2757
|
const wrappedError = wrapError(rootCause, {
|
|
2719
2758
|
baseDoc: this.reference.uri,
|
|
2720
|
-
$ref: (0,
|
|
2721
|
-
pointer: (0,
|
|
2722
|
-
fullPath: this.basePath ?? [...(0,
|
|
2759
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref),
|
|
2760
|
+
pointer: (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref)),
|
|
2761
|
+
fullPath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, referencingElement]), '$ref']
|
|
2723
2762
|
});
|
|
2724
2763
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
2725
2764
|
return undefined;
|
|
@@ -2727,24 +2766,23 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2727
2766
|
},
|
|
2728
2767
|
async PathItemElement(pathItemElement, key, parent, path, ancestors) {
|
|
2729
2768
|
try {
|
|
2730
|
-
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2731
|
-
|
|
2732
2769
|
// ignore PathItemElement without $ref field
|
|
2733
|
-
if (!(0,
|
|
2770
|
+
if (!(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(pathItemElement.$ref)) {
|
|
2734
2771
|
return undefined;
|
|
2735
2772
|
}
|
|
2736
2773
|
|
|
2737
|
-
// skip
|
|
2738
|
-
if (
|
|
2774
|
+
// skip current referencing element as it's already been access
|
|
2775
|
+
if (this.indirections.includes(pathItemElement)) {
|
|
2739
2776
|
return false;
|
|
2740
2777
|
}
|
|
2741
2778
|
|
|
2742
|
-
//
|
|
2743
|
-
if (
|
|
2779
|
+
// skip already identified cycled Path Item Objects
|
|
2780
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.includesClasses)(['cycle'], pathItemElement.$ref)) {
|
|
2744
2781
|
return false;
|
|
2745
2782
|
}
|
|
2746
|
-
const
|
|
2747
|
-
const
|
|
2783
|
+
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2784
|
+
const retrievalURI = this.toBaseURI((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref));
|
|
2785
|
+
const isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
2748
2786
|
const isExternalReference = !isInternalReference;
|
|
2749
2787
|
|
|
2750
2788
|
// ignore resolving internal Path Item Elements
|
|
@@ -2755,17 +2793,18 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2755
2793
|
if (!this.options.resolve.external && isExternalReference) {
|
|
2756
2794
|
return undefined;
|
|
2757
2795
|
}
|
|
2758
|
-
const reference = await this.toReference((0,
|
|
2759
|
-
const $refBaseURI =
|
|
2796
|
+
const reference = await this.toReference((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref));
|
|
2797
|
+
const $refBaseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref));
|
|
2760
2798
|
this.indirections.push(pathItemElement);
|
|
2761
|
-
const jsonPointer = (0,
|
|
2799
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
2762
2800
|
|
|
2763
2801
|
// possibly non-semantic referenced element
|
|
2764
|
-
let referencedElement = (0,
|
|
2802
|
+
let referencedElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__["default"])(jsonPointer, reference.value.result);
|
|
2803
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2765
2804
|
|
|
2766
2805
|
// applying semantics to a referenced element
|
|
2767
|
-
if ((0,
|
|
2768
|
-
const cacheKey = `
|
|
2806
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isPrimitiveElement)(referencedElement)) {
|
|
2807
|
+
const cacheKey = `path-item-${(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(identityManager.identify(referencedElement))}`;
|
|
2769
2808
|
if (this.refractCache.has(cacheKey)) {
|
|
2770
2809
|
referencedElement = this.refractCache.get(cacheKey);
|
|
2771
2810
|
} else {
|
|
@@ -2775,102 +2814,127 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2775
2814
|
}
|
|
2776
2815
|
|
|
2777
2816
|
// detect direct or indirect reference
|
|
2778
|
-
if (
|
|
2779
|
-
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive
|
|
2817
|
+
if (pathItemElement === referencedElement) {
|
|
2818
|
+
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive Path Item Object reference detected');
|
|
2780
2819
|
}
|
|
2781
2820
|
|
|
2782
2821
|
// detect maximum depth of dereferencing
|
|
2783
2822
|
if (this.indirections.length > this.options.dereference.maxDepth) {
|
|
2784
2823
|
throw new _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_13__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
|
|
2785
2824
|
}
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2825
|
+
|
|
2826
|
+
// detect second deep dive into the same fragment and avoid it
|
|
2827
|
+
if (ancestorsLineage.includes(referencedElement)) {
|
|
2828
|
+
reference.refSet.circular = true;
|
|
2829
|
+
if (this.options.dereference.circular === 'error') {
|
|
2830
|
+
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Circular reference detected');
|
|
2831
|
+
} else if (this.options.dereference.circular === 'replace') {
|
|
2832
|
+
const refElement = new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.RefElement(referencedElement.id, {
|
|
2833
|
+
type: 'path-item',
|
|
2834
|
+
uri: reference.uri,
|
|
2835
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref),
|
|
2836
|
+
baseURI: $refBaseURI,
|
|
2837
|
+
referencingElement: pathItemElement
|
|
2838
|
+
});
|
|
2839
|
+
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
2840
|
+
const replacement = replacer(refElement);
|
|
2841
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
2842
|
+
parent.value = replacement; // eslint-disable-line no-param-reassign
|
|
2843
|
+
} else if (Array.isArray(parent)) {
|
|
2844
|
+
parent[key] = replacement; // eslint-disable-line no-param-reassign
|
|
2796
2845
|
}
|
|
2797
|
-
|
|
2798
|
-
return false;
|
|
2846
|
+
return !parent ? replacement : false;
|
|
2799
2847
|
}
|
|
2800
2848
|
}
|
|
2801
2849
|
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2850
|
+
/**
|
|
2851
|
+
* Dive deep into the fragment.
|
|
2852
|
+
*
|
|
2853
|
+
* Cases to consider:
|
|
2854
|
+
* 1. We're crossing document boundary
|
|
2855
|
+
* 2. Fragment is from non-root document
|
|
2856
|
+
* 3. Fragment is a Path Item Object with $ref field. We need to follow it to get the eventual value
|
|
2857
|
+
* 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
|
|
2858
|
+
*/
|
|
2859
|
+
const isNonRootDocument = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
2860
|
+
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
2861
|
+
if ((isExternalReference || isNonRootDocument || (0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement) && (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
2862
|
+
// append referencing schema to ancestors lineage
|
|
2863
|
+
directAncestors.add(pathItemElement);
|
|
2864
|
+
|
|
2865
|
+
// dive deep into the referenced element
|
|
2866
|
+
const visitor = OpenApi3_1SwaggerClientDereferenceVisitor({
|
|
2867
|
+
reference,
|
|
2868
|
+
namespace: this.namespace,
|
|
2869
|
+
indirections: [...this.indirections],
|
|
2870
|
+
options: this.options,
|
|
2871
|
+
ancestors: ancestorsLineage,
|
|
2872
|
+
allowMetaPatches: this.allowMetaPatches,
|
|
2873
|
+
useCircularStructures: this.useCircularStructures,
|
|
2874
|
+
basePath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, pathItemElement]), '$ref']
|
|
2875
|
+
});
|
|
2876
|
+
referencedElement = await visitAsync(referencedElement, visitor, {
|
|
2877
|
+
keyMap: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.keyMap,
|
|
2878
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.getNodeType
|
|
2879
|
+
});
|
|
2820
2880
|
|
|
2821
|
-
|
|
2822
|
-
|
|
2881
|
+
// remove referencing schema from ancestors lineage
|
|
2882
|
+
directAncestors.delete(pathItemElement);
|
|
2883
|
+
}
|
|
2823
2884
|
this.indirections.pop();
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2885
|
+
|
|
2886
|
+
/**
|
|
2887
|
+
* Creating a new version of Path Item by merging fields from referenced Path Item with referencing one.
|
|
2888
|
+
*/
|
|
2889
|
+
if ((0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement)) {
|
|
2890
|
+
const mergedElement = new _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_11__.PathItemElement([...referencedElement.content], (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(referencedElement.meta), (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(referencedElement.attributes));
|
|
2827
2891
|
// existing keywords from referencing PathItemElement overrides ones from referenced element
|
|
2828
2892
|
pathItemElement.forEach((value, keyElement, item) => {
|
|
2829
|
-
mergedElement.remove((0,
|
|
2893
|
+
mergedElement.remove((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(keyElement));
|
|
2830
2894
|
mergedElement.content.push(item);
|
|
2831
2895
|
});
|
|
2832
2896
|
mergedElement.remove('$ref');
|
|
2833
2897
|
|
|
2834
2898
|
// annotate referenced element with info about original referencing element
|
|
2835
2899
|
mergedElement.setMetaProperty('ref-fields', {
|
|
2836
|
-
$ref: (0,
|
|
2900
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref)
|
|
2837
2901
|
});
|
|
2838
2902
|
// annotate referenced element with info about origin
|
|
2839
2903
|
mergedElement.setMetaProperty('ref-origin', reference.uri);
|
|
2840
2904
|
// annotate fragment with info about referencing element
|
|
2841
|
-
mergedElement.setMetaProperty('ref-referencing-element-id', (0,
|
|
2905
|
+
mergedElement.setMetaProperty('ref-referencing-element-id', (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(identityManager.identify(pathItemElement)));
|
|
2842
2906
|
|
|
2843
2907
|
// apply meta patches
|
|
2844
2908
|
if (this.allowMetaPatches) {
|
|
2845
2909
|
// apply meta patch only when not already applied
|
|
2846
2910
|
if (typeof mergedElement.get('$$ref') === 'undefined') {
|
|
2847
|
-
const baseURI =
|
|
2911
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI);
|
|
2848
2912
|
mergedElement.set('$$ref', baseURI);
|
|
2849
2913
|
}
|
|
2850
2914
|
}
|
|
2851
|
-
|
|
2852
|
-
}
|
|
2915
|
+
referencedElement = mergedElement;
|
|
2916
|
+
}
|
|
2853
2917
|
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
}
|
|
2862
|
-
return false;
|
|
2918
|
+
/**
|
|
2919
|
+
* Transclude referencing element with merged referenced element.
|
|
2920
|
+
*/
|
|
2921
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
2922
|
+
parent.value = referencedElement; // eslint-disable-line no-param-reassign
|
|
2923
|
+
} else if (Array.isArray(parent)) {
|
|
2924
|
+
parent[key] = referencedElement; // eslint-disable-line no-param-reassign
|
|
2863
2925
|
}
|
|
2864
2926
|
|
|
2865
|
-
|
|
2866
|
-
|
|
2927
|
+
/**
|
|
2928
|
+
* We're at the root of the tree, so we're just replacing the entire tree.
|
|
2929
|
+
*/
|
|
2930
|
+
return !parent ? referencedElement : undefined;
|
|
2867
2931
|
} catch (error) {
|
|
2868
|
-
const rootCause = (0,
|
|
2932
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
2869
2933
|
const wrappedError = wrapError(rootCause, {
|
|
2870
2934
|
baseDoc: this.reference.uri,
|
|
2871
|
-
$ref: (0,
|
|
2872
|
-
pointer: (0,
|
|
2873
|
-
fullPath: this.basePath ?? [...(0,
|
|
2935
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref),
|
|
2936
|
+
pointer: (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref)),
|
|
2937
|
+
fullPath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, pathItemElement]), '$ref']
|
|
2874
2938
|
});
|
|
2875
2939
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
2876
2940
|
return undefined;
|
|
@@ -2878,38 +2942,32 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2878
2942
|
},
|
|
2879
2943
|
async SchemaElement(referencingElement, key, parent, path, ancestors) {
|
|
2880
2944
|
try {
|
|
2881
|
-
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2882
|
-
|
|
2883
2945
|
// skip current referencing schema as $ref keyword was not defined
|
|
2884
|
-
if (!(0,
|
|
2946
|
+
if (!(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(referencingElement.$ref)) {
|
|
2885
2947
|
// skip traversing this schema but traverse all it's child schemas
|
|
2886
2948
|
return undefined;
|
|
2887
2949
|
}
|
|
2888
2950
|
|
|
2889
|
-
// skip
|
|
2890
|
-
if (
|
|
2891
|
-
return false;
|
|
2892
|
-
}
|
|
2893
|
-
|
|
2894
|
-
// detect possible cycle in traversal and avoid it
|
|
2895
|
-
if (ancestorsLineage.includesCycle(referencingElement)) {
|
|
2951
|
+
// skip current referencing element as it's already been access
|
|
2952
|
+
if (this.indirections.includes(referencingElement)) {
|
|
2896
2953
|
return false;
|
|
2897
2954
|
}
|
|
2955
|
+
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2898
2956
|
|
|
2899
2957
|
// compute baseURI using rules around $id and $ref keywords
|
|
2900
|
-
let reference = await this.toReference(
|
|
2958
|
+
let reference = await this.toReference(_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.unsanitize(this.reference.uri));
|
|
2901
2959
|
let {
|
|
2902
2960
|
uri: retrievalURI
|
|
2903
2961
|
} = reference;
|
|
2904
|
-
const $refBaseURI = (0,
|
|
2905
|
-
const $refBaseURIStrippedHash =
|
|
2906
|
-
const file = (0,
|
|
2962
|
+
const $refBaseURI = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.resolveSchema$refField)(retrievalURI, referencingElement);
|
|
2963
|
+
const $refBaseURIStrippedHash = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash($refBaseURI);
|
|
2964
|
+
const file = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_21__["default"])({
|
|
2907
2965
|
uri: $refBaseURIStrippedHash
|
|
2908
2966
|
});
|
|
2909
2967
|
const isUnknownURI = !this.options.resolve.resolvers.some(r => r.canRead(file));
|
|
2910
2968
|
const isURL = !isUnknownURI;
|
|
2911
|
-
|
|
2912
|
-
|
|
2969
|
+
let isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === $refBaseURI;
|
|
2970
|
+
let isExternalReference = !isInternalReference;
|
|
2913
2971
|
this.indirections.push(referencingElement);
|
|
2914
2972
|
|
|
2915
2973
|
// determining reference, proper evaluation and selection mechanism
|
|
@@ -2917,66 +2975,95 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2917
2975
|
try {
|
|
2918
2976
|
if (isUnknownURI || isURL) {
|
|
2919
2977
|
// we're dealing with canonical URI or URL with possible fragment
|
|
2978
|
+
retrievalURI = this.toBaseURI($refBaseURI);
|
|
2920
2979
|
const selector = $refBaseURI;
|
|
2921
|
-
|
|
2980
|
+
const referenceAsSchema = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(reference.value.result);
|
|
2981
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_uri__WEBPACK_IMPORTED_MODULE_22__.evaluate)(selector, referenceAsSchema);
|
|
2982
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(referencedElement);
|
|
2983
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2984
|
+
|
|
2985
|
+
// ignore resolving internal Schema Objects
|
|
2986
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2987
|
+
// skip traversing this schema element but traverse all it's child elements
|
|
2988
|
+
return undefined;
|
|
2989
|
+
}
|
|
2990
|
+
// ignore resolving external Schema Objects
|
|
2991
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2992
|
+
// skip traversing this schema element but traverse all it's child elements
|
|
2993
|
+
return undefined;
|
|
2994
|
+
}
|
|
2922
2995
|
} else {
|
|
2923
2996
|
// we're assuming here that we're dealing with JSON Pointer here
|
|
2924
|
-
retrievalURI = this.toBaseURI(
|
|
2997
|
+
retrievalURI = this.toBaseURI($refBaseURI);
|
|
2998
|
+
isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
2999
|
+
isExternalReference = !isInternalReference;
|
|
2925
3000
|
|
|
2926
3001
|
// ignore resolving internal Schema Objects
|
|
2927
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3002
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2928
3003
|
// skip traversing this schema element but traverse all it's child elements
|
|
2929
3004
|
return undefined;
|
|
2930
3005
|
}
|
|
2931
3006
|
// ignore resolving external Schema Objects
|
|
2932
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3007
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2933
3008
|
// skip traversing this schema element but traverse all it's child elements
|
|
2934
3009
|
return undefined;
|
|
2935
3010
|
}
|
|
2936
|
-
reference = await this.toReference(
|
|
2937
|
-
const selector = (0,
|
|
2938
|
-
|
|
3011
|
+
reference = await this.toReference(_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.unsanitize($refBaseURI));
|
|
3012
|
+
const selector = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
3013
|
+
const referenceAsSchema = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(reference.value.result);
|
|
3014
|
+
referencedElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__["default"])(selector, referenceAsSchema);
|
|
3015
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(referencedElement);
|
|
3016
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2939
3017
|
}
|
|
2940
3018
|
} catch (error) {
|
|
2941
3019
|
/**
|
|
2942
3020
|
* No SchemaElement($id=URL) was not found, so we're going to try to resolve
|
|
2943
3021
|
* the URL and assume the returned response is a JSON Schema.
|
|
2944
3022
|
*/
|
|
2945
|
-
if (isURL && error instanceof
|
|
2946
|
-
if ((0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$
|
|
3023
|
+
if (isURL && error instanceof _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_uri__WEBPACK_IMPORTED_MODULE_23__["default"]) {
|
|
3024
|
+
if ((0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$anchor__WEBPACK_IMPORTED_MODULE_24__.isAnchor)((0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$anchor__WEBPACK_IMPORTED_MODULE_24__.uriToAnchor)($refBaseURI))) {
|
|
2947
3025
|
// we're dealing with JSON Schema $anchor here
|
|
2948
|
-
|
|
3026
|
+
isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
3027
|
+
isExternalReference = !isInternalReference;
|
|
2949
3028
|
|
|
2950
3029
|
// ignore resolving internal Schema Objects
|
|
2951
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3030
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2952
3031
|
// skip traversing this schema element but traverse all it's child elements
|
|
2953
3032
|
return undefined;
|
|
2954
3033
|
}
|
|
2955
3034
|
// ignore resolving external Schema Objects
|
|
2956
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3035
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2957
3036
|
// skip traversing this schema element but traverse all it's child elements
|
|
2958
3037
|
return undefined;
|
|
2959
3038
|
}
|
|
2960
|
-
reference = await this.toReference(
|
|
2961
|
-
const selector = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$
|
|
2962
|
-
|
|
3039
|
+
reference = await this.toReference(_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.unsanitize($refBaseURI));
|
|
3040
|
+
const selector = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$anchor__WEBPACK_IMPORTED_MODULE_24__.uriToAnchor)($refBaseURI);
|
|
3041
|
+
const referenceAsSchema = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(reference.value.result);
|
|
3042
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$anchor__WEBPACK_IMPORTED_MODULE_24__.evaluate)(selector, referenceAsSchema);
|
|
3043
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(referencedElement);
|
|
3044
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2963
3045
|
} else {
|
|
2964
3046
|
// we're assuming here that we're dealing with JSON Pointer here
|
|
2965
|
-
retrievalURI = this.toBaseURI((0,
|
|
3047
|
+
retrievalURI = this.toBaseURI((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])($refBaseURI));
|
|
3048
|
+
isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
3049
|
+
isExternalReference = !isInternalReference;
|
|
2966
3050
|
|
|
2967
3051
|
// ignore resolving internal Schema Objects
|
|
2968
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3052
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2969
3053
|
// skip traversing this schema element but traverse all it's child elements
|
|
2970
3054
|
return undefined;
|
|
2971
3055
|
}
|
|
2972
3056
|
// ignore resolving external Schema Objects
|
|
2973
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3057
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2974
3058
|
// skip traversing this schema element but traverse all it's child elements
|
|
2975
3059
|
return undefined;
|
|
2976
3060
|
}
|
|
2977
|
-
reference = await this.toReference(
|
|
2978
|
-
const selector = (0,
|
|
2979
|
-
|
|
3061
|
+
reference = await this.toReference(_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.unsanitize($refBaseURI));
|
|
3062
|
+
const selector = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
3063
|
+
const referenceAsSchema = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(reference.value.result);
|
|
3064
|
+
referencedElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_8__["default"])(selector, referenceAsSchema);
|
|
3065
|
+
referencedElement = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__.maybeRefractToSchemaElement)(referencedElement);
|
|
3066
|
+
referencedElement.id = identityManager.identify(referencedElement);
|
|
2980
3067
|
}
|
|
2981
3068
|
} else {
|
|
2982
3069
|
throw error;
|
|
@@ -2984,7 +3071,7 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2984
3071
|
}
|
|
2985
3072
|
|
|
2986
3073
|
// detect direct or indirect reference
|
|
2987
|
-
if (
|
|
3074
|
+
if (referencingElement === referencedElement) {
|
|
2988
3075
|
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive Schema Object reference detected');
|
|
2989
3076
|
}
|
|
2990
3077
|
|
|
@@ -2993,106 +3080,134 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2993
3080
|
throw new _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_13__["default"](`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
|
|
2994
3081
|
}
|
|
2995
3082
|
|
|
2996
|
-
//
|
|
2997
|
-
if (
|
|
2998
|
-
|
|
2999
|
-
if (
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3083
|
+
// detect second deep dive into the same fragment and avoid it
|
|
3084
|
+
if (ancestorsLineage.includes(referencedElement)) {
|
|
3085
|
+
reference.refSet.circular = true;
|
|
3086
|
+
if (this.options.dereference.circular === 'error') {
|
|
3087
|
+
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Circular reference detected');
|
|
3088
|
+
} else if (this.options.dereference.circular === 'replace') {
|
|
3089
|
+
const refElement = new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.RefElement(referencedElement.id, {
|
|
3090
|
+
type: 'json-schema',
|
|
3091
|
+
uri: reference.uri,
|
|
3092
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref),
|
|
3093
|
+
baseURI: _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI),
|
|
3094
|
+
referencingElement
|
|
3095
|
+
});
|
|
3096
|
+
const replacer = this.options.dereference.strategyOpts['openapi-3-1']?.circularReplacer ?? this.options.dereference.circularReplacer;
|
|
3097
|
+
const replacement = replacer(refElement);
|
|
3098
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
3099
|
+
parent.value = replacement; // eslint-disable-line no-param-reassign
|
|
3100
|
+
} else if (Array.isArray(parent)) {
|
|
3101
|
+
parent[key] = replacement; // eslint-disable-line no-param-reassign
|
|
3008
3102
|
}
|
|
3009
|
-
|
|
3010
|
-
return false;
|
|
3103
|
+
return !parent ? replacement : false;
|
|
3011
3104
|
}
|
|
3012
3105
|
}
|
|
3013
3106
|
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3107
|
+
/**
|
|
3108
|
+
* Dive deep into the fragment.
|
|
3109
|
+
*
|
|
3110
|
+
* Cases to consider:
|
|
3111
|
+
* 1. We're crossing document boundary
|
|
3112
|
+
* 2. Fragment is from non-root document
|
|
3113
|
+
* 3. Fragment is a Schema Object with $ref field. We need to follow it to get the eventual value
|
|
3114
|
+
* 4. We are dereferencing the fragment lazily/eagerly depending on circular mode
|
|
3115
|
+
*/
|
|
3116
|
+
const isNonRootDocument = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(reference.refSet.rootRef.uri) !== reference.uri;
|
|
3117
|
+
const shouldDetectCircular = ['error', 'replace'].includes(this.options.dereference.circular);
|
|
3118
|
+
if ((isExternalReference || isNonRootDocument || (0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isSchemaElement)(referencedElement) && (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(referencedElement.$ref) || shouldDetectCircular) && !ancestorsLineage.includesCycle(referencedElement)) {
|
|
3119
|
+
// append referencing schema to ancestors lineage
|
|
3120
|
+
directAncestors.add(referencingElement);
|
|
3121
|
+
|
|
3122
|
+
// dive deep into the fragment
|
|
3123
|
+
const mergeVisitor = OpenApi3_1SwaggerClientDereferenceVisitor({
|
|
3124
|
+
reference,
|
|
3125
|
+
namespace: this.namespace,
|
|
3126
|
+
indirections: [...this.indirections],
|
|
3127
|
+
options: this.options,
|
|
3128
|
+
useCircularStructures: this.useCircularStructures,
|
|
3129
|
+
allowMetaPatches: this.allowMetaPatches,
|
|
3130
|
+
ancestors: ancestorsLineage,
|
|
3131
|
+
basePath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, referencingElement]), '$ref']
|
|
3132
|
+
});
|
|
3133
|
+
referencedElement = await visitAsync(referencedElement, mergeVisitor, {
|
|
3134
|
+
keyMap: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.keyMap,
|
|
3135
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__.getNodeType
|
|
3136
|
+
});
|
|
3032
3137
|
|
|
3033
|
-
|
|
3034
|
-
|
|
3138
|
+
// remove referencing schema from ancestors lineage
|
|
3139
|
+
directAncestors.delete(referencingElement);
|
|
3140
|
+
}
|
|
3035
3141
|
this.indirections.pop();
|
|
3036
|
-
if ((0,
|
|
3037
|
-
const booleanJsonSchemaElement = (0,
|
|
3142
|
+
if ((0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isBooleanJsonSchemaElement)(referencedElement)) {
|
|
3143
|
+
const booleanJsonSchemaElement = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(referencedElement);
|
|
3038
3144
|
// annotate referenced element with info about original referencing element
|
|
3039
3145
|
booleanJsonSchemaElement.setMetaProperty('ref-fields', {
|
|
3040
|
-
$ref: (0,
|
|
3146
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref)
|
|
3041
3147
|
});
|
|
3042
3148
|
// annotate referenced element with info about origin
|
|
3043
3149
|
booleanJsonSchemaElement.setMetaProperty('ref-origin', reference.uri);
|
|
3044
3150
|
// annotate fragment with info about referencing element
|
|
3045
|
-
booleanJsonSchemaElement.setMetaProperty('ref-referencing-element-id', (0,
|
|
3046
|
-
|
|
3151
|
+
booleanJsonSchemaElement.setMetaProperty('ref-referencing-element-id', (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(identityManager.identify(referencingElement)));
|
|
3152
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
3153
|
+
parent.value = booleanJsonSchemaElement; // eslint-disable-line no-param-reassign
|
|
3154
|
+
} else if (Array.isArray(parent)) {
|
|
3155
|
+
parent[key] = booleanJsonSchemaElement; // eslint-disable-line no-param-reassign
|
|
3156
|
+
}
|
|
3157
|
+
return !parent ? booleanJsonSchemaElement : false;
|
|
3047
3158
|
}
|
|
3048
|
-
|
|
3159
|
+
|
|
3160
|
+
/**
|
|
3161
|
+
* Creating a new version of Schema Object by merging fields from referenced Schema Object with referencing one.
|
|
3162
|
+
*/
|
|
3163
|
+
if ((0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__.isSchemaElement)(referencedElement)) {
|
|
3049
3164
|
// Schema Object - merge keywords from referenced schema with referencing schema
|
|
3050
|
-
const mergedElement = new _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_11__.SchemaElement([...
|
|
3165
|
+
const mergedElement = new _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_11__.SchemaElement([...referencedElement.content], (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(referencedElement.meta), (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(referencedElement.attributes));
|
|
3051
3166
|
// existing keywords from referencing schema overrides ones from referenced schema
|
|
3052
3167
|
referencingElement.forEach((value, keyElement, item) => {
|
|
3053
|
-
mergedElement.remove((0,
|
|
3168
|
+
mergedElement.remove((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(keyElement));
|
|
3054
3169
|
mergedElement.content.push(item);
|
|
3055
3170
|
});
|
|
3056
3171
|
mergedElement.remove('$ref');
|
|
3057
3172
|
// annotate referenced element with info about original referencing element
|
|
3058
3173
|
mergedElement.setMetaProperty('ref-fields', {
|
|
3059
|
-
$ref: (0,
|
|
3174
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref)
|
|
3060
3175
|
});
|
|
3061
3176
|
// annotate fragment with info about origin
|
|
3062
3177
|
mergedElement.setMetaProperty('ref-origin', reference.uri);
|
|
3063
3178
|
// annotate fragment with info about referencing element
|
|
3064
|
-
mergedElement.setMetaProperty('ref-referencing-element-id', (0,
|
|
3179
|
+
mergedElement.setMetaProperty('ref-referencing-element-id', (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_18__.cloneDeep)(identityManager.identify(referencingElement)));
|
|
3065
3180
|
|
|
3066
3181
|
// allowMetaPatches option processing
|
|
3067
3182
|
if (this.allowMetaPatches) {
|
|
3068
3183
|
// apply meta patch only when not already applied
|
|
3069
3184
|
if (typeof mergedElement.get('$$ref') === 'undefined') {
|
|
3070
|
-
const baseURI =
|
|
3185
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI);
|
|
3071
3186
|
mergedElement.set('$$ref', baseURI);
|
|
3072
3187
|
}
|
|
3073
3188
|
}
|
|
3074
|
-
|
|
3075
|
-
}
|
|
3189
|
+
referencedElement = mergedElement;
|
|
3190
|
+
}
|
|
3076
3191
|
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
}
|
|
3085
|
-
return false;
|
|
3192
|
+
/**
|
|
3193
|
+
* Transclude referencing element with merged referenced element.
|
|
3194
|
+
*/
|
|
3195
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isMemberElement)(parent)) {
|
|
3196
|
+
parent.value = referencedElement; // eslint-disable-line no-param-reassign
|
|
3197
|
+
} else if (Array.isArray(parent)) {
|
|
3198
|
+
parent[key] = referencedElement; // eslint-disable-line no-param-reassign
|
|
3086
3199
|
}
|
|
3087
3200
|
|
|
3088
|
-
|
|
3089
|
-
|
|
3201
|
+
/**
|
|
3202
|
+
* We're at the root of the tree, so we're just replacing the entire tree.
|
|
3203
|
+
*/
|
|
3204
|
+
return !parent ? referencedElement : undefined;
|
|
3090
3205
|
} catch (error) {
|
|
3091
|
-
const rootCause = (0,
|
|
3206
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
3092
3207
|
const wrappedError = new _errors_index_js__WEBPACK_IMPORTED_MODULE_1__.SchemaRefError(`Could not resolve reference: ${rootCause.message}`, {
|
|
3093
3208
|
baseDoc: this.reference.uri,
|
|
3094
|
-
$ref: (0,
|
|
3095
|
-
fullPath: this.basePath ?? [...(0,
|
|
3209
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref),
|
|
3210
|
+
fullPath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, referencingElement]), '$ref']
|
|
3096
3211
|
}, rootCause);
|
|
3097
3212
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
3098
3213
|
return undefined;
|
|
@@ -3108,13 +3223,13 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
3108
3223
|
},
|
|
3109
3224
|
async ExampleElement(exampleElement, key, parent, path, ancestors) {
|
|
3110
3225
|
try {
|
|
3111
|
-
return await
|
|
3226
|
+
return await _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_4__["default"].compose.methods.ExampleElement.call(this, exampleElement, key, parent, path, ancestors);
|
|
3112
3227
|
} catch (error) {
|
|
3113
|
-
const rootCause = (0,
|
|
3228
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
3114
3229
|
const wrappedError = wrapError(rootCause, {
|
|
3115
3230
|
baseDoc: this.reference.uri,
|
|
3116
|
-
externalValue: (0,
|
|
3117
|
-
fullPath: this.basePath ?? [...(0,
|
|
3231
|
+
externalValue: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(exampleElement.externalValue),
|
|
3232
|
+
fullPath: this.basePath ?? [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_16__["default"])([...ancestors, parent, exampleElement]), 'externalValue']
|
|
3118
3233
|
});
|
|
3119
3234
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
3120
3235
|
return undefined;
|
|
@@ -4090,23 +4205,26 @@ pojoAdapter.cache = new WeakMap();
|
|
|
4090
4205
|
"use strict";
|
|
4091
4206
|
__webpack_require__.r(__webpack_exports__);
|
|
4092
4207
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4208
|
+
/* harmony export */ circularReplacer: () => (/* binding */ circularReplacer),
|
|
4093
4209
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4094
4210
|
/* harmony export */ });
|
|
4095
|
-
/* harmony import */ var
|
|
4096
|
-
/* harmony import */ var
|
|
4097
|
-
/* harmony import */ var
|
|
4098
|
-
/* harmony import */ var
|
|
4099
|
-
/* harmony import */ var
|
|
4100
|
-
/* harmony import */ var
|
|
4101
|
-
/* harmony import */ var
|
|
4102
|
-
/* harmony import */ var
|
|
4103
|
-
/* harmony import */ var
|
|
4104
|
-
/* harmony import */ var
|
|
4105
|
-
/* harmony import */ var
|
|
4106
|
-
/* harmony import */ var
|
|
4107
|
-
/* harmony import */ var
|
|
4108
|
-
/* harmony import */ var
|
|
4109
|
-
/* harmony import */ var
|
|
4211
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9999);
|
|
4212
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(44824);
|
|
4213
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(87024);
|
|
4214
|
+
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(65342);
|
|
4215
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(60672);
|
|
4216
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(18316);
|
|
4217
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(60489);
|
|
4218
|
+
/* harmony import */ var _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(64884);
|
|
4219
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(3117);
|
|
4220
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(94145);
|
|
4221
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(83748);
|
|
4222
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(12349);
|
|
4223
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(31387);
|
|
4224
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(71614);
|
|
4225
|
+
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(48097);
|
|
4226
|
+
/* harmony import */ var _swagger_api_apidom_reference_parse_parsers_binary__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(16960);
|
|
4227
|
+
/* harmony import */ var _swagger_api_apidom_reference_resolve_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(47724);
|
|
4110
4228
|
/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3832);
|
|
4111
4229
|
/* harmony import */ var _utils_options_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40428);
|
|
4112
4230
|
/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80947);
|
|
@@ -4132,6 +4250,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4132
4250
|
|
|
4133
4251
|
|
|
4134
4252
|
|
|
4253
|
+
const circularReplacer = refElement => {
|
|
4254
|
+
const $refBaseURI = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__["default"])(refElement.meta.get('baseURI'));
|
|
4255
|
+
const referencingElement = refElement.meta.get('referencingElement');
|
|
4256
|
+
|
|
4257
|
+
/**
|
|
4258
|
+
* Removing semantics from the absolutified referencing element by
|
|
4259
|
+
* using generic ObjectElement to represent the reference.
|
|
4260
|
+
*/
|
|
4261
|
+
return new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_10__.ObjectElement({
|
|
4262
|
+
$ref: $refBaseURI
|
|
4263
|
+
}, (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_11__.cloneDeep)(referencingElement.meta), (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_11__.cloneDeep)(referencingElement.attributes));
|
|
4264
|
+
};
|
|
4135
4265
|
const resolveOpenAPI31Strategy = async options => {
|
|
4136
4266
|
const {
|
|
4137
4267
|
spec,
|
|
@@ -4153,32 +4283,32 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4153
4283
|
} = resolveOpenAPI31Strategy;
|
|
4154
4284
|
|
|
4155
4285
|
// determining BaseURI
|
|
4156
|
-
const cwd =
|
|
4286
|
+
const cwd = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__.isHttpUrl(_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__.cwd()) ? _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__.cwd() : _constants_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_BASE_URL;
|
|
4157
4287
|
const retrievalURI = _utils_options_js__WEBPACK_IMPORTED_MODULE_1__.retrievalURI(options);
|
|
4158
|
-
const baseURI =
|
|
4288
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__.resolve(cwd, retrievalURI);
|
|
4159
4289
|
|
|
4160
4290
|
// prepare spec for dereferencing
|
|
4161
4291
|
let openApiElement;
|
|
4162
4292
|
if (cache.has(spec)) {
|
|
4163
4293
|
openApiElement = cache.get(spec);
|
|
4164
4294
|
} else {
|
|
4165
|
-
openApiElement =
|
|
4295
|
+
openApiElement = _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.OpenApi3_1Element.refract(spec);
|
|
4166
4296
|
openApiElement.classes.push('result');
|
|
4167
4297
|
cache.set(spec, openApiElement);
|
|
4168
4298
|
}
|
|
4169
|
-
const openApiParseResultElement = new
|
|
4299
|
+
const openApiParseResultElement = new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_10__.ParseResultElement([openApiElement]);
|
|
4170
4300
|
|
|
4171
4301
|
// prepare fragment for dereferencing
|
|
4172
|
-
const jsonPointer = (0,
|
|
4302
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_14__["default"])(pathDiscriminator);
|
|
4173
4303
|
const jsonPointerURI = jsonPointer === '' ? '' : `#${jsonPointer}`;
|
|
4174
|
-
const fragmentElement = (0,
|
|
4304
|
+
const fragmentElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_15__["default"])(jsonPointer, openApiElement);
|
|
4175
4305
|
|
|
4176
4306
|
// prepare reference set for dereferencing
|
|
4177
|
-
const openApiElementReference = (0,
|
|
4307
|
+
const openApiElementReference = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_16__["default"])({
|
|
4178
4308
|
uri: baseURI,
|
|
4179
4309
|
value: openApiParseResultElement
|
|
4180
4310
|
});
|
|
4181
|
-
const refSet = (0,
|
|
4311
|
+
const refSet = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_17__["default"])({
|
|
4182
4312
|
refs: [openApiElementReference]
|
|
4183
4313
|
});
|
|
4184
4314
|
if (jsonPointer !== '') refSet.rootRef = null; // reset root reference as we want fragment to become the root reference
|
|
@@ -4186,7 +4316,7 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4186
4316
|
// prepare ancestors; needed for cases where fragment is not OpenAPI element
|
|
4187
4317
|
const ancestors = [new Set([fragmentElement])];
|
|
4188
4318
|
const errors = [];
|
|
4189
|
-
const dereferenced = await (0,
|
|
4319
|
+
const dereferenced = await (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_18__.dereferenceApiDOM)(fragmentElement, {
|
|
4190
4320
|
resolve: {
|
|
4191
4321
|
/**
|
|
4192
4322
|
* swagger-client only supports resolving HTTP(S) URLs or spec objects.
|
|
@@ -4205,10 +4335,10 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4205
4335
|
responseInterceptor
|
|
4206
4336
|
}
|
|
4207
4337
|
},
|
|
4208
|
-
strategies: [(0,
|
|
4338
|
+
strategies: [(0,_swagger_api_apidom_reference_resolve_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__["default"])()]
|
|
4209
4339
|
},
|
|
4210
4340
|
parse: {
|
|
4211
|
-
mediaType:
|
|
4341
|
+
mediaType: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__["default"].latest(),
|
|
4212
4342
|
parsers: [(0,_apidom_reference_parse_parsers_openapi_json_3_1_index_js__WEBPACK_IMPORTED_MODULE_6__["default"])({
|
|
4213
4343
|
allowEmpty: false,
|
|
4214
4344
|
sourceMap: false
|
|
@@ -4221,7 +4351,7 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4221
4351
|
}), (0,_apidom_reference_parse_parsers_yaml_1_2_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])({
|
|
4222
4352
|
allowEmpty: false,
|
|
4223
4353
|
sourceMap: false
|
|
4224
|
-
}), (0,
|
|
4354
|
+
}), (0,_swagger_api_apidom_reference_parse_parsers_binary__WEBPACK_IMPORTED_MODULE_21__["default"])({
|
|
4225
4355
|
allowEmpty: false,
|
|
4226
4356
|
sourceMap: false
|
|
4227
4357
|
})]
|
|
@@ -4240,17 +4370,19 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4240
4370
|
dereferenceOpts: {
|
|
4241
4371
|
errors
|
|
4242
4372
|
},
|
|
4243
|
-
immutable: false
|
|
4373
|
+
immutable: false,
|
|
4374
|
+
circular: useCircularStructures ? 'ignore' : 'replace',
|
|
4375
|
+
circularReplacer: useCircularStructures ? _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_22__["default"].dereference.circularReplacer : circularReplacer
|
|
4244
4376
|
}
|
|
4245
4377
|
});
|
|
4246
|
-
const transcluded = (0,
|
|
4378
|
+
const transcluded = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_23__.transclude)(fragmentElement, dereferenced, openApiElement);
|
|
4247
4379
|
const normalized = skipNormalization ? transcluded : (0,_normalize_js__WEBPACK_IMPORTED_MODULE_2__["default"])(transcluded);
|
|
4248
4380
|
return {
|
|
4249
|
-
spec: (0,
|
|
4381
|
+
spec: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__["default"])(normalized),
|
|
4250
4382
|
errors
|
|
4251
4383
|
};
|
|
4252
4384
|
} catch (error) {
|
|
4253
|
-
if (error instanceof
|
|
4385
|
+
if (error instanceof _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_24__["default"] || error instanceof _swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_25__["default"]) {
|
|
4254
4386
|
return {
|
|
4255
4387
|
spec: null,
|
|
4256
4388
|
errors: []
|
|
@@ -16781,7 +16913,7 @@ var defaults = {
|
|
|
16781
16913
|
charset: 'utf-8',
|
|
16782
16914
|
charsetSentinel: false,
|
|
16783
16915
|
comma: false,
|
|
16784
|
-
decodeDotInKeys:
|
|
16916
|
+
decodeDotInKeys: false,
|
|
16785
16917
|
decoder: utils.decode,
|
|
16786
16918
|
delimiter: '&',
|
|
16787
16919
|
depth: 5,
|
|
@@ -17544,6 +17676,10 @@ var decode = function (str, decoder, charset) {
|
|
|
17544
17676
|
}
|
|
17545
17677
|
};
|
|
17546
17678
|
|
|
17679
|
+
var limit = 1024;
|
|
17680
|
+
|
|
17681
|
+
/* eslint operator-linebreak: [2, "before"] */
|
|
17682
|
+
|
|
17547
17683
|
var encode = function encode(str, defaultEncoder, charset, kind, format) {
|
|
17548
17684
|
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
|
|
17549
17685
|
// It has been adapted here for stricter adherence to RFC 3986
|
|
@@ -17565,45 +17701,54 @@ var encode = function encode(str, defaultEncoder, charset, kind, format) {
|
|
|
17565
17701
|
}
|
|
17566
17702
|
|
|
17567
17703
|
var out = '';
|
|
17568
|
-
for (var
|
|
17569
|
-
var
|
|
17570
|
-
|
|
17571
|
-
|
|
17572
|
-
|
|
17573
|
-
|
|
17574
|
-
|
|
17575
|
-
|
|
17576
|
-
|
|
17577
|
-
|
|
17578
|
-
|
|
17579
|
-
|
|
17580
|
-
|
|
17581
|
-
|
|
17582
|
-
|
|
17583
|
-
|
|
17704
|
+
for (var j = 0; j < string.length; j += limit) {
|
|
17705
|
+
var segment = string.length >= limit ? string.slice(j, j + limit) : string;
|
|
17706
|
+
var arr = [];
|
|
17707
|
+
|
|
17708
|
+
for (var i = 0; i < segment.length; ++i) {
|
|
17709
|
+
var c = segment.charCodeAt(i);
|
|
17710
|
+
if (
|
|
17711
|
+
c === 0x2D // -
|
|
17712
|
+
|| c === 0x2E // .
|
|
17713
|
+
|| c === 0x5F // _
|
|
17714
|
+
|| c === 0x7E // ~
|
|
17715
|
+
|| (c >= 0x30 && c <= 0x39) // 0-9
|
|
17716
|
+
|| (c >= 0x41 && c <= 0x5A) // a-z
|
|
17717
|
+
|| (c >= 0x61 && c <= 0x7A) // A-Z
|
|
17718
|
+
|| (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )
|
|
17719
|
+
) {
|
|
17720
|
+
arr[arr.length] = segment.charAt(i);
|
|
17721
|
+
continue;
|
|
17722
|
+
}
|
|
17584
17723
|
|
|
17585
|
-
|
|
17586
|
-
|
|
17587
|
-
|
|
17588
|
-
|
|
17724
|
+
if (c < 0x80) {
|
|
17725
|
+
arr[arr.length] = hexTable[c];
|
|
17726
|
+
continue;
|
|
17727
|
+
}
|
|
17589
17728
|
|
|
17590
|
-
|
|
17591
|
-
|
|
17592
|
-
|
|
17593
|
-
|
|
17729
|
+
if (c < 0x800) {
|
|
17730
|
+
arr[arr.length] = hexTable[0xC0 | (c >> 6)]
|
|
17731
|
+
+ hexTable[0x80 | (c & 0x3F)];
|
|
17732
|
+
continue;
|
|
17733
|
+
}
|
|
17594
17734
|
|
|
17595
|
-
|
|
17596
|
-
|
|
17597
|
-
|
|
17735
|
+
if (c < 0xD800 || c >= 0xE000) {
|
|
17736
|
+
arr[arr.length] = hexTable[0xE0 | (c >> 12)]
|
|
17737
|
+
+ hexTable[0x80 | ((c >> 6) & 0x3F)]
|
|
17738
|
+
+ hexTable[0x80 | (c & 0x3F)];
|
|
17739
|
+
continue;
|
|
17740
|
+
}
|
|
17741
|
+
|
|
17742
|
+
i += 1;
|
|
17743
|
+
c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));
|
|
17744
|
+
|
|
17745
|
+
arr[arr.length] = hexTable[0xF0 | (c >> 18)]
|
|
17746
|
+
+ hexTable[0x80 | ((c >> 12) & 0x3F)]
|
|
17747
|
+
+ hexTable[0x80 | ((c >> 6) & 0x3F)]
|
|
17748
|
+
+ hexTable[0x80 | (c & 0x3F)];
|
|
17598
17749
|
}
|
|
17599
17750
|
|
|
17600
|
-
|
|
17601
|
-
c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
|
|
17602
|
-
/* eslint operator-linebreak: [2, "before"] */
|
|
17603
|
-
out += hexTable[0xF0 | (c >> 18)]
|
|
17604
|
-
+ hexTable[0x80 | ((c >> 12) & 0x3F)]
|
|
17605
|
-
+ hexTable[0x80 | ((c >> 6) & 0x3F)]
|
|
17606
|
-
+ hexTable[0x80 | (c & 0x3F)];
|
|
17751
|
+
out += arr.join('');
|
|
17607
17752
|
}
|
|
17608
17753
|
|
|
17609
17754
|
return out;
|