UNPKG

nlu

Version:

Use this package to link your projects together for local development.

89 lines (88 loc) 3.45 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const Ajv = require("ajv"); const schema = require('../assets/nlu.schema.json'); const logging_1 = require("./logging"); const chalk_1 = require("chalk"); const fs = require("fs"); const path = require("path"); const async = require("async"); exports.globalConfigFilePath = path.resolve(process.env.HOME + '/.nlu/global/settings.json'); exports.validateConfigFile = function (data) { try { const ajv = new Ajv({ allErrors: false }); const validate = ajv.compile(schema); const valid = validate(data); if (!valid) console.error(validate.errors); return valid; } catch (err) { logging_1.default.error(err.message); return false; } }; exports.getProdKeys = function (pkg) { return Object.keys(pkg.dependencies || {}); }; exports.getDevKeys = function (pkg) { return Object.keys(pkg.dependencies || {}) .concat(Object.keys(pkg.devDependencies || {})) .concat(Object.keys(pkg.optionalDependencies || {})); }; exports.validateOptions = function (opts) { try { assert(opts.verbosity >= 1, chalk_1.default.magenta('Verbosity must be an integer between 1 and 4, inclusive')); assert(opts.verbosity <= 4, chalk_1.default.magenta('Verbosity must be an integer between 1 and 4, inclusive')); } catch (err) { logging_1.default.error(err.message); return false; } return true; }; exports.mapConfigObject = function (obj) { return Object.keys(obj).reduce((a, b) => { const key = String(b).replace(/[^a-zA-z]+/g, '_').toLowerCase(); return (a[key] = obj[b], a); }, {}); }; exports.determineIfReinstallIsNeeded = (nodeModulesPath, depsKeys, opts, cb) => { fs.readdir(nodeModulesPath, (err, originalItemsInNodeModules) => { if (err || !Array.isArray(originalItemsInNodeModules)) { opts.verbosity > 1 && logging_1.default.warn('Reinstalling because node_modules dir does not seem to exist in dir: ', nodeModulesPath); return cb(null, true); } const orgItems = originalItemsInNodeModules.filter(v => { return String(v).startsWith('@'); }); async.eachLimit(orgItems, 3, (item, cb) => { fs.readdir(path.resolve(nodeModulesPath + '/' + item), (err, orgtems) => { if (err) { return cb(err); } orgtems.forEach(v => { originalItemsInNodeModules.push(item + '/' + v); }); cb(null); }); }, (err) => { if (err) { return cb(err); } const allThere = depsKeys.every(d => { if (originalItemsInNodeModules.indexOf(d) < 0) { opts.verbosity > 1 && logging_1.default.info('The following dep in package.json', d, 'did not appear to be in node_modules located here:', nodeModulesPath); return false; } return true; }); if (!allThere) { opts.verbosity > 1 && logging_1.default.warn('Reinstalling because not all package.json dependencies exist in node_modules:', nodeModulesPath); return cb(null, true); } cb(null, false); }); }); };