@glimmer/compiler
Version:
173 lines (132 loc) • 11.8 kB
JavaScript
"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=