source: node_modules/swagger-client/es/resolver/apidom/reference/parse/parsers/yaml-1-2/index.js

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

Initial commit

  • Property mode set to 100644
File size: 1.7 KB
Line 
1import YAML, { JSON_SCHEMA } from 'js-yaml';
2import { from, ParseResultElement } from '@swagger-api/apidom-core';
3import { ParserError, Parser } from '@swagger-api/apidom-reference/configuration/empty';
4const YamlParser = Parser.compose({
5 props: {
6 name: 'yaml-1-2-swagger-client',
7 fileExtensions: ['.yaml', '.yml'],
8 mediaTypes: ['text/yaml', 'application/yaml']
9 },
10 methods: {
11 async canParse(file) {
12 const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
13 const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
14 if (!hasSupportedFileExtension) return false;
15 if (hasSupportedMediaType) return true;
16 if (!hasSupportedMediaType) {
17 try {
18 YAML.load(file.toString(), {
19 schema: JSON_SCHEMA
20 });
21 return true;
22 } catch (error) {
23 return false;
24 }
25 }
26 return false;
27 },
28 async parse(file) {
29 if (this.sourceMap) {
30 throw new ParserError("yaml-1-2-swagger-client parser plugin doesn't support sourceMaps option");
31 }
32 const parseResultElement = new ParseResultElement();
33 const source = file.toString();
34 try {
35 const pojo = YAML.load(source, {
36 schema: JSON_SCHEMA
37 });
38 if (this.allowEmpty && typeof pojo === 'undefined') {
39 return parseResultElement;
40 }
41 const element = from(pojo);
42 element.classes.push('result');
43 parseResultElement.push(element);
44 return parseResultElement;
45 } catch (error) {
46 throw new ParserError(`Error parsing "${file.uri}"`, {
47 cause: error
48 });
49 }
50 }
51 }
52});
53export default YamlParser;
Note: See TracBrowser for help on using the repository browser.