UNPKG

grind-framework

Version:

An opinionated Node web framework built on Express

64 lines (48 loc) 4.85 kB
"use strict"; 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