dscaffold
Version:
A TypeScript framework for scaffolding modular Discord bot projects with dynamic command and event loading
83 lines • 3.09 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateRenderer = void 0;
const mustache_1 = __importDefault(require("mustache"));
class TemplateRenderer {
constructor() {
// Add helper functions for Mustache templates
this.setupHelpers();
}
render(template, data) {
return mustache_1.default.render(template, {
...data,
...this.getHelpers(),
});
}
renderFile(templatePath, data) {
// This would load template from file system in a real implementation
// For now, we'll use the inline templates in ProjectGenerator
throw new Error('File-based templates not implemented yet');
}
setupHelpers() {
// Mustache doesn't support functions in templates by default
// We'll add helper data properties instead
}
getHelpers() {
return {
convertMongooseType: () => (text, render) => {
const type = render(text);
const typeMap = {
string: 'String',
number: 'Number',
boolean: 'Boolean',
date: 'Date',
objectid: 'mongoose.Schema.Types.ObjectId',
array: 'Array',
};
return typeMap[type.toLowerCase()] || 'String';
},
convertPrismaType: () => (text, render) => {
const type = render(text);
const typeMap = {
string: 'String',
number: 'Int',
boolean: 'Boolean',
date: 'DateTime',
objectid: 'String',
array: 'String[]',
};
return typeMap[type.toLowerCase()] || 'String';
},
convertSequelizeType: () => (text, render) => {
const type = render(text);
const typeMap = {
string: 'string',
number: 'number',
boolean: 'boolean',
date: 'Date',
objectid: 'string',
array: 'string[]',
};
return typeMap[type.toLowerCase()] || 'string';
},
convertSequelizeDataType: () => (text, render) => {
const type = render(text);
const typeMap = {
string: 'STRING',
number: 'INTEGER',
boolean: 'BOOLEAN',
date: 'DATE',
objectid: 'STRING',
array: 'JSON',
};
return typeMap[type.toLowerCase()] || 'STRING';
},
isTypeScript: (language) => language === 'typescript',
};
}
}
exports.TemplateRenderer = TemplateRenderer;
//# sourceMappingURL=TemplateRenderer.js.map