UNPKG

@vulcan-sql/core

Version:
60 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileTemplateProvider = void 0; const tslib_1 = require("tslib"); const templateProvider_1 = require("../../../models/extensions/templateProvider"); const glob = require("glob"); const fs_1 = require("fs"); const path = require("path"); const models_1 = require("../../../models/index"); const inversify_1 = require("inversify"); const types_1 = require("../../../containers/types"); const options_1 = require("../../../options/index"); const errors_1 = require("../../utils/errors"); let FileTemplateProvider = class FileTemplateProvider extends templateProvider_1.TemplateProvider { constructor(options, config, moduleName) { super(config, moduleName); this.options = options; } getTemplates() { var _a; return tslib_1.__asyncGenerator(this, arguments, function* getTemplates_1() { if (!((_a = this.options) === null || _a === void 0 ? void 0 : _a.folderPath)) throw new errors_1.ConfigurationError(`Config template.folderPath is required`); const files = yield tslib_1.__await(this.getTemplateFilePaths()); for (const file of files) { yield yield tslib_1.__await({ name: path .relative(this.options.folderPath, file) .replace(/\.sql$/, ''), statement: yield tslib_1.__await(fs_1.promises.readFile(file, 'utf8')), }); } }); } getTemplateFilePaths() { return tslib_1.__awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { glob(path .resolve(this.options.folderPath, '**', '*.sql') .split(path.sep) .join('/'), { nodir: true }, (err, files) => { if (err) return reject(err); else return resolve(files); }); }); }); } }; FileTemplateProvider = tslib_1.__decorate([ (0, models_1.VulcanInternalExtension)(), (0, models_1.VulcanExtensionId)(models_1.TemplateProviderType.LocalFile), tslib_1.__param(0, (0, inversify_1.inject)(types_1.TYPES.TemplateEngineOptions)), tslib_1.__param(1, (0, inversify_1.inject)(types_1.TYPES.ExtensionConfig)), tslib_1.__param(2, (0, inversify_1.inject)(types_1.TYPES.ExtensionName)), tslib_1.__metadata("design:paramtypes", [options_1.TemplateEngineOptions, Object, String]) ], FileTemplateProvider); exports.FileTemplateProvider = FileTemplateProvider; //# sourceMappingURL=fileTemplateProvider.js.map