@jentic/arazzo-parser 1.0.0-alpha.6 → 1.0.0-alpha.8

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.
@@ -39,28 +39,25 @@ __webpack_require__.r(__webpack_exports__);
39
39
  /* harmony export */ defaultOptions: () => (/* binding */ defaultOptions),
40
40
  /* harmony export */ parse: () => (/* binding */ parse)
41
41
  /* harmony export */ });
42
- /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7456);
43
- /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84149);
44
- /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(212);
45
- /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8841);
46
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_arazzo_json_1__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30678);
47
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(90862);
48
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76680);
49
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(41643);
50
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48834);
51
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(52393);
52
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(61275);
53
- /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(28208);
54
- /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(41939);
55
- /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(31751);
56
- /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(47282);
57
- /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(75728);
58
- /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(67341);
59
- /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(34606);
60
- /* harmony import */ var _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(10425);
61
- /* harmony import */ var _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(30513);
62
-
63
-
42
+ /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(212);
43
+ /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8841);
44
+ /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(88164);
45
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_arazzo_json_1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30678);
46
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(90862);
47
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76680);
48
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41643);
49
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48834);
50
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52393);
51
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61275);
52
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28208);
53
+ /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(41939);
54
+ /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(31751);
55
+ /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(47282);
56
+ /* harmony import */ var _speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(75728);
57
+ /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(67341);
58
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(34606);
59
+ /* harmony import */ var _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10425);
60
+ /* harmony import */ var _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(30513);
64
61
 
65
62
 
66
63
 
@@ -90,30 +87,30 @@ __webpack_require__.r(__webpack_exports__);
90
87
  */
