@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.
- package/CHANGELOG.md +10 -0
- package/README.md +42 -29
- package/dist/jentic-arazzo-parser.browser.js +348 -68
- package/dist/jentic-arazzo-parser.browser.min.js +1 -1
- package/package.json +15 -9
- package/src/index.cjs +5 -2
- package/src/index.mjs +2 -1
- package/src/parse-arazzo.cjs +5 -14
- package/src/parse-arazzo.mjs +6 -15
- package/src/parse-openapi.cjs +239 -0
- package/src/parse-openapi.mjs +232 -0
- package/src/resolve/resolvers/memory/index.cjs +2 -2
- package/src/resolve/resolvers/memory/index.mjs +2 -2
- package/types/arazzo-parser.d.ts +37 -5
|
@@ -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
|
|
43
|
-
/* harmony import */ var
|
|
44
|
-
/* harmony import */ var _speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
45
|
-
/* harmony import */ var
|
|
46
|
-
/* harmony import */ var
|
|
47
|
-
/* harmony import */ var
|
|
48
|
-
/* harmony import */ var
|
|
49
|
-
/* harmony import */ var
|
|
50
|
-
/* harmony import */ var
|
|
51
|
-
/* harmony import */ var
|
|
52
|
-
/* harmony import */ var
|
|
53
|
-
/* harmony import */ var
|
|
54
|
-
/* harmony import */ var
|
|
55
|
-
/* harmony import */ var
|
|
56
|
-
/* harmony import */ var
|
|
57
|
-
/* harmony import */ var
|
|
58
|
-
/* harmony import */ var
|
|
59
|
-
/* harmony import */ var
|
|
60
|
-
/* harmony import */ var
|
|
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
|
|
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:
|
|
97
|
-
}), new
|
|
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:
|
|
101
|
-
}), new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
205
|
-
const
|
|
206
|
-
mergedOptions = (0,
|
|
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
|
-
|
|
206
|
+
document
|
|
210
207
|
}
|
|
211
208
|
}
|
|
212
209
|
});
|
|
213
210
|
source = 'memory://arazzo.json';
|
|
214
211
|
sourceProvenance = '[object]';
|
|
215
|
-
} else if (await (0,
|
|
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,
|
|
215
|
+
mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
|
|
219
216
|
resolve: {
|
|
220
217
|
resolverOpts: {
|
|
221
|
-
|
|
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,
|
|
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,
|
|
227
|
+
mergedOptions = (0,_speclynx_apidom_reference_configuration_empty__WEBPACK_IMPORTED_MODULE_1__.merge)(mergedOptions, {
|
|
231
228
|
resolve: {
|
|
232
229
|
resolverOpts: {
|
|
233
|
-
|
|
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,
|
|
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,
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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
|
-
|
|
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
|
|
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://') &&
|
|
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.
|
|
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
|
|
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
|
|
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}"
|
|
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
|
|
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 */
|
|
77624
|
-
/* harmony export */
|
|
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
|
|