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.

70 lines 3.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Common = void 0; const exportify_1 = require("./exportify"); const path = require("path"); const project_1 = require("../ast/project"); const rimraf = require("rimraf"); const ROOTSRC = 'src'; class Common { static async newCommonFlow(configuration, packageName, options) { rimraf.sync(path.join(options.target, 'build')); if (configuration.tsConfig) { const filePath = path.join(options.source, configuration.tsConfig); options.tsConfig = filePath; } const sourceProject = new project_1.MethodusProject(options.source, packageName, options); const targetProject = new project_1.MethodusProject(options.target, packageName, options); //options.isProtobuf ? new ProtoProject(target, packageName, options) : if (configuration.models && Object.keys(configuration.models).length > 0) { Object.keys(configuration.models).forEach((modelKey) => { const model = configuration.models[modelKey]; const modelFile = sourceProject.project.addSourceFileAtPath(path.join(options.source, model.path)); targetProject.ProxifyFromModel(modelFile, 'models', modelKey.toLocaleLowerCase()); }); const indexPath = path.join(options.target, ROOTSRC, 'models'); exportify_1.ModelsIndex(configuration, options.source, indexPath, packageName); targetProject.project.addSourceFileAtPathIfExists(path.join(indexPath, 'index.ts')); targetProject.project.saveSync(); } if (configuration.contracts) { Object.keys(configuration.contracts).forEach((contractKey) => { const contract = configuration.contracts[contractKey]; const sourceFile = sourceProject.project.addSourceFileAtPath(path.join(options.source, contract.path)); targetProject.ProxifyFromFile(sourceFile, 'contracts', contractKey.toLocaleLowerCase(), options); }); const indexPath = path.join(options.target, ROOTSRC, 'contracts'); exportify_1.ContractsIndex(configuration, options.source, indexPath, packageName); targetProject.project.addSourceFileAtPathIfExists(path.join(indexPath, 'index.ts')); targetProject.project.saveSync(); } if (configuration.includes) { Object.keys(configuration.includes).forEach((includeKey) => { const include = configuration.includes[includeKey]; const sourceFile = sourceProject.project.addSourceFileAtPath(path.join(options.source, include.path)); targetProject.HandleIncludeFile(sourceFile, 'includes', options); }); const indexPath = path.join(options.target, ROOTSRC, 'includes'); exportify_1.IncludesIndex(configuration, options.source, indexPath, packageName); targetProject.project.addSourceFileAtPathIfExists(path.join(indexPath, 'index.ts')); targetProject.project.saveSync(); } const format = {}; const prefernces = { importModuleSpecifierPreference: "non-relative" }; targetProject.project.getSourceFiles().forEach((finalFile) => { finalFile.fixMissingImports(format, prefernces); finalFile.getImportDeclarations().forEach((importDec) => { const children = importDec.getChildren(); if (children.length === 3) { importDec.remove(); } }); finalFile.saveSync(); }); targetProject.Exportify(configuration); return targetProject; } } exports.Common = Common; //# sourceMappingURL=common.js.map