@methodus/contracts
Version:
This package is part of the Methodus tollbelt. It's purpose is generating contract packages of the server code, to be used by JavaScript browser / server clients.
71 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UseCustomTemplate = exports.UseTemplate = exports.IncludesIndex = exports.ContractsIndex = exports.ModelsIndex = void 0;
const path = require("path");
const fs = require("fs");
const shell = require("shelljs");
const colors = require("colors");
const interfaces_1 = require("./interfaces");
const ROOTSRC = 'src';
const Console = console;
function ModelsIndex(buildConfiguration, source, target, packageName) {
const head = `/**/\n`;
let body = '';
if (buildConfiguration.models) {
Object.keys(buildConfiguration.models).forEach((modelKey) => {
const cleanKey = (!modelKey.endsWith('Model')) ? `${modelKey}Model` : modelKey;
const fullPath = path.basename(buildConfiguration.models[modelKey].path, '.ts');
body += `export {${modelKey} as ${cleanKey}} from './${fullPath}';\n`;
});
}
shell.mkdir('-p', target);
fs.writeFileSync(path.join(target, 'index.ts'), `${interfaces_1.HEADER}${head}${body}\n`);
}
exports.ModelsIndex = ModelsIndex;
function ContractsIndex(buildConfiguration, source, target, packageName) {
const head = `/**/\n`;
let body = '';
if (buildConfiguration.contracts) {
Object.keys(buildConfiguration.contracts).forEach((contractKey) => {
const fullPath = path.basename(buildConfiguration.contracts[contractKey].path, '.ts');
body += `export * from './${fullPath}';\n`;
});
}
shell.mkdir('-p', target);
fs.writeFileSync(path.join(target, 'index.ts'), `${interfaces_1.HEADER}${head}${body}\n`);
}
exports.ContractsIndex = ContractsIndex;
function IncludesIndex(buildConfiguration, source, target, packageName) {
const head = `/**/\n`;
let body = '';
if (buildConfiguration.includes) {
Object.keys(buildConfiguration.includes).forEach((contractKey) => {
const fullPath = path.basename(buildConfiguration.includes[contractKey].path, '.ts');
body += `export * from './${fullPath}';\n`;
});
}
shell.mkdir('-p', target);
fs.writeFileSync(path.join(target, 'index.ts'), `${interfaces_1.HEADER}${head}${body}\n`);
}
exports.IncludesIndex = IncludesIndex;
function UseTemplate(fileName, targetFileName, destFolder, replacement) {
let content = fs.readFileSync(path.resolve(path.join(__dirname, '../../template', fileName)), 'utf-8');
if (replacement) {
Object.keys(replacement).forEach((entry) => content = content.replace(`{${entry}}`, replacement[entry]));
}
Console.log(colors.blue(`> ${fileName} --> ${targetFileName}`));
shell.mkdir('-p', destFolder);
fs.writeFileSync(path.join(destFolder, targetFileName), `${content}\n`);
}
exports.UseTemplate = UseTemplate;
function UseCustomTemplate(fileName, targetFileName, destFolder, replacement) {
let content = fs.readFileSync(path.resolve(fileName), 'utf-8');
if (replacement) {
Object.keys(replacement).forEach((entry) => content = content.replace(`{${entry}}`, replacement[entry]));
}
shell.mkdir('-p', destFolder);
Console.log(colors.blue(`> ${fileName} --> ${targetFileName}`));
fs.writeFileSync(path.join(destFolder, targetFileName), `${content}\n`);
}
exports.UseCustomTemplate = UseCustomTemplate;
//# sourceMappingURL=exportify.js.map