@foxpage/foxpage-core
Version:
foxpage core
95 lines (94 loc) • 2.58 kB
JavaScript
;
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;