grind-framework
Version:
An opinionated Node web framework built on Express
64 lines (48 loc) • 4.85 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MissingPackageError = void 0;
function _isnil(val) { return val === null || typeof val === 'undefined'; }
const fs = require('fs');
const path = require('path');
let hasCheckedForYarn = false;
let hasYarn = false;
class MissingPackageError extends Error {
constructor(pkg, type = null, why = null) {
if (!hasCheckedForYarn) {
hasCheckedForYarn = true;
try {
// eslint-disable-next-line no-sync
fs.accessSync(path.join(process.env.BASE_PATH || process.cwd(), 'yarn.lock'), 'R_OK');
hasYarn = true;
} catch (err) {
hasYarn = false;
}
}
let command = null;
if (hasYarn) {
if (_isnil(type)) {
type = '';
} else {
type = ` --${type}`;
}
command = `yarn add${type} ${pkg}`;
} else {
if (_isnil(type)) {
type = '';
} else {
type = `-${type}`;
}
command = `npm install --save${type} ${pkg}`;
}
let message = `${pkg} missing, please run \`${command}\``;
if (typeof why === 'string') {
message += `: ${why}`;
}
super(message);
this.name = this.constructor.name;
}
}
exports.MissingPackageError = MissingPackageError;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FcnJvcnMvTWlzc2luZ1BhY2thZ2VFcnJvci5qcyJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwiaGFzQ2hlY2tlZEZvcllhcm4iLCJoYXNZYXJuIiwiTWlzc2luZ1BhY2thZ2VFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJwa2ciLCJ0eXBlIiwid2h5IiwiYWNjZXNzU3luYyIsImpvaW4iLCJwcm9jZXNzIiwiZW52IiwiQkFTRV9QQVRIIiwiY3dkIiwiZXJyIiwiY29tbWFuZCIsIm1lc3NhZ2UiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNQSxFQUFFLEdBQUdDLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsSUFBSUUsaUJBQWlCLEdBQUcsS0FBeEI7QUFDQSxJQUFJQyxPQUFPLEdBQUcsS0FBZDs7QUFFTyxNQUFNQyxtQkFBTixTQUFrQ0MsS0FBbEMsQ0FBd0M7QUFDOUNDLEVBQUFBLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNQyxJQUFJLEdBQUcsSUFBYixFQUFtQkMsR0FBRyxHQUFHLElBQXpCLEVBQStCO0FBQ3pDLFFBQUksQ0FBQ1AsaUJBQUwsRUFBd0I7QUFDdkJBLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCOztBQUVBLFVBQUk7QUFDSDtBQUNBSCxRQUFBQSxFQUFFLENBQUNXLFVBQUgsQ0FDQ1QsSUFBSSxDQUFDVSxJQUFMLENBQVVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxTQUFaLElBQXlCRixPQUFPLENBQUNHLEdBQVIsRUFBbkMsRUFBa0QsV0FBbEQsQ0FERCxFQUVDLE1BRkQ7QUFJQVosUUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDQSxPQVBELENBT0UsT0FBT2EsR0FBUCxFQUFZO0FBQ2JiLFFBQUFBLE9BQU8sR0FBRyxLQUFWO0FBQ0E7QUFDRDs7QUFFRCxRQUFJYyxPQUFPLEdBQUcsSUFBZDs7QUFFQSxRQUFJZCxPQUFKLEVBQWE7QUFDWixpQkFBSUssSUFBSixHQUFnQjtBQUNmQSxRQUFBQSxJQUFJLEdBQUcsRUFBUDtBQUNBLE9BRkQsTUFFTztBQUNOQSxRQUFBQSxJQUFJLEdBQUksTUFBS0EsSUFBSyxFQUFsQjtBQUNBOztBQUVEUyxNQUFBQSxPQUFPLEdBQUksV0FBVVQsSUFBSyxJQUFHRCxHQUFJLEVBQWpDO0FBQ0EsS0FSRCxNQVFPO0FBQ04saUJBQUlDLElBQUosR0FBZ0I7QUFDZkEsUUFBQUEsSUFBSSxHQUFHLEVBQVA7QUFDQSxPQUZELE1BRU87QUFDTkEsUUFBQUEsSUFBSSxHQUFJLElBQUdBLElBQUssRUFBaEI7QUFDQTs7QUFFRFMsTUFBQUEsT0FBTyxHQUFJLHFCQUFvQlQsSUFBSyxJQUFHRCxHQUFJLEVBQTNDO0FBQ0E7O0FBRUQsUUFBSVcsT0FBTyxHQUFJLEdBQUVYLEdBQUksMEJBQXlCVSxPQUFRLElBQXREOztBQUVBLFFBQUksT0FBT1IsR0FBUCxLQUFlLFFBQW5CLEVBQTZCO0FBQzVCUyxNQUFBQSxPQUFPLElBQUssS0FBSVQsR0FBSSxFQUFwQjtBQUNBOztBQUVELFVBQU1TLE9BQU47QUFFQSxTQUFLQyxJQUFMLEdBQVksS0FBS2IsV0FBTCxDQUFpQmEsSUFBN0I7QUFDQTs7QUE5QzZDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5cbmxldCBoYXNDaGVja2VkRm9yWWFybiA9IGZhbHNlXG5sZXQgaGFzWWFybiA9IGZhbHNlXG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nUGFja2FnZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRjb25zdHJ1Y3Rvcihwa2csIHR5cGUgPSBudWxsLCB3aHkgPSBudWxsKSB7XG5cdFx0aWYgKCFoYXNDaGVja2VkRm9yWWFybikge1xuXHRcdFx0aGFzQ2hlY2tlZEZvcllhcm4gPSB0cnVlXG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zeW5jXG5cdFx0XHRcdGZzLmFjY2Vzc1N5bmMoXG5cdFx0XHRcdFx0cGF0aC5qb2luKHByb2Nlc3MuZW52LkJBU0VfUEFUSCB8fCBwcm9jZXNzLmN3ZCgpLCAneWFybi5sb2NrJyksXG5cdFx0XHRcdFx0J1JfT0snLFxuXHRcdFx0XHQpXG5cdFx0XHRcdGhhc1lhcm4gPSB0cnVlXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0aGFzWWFybiA9IGZhbHNlXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGNvbW1hbmQgPSBudWxsXG5cblx0XHRpZiAoaGFzWWFybikge1xuXHRcdFx0aWYgKHR5cGUuaXNOaWwpIHtcblx0XHRcdFx0dHlwZSA9ICcnXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0eXBlID0gYCAtLSR7dHlwZX1gXG5cdFx0XHR9XG5cblx0XHRcdGNvbW1hbmQgPSBgeWFybiBhZGQke3R5cGV9ICR7cGtnfWBcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHR5cGUuaXNOaWwpIHtcblx0XHRcdFx0dHlwZSA9ICcnXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0eXBlID0gYC0ke3R5cGV9YFxuXHRcdFx0fVxuXG5cdFx0XHRjb21tYW5kID0gYG5wbSBpbnN0YWxsIC0tc2F2ZSR7dHlwZX0gJHtwa2d9YFxuXHRcdH1cblxuXHRcdGxldCBtZXNzYWdlID0gYCR7cGtnfSBtaXNzaW5nLCBwbGVhc2UgcnVuIFxcYCR7Y29tbWFuZH1cXGBgXG5cblx0XHRpZiAodHlwZW9mIHdoeSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdG1lc3NhZ2UgKz0gYDogJHt3aHl9YFxuXHRcdH1cblxuXHRcdHN1cGVyKG1lc3NhZ2UpXG5cblx0XHR0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWVcblx0fVxufVxuIl19
;