grind-assets
Version:
Asset management for Grind
73 lines (53 loc) • 5.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.optional = optional;
var _grindFramework = require("grind-framework");
function _isnil(val) { return val === null || typeof val === 'undefined'; }
const loadOptional = require('optional');
const semver = require('semver');
const {
readFileSync
} = require('fs');
const {
sync: pkgUp
} = require('pkg-up');
function optional(pkgName, version = null) {
return {
pkg: null,
name: pkgName,
resolved: null,
assert() {
return this.resolve(true);
},
resolve(isFatal = false) {
if (typeof this.resolved === 'boolean') {
return this.resolved;
}
this.pkg = loadOptional(pkgName);
if (this.pkg && this.pkg.default) {
this.pkg = this.pkg.default;
}
this.resolved = !_isnil(this.pkg);
let errorPkgName = pkgName;
if (this.resolved && !_isnil(version)) {
this.resolved = semver.satisfies(JSON.parse(readFileSync(pkgUp({
cwd: require.resolve(pkgName)
}))).version, version);
if (!this.resolved) {
errorPkgName += `@${version}`;
}
}
if (!this.resolved) {
const error = new _grindFramework.MissingPackageError(errorPkgName, 'dev');
if (isFatal) {
throw error;
}
Log.error(error.message, 'Unable to process.');
}
return this.resolved;
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdXBwb3J0L29wdGlvbmFsLmpzIl0sIm5hbWVzIjpbImxvYWRPcHRpb25hbCIsInJlcXVpcmUiLCJzZW12ZXIiLCJyZWFkRmlsZVN5bmMiLCJzeW5jIiwicGtnVXAiLCJvcHRpb25hbCIsInBrZ05hbWUiLCJ2ZXJzaW9uIiwicGtnIiwibmFtZSIsInJlc29sdmVkIiwiYXNzZXJ0IiwicmVzb2x2ZSIsImlzRmF0YWwiLCJkZWZhdWx0IiwiZXJyb3JQa2dOYW1lIiwic2F0aXNmaWVzIiwiSlNPTiIsInBhcnNlIiwiY3dkIiwiZXJyb3IiLCJNaXNzaW5nUGFja2FnZUVycm9yIiwiTG9nIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUE1Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFtQkYsT0FBTyxDQUFDLElBQUQsQ0FBaEM7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBa0JKLE9BQU8sQ0FBQyxRQUFELENBQS9COztBQUVPLFNBQVNLLFFBQVQsQ0FBa0JDLE9BQWxCLEVBQTJCQyxPQUFPLEdBQUcsSUFBckMsRUFBMkM7QUFDakQsU0FBTztBQUNOQyxJQUFBQSxHQUFHLEVBQUUsSUFEQztBQUVOQyxJQUFBQSxJQUFJLEVBQUVILE9BRkE7QUFHTkksSUFBQUEsUUFBUSxFQUFFLElBSEo7O0FBS05DLElBQUFBLE1BQU0sR0FBRztBQUNSLGFBQU8sS0FBS0MsT0FBTCxDQUFhLElBQWIsQ0FBUDtBQUNBLEtBUEs7O0FBU05BLElBQUFBLE9BQU8sQ0FBQ0MsT0FBTyxHQUFHLEtBQVgsRUFBa0I7QUFDeEIsVUFBSSxPQUFPLEtBQUtILFFBQVosS0FBeUIsU0FBN0IsRUFBd0M7QUFDdkMsZUFBTyxLQUFLQSxRQUFaO0FBQ0E7O0FBRUQsV0FBS0YsR0FBTCxHQUFXVCxZQUFZLENBQUNPLE9BQUQsQ0FBdkI7O0FBRUEsVUFBSSxLQUFLRSxHQUFMLElBQVksS0FBS0EsR0FBTCxDQUFTTSxPQUF6QixFQUFrQztBQUNqQyxhQUFLTixHQUFMLEdBQVcsS0FBS0EsR0FBTCxDQUFTTSxPQUFwQjtBQUNBOztBQUVELFdBQUtKLFFBQUwsR0FBZ0IsUUFBQyxLQUFLRixHQUFOLENBQWhCO0FBQ0EsVUFBSU8sWUFBWSxHQUFHVCxPQUFuQjs7QUFFQSxVQUFJLEtBQUtJLFFBQUwsSUFBaUIsUUFBQ0gsT0FBRCxDQUFyQixFQUFxQztBQUNwQyxhQUFLRyxRQUFMLEdBQWdCVCxNQUFNLENBQUNlLFNBQVAsQ0FDZkMsSUFBSSxDQUFDQyxLQUFMLENBQVdoQixZQUFZLENBQUNFLEtBQUssQ0FBQztBQUFFZSxVQUFBQSxHQUFHLEVBQUVuQixPQUFPLENBQUNZLE9BQVIsQ0FBZ0JOLE9BQWhCO0FBQVAsU0FBRCxDQUFOLENBQXZCLEVBQW1FQyxPQURwRCxFQUVmQSxPQUZlLENBQWhCOztBQUtBLFlBQUksQ0FBQyxLQUFLRyxRQUFWLEVBQW9CO0FBQ25CSyxVQUFBQSxZQUFZLElBQUssSUFBR1IsT0FBUSxFQUE1QjtBQUNBO0FBQ0Q7O0FBRUQsVUFBSSxDQUFDLEtBQUtHLFFBQVYsRUFBb0I7QUFDbkIsY0FBTVUsS0FBSyxHQUFHLElBQUlDLG1DQUFKLENBQXdCTixZQUF4QixFQUFzQyxLQUF0QyxDQUFkOztBQUVBLFlBQUlGLE9BQUosRUFBYTtBQUNaLGdCQUFNTyxLQUFOO0FBQ0E7O0FBRURFLFFBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVQSxLQUFLLENBQUNHLE9BQWhCLEVBQXlCLG9CQUF6QjtBQUNBOztBQUVELGFBQU8sS0FBS2IsUUFBWjtBQUNBOztBQTdDSyxHQUFQO0FBK0NBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlzc2luZ1BhY2thZ2VFcnJvciB9IGZyb20gJ2dyaW5kLWZyYW1ld29yaydcblxuY29uc3QgbG9hZE9wdGlvbmFsID0gcmVxdWlyZSgnb3B0aW9uYWwnKVxuY29uc3Qgc2VtdmVyID0gcmVxdWlyZSgnc2VtdmVyJylcbmNvbnN0IHsgcmVhZEZpbGVTeW5jIH0gPSByZXF1aXJlKCdmcycpXG5jb25zdCB7IHN5bmM6IHBrZ1VwIH0gPSByZXF1aXJlKCdwa2ctdXAnKVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwocGtnTmFtZSwgdmVyc2lvbiA9IG51bGwpIHtcblx0cmV0dXJuIHtcblx0XHRwa2c6IG51bGwsXG5cdFx0bmFtZTogcGtnTmFtZSxcblx0XHRyZXNvbHZlZDogbnVsbCxcblxuXHRcdGFzc2VydCgpIHtcblx0XHRcdHJldHVybiB0aGlzLnJlc29sdmUodHJ1ZSlcblx0XHR9LFxuXG5cdFx0cmVzb2x2ZShpc0ZhdGFsID0gZmFsc2UpIHtcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5yZXNvbHZlZCA9PT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnJlc29sdmVkXG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucGtnID0gbG9hZE9wdGlvbmFsKHBrZ05hbWUpXG5cblx0XHRcdGlmICh0aGlzLnBrZyAmJiB0aGlzLnBrZy5kZWZhdWx0KSB7XG5cdFx0XHRcdHRoaXMucGtnID0gdGhpcy5wa2cuZGVmYXVsdFxuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnJlc29sdmVkID0gIXRoaXMucGtnLmlzTmlsXG5cdFx0XHRsZXQgZXJyb3JQa2dOYW1lID0gcGtnTmFtZVxuXG5cdFx0XHRpZiAodGhpcy5yZXNvbHZlZCAmJiAhdmVyc2lvbi5pc05pbCkge1xuXHRcdFx0XHR0aGlzLnJlc29sdmVkID0gc2VtdmVyLnNhdGlzZmllcyhcblx0XHRcdFx0XHRKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwa2dVcCh7IGN3ZDogcmVxdWlyZS5yZXNvbHZlKHBrZ05hbWUpIH0pKSkudmVyc2lvbixcblx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHQpXG5cblx0XHRcdFx0aWYgKCF0aGlzLnJlc29sdmVkKSB7XG5cdFx0XHRcdFx0ZXJyb3JQa2dOYW1lICs9IGBAJHt2ZXJzaW9ufWBcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRoaXMucmVzb2x2ZWQpIHtcblx0XHRcdFx0Y29uc3QgZXJyb3IgPSBuZXcgTWlzc2luZ1BhY2thZ2VFcnJvcihlcnJvclBrZ05hbWUsICdkZXYnKVxuXG5cdFx0XHRcdGlmIChpc0ZhdGFsKSB7XG5cdFx0XHRcdFx0dGhyb3cgZXJyb3Jcblx0XHRcdFx0fVxuXG5cdFx0XHRcdExvZy5lcnJvcihlcnJvci5tZXNzYWdlLCAnVW5hYmxlIHRvIHByb2Nlc3MuJylcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXMucmVzb2x2ZWRcblx0XHR9LFxuXHR9XG59XG4iXX0=