@speclynx/apidom-overlay 4.12.1 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -64982,6 +64982,199 @@ const refractSecurityRequirement = (value, options = {}) => refract(value, {
64982
64982
  });
64983
64983
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
64984
64984
 
64985
+ /***/ },
64986
+
64987
+ /***/ 60574
64988
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
64989
+
64990
+ "use strict";
64991
+ __webpack_require__.r(__webpack_exports__);
64992
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
64993
+ /* harmony export */ ContactElement: () => (/* reexport safe */ _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]),
64994
+ /* harmony export */ DefinitionsElement: () => (/* reexport safe */ _elements_Definitions_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]),
64995
+ /* harmony export */ ExampleElement: () => (/* reexport safe */ _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]),
64996
+ /* harmony export */ ExternalDocumentationElement: () => (/* reexport safe */ _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]),
64997
+ /* harmony export */ HeaderElement: () => (/* reexport safe */ _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]),
64998
+ /* harmony export */ HeadersElement: () => (/* reexport safe */ _elements_Headers_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]),
64999
+ /* harmony export */ InfoElement: () => (/* reexport safe */ _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]),
65000
+ /* harmony export */ ItemsElement: () => (/* reexport safe */ _elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]),
65001
+ /* harmony export */ LicenseElement: () => (/* reexport safe */ _elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]),
65002
+ /* harmony export */ OperationElement: () => (/* reexport safe */ _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]),
65003
+ /* harmony export */ ParameterElement: () => (/* reexport safe */ _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]),
65004
+ /* harmony export */ ParametersDefinitionsElement: () => (/* reexport safe */ _elements_ParametersDefinitions_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]),
65005
+ /* harmony export */ PathItemElement: () => (/* reexport safe */ _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]),
65006
+ /* harmony export */ PathsElement: () => (/* reexport safe */ _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
65007
+ /* harmony export */ ReferenceElement: () => (/* reexport safe */ _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]),
65008
+ /* harmony export */ ResponseElement: () => (/* reexport safe */ _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]),
65009
+ /* harmony export */ ResponsesDefinitionsElement: () => (/* reexport safe */ _elements_ResponsesDefinitions_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]),
65010
+ /* harmony export */ ResponsesElement: () => (/* reexport safe */ _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]),
65011
+ /* harmony export */ SchemaElement: () => (/* reexport safe */ _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
65012
+ /* harmony export */ ScopesElement: () => (/* reexport safe */ _elements_Scopes_mjs__WEBPACK_IMPORTED_MODULE_27__["default"]),
65013
+ /* harmony export */ SecurityDefinitionsElement: () => (/* reexport safe */ _elements_SecurityDefinitions_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]),
65014
+ /* harmony export */ SecurityRequirementElement: () => (/* reexport safe */ _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]),
65015
+ /* harmony export */ SecuritySchemeElement: () => (/* reexport safe */ _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]),
65016
+ /* harmony export */ SwaggerElement: () => (/* reexport safe */ _elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]),
65017
+ /* harmony export */ SwaggerVersionElement: () => (/* reexport safe */ _elements_SwaggerVersion_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]),
65018
+ /* harmony export */ TagElement: () => (/* reexport safe */ _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]),
65019
+ /* harmony export */ XmlElement: () => (/* reexport safe */ _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__["default"])
65020
+ /* harmony export */ });
65021
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60572);
65022
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34606);
65023
+ /* harmony import */ var _elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25077);
65024
+ /* harmony import */ var _elements_SwaggerVersion_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85263);
65025
+ /* harmony import */ var _elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60135);
65026
+ /* harmony import */ var _elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(22389);
65027
+ /* harmony import */ var _elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67684);
65028
+ /* harmony import */ var _elements_Paths_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38253);
65029
+ /* harmony import */ var _elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(83419);
65030
+ /* harmony import */ var _elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(87162);
65031
+ /* harmony import */ var _elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65292);
65032
+ /* harmony import */ var _elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(52508);
65033
+ /* harmony import */ var _elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(52445);
65034
+ /* harmony import */ var _elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(31297);
65035
+ /* harmony import */ var _elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96730);
65036
+ /* harmony import */ var _elements_Headers_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(35811);
65037
+ /* harmony import */ var _elements_Example_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(523);
65038
+ /* harmony import */ var _elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(53188);
65039
+ /* harmony import */ var _elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(19561);
65040
+ /* harmony import */ var _elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(94170);
65041
+ /* harmony import */ var _elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(89750);
65042
+ /* harmony import */ var _elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(73418);
65043
+ /* harmony import */ var _elements_Definitions_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(50703);
65044
+ /* harmony import */ var _elements_ParametersDefinitions_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(15783);
65045
+ /* harmony import */ var _elements_ResponsesDefinitions_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(23133);
65046
+ /* harmony import */ var _elements_SecurityDefinitions_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(35553);
65047
+ /* harmony import */ var _elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(63100);
65048
+ /* harmony import */ var _elements_Scopes_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(91408);
65049
+ /* harmony import */ var _elements_SecurityRequirement_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(66234);
65050
+ /* harmony import */ var _specification_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(59845);
65051
+
65052
+
65053
+
65054
+ /**
65055
+ * OpenAPI 2.0 specification elements.
65056
+ */
65057
+
65058
+
65059
+
65060
+
65061
+
65062
+
65063
+
65064
+
65065
+
65066
+
65067
+
65068
+
65069
+
65070
+
65071
+
65072
+
65073
+
65074
+
65075
+
65076
+
65077
+
65078
+
65079
+
65080
+
65081
+
65082
+
65083
+
65084
+
65085
+ /**
65086
+ * @public
65087
+ */
65088
+ // Resolve specification to dereference $ref pointers
65089
+ const resolvedSpec = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__.resolveSpecification)(_specification_mjs__WEBPACK_IMPORTED_MODULE_29__["default"]);
65090
+
65091
+ // Extract fixed fields as list of { name, alias?, $visitor }
65092
+ const getFixedFields = fixedFieldsSpec => {
65093
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
65094
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_1__["default"])(fieldSpec)) {
65095
+ return {
65096
+ name,
65097
+ ...fieldSpec
65098
+ };
65099
+ }
65100
+ return {
65101
+ name,
65102
+ $visitor: fieldSpec
65103
+ };
65104
+ });
65105
+ };
65106
+
65107
+ // OpenAPI 2.0 specification elements
65108
+ Object.defineProperty(_elements_Swagger_mjs__WEBPACK_IMPORTED_MODULE_2__["default"], 'fixedFields', {
65109
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Swagger.fixedFields),
65110
+ enumerable: true
65111
+ });
65112
+ Object.defineProperty(_elements_Info_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], 'fixedFields', {
65113
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
65114
+ enumerable: true
65115
+ });
65116
+ Object.defineProperty(_elements_Contact_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], 'fixedFields', {
65117
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
65118
+ enumerable: true
65119
+ });
65120
+ Object.defineProperty(_elements_License_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], 'fixedFields', {
65121
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
65122
+ enumerable: true
65123
+ });
65124
+ Object.defineProperty(_elements_PathItem_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], 'fixedFields', {
65125
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
65126
+ enumerable: true
65127
+ });
65128
+ Object.defineProperty(_elements_Operation_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], 'fixedFields', {
65129
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
65130
+ enumerable: true
65131
+ });
65132
+ Object.defineProperty(_elements_ExternalDocumentation_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], 'fixedFields', {
65133
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
65134
+ enumerable: true
65135
+ });
65136
+ Object.defineProperty(_elements_Parameter_mjs__WEBPACK_IMPORTED_MODULE_11__["default"], 'fixedFields', {
65137
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
65138
+ enumerable: true
65139
+ });
65140
+ Object.defineProperty(_elements_Items_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], 'fixedFields', {
65141
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Items.fixedFields),
65142
+ enumerable: true
65143
+ });
65144
+ Object.defineProperty(_elements_Responses_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], 'fixedFields', {
65145
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
65146
+ enumerable: true
65147
+ });
65148
+ Object.defineProperty(_elements_Response_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], 'fixedFields', {
65149
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
65150
+ enumerable: true
65151
+ });
65152
+ Object.defineProperty(_elements_Header_mjs__WEBPACK_IMPORTED_MODULE_17__["default"], 'fixedFields', {
65153
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
65154
+ enumerable: true
65155
+ });
65156
+ Object.defineProperty(_elements_Tag_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], 'fixedFields', {
65157
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
65158
+ enumerable: true
65159
+ });
65160
+ Object.defineProperty(_elements_Reference_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], 'fixedFields', {
65161
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
65162
+ enumerable: true
65163
+ });
65164
+ Object.defineProperty(_elements_Schema_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], 'fixedFields', {
65165
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
65166
+ enumerable: true
65167
+ });
65168
+ Object.defineProperty(_elements_Xml_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], 'fixedFields', {
65169
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
65170
+ enumerable: true
65171
+ });
65172
+ Object.defineProperty(_elements_SecurityScheme_mjs__WEBPACK_IMPORTED_MODULE_26__["default"], 'fixedFields', {
65173
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
65174
+ enumerable: true
65175
+ });
65176
+
65177
+
64985
65178
  /***/ },
64986
65179
 
64987
65180
  /***/ 72880
@@ -77507,6 +77700,254 @@ const refractJsonSchemaDialect = (value, options = {}) => refract(value, {
77507
77700
  });
77508
77701
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (refract);
77509
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
+
77510
77951
  /***/ },
77511
77952
 
77512
77953
  /***/ 68201
@@ -91670,23 +92111,23 @@ class BundleStrategy {
91670
92111
 
91671
92112
  /***/ },
91672
92113
 
91673
- /***/ 5138
92114
+ /***/ 95416
91674
92115
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
91675
92116
 
91676
92117
  "use strict";
91677
92118
  __webpack_require__.r(__webpack_exports__);
91678
92119
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
91679
- /* harmony export */ OpenAPI3_0BundleVisitor: () => (/* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
92120
+ /* harmony export */ OpenAPI2BundleVisitor: () => (/* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
91680
92121
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
91681
92122
  /* harmony export */ });
91682
92123
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
91683
92124
  /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
91684
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43151);
91685
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32131);
92125
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3677);
92126
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26365);
91686
92127
  /* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82302);
91687
92128
  /* harmony import */ var _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(88526);
91688
92129
  /* harmony import */ var _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(73723);
91689
- /* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(98968);
92130
+ /* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61210);
91690
92131
 
91691
92132
 
91692
92133
 
@@ -91700,21 +92141,21 @@ __webpack_require__.r(__webpack_exports__);
91700
92141
  /**
91701
92142
  * @public
91702
92143
  */
91703
- class OpenAPI3_0BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
92144
+ class OpenAPI2BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
91704
92145
  constructor(options) {
91705
92146
  super({
91706
92147
  ...(options ?? {}),
91707
- name: 'openapi-3-0'
92148
+ name: 'openapi-2'
91708
92149
  });
91709
92150
  }
91710
92151
  canBundle(file) {
91711
92152
  // assert by media type
91712
92153
  if (file.mediaType !== 'text/plain') {
91713
- return _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
92154
+ return _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
91714
92155
  }
91715
92156
 
91716
92157
  // assert by inspecting ApiDOM
91717
- return (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_0Element)(file.parseResult?.result);
92158
+ return (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_3__.isSwaggerElement)(file.parseResult?.result);
91718
92159
  }
91719
92160
  async bundle(file, options) {
91720
92161
  const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]();
@@ -91767,11 +92208,11 @@ class OpenAPI3_0BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MOD
91767
92208
  }
91768
92209
  }
91769
92210
 
91770
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleStrategy);
92211
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI2BundleStrategy);
91771
92212
 
91772
92213
  /***/ },
91773
92214
 
91774
- /***/ 98968
92215
+ /***/ 61210
91775
92216
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
91776
92217
 
91777
92218
  "use strict";
@@ -91787,32 +92228,24 @@ __webpack_require__.r(__webpack_exports__);
91787
92228
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37205);
91788
92229
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44673);
91789
92230
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16280);
91790
- /* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44641);
91791
- /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80796);
91792
- /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12020);
91793
- /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61198);
91794
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(30609);
91795
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64708);
91796
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(32131);
91797
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(21314);
91798
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(29881);
91799
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
91800
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(23031);
91801
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(63842);
91802
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(87455);
91803
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(55122);
91804
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(71117);
91805
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(72257);
91806
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(69511);
91807
- /* harmony import */ var _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(89693);
91808
- /* harmony import */ var _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(34968);
91809
- /* harmony import */ var _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(55086);
91810
- /* harmony import */ var _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(10476);
91811
- /* harmony import */ var _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(18917);
91812
- /* harmony import */ var _parse_index_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(85533);
91813
- /* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(82302);
91814
- /* harmony import */ var _util_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(78814);
91815
-
92231
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80796);
92232
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(12020);
92233
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(61198);
92234
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61500);
92235
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(86059);
92236
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(59014);
92237
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(3498);
92238
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(26365);
92239
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(72880);
92240
+ /* harmony import */ var _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(60574);
92241
+ /* harmony import */ var _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(89693);
92242
+ /* harmony import */ var _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(34968);
92243
+ /* harmony import */ var _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(55086);
92244
+ /* harmony import */ var _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(10476);
92245
+ /* harmony import */ var _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(18917);
92246
+ /* harmony import */ var _parse_index_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(85533);
92247
+ /* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(82302);
92248
+ /* harmony import */ var _util_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(78814);
91816
92249
 
91817
92250
 
91818
92251
 
