source: node_modules/swagger-client/lib/resolver/apidom/reference/parse/parsers/json/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: 1.7 KB
Line 
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5var _apidomCore = require("@swagger-api/apidom-core");
6var _empty = require("@swagger-api/apidom-reference/configuration/empty");
7const JsonParser = _empty.Parser.compose({
8 props: {
9 name: 'json-swagger-client',
10 fileExtensions: ['.json'],
11 mediaTypes: ['application/json']
12 },
13 methods: {
14 async canParse(file) {
15 const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
16 const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
17 if (!hasSupportedFileExtension) return false;
18 if (hasSupportedMediaType) return true;
19 if (!hasSupportedMediaType) {
20 try {
21 JSON.parse(file.toString());
22 return true;
23 } catch (error) {
24 return false;
25 }
26 }
27 return false;
28 },
29 async parse(file) {
30 if (this.sourceMap) {
31 throw new _empty.ParserError("json-swagger-client parser plugin doesn't support sourceMaps option");
32 }
33 const parseResultElement = new _apidomCore.ParseResultElement();
34 const source = file.toString();
35
36 // allow empty files
37 if (this.allowEmpty && source.trim() === '') {
38 return parseResultElement;
39 }
40 try {
41 const element = (0, _apidomCore.from)(JSON.parse(source));
42 element.classes.push('result');
43 parseResultElement.push(element);
44 return parseResultElement;
45 } catch (error) {
46 throw new _empty.ParserError(`Error parsing "${file.uri}"`, {
47 cause: error
48 });
49 }
50 }
51 }
52});
53var _default = exports.default = JsonParser;
Note: See TracBrowser for help on using the repository browser.