UNPKG

@glimmer/compiler

Version:
75 lines (60 loc) 6.22 kB
import { isPresent, mapPresent } from '@glimmer/util'; export class PresentList { constructor(list) { this.list = list; } toArray() { return this.list; } map(callback) { let result = mapPresent(this.list, callback); return new PresentList(result); } filter(predicate) { let out = []; for (let item of this.list) { if (predicate(item)) { out.push(item); } } return OptionalList(out); } toPresentArray() { return this.list; } into({ ifPresent }) { return ifPresent(this); } } export class EmptyList { constructor() { this.list = []; } map(_callback) { return new EmptyList(); } filter(_predicate) { return new EmptyList(); } toArray() { return this.list; } toPresentArray() { return null; } into({ ifEmpty }) { return ifEmpty(); } } // export type OptionalList<T> = PresentList<T> | EmptyList<T>; export function OptionalList(value) { if (isPresent(value)) { return new PresentList(value); } else { return new EmptyList(); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9zaGFyZWQvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFNBQVQsRUFBb0IsVUFBcEIsUUFBc0MsZUFBdEM7QUFZQSxPQUFNLE1BQU8sV0FBUCxDQUFrQjtBQUN0QixFQUFBLFdBQUEsQ0FBcUIsSUFBckIsRUFBMEM7QUFBckIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUF5Qjs7QUFFOUMsRUFBQSxPQUFPLEdBQUE7QUFDTCxXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsR0FBRyxDQUFJLFFBQUosRUFBNkI7QUFDOUIsUUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBTixFQUFZLFFBQVosQ0FBdkI7QUFDQSxXQUFPLElBQUksV0FBSixDQUFnQixNQUFoQixDQUFQO0FBQ0Q7O0FBRUQsRUFBQSxNQUFNLENBQWMsU0FBZCxFQUFpRDtBQUNyRCxRQUFJLEdBQUcsR0FBUSxFQUFmOztBQUVBLFNBQUssSUFBSSxJQUFULElBQWlCLEtBQUssSUFBdEIsRUFBNEI7QUFDMUIsVUFBSSxTQUFTLENBQUMsSUFBRCxDQUFiLEVBQXFCO0FBQ25CLFFBQUEsR0FBRyxDQUFDLElBQUosQ0FBUyxJQUFUO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLFlBQVksQ0FBQyxHQUFELENBQW5CO0FBQ0Q7O0FBRUQsRUFBQSxjQUFjLEdBQUE7QUFDWixXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsSUFBSSxDQUFPO0FBQUUsSUFBQTtBQUFGLEdBQVAsRUFBbUY7QUFDckYsV0FBTyxTQUFTLENBQUMsSUFBRCxDQUFoQjtBQUNEOztBQTlCcUI7QUFpQ3hCLE9BQU0sTUFBTyxTQUFQLENBQWdCO0FBQXRCLEVBQUEsV0FBQSxHQUFBO0FBQ1csU0FBQSxJQUFBLEdBQVksRUFBWjtBQXFCVjs7QUFuQkMsRUFBQSxHQUFHLENBQUksU0FBSixFQUE4QjtBQUMvQixXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxNQUFNLENBQWMsVUFBZCxFQUFrRDtBQUN0RCxXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxPQUFPLEdBQUE7QUFDTCxXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsY0FBYyxHQUFBO0FBQ1osV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsRUFBQSxJQUFJLENBQU87QUFBRSxJQUFBO0FBQUYsR0FBUCxFQUFpRjtBQUNuRixXQUFPLE9BQU8sRUFBZDtBQUNEOztBQXJCbUIsQyxDQXdCdEI7O0FBRUEsT0FBTSxTQUFVLFlBQVYsQ0FBMEIsS0FBMUIsRUFBNkM7QUFDakQsTUFBSSxTQUFTLENBQUMsS0FBRCxDQUFiLEVBQXNCO0FBQ3BCLFdBQU8sSUFBSSxXQUFKLENBQWdCLEtBQWhCLENBQVA7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiwgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1ByZXNlbnQsIG1hcFByZXNlbnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbExpc3Q8VD4ge1xuICBtYXA8VT4oY2FsbGJhY2s6IChpbnB1dDogVCkgPT4gVSk6IE1hcExpc3Q8VCwgVSwgQW55T3B0aW9uYWxMaXN0PFQ+PjtcbiAgZmlsdGVyPFMgZXh0ZW5kcyBUPihcbiAgICBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gdmFsdWUgaXMgU1xuICApOiBBbnlPcHRpb25hbExpc3Q8Uz47XG4gIHRvQXJyYXkoKTogVFtdO1xuICB0b1ByZXNlbnRBcnJheSgpOiBPcHRpb248UHJlc2VudEFycmF5PFQ+PjtcbiAgaW50bzxVLCBWPihvcHRpb25zOiB7IGlmUHJlc2VudDogKGFycmF5OiBQcmVzZW50TGlzdDxUPikgPT4gVTsgaWZFbXB0eTogKCkgPT4gViB9KTogVSB8IFY7XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVzZW50TGlzdDxUPiBpbXBsZW1lbnRzIE9wdGlvbmFsTGlzdDxUPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGxpc3Q6IFByZXNlbnRBcnJheTxUPikge31cblxuICB0b0FycmF5KCk6IFByZXNlbnRBcnJheTxUPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdDtcbiAgfVxuXG4gIG1hcDxVPihjYWxsYmFjazogKGlucHV0OiBUKSA9PiBVKTogTWFwTGlzdDxULCBVLCBQcmVzZW50TGlzdDxUPj4ge1xuICAgIGxldCByZXN1bHQgPSBtYXBQcmVzZW50KHRoaXMubGlzdCwgY2FsbGJhY2spO1xuICAgIHJldHVybiBuZXcgUHJlc2VudExpc3QocmVzdWx0KSBhcyBNYXBMaXN0PFQsIFUsIHRoaXM+O1xuICB9XG5cbiAgZmlsdGVyPFMgZXh0ZW5kcyBUPihwcmVkaWNhdGU6ICh2YWx1ZTogVCkgPT4gdmFsdWUgaXMgUyk6IEFueU9wdGlvbmFsTGlzdDxTPiB7XG4gICAgbGV0IG91dDogU1tdID0gW107XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShpdGVtKSkge1xuICAgICAgICBvdXQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT3B0aW9uYWxMaXN0KG91dCk7XG4gIH1cblxuICB0b1ByZXNlbnRBcnJheSgpOiBQcmVzZW50QXJyYXk8VD4ge1xuICAgIHJldHVybiB0aGlzLmxpc3Q7XG4gIH1cblxuICBpbnRvPFUsIFY+KHsgaWZQcmVzZW50IH06IHsgaWZQcmVzZW50OiAoYXJyYXk6IFByZXNlbnRMaXN0PFQ+KSA9PiBVOyBpZkVtcHR5OiAoKSA9PiBWIH0pOiBVIHwgViB7XG4gICAgcmV0dXJuIGlmUHJlc2VudCh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW1wdHlMaXN0PFQ+IGltcGxlbWVudHMgT3B0aW9uYWxMaXN0PFQ+IHtcbiAgcmVhZG9ubHkgbGlzdDogVFtdID0gW107XG5cbiAgbWFwPFU+KF9jYWxsYmFjazogKGlucHV0OiBUKSA9PiBVKTogTWFwTGlzdDxULCBVLCBFbXB0eUxpc3Q8VD4+IHtcbiAgICByZXR1cm4gbmV3IEVtcHR5TGlzdCgpIGFzIE1hcExpc3Q8VCwgVSwgdGhpcz47XG4gIH1cblxuICBmaWx0ZXI8UyBleHRlbmRzIFQ+KF9wcmVkaWNhdGU6ICh2YWx1ZTogVCkgPT4gdmFsdWUgaXMgUyk6IEFueU9wdGlvbmFsTGlzdDxTPiB7XG4gICAgcmV0dXJuIG5ldyBFbXB0eUxpc3QoKTtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5saXN0O1xuICB9XG5cbiAgdG9QcmVzZW50QXJyYXkoKTogT3B0aW9uPFByZXNlbnRBcnJheTxUPj4ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW50bzxVLCBWPih7IGlmRW1wdHkgfTogeyBpZlByZXNlbnQ6IChhcnJheTogUHJlc2VudExpc3Q8VD4pID0+IFU7IGlmRW1wdHk6ICgpID0+IFYgfSk6IFUgfCBWIHtcbiAgICByZXR1cm4gaWZFbXB0eSgpO1xuICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIE9wdGlvbmFsTGlzdDxUPiA9IFByZXNlbnRMaXN0PFQ+IHwgRW1wdHlMaXN0PFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9uYWxMaXN0PFQ+KHZhbHVlOiByZWFkb25seSBUW10pOiBBbnlPcHRpb25hbExpc3Q8VD4ge1xuICBpZiAoaXNQcmVzZW50KHZhbHVlKSkge1xuICAgIHJldHVybiBuZXcgUHJlc2VudExpc3QodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRW1wdHlMaXN0PFQ+KCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQW55T3B0aW9uYWxMaXN0PFQ+ID0gKFByZXNlbnRMaXN0PFQ+IHwgRW1wdHlMaXN0PFQ+KSAmIE9wdGlvbmFsTGlzdDxUPjtcblxuZXhwb3J0IHR5cGUgTWFwTGlzdDxULCBVLCBMIGV4dGVuZHMgT3B0aW9uYWxMaXN0PFQ+PiA9IEwgZXh0ZW5kcyBQcmVzZW50TGlzdDxUPlxuICA/IFByZXNlbnRMaXN0PFU+XG4gIDogTCBleHRlbmRzIEVtcHR5TGlzdDxUPlxuICA/IEVtcHR5TGlzdDxVPlxuICA6IG5ldmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==