@@ -91829,41 +92262,31 @@ __webpack_require__.r(__webpack_exports__);
91829
92262
 
91830
92263
  /**
91831
92264
  * Maps the `referenced-element` meta value (set during refraction) to the
91832
- * Components Object field where the referenced element should be hoisted.
91833
- * Field names are sourced from the Components Object fixed fields so they
91834
- * cannot drift from the namespace definition.
92265
+ * top-level Swagger Object field where the referenced element should be
92266
+ * hoisted. Unlike OpenAPI 3.x, OpenAPI 2.0 has no single Components Object;
92267
+ * reusable definitions live directly under the document root. Field names are
92268
+ * sourced from the Swagger Object fixed fields so they cannot drift from the
92269
+ * namespace definition.
91835
92270
  */
91836
- const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__.fixedFields)(_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"], {
92271
+ const sf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__.fixedFields)(_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.SwaggerElement, {
91837
92272
  indexed: true
91838
92273
  });
91839
- const componentFieldByReferencedElement = {
91840
- schema: cf.schemas.name,
91841
- response: cf.responses.name,
91842
- parameter: cf.parameters.name,
91843
- example: cf.examples.name,
91844
- requestBody: cf.requestBodies.name,
91845
- header: cf.headers.name,
91846
- securityScheme: cf.securitySchemes.name,
91847
- link: cf.links.name,
91848
- callback: cf.callbacks.name
92274
+ const fieldByReferencedElement = {
92275
+ schema: sf.definitions.name,
92276
+ parameter: sf.parameters.name,
92277
+ response: sf.responses.name
91849
92278
  };
91850
92279
 
91851
92280
  /**
91852
- * Maps a Components Object field to the named-content element the namespace
91853
- * uses for it, so a bundle-created field matches a parsed/refracted one
91854
- * (e.g. carries the `components-schemas` class) rather than being a generic
92281
+ * Maps a top-level Swagger Object field to the named-content element the
92282
+ * namespace uses for it, so a bundle-created field matches a parsed/refracted
92283
+ * one (e.g. carries the `definitions` class) rather than being a generic
91855
92284
  * object.
91856
92285
  */
91857
- const componentFieldElementByField = {
91858
- [cf.schemas.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__["default"],
91859
- [cf.responses.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__["default"],
91860
- [cf.parameters.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__["default"],
91861
- [cf.examples.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__["default"],
91862
- [cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__["default"],
91863
- [cf.headers.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__["default"],
91864
- [cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__["default"],
91865
- [cf.links.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__["default"],
91866
- [cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__["default"]
92286
+ const fieldElementByField = {
92287
+ [sf.definitions.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.DefinitionsElement,
92288
+ [sf.parameters.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.ParametersDefinitionsElement,
92289
+ [sf.responses.name]: _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_17__.ResponsesDefinitionsElement
91867
92290
  };
91868
92291
 
91869
92292
  /**
@@ -91873,7 +92296,7 @@ const componentFieldElementByField = {
91873
92296
  /**
91874
92297
  * @public
91875
92298
  */
91876
- class OpenAPI3_0BundleVisitor {
92299
+ class OpenAPI2BundleVisitor {
91877
92300
  reference;
91878
92301
  options;
91879
92302
 
@@ -91883,7 +92306,7 @@ class OpenAPI3_0BundleVisitor {
91883
92306
  * Derived from the shared refSet's root reference.
91884
92307
  */
91885
92308
  get entryURI() {
91886
- return _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
92309
+ return _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
91887
92310
  }
91888
92311
 
91889
92312
  /**
@@ -91895,8 +92318,1508 @@ class OpenAPI3_0BundleVisitor {
91895
92318
 
91896
92319
  /**
91897
92320
  * The entry document element. Hoisted external fragments are placed into its
91898
- * `components` object. The `canBundle` guard guarantees it is an
91899
- * OpenApi3_0Element.
92321
+ * top-level definition fields. The `canBundle` guard guarantees it is a
92322
+ * SwaggerElement.
92323
+ */
92324
+ get entryResult() {
92325
+ return this.entryParseResult.result;
92326
+ }
92327
+
92328
+ /**
92329
+ * Shared across the entry document and every external document visitor.
92330
+ * Guarantees each external fragment is hoisted exactly once and gives us a
92331
+ * stable internal pointer to rewrite every referencing element to.
92332
+ */
92333
+ assignments;
92334
+
92335
+ /**
92336
+ * Component names already reserved per definition field. Reserved before
92337
+ * recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
92338
+ * components that are still being bundled.
92339
+ */
92340
+ reservedNames;
92341
+
92342
+ /**
92343
+ * Caches refracted fragments keyed by source element and target element type.
92344
+ * The type is part of the key because the same source can be refracted into
92345
+ * different semantic elements depending on the referencing context (e.g. a
92346
+ * generic object referenced once as a Parameter and once as a Response).
92347
+ */
92348
+ refractCache;
92349
+
92350
+ /**
92351
+ * Canonical URIs of Path Item Objects currently being inlined. Path Items
92352
+ * are not a top-level definition field in OpenAPI 2.0, so the `assignments`
92353
+ * map can't break their cycles. This stack guards against circular external
92354
+ * Path Item references.
92355
+ */
92356
+ inlineStack;
92357
+ constructor({
92358
+ reference,
92359
+ options,
92360
+ assignments = new Map(),
92361
+ reservedNames = new Map(),
92362
+ refractCache = new WeakMap(),
92363
+ inlineStack = new Set()
92364
+ }) {
92365
+ this.reference = reference;
92366
+ this.options = options;
92367
+ this.inlineStack = inlineStack;
92368
+ this.assignments = assignments;
92369
+ this.reservedNames = reservedNames;
92370
+ this.refractCache = refractCache;
92371
+ }
92372
+ getRefracted(source, type) {
92373
+ return this.refractCache.get(source)?.get(type);
92374
+ }
92375
+ setRefracted(source, type, refracted) {
92376
+ let byType = this.refractCache.get(source);
92377
+ if (byType === undefined) {
92378
+ byType = new Map();
92379
+ this.refractCache.set(source, byType);
92380
+ }
92381
+ byType.set(type, refracted);
92382
+ }
92383
+ toBaseURI(uri) {
92384
+ return _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.resolve(this.reference.uri, _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.sanitize(_util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.stripHash(uri)));
92385
+ }
92386
+ async toReference(uri) {
92387
+ // detect maximum depth of resolution
92388
+ if (this.reference.depth >= this.options.resolve.maxDepth) {
92389
+ throw new _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_21__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
92390
+ maxDepth: this.options.resolve.maxDepth,
92391
+ uri: this.reference.uri
92392
+ });
92393
+ }
92394
+ const baseURI = this.toBaseURI(uri);
92395
+ const {
92396
+ refSet
92397
+ } = this.reference;
92398
+
92399
+ // we've already processed this Reference in past
92400
+ if (refSet.has(baseURI)) {
92401
+ return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(baseURI, 'uri'));
92402
+ }
92403
+ const parseResult = await (0,_parse_index_mjs__WEBPACK_IMPORTED_MODULE_23__["default"])(_util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.unsanitize(baseURI), {
92404
+ ...this.options,
92405
+ parse: {
92406
+ ...this.options.parse,
92407
+ mediaType: 'text/plain'
92408
+ }
92409
+ });
92410
+ const reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]({
92411
+ uri: baseURI,
92412
+ value: parseResult,
92413
+ depth: this.reference.depth + 1
92414
+ });
92415
+ refSet.add(reference);
92416
+ return reference;
92417
+ }
92418
+
92419
+ /**
92420
+ * Normalizes a self-reference (e.g. `./root.json#/definitions/Pet`)
92421
+ * to a bare fragment (`#/definitions/Pet`) so the bundled document stays
92422
+ * transferable. Bare fragments are returned unchanged.
92423
+ */
92424
+ normalizeSelfReference(ref) {
92425
+ return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.getHash(ref);
92426
+ }
92427
+
92428
+ /**
92429
+ * Handles an error according to the `bundle.continueOnError` option.
92430
+ *
92431
+ * For new errors: wraps in UnresolvableReferenceError with structured
92432
+ * context. For errors already wrapped by a nested visitor: prepends the
92433
+ * current hop to the trace.
92434
+ *
92435
+ * Inner/intermediate visitors always throw to let the trace accumulate. Only
92436
+ * the entry document visitor respects continueOnError (callback/swallow/throw).
92437
+ */
92438
+ handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
92439
+ // a collision reported as `error` is a deliberate hard stop with no
92440
+ // resolution-failure analog, so pass it through unchanged. A maxDepth
92441
+ // breach (MaximumBundleDepthError, which also extends BundleError) is a
92442
+ // resolution failure and flows through below — wrapped and subject to
92443
+ // continueOnError, like dereferencing.
92444
+ if (error instanceof _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_18__["default"] && !(error instanceof _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_20__["default"])) {
92445
+ throw error;
92446
+ }
92447
+ const {
92448
+ continueOnError
92449
+ } = this.options.bundle;
92450
+ const isEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
92451
+ const uri = this.reference.uri;
92452
+ const type = referencingElement.element;
92453
+ const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement);
92454
+ const location = visitorPath.formatPath();
92455
+ const hop = {
92456
+ uri,
92457
+ type,
92458
+ refFieldName,
92459
+ refFieldValue,
92460
+ location,
92461
+ codeFrame
92462
+ };
92463
+ let unresolvedError;
92464
+ if (error instanceof _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]) {
92465
+ // @ts-ignore
92466
+ error.trace = [hop, ...error.trace];
92467
+ unresolvedError = error;
92468
+ } else {
92469
+ unresolvedError = new _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_19__["default"](message, {
92470
+ cause: error,
92471
+ type,
92472
+ uri,
92473
+ location,
92474
+ codeFrame,
92475
+ refFieldName,
92476
+ refFieldValue,
92477
+ trace: []
92478
+ });
92479
+ }
92480
+ if (!isEntryDocument || continueOnError === false) throw unresolvedError;
92481
+ if (typeof continueOnError === 'function') continueOnError(unresolvedError);
92482
+ }
92483
+
92484
+ /**
92485
+ * Lazily creates the requested top-level definition field on the entry
92486
+ * document, returning the field where a fragment is hoisted.
92487
+ */
92488
+ ensureField(field) {
92489
+ const entryResult = this.entryResult;
92490
+ let fieldElement = entryResult.get(field);
92491
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(fieldElement)) {
92492
+ const FieldElement = fieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"];
92493
+ fieldElement = new FieldElement();
92494
+ entryResult.set(field, fieldElement);
92495
+ }
92496
+ return fieldElement;
92497
+ }
92498
+
92499
+ /**
92500
+ * Derives a component name from the referenced JSON Pointer's last token,
92501
+ * falling back to the referenced file's basename.
92502
+ */
92503
+ basenameOf(jsonPointer, baseURI) {
92504
+ const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.parse)(jsonPointer).tree;
92505
+ const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
92506
+ return lastToken || _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.getBasename(baseURI) || 'Schema';
92507
+ }
92508
+
92509
+ /**
92510
+ * Computes the base component name (before collision suffixing) according to
92511
+ * the configured naming strategy.
92512
+ */
92513
+ baseName(element, field, jsonPointer, baseURI) {
92514
+ // strategy specific options take precedence over the top-level bundle options
92515
+ const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-2']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
92516
+ if (typeof componentNamesStrategy === 'function') {
92517
+ const resolved = componentNamesStrategy({
92518
+ element,
92519
+ field,
92520
+ jsonPointer,
92521
+ baseURI
92522
+ });
92523
+ if (typeof resolved === 'string' && resolved !== '') {
92524
+ return resolved;
92525
+ }
92526
+ return this.basenameOf(jsonPointer, baseURI);
92527
+ }
92528
+ if (componentNamesStrategy === 'title') {
92529
+ const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(element.get('title')) : undefined;
92530
+ if (typeof title === 'string' && title.trim() !== '') {
92531
+ const name = (0,_util_mjs__WEBPACK_IMPORTED_MODULE_25__.sanitizeComponentName)((0,_util_mjs__WEBPACK_IMPORTED_MODULE_25__.toPascalCase)(title));
92532
+ if (name !== '') return name;
92533
+ }
92534
+ // fall back to basename when no usable title is present
92535
+ }
92536
+ return this.basenameOf(jsonPointer, baseURI);
92537
+ }
92538
+
92539
+ /**
92540
+ * Computes a collision-free component name within the target field. A name is
92541
+ * taken if it's already placed in the field or reserved by a component that
92542
+ * is still being bundled (reserved before recursion).
92543
+ */
92544
+ uniqueName(candidate, field) {
92545
+ const fieldElement = this.ensureField(field);
92546
+ const reserved = this.reservedNames.get(field) ?? new Set();
92547
+ return (0,_util_mjs__WEBPACK_IMPORTED_MODULE_25__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
92548
+ }
92549
+
92550
+ /**
92551
+ * Bundles a Reference Object (parameters/responses) or a JSON Reference
92552
+ * Object (schemas). The two reference flavors differ only in their predicate
92553
+ * and refraction helpers, so the shared logic is parameterized here.
92554
+ */
92555
+ async bundleReference(path, referencingElement, isSemanticReference, isReferenceLike, refractReferenceFn, label) {
92556
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement.$ref);
92557
+ const retrievalURI = this.toBaseURI($ref);
92558
+ const isInternalReference = this.entryURI === retrievalURI;
92559
+ const isExternalReference = !isInternalReference;
92560
+ if (isInternalReference) {
92561
+ // normalize self-references to a bare fragment so the bundled
92562
+ // document stays transferable; bare fragments are left untouched
92563
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
92564
+ path.skip();
92565
+ return;
92566
+ }
92567
+
92568
+ // honor the resolve.external switch
92569
+ if (!this.options.resolve.external && isExternalReference) {
92570
+ path.skip();
92571
+ return;
92572
+ }
92573
+ const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.resolve(retrievalURI, $ref);
92574
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.URIFragmentIdentifier.fromURIReference($refBaseURI);
92575
+
92576
+ // the target field depends on the referencing context, so it's part of the
92577
+ // identity: the same external target referenced as e.g. both a parameter and
92578
+ // a response must be hoisted into both fields. The refractor sets
92579
+ // `referenced-element` for every Reference Object position; the `schema`
92580
+ // fallback is a defensive default for the (unexpected) untagged case.
92581
+ const referencedElementType = referencingElement.meta.get('referenced-element');
92582
+ const field = fieldByReferencedElement[referencedElementType] ?? fieldByReferencedElement.schema;
92583
+ const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
92584
+
92585
+ // already hoisted (or being hoisted) — just rewrite the pointer.
92586
+ //
92587
+ // this is also how circular references terminate: the assignment is
92588
+ // reserved BEFORE recursing into the fragment (see below), so a reference
92589
+ // that cycles back (directly or indirectly) finds its pointer already
92590
+ // reserved here and is rewritten without recursing. Cycles are deliberately
92591
+ // preserved as internal `$ref`s pointing at each other — that is valid,
92592
+ // serializable output; resolving the cycle (if desired) is dereferencing's
92593
+ // job, not bundling's.
92594
+ if (this.assignments.has(canonicalKey)) {
92595
+ referencingElement.set('$ref', this.assignments.get(canonicalKey));
92596
+ path.skip();
92597
+ return;
92598
+ }
92599
+ try {
92600
+ // detect maximum depth of bundling
92601
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
92602
+ throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_20__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
92603
+ maxDepth: this.options.bundle.maxDepth,
92604
+ uri: this.reference.uri
92605
+ });
92606
+ }
92607
+ const reference = await this.toReference($ref);
92608
+
92609
+ // possibly non-semantic fragment
92610
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.evaluate)(reference.value.result, jsonPointer);
92611
+
92612
+ // apply semantics to the fragment so nested references become Reference Objects
92613
+ if (referencedElement.element !== referencedElementType && !isSemanticReference(referencedElement)) {
92614
+ const cached = this.getRefracted(referencedElement, referencedElementType);
92615
+ if (cached !== undefined) {
92616
+ referencedElement = cached;
92617
+ } else if (isReferenceLike(referencedElement)) {
92618
+ const sourceElement = referencedElement;
92619
+ referencedElement = refractReferenceFn(referencedElement);
92620
+ referencedElement.meta.set('referenced-element', referencedElementType);
92621
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
92622
+ } else {
92623
+ const sourceElement = referencedElement;
92624
+ referencedElement = (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
92625
+ element: referencedElementType
92626
+ });
92627
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
92628
+ }
92629
+ }
92630
+ const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
92631
+ const componentName = this.uniqueName(preferredName, field);
92632
+ const internalPointer = `#/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.escape)(componentName)}`;
92633
+
92634
+ // a rename means two distinct targets resolved to the same name; each
92635
+ // keeps its own component (and origin), so report the rename per severity.
92636
+ // strategy specific options take precedence over the top-level bundle options
92637
+ const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-2']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
92638
+ if (componentName !== preferredName && onComponentNameCollision !== 'off') {
92639
+ const message = `Component "${preferredName}" in ${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
92640
+ if (onComponentNameCollision === 'error') {
92641
+ throw new _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_18__["default"](message);
92642
+ }
92643
+ const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
92644
+ annotation.classes.push('warning');
92645
+ annotation.code = 'bundle-component-name-collision';
92646
+ // append (never prepend) so the result element stays ahead of annotations
92647
+ this.entryParseResult.content.push(annotation);
92648
+ }
92649
+
92650
+ // reserve the assignment and component name before recursing so cyclic
92651
+ // references terminate
92652
+ this.assignments.set(canonicalKey, internalPointer);
92653
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
92654
+ this.reservedNames.get(field).add(componentName);
92655
+
92656
+ // own a copy of the fragment and bundle its own external references
92657
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
92658
+ const visitor = new OpenAPI2BundleVisitor({
92659
+ reference,
92660
+ options: this.options,
92661
+ assignments: this.assignments,
92662
+ reservedNames: this.reservedNames,
92663
+ refractCache: this.refractCache,
92664
+ inlineStack: this.inlineStack
92665
+ });
92666
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(hoistedElement, visitor, {
92667
+ mutable: true
92668
+ });
92669
+
92670
+ // annotate the hoisted fragment with info about its origin
92671
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
92672
+ bundledElement.meta.set('ref-origin', reference.uri);
92673
+ }
92674
+
92675
+ // place the bundled fragment into the entry document's definitions
92676
+ this.ensureField(field).set(componentName, bundledElement);
92677
+
92678
+ // rewrite the referencing element to point at the hoisted fragment
92679
+ referencingElement.set('$ref', internalPointer);
92680
+ path.skip();
92681
+ } catch (error) {
92682
+ this.handleError(`Error while bundling ${label}. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
92683
+ path.skip();
92684
+ }
92685
+ }
92686
+
92687
+ /**
92688
+ * Reference Object covers reusable Parameter and Response Objects, which are
92689
+ * hoisted into the top-level `parameters` and `responses` fields.
92690
+ */
92691
+ async ReferenceElement(path) {
92692
+ await this.bundleReference(path, path.node, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__.isReferenceElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_16__.isReferenceLikeElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__.refractReference, 'Reference Object');
92693
+ }
92694
+
92695
+ /**
92696
+ * JSON Reference Object covers reusable Schema Objects, which are hoisted
92697
+ * into the top-level `definitions` field.
92698
+ */
92699
+ async JSONReferenceElement(path) {
92700
+ await this.bundleReference(path, path.node, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_12__.isJSONReferenceElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_14__.isJSONReferenceLikeElement, _speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_11__.refractJSONReference, 'JSON Reference Object');
92701
+ }
92702
+
92703
+ /**
92704
+ * Path Item Object is not a top-level definition field in OpenAPI 2.0, so an
92705
+ * external Path Item reference cannot be hoisted; it is inlined in place
92706
+ * instead, after bundling its own external references.
92707
+ */
92708
+ async PathItemElement(path) {
92709
+ const pathItemElement = path.node;
92710
+
92711
+ // ignore Path Item Objects without a $ref field
92712
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
92713
+ return;
92714
+ }
92715
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
92716
+ const retrievalURI = this.toBaseURI($ref);
92717
+ const isInternalReference = this.entryURI === retrievalURI;
92718
+ const isExternalReference = !isInternalReference;
92719
+ if (isInternalReference) {
92720
+ // normalize self-references to a bare fragment so the bundled
92721
+ // document stays transferable; bare fragments are left untouched
92722
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
92723
+ return;
92724
+ }
92725
+
92726
+ // honor the resolve.external switch
92727
+ if (!this.options.resolve.external && isExternalReference) {
92728
+ return;
92729
+ }
92730
+ const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_22__.resolve(retrievalURI, $ref);
92731
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.URIFragmentIdentifier.fromURIReference($refBaseURI);
92732
+ const canonicalKey = `${retrievalURI}#${jsonPointer}`;
92733
+
92734
+ // a circular external Path Item reference cannot be inlined without
92735
+ // recursing forever; leave the $ref in place to break the cycle
92736
+ if (this.inlineStack.has(canonicalKey)) {
92737
+ return;
92738
+ }
92739
+ try {
92740
+ // detect maximum depth of bundling
92741
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
92742
+ throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_20__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
92743
+ maxDepth: this.options.bundle.maxDepth,
92744
+ uri: this.reference.uri
92745
+ });
92746
+ }
92747
+ const reference = await this.toReference($ref);
92748
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_9__.evaluate)(reference.value.result, jsonPointer);
92749
+
92750
+ // apply Path Item semantics to the referenced fragment
92751
+ if (!(0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_15__.isPathItemElement)(referencedElement)) {
92752
+ const cached = this.getRefracted(referencedElement, 'pathItem');
92753
+ if (cached !== undefined) {
92754
+ referencedElement = cached;
92755
+ } else {
92756
+ const sourceElement = referencedElement;
92757
+ referencedElement = (0,_speclynx_apidom_ns_openapi_2__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
92758
+ this.setRefracted(sourceElement, 'pathItem', referencedElement);
92759
+ }
92760
+ }
92761
+
92762
+ // own a copy and bundle the external references it contains
92763
+ const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
92764
+ this.inlineStack.add(canonicalKey);
92765
+ const visitor = new OpenAPI2BundleVisitor({
92766
+ reference,
92767
+ options: this.options,
92768
+ assignments: this.assignments,
92769
+ reservedNames: this.reservedNames,
92770
+ refractCache: this.refractCache,
92771
+ inlineStack: this.inlineStack
92772
+ });
92773
+ let bundledElement;
92774
+ try {
92775
+ bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_8__.traverseAsync)(inlinedElement, visitor, {
92776
+ mutable: true
92777
+ });
92778
+ } finally {
92779
+ this.inlineStack.delete(canonicalKey);
92780
+ }
92781
+
92782
+ // merge sibling fields from the referencing Path Item over the referenced
92783
+ // one. The referencing `$ref` is being resolved away and is skipped; the
92784
+ // referenced element keeps its own `$ref` if one survived (i.e. it was
92785
+ // left in place to break a circular external Path Item chain).
92786
+ pathItemElement.forEach((_value, keyElement, item) => {
92787
+ const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
92788
+ if (key === '$ref') return;
92789
+ bundledElement.remove(key);
92790
+ bundledElement.content.push(item);
92791
+ });
92792
+ bundledElement.meta.set('ref-origin', reference.uri);
92793
+ path.replaceWith(bundledElement);
92794
+ } catch (error) {
92795
+ this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
92796
+ }
92797
+ }
92798
+ }
92799
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI2BundleVisitor);
92800
+
92801
+ /***/ },
92802
+
92803
+ /***/ 5138
92804
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
92805
+
92806
+ "use strict";
92807
+ __webpack_require__.r(__webpack_exports__);
92808
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
92809
+ /* harmony export */ OpenAPI3_0BundleVisitor: () => (/* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
92810
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
92811
+ /* harmony export */ });
92812
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12111);
92813
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80796);
92814
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43151);
92815
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32131);
92816
+ /* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82302);
92817
+ /* harmony import */ var _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(88526);
92818
+ /* harmony import */ var _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(73723);
92819
+ /* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(98968);
92820
+
92821
+
92822
+
92823
+
92824
+
92825
+
92826
+
92827
+ /**
92828
+ * @public
92829
+ */
92830
+ /**
92831
+ * @public
92832
+ */
92833
+ class OpenAPI3_0BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
92834
+ constructor(options) {
92835
+ super({
92836
+ ...(options ?? {}),
92837
+ name: 'openapi-3-0'
92838
+ });
92839
+ }
92840
+ canBundle(file) {
92841
+ // assert by media type
92842
+ if (file.mediaType !== 'text/plain') {
92843
+ return _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
92844
+ }
92845
+
92846
+ // assert by inspecting ApiDOM
92847
+ return (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_0Element)(file.parseResult?.result);
92848
+ }
92849
+ async bundle(file, options) {
92850
+ const immutableRefSet = options.bundle.refSet ?? new _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]();
92851
+ const mutableRefSet = new _ReferenceSet_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]();
92852
+ let refSet = immutableRefSet;
92853
+ let reference;
92854
+
92855
+ // determine the initial reference
92856
+ if (!immutableRefSet.has(file.uri)) {
92857
+ reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]({
92858
+ uri: file.uri,
92859
+ value: file.parseResult
92860
+ });
92861
+ immutableRefSet.add(reference);
92862
+ } else {
92863
+ // pre-computed refSet was provided as configuration option
92864
+ reference = immutableRefSet.find(ref => ref.uri === file.uri);
92865
+ }
92866
+
92867
+ /**
92868
+ * Clone refSet due the bundling process being mutable.
92869
+ * We don't want to mutate the original refSet and the references.
92870
+ */
92871
+ if (options.bundle.immutable) {
92872
+ immutableRefSet.refs.map(ref => new _Reference_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]({
92873
+ ...ref,
92874
+ value: (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__.cloneDeep)(ref.value)
92875
+ })).forEach(ref => mutableRefSet.add(ref));
92876
+ reference = mutableRefSet.find(ref => ref.uri === file.uri);
92877
+ refSet = mutableRefSet;
92878
+ }
92879
+ const visitor = new _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]({
92880
+ reference: reference,
92881
+ options
92882
+ });
92883
+ await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_1__.traverseAsync)(refSet.rootRef.value, visitor, {
92884
+ mutable: true
92885
+ });
92886
+ const parseResult = reference.value;
92887
+
92888
+ /**
92889
+ * Release all memory if this refSet was not provided as a configuration option.
92890
+ * If provided as configuration option, then provider is responsible for cleanup.
92891
+ */
92892
+ if (options.bundle.refSet === null) {
92893
+ immutableRefSet.clean();
92894
+ }
92895
+ mutableRefSet.clean();
92896
+ return parseResult;
92897
+ }
92898
+ }
92899
+
92900
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleStrategy);
92901
+
92902
+ /***/ },
92903
+
92904
+ /***/ 98968
92905
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
92906
+
92907
+ "use strict";
92908
+ __webpack_require__.r(__webpack_exports__);
92909
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
92910
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
92911
+ /* harmony export */ });
92912
+ /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6352);
92913
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25162);
92914
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12111);
92915
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97071);
92916
+ /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84660);
92917
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(37205);
92918
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44673);
92919
+ /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16280);
92920
+ /* harmony import */ var _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44641);
92921
+ /* harmony import */ var _speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80796);
92922
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(12020);
92923
+ /* harmony import */ var _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61198);
92924
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(30609);
92925
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(64708);
92926
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(32131);
92927
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(21314);
92928
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(29881);
92929
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23806);
92930
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(23031);
92931
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(63842);
92932
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(87455);
92933
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(55122);
92934
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(71117);
92935
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(72257);
92936
+ /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(69511);
92937
+ /* harmony import */ var _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(89693);
92938
+ /* harmony import */ var _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(34968);
92939
+ /* harmony import */ var _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(55086);
92940
+ /* harmony import */ var _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(10476);
92941
+ /* harmony import */ var _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(18917);
92942
+ /* harmony import */ var _parse_index_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(85533);
92943
+ /* harmony import */ var _Reference_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(82302);
92944
+ /* harmony import */ var _util_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(78814);
92945
+
92946
+
92947
+
92948
+
92949
+
92950
+
92951
+
92952
+
92953
+
92954
+
92955
+
92956
+
92957
+
92958
+
92959
+
92960
+ /**
92961
+ * Maps the `referenced-element` meta value (set during refraction) to the
92962
+ * Components Object field where the referenced element should be hoisted.
92963
+ * Field names are sourced from the Components Object fixed fields so they
92964
+ * cannot drift from the namespace definition.
92965
+ */
92966
+ const cf = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_5__.fixedFields)(_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"], {
92967
+ indexed: true
92968
+ });
92969
+ const componentFieldByReferencedElement = {
92970
+ schema: cf.schemas.name,
92971
+ response: cf.responses.name,
92972
+ parameter: cf.parameters.name,
92973
+ example: cf.examples.name,
92974
+ requestBody: cf.requestBodies.name,
92975
+ header: cf.headers.name,
92976
+ securityScheme: cf.securitySchemes.name,
92977
+ link: cf.links.name,
92978
+ callback: cf.callbacks.name
92979
+ };
92980
+
92981
+ /**
92982
+ * Maps a Components Object field to the named-content element the namespace
92983
+ * uses for it, so a bundle-created field matches a parsed/refracted one
92984
+ * (e.g. carries the `components-schemas` class) rather than being a generic
92985
+ * object.
92986
+ */
92987
+ const componentFieldElementByField = {
92988
+ [cf.schemas.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_23__["default"],
92989
+ [cf.responses.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_22__["default"],
92990
+ [cf.parameters.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_20__["default"],
92991
+ [cf.examples.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_17__["default"],
92992
+ [cf.requestBodies.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_21__["default"],
92993
+ [cf.headers.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_18__["default"],
92994
+ [cf.securitySchemes.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_24__["default"],
92995
+ [cf.links.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_19__["default"],
92996
+ [cf.callbacks.name]: _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_16__["default"]
92997
+ };
92998
+
92999
+ /**
93000
+ * @public
93001
+ */
93002
+
93003
+ /**
93004
+ * @public
93005
+ */
93006
+ class OpenAPI3_0BundleVisitor {
93007
+ reference;
93008
+ options;
93009
+
93010
+ /**
93011
+ * The base URI (without hash) of the entry document. A reference is
93012
+ * considered internal when it resolves to this URI and external otherwise.
93013
+ * Derived from the shared refSet's root reference.
93014
+ */
93015
+ get entryURI() {
93016
+ return _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '');
93017
+ }
93018
+
93019
+ /**
93020
+ * The entry parse result. Derived from the shared refSet's root reference.
93021
+ */
93022
+ get entryParseResult() {
93023
+ return this.reference.refSet.rootRef.value;
93024
+ }
93025
+
93026
+ /**
93027
+ * The entry document element. Hoisted external fragments are placed into its
93028
+ * `components` object. The `canBundle` guard guarantees it is an
93029
+ * OpenApi3_0Element.
93030
+ */
93031
+ get entryResult() {
93032
+ return this.entryParseResult.result;
93033
+ }
93034
+
93035
+ /**
93036
+ * Shared across the entry document and every external document visitor.
93037
+ * Guarantees each external fragment is hoisted exactly once and gives us a
93038
+ * stable internal pointer to rewrite every referencing element to.
93039
+ */
93040
+ assignments;
93041
+
93042
+ /**
93043
+ * Component names already reserved per Components Object field. Reserved
93044
+ * before recursion so collision suffixing (`Pet`, `Pet-2`, ...) accounts for
93045
+ * components that are still being bundled.
93046
+ */
93047
+ reservedNames;
93048
+
93049
+ /**
93050
+ * Caches refracted fragments keyed by source element and target element type.
93051
+ * The type is part of the key because the same source can be refracted into
93052
+ * different semantic elements depending on the referencing context (e.g. a
93053
+ * generic object referenced once as a Parameter and once as a Response).
93054
+ */
93055
+ refractCache;
93056
+
93057
+ /**
93058
+ * Canonical URIs of Path Item Objects currently being inlined. Path Items
93059
+ * are not hoisted into Components Object (no `components.pathItems` in
93060
+ * OpenAPI 3.0), so the `assignments` map can't break their cycles. This
93061
+ * stack guards against circular external Path Item references.
93062
+ */
93063
+ inlineStack;
93064
+ constructor({
93065
+ reference,
93066
+ options,
93067
+ assignments = new Map(),
93068
+ reservedNames = new Map(),
93069
+ refractCache = new WeakMap(),
93070
+ inlineStack = new Set()
93071
+ }) {
93072
+ this.reference = reference;
93073
+ this.options = options;
93074
+ this.inlineStack = inlineStack;
93075
+ this.assignments = assignments;
93076
+ this.reservedNames = reservedNames;
93077
+ this.refractCache = refractCache;
93078
+ }
93079
+ getRefracted(source, type) {
93080
+ return this.refractCache.get(source)?.get(type);
93081
+ }
93082
+ setRefracted(source, type, refracted) {
93083
+ let byType = this.refractCache.get(source);
93084
+ if (byType === undefined) {
93085
+ byType = new Map();
93086
+ this.refractCache.set(source, byType);
93087
+ }
93088
+ byType.set(type, refracted);
93089
+ }
93090
+ toBaseURI(uri) {
93091
+ return _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.sanitize(_util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(uri)));
93092
+ }
93093
+ async toReference(uri) {
93094
+ // detect maximum depth of resolution
93095
+ if (this.reference.depth >= this.options.resolve.maxDepth) {
93096
+ throw new _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
93097
+ maxDepth: this.options.resolve.maxDepth,
93098
+ uri: this.reference.uri
93099
+ });
93100
+ }
93101
+ const baseURI = this.toBaseURI(uri);
93102
+ const {
93103
+ refSet
93104
+ } = this.reference;
93105
+
93106
+ // we've already processed this Reference in past
93107
+ if (refSet.has(baseURI)) {
93108
+ return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(baseURI, 'uri'));
93109
+ }
93110
+ const parseResult = await (0,_parse_index_mjs__WEBPACK_IMPORTED_MODULE_30__["default"])(_util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.unsanitize(baseURI), {
93111
+ ...this.options,
93112
+ parse: {
93113
+ ...this.options.parse,
93114
+ mediaType: 'text/plain'
93115
+ }
93116
+ });
93117
+ const reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]({
93118
+ uri: baseURI,
93119
+ value: parseResult,
93120
+ depth: this.reference.depth + 1
93121
+ });
93122
+ refSet.add(reference);
93123
+ return reference;
93124
+ }
93125
+
93126
+ /**
93127
+ * Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
93128
+ * to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
93129
+ * transferable. Bare fragments are returned unchanged.
93130
+ */
93131
+ normalizeSelfReference(ref) {
93132
+ return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.getHash(ref);
93133
+ }
93134
+
93135
+ /**
93136
+ * Handles an error according to the `bundle.continueOnError` option.
93137
+ *
93138
+ * For new errors: wraps in UnresolvableReferenceError with structured
93139
+ * context. For errors already wrapped by a nested visitor: prepends the
93140
+ * current hop to the trace.
93141
+ *
93142
+ * Inner/intermediate visitors always throw to let the trace accumulate. Only
93143
+ * the entry document visitor respects continueOnError (callback/swallow/throw).
93144
+ */
93145
+ handleError(message, error, referencingElement, refFieldName, refFieldValue, visitorPath) {
93146
+ // a collision reported as `error` is a deliberate hard stop with no
93147
+ // resolution-failure analog, so pass it through unchanged. A maxDepth
93148
+ // breach (MaximumBundleDepthError, which also extends BundleError) is a
93149
+ // resolution failure and flows through below — wrapped and subject to
93150
+ // continueOnError, like dereferencing.
93151
+ if (error instanceof _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__["default"] && !(error instanceof _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"])) {
93152
+ throw error;
93153
+ }
93154
+ const {
93155
+ continueOnError
93156
+ } = this.options.bundle;
93157
+ const isEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
93158
+ const uri = this.reference.uri;
93159
+ const type = referencingElement.element;
93160
+ const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement);
93161
+ const location = visitorPath.formatPath();
93162
+ const hop = {
93163
+ uri,
93164
+ type,
93165
+ refFieldName,
93166
+ refFieldValue,
93167
+ location,
93168
+ codeFrame
93169
+ };
93170
+ let unresolvedError;
93171
+ if (error instanceof _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]) {
93172
+ // @ts-ignore
93173
+ error.trace = [hop, ...error.trace];
93174
+ unresolvedError = error;
93175
+ } else {
93176
+ unresolvedError = new _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__["default"](message, {
93177
+ cause: error,
93178
+ type,
93179
+ uri,
93180
+ location,
93181
+ codeFrame,
93182
+ refFieldName,
93183
+ refFieldValue,
93184
+ trace: []
93185
+ });
93186
+ }
93187
+ if (!isEntryDocument || continueOnError === false) throw unresolvedError;
93188
+ if (typeof continueOnError === 'function') continueOnError(unresolvedError);
93189
+ }
93190
+
93191
+ /**
93192
+ * Lazily creates the Components Object (and the requested field within it)
93193
+ * on the entry document, returning the field where a fragment is hoisted.
93194
+ */
93195
+ ensureComponentsField(field) {
93196
+ const entryResult = this.entryResult;
93197
+ let components = entryResult.components;
93198
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(components)) {
93199
+ components = new _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"]();
93200
+ entryResult.components = components;
93201
+ }
93202
+ let fieldElement = components.get(field);
93203
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(fieldElement)) {
93204
+ const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"];
93205
+ fieldElement = new FieldElement();
93206
+ components.set(field, fieldElement);
93207
+ }
93208
+ return fieldElement;
93209
+ }
93210
+
93211
+ /**
93212
+ * Derives a component name from the referenced JSON Pointer's last token,
93213
+ * falling back to the referenced file's basename.
93214
+ */
93215
+ basenameOf(jsonPointer, baseURI) {
93216
+ const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.parse)(jsonPointer).tree;
93217
+ const lastToken = tokens.length > 0 ? tokens[tokens.length - 1] : '';
93218
+ return lastToken || _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.getBasename(baseURI) || 'Schema';
93219
+ }
93220
+
93221
+ /**
93222
+ * Computes the base component name (before collision suffixing) according to
93223
+ * the configured naming strategy.
93224
+ */
93225
+ baseName(element, field, jsonPointer, baseURI) {
93226
+ // strategy specific options take precedence over the top-level bundle options
93227
+ const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-0']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
93228
+ if (typeof componentNamesStrategy === 'function') {
93229
+ const resolved = componentNamesStrategy({
93230
+ element,
93231
+ field,
93232
+ jsonPointer,
93233
+ baseURI
93234
+ });
93235
+ if (typeof resolved === 'string' && resolved !== '') {
93236
+ return resolved;
93237
+ }
93238
+ return this.basenameOf(jsonPointer, baseURI);
93239
+ }
93240
+ if (componentNamesStrategy === 'title') {
93241
+ const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(element.get('title')) : undefined;
93242
+ if (typeof title === 'string' && title.trim() !== '') {
93243
+ const name = (0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.sanitizeComponentName)((0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.toPascalCase)(title));
93244
+ if (name !== '') return name;
93245
+ }
93246
+ // fall back to basename when no usable title is present
93247
+ }
93248
+ return this.basenameOf(jsonPointer, baseURI);
93249
+ }
93250
+
93251
+ /**
93252
+ * Computes a collision-free component name within the target field. A name is
93253
+ * taken if it's already placed in components or reserved by a component that
93254
+ * is still being bundled (reserved before recursion).
93255
+ */
93256
+ uniqueName(candidate, field) {
93257
+ const fieldElement = this.ensureComponentsField(field);
93258
+ const reserved = this.reservedNames.get(field) ?? new Set();
93259
+ return (0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
93260
+ }
93261
+ async ReferenceElement(path) {
93262
+ const referencingElement = path.node;
93263
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement.$ref);
93264
+ const retrievalURI = this.toBaseURI($ref);
93265
+ const isInternalReference = this.entryURI === retrievalURI;
93266
+ const isExternalReference = !isInternalReference;
93267
+ if (isInternalReference) {
93268
+ // normalize self-references to a bare fragment so the bundled
93269
+ // document stays transferable; bare fragments are left untouched
93270
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
93271
+ path.skip();
93272
+ return;
93273
+ }
93274
+
93275
+ // honor the resolve.external switch
93276
+ if (!this.options.resolve.external && isExternalReference) {
93277
+ path.skip();
93278
+ return;
93279
+ }
93280
+ const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
93281
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
93282
+
93283
+ // the target bucket depends on the referencing context, so it's part of the
93284
+ // identity: the same external target referenced as e.g. both a parameter and
93285
+ // a response must be hoisted into both components fields. The refractor sets
93286
+ // `referenced-element` for every Reference Object position; the `schemas`
93287
+ // fallback is a defensive default for the (unexpected) untagged case.
93288
+ const referencedElementType = referencingElement.meta.get('referenced-element');
93289
+ const field = componentFieldByReferencedElement[referencedElementType] ?? componentFieldByReferencedElement.schema;
93290
+ const canonicalKey = `${field}\t${retrievalURI}#${jsonPointer}`;
93291
+
93292
+ // already hoisted (or being hoisted) — just rewrite the pointer.
93293
+ //
93294
+ // this is also how circular references terminate: the assignment is
93295
+ // reserved BEFORE recursing into the fragment (see below), so a reference
93296
+ // that cycles back (directly or indirectly) finds its pointer already
93297
+ // reserved here and is rewritten without recursing. Cycles are deliberately
93298
+ // preserved as internal `$ref`s pointing at each other — that is valid,
93299
+ // serializable output; resolving the cycle (if desired) is dereferencing's
93300
+ // job, not bundling's.
93301
+ if (this.assignments.has(canonicalKey)) {
93302
+ referencingElement.set('$ref', this.assignments.get(canonicalKey));
93303
+ path.skip();
93304
+ return;
93305
+ }
93306
+ try {
93307
+ // detect maximum depth of bundling
93308
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
93309
+ throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
93310
+ maxDepth: this.options.bundle.maxDepth,
93311
+ uri: this.reference.uri
93312
+ });
93313
+ }
93314
+ const reference = await this.toReference($ref);
93315
+
93316
+ // possibly non-semantic fragment
93317
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
93318
+
93319
+ // apply semantics to the fragment so nested references become Reference Objects
93320
+ if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement)) {
93321
+ const cached = this.getRefracted(referencedElement, referencedElementType);
93322
+ if (cached !== undefined) {
93323
+ referencedElement = cached;
93324
+ } else if ((0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__.isReferenceLikeElement)(referencedElement)) {
93325
+ const sourceElement = referencedElement;
93326
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
93327
+ referencedElement.meta.set('referenced-element', referencedElementType);
93328
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
93329
+ } else {
93330
+ const sourceElement = referencedElement;
93331
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
93332
+ element: referencedElementType
93333
+ });
93334
+ this.setRefracted(sourceElement, referencedElementType, referencedElement);
93335
+ }
93336
+ }
93337
+ const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
93338
+ const componentName = this.uniqueName(preferredName, field);
93339
+ const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.escape)(componentName)}`;
93340
+
93341
+ // a rename means two distinct targets resolved to the same name; each
93342
+ // keeps its own component (and origin), so report the rename per severity.
93343
+ // strategy specific options take precedence over the top-level bundle options
93344
+ const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
93345
+ if (componentName !== preferredName && onComponentNameCollision !== 'off') {
93346
+ const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
93347
+ if (onComponentNameCollision === 'error') {
93348
+ throw new _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__["default"](message);
93349
+ }
93350
+ const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
93351
+ annotation.classes.push('warning');
93352
+ annotation.code = 'bundle-component-name-collision';
93353
+ // append (never prepend) so the result element stays ahead of annotations
93354
+ this.entryParseResult.content.push(annotation);
93355
+ }
93356
+
93357
+ // reserve the assignment and component name before recursing so cyclic
93358
+ // references terminate
93359
+ this.assignments.set(canonicalKey, internalPointer);
93360
+ if (!this.reservedNames.has(field)) this.reservedNames.set(field, new Set());
93361
+ this.reservedNames.get(field).add(componentName);
93362
+
93363
+ // own a copy of the fragment and bundle its own external references
93364
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
93365
+ const visitor = new OpenAPI3_0BundleVisitor({
93366
+ reference,
93367
+ options: this.options,
93368
+ assignments: this.assignments,
93369
+ reservedNames: this.reservedNames,
93370
+ refractCache: this.refractCache,
93371
+ inlineStack: this.inlineStack
93372
+ });
93373
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(hoistedElement, visitor, {
93374
+ mutable: true
93375
+ });
93376
+
93377
+ // annotate the hoisted fragment with info about its origin
93378
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
93379
+ bundledElement.meta.set('ref-origin', reference.uri);
93380
+ }
93381
+
93382
+ // place the bundled fragment into the entry document's components
93383
+ this.ensureComponentsField(field).set(componentName, bundledElement);
93384
+
93385
+ // rewrite the referencing element to point at the hoisted fragment
93386
+ referencingElement.set('$ref', internalPointer);
93387
+ path.skip();
93388
+ } catch (error) {
93389
+ this.handleError(`Error while bundling Reference Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
93390
+ path.skip();
93391
+ }
93392
+ }
93393
+
93394
+ /**
93395
+ * Path Item Object is not a Components Object field in OpenAPI 3.0
93396
+ * (unlike 3.1 which has `components.pathItems`). An external Path Item
93397
+ * reference therefore cannot be hoisted; it is inlined in place instead,
93398
+ * after bundling its own external references.
93399
+ */
93400
+ async PathItemElement(path) {
93401
+ const pathItemElement = path.node;
93402
+
93403
+ // ignore Path Item Objects without a $ref field
93404
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
93405
+ return;
93406
+ }
93407
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
93408
+ const retrievalURI = this.toBaseURI($ref);
93409
+ const isInternalReference = this.entryURI === retrievalURI;
93410
+ const isExternalReference = !isInternalReference;
93411
+ if (isInternalReference) {
93412
+ // normalize self-references to a bare fragment so the bundled
93413
+ // document stays transferable; bare fragments are left untouched
93414
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
93415
+ return;
93416
+ }
93417
+
93418
+ // honor the resolve.external switch
93419
+ if (!this.options.resolve.external && isExternalReference) {
93420
+ return;
93421
+ }
93422
+ const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
93423
+ const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
93424
+ const canonicalKey = `${retrievalURI}#${jsonPointer}`;
93425
+
93426
+ // a circular external Path Item reference cannot be inlined without
93427
+ // recursing forever; leave the $ref in place to break the cycle
93428
+ if (this.inlineStack.has(canonicalKey)) {
93429
+ return;
93430
+ }
93431
+ try {
93432
+ // detect maximum depth of bundling
93433
+ if (this.reference.depth >= this.options.bundle.maxDepth) {
93434
+ throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
93435
+ maxDepth: this.options.bundle.maxDepth,
93436
+ uri: this.reference.uri
93437
+ });
93438
+ }
93439
+ const reference = await this.toReference($ref);
93440
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
93441
+
93442
+ // apply Path Item semantics to the referenced fragment
93443
+ if (!(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
93444
+ const cached = this.getRefracted(referencedElement, 'pathItem');
93445
+ if (cached !== undefined) {
93446
+ referencedElement = cached;
93447
+ } else {
93448
+ const sourceElement = referencedElement;
93449
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
93450
+ this.setRefracted(sourceElement, 'pathItem', referencedElement);
93451
+ }
93452
+ }
93453
+
93454
+ // own a copy and bundle the external references it contains
93455
+ const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
93456
+ this.inlineStack.add(canonicalKey);
93457
+ const visitor = new OpenAPI3_0BundleVisitor({
93458
+ reference,
93459
+ options: this.options,
93460
+ assignments: this.assignments,
93461
+ reservedNames: this.reservedNames,
93462
+ refractCache: this.refractCache,
93463
+ inlineStack: this.inlineStack
93464
+ });
93465
+ let bundledElement;
93466
+ try {
93467
+ bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(inlinedElement, visitor, {
93468
+ mutable: true
93469
+ });
93470
+ } finally {
93471
+ this.inlineStack.delete(canonicalKey);
93472
+ }
93473
+
93474
+ // merge sibling fields from the referencing Path Item over the referenced
93475
+ // one. The referencing `$ref` is being resolved away and is skipped; the
93476
+ // referenced element keeps its own `$ref` if one survived (i.e. it was
93477
+ // left in place to break a circular external Path Item chain).
93478
+ pathItemElement.forEach((_value, keyElement, item) => {
93479
+ const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
93480
+ if (key === '$ref') return;
93481
+ bundledElement.remove(key);
93482
+ bundledElement.content.push(item);
93483
+ });
93484
+ bundledElement.meta.set('ref-origin', reference.uri);
93485
+ path.replaceWith(bundledElement);
93486
+ } catch (error) {
93487
+ this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
93488
+ }
93489
+ }
93490
+
93491
+ /**
93492
+ * Example Object `externalValue` points at arbitrary external content that
93493
+ * has no place in the Components Object. The referenced value is inlined into
93494
+ * the Example's `value` field.
93495
+ */
93496
+ async ExampleElement(path) {
93497
+ const exampleElement = path.node;
93498
+
93499
+ // ignore Example Objects without an externalValue field
93500
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
93501
+ return;
93502
+ }
93503
+
93504
+ // value and externalValue fields are mutually exclusive
93505
+ if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
93506
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
93507
+ value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.value),
93508
+ externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue)
93509
+ });
93510
+ }
93511
+ const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue);
93512
+ const retrievalURI = this.toBaseURI(externalValue);
93513
+ const isInternalReference = this.entryURI === retrievalURI;
93514
+ const isExternalReference = !isInternalReference;
93515
+
93516
+ // honor the resolve.external switch
93517
+ if (!this.options.resolve.external && isExternalReference) {
93518
+ return;
93519
+ }
93520
+ try {
93521
+ const reference = await this.toReference(externalValue);
93522
+ const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(reference.value.result);
93523
+ valueElement.meta.set('ref-origin', reference.uri);
93524
+ const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(exampleElement);
93525
+ exampleElementCopy.value = valueElement;
93526
+ exampleElementCopy.remove('externalValue');
93527
+ path.replaceWith(exampleElementCopy);
93528
+ } catch (error) {
93529
+ this.handleError(`Error while bundling Example Object. Cannot resolve externalValue "${externalValue}": ${error.message}`, error, exampleElement, 'externalValue', externalValue, path);
93530
+ }
93531
+ }
93532
+
93533
+ /**
93534
+ * Link Object `operationRef` points at an Operation Object, which has no
93535
+ * Components Object field in OpenAPI 3.0 and therefore cannot be hoisted or
93536
+ * inlined. To keep the link resolvable from the bundled document, an external
93537
+ * `operationRef` is rewritten to its absolute URI. Internal `operationRef`
93538
+ * values and `operationId` links are left untouched.
93539
+ */
93540
+ async LinkElement(path) {
93541
+ const linkElement = path.node;
93542
+
93543
+ // operationRef and operationId fields are mutually exclusive
93544
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationId)) {
93545
+ throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
93546
+ operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef),
93547
+ operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationId)
93548
+ });
93549
+ }
93550
+
93551
+ // only external operationRef links need adjusting
93552
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef)) {
93553
+ return;
93554
+ }
93555
+ const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef);
93556
+ const retrievalURI = this.toBaseURI(operationRef);
93557
+ const isInternalReference = this.entryURI === retrievalURI;
93558
+ if (isInternalReference) {
93559
+ // normalize a self-reference operationRef to a bare fragment so the bundled
93560
+ // document stays transferable; bare fragments are left untouched
93561
+ linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
93562
+ return;
93563
+ }
93564
+
93565
+ // honor the resolve.external switch
93566
+ if (!this.options.resolve.external) {
93567
+ return;
93568
+ }
93569
+
93570
+ // rewrite to an absolute URI so the link keeps resolving once the document
93571
+ // is treated as self-contained
93572
+ const absoluteURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, operationRef);
93573
+ if (absoluteURI !== operationRef) {
93574
+ linkElement.set('operationRef', absoluteURI);
93575
+ }
93576
+ }
93577
+ }
93578
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleVisitor);
93579
+
93580
+ /***/ },
93581
+
93582
+ /***/ 58091
93583
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
93584
+
93585
+ "use strict";
93586
+ __webpack_require__.r(__webpack_exports__);
93587
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
93588
+ /* harmony export */ OpenAPI3_1BundleVisitor: () => (/* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]),
93589
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
93590
+ /* harmony export */ });
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
+
93604
+
93605
+
93606
+ /**
93607
+ * @public
93608
+ */
93609
+ /**
93610
+ * @public
93611
+ */
93612
+ class OpenAPI3_1BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_6__["default"] {
93613
+ constructor(options) {
93614
+ super({
93615
+ ...(options ?? {}),
93616
+ name: 'openapi-3-1'
93617
+ });
93618
+ }
93619
+ canBundle(file) {
93620
+ // assert by media type
93621
+ if (file.mediaType !== 'text/plain') {
93622
+ return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_2__["default"].includes(file.mediaType);
93623
+ }
93624
+
93625
+ // assert by inspecting ApiDOM
93626
+ return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_3__.isOpenApi3_1Element)(file.parseResult?.result);
93627
+ }
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;
93676
+ }
93677
+ }
93678
+
93679
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
93680
+
93681
+ /***/ },
93682
+
93683
+ /***/ 34081
93684
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
93685
+
93686
+ "use strict";
93687
+ __webpack_require__.r(__webpack_exports__);
93688
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
93689
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
93690
+ /* harmony export */ });
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);
93731
+
93732
+
93733
+
93734
+
93735
+
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.
91900
93823
  */
