source: node_modules/swagger-client/lib/resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 16 months ago

Initial commit

  • Property mode set to 100644
File size: 2.5 KB
Line 
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4exports.__esModule = true;
5exports.default = void 0;
6var _jsYaml = _interopRequireWildcard(require("js-yaml"));
7var _apidomCore = require("@swagger-api/apidom-core");
8var _empty = require("@swagger-api/apidom-reference/configuration/empty");
9var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-1");
10/* eslint-disable camelcase */
11
12const OpenApiYaml3_1Parser = _empty.Parser.compose({
13 props: {
14 name: 'openapi-yaml-3-1-swagger-client',
15 fileExtensions: ['.yaml', '.yml'],
16 mediaTypes: new _apidomNsOpenapi.OpenAPIMediaTypes(..._apidomNsOpenapi.mediaTypes.filterByFormat('generic'), ..._apidomNsOpenapi.mediaTypes.filterByFormat('yaml')),
17 detectionRegExp: /(?<YAML>^(["']?)openapi\2\s*:\s*(["']?)(?<version_yaml>3\.1\.(?:[1-9]\d*|0))\3(?:\s+|$))|(?<JSON>"openapi"\s*:\s*"(?<version_json>3\.1\.(?:[1-9]\d*|0))")/m
18 },
19 methods: {
20 async canParse(file) {
21 const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
22 const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
23 if (!hasSupportedFileExtension) return false;
24 if (hasSupportedMediaType) return true;
25 if (!hasSupportedMediaType) {
26 try {
27 const source = file.toString();
28 _jsYaml.default.load(source);
29 return this.detectionRegExp.test(source);
30 } catch (error) {
31 return false;
32 }
33 }
34 return false;
35 },
36 async parse(file) {
37 if (this.sourceMap) {
38 throw new _empty.ParserError("openapi-yaml-3-1-swagger-client parser plugin doesn't support sourceMaps option");
39 }
40 const parseResultElement = new _apidomCore.ParseResultElement();
41 const source = file.toString();
42 try {
43 const pojo = _jsYaml.default.load(source, {
44 schema: _jsYaml.JSON_SCHEMA
45 });
46 if (this.allowEmpty && typeof pojo === 'undefined') {
47 return parseResultElement;
48 }
49 const element = _apidomNsOpenapi.OpenApi3_1Element.refract(pojo, this.refractorOpts);
50 element.classes.push('result');
51 parseResultElement.push(element);
52 return parseResultElement;
53 } catch (error) {
54 throw new _empty.ParserError(`Error parsing "${file.uri}"`, {
55 cause: error
56 });
57 }
58 }
59 }
60});
61var _default = exports.default = OpenApiYaml3_1Parser;
62/* eslint-enable camelcase */
Note: See TracBrowser for help on using the repository browser.