UNPKG

@sudoo/marked

Version:

JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous

64 lines (63 loc) 2.9 kB
"use strict"; /** * @author WMXPY * @namespace Parse_Script * @description Parse Script */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseScript = void 0; const error_code_1 = require("../../declare/error-code"); const raw_1 = require("../../source-map/location-finder/raw"); const segment_1 = require("../../source-map/location-finder/segment"); const error_1 = require("../../util/error/error"); const transform_1 = require("../emit/transform"); const parse_estree_1 = require("../parse-estree"); const parseScript = (script, language) => __awaiter(void 0, void 0, void 0, function* () { if (language === "javascript") { return yield parseJavaScript(script); } else if (language === "typescript") { return yield parseTypeScript(script); } throw (0, error_1.error)(error_code_1.ERROR_CODE.UNKNOWN_LANGUAGE); }); exports.parseScript = parseScript; const parseJavaScript = (script) => __awaiter(void 0, void 0, void 0, function* () { try { const estree = yield Promise.resolve((0, parse_estree_1.parseCodeToESTree)(script)); return { estree: estree.estree, comments: estree.comments, locationFinder: raw_1.RawSourceMapLocationFinder.fromEmpty(), }; } catch (err) { const syntaxError = err; throw (0, error_1.error)(error_code_1.ERROR_CODE.PARSE_ERROR, syntaxError.message, `POS:${syntaxError.pos}, RAISEDAT:${syntaxError.raisedAt}`); } }); const parseTypeScript = (script) => __awaiter(void 0, void 0, void 0, function* () { try { const transformResult = yield (0, transform_1.emitTypeScriptTransform)(script); const estree = yield Promise.resolve((0, parse_estree_1.parseCodeToESTree)(transformResult.source)); const locationFinder = segment_1.SegmentSourceMapLocationFinder.fromSourceMap(transformResult.sourceMap); return { estree: estree.estree, comments: estree.comments, locationFinder, }; // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (err) { throw (0, error_1.error)(error_code_1.ERROR_CODE.TYPESCRIPT_COMPILE_ERROR); } });