UNPKG

magnet-core

Version:

Magnet's core, a simple module loader.

73 lines 3.38 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs-extra"); const glob = require("glob"); const _promise = require("bluebird"); const fp_1 = require("lodash/fp"); const lodash_1 = require("lodash"); // TODO: Only get when from cli // import pkg from './package.json' const globAsync = _promise.promisify(glob); const getNodeModulePackageJSON = function () { return __awaiter(this, void 0, void 0, function* () { const allPackageJSON = yield globAsync('./node_modules/*/package.json'); return yield _promise.all(allPackageJSON.map((packageJSONPath) => fs.readJson(packageJSONPath))); }); }; const filterOutMagnetModule = fp_1.flow(fp_1.map((json) => { if (!json.keywords || !lodash_1.intersection(json.keywords, ['magnet', 'magnetjs']).length) { return; } return json.name; }), fp_1.compact, fp_1.without(['magnet-config'])); const getModuleConfigFiles = function (files) { return __awaiter(this, void 0, void 0, function* () { const configFiles = yield _promise.all(files.map((moduleName) => __awaiter(this, void 0, void 0, function* () { return yield globAsync(`${process.cwd()}/node_modules/${moduleName}/*/config/*.js`); }))); return lodash_1.flatten(configFiles); }); }; const formatPath = function (files) { return files.map((path) => ({ path, name: path.split('config/')[1] })); }; const copyFiles = fp_1.flow(fp_1.differenceWith((moduleFile, currentFile) => moduleFile.name === currentFile.name), fp_1.map(file => { return fs.copy(file.path, `./src/config/${file.name}`); })); function default_1() { return __awaiter(this, void 0, void 0, function* () { try { const allPackageJSON = yield getNodeModulePackageJSON(); const magnetModules = filterOutMagnetModule(allPackageJSON); let [moduleConfigFiles, localModuleConfigFiles, currentConfigFiles] = yield _promise.all([ getModuleConfigFiles(magnetModules), globAsync(`${process.cwd()}/local_modules/*/config/*.js`), globAsync('./src/config/**.js') ]); moduleConfigFiles = formatPath(moduleConfigFiles); localModuleConfigFiles = formatPath(localModuleConfigFiles); currentConfigFiles = formatPath(currentConfigFiles); yield _promise.all([ ...copyFiles(moduleConfigFiles, currentConfigFiles), ...copyFiles(localModuleConfigFiles, currentConfigFiles) ]); console.log('Completed copy config files'); } catch (err) { console.error(err); } }); } exports.default = default_1; //# sourceMappingURL=copy-config.js.map