@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
JavaScript
;
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