@foxpage/foxpage-node-sdk
Version:
foxpage node sdk
49 lines (48 loc) • 2.06 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parsePage = void 0;
const foxpage_manager_1 = require("@foxpage/foxpage-manager");
const errors_1 = require("../errors");
const task_1 = require("../task");
/**
* parse page
* default relations use the api opts
* support fetch relations from local too
* @param page page content
* @param opt parse page options
* @returns parsed
*/
const parsePage = async (page, opt) => {
const app = (0, foxpage_manager_1.getApplication)(opt.appId);
if (!app) {
throw new errors_1.NotFoundAppError(opt.appId);
}
// init context & contents instance
const ctx = opt.ctx ? opt.ctx : await (0, task_1.contextTask)(app, opt.req);
const _a = opt.relationInfo || {}, { extendPage } = _a, rest = __rest(_a, ["extendPage"]);
const instances = (0, task_1.initRelationsTask)(Object.assign(Object.assign({}, rest), { pages: [page] }), ctx);
if (!instances.pages || !instances.pages[0]) {
throw new errors_1.NotFoundDSLError(page.id, 'the page content is not exist.');
}
ctx.updateOriginPage(instances.pages[0]);
if (extendPage && extendPage[0]) {
ctx.updateOriginByKey('extendPage', extendPage[0]);
}
const { content, ctx: context } = await (0, task_1.parseTask)(instances.pages[0], ctx);
if (!content.schemas) {
throw new errors_1.ParseDSLError(new Error('parsed.schemas is empty'), ctx.origin);
}
return { parsedPage: content.schemas, variables: context.variables };
};
exports.parsePage = parsePage;