@speclynx/apidom-overlay 4.13.0 → 4.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/apidom-overlay.browser.js +1249 -83
- package/dist/apidom-overlay.browser.min.js +1 -1
- package/package.json +8 -8
|
@@ -77700,6 +77700,254 @@ const refractJsonSchemaDialect = (value, options = {}) => refract(value, {
|
|
|
77700
77700
|
});
|
|
77701
77701
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
|
|
77702
77702
|
|
|
77703
|
+
/***/ },
|
|
77704
|
+
|
|
77705
|
+
/***/ 52645
|
|
77706
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
77707
|
+
|
|
77708
|
+
"use strict";
|
|
77709
|
+
__webpack_require__.r(__webpack_exports__);
|
|
77710
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
77711
|
+
/* harmony export */ CallbackElement: () => (/* reexport safe */ _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
|
|
77712
|
+
/* harmony export */ ComponentsElement: () => (/* reexport safe */ _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
|
|
77713
|
+
/* harmony export */ ContactElement: () => (/* reexport safe */ _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
|
|
77714
|
+
/* harmony export */ DiscriminatorElement: () => (/* reexport safe */ _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
|
|
77715
|
+
/* harmony export */ EncodingElement: () => (/* reexport safe */ _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
|
|
77716
|
+
/* harmony export */ ExampleElement: () => (/* reexport safe */ _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
77717
|
+
/* harmony export */ ExternalDocumentationElement: () => (/* reexport safe */ _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
|
|
77718
|
+
/* harmony export */ HeaderElement: () => (/* reexport safe */ _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
|
|
77719
|
+
/* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
|
|
77720
|
+
/* harmony export */ JsonSchemaDialectElement: () => (/* reexport safe */ _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
|
|
77721
|
+
/* harmony export */ LicenseElement: () => (/* reexport safe */ _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
|
|
77722
|
+
/* harmony export */ LinkElement: () => (/* reexport safe */ _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
|
|
77723
|
+
/* harmony export */ MediaTypeElement: () => (/* reexport safe */ _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
|
|
77724
|
+
/* harmony export */ OAuthFlowElement: () => (/* reexport safe */ _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
|
|
77725
|
+
/* harmony export */ OAuthFlowsElement: () => (/* reexport safe */ _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
|
|
77726
|
+
/* harmony export */ OpenApi3_1Element: () => (/* reexport safe */ _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
|
|
77727
|
+
/* harmony export */ OpenapiElement: () => (/* reexport safe */ _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
|
|
77728
|
+
/* harmony export */ OperationElement: () => (/* reexport safe */ _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
|
|
77729
|
+
/* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
|
|
77730
|
+
/* harmony export */ PathItemElement: () => (/* reexport safe */ _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]),
|
|
77731
|
+
/* harmony export */ PathsElement: () => (/* reexport safe */ _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
|
|
77732
|
+
/* harmony export */ ReferenceElement: () => (/* reexport safe */ _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]),
|
|
77733
|
+
/* harmony export */ RequestBodyElement: () => (/* reexport safe */ _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]),
|
|
77734
|
+
/* harmony export */ ResponseElement: () => (/* reexport safe */ _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]),
|
|
77735
|
+
/* harmony export */ ResponsesElement: () => (/* reexport safe */ _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]),
|
|
77736
|
+
/* harmony export */ SchemaElement: () => (/* reexport safe */ _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"]),
|
|
77737
|
+
/* harmony export */ SecurityRequirementElement: () => (/* reexport safe */ _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]),
|
|
77738
|
+
/* harmony export */ SecuritySchemeElement: () => (/* reexport safe */ _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"]),
|
|
77739
|
+
/* harmony export */ ServerElement: () => (/* reexport safe */ _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"]),
|
|
77740
|
+
/* harmony export */ ServerVariableElement: () => (/* reexport safe */ _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]),
|
|
77741
|
+
/* harmony export */ TagElement: () => (/* reexport safe */ _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"]),
|
|
77742
|
+
/* harmony export */ XmlElement: () => (/* reexport safe */ _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"])
|
|
77743
|
+
/* harmony export */ });
|
|
77744
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
|
|
77745
|
+
/* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
|
|
77746
|
+
/* harmony import */ var _elements_Callback_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30422);
|
|
77747
|
+
/* harmony import */ var _elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68772);
|
|
77748
|
+
/* harmony import */ var _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16368);
|
|
77749
|
+
/* harmony import */ var _elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13456);
|
|
77750
|
+
/* harmony import */ var _elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67071);
|
|
77751
|
+
/* harmony import */ var _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(91210);
|
|
77752
|
+
/* harmony import */ var _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82753);
|
|
77753
|
+
/* harmony import */ var _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(10391);
|
|
77754
|
+
/* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80064);
|
|
77755
|
+
/* harmony import */ var _elements_JsonSchemaDialect_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(66035);
|
|
77756
|
+
/* harmony import */ var _elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(10673);
|
|
77757
|
+
/* harmony import */ var _elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64720);
|
|
77758
|
+
/* harmony import */ var _elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(91784);
|
|
77759
|
+
/* harmony import */ var _elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(73645);
|
|
77760
|
+
/* harmony import */ var _elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(28308);
|
|
77761
|
+
/* harmony import */ var _elements_Openapi_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(14540);
|
|
77762
|
+
/* harmony import */ var _elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(81793);
|
|
77763
|
+
/* harmony import */ var _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(54427);
|
|
77764
|
+
/* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(5849);
|
|
77765
|
+
/* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(43360);
|
|
77766
|
+
/* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(85652);
|
|
77767
|
+
/* harmony import */ var _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(36539);
|
|
77768
|
+
/* harmony import */ var _elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71387);
|
|
77769
|
+
/* harmony import */ var _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(51193);
|
|
77770
|
+
/* harmony import */ var _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(77080);
|
|
77771
|
+
/* harmony import */ var _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(26385);
|
|
77772
|
+
/* harmony import */ var _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(87051);
|
|
77773
|
+
/* harmony import */ var _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(3719);
|
|
77774
|
+
/* harmony import */ var _elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(93497);
|
|
77775
|
+
/* harmony import */ var _elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(7929);
|
|
77776
|
+
/* harmony import */ var _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(24224);
|
|
77777
|
+
/* harmony import */ var _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(10931);
|
|
77778
|
+
/* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(56110);
|
|
77779
|
+
|
|
77780
|
+
|
|
77781
|
+
|
|
77782
|
+
/**
|
|
77783
|
+
* OpenAPI 3.1 specification elements.
|
|
77784
|
+
*/
|
|
77785
|
+
|
|
77786
|
+
|
|
77787
|
+
|
|
77788
|
+
|
|
77789
|
+
|
|
77790
|
+
|
|
77791
|
+
|
|
77792
|
+
|
|
77793
|
+
|
|
77794
|
+
|
|
77795
|
+
|
|
77796
|
+
|
|
77797
|
+
|
|
77798
|
+
|
|
77799
|
+
|
|
77800
|
+
|
|
77801
|
+
|
|
77802
|
+
|
|
77803
|
+
|
|
77804
|
+
|
|
77805
|
+
|
|
77806
|
+
|
|
77807
|
+
|
|
77808
|
+
|
|
77809
|
+
|
|
77810
|
+
|
|
77811
|
+
|
|
77812
|
+
|
|
77813
|
+
|
|
77814
|
+
|
|
77815
|
+
|
|
77816
|
+
|
|
77817
|
+
|
|
77818
|
+
/**
|
|
77819
|
+
* @public
|
|
77820
|
+
*/
|
|
77821
|
+
// Resolve specification to dereference $ref pointers
|
|
77822
|
+
const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]);
|
|
77823
|
+
|
|
77824
|
+
// Extract fixed fields as list of { name, alias?, $visitor }
|
|
77825
|
+
const getFixedFields = fixedFieldsSpec => {
|
|
77826
|
+
return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
|
|
77827
|
+
if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
|
|
77828
|
+
return {
|
|
77829
|
+
name,
|
|
77830
|
+
...fieldSpec
|
|
77831
|
+
};
|
|
77832
|
+
}
|
|
77833
|
+
return {
|
|
77834
|
+
name,
|
|
77835
|
+
$visitor: fieldSpec
|
|
77836
|
+
};
|
|
77837
|
+
});
|
|
77838
|
+
};
|
|
77839
|
+
|
|
77840
|
+
// OpenAPI 3.1 specification elements
|
|
77841
|
+
Object.defineProperty(_elements_OpenApi3_1_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], 'fixedFields', {
|
|
77842
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
|
|
77843
|
+
enumerable: true
|
|
77844
|
+
});
|
|
77845
|
+
Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
|
|
77846
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
|
|
77847
|
+
enumerable: true
|
|
77848
|
+
});
|
|
77849
|
+
Object.defineProperty(_elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
|
|
77850
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
|
|
77851
|
+
enumerable: true
|
|
77852
|
+
});
|
|
77853
|
+
Object.defineProperty(_elements_License_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
|
|
77854
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
|
|
77855
|
+
enumerable: true
|
|
77856
|
+
});
|
|
77857
|
+
Object.defineProperty(_elements_Server_mjs__WEBPACK_IMPORTED_MODULE_30__["default"], 'fixedFields', {
|
|
77858
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
|
|
77859
|
+
enumerable: true
|
|
77860
|
+
});
|
|
77861
|
+
Object.defineProperty(_elements_ServerVariable_mjs__WEBPACK_IMPORTED_MODULE_31__["default"], 'fixedFields', {
|
|
77862
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
|
|
77863
|
+
enumerable: true
|
|
77864
|
+
});
|
|
77865
|
+
Object.defineProperty(_elements_Components_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], 'fixedFields', {
|
|
77866
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
|
|
77867
|
+
enumerable: true
|
|
77868
|
+
});
|
|
77869
|
+
Object.defineProperty(_elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], 'fixedFields', {
|
|
77870
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
|
|
77871
|
+
enumerable: true
|
|
77872
|
+
});
|
|
77873
|
+
Object.defineProperty(_elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], 'fixedFields', {
|
|
77874
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
|
|
77875
|
+
enumerable: true
|
|
77876
|
+
});
|
|
77877
|
+
Object.defineProperty(_elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
|
|
77878
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
|
|
77879
|
+
enumerable: true
|
|
77880
|
+
});
|
|
77881
|
+
Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], 'fixedFields', {
|
|
77882
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
|
|
77883
|
+
enumerable: true
|
|
77884
|
+
});
|
|
77885
|
+
Object.defineProperty(_elements_RequestBody_mjs__WEBPACK_IMPORTED_MODULE_24__["default"], 'fixedFields', {
|
|
77886
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
|
|
77887
|
+
enumerable: true
|
|
77888
|
+
});
|
|
77889
|
+
Object.defineProperty(_elements_MediaType_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
|
|
77890
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
|
|
77891
|
+
enumerable: true
|
|
77892
|
+
});
|
|
77893
|
+
Object.defineProperty(_elements_Encoding_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
|
|
77894
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
|
|
77895
|
+
enumerable: true
|
|
77896
|
+
});
|
|
77897
|
+
Object.defineProperty(_elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_26__["default"], 'fixedFields', {
|
|
77898
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
|
|
77899
|
+
enumerable: true
|
|
77900
|
+
});
|
|
77901
|
+
Object.defineProperty(_elements_Response_mjs__WEBPACK_IMPORTED_MODULE_25__["default"], 'fixedFields', {
|
|
77902
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
|
|
77903
|
+
enumerable: true
|
|
77904
|
+
});
|
|
77905
|
+
Object.defineProperty(_elements_Example_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], 'fixedFields', {
|
|
77906
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
|
|
77907
|
+
enumerable: true
|
|
77908
|
+
});
|
|
77909
|
+
Object.defineProperty(_elements_Link_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
|
|
77910
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
|
|
77911
|
+
enumerable: true
|
|
77912
|
+
});
|
|
77913
|
+
Object.defineProperty(_elements_Header_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
|
|
77914
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
|
|
77915
|
+
enumerable: true
|
|
77916
|
+
});
|
|
77917
|
+
Object.defineProperty(_elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_32__["default"], 'fixedFields', {
|
|
77918
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
|
|
77919
|
+
enumerable: true
|
|
77920
|
+
});
|
|
77921
|
+
Object.defineProperty(_elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_23__["default"], 'fixedFields', {
|
|
77922
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
|
|
77923
|
+
enumerable: true
|
|
77924
|
+
});
|
|
77925
|
+
Object.defineProperty(_elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_27__["default"], 'fixedFields', {
|
|
77926
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
|
|
77927
|
+
enumerable: true
|
|
77928
|
+
});
|
|
77929
|
+
Object.defineProperty(_elements_Discriminator_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
|
|
77930
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
|
|
77931
|
+
enumerable: true
|
|
77932
|
+
});
|
|
77933
|
+
Object.defineProperty(_elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_33__["default"], 'fixedFields', {
|
|
77934
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
|
|
77935
|
+
enumerable: true
|
|
77936
|
+
});
|
|
77937
|
+
Object.defineProperty(_elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_29__["default"], 'fixedFields', {
|
|
77938
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
|
|
77939
|
+
enumerable: true
|
|
77940
|
+
});
|
|
77941
|
+
Object.defineProperty(_elements_OAuthFlows_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], 'fixedFields', {
|
|
77942
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
|
|
77943
|
+
enumerable: true
|
|
77944
|
+
});
|
|
77945
|
+
Object.defineProperty(_elements_OAuthFlow_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], 'fixedFields', {
|
|
77946
|
+
get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
|
|
77947
|
+
enumerable: true
|
|
77948
|
+
});
|
|
77949
|
+
|
|
77950
|
+
|
|
77703
77951
|
/***/ },
|
|
77704
77952
|
|
|
77705
77953
|
/***/ 68201
|
|
@@ -92169,11 +92417,11 @@ class OpenAPI2BundleVisitor {
|
|
|
92169
92417
|
}
|
|
92170
92418
|
|
|
92171
92419
|
/**
|
|
92172
|
-
* Normalizes a self-
|
|
92420
|
+
* Normalizes a self-reference (e.g. `./root.json#/definitions/Pet`)
|
|
92173
92421
|
* to a bare fragment (`#/definitions/Pet`) so the bundled document stays
|
|
92174
92422
|
* transferable. Bare fragments are returned unchanged.
|
|
92175
92423
|
*/
|
|
92176
|
-
|
|
92424
|
+
normalizeSelfReference(ref) {
|
|
92177
92425
|
return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.getHash(ref);
|
|
92178
92426
|
}
|
|
92179
92427
|
|
|
@@ -92254,16 +92502,8 @@ class OpenAPI2BundleVisitor {
|
|
|
92254
92502
|
*/
|
|
92255
92503
|
basenameOf(jsonPointer, baseURI) {
|
|
92256
92504
|
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.parse)(jsonPointer).tree;
|
|
92257
|
-
|
|
92258
|
-
|
|
92259
|
-
const lastSlash = baseURI.lastIndexOf('/');
|
|
92260
|
-
const lastDot = baseURI.lastIndexOf('.');
|
|
92261
|
-
const fileName = baseURI.slice(lastSlash + 1);
|
|
92262
|
-
// strip the extension only when the last dot belongs to the file name
|
|
92263
|
-
candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
|
|
92264
|
-
}
|
|
92265
|
-
if (candidate === '') candidate = 'Schema';
|
|
92266
|
-
return candidate;
|
|
92505
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
92506
|
+
return lastToken || _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.getBasename(baseURI) || 'Schema';
|
|
92267
92507
|
}
|
|
92268
92508
|
|
|
92269
92509
|
/**
|
|
@@ -92318,9 +92558,9 @@ class OpenAPI2BundleVisitor {
|
|
|
92318
92558
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
92319
92559
|
const isExternalReference = !isInternalReference;
|
|
92320
92560
|
if (isInternalReference) {
|
|
92321
|
-
// normalize self-
|
|
92561
|
+
// normalize self-references to a bare fragment so the bundled
|
|
92322
92562
|
// document stays transferable; bare fragments are left untouched
|
|
92323
|
-
referencingElement.set('$ref', this.
|
|
92563
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
92324
92564
|
path.skip();
|
|
92325
92565
|
return;
|
|
92326
92566
|
}
|
|
@@ -92477,9 +92717,9 @@ class OpenAPI2BundleVisitor {
|
|
|
92477
92717
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
92478
92718
|
const isExternalReference = !isInternalReference;
|
|
92479
92719
|
if (isInternalReference) {
|
|
92480
|
-
// normalize self-
|
|
92720
|
+
// normalize self-references to a bare fragment so the bundled
|
|
92481
92721
|
// document stays transferable; bare fragments are left untouched
|
|
92482
|
-
pathItemElement.set('$ref', this.
|
|
92722
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
92483
92723
|
return;
|
|
92484
92724
|
}
|
|
92485
92725
|
|
|
@@ -92884,11 +93124,11 @@ class OpenAPI3_0BundleVisitor {
|
|
|
92884
93124
|
}
|
|
92885
93125
|
|
|
92886
93126
|
/**
|
|
92887
|
-
* Normalizes a self-
|
|
93127
|
+
* Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
|
|
92888
93128
|
* to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
|
|
92889
93129
|
* transferable. Bare fragments are returned unchanged.
|
|
92890
93130
|
*/
|
|
92891
|
-
|
|
93131
|
+
normalizeSelfReference(ref) {
|
|
92892
93132
|
return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.getHash(ref);
|
|
92893
93133
|
}
|
|
92894
93134
|
|
|
@@ -92974,16 +93214,8 @@ class OpenAPI3_0BundleVisitor {
|
|
|
92974
93214
|
*/
|
|
92975
93215
|
basenameOf(jsonPointer, baseURI) {
|
|
92976
93216
|
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.parse)(jsonPointer).tree;
|
|
92977
|
-
|
|
92978
|
-
|
|
92979
|
-
const lastSlash = baseURI.lastIndexOf('/');
|
|
92980
|
-
const lastDot = baseURI.lastIndexOf('.');
|
|
92981
|
-
const fileName = baseURI.slice(lastSlash + 1);
|
|
92982
|
-
// strip the extension only when the last dot belongs to the file name
|
|
92983
|
-
candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
|
|
92984
|
-
}
|
|
92985
|
-
if (candidate === '') candidate = 'Schema';
|
|
92986
|
-
return candidate;
|
|
93217
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
93218
|
+
return lastToken || _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.getBasename(baseURI) || 'Schema';
|
|
92987
93219
|
}
|
|
92988
93220
|
|
|
92989
93221
|
/**
|
|
@@ -93033,9 +93265,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
93033
93265
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
93034
93266
|
const isExternalReference = !isInternalReference;
|
|
93035
93267
|
if (isInternalReference) {
|
|
93036
|
-
// normalize self-
|
|
93268
|
+
// normalize self-references to a bare fragment so the bundled
|
|
93037
93269
|
// document stays transferable; bare fragments are left untouched
|
|
93038
|
-
referencingElement.set('$ref', this.
|
|
93270
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
93039
93271
|
path.skip();
|
|
93040
93272
|
return;
|
|
93041
93273
|
}
|
|
@@ -93177,9 +93409,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
93177
93409
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
93178
93410
|
const isExternalReference = !isInternalReference;
|
|
93179
93411
|
if (isInternalReference) {
|
|
93180
|
-
// normalize self-
|
|
93412
|
+
// normalize self-references to a bare fragment so the bundled
|
|
93181
93413
|
// document stays transferable; bare fragments are left untouched
|
|
93182
|
-
pathItemElement.set('$ref', this.
|
|
93414
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
93183
93415
|
return;
|
|
93184
93416
|
}
|
|
93185
93417
|
|
|
@@ -93324,9 +93556,9 @@ class OpenAPI3_0BundleVisitor {
|
|
|
93324
93556
|
const retrievalURI = this.toBaseURI(operationRef);
|
|
93325
93557
|
const isInternalReference = this.entryURI === retrievalURI;
|
|
93326
93558
|
if (isInternalReference) {
|
|
93327
|
-
// normalize self-
|
|
93559
|
+
// normalize a self-reference operationRef to a bare fragment so the bundled
|
|
93328
93560
|
// document stays transferable; bare fragments are left untouched
|
|
93329
|
-
linkElement.set('operationRef', this.
|
|
93561
|
+
linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
|
|
93330
93562
|
return;
|
|
93331
93563
|
}
|
|
93332
93564
|
|
|
@@ -93353,11 +93585,22 @@ class OpenAPI3_0BundleVisitor {
|
|
|
93353
93585
|
"use strict";
|
|
93354
93586
|
__webpack_require__.r(__webpack_exports__);
|
|
93355
93587
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
93588
|
+
/* harmony export */ OpenAPI3_1BundleVisitor: () => (/* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
93356
93589
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
93357
93590
|
/* harmony export */ });
|
|
93358
|
-
/* harmony import */ var
|
|
93359
|
-
/* harmony import */ var
|
|
93360
|
-
/* harmony import */ var
|
|
93591
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
|
|
93592
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
|
|
93593
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7822);
|
|
93594
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76332);
|
|
93595
|
+
/* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82302);
|
|
93596
|
+
/* harmony import */ var _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(88526);
|
|
93597
|
+
/* harmony import */ var _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(73723);
|
|
93598
|
+
/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(34081);
|
|
93599
|
+
|
|
93600
|
+
|
|
93601
|
+
|
|
93602
|
+
|
|
93603
|
+
|
|
93361
93604
|
|
|
93362
93605
|
|
|
93363
93606
|
/**
|
|
@@ -93366,7 +93609,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
93366
93609
|
/**
|
|
93367
93610
|
* @public
|
|
93368
93611
|
*/
|
|
93369
|
-
class OpenAPI3_1BundleStrategy extends
|
|
93612
|
+
class OpenAPI3_1BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
|
|
93370
93613
|
constructor(options) {
|
|
93371
93614
|
super({
|
|
93372
93615
|
...(options ?? {}),
|
|
@@ -93376,70 +93619,971 @@ class OpenAPI3_1BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MOD
|
|
|
93376
93619
|
canBundle(file) {
|
|
93377
93620
|
// assert by media type
|
|
93378
93621
|
if (file.mediaType !== 'text/plain') {
|
|
93379
|
-
return
|
|
93622
|
+
return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
|
|
93380
93623
|
}
|
|
93381
93624
|
|
|
93382
93625
|
// assert by inspecting ApiDOM
|
|
93383
|
-
return (0,
|
|
93626
|
+
return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_1Element)(file.parseResult?.result);
|
|
93384
93627
|
}
|
|
93385
|
-
async bundle(file) {
|
|
93386
|
-
|
|
93628
|
+
async bundle(file, options) {
|
|
93629
|
+
const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
|
93630
|
+
const mutableRefSet = new _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
|
93631
|
+
let refSet = immutableRefSet;
|
|
93632
|
+
let reference;
|
|
93633
|
+
|
|
93634
|
+
// determine the initial reference
|
|
93635
|
+
if (!immutableRefSet.has(file.uri)) {
|
|
93636
|
+
reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
93637
|
+
uri: file.uri,
|
|
93638
|
+
value: file.parseResult
|
|
93639
|
+
});
|
|
93640
|
+
immutableRefSet.add(reference);
|
|
93641
|
+
} else {
|
|
93642
|
+
// pre-computed refSet was provided as configuration option
|
|
93643
|
+
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
93644
|
+
}
|
|
93645
|
+
|
|
93646
|
+
/**
|
|
93647
|
+
* Clone refSet due the bundling process being mutable.
|
|
93648
|
+
* We don't want to mutate the original refSet and the references.
|
|
93649
|
+
*/
|
|
93650
|
+
if (options.bundle.immutable) {
|
|
93651
|
+
immutableRefSet.refs.map(ref => new _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
93652
|
+
...ref,
|
|
93653
|
+
value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(ref.value)
|
|
93654
|
+
})).forEach(ref => mutableRefSet.add(ref));
|
|
93655
|
+
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
93656
|
+
refSet = mutableRefSet;
|
|
93657
|
+
}
|
|
93658
|
+
const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]({
|
|
93659
|
+
reference: reference,
|
|
93660
|
+
options
|
|
93661
|
+
});
|
|
93662
|
+
await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
93663
|
+
mutable: true
|
|
93664
|
+
});
|
|
93665
|
+
const parseResult = reference.value;
|
|
93666
|
+
|
|
93667
|
+
/**
|
|
93668
|
+
* Release all memory if this refSet was not provided as a configuration option.
|
|
93669
|
+
* If provided as configuration option, then provider is responsible for cleanup.
|
|
93670
|
+
*/
|
|
93671
|
+
if (options.bundle.refSet === null) {
|
|
93672
|
+
immutableRefSet.clean();
|
|
93673
|
+
}
|
|
93674
|
+
mutableRefSet.clean();
|
|
93675
|
+
return parseResult;
|
|
93387
93676
|
}
|
|
93388
93677
|
}
|
|
93678
|
+
|
|
93389
93679
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
|
|
93390
93680
|
|
|
93391
93681
|
/***/ },
|
|
93392
93682
|
|
|
93393
|
-
/***/
|
|
93683
|
+
/***/ 34081
|
|
93394
93684
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
93395
93685
|
|
|
93396
93686
|
"use strict";
|
|
93397
93687
|
__webpack_require__.r(__webpack_exports__);
|
|
93398
93688
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
93399
|
-
/* harmony export */
|
|
93400
|
-
/* harmony export */ toPascalCase: () => (/* binding */ toPascalCase),
|
|
93401
|
-
/* harmony export */ uniqueName: () => (/* binding */ uniqueName)
|
|
93689
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
93402
93690
|
/* harmony export */ });
|
|
93403
|
-
|
|
93404
|
-
|
|
93405
|
-
|
|
93406
|
-
|
|
93407
|
-
|
|
93408
|
-
*/
|
|
93409
|
-
|
|
93691
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87009);
|
|
93692
|
+
/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6352);
|
|
93693
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25162);
|
|
93694
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12111);
|
|
93695
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97071);
|
|
93696
|
+
/* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(84660);
|
|
93697
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37205);
|
|
93698
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44673);
|
|
93699
|
+
/* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(16280);
|
|
93700
|
+
/* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44641);
|
|
93701
|
+
/* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(80796);
|
|
93702
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12020);
|
|
93703
|
+
/* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(61198);
|
|
93704
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(21314);
|
|
93705
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24329);
|
|
93706
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(29881);
|
|
93707
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(76332);
|
|
93708
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
|
|
93709
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(52645);
|
|
93710
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(23031);
|
|
93711
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(63842);
|
|
93712
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(87455);
|
|
93713
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(16363);
|
|
93714
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(55122);
|
|
93715
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(71117);
|
|
93716
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(72257);
|
|
93717
|
+
/* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(69511);
|
|
93718
|
+
/* harmony import */ var _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(89693);
|
|
93719
|
+
/* harmony import */ var _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(34968);
|
|
93720
|
+
/* harmony import */ var _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(55086);
|
|
93721
|
+
/* harmony import */ var _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(10476);
|
|
93722
|
+
/* harmony import */ var _errors_EvaluationJsonSchemaUriError_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(22820);
|
|
93723
|
+
/* harmony import */ var _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(18917);
|
|
93724
|
+
/* harmony import */ var _parse_index_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(85533);
|
|
93725
|
+
/* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(82302);
|
|
93726
|
+
/* harmony import */ var _File_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(29217);
|
|
93727
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_selectors_$anchor_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(10533);
|
|
93728
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_selectors_uri_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(92500);
|
|
93729
|
+
/* harmony import */ var _dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(29587);
|
|
93730
|
+
/* harmony import */ var _util_mjs__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(78814);
|
|
93410
93731
|
|
|
93411
|
-
/**
|
|
93412
|
-
* Replaces characters that are invalid in a Components Object name with `-`,
|
|
93413
|
-
* then collapses repeated separators and trims leading/trailing ones.
|
|
93414
|
-
*
|
|
93415
|
-
* @public
|
|
93416
|
-
*/
|
|
93417
|
-
const sanitizeComponentName = value => value.replace(/[^a-zA-Z0-9.\-_]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');
|
|
93418
93732
|
|
|
93419
|
-
/**
|
|
93420
|
-
* Returns a collision-free name by suffixing `-2`, `-3`, ... onto `candidate`
|
|
93421
|
-
* until `isTaken` reports it free. `isTaken` decides what counts as taken
|
|
93422
|
-
* (e.g. names already placed in or reserved for a Components Object field).
|
|
93423
|
-
*
|
|
93424
|
-
* @public
|
|
93425
|
-
*/
|
|
93426
|
-
const uniqueName = (candidate, isTaken) => {
|
|
93427
|
-
if (!isTaken(candidate)) {
|
|
93428
|
-
return candidate;
|
|
93429
|
-
}
|
|
93430
|
-
let counter = 2;
|
|
93431
|
-
while (isTaken(`${candidate}-${counter}`)) {
|
|
93432
|
-
counter += 1;
|
|
93433
|
-
}
|
|
93434
|
-
return `${candidate}-${counter}`;
|
|
93435
|
-
};
|
|
93436
93733
|
|
|
93437
|
-
/***/ },
|
|
93438
93734
|
|
|
93439
|
-
/***/ 29807
|
|
93440
|
-
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
93441
93735
|
|
|
93442
|
-
|
|
93736
|
+
|
|
93737
|
+
|
|
93738
|
+
|
|
93739
|
+
|
|
93740
|
+
|
|
93741
|
+
|
|
93742
|
+
|
|
93743
|
+
|
|
93744
|
+
|
|
93745
|
+
|
|
93746
|
+
|
|
93747
|
+
|
|
93748
|
+
|
|
93749
|
+
|
|
93750
|
+
|
|
93751
|
+
/**
|
|
93752
|
+
* Maps the `referenced-element` meta value (set during refraction) to the
|
|
93753
|
+
* Components Object field where the referenced element should be hoisted.
|
|
93754
|
+
* Field names are sourced from the Components Object fixed fields so they
|
|
93755
|
+
* cannot drift from the namespace definition.
|
|
93756
|
+
*/
|
|
93757
|
+
const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__.fixedFields)(_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement, {
|
|
93758
|
+
indexed: true
|
|
93759
|
+
});
|
|
93760
|
+
const componentFieldByReferencedElement = {
|
|
93761
|
+
schema: cf.schemas.name,
|
|
93762
|
+
response: cf.responses.name,
|
|
93763
|
+
parameter: cf.parameters.name,
|
|
93764
|
+
example: cf.examples.name,
|
|
93765
|
+
requestBody: cf.requestBodies.name,
|
|
93766
|
+
header: cf.headers.name,
|
|
93767
|
+
securityScheme: cf.securitySchemes.name,
|
|
93768
|
+
link: cf.links.name,
|
|
93769
|
+
callback: cf.callbacks.name,
|
|
93770
|
+
pathItem: cf.pathItems.name
|
|
93771
|
+
};
|
|
93772
|
+
|
|
93773
|
+
/**
|
|
93774
|
+
* Maps a Components Object field to the named-content element the namespace
|
|
93775
|
+
* uses for it, so a bundle-created field matches a parsed/refracted one
|
|
93776
|
+
* (e.g. carries the `components-schemas` class) rather than being a generic
|
|
93777
|
+
* object.
|
|
93778
|
+
*/
|
|
93779
|
+
const componentFieldElementByField = {
|
|
93780
|
+
[cf.schemas.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_25__["default"],
|
|
93781
|
+
[cf.responses.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_24__["default"],
|
|
93782
|
+
[cf.parameters.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_21__["default"],
|
|
93783
|
+
[cf.examples.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_17__["default"],
|
|
93784
|
+
[cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_23__["default"],
|
|
93785
|
+
[cf.headers.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_19__["default"],
|
|
93786
|
+
[cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_26__["default"],
|
|
93787
|
+
[cf.links.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_20__["default"],
|
|
93788
|
+
[cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_15__["default"],
|
|
93789
|
+
[cf.pathItems.name]: _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_22__["default"]
|
|
93790
|
+
};
|
|
93791
|
+
|
|
93792
|
+
/**
|
|
93793
|
+
* @public
|
|
93794
|
+
*/
|
|
93795
|
+
|
|
93796
|
+
/**
|
|
93797
|
+
* @public
|
|
93798
|
+
*/
|
|
93799
|
+
class OpenAPI3_1BundleVisitor {
|
|
93800
|
+
reference;
|
|
93801
|
+
options;
|
|
93802
|
+
|
|
93803
|
+
/**
|
|
93804
|
+
* The base URI (without hash) of the entry document. A reference is
|
|
93805
|
+
* considered internal when it resolves to this URI and external otherwise.
|
|
93806
|
+
* Derived from the shared refSet's root reference.
|
|
93807
|
+
*/
|
|
93808
|
+
get entryURI() {
|
|
93809
|
+
return _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
|
|
93810
|
+
}
|
|
93811
|
+
|
|
93812
|
+
/**
|
|
93813
|
+
* The entry parse result. Derived from the shared refSet's root reference.
|
|
93814
|
+
*/
|
|
93815
|
+
get entryParseResult() {
|
|
93816
|
+
return this.reference.refSet.rootRef.value;
|
|
93817
|
+
}
|
|
93818
|
+
|
|
93819
|
+
/**
|
|
93820
|
+
* The entry document element. Hoisted external fragments are placed into its
|
|
93821
|
+
* `components` object. The `canBundle` guard guarantees it is an
|
|
93822
|
+
* OpenApi3_1Element.
|
|
93823
|
+
*/
|
|
93824
|
+
get entryResult() {
|
|
93825
|
+
return this.entryParseResult.result;
|
|
93826
|
+
}
|
|
93827
|
+
|
|
93828
|
+
/**
|
|
93829
|
+
* Shared across the entry document and every external document visitor.
|
|
93830
|
+
* Guarantees each external fragment is hoisted exactly once and gives us a
|
|
93831
|
+
* stable internal pointer to rewrite every referencing element to.
|
|
93832
|
+
*/
|
|
93833
|
+
assignments;
|
|
93834
|
+
|
|
93835
|
+
/**
|
|
93836
|
+
* Component names already reserved per Components Object field. Reserved
|
|
93837
|
+
* before recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
|
|
93838
|
+
* components that are still being bundled.
|
|
93839
|
+
*/
|
|
93840
|
+
reservedNames;
|
|
93841
|
+
|
|
93842
|
+
/**
|
|
93843
|
+
* Caches refracted fragments keyed by source element and target element type.
|
|
93844
|
+
* The type is part of the key because the same source can be refracted into
|
|
93845
|
+
* different semantic elements depending on the referencing context (e.g. a
|
|
93846
|
+
* generic object referenced once as a Parameter and once as a Response).
|
|
93847
|
+
*/
|
|
93848
|
+
refractCache;
|
|
93849
|
+
constructor({
|
|
93850
|
+
reference,
|
|
93851
|
+
options,
|
|
93852
|
+
assignments = new Map(),
|
|
93853
|
+
reservedNames = new Map(),
|
|
93854
|
+
refractCache = new WeakMap()
|
|
93855
|
+
}) {
|
|
93856
|
+
this.reference = reference;
|
|
93857
|
+
this.options = options;
|
|
93858
|
+
this.assignments = assignments;
|
|
93859
|
+
this.reservedNames = reservedNames;
|
|
93860
|
+
this.refractCache = refractCache;
|
|
93861
|
+
}
|
|
93862
|
+
getRefracted(source, type) {
|
|
93863
|
+
return this.refractCache.get(source)?.get(type);
|
|
93864
|
+
}
|
|
93865
|
+
setRefracted(source, type, refracted) {
|
|
93866
|
+
let byType = this.refractCache.get(source);
|
|
93867
|
+
if (byType === undefined) {
|
|
93868
|
+
byType = new Map();
|
|
93869
|
+
this.refractCache.set(source, byType);
|
|
93870
|
+
}
|
|
93871
|
+
byType.set(type, refracted);
|
|
93872
|
+
}
|
|
93873
|
+
toBaseURI(uri) {
|
|
93874
|
+
return _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.sanitize(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(uri)));
|
|
93875
|
+
}
|
|
93876
|
+
async toReference(uri) {
|
|
93877
|
+
// detect maximum depth of resolution
|
|
93878
|
+
if (this.reference.depth >= this.options.resolve.maxDepth) {
|
|
93879
|
+
throw new _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_30__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
|
|
93880
|
+
maxDepth: this.options.resolve.maxDepth,
|
|
93881
|
+
uri: this.reference.uri
|
|
93882
|
+
});
|
|
93883
|
+
}
|
|
93884
|
+
const baseURI = this.toBaseURI(uri);
|
|
93885
|
+
const {
|
|
93886
|
+
refSet
|
|
93887
|
+
} = this.reference;
|
|
93888
|
+
|
|
93889
|
+
// we've already processed this Reference in past
|
|
93890
|
+
if (refSet.has(baseURI)) {
|
|
93891
|
+
return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURI, 'uri'));
|
|
93892
|
+
}
|
|
93893
|
+
const parseResult = await (0,_parse_index_mjs__WEBPACK_IMPORTED_MODULE_33__["default"])(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.unsanitize(baseURI), {
|
|
93894
|
+
...this.options,
|
|
93895
|
+
parse: {
|
|
93896
|
+
...this.options.parse,
|
|
93897
|
+
mediaType: 'text/plain'
|
|
93898
|
+
}
|
|
93899
|
+
});
|
|
93900
|
+
const reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]({
|
|
93901
|
+
uri: baseURI,
|
|
93902
|
+
value: parseResult,
|
|
93903
|
+
depth: this.reference.depth + 1
|
|
93904
|
+
});
|
|
93905
|
+
refSet.add(reference);
|
|
93906
|
+
return reference;
|
|
93907
|
+
}
|
|
93908
|
+
|
|
93909
|
+
/**
|
|
93910
|
+
* Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
|
|
93911
|
+
* to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
|
|
93912
|
+
* transferable. Bare fragments are returned unchanged.
|
|
93913
|
+
*/
|
|
93914
|
+
normalizeSelfReference(ref) {
|
|
93915
|
+
return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.getHash(ref);
|
|
93916
|
+
}
|
|
93917
|
+
|
|
93918
|
+
/**
|
|
93919
|
+
* Handles an error according to the `bundle.continueOnError` option.
|
|
93920
|
+
*
|
|
93921
|
+
* For new errors: wraps in UnresolvableReferenceError with structured
|
|
93922
|
+
* context. For errors already wrapped by a nested visitor: prepends the
|
|
93923
|
+
* current hop to the trace.
|
|
93924
|
+
*
|
|
93925
|
+
* Inner/intermediate visitors always throw to let the trace accumulate. Only
|
|
93926
|
+
* the entry document visitor respects continueOnError (callback/swallow/throw).
|
|
93927
|
+
*/
|
|
93928
|
+
handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
|
|
93929
|
+
// a collision reported as `error` is a deliberate hard stop with no
|
|
93930
|
+
// resolution-failure analog, so pass it through unchanged. A maxDepth
|
|
93931
|
+
// breach (MaximumBundleDepthError, which also extends BundleError) is a
|
|
93932
|
+
// resolution failure and flows through below — wrapped and subject to
|
|
93933
|
+
// continueOnError, like dereferencing.
|
|
93934
|
+
if (error instanceof _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"] && !(error instanceof _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__["default"])) {
|
|
93935
|
+
throw error;
|
|
93936
|
+
}
|
|
93937
|
+
const {
|
|
93938
|
+
continueOnError
|
|
93939
|
+
} = this.options.bundle;
|
|
93940
|
+
const isEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
|
|
93941
|
+
const uri = this.reference.uri;
|
|
93942
|
+
const type = referencingElement.element;
|
|
93943
|
+
const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement);
|
|
93944
|
+
const location = visitorPath.formatPath();
|
|
93945
|
+
const hop = {
|
|
93946
|
+
uri,
|
|
93947
|
+
type,
|
|
93948
|
+
refFieldName,
|
|
93949
|
+
refFieldValue,
|
|
93950
|
+
location,
|
|
93951
|
+
codeFrame
|
|
93952
|
+
};
|
|
93953
|
+
let unresolvedError;
|
|
93954
|
+
if (error instanceof _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]) {
|
|
93955
|
+
// @ts-ignore
|
|
93956
|
+
error.trace = [hop, ...error.trace];
|
|
93957
|
+
unresolvedError = error;
|
|
93958
|
+
} else {
|
|
93959
|
+
unresolvedError = new _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](message, {
|
|
93960
|
+
cause: error,
|
|
93961
|
+
type,
|
|
93962
|
+
uri,
|
|
93963
|
+
location,
|
|
93964
|
+
codeFrame,
|
|
93965
|
+
refFieldName,
|
|
93966
|
+
refFieldValue,
|
|
93967
|
+
trace: []
|
|
93968
|
+
});
|
|
93969
|
+
}
|
|
93970
|
+
if (!isEntryDocument || continueOnError === false) throw unresolvedError;
|
|
93971
|
+
if (typeof continueOnError === 'function') continueOnError(unresolvedError);
|
|
93972
|
+
}
|
|
93973
|
+
|
|
93974
|
+
/**
|
|
93975
|
+
* Lazily creates the Components Object (and the requested field within it)
|
|
93976
|
+
* on the entry document, returning the field where a fragment is hoisted.
|
|
93977
|
+
*/
|
|
93978
|
+
ensureComponentsField(field) {
|
|
93979
|
+
const entryResult = this.entryResult;
|
|
93980
|
+
let components = entryResult.components;
|
|
93981
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(components)) {
|
|
93982
|
+
components = new _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_18__.ComponentsElement();
|
|
93983
|
+
entryResult.components = components;
|
|
93984
|
+
}
|
|
93985
|
+
let fieldElement = components.get(field);
|
|
93986
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(fieldElement)) {
|
|
93987
|
+
const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"];
|
|
93988
|
+
fieldElement = new FieldElement();
|
|
93989
|
+
components.set(field, fieldElement);
|
|
93990
|
+
}
|
|
93991
|
+
return fieldElement;
|
|
93992
|
+
}
|
|
93993
|
+
|
|
93994
|
+
/**
|
|
93995
|
+
* Derives a component name from the referenced JSON Pointer's last token,
|
|
93996
|
+
* falling back to the referenced file's basename.
|
|
93997
|
+
*/
|
|
93998
|
+
basenameOf(jsonPointer, baseURI) {
|
|
93999
|
+
const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.parse)(jsonPointer).tree;
|
|
94000
|
+
const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
|
|
94001
|
+
return lastToken || _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.getBasename(baseURI) || 'Schema';
|
|
94002
|
+
}
|
|
94003
|
+
|
|
94004
|
+
/**
|
|
94005
|
+
* Computes the base component name (before collision suffixing) according to
|
|
94006
|
+
* the configured naming strategy.
|
|
94007
|
+
*/
|
|
94008
|
+
baseName(element, field, jsonPointer, baseURI) {
|
|
94009
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
94010
|
+
const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-1']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
|
|
94011
|
+
if (typeof componentNamesStrategy === 'function') {
|
|
94012
|
+
const resolved = componentNamesStrategy({
|
|
94013
|
+
element,
|
|
94014
|
+
field,
|
|
94015
|
+
jsonPointer,
|
|
94016
|
+
baseURI
|
|
94017
|
+
});
|
|
94018
|
+
if (typeof resolved === 'string' && resolved !== '') {
|
|
94019
|
+
return resolved;
|
|
94020
|
+
}
|
|
94021
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
94022
|
+
}
|
|
94023
|
+
if (componentNamesStrategy === 'title') {
|
|
94024
|
+
const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(element.get('title')) : undefined;
|
|
94025
|
+
if (typeof title === 'string' && title.trim() !== '') {
|
|
94026
|
+
const name = (0,_util_mjs__WEBPACK_IMPORTED_MODULE_39__.sanitizeComponentName)((0,_util_mjs__WEBPACK_IMPORTED_MODULE_39__.toPascalCase)(title));
|
|
94027
|
+
if (name !== '') return name;
|
|
94028
|
+
}
|
|
94029
|
+
// fall back to basename when no usable title is present
|
|
94030
|
+
}
|
|
94031
|
+
return this.basenameOf(jsonPointer, baseURI);
|
|
94032
|
+
}
|
|
94033
|
+
|
|
94034
|
+
/**
|
|
94035
|
+
* Computes a collision-free component name within the target field. A name is
|
|
94036
|
+
* taken if it's already placed in components or reserved by a component that
|
|
94037
|
+
* is still being bundled (reserved before recursion).
|
|
94038
|
+
*/
|
|
94039
|
+
uniqueName(candidate, field) {
|
|
94040
|
+
const fieldElement = this.ensureComponentsField(field);
|
|
94041
|
+
const reserved = this.reservedNames.get(field) ?? new Set();
|
|
94042
|
+
return (0,_util_mjs__WEBPACK_IMPORTED_MODULE_39__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
|
|
94043
|
+
}
|
|
94044
|
+
|
|
94045
|
+
/**
|
|
94046
|
+
* Reports a collision-forced rename according to the configured severity.
|
|
94047
|
+
* A rename means two distinct targets resolved to the same name; each keeps
|
|
94048
|
+
* its own component (and origin), so report the rename per severity.
|
|
94049
|
+
*/
|
|
94050
|
+
reportNameCollision(preferredName, componentName, field) {
|
|
94051
|
+
// strategy specific options take precedence over the top-level bundle options
|
|
94052
|
+
const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-1']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
|
|
94053
|
+
if (componentName === preferredName || onComponentNameCollision === 'off') {
|
|
94054
|
+
return;
|
|
94055
|
+
}
|
|
94056
|
+
const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
|
|
94057
|
+
if (onComponentNameCollision === 'error') {
|
|
94058
|
+
throw new _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](message);
|
|
94059
|
+
}
|
|
94060
|
+
const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_5__["default"](message);
|
|
94061
|
+
annotation.classes.push('warning');
|
|
94062
|
+
annotation.code = 'bundle-component-name-collision';
|
|
94063
|
+
// append (never prepend) so the result element stays ahead of annotations
|
|
94064
|
+
this.entryParseResult.content.push(annotation);
|
|
94065
|
+
}
|
|
94066
|
+
async ReferenceElement(path) {
|
|
94067
|
+
const referencingElement = path.node;
|
|
94068
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
|
|
94069
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
94070
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
94071
|
+
const isExternalReference = !isInternalReference;
|
|
94072
|
+
if (isInternalReference) {
|
|
94073
|
+
// normalize self-references to a bare fragment so the bundled
|
|
94074
|
+
// document stays transferable; bare fragments are left untouched
|
|
94075
|
+
referencingElement.set('$ref', this.normalizeSelfReference($ref));
|
|
94076
|
+
path.skip();
|
|
94077
|
+
return;
|
|
94078
|
+
}
|
|
94079
|
+
|
|
94080
|
+
// honor the resolve.external switch
|
|
94081
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
94082
|
+
path.skip();
|
|
94083
|
+
return;
|
|
94084
|
+
}
|
|
94085
|
+
const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
|
|
94086
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
94087
|
+
|
|
94088
|
+
// the target bucket depends on the referencing context, so it's part of the
|
|
94089
|
+
// identity: the same external target referenced as e.g. both a parameter and
|
|
94090
|
+
// a response must be hoisted into both components fields. The refractor sets
|
|
94091
|
+
// `referenced-element` for every Reference Object position; the `schemas`
|
|
94092
|
+
// fallback is a defensive default for the (unexpected) untagged case.
|
|
94093
|
+
const referencedElementType = referencingElement.meta.get('referenced-element');
|
|
94094
|
+
const field = componentFieldByReferencedElement[referencedElementType] ?? componentFieldByReferencedElement.schema;
|
|
94095
|
+
const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
|
|
94096
|
+
|
|
94097
|
+
// already hoisted (or being hoisted) — just rewrite the pointer.
|
|
94098
|
+
//
|
|
94099
|
+
// this is also how circular references terminate: the assignment is
|
|
94100
|
+
// reserved BEFORE recursing into the fragment (see below), so a reference
|
|
94101
|
+
// that cycles back (directly or indirectly) finds its pointer already
|
|
94102
|
+
// reserved here and is rewritten without recursing. Cycles are deliberately
|
|
94103
|
+
// preserved as internal `$ref`s pointing at each other — that is valid,
|
|
94104
|
+
// serializable output; resolving the cycle (if desired) is dereferencing's
|
|
94105
|
+
// job, not bundling's.
|
|
94106
|
+
if (this.assignments.has(canonicalKey)) {
|
|
94107
|
+
referencingElement.set('$ref', this.assignments.get(canonicalKey));
|
|
94108
|
+
path.skip();
|
|
94109
|
+
return;
|
|
94110
|
+
}
|
|
94111
|
+
try {
|
|
94112
|
+
// detect maximum depth of bundling
|
|
94113
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
94114
|
+
throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
|
|
94115
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
94116
|
+
uri: this.reference.uri
|
|
94117
|
+
});
|
|
94118
|
+
}
|
|
94119
|
+
const reference = await this.toReference($ref);
|
|
94120
|
+
|
|
94121
|
+
// possibly non-semantic fragment
|
|
94122
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
|
|
94123
|
+
|
|
94124
|
+
// apply semantics to the fragment so nested references become Reference Objects
|
|
94125
|
+
if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement)) {
|
|
94126
|
+
const cached = this.getRefracted(referencedElement, referencedElementType);
|
|
94127
|
+
if (cached !== undefined) {
|
|
94128
|
+
referencedElement = cached;
|
|
94129
|
+
} else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.isReferenceLikeElement)(referencedElement)) {
|
|
94130
|
+
const sourceElement = referencedElement;
|
|
94131
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractReference)(referencedElement);
|
|
94132
|
+
referencedElement.meta.set('referenced-element', referencedElementType);
|
|
94133
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
94134
|
+
} else {
|
|
94135
|
+
const sourceElement = referencedElement;
|
|
94136
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__["default"])(referencedElement, {
|
|
94137
|
+
element: referencedElementType
|
|
94138
|
+
});
|
|
94139
|
+
this.setRefracted(sourceElement, referencedElementType, referencedElement);
|
|
94140
|
+
}
|
|
94141
|
+
}
|
|
94142
|
+
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
94143
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
94144
|
+
const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
|
|
94145
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
94146
|
+
|
|
94147
|
+
// reserve the assignment and component name before recursing so cyclic
|
|
94148
|
+
// references terminate
|
|
94149
|
+
this.assignments.set(canonicalKey, internalPointer);
|
|
94150
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
94151
|
+
this.reservedNames.get(field).add(componentName);
|
|
94152
|
+
|
|
94153
|
+
// own a copy of the fragment and bundle its own external references
|
|
94154
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
|
|
94155
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
94156
|
+
reference,
|
|
94157
|
+
options: this.options,
|
|
94158
|
+
assignments: this.assignments,
|
|
94159
|
+
reservedNames: this.reservedNames,
|
|
94160
|
+
refractCache: this.refractCache
|
|
94161
|
+
});
|
|
94162
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
|
|
94163
|
+
mutable: true
|
|
94164
|
+
});
|
|
94165
|
+
|
|
94166
|
+
// annotate the hoisted fragment with info about its origin
|
|
94167
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isElement)(bundledElement)) {
|
|
94168
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
94169
|
+
}
|
|
94170
|
+
|
|
94171
|
+
// place the bundled fragment into the entry document's components
|
|
94172
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
94173
|
+
|
|
94174
|
+
// rewrite the referencing element to point at the hoisted fragment
|
|
94175
|
+
referencingElement.set('$ref', internalPointer);
|
|
94176
|
+
path.skip();
|
|
94177
|
+
} catch (error) {
|
|
94178
|
+
this.handleError(`Error while bundling Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
94179
|
+
path.skip();
|
|
94180
|
+
}
|
|
94181
|
+
}
|
|
94182
|
+
|
|
94183
|
+
/**
|
|
94184
|
+
* Unlike OpenAPI 3.0 (which has no `components.pathItems` field and therefore
|
|
94185
|
+
* inlines external Path Items in place), OpenAPI 3.1 hoists an external Path
|
|
94186
|
+
* Item Object into `components.pathItems` and rewrites the referencing `$ref`
|
|
94187
|
+
* to an internal pointer — mirroring how Reference Objects are bundled.
|
|
94188
|
+
* Sibling fields next to the `$ref` (e.g. `summary`, `description`) are kept
|
|
94189
|
+
* on the referencing element.
|
|
94190
|
+
*/
|
|
94191
|
+
async PathItemElement(path) {
|
|
94192
|
+
const pathItemElement = path.node;
|
|
94193
|
+
|
|
94194
|
+
// ignore Path Item Objects without a $ref field
|
|
94195
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(pathItemElement.$ref)) {
|
|
94196
|
+
return;
|
|
94197
|
+
}
|
|
94198
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(pathItemElement.$ref);
|
|
94199
|
+
const retrievalURI = this.toBaseURI($ref);
|
|
94200
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
94201
|
+
const isExternalReference = !isInternalReference;
|
|
94202
|
+
if (isInternalReference) {
|
|
94203
|
+
// normalize self-references to a bare fragment so the bundled
|
|
94204
|
+
// document stays transferable; bare fragments are left untouched
|
|
94205
|
+
pathItemElement.set('$ref', this.normalizeSelfReference($ref));
|
|
94206
|
+
path.skip();
|
|
94207
|
+
return;
|
|
94208
|
+
}
|
|
94209
|
+
|
|
94210
|
+
// honor the resolve.external switch
|
|
94211
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
94212
|
+
path.skip();
|
|
94213
|
+
return;
|
|
94214
|
+
}
|
|
94215
|
+
const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.resolve(retrievalURI, $ref);
|
|
94216
|
+
const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
94217
|
+
const field = cf.pathItems.name;
|
|
94218
|
+
const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
|
|
94219
|
+
|
|
94220
|
+
// already hoisted (or being hoisted) — just rewrite the pointer. The
|
|
94221
|
+
// assignment is reserved BEFORE recursing, so a circular Path Item chain
|
|
94222
|
+
// terminates here with an internal pointer instead of recursing forever.
|
|
94223
|
+
if (this.assignments.has(canonicalKey)) {
|
|
94224
|
+
pathItemElement.set('$ref', this.assignments.get(canonicalKey));
|
|
94225
|
+
path.skip();
|
|
94226
|
+
return;
|
|
94227
|
+
}
|
|
94228
|
+
try {
|
|
94229
|
+
// detect maximum depth of bundling
|
|
94230
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
94231
|
+
throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
|
|
94232
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
94233
|
+
uri: this.reference.uri
|
|
94234
|
+
});
|
|
94235
|
+
}
|
|
94236
|
+
const reference = await this.toReference($ref);
|
|
94237
|
+
let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
|
|
94238
|
+
|
|
94239
|
+
// apply Path Item semantics to the referenced fragment
|
|
94240
|
+
if (!(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement)) {
|
|
94241
|
+
const cached = this.getRefracted(referencedElement, 'pathItem');
|
|
94242
|
+
if (cached !== undefined) {
|
|
94243
|
+
referencedElement = cached;
|
|
94244
|
+
} else {
|
|
94245
|
+
const sourceElement = referencedElement;
|
|
94246
|
+
referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractPathItem)(referencedElement);
|
|
94247
|
+
this.setRefracted(sourceElement, 'pathItem', referencedElement);
|
|
94248
|
+
}
|
|
94249
|
+
}
|
|
94250
|
+
const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
|
|
94251
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
94252
|
+
const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
|
|
94253
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
94254
|
+
|
|
94255
|
+
// reserve the assignment and component name before recursing so cyclic
|
|
94256
|
+
// references terminate
|
|
94257
|
+
this.assignments.set(canonicalKey, internalPointer);
|
|
94258
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
94259
|
+
this.reservedNames.get(field).add(componentName);
|
|
94260
|
+
|
|
94261
|
+
// own a copy of the fragment and bundle its own external references
|
|
94262
|
+
const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
|
|
94263
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
94264
|
+
reference,
|
|
94265
|
+
options: this.options,
|
|
94266
|
+
assignments: this.assignments,
|
|
94267
|
+
reservedNames: this.reservedNames,
|
|
94268
|
+
refractCache: this.refractCache
|
|
94269
|
+
});
|
|
94270
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
|
|
94271
|
+
mutable: true
|
|
94272
|
+
});
|
|
94273
|
+
|
|
94274
|
+
// a `$ref` surviving on the hoisted Path Item means it pointed at another
|
|
94275
|
+
// Path Item (a chain or cycle); it has already been rewritten to an
|
|
94276
|
+
// internal `#/components/pathItems/...` pointer by the child traversal
|
|
94277
|
+
bundledElement.meta.set('ref-origin', reference.uri);
|
|
94278
|
+
|
|
94279
|
+
// place the bundled Path Item into the entry document's components
|
|
94280
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
94281
|
+
|
|
94282
|
+
// rewrite the referencing Path Item to point at the hoisted one, keeping
|
|
94283
|
+
// any sibling fields (e.g. summary, description) next to the $ref
|
|
94284
|
+
pathItemElement.set('$ref', internalPointer);
|
|
94285
|
+
path.skip();
|
|
94286
|
+
} catch (error) {
|
|
94287
|
+
this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
|
|
94288
|
+
path.skip();
|
|
94289
|
+
}
|
|
94290
|
+
}
|
|
94291
|
+
|
|
94292
|
+
/**
|
|
94293
|
+
* Schema Objects in OpenAPI 3.1 are a JSON Schema 2020-12 dialect, so they are
|
|
94294
|
+
* bundled per the JSON Schema Compound Document rules: the external schema
|
|
94295
|
+
* RESOURCE is embedded verbatim into `components.schemas` (carrying its `$id`),
|
|
94296
|
+
* and the referencing `$ref` is left UNCHANGED — it keeps resolving against the
|
|
94297
|
+
* embedded resource's `$id`. This mirrors the canonical hyperjump
|
|
94298
|
+
* `json-schema-bundle` behavior (the whole resource is embedded once, keyed by
|
|
94299
|
+
* its `$id`; references are not rewritten).
|
|
94300
|
+
*/
|
|
94301
|
+
async SchemaElement(path) {
|
|
94302
|
+
const referencingElement = path.node;
|
|
94303
|
+
|
|
94304
|
+
// skip current referencing schema as $ref keyword was not defined
|
|
94305
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(referencingElement.$ref)) {
|
|
94306
|
+
return;
|
|
94307
|
+
}
|
|
94308
|
+
const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
|
|
94309
|
+
try {
|
|
94310
|
+
// compute baseURI using rules around $id and $ref keywords. The current
|
|
94311
|
+
// document's URI is the retrieval URI — derive it directly (not via
|
|
94312
|
+
// toReference) so an internal $ref needs no resolution and never trips the
|
|
94313
|
+
// resolve.maxDepth guard, matching how ReferenceElement returns early.
|
|
94314
|
+
const retrievalURI = this.reference.uri;
|
|
94315
|
+
const $refBaseURI = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.resolveSchema$refField)(retrievalURI, referencingElement);
|
|
94316
|
+
const $refBaseURIStrippedHash = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash($refBaseURI);
|
|
94317
|
+
const file = new _File_mjs__WEBPACK_IMPORTED_MODULE_35__["default"]({
|
|
94318
|
+
uri: $refBaseURIStrippedHash
|
|
94319
|
+
});
|
|
94320
|
+
const isUnknownURI = (0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(r => r.canRead(file), this.options.resolve.resolvers);
|
|
94321
|
+
const isURL = !isUnknownURI;
|
|
94322
|
+
const isInternalReference = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri) === $refBaseURIStrippedHash;
|
|
94323
|
+
const isExternalReference = !isInternalReference;
|
|
94324
|
+
|
|
94325
|
+
// internal Schema Object $refs resolve against the in-document $id graph;
|
|
94326
|
+
// leaving them untouched keeps that resolution valid. Unlike Reference
|
|
94327
|
+
// Objects, a JSON Schema $ref is NOT normalized to a bare fragment.
|
|
94328
|
+
if (isInternalReference) {
|
|
94329
|
+
return;
|
|
94330
|
+
}
|
|
94331
|
+
|
|
94332
|
+
// honor the resolve.external switch
|
|
94333
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
94334
|
+
return;
|
|
94335
|
+
}
|
|
94336
|
+
|
|
94337
|
+
// detect maximum depth of bundling before fetching the external resource,
|
|
94338
|
+
// matching ReferenceElement/PathItemElement (which check before toReference)
|
|
94339
|
+
if (this.reference.depth >= this.options.bundle.maxDepth) {
|
|
94340
|
+
throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
|
|
94341
|
+
maxDepth: this.options.bundle.maxDepth,
|
|
94342
|
+
uri: this.reference.uri
|
|
94343
|
+
});
|
|
94344
|
+
}
|
|
94345
|
+
|
|
94346
|
+
// locate the external schema resource the $ref targets, reusing the
|
|
94347
|
+
// dereference strategy's classification. First try to resolve the target
|
|
94348
|
+
// as a canonical URI / URL against the current document's $id graph; if
|
|
94349
|
+
// that fails, fall back to fetching the external document and resolving
|
|
94350
|
+
// the fragment there as a $anchor or JSON Pointer.
|
|
94351
|
+
let schemaReference = this.reference;
|
|
94352
|
+
try {
|
|
94353
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
94354
|
+
(0,_dereference_strategies_openapi_3_1_selectors_uri_mjs__WEBPACK_IMPORTED_MODULE_37__.evaluate)($refBaseURI, referenceAsSchema);
|
|
94355
|
+
} catch (error) {
|
|
94356
|
+
if (isURL && error instanceof _errors_EvaluationJsonSchemaUriError_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]) {
|
|
94357
|
+
if ((0,_dereference_strategies_openapi_3_1_selectors_$anchor_mjs__WEBPACK_IMPORTED_MODULE_36__.isAnchor)((0,_dereference_strategies_openapi_3_1_selectors_$anchor_mjs__WEBPACK_IMPORTED_MODULE_36__.uriToAnchor)($refBaseURI))) {
|
|
94358
|
+
schemaReference = await this.toReference(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
|
|
94359
|
+
const selector = (0,_dereference_strategies_openapi_3_1_selectors_$anchor_mjs__WEBPACK_IMPORTED_MODULE_36__.uriToAnchor)($refBaseURI);
|
|
94360
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
94361
|
+
(0,_dereference_strategies_openapi_3_1_selectors_$anchor_mjs__WEBPACK_IMPORTED_MODULE_36__.evaluate)(selector, referenceAsSchema);
|
|
94362
|
+
} else {
|
|
94363
|
+
schemaReference = await this.toReference(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.unsanitize($refBaseURI));
|
|
94364
|
+
const selector = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.URIFragmentIdentifier.fromURIReference($refBaseURI);
|
|
94365
|
+
const referenceAsSchema = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
94366
|
+
(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(referenceAsSchema, selector);
|
|
94367
|
+
}
|
|
94368
|
+
} else {
|
|
94369
|
+
throw error;
|
|
94370
|
+
}
|
|
94371
|
+
}
|
|
94372
|
+
|
|
94373
|
+
// a $ref that resolves (by $id/$anchor/pointer) within the current document
|
|
94374
|
+
// is internal even when its URI form (e.g. a URN or absolute $id) is not a
|
|
94375
|
+
// bare fragment. Leave it untouched — it resolves against the in-document
|
|
94376
|
+
// $id graph, and embedding the current document into itself would be wrong.
|
|
94377
|
+
if (_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri) === _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.uri)) {
|
|
94378
|
+
return;
|
|
94379
|
+
}
|
|
94380
|
+
|
|
94381
|
+
// the resource to embed is the WHOLE external document (its root schema),
|
|
94382
|
+
// identified by its $id. A $ref into a fragment of the document embeds the
|
|
94383
|
+
// entire document resource once; the fragment keeps resolving against the
|
|
94384
|
+
// embedded $id.
|
|
94385
|
+
const resourceRoot = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.maybeRefractToSchemaElement)(schemaReference.value.result);
|
|
94386
|
+
const resourceBaseURI = (0,_dereference_strategies_openapi_3_1_util_mjs__WEBPACK_IMPORTED_MODULE_38__.resolveSchema$idField)(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri), resourceRoot) ?? _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(schemaReference.uri);
|
|
94387
|
+
const field = cf.schemas.name;
|
|
94388
|
+
const canonicalKey = `${field}\t${resourceBaseURI}`;
|
|
94389
|
+
|
|
94390
|
+
// resource already embedded (or being embedded) — leave the referencing
|
|
94391
|
+
// $ref untouched and stop. This also terminates circular external schema
|
|
94392
|
+
// references, since the assignment is reserved BEFORE recursion.
|
|
94393
|
+
if (this.assignments.has(canonicalKey)) {
|
|
94394
|
+
path.skip();
|
|
94395
|
+
return;
|
|
94396
|
+
}
|
|
94397
|
+
|
|
94398
|
+
// own a copy of the resource and ensure it carries a $id so the unchanged
|
|
94399
|
+
// $ref still resolves against it once embedded
|
|
94400
|
+
const embeddedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(resourceRoot);
|
|
94401
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(embeddedElement.$id)) {
|
|
94402
|
+
embeddedElement.set('$id', resourceBaseURI);
|
|
94403
|
+
}
|
|
94404
|
+
|
|
94405
|
+
// the embedded thing is the WHOLE resource (keyed by its $id), so its name
|
|
94406
|
+
// is derived from the resource URI, not the $ref fragment — passing a root
|
|
94407
|
+
// pointer makes baseName fall back to the resource basename
|
|
94408
|
+
const preferredName = this.baseName(embeddedElement, field, '', resourceBaseURI);
|
|
94409
|
+
const componentName = this.uniqueName(preferredName, field);
|
|
94410
|
+
this.reportNameCollision(preferredName, componentName, field);
|
|
94411
|
+
|
|
94412
|
+
// reserve the assignment and component name before recursing so circular
|
|
94413
|
+
// external schema references terminate
|
|
94414
|
+
this.assignments.set(canonicalKey, `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`);
|
|
94415
|
+
if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
|
|
94416
|
+
this.reservedNames.get(field).add(componentName);
|
|
94417
|
+
|
|
94418
|
+
// bundle external references contained within the embedded resource;
|
|
94419
|
+
// nested external resources land flat in the same components.schemas
|
|
94420
|
+
const visitor = new OpenAPI3_1BundleVisitor({
|
|
94421
|
+
reference: schemaReference,
|
|
94422
|
+
options: this.options,
|
|
94423
|
+
assignments: this.assignments,
|
|
94424
|
+
reservedNames: this.reservedNames,
|
|
94425
|
+
refractCache: this.refractCache
|
|
94426
|
+
});
|
|
94427
|
+
const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(embeddedElement, visitor, {
|
|
94428
|
+
mutable: true
|
|
94429
|
+
});
|
|
94430
|
+
|
|
94431
|
+
// annotate the embedded resource with info about its origin
|
|
94432
|
+
bundledElement.meta.set('ref-origin', schemaReference.uri);
|
|
94433
|
+
|
|
94434
|
+
// place the embedded resource into the entry document's components
|
|
94435
|
+
this.ensureComponentsField(field).set(componentName, bundledElement);
|
|
94436
|
+
|
|
94437
|
+
// the referencing $ref is left UNCHANGED — it resolves against the
|
|
94438
|
+
// embedded resource's $id
|
|
94439
|
+
path.skip();
|
|
94440
|
+
} catch (error) {
|
|
94441
|
+
this.handleError(`Error while bundling Schema Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
|
|
94442
|
+
path.skip();
|
|
94443
|
+
}
|
|
94444
|
+
}
|
|
94445
|
+
|
|
94446
|
+
/**
|
|
94447
|
+
* Example Object `externalValue` points at arbitrary external content that
|
|
94448
|
+
* has no place in the Components Object. The referenced value is inlined into
|
|
94449
|
+
* the Example's `value` field.
|
|
94450
|
+
*/
|
|
94451
|
+
async ExampleElement(path) {
|
|
94452
|
+
const exampleElement = path.node;
|
|
94453
|
+
|
|
94454
|
+
// ignore Example Objects without an externalValue field
|
|
94455
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
|
|
94456
|
+
return;
|
|
94457
|
+
}
|
|
94458
|
+
|
|
94459
|
+
// value and externalValue fields are mutually exclusive
|
|
94460
|
+
if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
|
|
94461
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
|
|
94462
|
+
value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.value),
|
|
94463
|
+
externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue)
|
|
94464
|
+
});
|
|
94465
|
+
}
|
|
94466
|
+
const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue);
|
|
94467
|
+
const retrievalURI = this.toBaseURI(externalValue);
|
|
94468
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
94469
|
+
const isExternalReference = !isInternalReference;
|
|
94470
|
+
|
|
94471
|
+
// honor the resolve.external switch
|
|
94472
|
+
if (!this.options.resolve.external && isExternalReference) {
|
|
94473
|
+
return;
|
|
94474
|
+
}
|
|
94475
|
+
try {
|
|
94476
|
+
const reference = await this.toReference(externalValue);
|
|
94477
|
+
const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(reference.value.result);
|
|
94478
|
+
valueElement.meta.set('ref-origin', reference.uri);
|
|
94479
|
+
const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(exampleElement);
|
|
94480
|
+
exampleElementCopy.value = valueElement;
|
|
94481
|
+
exampleElementCopy.remove('externalValue');
|
|
94482
|
+
path.replaceWith(exampleElementCopy);
|
|
94483
|
+
} catch (error) {
|
|
94484
|
+
this.handleError(`Error while bundling Example Object. Cannot resolve externalValue "${externalValue}": ${error.message}`, error, exampleElement, 'externalValue', externalValue, path);
|
|
94485
|
+
}
|
|
94486
|
+
}
|
|
94487
|
+
|
|
94488
|
+
/**
|
|
94489
|
+
* Link Object `operationRef` points at an Operation Object, which has no
|
|
94490
|
+
* Components Object field in OpenAPI 3.1 and therefore cannot be hoisted or
|
|
94491
|
+
* inlined. To keep the link resolvable from the bundled document, an external
|
|
94492
|
+
* `operationRef` is rewritten to its absolute URI. Internal `operationRef`
|
|
94493
|
+
* values and `operationId` links are left untouched.
|
|
94494
|
+
*/
|
|
94495
|
+
async LinkElement(path) {
|
|
94496
|
+
const linkElement = path.node;
|
|
94497
|
+
|
|
94498
|
+
// operationRef and operationId fields are mutually exclusive
|
|
94499
|
+
if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationId)) {
|
|
94500
|
+
throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_9__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
|
|
94501
|
+
operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef),
|
|
94502
|
+
operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationId)
|
|
94503
|
+
});
|
|
94504
|
+
}
|
|
94505
|
+
|
|
94506
|
+
// only external operationRef links need adjusting
|
|
94507
|
+
if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef)) {
|
|
94508
|
+
return;
|
|
94509
|
+
}
|
|
94510
|
+
const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef);
|
|
94511
|
+
const retrievalURI = this.toBaseURI(operationRef);
|
|
94512
|
+
const isInternalReference = this.entryURI === retrievalURI;
|
|
94513
|
+
if (isInternalReference) {
|
|
94514
|
+
// normalize a self-reference operationRef to a bare fragment so the bundled
|
|
94515
|
+
// document stays transferable; bare fragments are left untouched
|
|
94516
|
+
linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
|
|
94517
|
+
return;
|
|
94518
|
+
}
|
|
94519
|
+
|
|
94520
|
+
// honor the resolve.external switch
|
|
94521
|
+
if (!this.options.resolve.external) {
|
|
94522
|
+
return;
|
|
94523
|
+
}
|
|
94524
|
+
|
|
94525
|
+
// rewrite to an absolute URI so the link keeps resolving once the document
|
|
94526
|
+
// is treated as self-contained
|
|
94527
|
+
const absoluteURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, operationRef);
|
|
94528
|
+
if (absoluteURI !== operationRef) {
|
|
94529
|
+
linkElement.set('operationRef', absoluteURI);
|
|
94530
|
+
}
|
|
94531
|
+
}
|
|
94532
|
+
}
|
|
94533
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleVisitor);
|
|
94534
|
+
|
|
94535
|
+
/***/ },
|
|
94536
|
+
|
|
94537
|
+
/***/ 78814
|
|
94538
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
94539
|
+
|
|
94540
|
+
"use strict";
|
|
94541
|
+
__webpack_require__.r(__webpack_exports__);
|
|
94542
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
94543
|
+
/* harmony export */ sanitizeComponentName: () => (/* binding */ sanitizeComponentName),
|
|
94544
|
+
/* harmony export */ toPascalCase: () => (/* binding */ toPascalCase),
|
|
94545
|
+
/* harmony export */ uniqueName: () => (/* binding */ uniqueName)
|
|
94546
|
+
/* harmony export */ });
|
|
94547
|
+
/**
|
|
94548
|
+
* Upper-cases the first letter of each whitespace-separated word and joins
|
|
94549
|
+
* them, e.g. `pet model` -> `PetModel`.
|
|
94550
|
+
*
|
|
94551
|
+
* @public
|
|
94552
|
+
*/
|
|
94553
|
+
const toPascalCase = value => value.trim().split(/\s+/).map(word => word.replace(/^[a-z]/, char => char.toUpperCase())).join('');
|
|
94554
|
+
|
|
94555
|
+
/**
|
|
94556
|
+
* Replaces characters that are invalid in a Components Object name with `-`,
|
|
94557
|
+
* then collapses repeated separators and trims leading/trailing ones.
|
|
94558
|
+
*
|
|
94559
|
+
* @public
|
|
94560
|
+
*/
|
|
94561
|
+
const sanitizeComponentName = value => value.replace(/[^a-zA-Z0-9.\-_]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');
|
|
94562
|
+
|
|
94563
|
+
/**
|
|
94564
|
+
* Returns a collision-free name by suffixing `-2`, `-3`, ... onto `candidate`
|
|
94565
|
+
* until `isTaken` reports it free. `isTaken` decides what counts as taken
|
|
94566
|
+
* (e.g. names already placed in or reserved for a Components Object field).
|
|
94567
|
+
*
|
|
94568
|
+
* @public
|
|
94569
|
+
*/
|
|
94570
|
+
const uniqueName = (candidate, isTaken) => {
|
|
94571
|
+
if (!isTaken(candidate)) {
|
|
94572
|
+
return candidate;
|
|
94573
|
+
}
|
|
94574
|
+
let counter = 2;
|
|
94575
|
+
while (isTaken(`${candidate}-${counter}`)) {
|
|
94576
|
+
counter += 1;
|
|
94577
|
+
}
|
|
94578
|
+
return `${candidate}-${counter}`;
|
|
94579
|
+
};
|
|
94580
|
+
|
|
94581
|
+
/***/ },
|
|
94582
|
+
|
|
94583
|
+
/***/ 29807
|
|
94584
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
94585
|
+
|
|
94586
|
+
"use strict";
|
|
93443
94587
|
__webpack_require__.r(__webpack_exports__);
|
|
93444
94588
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
93445
94589
|
/* harmony export */ BundleError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.BundleError),
|
|
@@ -102355,6 +103499,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
102355
103499
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
102356
103500
|
/* harmony export */ cwd: () => (/* binding */ cwd),
|
|
102357
103501
|
/* harmony export */ fromFileSystemPath: () => (/* binding */ fromFileSystemPath),
|
|
103502
|
+
/* harmony export */ getBasename: () => (/* binding */ getBasename),
|
|
102358
103503
|
/* harmony export */ getExtension: () => (/* binding */ getExtension),
|
|
102359
103504
|
/* harmony export */ getHash: () => (/* binding */ getHash),
|
|
102360
103505
|
/* harmony export */ getProtocol: () => (/* binding */ getProtocol),
|
|
@@ -102413,19 +103558,40 @@ const getProtocol = url => {
|
|
|
102413
103558
|
*/
|
|
102414
103559
|
const hasProtocol = (0,ramda__WEBPACK_IMPORTED_MODULE_3__["default"])(getProtocol, ramda_adjunct__WEBPACK_IMPORTED_MODULE_6__["default"]);
|
|
102415
103560
|
|
|
103561
|
+
/**
|
|
103562
|
+
* Returns the final path segment of the given URI (the part after the last
|
|
103563
|
+
* `/`). Inputs are URIs, whose path separator is `/` — filesystem paths are
|
|
103564
|
+
* forward-slashed by `sanitize` before reaching here.
|
|
103565
|
+
*/
|
|
103566
|
+
const getFilename = uri => uri.slice(uri.lastIndexOf('/') + 1);
|
|
103567
|
+
|
|
102416
103568
|
/**
|
|
102417
103569
|
* Returns the lower-cased file extension of the given URL,
|
|
102418
103570
|
* or an empty string if it has no extension.
|
|
102419
103571
|
* @public
|
|
102420
103572
|
*/
|
|
102421
103573
|
const getExtension = url => {
|
|
102422
|
-
const
|
|
103574
|
+
const fileName = getFilename(url);
|
|
103575
|
+
const lastDotPosition = fileName.lastIndexOf('.');
|
|
102423
103576
|
if (lastDotPosition >= 0) {
|
|
102424
|
-
return
|
|
103577
|
+
return fileName.substring(lastDotPosition).toLowerCase();
|
|
102425
103578
|
}
|
|
102426
103579
|
return '';
|
|
102427
103580
|
};
|
|
102428
103581
|
|
|
103582
|
+
/**
|
|
103583
|
+
* Returns the final path segment of the given URI with its file extension
|
|
103584
|
+
* removed (e.g. `./schemas/Pet.json` -> `Pet`). Returns the whole segment when
|
|
103585
|
+
* there is no extension, and the whole URI when there is no path segment
|
|
103586
|
+
* (e.g. a URN).
|
|
103587
|
+
* @public
|
|
103588
|
+
*/
|
|
103589
|
+
const getBasename = uri => {
|
|
103590
|
+
const fileName = getFilename(uri);
|
|
103591
|
+
const extension = getExtension(uri);
|
|
103592
|
+
return extension === '' ? fileName : fileName.slice(0, -extension.length);
|
|
103593
|
+
};
|
|
103594
|
+
|
|
102429
103595
|
/**
|
|
102430
103596
|
* Determines whether the given path is a filesystem path.
|
|
102431
103597
|
* This includes "file://" URLs.
|