UNPKG

@glimmer/compiler

Version:
173 lines (132 loc) 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isResult = isResult; exports.intoResult = intoResult; exports.Ok = Ok; exports.Err = Err; exports.ResultArray = exports.MapIntoResultArray = exports.Result = void 0; var _list = require("./list"); class ResultImpl { static all(...results) { let out = []; for (let result of results) { if (result.isErr) { return result.cast(); } else { out.push(result.value); } } return Ok(out); } } const Result = ResultImpl; exports.Result = Result; class OkImpl extends ResultImpl { constructor(value) { super(); this.value = value; this.isOk = true; this.isErr = false; } expect(_message) { return this.value; } ifOk(callback) { callback(this.value); return this; } andThen(callback) { return callback(this.value); } mapOk(callback) { return Ok(callback(this.value)); } ifErr(_callback) { return this; } mapErr(_callback) { return this; } } class ErrImpl extends ResultImpl { constructor(reason) { super(); this.reason = reason; this.isOk = false; this.isErr = true; } expect(message) { throw new Error(message || 'expected an Ok, got Err'); } andThen(_callback) { return this.cast(); } mapOk(_callback) { return this.cast(); } ifOk(_callback) { return this; } mapErr(callback) { return Err(callback(this.reason)); } ifErr(callback) { callback(this.reason); return this; } cast() { return this; } } function isResult(input) { return input instanceof ResultImpl; } function intoResult(input) { if (isResult(input)) { return input; } else { return Ok(input); } } function Ok(value) { return new OkImpl(value); } function Err(reason) { return new ErrImpl(reason); } class MapIntoResultArray { constructor(items) { this.items = items; } map(callback) { let out = new ResultArray(); for (let item of this.items) { out.add(callback(item)); } return out.toArray(); } } exports.MapIntoResultArray = MapIntoResultArray; class ResultArray { constructor(items = []) { this.items = items; } add(item) { this.items.push(item); } toArray() { let err = this.items.filter(item => item instanceof ErrImpl)[0]; if (err !== undefined) { return err.cast(); } else { return Ok(this.items.map(item => item.value)); } } toOptionalList() { return this.toArray().mapOk(arr => (0, _list.OptionalList)(arr)); } } exports.ResultArray = ResultArray; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9zaGFyZWQvcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBRUEsTUFBQSxVQUFBLENBQXlCO0FBQ3ZCLFNBQUEsR0FBQSxDQUF3QyxHQUF4QyxPQUFBLEVBQXFEO0FBQ25ELFFBQUksR0FBRyxHQUFQLEVBQUE7O0FBRUEsU0FBSyxJQUFMLE1BQUEsSUFBQSxPQUFBLEVBQTRCO0FBQzFCLFVBQUksTUFBTSxDQUFWLEtBQUEsRUFBa0I7QUFDaEIsZUFBTyxNQUFNLENBQWIsSUFBTyxFQUFQO0FBREYsT0FBQSxNQUVPO0FBQ0wsUUFBQSxHQUFHLENBQUgsSUFBQSxDQUFTLE1BQU0sQ0FBZixLQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLEVBQUUsQ0FBVCxHQUFTLENBQVQ7QUFDRDs7QUFic0I7O0FBb0JsQixNQUFNLE1BQU0sR0FBWixVQUFBOzs7QUFFUCxNQUFBLE1BQUEsU0FBQSxVQUFBLENBQXFDO0FBSW5DLEVBQUEsV0FBQSxDQUFBLEtBQUEsRUFBNkI7QUFDM0I7QUFEbUIsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUhaLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBSVI7O0FBRUQsRUFBQSxNQUFNLENBQUEsUUFBQSxFQUFrQjtBQUN0QixXQUFPLEtBQVAsS0FBQTtBQUNEOztBQUVELEVBQUEsSUFBSSxDQUFBLFFBQUEsRUFBNkI7QUFDL0IsSUFBQSxRQUFRLENBQUMsS0FBVCxLQUFRLENBQVI7QUFDQSxXQUFBLElBQUE7QUFDRDs7QUFFRCxFQUFBLE9BQU8sQ0FBQSxRQUFBLEVBQXFDO0FBQzFDLFdBQU8sUUFBUSxDQUFDLEtBQWhCLEtBQWUsQ0FBZjtBQUNEOztBQUVELEVBQUEsS0FBSyxDQUFBLFFBQUEsRUFBNkI7QUFDaEMsV0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQW5CLEtB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RUFBRSxDQUFFLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZ0MsSUFBRCxJQUFVLElBQUksQ0FBeEQsS0FBVyxDQUFGLENBQVQ7QUFDRDtBQUNGOztBQUVELEVBQUEsY0FBYyxHQUFBO0FBQ1osV0FBTyxLQUFBLE9BQUEsR0FBQSxLQUFBLENBQXNCLEdBQUQsSUFBUyx3QkFBckMsR0FBcUMsQ0FBOUIsQ0FBUDtBQUNEOztBQW5CcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHbGltbWVyU3ludGF4RXJyb3IgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuXG5pbXBvcnQgeyBBbnlPcHRpb25hbExpc3QsIE9wdGlvbmFsTGlzdCB9IGZyb20gJy4vbGlzdCc7XG5cbmFic3RyYWN0IGNsYXNzIFJlc3VsdEltcGw8VD4ge1xuICBzdGF0aWMgYWxsPFQgZXh0ZW5kcyBSZXN1bHQ8dW5rbm93bj5bXT4oLi4ucmVzdWx0czogVCk6IE1hcEFsbDxUPiB7XG4gICAgbGV0IG91dDogdW5rbm93bltdID0gW107XG5cbiAgICBmb3IgKGxldCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgaWYgKHJlc3VsdC5pc0Vycikge1xuICAgICAgICByZXR1cm4gcmVzdWx0LmNhc3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dC5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9rKG91dCBhcyBNYXBBbGxPazxUPik7XG4gIH1cblxuICBhYnN0cmFjdCBtYXBPazxVPihjYWxsYmFjazogKHZhbHVlOiBUKSA9PiBVKTogUmVzdWx0PFU+O1xuICBhYnN0cmFjdCByZWFkb25seSBpc09rOiBib29sZWFuO1xuICBhYnN0cmFjdCByZWFkb25seSBpc0VycjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFJlc3VsdCA9IFJlc3VsdEltcGw7XG5cbmNsYXNzIE9rSW1wbDxUPiBleHRlbmRzIFJlc3VsdEltcGw8VD4ge1xuICByZWFkb25seSBpc09rID0gdHJ1ZTtcbiAgcmVhZG9ubHkgaXNFcnIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSB2YWx1ZTogVCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBleHBlY3QoX21lc3NhZ2U/OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGlmT2soY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYW5kVGhlbjxVPihjYWxsYmFjazogKHZhbHVlOiBUKSA9PiBSZXN1bHQ8VT4pOiBSZXN1bHQ8VT4ge1xuICAgIHJldHVybiBjYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG1hcE9rPFU+KGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IFUpOiBSZXN1bHQ8VT4ge1xuICAgIHJldHVybiBPayhjYWxsYmFjayh0aGlzLnZhbHVlKSk7XG4gIH1cblxuICBpZkVycihfY2FsbGJhY2s6ICh2YWx1ZTogR2xpbW1lclN5bnRheEVycm9yKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtYXBFcnIoX2NhbGxiYWNrOiAodmFsdWU6IEdsaW1tZXJTeW50YXhFcnJvcikgPT4gR2xpbW1lclN5bnRheEVycm9yKTogUmVzdWx0PFQ+IHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBFcnJJbXBsPFQ+IGV4dGVuZHMgUmVzdWx0SW1wbDxUPiB7XG4gIHJlYWRvbmx5IGlzT2sgPSBmYWxzZTtcbiAgcmVhZG9ubHkgaXNFcnIgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHJlYXNvbjogR2xpbW1lclN5bnRheEVycm9yKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV4cGVjdChtZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgfHwgJ2V4cGVjdGVkIGFuIE9rLCBnb3QgRXJyJyk7XG4gIH1cblxuICBhbmRUaGVuPFU+KF9jYWxsYmFjazogKHZhbHVlOiBUKSA9PiBSZXN1bHQ8VT4pOiBSZXN1bHQ8VT4ge1xuICAgIHJldHVybiB0aGlzLmNhc3Q8VT4oKTtcbiAgfVxuXG4gIG1hcE9rPFU+KF9jYWxsYmFjazogKHZhbHVlOiBUKSA9PiBVKTogUmVzdWx0PFU+IHtcbiAgICByZXR1cm4gdGhpcy5jYXN0PFU+KCk7XG4gIH1cblxuICBpZk9rKF9jYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtYXBFcnIoY2FsbGJhY2s6ICh2YWx1ZTogR2xpbW1lclN5bnRheEVycm9yKSA9PiBHbGltbWVyU3ludGF4RXJyb3IpOiBSZXN1bHQ8VD4ge1xuICAgIHJldHVybiBFcnIoY2FsbGJhY2sodGhpcy5yZWFzb24pKTtcbiAgfVxuXG4gIGlmRXJyKGNhbGxiYWNrOiAodmFsdWU6IEdsaW1tZXJTeW50YXhFcnJvcikgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNhbGxiYWNrKHRoaXMucmVhc29uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNhc3Q8VT4oKTogUmVzdWx0PFU+IHtcbiAgICByZXR1cm4gKHRoaXMgYXMgdW5rbm93bikgYXMgUmVzdWx0PFU+O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc3VsdDxUPihpbnB1dDogTWF5YmVSZXN1bHQ8VD4pOiBpbnB1dCBpcyBSZXN1bHQ8VD4ge1xuICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBSZXN1bHRJbXBsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50b1Jlc3VsdDxUPihpbnB1dDogTWF5YmVSZXN1bHQ8VD4pOiBSZXN1bHQ8VD4ge1xuICBpZiAoaXNSZXN1bHQoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBPayhpbnB1dCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQ+ID0gT2tJbXBsPFQ+IHwgRXJySW1wbDxUPjtcblxudHlwZSBNYXBBbGxPazxUIGV4dGVuZHMgUmVzdWx0PHVua25vd24+W10+ID0ge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXSBleHRlbmRzIFJlc3VsdDxpbmZlciBJbm5lcj4gPyBJbm5lciA6IG5ldmVyO1xufTtcblxudHlwZSBNYXBBbGw8VCBleHRlbmRzIFJlc3VsdDx1bmtub3duPltdPiA9IFJlc3VsdDxNYXBBbGxPazxUPj47XG5cbmV4cG9ydCBmdW5jdGlvbiBPazxUPih2YWx1ZTogVCk6IFJlc3VsdDxUPiB7XG4gIHJldHVybiBuZXcgT2tJbXBsKHZhbHVlKTtcbn1cblxuZXhwb3J0IHR5cGUgT2s8VD4gPSBPa0ltcGw8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBFcnI8VD4ocmVhc29uOiBHbGltbWVyU3ludGF4RXJyb3IpOiBSZXN1bHQ8VD4ge1xuICByZXR1cm4gbmV3IEVyckltcGwocmVhc29uKTtcbn1cblxuZXhwb3J0IHR5cGUgRXJyPFQ+ID0gRXJySW1wbDxUPjtcblxuZXhwb3J0IHR5cGUgTWF5YmVSZXN1bHQ8VD4gPSBUIHwgUmVzdWx0PFQ+O1xuXG5leHBvcnQgY2xhc3MgTWFwSW50b1Jlc3VsdEFycmF5PFQ+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpdGVtczogVFtdKSB7fVxuXG4gIG1hcDxVPihjYWxsYmFjazogKGl0ZW06IFQpID0+IFJlc3VsdDxVPik6IFJlc3VsdDxVW10+IHtcbiAgICBsZXQgb3V0ID0gbmV3IFJlc3VsdEFycmF5PFU+KCk7XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgIG91dC5hZGQoY2FsbGJhY2soaXRlbSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQudG9BcnJheSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXN1bHRBcnJheTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaXRlbXM6IFJlc3VsdDxUPltdID0gW10pIHt9XG5cbiAgYWRkKGl0ZW06IFJlc3VsdDxUPik6IHZvaWQge1xuICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcbiAgfVxuXG4gIHRvQXJyYXkoKTogUmVzdWx0PFRbXT4ge1xuICAgIGxldCBlcnIgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgRXJySW1wbDxUPiA9PiBpdGVtIGluc3RhbmNlb2YgRXJySW1wbClbMF07XG5cbiAgICBpZiAoZXJyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlcnIuY2FzdDxUW10+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBPaygodGhpcy5pdGVtcyBhcyBPa0ltcGw8VD5bXSkubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgdG9PcHRpb25hbExpc3QoKTogUmVzdWx0PEFueU9wdGlvbmFsTGlzdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5tYXBPaygoYXJyKSA9PiBPcHRpb25hbExpc3QoYXJyKSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=