91
88
  const defaultOptions = {
92
89
  parse: {
93
- parsers: [new _speclynx_apidom_reference_parse_parsers_arazzo_json_1__WEBPACK_IMPORTED_MODULE_4__["default"]({
90
+ parsers: [new _speclynx_apidom_reference_parse_parsers_arazzo_json_1__WEBPACK_IMPORTED_MODULE_3__["default"]({
94
91
  allowEmpty: false,
95
92
  fileExtensions: ['.json'],
96
- parseFn: _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__.parse
97
- }), new _speclynx_apidom_reference_parse_parsers_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_5__["default"]({
93
+ parseFn: _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__.parse
94
+ }), new _speclynx_apidom_reference_parse_parsers_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_4__["default"]({
98
95
  allowEmpty: false,
99
96
  fileExtensions: ['.yaml', '.yml'],
100
- parseFn: _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__.parse
101
- }), new _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_6__["default"]({
97
+ parseFn: _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__.parse
98
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_5__["default"]({
102
99
  allowEmpty: false,
103
100
  fileExtensions: ['.json']
104
- }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_7__["default"]({
101
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_6__["default"]({
105
102
  allowEmpty: false,
106
103
  fileExtensions: ['.yaml', '.yml']
107
- }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_8__["default"]({
104
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_7__["default"]({
108
105
  allowEmpty: false,
109
106
  fileExtensions: ['.json']
110
- }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_9__["default"]({
107
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_8__["default"]({
111
108
  allowEmpty: false,
112
109
  fileExtensions: ['.yaml', '.yml']
113
- }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_10__["default"]({
110
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_9__["default"]({
114
111
  allowEmpty: false,
115
112
  fileExtensions: ['.json']
116
- }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_11__["default"]({
113
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_10__["default"]({
117
114
  allowEmpty: false,
118
115
  fileExtensions: ['.yaml', '.yml']
119
116
  })],
@@ -124,9 +121,9 @@ const defaultOptions = {
124
121
  }
125
122
  },
126
123
  resolve: {
127
- resolvers: [new _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_19__["default"](), new _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_12__["default"]({
124
+ resolvers: [new _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_18__["default"](), new _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_11__["default"]({
128
125
  fileAllowList: ['*.json', '*.yaml', '*.yml']
129
- }), new _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_13__["default"]({
126
+ }), new _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_12__["default"]({
130
127
  timeout: 5000,
131
128
  redirects: 5,
132
129
  withCredentials: false
@@ -198,39 +195,39 @@ const defaultOptions = {
198
195
  * @public
199
196
  */
200
197
  async function parse(source, options = {}) {
201
- let mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_3__.merge)(defaultOptions, options);
198
+ let mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(defaultOptions, options);
202
199
  const strict = mergedOptions.parse?.parserOpts?.strict ?? true;
203
200
  let sourceProvenance;
204
- if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_17__["default"])(source)) {
205
- const arazzoDocument = JSON.stringify(source, null, 2);
206
- mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_3__.merge)(mergedOptions, {
201
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_16__["default"])(source)) {
202
+ const document = JSON.stringify(source, null, 2);
203
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
207
204
  resolve: {
208
205
  resolverOpts: {
209
- arazzoDocument
206
+ document
210
207
  }
211
208
  }
212
209
  });
213
210
  source = 'memory://arazzo.json';
214
211
  sourceProvenance = '[object]';
215
- } else if (await (0,_speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_14__.detect)(source, {
212
+ } else if (await (0,_speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_13__.detect)(source, {
216
213
  strict
217
214
  })) {
218
- mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_3__.merge)(mergedOptions, {
215
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
219
216
  resolve: {
220
217
  resolverOpts: {
221
- arazzoDocument: source
218
+ document: source
222
219
  }
223
220
  }
224
221
  });
225
222
  source = 'memory://arazzo.json';
226
223
  sourceProvenance = '[inline JSON]';
227
- } else if (await (0,_speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_16__.detect)(source, {
224
+ } else if (await (0,_speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_15__.detect)(source, {
228
225
  strict
229
226
  })) {
230
- mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_3__.merge)(mergedOptions, {
227
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
231
228
  resolve: {
232
229
  resolverOpts: {
233
- arazzoDocument: source
230
+ document: source
234
231
  }
235
232
  }
236
233
  });
@@ -242,7 +239,7 @@ async function parse(source, options = {}) {
242
239
 
243
240
  // next we assume that source is either file system URI or HTTP(S) URL
244
241
  try {
245
- const parseResult = await (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__.parse)(source, mergedOptions);
242
+ const parseResult = await (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__.parse)(source, mergedOptions);
246
243
 
247
244
  // set retrievalURI metadata for file/URL sources (not for inline content)
248
245
  if (!source.startsWith('memory://')) {
@@ -250,19 +247,277 @@ async function parse(source, options = {}) {
250
247
  }
251
248
 
252
249
  // validate that the parsed document is an Arazzo specification
253
- if (!(0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_15__.isArazzoSpecification1Element)(parseResult.api)) {
254
- const annotation = new _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_1__["default"]('Document is not a valid Arazzo specification. Expected an Arazzo document with "arazzo" version field.', {
255
- classes: ['error']
256
- });
257
- // remove 'api' class so .api returns undefined, but keep parsed result available
258
- if (parseResult.api) {
259
- parseResult.api.classes = parseResult.api.classes.filter(cls => (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_0__["default"])(cls) !== 'api');
250
+ if (!(0,_speclynx_apidom_ns_arazzo_1__WEBPACK_IMPORTED_MODULE_14__.isArazzoSpecification1Element)(parseResult.api)) {
251
+ throw new _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__["default"](`Could not find a parser that can parse "${sourceProvenance}" as an Arazzo specification`);
252
+ }
253
+ return parseResult;
254
+ } catch (error) {
255
+ throw new _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_17__["default"](`Failed to parse Arazzo Document from "${sourceProvenance}"`, {
256
+ cause: error
257
+ });
258
+ }
259
+ }
260
+
261
+ /***/ },
262
+
263
+ /***/ 71228
264
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
265
+
266
+ "use strict";
267
+ __webpack_require__.r(__webpack_exports__);
268
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
269
+ /* harmony export */ defaultOptions: () => (/* binding */ defaultOptions),
270
+ /* harmony export */ parse: () => (/* binding */ parse)
271
+ /* harmony export */ });
272
+ /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(212);
273
+ /* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8841);
274
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(76680);
275
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41643);
276
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48834);
277
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52393);
278
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61275);
279
+ /* harmony import */ var _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(28208);
280
+ /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41939);
281
+ /* harmony import */ var _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31751);
282
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(10343);
283
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(43244);
284
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(50142);
285
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(99474);
286
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_json_2__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(64820);
287
+ /* harmony import */ var _speclynx_apidom_parser_adapter_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(71527);
288
+ /* harmony import */ var ramda_adjunct__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(34606);
289
+ /* harmony import */ var _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10425);
290
+ /* harmony import */ var _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(30513);
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+ /**
311
+ * Options for parsing OpenAPI Documents.
312
+ * @public
313
+ */
314
+
315
+ /**
316
+ * Default reference options for parsing OpenAPI Documents.
317
+ * @public
318
+ */
319
+ const defaultOptions = {
320
+ parse: {
321
+ parsers: [new _speclynx_apidom_reference_parse_parsers_openapi_json_2__WEBPACK_IMPORTED_MODULE_2__["default"]({
322
+ allowEmpty: false,
323
+ fileExtensions: ['.json']
324
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_3__["default"]({
325
+ allowEmpty: false,
326
+ fileExtensions: ['.yaml', '.yml']
327
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_4__["default"]({
328
+ allowEmpty: false,
329
+ fileExtensions: ['.json']
330
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_5__["default"]({
331
+ allowEmpty: false,
332
+ fileExtensions: ['.yaml', '.yml']
333
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_6__["default"]({
334
+ allowEmpty: false,
335
+ fileExtensions: ['.json']
336
+ }), new _speclynx_apidom_reference_parse_parsers_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_7__["default"]({
337
+ allowEmpty: false,
338
+ fileExtensions: ['.yaml', '.yml']
339
+ })],
340
+ parserOpts: {
341
+ sourceMap: false,
342
+ strict: true
343
+ }
344
+ },
345
+ resolve: {
346
+ resolvers: [new _resolve_resolvers_memory_index_ts__WEBPACK_IMPORTED_MODULE_18__["default"](), new _speclynx_apidom_reference_resolve_resolvers_file__WEBPACK_IMPORTED_MODULE_8__["default"]({
347
+ fileAllowList: ['*.json', '*.yaml', '*.yml']
348
+ }), new _speclynx_apidom_reference_resolve_resolvers_http_axios__WEBPACK_IMPORTED_MODULE_9__["default"]({
349
+ timeout: 5000,
350
+ redirects: 5,
351
+ withCredentials: false
352
+ })],
353
+ resolverOpts: {}
354
+ }
355
+ };
356
+
357
+ /**
358
+ * Parses an OpenAPI Document from an object.
359
+ * @param source - The OpenAPI Document as a plain object
360
+ * @param options - Reference options (uses defaultOptions when not provided)
361
+ * @returns A promise that resolves to the parsed OpenAPI Document as ApiDOM data model
362
+ * @throws ParseError - When parsing fails for any reason. The original error is available via the `cause` property.
363
+ * @public
364
+ */
365
+
366
+ /**
367
+ * Parses an OpenAPI Document from a string or URI.
368
+ * @param source - The OpenAPI Document as string content, or a file system path / HTTP(S) URL
369
+ * @param options - Reference options (uses defaultOptions when not provided)
370
+ * @returns A promise that resolves to the parsed OpenAPI Document as ApiDOM data model
371
+ * @throws ParseError - When parsing fails for any reason. The original error is available via the `cause` property.
372
+ * @public
373
+ */
374
+
375
+ /**
376
+ * Parses an OpenAPI Document from a string, object, or URI.
377
+ *
378
+ * The function handles three types of input:
379
+ * 1. Object - converts to JSON string and parses (source maps supported with `strict: false`)
380
+ * 2. String content - uses OpenAPI detection to identify and parse inline JSON or YAML content
381
+ * 3. URI string - if not detected as OpenAPI content, treats as file system path or HTTP(S) URL
382
+ *
383
+ * @param source - The OpenAPI Document as an object, string content, or a file system path / HTTP(S) URL
384
+ * @param options - Reference options (uses defaultOptions when not provided)
385
+ * @returns A promise that resolves to the parsed OpenAPI Document as ApiDOM data model
386
+ * @throws ParseError - When parsing fails for any reason. The original error is available via the `cause` property.
387
+ *
388
+ * @example
389
+ * Parse from object
390
+ * ```typescript
391
+ * const result = await parseOpenAPI({ openapi: '3.1.0', info: {...} });
392
+ * ```
393
+ *
394
+ * @example
395
+ * Parse inline JSON
396
+ * ```typescript
397
+ * const result = await parseOpenAPI('{"openapi": "3.1.0", "info": {...}}');
398
+ * ```
399
+ *
400
+ * @example
401
+ * Parse from file
402
+ * ```typescript
403
+ * const result = await parseOpenAPI('/path/to/openapi.json');
404
+ * ```
405
+ *
406
+ * @example
407
+ * Parse from URL
408
+ * ```typescript
409
+ * const result = await parseOpenAPI('https://example.com/openapi.yaml');
410
+ * ```
411
+ *
412
+ * @example
413
+ * Parse with custom options
414
+ * ```typescript
415
+ * const result = await parseOpenAPI('/path/to/openapi.json', customOptions);
416
+ * ```
417
+ * @public
418
+ */
419
+ async function parse(source, options = {}) {
420
+ let mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(defaultOptions, options);
421
+ const strict = mergedOptions.parse?.parserOpts?.strict ?? true;
422
+ let sourceProvenance;
423
+ if ((0,ramda_adjunct__WEBPACK_IMPORTED_MODULE_16__["default"])(source)) {
424
+ const document = JSON.stringify(source, null, 2);
425
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
426
+ resolve: {
427
+ resolverOpts: {
428
+ document
429
+ }
260
430
  }
261
- parseResult.push(annotation);
431
+ });
432
+ source = 'memory://openapi.json';
433
+ sourceProvenance = '[object]';
434
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_json_2__WEBPACK_IMPORTED_MODULE_14__.detect)(source, {
435
+ strict
436
+ })) {
437
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
438
+ resolve: {
439
+ resolverOpts: {
440
+ document: source
441
+ }
442
+ }
443
+ });
444
+ source = 'memory://openapi.json';
445
+ sourceProvenance = '[inline JSON]';
446
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_yaml_2__WEBPACK_IMPORTED_MODULE_15__.detect)(source, {
447
+ strict
448
+ })) {
449
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
450
+ resolve: {
451
+ resolverOpts: {
452
+ document: source
453
+ }
454
+ }
455
+ });
456
+ source = 'memory://openapi.yaml';
457
+ sourceProvenance = '[inline YAML]';
458
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_json_3_0__WEBPACK_IMPORTED_MODULE_12__.detect)(source, {
459
+ strict
460
+ })) {
461
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
462
+ resolve: {
463
+ resolverOpts: {
464
+ document: source
465
+ }
466
+ }
467
+ });
468
+ source = 'memory://openapi.json';
469
+ sourceProvenance = '[inline JSON]';
470
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_yaml_3_0__WEBPACK_IMPORTED_MODULE_13__.detect)(source, {
471
+ strict
472
+ })) {
473
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
474
+ resolve: {
475
+ resolverOpts: {
476
+ document: source
477
+ }
478
+ }
479
+ });
480
+ source = 'memory://openapi.yaml';
481
+ sourceProvenance = '[inline YAML]';
482
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_json_3_1__WEBPACK_IMPORTED_MODULE_10__.detect)(source, {
483
+ strict
484
+ })) {
485
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
486
+ resolve: {
487
+ resolverOpts: {
488
+ document: source
489
+ }
490
+ }
491
+ });
492
+ source = 'memory://openapi.json';
493
+ sourceProvenance = '[inline JSON]';
494
+ } else if (await (0,_speclynx_apidom_parser_adapter_openapi_yaml_3_1__WEBPACK_IMPORTED_MODULE_11__.detect)(source, {
495
+ strict
496
+ })) {
497
+ mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
498
+ resolve: {
499
+ resolverOpts: {
500
+ document: source
501
+ }
502
+ }
503
+ });
504
+ source = 'memory://openapi.yaml';
505
+ sourceProvenance = '[inline YAML]';
506
+ } else {
507
+ sourceProvenance = source;
508
+ }
509
+
510
+ // next we assume that source is either file system URI or HTTP(S) URL
511
+ try {
512
+ const parseResult = await (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_0__.parse)(source, mergedOptions);
513
+
514
+ // set retrievalURI metadata for file/URL sources (not for inline content)
515
+ if (!source.startsWith('memory://')) {
516
+ parseResult.meta.set('retrievalURI', source);
262
517
  }
263
518
  return parseResult;
264
519
  } catch (error) {
265
- throw new _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_18__["default"](`Failed to parse Arazzo Document from "${sourceProvenance}"`, {
520
+ throw new _errors_ParseError_ts__WEBPACK_IMPORTED_MODULE_17__["default"](`Failed to parse OpenAPI Document from "${sourceProvenance}"`, {
266
521
  cause: error
267
522
  });
268
523
  }
@@ -291,12 +546,12 @@ class MemoryResolver extends _speclynx_apidom_reference_configuration_empty__WEB
291
546
  });
292
547
  }
293
548
  canRead(file) {
294
- return file.uri.startsWith('memory://') && typeof this.arazzoDocument === 'string';
549
+ return file.uri.startsWith('memory://') && this.document !== undefined;
295
550
  }
296
551
  async read(file) {
297
552
  try {
298
553
  const encoder = new TextEncoder();
299
- return encoder.encode(this.arazzoDocument);
554
+ return encoder.encode(this.document);
300
555
  } catch (error) {
301
556
  throw new _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__["default"](`Error opening file "${file.uri}"`, {
302
557
  cause: error
@@ -42316,7 +42571,7 @@ const bundle = async (uri, options) => {
42316
42571
 
42317
42572
  // we couldn't find any bundle strategy for this File
42318
42573
  if ((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(bundleStrategies)) {
42319
- throw new _errors_UnmatchedBundleStrategyError_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](file.uri);
42574
+ throw new _errors_UnmatchedBundleStrategyError_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](`Could not find a bundle strategy that can bundle the file "${file.uri}"`);
42320
42575
  }
42321
42576
  try {
42322
42577
  const {
@@ -42414,7 +42669,7 @@ const dereferenceApiDOM = async (element, options) => {
42414
42669
 
42415
42670
  // we couldn't find any dereference strategy for this File
42416
42671
  if ((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(dereferenceStrategies)) {
42417
- throw new _errors_UnmatchedDereferenceStrategyError_mjs__WEBPACK_IMPORTED_MODULE_7__["default"](file.uri);
42672
+ throw new _errors_UnmatchedDereferenceStrategyError_mjs__WEBPACK_IMPORTED_MODULE_7__["default"](`Could not find a dereference strategy that can dereference the file "${file.uri}"`);
42418
42673
  }
42419
42674
  try {
42420
42675
  const {
@@ -42637,7 +42892,7 @@ __webpack_require__.r(__webpack_exports__);
42637
42892
  */
42638
42893
  class InvalidJsonSchema$anchorError extends _JsonSchema$anchorError_mjs__WEBPACK_IMPORTED_MODULE_0__["default"] {
42639
42894
  constructor(anchor) {
42640
- super(`Invalid JSON Schema $anchor "${anchor}".`);
42895
+ super(`Invalid JSON Schema $anchor "${anchor}"`);
42641
42896
  }
42642
42897
  }
42643
42898
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InvalidJsonSchema$anchorError);
@@ -42873,6 +43128,24 @@ class UnmatchedDereferenceStrategyError extends _DereferenceError_mjs__WEBPACK_I
42873
43128
 
42874
43129
  /***/ },
42875
43130
 
43131
+ /***/ 88164
43132
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
43133
+
43134
+ "use strict";
43135
+ __webpack_require__.r(__webpack_exports__);
43136
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
43137
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
43138
+ /* harmony export */ });
43139
+ /* harmony import */ var _ParserError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21982);
43140
+
43141
+ /**
43142
+ * @public
43143
+ */
43144
+ class UnmatchedParserError extends _ParserError_mjs__WEBPACK_IMPORTED_MODULE_0__["default"] {}
43145
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UnmatchedParserError);
43146
+
43147
+ /***/ },
43148
+
42876
43149
  /***/ 64188
42877
43150
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
42878
43151
 
@@ -42943,6 +43216,7 @@ __webpack_require__.r(__webpack_exports__);
42943
43216
  /* harmony export */ ResolverError: () => (/* reexport safe */ _errors_ResolverError_mjs__WEBPACK_IMPORTED_MODULE_34__["default"]),
42944
43217
  /* harmony export */ UnmatchedBundleStrategyError: () => (/* reexport safe */ _errors_UnmatchedBundleStrategyError_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]),
42945
43218
  /* harmony export */ UnmatchedDereferenceStrategyError: () => (/* reexport safe */ _errors_UnmatchedDereferenceStrategyError_mjs__WEBPACK_IMPORTED_MODULE_35__["default"]),
43219
+ /* harmony export */ UnmatchedParserError: () => (/* reexport safe */ _errors_UnmatchedParserError_mjs__WEBPACK_IMPORTED_MODULE_38__["default"]),
42946
43220
  /* harmony export */ UnmatchedResolveStrategyError: () => (/* reexport safe */ _errors_UnmatchedResolveStrategyError_mjs__WEBPACK_IMPORTED_MODULE_36__["default"]),
42947
43221
  /* harmony export */ UnmatchedResolverError: () => (/* reexport safe */ _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_37__["default"]),
42948
43222
  /* harmony export */ bundle: () => (/* binding */ bundle),
@@ -42994,6 +43268,8 @@ __webpack_require__.r(__webpack_exports__);
42994
43268
  /* harmony import */ var _errors_UnmatchedDereferenceStrategyError_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(37348);
42995
43269
  /* harmony import */ var _errors_UnmatchedResolveStrategyError_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(64188);
42996
43270
  /* harmony import */ var _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(32617);
43271
+ /* harmony import */ var _errors_UnmatchedParserError_mjs__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(88164);
43272
+
42997
43273
 
42998
43274
 
42999
43275
 
@@ -43342,7 +43618,7 @@ __webpack_require__.r(__webpack_exports__);
43342
43618
  /* harmony import */ var _File_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2514);
43343
43619
  /* harmony import */ var _util_plugins_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(66821);
43344
43620
  /* harmony import */ var _errors_ParseError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82361);
43345
- /* harmony import */ var _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32617);
43621
+ /* harmony import */ var _errors_UnmatchedParserError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(88164);
43346
43622
  /* harmony import */ var _resolve_util_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(25807);
43347
43623
 
43348
43624
 
@@ -43363,7 +43639,7 @@ const parseFile = async (file, options) => {
43363
43639
 
43364
43640
  // we couldn't find any parser for this File
43365
43641
  if ((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(parsers)) {
43366
- throw new _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_5__["default"](file.uri);
43642
+ throw new _errors_UnmatchedParserError_mjs__WEBPACK_IMPORTED_MODULE_5__["default"](`Could not find a parser that can parse the file "${file.uri}"`);
43367
43643
  }
43368
43644
  try {
43369
43645
  const {
@@ -43373,7 +43649,7 @@ const parseFile = async (file, options) => {
43373
43649
 
43374
43650
  // empty files handling
43375
43651
  if (!plugin.allowEmpty && result.isEmpty) {
43376
- return Promise.reject(new _errors_ParseError_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](`Error while parsing file "${file.uri}". File is empty.`));
43652
+ return Promise.reject(new _errors_ParseError_mjs__WEBPACK_IMPORTED_MODULE_4__["default"](`Error while parsing file "${file.uri}": file is empty`));
43377
43653
  }
43378
43654
  return result;
43379
43655
  } catch (error) {
@@ -44250,9 +44526,9 @@ const resolveApiDOM = async (element, options) => {
44250
44526
  });
44251
44527
  const resolveStrategies = await _util_plugins_mjs__WEBPACK_IMPORTED_MODULE_6__.filter('canResolve', [file, options], options.resolve.strategies);
44252
44528
 
44253
- // we couldn't find any resolver for this File
44529
+ // we couldn't find any resolve strategy for this File
44254
44530
  if ((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(resolveStrategies)) {
44255
- throw new _errors_UnmatchedResolveStrategyError_mjs__WEBPACK_IMPORTED_MODULE_9__["default"](file.uri);
44531
+ throw new _errors_UnmatchedResolveStrategyError_mjs__WEBPACK_IMPORTED_MODULE_9__["default"](`Could not find a resolve strategy that can resolve the file "${file.uri}"`);
44256
44532
  }
44257
44533
  try {
44258
44534
  const {
@@ -44530,7 +44806,7 @@ const readFile = async (file, options) => {
44530
44806
 
44531
44807
  // we couldn't find any resolver for this File
44532
44808
  if ((0,ramda__WEBPACK_IMPORTED_MODULE_0__["default"])(resolvers)) {
44533
- throw new _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_3__["default"](file.uri);
44809
+ throw new _errors_UnmatchedResolverError_mjs__WEBPACK_IMPORTED_MODULE_3__["default"](`Could not find a resolver that can read the file "${file.uri}"`);
44534
44810
  }
44535
44811
  try {
44536
44812
  const {
@@ -77620,10 +77896,14 @@ var __webpack_exports__ = {};
77620
77896
  "use strict";
77621
77897
  __webpack_require__.r(__webpack_exports__);
77622
77898
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
77623
- /* harmony export */ defaultOptions: () => (/* reexport safe */ _parse_arazzo_ts__WEBPACK_IMPORTED_MODULE_0__.defaultOptions),
77624
- /* harmony export */ parseArazzo: () => (/* reexport safe */ _parse_arazzo_ts__WEBPACK_IMPORTED_MODULE_0__.parse)
77899
+ /* harmony export */ defaultArazzoOptions: () => (/* reexport safe */ _parse_arazzo_ts__WEBPACK_IMPORTED_MODULE_0__.defaultOptions),
77900
+ /* harmony export */ defaultOpenAPIOptions: () => (/* reexport safe */ _parse_openapi_ts__WEBPACK_IMPORTED_MODULE_1__.defaultOptions),
77901
+ /* harmony export */ parseArazzo: () => (/* reexport safe */ _parse_arazzo_ts__WEBPACK_IMPORTED_MODULE_0__.parse),
77902
+ /* harmony export */ parseOpenAPI: () => (/* reexport safe */ _parse_openapi_ts__WEBPACK_IMPORTED_MODULE_1__.parse)
77625
77903
  /* harmony export */ });
77626
77904
  /* harmony import */ var _parse_arazzo_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30089);
77905
+ /* harmony import */ var _parse_openapi_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71228);
77906
+
77627
77907
 
77628
77908
  })();
77629
77909