@vulcan-sql/core
Version:
Core package of VulcanSQL
63 lines • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateEngine = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const types_1 = require("../../containers/types");
const models_1 = require("../../models/index");
const utils_1 = require("../utils");
let TemplateEngine = class TemplateEngine {
constructor(compiler, templateProvider, compilerLoader) {
this.compiler = compiler;
this.compilerLoader = compilerLoader;
if (templateProvider)
this.templateProvider = templateProvider;
}
compile() {
var e_1, _a;
var _b, _c;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.templateProvider)
throw new utils_1.InternalError('Template provider has not been initialized.');
yield ((_c = (_b = this.templateProvider).activate) === null || _c === void 0 ? void 0 : _c.call(_b));
const templateResult = {};
const metadataResult = {};
try {
for (var _d = tslib_1.__asyncValues(this.templateProvider.getTemplates()), _e; _e = yield _d.next(), !_e.done;) {
const template = _e.value;
const { compiledData, metadata } = yield this.compiler.compile(template.statement);
// load compileData immediately to the loader
this.compilerLoader.setSource(template.name, compiledData);
templateResult[template.name] = compiledData;
metadataResult[template.name] = metadata;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) yield _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
return {
templates: templateResult,
metadata: metadataResult,
};
});
}
execute(templateName, data, pagination) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.compiler.execute(templateName, data, pagination);
});
}
};
TemplateEngine = tslib_1.__decorate([
(0, inversify_1.injectable)(),
tslib_1.__param(0, (0, inversify_1.inject)(types_1.TYPES.Compiler)),
tslib_1.__param(1, (0, inversify_1.inject)(types_1.TYPES.TemplateProvider)),
tslib_1.__param(1, (0, inversify_1.optional)()),
tslib_1.__param(2, (0, inversify_1.inject)(types_1.TYPES.CompilerLoader)),
tslib_1.__metadata("design:paramtypes", [Object, Object, models_1.CodeLoader])
], TemplateEngine);
exports.TemplateEngine = TemplateEngine;
//# sourceMappingURL=templateEngine.js.map