UNPKG

@vulcan-sql/core

Version:
64 lines 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RuntimeCompilerEnvironment = void 0; const tslib_1 = require("tslib"); const models_1 = require("../../../models/index"); const types_1 = require("../../../containers/types"); const inversify_1 = require("inversify"); const lodash_1 = require("lodash"); const errors_1 = require("../../utils/errors"); const extension_utils_1 = require("../extension-utils"); const base_1 = require("./base"); /** * Runtime environment is used when we executing templates. */ let RuntimeCompilerEnvironment = class RuntimeCompilerEnvironment extends base_1.BaseCompilerEnvironment { constructor(compilerLoader, extensions = [], validatorLoader) { super(compilerLoader); this.extensions = []; // We only need runtime extensions like filterRunner, tagRunner ...etc. this.extensions = extensions.filter((extension) => extension instanceof models_1.RuntimeExtension); this.validatorLoader = validatorLoader; this.loadExtensions(); } getExtensions() { return this.extensions; } loadExtensions() { this.extensions.forEach(this.loadExtension.bind(this)); // Validator filters for (const validator of this.validatorLoader.getValidators()) { this.addFilter((0, extension_utils_1.getValidationFilterName)(validator), (value, rawArgs) => { const args = (0, lodash_1.omit)(rawArgs, '__keywords'); // Remove the additional property from template engine. try { validator.validateSchema(args); } catch (e) { throw new errors_1.InternalError(`Validation filter ${validator.getExtensionId()} has invalid argument`, { nestedError: e }); } validator.validateData(value, args); return value; }, false); } } loadExtension(extension) { if (extension instanceof models_1.TagRunner) { this.addExtension(extension.getName(), extension); } else if (extension instanceof models_1.FilterRunner) { this.addFilter(extension.filterName, function (value, ...args) { // use classic function to receive context extension.__transform(this, value, ...args); }, true); } } }; RuntimeCompilerEnvironment = tslib_1.__decorate([ tslib_1.__param(0, (0, inversify_1.inject)(types_1.TYPES.CompilerLoader)), tslib_1.__param(1, (0, inversify_1.multiInject)(types_1.TYPES.Extension_TemplateEngine)), tslib_1.__param(1, (0, inversify_1.optional)()), tslib_1.__param(2, (0, inversify_1.inject)(types_1.TYPES.ValidatorLoader)), tslib_1.__metadata("design:paramtypes", [models_1.CodeLoader, Array, Object]) ], RuntimeCompilerEnvironment); exports.RuntimeCompilerEnvironment = RuntimeCompilerEnvironment; //# sourceMappingURL=runtime.js.map