@glimmer/util
Version:
Common utilities used in Glimmer
36 lines (33 loc) • 3.63 kB
JavaScript
export function isPresent(list) {
return list.length > 0;
}
export function ifPresent(list, ifPresent, otherwise) {
if (isPresent(list)) {
return ifPresent(list);
} else {
return otherwise();
}
}
export function toPresentOption(list) {
if (isPresent(list)) {
return list;
} else {
return null;
}
}
export function assertPresent(list, message = `unexpected empty list`) {
if (!isPresent(list)) {
throw new Error(message);
}
}
export function mapPresent(list, callback) {
if (list === null) {
return null;
}
let out = [];
for (let item of list) {
out.push(callback(item));
}
return out;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3ByZXNlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTSxTQUFVLFNBQVYsQ0FBdUIsSUFBdkIsRUFBeUM7QUFDN0MsU0FBTyxJQUFJLENBQUMsTUFBTCxHQUFjLENBQXJCO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsU0FBVixDQUNKLElBREksRUFFSixTQUZJLEVBR0osU0FISSxFQUdjO0FBRWxCLE1BQUksU0FBUyxDQUFDLElBQUQsQ0FBYixFQUFxQjtBQUNuQixXQUFPLFNBQVMsQ0FBQyxJQUFELENBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBTyxTQUFTLEVBQWhCO0FBQ0Q7QUFDRjtBQUVELE9BQU0sU0FBVSxlQUFWLENBQTZCLElBQTdCLEVBQXNDO0FBQzFDLE1BQUksU0FBUyxDQUFDLElBQUQsQ0FBYixFQUFxQjtBQUNuQixXQUFPLElBQVA7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPLElBQVA7QUFDRDtBQUNGO0FBRUQsT0FBTSxTQUFVLGFBQVYsQ0FDSixJQURJLEVBRUosT0FBTyxHQUFHLHVCQUZOLEVBRTZCO0FBRWpDLE1BQUksQ0FBQyxTQUFTLENBQUMsSUFBRCxDQUFkLEVBQXNCO0FBQ3BCLFVBQU0sSUFBSSxLQUFKLENBQVUsT0FBVixDQUFOO0FBQ0Q7QUFDRjtBQU9ELE9BQU0sU0FBVSxVQUFWLENBQ0osSUFESSxFQUVKLFFBRkksRUFFcUI7QUFFekIsTUFBSSxJQUFJLEtBQUssSUFBYixFQUFtQjtBQUNqQixXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJLEdBQUcsR0FBUSxFQUFmOztBQUVBLE9BQUssSUFBSSxJQUFULElBQWlCLElBQWpCLEVBQXVCO0FBQ3JCLElBQUEsR0FBRyxDQUFDLElBQUosQ0FBUyxRQUFRLENBQUMsSUFBRCxDQUFqQjtBQUNEOztBQUVELFNBQU8sR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uLCBQcmVzZW50QXJyYXkgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudDxUPihsaXN0OiByZWFkb25seSBUW10pOiBsaXN0IGlzIFByZXNlbnRBcnJheTxUPiB7XG4gIHJldHVybiBsaXN0Lmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZlByZXNlbnQ8VCwgVSwgVj4oXG4gIGxpc3Q6IFRbXSxcbiAgaWZQcmVzZW50OiAoaW5wdXQ6IFByZXNlbnRBcnJheTxUPikgPT4gVSxcbiAgb3RoZXJ3aXNlOiAoKSA9PiBWXG4pOiBVIHwgViB7XG4gIGlmIChpc1ByZXNlbnQobGlzdCkpIHtcbiAgICByZXR1cm4gaWZQcmVzZW50KGxpc3QpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvdGhlcndpc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QcmVzZW50T3B0aW9uPFQ+KGxpc3Q6IFRbXSk6IE9wdGlvbjxQcmVzZW50QXJyYXk8VD4+IHtcbiAgaWYgKGlzUHJlc2VudChsaXN0KSkge1xuICAgIHJldHVybiBsaXN0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQcmVzZW50PFQ+KFxuICBsaXN0OiBUW10sXG4gIG1lc3NhZ2UgPSBgdW5leHBlY3RlZCBlbXB0eSBsaXN0YFxuKTogYXNzZXJ0cyBsaXN0IGlzIFByZXNlbnRBcnJheTxUPiB7XG4gIGlmICghaXNQcmVzZW50KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBQcmVzZW50PFQsIFU+KGxpc3Q6IFByZXNlbnRBcnJheTxUPiwgY2FsbGJhY2s6IChpbnB1dDogVCkgPT4gVSk6IFByZXNlbnRBcnJheTxVPjtcbmV4cG9ydCBmdW5jdGlvbiBtYXBQcmVzZW50PFQsIFU+KFxuICBsaXN0OiBQcmVzZW50QXJyYXk8VD4gfCBudWxsLFxuICBjYWxsYmFjazogKGlucHV0OiBUKSA9PiBVXG4pOiBQcmVzZW50QXJyYXk8VT4gfCBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFByZXNlbnQ8VCwgVT4oXG4gIGxpc3Q6IFByZXNlbnRBcnJheTxUPiB8IG51bGwsXG4gIGNhbGxiYWNrOiAoaW5wdXQ6IFQpID0+IFVcbik6IFByZXNlbnRBcnJheTxVPiB8IG51bGwge1xuICBpZiAobGlzdCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGxldCBvdXQ6IFVbXSA9IFtdO1xuXG4gIGZvciAobGV0IGl0ZW0gb2YgbGlzdCkge1xuICAgIG91dC5wdXNoKGNhbGxiYWNrKGl0ZW0pKTtcbiAgfVxuXG4gIHJldHVybiBvdXQgYXMgUHJlc2VudEFycmF5PFU+O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==