91901
93824
  get entryResult() {
91902
93825
  return this.entryParseResult.result;
@@ -91923,25 +93846,15 @@ class OpenAPI3_0BundleVisitor {
91923
93846
  * generic object referenced once as a Parameter and once as a Response).
91924
93847
  */
91925
93848
  refractCache;
91926
-
91927
- /**
91928
- * Canonical URIs of Path Item Objects currently being inlined. Path Items
91929
- * are not hoisted into Components Object (no `components.pathItems` in
91930
- * OpenAPI 3.0), so the `assignments` map can't break their cycles. This
91931
- * stack guards against circular external Path Item references.
91932
- */
91933
- inlineStack;
91934
93849
  constructor({
91935
93850
  reference,
91936
93851
  options,
91937
93852
  assignments = new Map(),
91938
93853
  reservedNames = new Map(),
91939
- refractCache = new WeakMap(),
91940
- inlineStack = new Set()
93854
+ refractCache = new WeakMap()
91941
93855
  }) {
91942
93856
  this.reference = reference;
91943
93857
  this.options = options;
91944
- this.inlineStack = inlineStack;
91945
93858
  this.assignments = assignments;
91946
93859
  this.reservedNames = reservedNames;
91947
93860
  this.refractCache = refractCache;
@@ -91958,12 +93871,12 @@ class OpenAPI3_0BundleVisitor {
91958
93871
  byType.set(type, refracted);
91959
93872
  }
91960
93873
  toBaseURI(uri) {
91961
- return _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.sanitize(_util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(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)));
91962
93875
  }
91963
93876
  async toReference(uri) {
91964
93877
  // detect maximum depth of resolution
91965
93878
  if (this.reference.depth >= this.options.resolve.maxDepth) {
91966
- throw new _errors_MaximumResolveDepthError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`, {
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}"`, {
91967
93880
  maxDepth: this.options.resolve.maxDepth,
91968
93881
  uri: this.reference.uri
91969
93882
  });
@@ -91975,16 +93888,16 @@ class OpenAPI3_0BundleVisitor {
91975
93888
 
91976
93889
  // we've already processed this Reference in past
91977
93890
  if (refSet.has(baseURI)) {
91978
- return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(baseURI, 'uri'));
93891
+ return refSet.find((0,ramda__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURI, 'uri'));
91979
93892
  }
91980
- const parseResult = await (0,_parse_index_mjs__WEBPACK_IMPORTED_MODULE_30__["default"])(_util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.unsanitize(baseURI), {
93893
+ const parseResult = await (0,_parse_index_mjs__WEBPACK_IMPORTED_MODULE_33__["default"])(_util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.unsanitize(baseURI), {
91981
93894
  ...this.options,
91982
93895
  parse: {
91983
93896
  ...this.options.parse,
91984
93897
  mediaType: 'text/plain'
91985
93898
  }
91986
93899
  });
91987
- const reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_31__["default"]({
93900
+ const reference = new _Reference_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]({
91988
93901
  uri: baseURI,
91989
93902
  value: parseResult,
91990
93903
  depth: this.reference.depth + 1
@@ -91994,12 +93907,12 @@ class OpenAPI3_0BundleVisitor {
91994
93907
  }
91995
93908
 
91996
93909
  /**
91997
- * Normalizes a self-file reference (e.g. `./root.json#/components/schemas/Pet`)
93910
+ * Normalizes a self-reference (e.g. `./root.json#/components/schemas/Pet`)
91998
93911
  * to a bare fragment (`#/components/schemas/Pet`) so the bundled document stays
91999
93912
  * transferable. Bare fragments are returned unchanged.
92000
93913
  */
92001
- normalizeSelfFileRef(ref) {
92002
- return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.getHash(ref);
93914
+ normalizeSelfReference(ref) {
93915
+ return ref.startsWith('#') ? ref : _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.getHash(ref);
92003
93916
  }
92004
93917
 
92005
93918
  /**
@@ -92018,16 +93931,16 @@ class OpenAPI3_0BundleVisitor {
92018
93931
  // breach (MaximumBundleDepthError, which also extends BundleError) is a
92019
93932
  // resolution failure and flows through below — wrapped and subject to
92020
93933
  // continueOnError, like dereferencing.
92021
- if (error instanceof _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__["default"] && !(error instanceof _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"])) {
93934
+ if (error instanceof _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"] && !(error instanceof _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_29__["default"])) {
92022
93935
  throw error;
92023
93936
  }
92024
93937
  const {
92025
93938
  continueOnError
92026
93939
  } = this.options.bundle;
92027
- const isEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
93940
+ const isEntryDocument = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.stripHash(this.reference.refSet?.rootRef?.uri ?? '') === this.reference.uri;
92028
93941
  const uri = this.reference.uri;
92029
93942
  const type = referencingElement.element;
92030
- const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement);
93943
+ const codeFrame = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(referencingElement);
92031
93944
  const location = visitorPath.formatPath();
92032
93945
  const hop = {
92033
93946
  uri,
@@ -92038,12 +93951,12 @@ class OpenAPI3_0BundleVisitor {
92038
93951
  codeFrame
92039
93952
  };
92040
93953
  let unresolvedError;
92041
- if (error instanceof _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__["default"]) {
93954
+ if (error instanceof _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"]) {
92042
93955
  // @ts-ignore
92043
93956
  error.trace = [hop, ...error.trace];
92044
93957
  unresolvedError = error;
92045
93958
  } else {
92046
- unresolvedError = new _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_26__["default"](message, {
93959
+ unresolvedError = new _errors_UnresolvableReferenceError_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](message, {
92047
93960
  cause: error,
92048
93961
  type,
92049
93962
  uri,
@@ -92065,13 +93978,13 @@ class OpenAPI3_0BundleVisitor {
92065
93978
  ensureComponentsField(field) {
92066
93979
  const entryResult = this.entryResult;
92067
93980
  let components = entryResult.components;
92068
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(components)) {
92069
- components = new _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_12__["default"]();
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();
92070
93983
  entryResult.components = components;
92071
93984
  }
92072
93985
  let fieldElement = components.get(field);
92073
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(fieldElement)) {
92074
- const FieldElement = componentFieldElementByField[field] ?? _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__["default"];
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"];
92075
93988
  fieldElement = new FieldElement();
92076
93989
  components.set(field, fieldElement);
92077
93990
  }
@@ -92083,17 +93996,9 @@ class OpenAPI3_0BundleVisitor {
92083
93996
  * falling back to the referenced file's basename.
92084
93997
  */
92085
93998
  basenameOf(jsonPointer, baseURI) {
92086
- const tokens = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.parse)(jsonPointer).tree;
92087
- let candidate = tokens.length > 0 ? tokens[tokens.length - 1] : '';
92088
- if (candidate === '') {
92089
- const lastSlash = baseURI.lastIndexOf('/');
92090
- const lastDot = baseURI.lastIndexOf('.');
92091
- const fileName = baseURI.slice(lastSlash + 1);
92092
- // strip the extension only when the last dot belongs to the file name
92093
- candidate = lastDot > lastSlash ? baseURI.slice(lastSlash + 1, lastDot) : fileName;
92094
- }
92095
- if (candidate === '') candidate = 'Schema';
92096
- return candidate;
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';
92097
94002
  }
92098
94003
 
92099
94004
  /**
@@ -92102,7 +94007,7 @@ class OpenAPI3_0BundleVisitor {
92102
94007
  */
92103
94008
  baseName(element, field, jsonPointer, baseURI) {
92104
94009
  // strategy specific options take precedence over the top-level bundle options
92105
- const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-0']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
94010
+ const componentNamesStrategy = this.options.bundle.strategyOpts['openapi-3-1']?.componentNamesStrategy ?? this.options.bundle.componentNamesStrategy;
92106
94011
  if (typeof componentNamesStrategy === 'function') {
92107
94012
  const resolved = componentNamesStrategy({
92108
94013
  element,
@@ -92116,9 +94021,9 @@ class OpenAPI3_0BundleVisitor {
92116
94021
  return this.basenameOf(jsonPointer, baseURI);
92117
94022
  }
92118
94023
  if (componentNamesStrategy === 'title') {
92119
- const title = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isObjectElement)(element) ? (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(element.get('title')) : undefined;
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;
92120
94025
  if (typeof title === 'string' && title.trim() !== '') {
92121
- const name = (0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.sanitizeComponentName)((0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.toPascalCase)(title));
94026
+ const name = (0,_util_mjs__WEBPACK_IMPORTED_MODULE_39__.sanitizeComponentName)((0,_util_mjs__WEBPACK_IMPORTED_MODULE_39__.toPascalCase)(title));
92122
94027
  if (name !== '') return name;
92123
94028
  }
92124
94029
  // fall back to basename when no usable title is present
@@ -92134,18 +94039,40 @@ class OpenAPI3_0BundleVisitor {
92134
94039
  uniqueName(candidate, field) {
92135
94040
  const fieldElement = this.ensureComponentsField(field);
92136
94041
  const reserved = this.reservedNames.get(field) ?? new Set();
92137
- return (0,_util_mjs__WEBPACK_IMPORTED_MODULE_32__.uniqueName)(candidate, name => fieldElement.hasKey(name) || reserved.has(name));
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);
92138
94065
  }
92139
94066
  async ReferenceElement(path) {
92140
94067
  const referencingElement = path.node;
92141
- const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(referencingElement.$ref);
94068
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(referencingElement.$ref);
92142
94069
  const retrievalURI = this.toBaseURI($ref);
92143
94070
  const isInternalReference = this.entryURI === retrievalURI;
92144
94071
  const isExternalReference = !isInternalReference;
92145
94072
  if (isInternalReference) {
92146
- // normalize self-file references to a bare fragment so the bundled
94073
+ // normalize self-references to a bare fragment so the bundled
92147
94074
  // document stays transferable; bare fragments are left untouched
92148
- referencingElement.set('$ref', this.normalizeSelfFileRef($ref));
94075
+ referencingElement.set('$ref', this.normalizeSelfReference($ref));
92149
94076
  path.skip();
92150
94077
  return;
92151
94078
  }
@@ -92155,8 +94082,8 @@ class OpenAPI3_0BundleVisitor {
92155
94082
  path.skip();
92156
94083
  return;
92157
94084
  }
92158
- const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
92159
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
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);
92160
94087
 
92161
94088
  // the target bucket depends on the referencing context, so it's part of the
92162
94089
  // identity: the same external target referenced as e.g. both a parameter and
@@ -92184,7 +94111,7 @@ class OpenAPI3_0BundleVisitor {
92184
94111
  try {
92185
94112
  // detect maximum depth of bundling
92186
94113
  if (this.reference.depth >= this.options.bundle.maxDepth) {
92187
- throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
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}"`, {
92188
94115
  maxDepth: this.options.bundle.maxDepth,
92189
94116
  uri: this.reference.uri
92190
94117
  });
@@ -92192,21 +94119,21 @@ class OpenAPI3_0BundleVisitor {
92192
94119
  const reference = await this.toReference($ref);
92193
94120
 
92194
94121
  // possibly non-semantic fragment
92195
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
94122
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
92196
94123
 
92197
94124
  // apply semantics to the fragment so nested references become Reference Objects
92198
- if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isReferenceElement)(referencedElement)) {
94125
+ if (referencedElement.element !== referencedElementType && !(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isReferenceElement)(referencedElement)) {
92199
94126
  const cached = this.getRefracted(referencedElement, referencedElementType);
92200
94127
  if (cached !== undefined) {
92201
94128
  referencedElement = cached;
92202
- } else if ((0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_15__.isReferenceLikeElement)(referencedElement)) {
94129
+ } else if ((0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_13__.isReferenceLikeElement)(referencedElement)) {
92203
94130
  const sourceElement = referencedElement;
92204
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractReference)(referencedElement);
94131
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractReference)(referencedElement);
92205
94132
  referencedElement.meta.set('referenced-element', referencedElementType);
92206
94133
  this.setRefracted(sourceElement, referencedElementType, referencedElement);
92207
94134
  } else {
92208
94135
  const sourceElement = referencedElement;
92209
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__["default"])(referencedElement, {
94136
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__["default"])(referencedElement, {
92210
94137
  element: referencedElementType
92211
94138
  });
92212
94139
  this.setRefracted(sourceElement, referencedElementType, referencedElement);
@@ -92214,23 +94141,8 @@ class OpenAPI3_0BundleVisitor {
92214
94141
  }
92215
94142
  const preferredName = this.baseName(referencedElement, field, jsonPointer, retrievalURI);
92216
94143
  const componentName = this.uniqueName(preferredName, field);
92217
- const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.escape)(componentName)}`;
92218
-
92219
- // a rename means two distinct targets resolved to the same name; each
92220
- // keeps its own component (and origin), so report the rename per severity.
92221
- // strategy specific options take precedence over the top-level bundle options
92222
- const onComponentNameCollision = this.options.bundle.strategyOpts['openapi-3-0']?.onComponentNameCollision ?? this.options.bundle.onComponentNameCollision;
92223
- if (componentName !== preferredName && onComponentNameCollision !== 'off') {
92224
- const message = `Component "${preferredName}" in components/${field} is referenced with the same name but different content. Renamed to "${componentName}".`;
92225
- if (onComponentNameCollision === 'error') {
92226
- throw new _errors_BundleError_mjs__WEBPACK_IMPORTED_MODULE_25__["default"](message);
92227
- }
92228
- const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_4__["default"](message);
92229
- annotation.classes.push('warning');
92230
- annotation.code = 'bundle-component-name-collision';
92231
- // append (never prepend) so the result element stays ahead of annotations
92232
- this.entryParseResult.content.push(annotation);
92233
- }
94144
+ const internalPointer = `#/components/${field}/${(0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_12__.escape)(componentName)}`;
94145
+ this.reportNameCollision(preferredName, componentName, field);
92234
94146
 
92235
94147
  // reserve the assignment and component name before recursing so cyclic
92236
94148
  // references terminate
@@ -92239,21 +94151,20 @@ class OpenAPI3_0BundleVisitor {
92239
94151
  this.reservedNames.get(field).add(componentName);
92240
94152
 
92241
94153
  // own a copy of the fragment and bundle its own external references
92242
- const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
92243
- const visitor = new OpenAPI3_0BundleVisitor({
94154
+ const hoistedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(referencedElement);
94155
+ const visitor = new OpenAPI3_1BundleVisitor({
92244
94156
  reference,
92245
94157
  options: this.options,
92246
94158
  assignments: this.assignments,
92247
94159
  reservedNames: this.reservedNames,
92248
- refractCache: this.refractCache,
92249
- inlineStack: this.inlineStack
94160
+ refractCache: this.refractCache
92250
94161
  });
92251
- const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(hoistedElement, visitor, {
94162
+ const bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_10__.traverseAsync)(hoistedElement, visitor, {
92252
94163
  mutable: true
92253
94164
  });
92254
94165
 
92255
94166
  // annotate the hoisted fragment with info about its origin
92256
- if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isElement)(bundledElement)) {
94167
+ if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isElement)(bundledElement)) {
92257
94168
  bundledElement.meta.set('ref-origin', reference.uri);
92258
94169
  }
92259
94170
 
@@ -92270,99 +94181,265 @@ class OpenAPI3_0BundleVisitor {
92270
94181
  }
92271
94182
 
92272
94183
  /**
92273
- * Path Item Object is not a Components Object field in OpenAPI 3.0
92274
- * (unlike 3.1 which has `components.pathItems`). An external Path Item
92275
- * reference therefore cannot be hoisted; it is inlined in place instead,
92276
- * after bundling its own external references.
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.
92277
94190
  */
92278
94191
  async PathItemElement(path) {
92279
94192
  const pathItemElement = path.node;
92280
94193
 
92281
94194
  // ignore Path Item Objects without a $ref field
92282
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(pathItemElement.$ref)) {
94195
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(pathItemElement.$ref)) {
92283
94196
  return;
92284
94197
  }
92285
- const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(pathItemElement.$ref);
94198
+ const $ref = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(pathItemElement.$ref);
92286
94199
  const retrievalURI = this.toBaseURI($ref);
92287
94200
  const isInternalReference = this.entryURI === retrievalURI;
92288
94201
  const isExternalReference = !isInternalReference;
92289
94202
  if (isInternalReference) {
92290
- // normalize self-file references to a bare fragment so the bundled
94203
+ // normalize self-references to a bare fragment so the bundled
92291
94204
  // document stays transferable; bare fragments are left untouched
92292
- pathItemElement.set('$ref', this.normalizeSelfFileRef($ref));
94205
+ pathItemElement.set('$ref', this.normalizeSelfReference($ref));
94206
+ path.skip();
92293
94207
  return;
92294
94208
  }
92295
94209
 
92296
94210
  // honor the resolve.external switch
92297
94211
  if (!this.options.resolve.external && isExternalReference) {
94212
+ path.skip();
92298
94213
  return;
92299
94214
  }
92300
- const $refBaseURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(retrievalURI, $ref);
92301
- const jsonPointer = _speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.URIFragmentIdentifier.fromURIReference($refBaseURI);
92302
- const canonicalKey = `${retrievalURI}#${jsonPointer}`;
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}`;
92303
94219
 
92304
- // a circular external Path Item reference cannot be inlined without
92305
- // recursing forever; leave the $ref in place to break the cycle
92306
- if (this.inlineStack.has(canonicalKey)) {
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();
92307
94226
  return;
92308
94227
  }
92309
94228
  try {
92310
94229
  // detect maximum depth of bundling
92311
94230
  if (this.reference.depth >= this.options.bundle.maxDepth) {
92312
- throw new _errors_MaximumBundleDepthError_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](`Maximum bundle depth of "${this.options.bundle.maxDepth}" has been exceeded in file "${this.reference.uri}"`, {
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}"`, {
92313
94232
  maxDepth: this.options.bundle.maxDepth,
92314
94233
  uri: this.reference.uri
92315
94234
  });
92316
94235
  }
92317
94236
  const reference = await this.toReference($ref);
92318
- let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_10__.evaluate)(reference.value.result, jsonPointer);
94237
+ let referencedElement = (0,_speclynx_apidom_json_pointer__WEBPACK_IMPORTED_MODULE_11__.evaluate)(reference.value.result, jsonPointer);
92319
94238
 
92320
94239
  // apply Path Item semantics to the referenced fragment
92321
- if (!(0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_14__.isPathItemElement)(referencedElement)) {
94240
+ if (!(0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_16__.isPathItemElement)(referencedElement)) {
92322
94241
  const cached = this.getRefracted(referencedElement, 'pathItem');
92323
94242
  if (cached !== undefined) {
92324
94243
  referencedElement = cached;
92325
94244
  } else {
92326
94245
  const sourceElement = referencedElement;
92327
- referencedElement = (0,_speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_13__.refractPathItem)(referencedElement);
94246
+ referencedElement = (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_14__.refractPathItem)(referencedElement);
92328
94247
  this.setRefracted(sourceElement, 'pathItem', referencedElement);
92329
94248
  }
92330
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);
92331
94254
 
92332
- // own a copy and bundle the external references it contains
92333
- const inlinedElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneDeep)(referencedElement);
92334
- this.inlineStack.add(canonicalKey);
92335
- const visitor = new OpenAPI3_0BundleVisitor({
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({
92336
94264
  reference,
92337
94265
  options: this.options,
92338
94266
  assignments: this.assignments,
92339
94267
  reservedNames: this.reservedNames,
92340
- refractCache: this.refractCache,
92341
- inlineStack: this.inlineStack
94268
+ refractCache: this.refractCache
92342
94269
  });
92343
- let bundledElement;
92344
- try {
92345
- bundledElement = await (0,_speclynx_apidom_traverse__WEBPACK_IMPORTED_MODULE_9__.traverseAsync)(inlinedElement, visitor, {
92346
- mutable: true
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
92347
94343
  });
92348
- } finally {
92349
- this.inlineStack.delete(canonicalKey);
92350
94344
  }
92351
94345
 
92352
- // merge sibling fields from the referencing Path Item over the referenced
92353
- // one. The referencing `$ref` is being resolved away and is skipped; the
92354
- // referenced element keeps its own `$ref` if one survived (i.e. it was
92355
- // left in place to break a circular external Path Item chain).
92356
- pathItemElement.forEach((_value, keyElement, item) => {
92357
- const key = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(keyElement);
92358
- if (key === '$ref') return;
92359
- bundledElement.remove(key);
92360
- bundledElement.content.push(item);
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
92361
94426
  });
92362
- bundledElement.meta.set('ref-origin', reference.uri);
92363
- path.replaceWith(bundledElement);
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();
92364
94440
  } catch (error) {
92365
- this.handleError(`Error while bundling Path Item Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, pathItemElement, '$ref', $ref, path);
94441
+ this.handleError(`Error while bundling Schema Object. Cannot resolve $ref "${$ref}": ${error.message}`, error, referencingElement, '$ref', $ref, path);
94442
+ path.skip();
92366
94443
  }
92367
94444
  }
92368
94445
 
@@ -92375,18 +94452,18 @@ class OpenAPI3_0BundleVisitor {
92375
94452
  const exampleElement = path.node;
92376
94453
 
92377
94454
  // ignore Example Objects without an externalValue field
92378
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
94455
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(exampleElement.externalValue)) {
92379
94456
  return;
92380
94457
  }
92381
94458
 
92382
94459
  // value and externalValue fields are mutually exclusive
92383
- if (exampleElement.hasKey('value') && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(exampleElement.externalValue)) {
92384
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('ExampleElement value and externalValue fields are mutually exclusive', {
92385
- value: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.value),
92386
- externalValue: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue)
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)
92387
94464
  });
92388
94465
  }
92389
- const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(exampleElement.externalValue);
94466
+ const externalValue = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(exampleElement.externalValue);
92390
94467
  const retrievalURI = this.toBaseURI(externalValue);
92391
94468
  const isInternalReference = this.entryURI === retrievalURI;
92392
94469
  const isExternalReference = !isInternalReference;
@@ -92397,9 +94474,9 @@ class OpenAPI3_0BundleVisitor {
92397
94474
  }
92398
94475
  try {
92399
94476
  const reference = await this.toReference(externalValue);
92400
- const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(reference.value.result);
94477
+ const valueElement = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(reference.value.result);
92401
94478
  valueElement.meta.set('ref-origin', reference.uri);
92402
- const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.cloneShallow)(exampleElement);
94479
+ const exampleElementCopy = (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_3__.cloneShallow)(exampleElement);
92403
94480
  exampleElementCopy.value = valueElement;
92404
94481
  exampleElementCopy.remove('externalValue');
92405
94482
  path.replaceWith(exampleElementCopy);
@@ -92410,7 +94487,7 @@ class OpenAPI3_0BundleVisitor {
92410
94487
 
92411
94488
  /**
92412
94489
  * Link Object `operationRef` points at an Operation Object, which has no
92413
- * Components Object field in OpenAPI 3.0 and therefore cannot be hoisted or
94490
+ * Components Object field in OpenAPI 3.1 and therefore cannot be hoisted or
92414
94491
  * inlined. To keep the link resolvable from the bundled document, an external
92415
94492
  * `operationRef` is rewritten to its absolute URI. Internal `operationRef`
92416
94493
  * values and `operationId` links are left untouched.
@@ -92419,24 +94496,24 @@ class OpenAPI3_0BundleVisitor {
92419
94496
  const linkElement = path.node;
92420
94497
 
92421
94498
  // operationRef and operationId fields are mutually exclusive
92422
- if ((0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef) && (0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationId)) {
92423
- throw new _speclynx_apidom_error__WEBPACK_IMPORTED_MODULE_8__["default"]('LinkElement operationRef and operationId fields are mutually exclusive', {
92424
- operationRef: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef),
92425
- operationId: (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationId)
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)
92426
94503
  });
92427
94504
  }
92428
94505
 
92429
94506
  // only external operationRef links need adjusting
92430
- if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__.isStringElement)(linkElement.operationRef)) {
94507
+ if (!(0,_speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__.isStringElement)(linkElement.operationRef)) {
92431
94508
  return;
92432
94509
  }
92433
- const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(linkElement.operationRef);
94510
+ const operationRef = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_7__["default"])(linkElement.operationRef);
92434
94511
  const retrievalURI = this.toBaseURI(operationRef);
92435
94512
  const isInternalReference = this.entryURI === retrievalURI;
92436
94513
  if (isInternalReference) {
92437
- // normalize self-file operationRef to a bare fragment so the bundled
94514
+ // normalize a self-reference operationRef to a bare fragment so the bundled
92438
94515
  // document stays transferable; bare fragments are left untouched
92439
- linkElement.set('operationRef', this.normalizeSelfFileRef(operationRef));
94516
+ linkElement.set('operationRef', this.normalizeSelfReference(operationRef));
92440
94517
  return;
92441
94518
  }
92442
94519
 
@@ -92447,56 +94524,13 @@ class OpenAPI3_0BundleVisitor {
92447
94524
 
92448
94525
  // rewrite to an absolute URI so the link keeps resolving once the document
92449
94526
  // is treated as self-contained
92450
- const absoluteURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_29__.resolve(this.reference.uri, operationRef);
94527
+ const absoluteURI = _util_url_mjs__WEBPACK_IMPORTED_MODULE_32__.resolve(this.reference.uri, operationRef);
92451
94528
  if (absoluteURI !== operationRef) {
92452
94529
  linkElement.set('operationRef', absoluteURI);
92453
94530
  }
92454
94531
  }
92455
94532
  }
92456
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_0BundleVisitor);
92457
-
92458
- /***/ },
92459
-
92460
- /***/ 58091
92461
- (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
92462
-
92463
- "use strict";
92464
- __webpack_require__.r(__webpack_exports__);
92465
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
92466
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
92467
- /* harmony export */ });
92468
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7822);
92469
- /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76332);
92470
- /* harmony import */ var _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73723);
92471
-
92472
-
92473
- /**
92474
- * @public
92475
- */
92476
- /**
92477
- * @public
92478
- */
92479
- class OpenAPI3_1BundleStrategy extends _BundleStrategy_mjs__WEBPACK_IMPORTED_MODULE_2__["default"] {
92480
- constructor(options) {
92481
- super({
92482
- ...(options ?? {}),
92483
- name: 'openapi-3-1'
92484
- });
92485
- }
92486
- canBundle(file) {
92487
- // assert by media type
92488
- if (file.mediaType !== 'text/plain') {
92489
- return _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_0__["default"].includes(file.mediaType);
92490
- }
92491
-
92492
- // assert by inspecting ApiDOM
92493
- return (0,_speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_1__.isOpenApi3_1Element)(file.parseResult?.result);
92494
- }
92495
- async bundle(file) {
92496
- return file.parseResult;
92497
- }
92498
- }
92499
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleStrategy);
94533
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OpenAPI3_1BundleVisitor);
92500
94534
 
92501
94535
  /***/ },
92502
94536
 
@@ -92552,48 +94586,48 @@ const uniqueName = (candidate, isTaken) => {
92552
94586
  "use strict";
92553
94587
  __webpack_require__.r(__webpack_exports__);
92554
94588
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
92555
- /* harmony export */ BundleError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.BundleError),
92556
- /* harmony export */ BundleStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.BundleStrategy),
92557
- /* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.DereferenceAncestorLineage),
92558
- /* harmony export */ DereferenceError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.DereferenceError),
92559
- /* harmony export */ DereferenceStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.DereferenceStrategy),
92560
- /* harmony export */ EvaluationElementIdError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.EvaluationElementIdError),
92561
- /* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.EvaluationJsonSchema$anchorError),
92562
- /* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.EvaluationJsonSchemaUriError),
92563
- /* harmony export */ File: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.File),
92564
- /* harmony export */ HTTPResolver: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.HTTPResolver),
92565
- /* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.InvalidJsonSchema$anchorError),
92566
- /* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.JsonSchema$anchorError),
92567
- /* harmony export */ JsonSchemaURIError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.JsonSchemaURIError),
92568
- /* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.MaximumBundleDepthError),
92569
- /* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.MaximumDereferenceDepthError),
92570
- /* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.MaximumResolveDepthError),
92571
- /* harmony export */ ParseError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ParseError),
92572
- /* harmony export */ Parser: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.Parser),
92573
- /* harmony export */ ParserError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ParserError),
92574
- /* harmony export */ PluginError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.PluginError),
92575
- /* harmony export */ Reference: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.Reference),
92576
- /* harmony export */ ReferenceSet: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ReferenceSet),
92577
- /* harmony export */ ResolveError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ResolveError),
92578
- /* harmony export */ ResolveStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ResolveStrategy),
92579
- /* harmony export */ Resolver: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.Resolver),
92580
- /* harmony export */ ResolverError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.ResolverError),
92581
- /* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnmatchedBundleStrategyError),
92582
- /* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnmatchedDereferenceStrategyError),
92583
- /* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnmatchedParserError),
92584
- /* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnmatchedResolveStrategyError),
92585
- /* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnmatchedResolverError),
92586
- /* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.UnresolvableReferenceError),
92587
- /* harmony export */ bundle: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.bundle),
92588
- /* harmony export */ dereference: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.dereference),
92589
- /* harmony export */ dereferenceApiDOM: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.dereferenceApiDOM),
92590
- /* harmony export */ mergeOptions: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.mergeOptions),
92591
- /* harmony export */ options: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.options),
92592
- /* harmony export */ parse: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.parse),
92593
- /* harmony export */ readFile: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.readFile),
92594
- /* harmony export */ resolve: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.resolve),
92595
- /* harmony export */ resolveApiDOM: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.resolveApiDOM),
92596
- /* harmony export */ url: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_35__.url)
94589
+ /* harmony export */ BundleError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.BundleError),
94590
+ /* harmony export */ BundleStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.BundleStrategy),
94591
+ /* harmony export */ DereferenceAncestorLineage: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.DereferenceAncestorLineage),
94592
+ /* harmony export */ DereferenceError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.DereferenceError),
94593
+ /* harmony export */ DereferenceStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.DereferenceStrategy),
94594
+ /* harmony export */ EvaluationElementIdError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.EvaluationElementIdError),
94595
+ /* harmony export */ EvaluationJsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchema$anchorError),
94596
+ /* harmony export */ EvaluationJsonSchemaUriError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.EvaluationJsonSchemaUriError),
94597
+ /* harmony export */ File: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.File),
94598
+ /* harmony export */ HTTPResolver: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.HTTPResolver),
94599
+ /* harmony export */ InvalidJsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.InvalidJsonSchema$anchorError),
94600
+ /* harmony export */ JsonSchema$anchorError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.JsonSchema$anchorError),
94601
+ /* harmony export */ JsonSchemaURIError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.JsonSchemaURIError),
94602
+ /* harmony export */ MaximumBundleDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.MaximumBundleDepthError),
94603
+ /* harmony export */ MaximumDereferenceDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.MaximumDereferenceDepthError),
94604
+ /* harmony export */ MaximumResolveDepthError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.MaximumResolveDepthError),
94605
+ /* harmony export */ ParseError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ParseError),
94606
+ /* harmony export */ Parser: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.Parser),
94607
+ /* harmony export */ ParserError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ParserError),
94608
+ /* harmony export */ PluginError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.PluginError),
94609
+ /* harmony export */ Reference: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.Reference),
94610
+ /* harmony export */ ReferenceSet: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ReferenceSet),
94611
+ /* harmony export */ ResolveError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ResolveError),
94612
+ /* harmony export */ ResolveStrategy: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ResolveStrategy),
94613
+ /* harmony export */ Resolver: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.Resolver),
94614
+ /* harmony export */ ResolverError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.ResolverError),
94615
+ /* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnmatchedBundleStrategyError),
94616
+ /* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnmatchedDereferenceStrategyError),
94617
+ /* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnmatchedParserError),
94618
+ /* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolveStrategyError),
94619
+ /* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnmatchedResolverError),
94620
+ /* harmony export */ UnresolvableReferenceError: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.UnresolvableReferenceError),
94621
+ /* harmony export */ bundle: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.bundle),
94622
+ /* harmony export */ dereference: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.dereference),
94623
+ /* harmony export */ dereferenceApiDOM: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.dereferenceApiDOM),
94624
+ /* harmony export */ mergeOptions: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.mergeOptions),
94625
+ /* harmony export */ options: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.options),
94626
+ /* harmony export */ parse: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.parse),
94627
+ /* harmony export */ readFile: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.readFile),
94628
+ /* harmony export */ resolve: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.resolve),
94629
+ /* harmony export */ resolveApiDOM: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.resolveApiDOM),
94630
+ /* harmony export */ url: () => (/* reexport safe */ _index_mjs__WEBPACK_IMPORTED_MODULE_36__.url)
92597
94631
  /* harmony export */ });
92598
94632
  /* harmony import */ var _resolve_resolvers_file_index_node_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79948);
92599
94633
  /* harmony import */ var _resolve_resolvers_http_axios_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(352);
@@ -92627,10 +94661,12 @@ __webpack_require__.r(__webpack_exports__);
92627
94661
  /* harmony import */ var _dereference_strategies_asyncapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(35070);
92628
94662
  /* harmony import */ var _dereference_strategies_arazzo_1_index_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(880);
92629
94663
  /* harmony import */ var _dereference_strategies_overlay_1_index_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(67689);
92630
- /* harmony import */ var _bundle_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(5138);
92631
- /* harmony import */ var _bundle_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(58091);
92632
- /* harmony import */ var _index_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(30306);
92633
- /* harmony import */ var _index_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(37013);
94664
+ /* harmony import */ var _bundle_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(95416);
94665
+ /* harmony import */ var _bundle_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(5138);
94666
+ /* harmony import */ var _bundle_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(58091);
94667
+ /* harmony import */ var _index_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(30306);
94668
+ /* harmony import */ var _index_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(37013);
94669
+
92634
94670
 
92635
94671
 
92636
94672
 
@@ -92666,7 +94702,7 @@ __webpack_require__.r(__webpack_exports__);
92666
94702
 
92667
94703
 
92668
94704
 
92669
- _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].parse.parsers = [new _parse_parsers_openapi_json_2_index_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]({
94705
+ _index_mjs__WEBPACK_IMPORTED_MODULE_35__["default"].parse.parsers = [new _parse_parsers_openapi_json_2_index_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]({
92670
94706
  allowEmpty: true,
92671
94707
  sourceMap: false
92672
94708
  }), new _parse_parsers_openapi_yaml_2_index_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]({
@@ -92714,14 +94750,14 @@ _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].parse.parsers = [new _parse_
92714
94750
  }), new _parse_parsers_binary_index_node_mjs__WEBPACK_IMPORTED_MODULE_24__["default"]({
92715
94751
  allowEmpty: true
92716
94752
  })];
92717
- _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].resolve.resolvers = [new _resolve_resolvers_file_index_node_mjs__WEBPACK_IMPORTED_MODULE_0__["default"](), new _resolve_resolvers_http_axios_index_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]({
94753
+ _index_mjs__WEBPACK_IMPORTED_MODULE_35__["default"].resolve.resolvers = [new _resolve_resolvers_file_index_node_mjs__WEBPACK_IMPORTED_MODULE_0__["default"](), new _resolve_resolvers_http_axios_index_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]({
92718
94754
  timeout: 5000,
92719
94755
  redirects: 5,
92720
94756
  withCredentials: false
92721
94757
  })];
92722
- _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].resolve.strategies = [new _resolve_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_2__["default"](), new _resolve_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_3__["default"](), new _resolve_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](), new _resolve_strategies_asyncapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_5__["default"](), new _resolve_strategies_arazzo_1_index_mjs__WEBPACK_IMPORTED_MODULE_6__["default"](), new _resolve_strategies_overlay_1_index_mjs__WEBPACK_IMPORTED_MODULE_7__["default"](), new _resolve_strategies_apidom_index_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]()];
92723
- _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].dereference.strategies = [new _dereference_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_26__["default"](), new _dereference_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](), new _dereference_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](), new _dereference_strategies_asyncapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_29__["default"](), new _dereference_strategies_arazzo_1_index_mjs__WEBPACK_IMPORTED_MODULE_30__["default"](), new _dereference_strategies_overlay_1_index_mjs__WEBPACK_IMPORTED_MODULE_31__["default"](), new _dereference_strategies_apidom_index_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]()];
92724
- _index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"].bundle.strategies = [new _bundle_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_32__["default"](), new _bundle_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_33__["default"]()];
94758
+ _index_mjs__WEBPACK_IMPORTED_MODULE_35__["default"].resolve.strategies = [new _resolve_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_2__["default"](), new _resolve_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_3__["default"](), new _resolve_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](), new _resolve_strategies_asyncapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_5__["default"](), new _resolve_strategies_arazzo_1_index_mjs__WEBPACK_IMPORTED_MODULE_6__["default"](), new _resolve_strategies_overlay_1_index_mjs__WEBPACK_IMPORTED_MODULE_7__["default"](), new _resolve_strategies_apidom_index_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]()];
94759
+ _index_mjs__WEBPACK_IMPORTED_MODULE_35__["default"].dereference.strategies = [new _dereference_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_26__["default"](), new _dereference_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_27__["default"](), new _dereference_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_28__["default"](), new _dereference_strategies_asyncapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_29__["default"](), new _dereference_strategies_arazzo_1_index_mjs__WEBPACK_IMPORTED_MODULE_30__["default"](), new _dereference_strategies_overlay_1_index_mjs__WEBPACK_IMPORTED_MODULE_31__["default"](), new _dereference_strategies_apidom_index_mjs__WEBPACK_IMPORTED_MODULE_25__["default"]()];
94760
+ _index_mjs__WEBPACK_IMPORTED_MODULE_35__["default"].bundle.strategies = [new _bundle_strategies_openapi_2_index_mjs__WEBPACK_IMPORTED_MODULE_32__["default"](), new _bundle_strategies_openapi_3_0_index_mjs__WEBPACK_IMPORTED_MODULE_33__["default"](), new _bundle_strategies_openapi_3_1_index_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]()];
92725
94761
 
92726
94762
 
92727
94763
  /***/ },
@@ -101463,6 +103499,7 @@ __webpack_require__.r(__webpack_exports__);
101463
103499
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
101464
103500
  /* harmony export */ cwd: () => (/* binding */ cwd),
101465
103501
  /* harmony export */ fromFileSystemPath: () => (/* binding */ fromFileSystemPath),
103502
+ /* harmony export */ getBasename: () => (/* binding */ getBasename),
101466
103503
  /* harmony export */ getExtension: () => (/* binding */ getExtension),
101467
103504
  /* harmony export */ getHash: () => (/* binding */ getHash),
101468
103505
  /* harmony export */ getProtocol: () => (/* binding */ getProtocol),
@@ -101521,19 +103558,40 @@ const getProtocol = url => {
101521
103558
  */
101522
103559
  const hasProtocol = (0,ramda__WEBPACK_IMPORTED_MODULE_3__["default"])(getProtocol, ramda_adjunct__WEBPACK_IMPORTED_MODULE_6__["default"]);
101523
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
+
101524
103568
  /**
101525
103569
  * Returns the lower-cased file extension of the given URL,
101526
103570
  * or an empty string if it has no extension.
101527
103571
  * @public
101528
103572
  */
101529
103573
  const getExtension = url => {
101530
- const lastDotPosition = url.lastIndexOf('.');
103574
+ const fileName = getFilename(url);
103575
+ const lastDotPosition = fileName.lastIndexOf('.');
101531
103576
  if (lastDotPosition >= 0) {
101532
- return url.substring(lastDotPosition).toLowerCase();
103577
+ return fileName.substring(lastDotPosition).toLowerCase();
101533
103578
  }
101534
103579
  return '';
101535
103580
  };
101536
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
+
101537
103595
  /**
101538
103596
  * Determines whether the given path is a filesystem path.
101539
103597
  * This includes "file://" URLs.