@vulcan-sql/core
Version:
Core package of VulcanSQL
60 lines • 2.74 kB
JavaScript
;
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