@neo-one/server-plugin-project
Version:
NEO•ONE server plugin for project functionality.
57 lines (55 loc) • 8.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const convict_1 = tslib_1.__importDefault(require("convict"));
const cosmiconfig_1 = tslib_1.__importDefault(require("cosmiconfig"));
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const path_1 = tslib_1.__importDefault(require("path"));
const types_1 = require("../types");
const validateConfig = async (rootDir, configIn) => {
const config = convict_1.default(types_1.projectConfigSchema);
config.load(configIn);
config.validate({ allowed: 'warn' });
const validatedConfig = config.getProperties();
let newFramework;
if (Object.entries(configIn).length === 0) {
newFramework = await getProjectFramework(rootDir);
}
return {
codegen: Object.assign({}, validatedConfig.codegen, { framework: newFramework ? newFramework : validatedConfig.codegen.framework }),
paths: {
contracts: path_1.default.resolve(rootDir, validatedConfig.paths.contracts),
generated: path_1.default.resolve(rootDir, validatedConfig.paths.generated),
},
};
};
exports.loadProjectConfig = async (rootDir) => {
const explorer = cosmiconfig_1.default('one', { stopDir: rootDir });
const result = await explorer.search(rootDir);
return validateConfig(rootDir, result === null ? {} : result.config);
};
const getPkgDependencies = (pkg) => {
const dependencies = pkg.dependencies === undefined ? [] : Object.keys(pkg.dependencies);
const devDependencies = pkg.devDependencies === undefined ? [] : Object.keys(pkg.devDependencies);
return new Set(dependencies.concat(devDependencies));
};
const getProjectFramework = async (rootDir) => {
const pkgPath = path_1.default.resolve(rootDir, 'package.json');
const pkgExists = await fs_extra_1.default.pathExists(pkgPath);
if (!pkgExists) {
return 'none';
}
const pkg = await fs_extra_1.default.readJSON(path_1.default.resolve(rootDir, 'package.json'));
const dependencies = getPkgDependencies(pkg);
if (dependencies.has('react') || dependencies.has('react-dom')) {
return 'react';
}
if (dependencies.has('@angular/core') || dependencies.has('@angular/cli')) {
return 'angular';
}
if (dependencies.has('vue') || dependencies.has('@vue/cli-service')) {
return 'vue';
}
return 'none';
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRQcm9qZWN0Q29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhEQUE4QjtBQUM5QixzRUFBc0M7QUFDdEMsZ0VBQTBCO0FBQzFCLHdEQUF3QjtBQUN4QixvQ0FBOEQ7QUFFOUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBRSxRQUE0QixFQUEwQixFQUFFO0lBQ3JHLE1BQU0sTUFBTSxHQUFHLGlCQUFPLENBQWdCLDJCQUFtQixDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFckMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBRS9DLElBQUksWUFBMEMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN6QyxZQUFZLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNuRDtJQUVELE9BQU87UUFDTCxPQUFPLG9CQUNGLGVBQWUsQ0FBQyxPQUFPLElBQzFCLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQzNFO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2pFLFNBQVMsRUFBRSxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNsRTtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUFHLEtBQUssRUFBRSxPQUFlLEVBQTBCLEVBQUU7SUFDakYsTUFBTSxRQUFRLEdBQUcscUJBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsT0FBTyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQztBQUdGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQWUsRUFBRTtJQUNuRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVsRyxPQUFPLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFBRSxPQUFlLEVBQTZCLEVBQUU7SUFDL0UsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM5RCxPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQ3pFLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUNuRSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi1wcm9qZWN0L3NyYy91dGlscy9sb2FkUHJvamVjdENvbmZpZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVnZW5GcmFtZXdvcmsgfSBmcm9tICdAbmVvLW9uZS9zbWFydC1jb250cmFjdC1jb2RlZ2VuJztcbmltcG9ydCBjb252aWN0IGZyb20gJ2NvbnZpY3QnO1xuaW1wb3J0IGNvc21pY29uZmlnIGZyb20gJ2Nvc21pY29uZmlnJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFByb2plY3RDb25maWcsIHByb2plY3RDb25maWdTY2hlbWEgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IHZhbGlkYXRlQ29uZmlnID0gYXN5bmMgKHJvb3REaXI6IHN0cmluZywgY29uZmlnSW46IGNvc21pY29uZmlnLkNvbmZpZyk6IFByb21pc2U8UHJvamVjdENvbmZpZz4gPT4ge1xuICBjb25zdCBjb25maWcgPSBjb252aWN0PFByb2plY3RDb25maWc+KHByb2plY3RDb25maWdTY2hlbWEpO1xuICBjb25maWcubG9hZChjb25maWdJbik7XG4gIGNvbmZpZy52YWxpZGF0ZSh7IGFsbG93ZWQ6ICd3YXJuJyB9KTtcblxuICBjb25zdCB2YWxpZGF0ZWRDb25maWcgPSBjb25maWcuZ2V0UHJvcGVydGllcygpO1xuXG4gIGxldCBuZXdGcmFtZXdvcms6IENvZGVnZW5GcmFtZXdvcmsgfCB1bmRlZmluZWQ7XG4gIGlmIChPYmplY3QuZW50cmllcyhjb25maWdJbikubGVuZ3RoID09PSAwKSB7XG4gICAgbmV3RnJhbWV3b3JrID0gYXdhaXQgZ2V0UHJvamVjdEZyYW1ld29yayhyb290RGlyKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29kZWdlbjoge1xuICAgICAgLi4udmFsaWRhdGVkQ29uZmlnLmNvZGVnZW4sXG4gICAgICBmcmFtZXdvcms6IG5ld0ZyYW1ld29yayA/IG5ld0ZyYW1ld29yayA6IHZhbGlkYXRlZENvbmZpZy5jb2RlZ2VuLmZyYW1ld29yayxcbiAgICB9LFxuICAgIHBhdGhzOiB7XG4gICAgICBjb250cmFjdHM6IHBhdGgucmVzb2x2ZShyb290RGlyLCB2YWxpZGF0ZWRDb25maWcucGF0aHMuY29udHJhY3RzKSxcbiAgICAgIGdlbmVyYXRlZDogcGF0aC5yZXNvbHZlKHJvb3REaXIsIHZhbGlkYXRlZENvbmZpZy5wYXRocy5nZW5lcmF0ZWQpLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZFByb2plY3RDb25maWcgPSBhc3luYyAocm9vdERpcjogc3RyaW5nKTogUHJvbWlzZTxQcm9qZWN0Q29uZmlnPiA9PiB7XG4gIGNvbnN0IGV4cGxvcmVyID0gY29zbWljb25maWcoJ29uZScsIHsgc3RvcERpcjogcm9vdERpciB9KTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBleHBsb3Jlci5zZWFyY2gocm9vdERpcik7XG5cbiAgcmV0dXJuIHZhbGlkYXRlQ29uZmlnKHJvb3REaXIsIHJlc3VsdCA9PT0gbnVsbCA/IHt9IDogcmVzdWx0LmNvbmZpZyk7XG59O1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueVxuY29uc3QgZ2V0UGtnRGVwZW5kZW5jaWVzID0gKHBrZzogYW55KTogU2V0PHN0cmluZz4gPT4ge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBwa2cuZGVwZW5kZW5jaWVzID09PSB1bmRlZmluZWQgPyBbXSA6IE9iamVjdC5rZXlzKHBrZy5kZXBlbmRlbmNpZXMpO1xuICBjb25zdCBkZXZEZXBlbmRlbmNpZXMgPSBwa2cuZGV2RGVwZW5kZW5jaWVzID09PSB1bmRlZmluZWQgPyBbXSA6IE9iamVjdC5rZXlzKHBrZy5kZXZEZXBlbmRlbmNpZXMpO1xuXG4gIHJldHVybiBuZXcgU2V0KGRlcGVuZGVuY2llcy5jb25jYXQoZGV2RGVwZW5kZW5jaWVzKSk7XG59O1xuXG5jb25zdCBnZXRQcm9qZWN0RnJhbWV3b3JrID0gYXN5bmMgKHJvb3REaXI6IHN0cmluZyk6IFByb21pc2U8Q29kZWdlbkZyYW1ld29yaz4gPT4ge1xuICBjb25zdCBwa2dQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGtnRXhpc3RzID0gYXdhaXQgZnMucGF0aEV4aXN0cyhwa2dQYXRoKTtcbiAgaWYgKCFwa2dFeGlzdHMpIHtcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9XG4gIGNvbnN0IHBrZyA9IGF3YWl0IGZzLnJlYWRKU09OKHBhdGgucmVzb2x2ZShyb290RGlyLCAncGFja2FnZS5qc29uJykpO1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBnZXRQa2dEZXBlbmRlbmNpZXMocGtnKTtcblxuICBpZiAoZGVwZW5kZW5jaWVzLmhhcygncmVhY3QnKSB8fCBkZXBlbmRlbmNpZXMuaGFzKCdyZWFjdC1kb20nKSkge1xuICAgIHJldHVybiAncmVhY3QnO1xuICB9XG5cbiAgaWYgKGRlcGVuZGVuY2llcy5oYXMoJ0Bhbmd1bGFyL2NvcmUnKSB8fCBkZXBlbmRlbmNpZXMuaGFzKCdAYW5ndWxhci9jbGknKSkge1xuICAgIHJldHVybiAnYW5ndWxhcic7XG4gIH1cblxuICBpZiAoZGVwZW5kZW5jaWVzLmhhcygndnVlJykgfHwgZGVwZW5kZW5jaWVzLmhhcygnQHZ1ZS9jbGktc2VydmljZScpKSB7XG4gICAgcmV0dXJuICd2dWUnO1xuICB9XG5cbiAgcmV0dXJuICdub25lJztcbn07XG4iXX0=