UNPKG

@foxpage/foxpage-core

Version:

foxpage core

95 lines (94 loc) 2.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseStructure = exports.parse = exports.getParser = exports.initParser = void 0; const shortid_1 = __importDefault(require("shortid")); const main_1 = require("./main"); const parser_1 = require("./parser"); let parser; /** * init parser * @param opt parser init options * @returns parser instance */ const initParser = async (opt) => { parser = new parser_1.ParserImpl(); await parser.prepare(opt); return parser; }; exports.initParser = initParser; /** * get the parser instance * @returns parser */ const getParser = () => { return parser; }; exports.getParser = getParser; /** * parse content * @param content content * @param ctx Context * @returns parsed */ const parse = async (content, ctx) => { var _a, _b; if (!parser) { const msg = 'parser instance is invalid.'; (_a = ctx.logger) === null || _a === void 0 ? void 0 : _a.error(msg); throw new Error(msg); } const sessionId = (0, shortid_1.default)(); try { parser.preParse(content, ctx, { sessionId }); const result = await parser.parse(sessionId, ctx); const { parsed, messages } = result || {}; parser.reset({ sessionId }); return { messages, content: Object.assign({ id: content.id }, parsed), ctx, }; } catch (e) { (_b = ctx.logger) === null || _b === void 0 ? void 0 : _b.error('parse failed:', e); parser.reset({ sessionId }); return { messages: [], content: {}, ctx, }; } }; exports.parse = parse; /** * only parse structure * template,block and page structure merge * @param content * @param ctx * @returns */ const parseStructure = async (content, ctx) => { var _a; try { const mainParser = new main_1.MainParser({ content }, ctx); const result = await mainParser.parse(ctx); const { parsed, messages } = result || {}; return { messages, content: Object.assign({ id: content.id }, parsed), ctx, }; } catch (e) { (_a = ctx.logger) === null || _a === void 0 ? void 0 : _a.error('parse failed:', e); return { messages: [], content: {}, ctx, }; } }; exports.parseStructure = parseStructure;