"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default; exports.__esModule = true; exports.default = void 0; var _stampit = _interopRequireDefault(require("stampit")); var _ramda = require("ramda"); var _apidomParserAdapterOpenapiJson = require("@swagger-api/apidom-parser-adapter-openapi-json-3-0"); var _ParserError = _interopRequireDefault(require("../../../errors/ParserError.cjs")); var _Parser = _interopRequireDefault(require("../Parser.cjs")); // eslint-disable-next-line @typescript-eslint/naming-convention const OpenApiJson3_0Parser = (0, _stampit.default)(_Parser.default, { props: { name: 'openapi-json-3-0', fileExtensions: ['.json'], mediaTypes: _apidomParserAdapterOpenapiJson.mediaTypes }, methods: { async canParse(file) { const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension); const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType); if (!hasSupportedFileExtension) return false; if (hasSupportedMediaType) return true; if (!hasSupportedMediaType) { return (0, _apidomParserAdapterOpenapiJson.detect)(file.toString()); } return false; }, async parse(file) { const source = file.toString(); try { const parserOpts = (0, _ramda.pick)(['sourceMap', 'syntacticAnalysis', 'refractorOpts'], this); return await (0, _apidomParserAdapterOpenapiJson.parse)(source, parserOpts); } catch (error) { throw new _ParserError.default(`Error parsing "${file.uri}"`, { cause: error }); } } } }); var _default = exports.default = OpenApiJson3_0Parser;