UNPKG

@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
"use strict"; 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