swagger-client 3.26.7 → 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 +567 -413
- package/dist/swagger-client.browser.min.js +1 -1
- package/dist/swagger-client.browser.min.js.map +1 -1
- package/es/execute/oas3/content-serializer.js +10 -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/execute/oas3/content-serializer.js +10 -1
- 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
|
@@ -622,9 +622,18 @@ function serialize(value, mediaType) {
|
|
|
622
622
|
// Assume the user has a JSON string
|
|
623
623
|
return value;
|
|
624
624
|
}
|
|
625
|
+
if (Array.isArray(value)) {
|
|
626
|
+
value = value.map(v => {
|
|
627
|
+
try {
|
|
628
|
+
return JSON.parse(v);
|
|
629
|
+
} catch (e) {
|
|
630
|
+
return v;
|
|
631
|
+
}
|
|
632
|
+
});
|
|
633
|
+
}
|
|
625
634
|
return JSON.stringify(value);
|
|
626
635
|
}
|
|
627
|
-
return value
|
|
636
|
+
return String(value);
|
|
628
637
|
}
|
|
629
638
|
|
|
630
639
|
/***/ }),
|
|
@@ -2183,11 +2192,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2183
2192
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46571);
|
|
2184
2193
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(68618);
|
|
2185
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);
|
|
2186
2196
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31387);
|
|
2187
2197
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12349);
|
|
2188
2198
|
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(57016);
|
|
2189
2199
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41544);
|
|
2190
|
-
/* harmony import */ var
|
|
2200
|
+
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(66648);
|
|
2191
2201
|
/* harmony import */ var _visitors_dereference_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7882);
|
|
2192
2202
|
/* harmony import */ var _visitors_parameters_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53628);
|
|
2193
2203
|
/* harmony import */ var _visitors_properties_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85001);
|
|
@@ -2205,7 +2215,6 @@ const visitAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__.visit[S
|
|
|
2205
2215
|
const mergeAllVisitorsAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__.mergeAll[Symbol.for('nodejs.util.promisify.custom')];
|
|
2206
2216
|
const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference_dereference_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_6__["default"].compose({
|
|
2207
2217
|
props: {
|
|
2208
|
-
useCircularStructures: true,
|
|
2209
2218
|
allowMetaPatches: false,
|
|
2210
2219
|
parameterMacro: null,
|
|
2211
2220
|
modelPropertyMacro: null,
|
|
@@ -2213,7 +2222,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2213
2222
|
ancestors: null
|
|
2214
2223
|
},
|
|
2215
2224
|
init({
|
|
2216
|
-
useCircularStructures = this.useCircularStructures,
|
|
2217
2225
|
allowMetaPatches = this.allowMetaPatches,
|
|
2218
2226
|
parameterMacro = this.parameterMacro,
|
|
2219
2227
|
modelPropertyMacro = this.modelPropertyMacro,
|
|
@@ -2221,7 +2229,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2221
2229
|
ancestors = []
|
|
2222
2230
|
} = {}) {
|
|
2223
2231
|
this.name = 'openapi-3-1-swagger-client';
|
|
2224
|
-
this.useCircularStructures = useCircularStructures;
|
|
2225
2232
|
this.allowMetaPatches = allowMetaPatches;
|
|
2226
2233
|
this.parameterMacro = parameterMacro;
|
|
2227
2234
|
this.modelPropertyMacro = modelPropertyMacro;
|
|
@@ -2232,17 +2239,32 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2232
2239
|
async dereference(file, options) {
|
|
2233
2240
|
const visitors = [];
|
|
2234
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"]);
|
|
2235
|
-
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;
|
|
2236
2245
|
let reference;
|
|
2237
|
-
if (!
|
|
2246
|
+
if (!immutableRefSet.has(file.uri)) {
|
|
2238
2247
|
reference = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_10__["default"])({
|
|
2239
2248
|
uri: file.uri,
|
|
2240
2249
|
value: file.parseResult
|
|
2241
2250
|
});
|
|
2242
|
-
|
|
2251
|
+
immutableRefSet.add(reference);
|
|
2243
2252
|
} else {
|
|
2244
2253
|
// pre-computed refSet was provided as configuration option
|
|
2245
|
-
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;
|
|
2246
2268
|
}
|
|
2247
2269
|
|
|
2248
2270
|
// create main dereference visitor
|
|
@@ -2250,7 +2272,6 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2250
2272
|
reference,
|
|
2251
2273
|
namespace,
|
|
2252
2274
|
options,
|
|
2253
|
-
useCircularStructures: this.useCircularStructures,
|
|
2254
2275
|
allowMetaPatches: this.allowMetaPatches,
|
|
2255
2276
|
ancestors: this.ancestors
|
|
2256
2277
|
});
|
|
@@ -2284,20 +2305,33 @@ const OpenApi3_1SwaggerClientDereferenceStrategy = _swagger_api_apidom_reference
|
|
|
2284
2305
|
|
|
2285
2306
|
// establish root visitor by visitor merging
|
|
2286
2307
|
const rootVisitor = mergeAllVisitorsAsync(visitors, {
|
|
2287
|
-
nodeTypeGetter:
|
|
2308
|
+
nodeTypeGetter: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_12__.getNodeType
|
|
2288
2309
|
});
|
|
2289
2310
|
const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
|
|
2290
|
-
keyMap:
|
|
2291
|
-
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
|
|
2292
2313
|
});
|
|
2293
2314
|
|
|
2294
2315
|
/**
|
|
2295
|
-
*
|
|
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.
|
|
2296
2329
|
* If provided as configuration option, then provider is responsible for cleanup.
|
|
2297
2330
|
*/
|
|
2298
2331
|
if (options.dereference.refSet === null) {
|
|
2299
|
-
|
|
2332
|
+
immutableRefSet.clean();
|
|
2300
2333
|
}
|
|
2334
|
+
mutableRefsSet.clean();
|
|
2301
2335
|
return dereferencedElement;
|
|
2302
2336
|
}
|
|
2303
2337
|
}
|
|
@@ -2397,11 +2431,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2397
2431
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2398
2432
|
/* harmony export */ });
|
|
2399
2433
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33501);
|
|
2400
|
-
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
2401
|
-
/* harmony import */ var
|
|
2402
|
-
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15461);
|
|
2403
|
-
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3117);
|
|
2404
|
-
/* 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);
|
|
2405
2436
|
/* harmony import */ var _utils_compose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79170);
|
|
2406
2437
|
/* harmony import */ var _utils_to_path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12201);
|
|
2407
2438
|
|
|
@@ -2431,48 +2462,57 @@ const AllOfVisitor = (0,_utils_compose_js__WEBPACK_IMPORTED_MODULE_0__["default"
|
|
|
2431
2462
|
|
|
2432
2463
|
// remove allOf keyword if empty
|
|
2433
2464
|
if (schemaElement.allOf.isEmpty) {
|
|
2434
|
-
|
|
2465
|
+
schemaElement.remove('allOf');
|
|
2466
|
+
return undefined;
|
|
2435
2467
|
}
|
|
2436
2468
|
|
|
2437
2469
|
// collect errors if allOf keyword contains anything else than Schema Object
|
|
2438
|
-
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);
|
|
2439
2471
|
if (!includesSchemaElementOnly) {
|
|
2440
2472
|
const error = new TypeError('Elements in allOf must be objects');
|
|
2441
2473
|
error.fullPath = [...(0,_utils_to_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])([...ancestors, parent, schemaElement]), 'allOf'];
|
|
2442
2474
|
this.options.dereference.dereferenceOpts?.errors?.push?.(error);
|
|
2443
2475
|
return undefined;
|
|
2444
2476
|
}
|
|
2445
|
-
|
|
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]);
|
|
2446
2483
|
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
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
|
+
}
|
|
2454
2491
|
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
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
|
+
}
|
|
2463
2502
|
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
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;
|
|
2471
2514
|
}
|
|
2472
|
-
|
|
2473
|
-
// remove allOf keyword after the merge
|
|
2474
|
-
mergedSchemaElement.remove('allOf');
|
|
2475
|
-
return mergedSchemaElement;
|
|
2515
|
+
return undefined;
|
|
2476
2516
|
}
|
|
2477
2517
|
}
|
|
2478
2518
|
}
|
|
@@ -2491,26 +2531,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2491
2531
|
/* harmony export */ });
|
|
2492
2532
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46571);
|
|
2493
2533
|
/* harmony import */ var _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42209);
|
|
2494
|
-
/* harmony import */ var
|
|
2495
|
-
/* harmony import */ var
|
|
2496
|
-
/* 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);
|
|
2497
2538
|
/* harmony import */ var _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(98219);
|
|
2498
2539
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(85013);
|
|
2499
2540
|
/* harmony import */ var _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(3117);
|
|
2500
|
-
/* harmony import */ var
|
|
2501
|
-
/* harmony import */ var
|
|
2502
|
-
/* harmony import */ var
|
|
2503
|
-
/* harmony import */ var
|
|
2504
|
-
/* 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);
|
|
2505
2546
|
/* harmony import */ var _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(60503);
|
|
2506
|
-
/* harmony import */ var
|
|
2507
|
-
/* harmony import */ var
|
|
2508
|
-
/* harmony import */ var
|
|
2509
|
-
/* harmony import */ var _swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$
|
|
2510
|
-
/* harmony import */ var
|
|
2511
|
-
/* harmony import */ var
|
|
2512
|
-
/* harmony import */ var
|
|
2513
|
-
/* 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);
|
|
2514
2555
|
/* harmony import */ var _specmap_lib_refs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7247);
|
|
2515
2556
|
/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21806);
|
|
2516
2557
|
/* eslint-disable camelcase */
|
|
@@ -2533,13 +2574,7 @@ const visitAsync = _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_2__.visit[S
|
|
|
2533
2574
|
|
|
2534
2575
|
// initialize element identity manager
|
|
2535
2576
|
const identityManager = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_3__.IdentityManager)();
|
|
2536
|
-
|
|
2537
|
-
/**
|
|
2538
|
-
* Predicate for detecting if element was created by merging referencing
|
|
2539
|
-
* element with particular element identity with a referenced element.
|
|
2540
|
-
*/
|
|
2541
|
-
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)));
|
|
2542
|
-
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({
|
|
2543
2578
|
props: {
|
|
2544
2579
|
useCircularStructures: true,
|
|
2545
2580
|
allowMetaPatches: false,
|
|
@@ -2557,19 +2592,13 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2557
2592
|
methods: {
|
|
2558
2593
|
async ReferenceElement(referencingElement, key, parent, path, ancestors) {
|
|
2559
2594
|
try {
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
// skip already identified cycled Path Item Objects
|
|
2563
|
-
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_6__.includesClasses)(['cycle'], referencingElement.$ref)) {
|
|
2595
|
+
// skip current referencing element as it's already been access
|
|
2596
|
+
if (this.indirections.includes(referencingElement)) {
|
|
2564
2597
|
return false;
|
|
2565
2598
|
}
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
return false;
|
|
2570
|
-
}
|
|
2571
|
-
const retrievalURI = this.toBaseURI((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref));
|
|
2572
|
-
const isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_7__.stripHash(this.reference.uri) === retrievalURI;
|
|
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;
|
|
2573
2602
|
const isExternalReference = !isInternalReference;
|
|
2574
2603
|
|
|
2575
2604
|
// ignore resolving internal Reference Objects
|
|
@@ -2580,18 +2609,19 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2580
2609
|
if (!this.options.resolve.external && isExternalReference) {
|
|
2581
2610
|
return false;
|
|
2582
2611
|
}
|
|
2583
|
-
const reference = await this.toReference((0,
|
|
2584
|
-
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));
|
|
2585
2614
|
this.indirections.push(referencingElement);
|
|
2586
|
-
const jsonPointer = (0,
|
|
2615
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
2587
2616
|
|
|
2588
2617
|
// possibly non-semantic fragment
|
|
2589
|
-
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);
|
|
2590
2620
|
|
|
2591
2621
|
// applying semantics to a fragment
|
|
2592
|
-
if ((0,
|
|
2593
|
-
const referencedElementType = (0,
|
|
2594
|
-
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))}`;
|
|
2595
2625
|
if (this.refractCache.has(cacheKey)) {
|
|
2596
2626
|
referencedElement = this.refractCache.get(cacheKey);
|
|
2597
2627
|
} else if ((0,_swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_10__.isReferenceLikeElement)(referencedElement)) {
|
|
@@ -2608,109 +2638,127 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2608
2638
|
}
|
|
2609
2639
|
|
|
2610
2640
|
// detect direct or indirect reference
|
|
2611
|
-
if (
|
|
2612
|
-
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');
|
|
2613
2643
|
}
|
|
2614
2644
|
|
|
2615
2645
|
// detect maximum depth of dereferencing
|
|
2616
2646
|
if (this.indirections.length > this.options.dereference.maxDepth) {
|
|
2617
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}"`);
|
|
2618
2648
|
}
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
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
|
|
2629
2669
|
}
|
|
2630
|
-
|
|
2631
|
-
return false;
|
|
2670
|
+
return !parent ? replacement : false;
|
|
2632
2671
|
}
|
|
2633
2672
|
}
|
|
2634
2673
|
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
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
|
+
});
|
|
2653
2703
|
|
|
2654
|
-
|
|
2655
|
-
|
|
2704
|
+
// remove referencing reference from ancestors lineage
|
|
2705
|
+
directAncestors.delete(referencingElement);
|
|
2706
|
+
}
|
|
2656
2707
|
this.indirections.pop();
|
|
2657
|
-
const
|
|
2658
|
-
const copy = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_14__.cloneShallow)(refedElement);
|
|
2659
|
-
|
|
2660
|
-
// annotate fragment with info about original Reference element
|
|
2661
|
-
copy.setMetaProperty('ref-fields', {
|
|
2662
|
-
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.$ref),
|
|
2663
|
-
description: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.description),
|
|
2664
|
-
summary: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_4__["default"])(referencingElement.summary)
|
|
2665
|
-
});
|
|
2666
|
-
// annotate fragment with info about origin
|
|
2667
|
-
copy.setMetaProperty('ref-origin', reference.uri);
|
|
2668
|
-
// annotate fragment with info about referencing element
|
|
2669
|
-
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);
|
|
2670
2709
|
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
}
|
|
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)));
|
|
2682
2720
|
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
copy.set('$$ref', baseURI);
|
|
2689
|
-
}
|
|
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'));
|
|
2690
2726
|
}
|
|
2691
|
-
|
|
2692
|
-
|
|
2727
|
+
if (referencingElement.hasKey('summary') && 'summary' in referencedElement) {
|
|
2728
|
+
mergedElement.remove('summary');
|
|
2729
|
+
mergedElement.set('summary', referencingElement.get('summary'));
|
|
2730
|
+
}
|
|
2731
|
+
}
|
|
2693
2732
|
|
|
2694
|
-
//
|
|
2695
|
-
if (
|
|
2696
|
-
|
|
2697
|
-
if (
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
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);
|
|
2701
2739
|
}
|
|
2702
|
-
return false;
|
|
2703
2740
|
}
|
|
2704
2741
|
|
|
2705
|
-
|
|
2706
|
-
|
|
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;
|
|
2707
2755
|
} catch (error) {
|
|
2708
|
-
const rootCause = (0,
|
|
2756
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
2709
2757
|
const wrappedError = wrapError(rootCause, {
|
|
2710
2758
|
baseDoc: this.reference.uri,
|
|
2711
|
-
$ref: (0,
|
|
2712
|
-
pointer: (0,
|
|
2713
|
-
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']
|
|
2714
2762
|
});
|
|
2715
2763
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
2716
2764
|
return undefined;
|
|
@@ -2718,24 +2766,23 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2718
2766
|
},
|
|
2719
2767
|
async PathItemElement(pathItemElement, key, parent, path, ancestors) {
|
|
2720
2768
|
try {
|
|
2721
|
-
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2722
|
-
|
|
2723
2769
|
// ignore PathItemElement without $ref field
|
|
2724
|
-
if (!(0,
|
|
2770
|
+
if (!(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(pathItemElement.$ref)) {
|
|
2725
2771
|
return undefined;
|
|
2726
2772
|
}
|
|
2727
2773
|
|
|
2728
|
-
// skip
|
|
2729
|
-
if (
|
|
2774
|
+
// skip current referencing element as it's already been access
|
|
2775
|
+
if (this.indirections.includes(pathItemElement)) {
|
|
2730
2776
|
return false;
|
|
2731
2777
|
}
|
|
2732
2778
|
|
|
2733
|
-
//
|
|
2734
|
-
if (
|
|
2779
|
+
// skip already identified cycled Path Item Objects
|
|
2780
|
+
if ((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.includesClasses)(['cycle'], pathItemElement.$ref)) {
|
|
2735
2781
|
return false;
|
|
2736
2782
|
}
|
|
2737
|
-
const
|
|
2738
|
-
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;
|
|
2739
2786
|
const isExternalReference = !isInternalReference;
|
|
2740
2787
|
|
|
2741
2788
|
// ignore resolving internal Path Item Elements
|
|
@@ -2746,17 +2793,18 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2746
2793
|
if (!this.options.resolve.external && isExternalReference) {
|
|
2747
2794
|
return undefined;
|
|
2748
2795
|
}
|
|
2749
|
-
const reference = await this.toReference((0,
|
|
2750
|
-
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));
|
|
2751
2798
|
this.indirections.push(pathItemElement);
|
|
2752
|
-
const jsonPointer = (0,
|
|
2799
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_7__.uriToPointer)($refBaseURI);
|
|
2753
2800
|
|
|
2754
2801
|
// possibly non-semantic referenced element
|
|
2755
|
-
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);
|
|
2756
2804
|
|
|
2757
2805
|
// applying semantics to a referenced element
|
|
2758
|
-
if ((0,
|
|
2759
|
-
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))}`;
|
|
2760
2808
|
if (this.refractCache.has(cacheKey)) {
|
|
2761
2809
|
referencedElement = this.refractCache.get(cacheKey);
|
|
2762
2810
|
} else {
|
|
@@ -2766,102 +2814,127 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2766
2814
|
}
|
|
2767
2815
|
|
|
2768
2816
|
// detect direct or indirect reference
|
|
2769
|
-
if (
|
|
2770
|
-
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');
|
|
2771
2819
|
}
|
|
2772
2820
|
|
|
2773
2821
|
// detect maximum depth of dereferencing
|
|
2774
2822
|
if (this.indirections.length > this.options.dereference.maxDepth) {
|
|
2775
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}"`);
|
|
2776
2824
|
}
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
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
|
|
2787
2845
|
}
|
|
2788
|
-
|
|
2789
|
-
return false;
|
|
2846
|
+
return !parent ? replacement : false;
|
|
2790
2847
|
}
|
|
2791
2848
|
}
|
|
2792
2849
|
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
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
|
+
});
|
|
2811
2880
|
|
|
2812
|
-
|
|
2813
|
-
|
|
2881
|
+
// remove referencing schema from ancestors lineage
|
|
2882
|
+
directAncestors.delete(pathItemElement);
|
|
2883
|
+
}
|
|
2814
2884
|
this.indirections.pop();
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
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));
|
|
2818
2891
|
// existing keywords from referencing PathItemElement overrides ones from referenced element
|
|
2819
2892
|
pathItemElement.forEach((value, keyElement, item) => {
|
|
2820
|
-
mergedElement.remove((0,
|
|
2893
|
+
mergedElement.remove((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(keyElement));
|
|
2821
2894
|
mergedElement.content.push(item);
|
|
2822
2895
|
});
|
|
2823
2896
|
mergedElement.remove('$ref');
|
|
2824
2897
|
|
|
2825
2898
|
// annotate referenced element with info about original referencing element
|
|
2826
2899
|
mergedElement.setMetaProperty('ref-fields', {
|
|
2827
|
-
$ref: (0,
|
|
2900
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(pathItemElement.$ref)
|
|
2828
2901
|
});
|
|
2829
2902
|
// annotate referenced element with info about origin
|
|
2830
2903
|
mergedElement.setMetaProperty('ref-origin', reference.uri);
|
|
2831
2904
|
// annotate fragment with info about referencing element
|
|
2832
|
-
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)));
|
|
2833
2906
|
|
|
2834
2907
|
// apply meta patches
|
|
2835
2908
|
if (this.allowMetaPatches) {
|
|
2836
2909
|
// apply meta patch only when not already applied
|
|
2837
2910
|
if (typeof mergedElement.get('$$ref') === 'undefined') {
|
|
2838
|
-
const baseURI =
|
|
2911
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI);
|
|
2839
2912
|
mergedElement.set('$$ref', baseURI);
|
|
2840
2913
|
}
|
|
2841
2914
|
}
|
|
2842
|
-
|
|
2843
|
-
}
|
|
2915
|
+
referencedElement = mergedElement;
|
|
2916
|
+
}
|
|
2844
2917
|
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
}
|
|
2853
|
-
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
|
|
2854
2925
|
}
|
|
2855
2926
|
|
|
2856
|
-
|
|
2857
|
-
|
|
2927
|
+
/**
|
|
2928
|
+
* We're at the root of the tree, so we're just replacing the entire tree.
|
|
2929
|
+
*/
|
|
2930
|
+
return !parent ? referencedElement : undefined;
|
|
2858
2931
|
} catch (error) {
|
|
2859
|
-
const rootCause = (0,
|
|
2932
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
2860
2933
|
const wrappedError = wrapError(rootCause, {
|
|
2861
2934
|
baseDoc: this.reference.uri,
|
|
2862
|
-
$ref: (0,
|
|
2863
|
-
pointer: (0,
|
|
2864
|
-
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']
|
|
2865
2938
|
});
|
|
2866
2939
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
2867
2940
|
return undefined;
|
|
@@ -2869,38 +2942,32 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2869
2942
|
},
|
|
2870
2943
|
async SchemaElement(referencingElement, key, parent, path, ancestors) {
|
|
2871
2944
|
try {
|
|
2872
|
-
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2873
|
-
|
|
2874
2945
|
// skip current referencing schema as $ref keyword was not defined
|
|
2875
|
-
if (!(0,
|
|
2946
|
+
if (!(0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__.isStringElement)(referencingElement.$ref)) {
|
|
2876
2947
|
// skip traversing this schema but traverse all it's child schemas
|
|
2877
2948
|
return undefined;
|
|
2878
2949
|
}
|
|
2879
2950
|
|
|
2880
|
-
// skip
|
|
2881
|
-
if (
|
|
2882
|
-
return false;
|
|
2883
|
-
}
|
|
2884
|
-
|
|
2885
|
-
// detect possible cycle in traversal and avoid it
|
|
2886
|
-
if (ancestorsLineage.includesCycle(referencingElement)) {
|
|
2951
|
+
// skip current referencing element as it's already been access
|
|
2952
|
+
if (this.indirections.includes(referencingElement)) {
|
|
2887
2953
|
return false;
|
|
2888
2954
|
}
|
|
2955
|
+
const [ancestorsLineage, directAncestors] = this.toAncestorLineage([...ancestors, parent]);
|
|
2889
2956
|
|
|
2890
2957
|
// compute baseURI using rules around $id and $ref keywords
|
|
2891
|
-
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));
|
|
2892
2959
|
let {
|
|
2893
2960
|
uri: retrievalURI
|
|
2894
2961
|
} = reference;
|
|
2895
|
-
const $refBaseURI = (0,
|
|
2896
|
-
const $refBaseURIStrippedHash =
|
|
2897
|
-
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"])({
|
|
2898
2965
|
uri: $refBaseURIStrippedHash
|
|
2899
2966
|
});
|
|
2900
2967
|
const isUnknownURI = !this.options.resolve.resolvers.some(r => r.canRead(file));
|
|
2901
2968
|
const isURL = !isUnknownURI;
|
|
2902
|
-
|
|
2903
|
-
|
|
2969
|
+
let isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === $refBaseURI;
|
|
2970
|
+
let isExternalReference = !isInternalReference;
|
|
2904
2971
|
this.indirections.push(referencingElement);
|
|
2905
2972
|
|
|
2906
2973
|
// determining reference, proper evaluation and selection mechanism
|
|
@@ -2908,66 +2975,95 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2908
2975
|
try {
|
|
2909
2976
|
if (isUnknownURI || isURL) {
|
|
2910
2977
|
// we're dealing with canonical URI or URL with possible fragment
|
|
2978
|
+
retrievalURI = this.toBaseURI($refBaseURI);
|
|
2911
2979
|
const selector = $refBaseURI;
|
|
2912
|
-
|
|
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
|
+
}
|
|
2913
2995
|
} else {
|
|
2914
2996
|
// we're assuming here that we're dealing with JSON Pointer here
|
|
2915
|
-
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;
|
|
2916
3000
|
|
|
2917
3001
|
// ignore resolving internal Schema Objects
|
|
2918
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3002
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2919
3003
|
// skip traversing this schema element but traverse all it's child elements
|
|
2920
3004
|
return undefined;
|
|
2921
3005
|
}
|
|
2922
3006
|
// ignore resolving external Schema Objects
|
|
2923
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3007
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2924
3008
|
// skip traversing this schema element but traverse all it's child elements
|
|
2925
3009
|
return undefined;
|
|
2926
3010
|
}
|
|
2927
|
-
reference = await this.toReference(
|
|
2928
|
-
const selector = (0,
|
|
2929
|
-
|
|
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);
|
|
2930
3017
|
}
|
|
2931
3018
|
} catch (error) {
|
|
2932
3019
|
/**
|
|
2933
3020
|
* No SchemaElement($id=URL) was not found, so we're going to try to resolve
|
|
2934
3021
|
* the URL and assume the returned response is a JSON Schema.
|
|
2935
3022
|
*/
|
|
2936
|
-
if (isURL && error instanceof
|
|
2937
|
-
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))) {
|
|
2938
3025
|
// we're dealing with JSON Schema $anchor here
|
|
2939
|
-
|
|
3026
|
+
isInternalReference = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.stripHash(this.reference.uri) === retrievalURI;
|
|
3027
|
+
isExternalReference = !isInternalReference;
|
|
2940
3028
|
|
|
2941
3029
|
// ignore resolving internal Schema Objects
|
|
2942
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3030
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2943
3031
|
// skip traversing this schema element but traverse all it's child elements
|
|
2944
3032
|
return undefined;
|
|
2945
3033
|
}
|
|
2946
3034
|
// ignore resolving external Schema Objects
|
|
2947
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3035
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2948
3036
|
// skip traversing this schema element but traverse all it's child elements
|
|
2949
3037
|
return undefined;
|
|
2950
3038
|
}
|
|
2951
|
-
reference = await this.toReference(
|
|
2952
|
-
const selector = (0,_swagger_api_apidom_reference_dereference_strategies_openapi_3_1_selectors_$
|
|
2953
|
-
|
|
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);
|
|
2954
3045
|
} else {
|
|
2955
3046
|
// we're assuming here that we're dealing with JSON Pointer here
|
|
2956
|
-
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;
|
|
2957
3050
|
|
|
2958
3051
|
// ignore resolving internal Schema Objects
|
|
2959
|
-
if (!this.options.resolve.internal && isInternalReference
|
|
3052
|
+
if (!this.options.resolve.internal && isInternalReference) {
|
|
2960
3053
|
// skip traversing this schema element but traverse all it's child elements
|
|
2961
3054
|
return undefined;
|
|
2962
3055
|
}
|
|
2963
3056
|
// ignore resolving external Schema Objects
|
|
2964
|
-
if (!this.options.resolve.external && isExternalReference
|
|
3057
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
2965
3058
|
// skip traversing this schema element but traverse all it's child elements
|
|
2966
3059
|
return undefined;
|
|
2967
3060
|
}
|
|
2968
|
-
reference = await this.toReference(
|
|
2969
|
-
const selector = (0,
|
|
2970
|
-
|
|
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);
|
|
2971
3067
|
}
|
|
2972
3068
|
} else {
|
|
2973
3069
|
throw error;
|
|
@@ -2975,7 +3071,7 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2975
3071
|
}
|
|
2976
3072
|
|
|
2977
3073
|
// detect direct or indirect reference
|
|
2978
|
-
if (
|
|
3074
|
+
if (referencingElement === referencedElement) {
|
|
2979
3075
|
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_12__["default"]('Recursive Schema Object reference detected');
|
|
2980
3076
|
}
|
|
2981
3077
|
|
|
@@ -2984,106 +3080,134 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
2984
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}"`);
|
|
2985
3081
|
}
|
|
2986
3082
|
|
|
2987
|
-
//
|
|
2988
|
-
if (
|
|
2989
|
-
|
|
2990
|
-
if (
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
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
|
|
2999
3102
|
}
|
|
3000
|
-
|
|
3001
|
-
return false;
|
|
3103
|
+
return !parent ? replacement : false;
|
|
3002
3104
|
}
|
|
3003
3105
|
}
|
|
3004
3106
|
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
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
|
+
});
|
|
3023
3137
|
|
|
3024
|
-
|
|
3025
|
-
|
|
3138
|
+
// remove referencing schema from ancestors lineage
|
|
3139
|
+
directAncestors.delete(referencingElement);
|
|
3140
|
+
}
|
|
3026
3141
|
this.indirections.pop();
|
|
3027
|
-
if ((0,
|
|
3028
|
-
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);
|
|
3029
3144
|
// annotate referenced element with info about original referencing element
|
|
3030
3145
|
booleanJsonSchemaElement.setMetaProperty('ref-fields', {
|
|
3031
|
-
$ref: (0,
|
|
3146
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref)
|
|
3032
3147
|
});
|
|
3033
3148
|
// annotate referenced element with info about origin
|
|
3034
3149
|
booleanJsonSchemaElement.setMetaProperty('ref-origin', reference.uri);
|
|
3035
3150
|
// annotate fragment with info about referencing element
|
|
3036
|
-
booleanJsonSchemaElement.setMetaProperty('ref-referencing-element-id', (0,
|
|
3037
|
-
|
|
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;
|
|
3038
3158
|
}
|
|
3039
|
-
|
|
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)) {
|
|
3040
3164
|
// Schema Object - merge keywords from referenced schema with referencing schema
|
|
3041
|
-
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));
|
|
3042
3166
|
// existing keywords from referencing schema overrides ones from referenced schema
|
|
3043
3167
|
referencingElement.forEach((value, keyElement, item) => {
|
|
3044
|
-
mergedElement.remove((0,
|
|
3168
|
+
mergedElement.remove((0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(keyElement));
|
|
3045
3169
|
mergedElement.content.push(item);
|
|
3046
3170
|
});
|
|
3047
3171
|
mergedElement.remove('$ref');
|
|
3048
3172
|
// annotate referenced element with info about original referencing element
|
|
3049
3173
|
mergedElement.setMetaProperty('ref-fields', {
|
|
3050
|
-
$ref: (0,
|
|
3174
|
+
$ref: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_5__["default"])(referencingElement.$ref)
|
|
3051
3175
|
});
|
|
3052
3176
|
// annotate fragment with info about origin
|
|
3053
3177
|
mergedElement.setMetaProperty('ref-origin', reference.uri);
|
|
3054
3178
|
// annotate fragment with info about referencing element
|
|
3055
|
-
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)));
|
|
3056
3180
|
|
|
3057
3181
|
// allowMetaPatches option processing
|
|
3058
3182
|
if (this.allowMetaPatches) {
|
|
3059
3183
|
// apply meta patch only when not already applied
|
|
3060
3184
|
if (typeof mergedElement.get('$$ref') === 'undefined') {
|
|
3061
|
-
const baseURI =
|
|
3185
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_6__.resolve(retrievalURI, $refBaseURI);
|
|
3062
3186
|
mergedElement.set('$$ref', baseURI);
|
|
3063
3187
|
}
|
|
3064
3188
|
}
|
|
3065
|
-
|
|
3066
|
-
}
|
|
3189
|
+
referencedElement = mergedElement;
|
|
3190
|
+
}
|
|
3067
3191
|
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
}
|
|
3076
|
-
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
|
|
3077
3199
|
}
|
|
3078
3200
|
|
|
3079
|
-
|
|
3080
|
-
|
|
3201
|
+
/**
|
|
3202
|
+
* We're at the root of the tree, so we're just replacing the entire tree.
|
|
3203
|
+
*/
|
|
3204
|
+
return !parent ? referencedElement : undefined;
|
|
3081
3205
|
} catch (error) {
|
|
3082
|
-
const rootCause = (0,
|
|
3206
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
3083
3207
|
const wrappedError = new _errors_index_js__WEBPACK_IMPORTED_MODULE_1__.SchemaRefError(`Could not resolve reference: ${rootCause.message}`, {
|
|
3084
3208
|
baseDoc: this.reference.uri,
|
|
3085
|
-
$ref: (0,
|
|
3086
|
-
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']
|
|
3087
3211
|
}, rootCause);
|
|
3088
3212
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
3089
3213
|
return undefined;
|
|
@@ -3099,13 +3223,13 @@ const OpenApi3_1SwaggerClientDereferenceVisitor = _swagger_api_apidom_reference_
|
|
|
3099
3223
|
},
|
|
3100
3224
|
async ExampleElement(exampleElement, key, parent, path, ancestors) {
|
|
3101
3225
|
try {
|
|
3102
|
-
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);
|
|
3103
3227
|
} catch (error) {
|
|
3104
|
-
const rootCause = (0,
|
|
3228
|
+
const rootCause = (0,_utils_get_root_cause_js__WEBPACK_IMPORTED_MODULE_19__["default"])(error);
|
|
3105
3229
|
const wrappedError = wrapError(rootCause, {
|
|
3106
3230
|
baseDoc: this.reference.uri,
|
|
3107
|
-
externalValue: (0,
|
|
3108
|
-
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']
|
|
3109
3233
|
});
|
|
3110
3234
|
this.options.dereference.dereferenceOpts?.errors?.push?.(wrappedError);
|
|
3111
3235
|
return undefined;
|
|
@@ -4081,23 +4205,26 @@ pojoAdapter.cache = new WeakMap();
|
|
|
4081
4205
|
"use strict";
|
|
4082
4206
|
__webpack_require__.r(__webpack_exports__);
|
|
4083
4207
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4208
|
+
/* harmony export */ circularReplacer: () => (/* binding */ circularReplacer),
|
|
4084
4209
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4085
4210
|
/* harmony export */ });
|
|
4086
|
-
/* harmony import */ var
|
|
4087
|
-
/* harmony import */ var
|
|
4088
|
-
/* harmony import */ var
|
|
4089
|
-
/* harmony import */ var
|
|
4090
|
-
/* harmony import */ var
|
|
4091
|
-
/* harmony import */ var
|
|
4092
|
-
/* harmony import */ var
|
|
4093
|
-
/* harmony import */ var
|
|
4094
|
-
/* harmony import */ var
|
|
4095
|
-
/* harmony import */ var
|
|
4096
|
-
/* harmony import */ var
|
|
4097
|
-
/* harmony import */ var
|
|
4098
|
-
/* harmony import */ var
|
|
4099
|
-
/* harmony import */ var
|
|
4100
|
-
/* 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);
|
|
4101
4228
|
/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3832);
|
|
4102
4229
|
/* harmony import */ var _utils_options_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(40428);
|
|
4103
4230
|
/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80947);
|
|
@@ -4123,6 +4250,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4123
4250
|
|
|
4124
4251
|
|
|
4125
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
|
+
};
|
|
4126
4265
|
const resolveOpenAPI31Strategy = async options => {
|
|
4127
4266
|
const {
|
|
4128
4267
|
spec,
|
|
@@ -4144,32 +4283,32 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4144
4283
|
} = resolveOpenAPI31Strategy;
|
|
4145
4284
|
|
|
4146
4285
|
// determining BaseURI
|
|
4147
|
-
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;
|
|
4148
4287
|
const retrievalURI = _utils_options_js__WEBPACK_IMPORTED_MODULE_1__.retrievalURI(options);
|
|
4149
|
-
const baseURI =
|
|
4288
|
+
const baseURI = _swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_12__.resolve(cwd, retrievalURI);
|
|
4150
4289
|
|
|
4151
4290
|
// prepare spec for dereferencing
|
|
4152
4291
|
let openApiElement;
|
|
4153
4292
|
if (cache.has(spec)) {
|
|
4154
4293
|
openApiElement = cache.get(spec);
|
|
4155
4294
|
} else {
|
|
4156
|
-
openApiElement =
|
|
4295
|
+
openApiElement = _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.OpenApi3_1Element.refract(spec);
|
|
4157
4296
|
openApiElement.classes.push('result');
|
|
4158
4297
|
cache.set(spec, openApiElement);
|
|
4159
4298
|
}
|
|
4160
|
-
const openApiParseResultElement = new
|
|
4299
|
+
const openApiParseResultElement = new _swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_10__.ParseResultElement([openApiElement]);
|
|
4161
4300
|
|
|
4162
4301
|
// prepare fragment for dereferencing
|
|
4163
|
-
const jsonPointer = (0,
|
|
4302
|
+
const jsonPointer = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_14__["default"])(pathDiscriminator);
|
|
4164
4303
|
const jsonPointerURI = jsonPointer === '' ? '' : `#${jsonPointer}`;
|
|
4165
|
-
const fragmentElement = (0,
|
|
4304
|
+
const fragmentElement = (0,_swagger_api_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_15__["default"])(jsonPointer, openApiElement);
|
|
4166
4305
|
|
|
4167
4306
|
// prepare reference set for dereferencing
|
|
4168
|
-
const openApiElementReference = (0,
|
|
4307
|
+
const openApiElementReference = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_16__["default"])({
|
|
4169
4308
|
uri: baseURI,
|
|
4170
4309
|
value: openApiParseResultElement
|
|
4171
4310
|
});
|
|
4172
|
-
const refSet = (0,
|
|
4311
|
+
const refSet = (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_17__["default"])({
|
|
4173
4312
|
refs: [openApiElementReference]
|
|
4174
4313
|
});
|
|
4175
4314
|
if (jsonPointer !== '') refSet.rootRef = null; // reset root reference as we want fragment to become the root reference
|
|
@@ -4177,7 +4316,7 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4177
4316
|
// prepare ancestors; needed for cases where fragment is not OpenAPI element
|
|
4178
4317
|
const ancestors = [new Set([fragmentElement])];
|
|
4179
4318
|
const errors = [];
|
|
4180
|
-
const dereferenced = await (0,
|
|
4319
|
+
const dereferenced = await (0,_swagger_api_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_18__.dereferenceApiDOM)(fragmentElement, {
|
|
4181
4320
|
resolve: {
|
|
4182
4321
|
/**
|
|
4183
4322
|
* swagger-client only supports resolving HTTP(S) URLs or spec objects.
|
|
@@ -4196,10 +4335,10 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4196
4335
|
responseInterceptor
|
|
4197
4336
|
}
|
|
4198
4337
|
},
|
|
4199
|
-
strategies: [(0,
|
|
4338
|
+
strategies: [(0,_swagger_api_apidom_reference_resolve_strategies_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__["default"])()]
|
|
4200
4339
|
},
|
|
4201
4340
|
parse: {
|
|
4202
|
-
mediaType:
|
|
4341
|
+
mediaType: _swagger_api_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__["default"].latest(),
|
|
4203
4342
|
parsers: [(0,_apidom_reference_parse_parsers_openapi_json_3_1_index_js__WEBPACK_IMPORTED_MODULE_6__["default"])({
|
|
4204
4343
|
allowEmpty: false,
|
|
4205
4344
|
sourceMap: false
|
|
@@ -4212,7 +4351,7 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4212
4351
|
}), (0,_apidom_reference_parse_parsers_yaml_1_2_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])({
|
|
4213
4352
|
allowEmpty: false,
|
|
4214
4353
|
sourceMap: false
|
|
4215
|
-
}), (0,
|
|
4354
|
+
}), (0,_swagger_api_apidom_reference_parse_parsers_binary__WEBPACK_IMPORTED_MODULE_21__["default"])({
|
|
4216
4355
|
allowEmpty: false,
|
|
4217
4356
|
sourceMap: false
|
|
4218
4357
|
})]
|
|
@@ -4231,17 +4370,19 @@ const resolveOpenAPI31Strategy = async options => {
|
|
|
4231
4370
|
dereferenceOpts: {
|
|
4232
4371
|
errors
|
|
4233
4372
|
},
|
|
4234
|
-
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
|
|
4235
4376
|
}
|
|
4236
4377
|
});
|
|
4237
|
-
const transcluded = (0,
|
|
4378
|
+
const transcluded = (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_23__.transclude)(fragmentElement, dereferenced, openApiElement);
|
|
4238
4379
|
const normalized = skipNormalization ? transcluded : (0,_normalize_js__WEBPACK_IMPORTED_MODULE_2__["default"])(transcluded);
|
|
4239
4380
|
return {
|
|
4240
|
-
spec: (0,
|
|
4381
|
+
spec: (0,_swagger_api_apidom_core__WEBPACK_IMPORTED_MODULE_9__["default"])(normalized),
|
|
4241
4382
|
errors
|
|
4242
4383
|
};
|
|
4243
4384
|
} catch (error) {
|
|
4244
|
-
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"]) {
|
|
4245
4386
|
return {
|
|
4246
4387
|
spec: null,
|
|
4247
4388
|
errors: []
|
|
@@ -16772,7 +16913,7 @@ var defaults = {
|
|
|
16772
16913
|
charset: 'utf-8',
|
|
16773
16914
|
charsetSentinel: false,
|
|
16774
16915
|
comma: false,
|
|
16775
|
-
decodeDotInKeys:
|
|
16916
|
+
decodeDotInKeys: false,
|
|
16776
16917
|
decoder: utils.decode,
|
|
16777
16918
|
delimiter: '&',
|
|
16778
16919
|
depth: 5,
|
|
@@ -17535,6 +17676,10 @@ var decode = function (str, decoder, charset) {
|
|
|
17535
17676
|
}
|
|
17536
17677
|
};
|
|
17537
17678
|
|
|
17679
|
+
var limit = 1024;
|
|
17680
|
+
|
|
17681
|
+
/* eslint operator-linebreak: [2, "before"] */
|
|
17682
|
+
|
|
17538
17683
|
var encode = function encode(str, defaultEncoder, charset, kind, format) {
|
|
17539
17684
|
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
|
|
17540
17685
|
// It has been adapted here for stricter adherence to RFC 3986
|
|
@@ -17556,45 +17701,54 @@ var encode = function encode(str, defaultEncoder, charset, kind, format) {
|
|
|
17556
17701
|
}
|
|
17557
17702
|
|
|
17558
17703
|
var out = '';
|
|
17559
|
-
for (var
|
|
17560
|
-
var
|
|
17561
|
-
|
|
17562
|
-
|
|
17563
|
-
|
|
17564
|
-
|
|
17565
|
-
|
|
17566
|
-
|
|
17567
|
-
|
|
17568
|
-
|
|
17569
|
-
|
|
17570
|
-
|
|
17571
|
-
|
|
17572
|
-
|
|
17573
|
-
|
|
17574
|
-
|
|
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
|
+
}
|
|
17575
17723
|
|
|
17576
|
-
|
|
17577
|
-
|
|
17578
|
-
|
|
17579
|
-
|
|
17724
|
+
if (c < 0x80) {
|
|
17725
|
+
arr[arr.length] = hexTable[c];
|
|
17726
|
+
continue;
|
|
17727
|
+
}
|
|
17580
17728
|
|
|
17581
|
-
|
|
17582
|
-
|
|
17583
|
-
|
|
17584
|
-
|
|
17729
|
+
if (c < 0x800) {
|
|
17730
|
+
arr[arr.length] = hexTable[0xC0 | (c >> 6)]
|
|
17731
|
+
+ hexTable[0x80 | (c & 0x3F)];
|
|
17732
|
+
continue;
|
|
17733
|
+
}
|
|
17585
17734
|
|
|
17586
|
-
|
|
17587
|
-
|
|
17588
|
-
|
|
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)];
|
|
17589
17749
|
}
|
|
17590
17750
|
|
|
17591
|
-
|
|
17592
|
-
c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
|
|
17593
|
-
/* eslint operator-linebreak: [2, "before"] */
|
|
17594
|
-
out += hexTable[0xF0 | (c >> 18)]
|
|
17595
|
-
+ hexTable[0x80 | ((c >> 12) & 0x3F)]
|
|
17596
|
-
+ hexTable[0x80 | ((c >> 6) & 0x3F)]
|
|
17597
|
-
+ hexTable[0x80 | (c & 0x3F)];
|
|
17751
|
+
out += arr.join('');
|
|
17598
17752
|
}
|
|
17599
17753
|
|
|
17600
17754
|
return out;
|