UNPKG

@glimmer/compiler

Version:
202 lines (154 loc) 14.7 kB
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } import { OptionalList } from './list'; var ResultImpl = /*#__PURE__*/function () { function ResultImpl() {} ResultImpl.all = function all() { var out = []; for (var _len = arguments.length, results = new Array(_len), _key = 0; _key < _len; _key++) { results[_key] = arguments[_key]; } for (var _i = 0, _results = results; _i < _results.length; _i++) { var result = _results[_i]; if (result.isErr) { return result.cast(); } else { out.push(result.value); } } return Ok(out); }; return ResultImpl; }(); export var Result = ResultImpl; var OkImpl = /*#__PURE__*/function (_ResultImpl) { _inheritsLoose(OkImpl, _ResultImpl); function OkImpl(value) { var _this; _this = _ResultImpl.call(this) || this; _this.value = value; _this.isOk = true; _this.isErr = false; return _this; } var _proto = OkImpl.prototype; _proto.expect = function expect(_message) { return this.value; }; _proto.ifOk = function ifOk(callback) { callback(this.value); return this; }; _proto.andThen = function andThen(callback) { return callback(this.value); }; _proto.mapOk = function mapOk(callback) { return Ok(callback(this.value)); }; _proto.ifErr = function ifErr(_callback) { return this; }; _proto.mapErr = function mapErr(_callback) { return this; }; return OkImpl; }(ResultImpl); var ErrImpl = /*#__PURE__*/function (_ResultImpl2) { _inheritsLoose(ErrImpl, _ResultImpl2); function ErrImpl(reason) { var _this2; _this2 = _ResultImpl2.call(this) || this; _this2.reason = reason; _this2.isOk = false; _this2.isErr = true; return _this2; } var _proto2 = ErrImpl.prototype; _proto2.expect = function expect(message) { throw new Error(message || 'expected an Ok, got Err'); }; _proto2.andThen = function andThen(_callback) { return this.cast(); }; _proto2.mapOk = function mapOk(_callback) { return this.cast(); }; _proto2.ifOk = function ifOk(_callback) { return this; }; _proto2.mapErr = function mapErr(callback) { return Err(callback(this.reason)); }; _proto2.ifErr = function ifErr(callback) { callback(this.reason); return this; }; _proto2.cast = function cast() { return this; }; return ErrImpl; }(ResultImpl); export function isResult(input) { return input instanceof ResultImpl; } export function intoResult(input) { if (isResult(input)) { return input; } else { return Ok(input); } } export function Ok(value) { return new OkImpl(value); } export function Err(reason) { return new ErrImpl(reason); } export var MapIntoResultArray = /*#__PURE__*/function () { function MapIntoResultArray(items) { this.items = items; } var _proto3 = MapIntoResultArray.prototype; _proto3.map = function map(callback) { var out = new ResultArray(); for (var _iterator = _createForOfIteratorHelperLoose(this.items), _step; !(_step = _iterator()).done;) { var item = _step.value; out.add(callback(item)); } return out.toArray(); }; return MapIntoResultArray; }(); export var ResultArray = /*#__PURE__*/function () { function ResultArray(items) { if (items === void 0) { items = []; } this.items = items; } var _proto4 = ResultArray.prototype; _proto4.add = function add(item) { this.items.push(item); }; _proto4.toArray = function toArray() { var err = this.items.filter(function (item) { return item instanceof ErrImpl; })[0]; if (err !== undefined) { return err.cast(); } else { return Ok(this.items.map(function (item) { return item.value; })); } }; _proto4.toOptionalList = function toOptionalList() { return this.toArray().mapOk(function (arr) { return OptionalList(arr); }); }; return ResultArray; }(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9zaGFyZWQvcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBQSxZQUFBLFFBQUEsUUFBQTs7SUFFQSxVOzs7YUFDRSxHLEdBQUEsZUFBcUQ7QUFDbkQsUUFBSSxHQUFHLEdBQVAsRUFBQTs7QUFEbUQsc0NBQXJELE9BQXFEO0FBQXJELE1BQUEsT0FBcUQ7QUFBQTs7QUFHbkQsZ0NBQUEsT0FBQSw4QkFBNEI7QUFBdkIsVUFBSSxNQUFULGVBQUs7O0FBQ0gsVUFBSSxNQUFNLENBQVYsS0FBQSxFQUFrQjtBQUNoQixlQUFPLE1BQU0sQ0FBYixJQUFPLEVBQVA7QUFERixPQUFBLE1BRU87QUFDTCxRQUFBLEdBQUcsQ0FBSCxJQUFBLENBQVMsTUFBTSxDQUFmLEtBQUE7QUFDRDtBQUNGOztBQUVELFdBQU8sRUFBRSxDQUFULEdBQVMsQ0FBVDtBQUNELEc7Ozs7O0FBT0gsT0FBTyxJQUFNLE1BQU0sR0FBWixVQUFBOztJQUVQLE07OztBQUlFLGtCQUFBLEtBQUEsRUFBNkI7QUFBQTs7QUFDM0I7QUFEbUIsVUFBQSxLQUFBLEdBQUEsS0FBQTtBQUhaLFVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxVQUFBLEtBQUEsR0FBQSxLQUFBO0FBRW9CO0FBRTVCOzs7O1NBRUQsTSxHQUFBLGdCQUFNLFFBQU4sRUFBd0I7QUFDdEIsV0FBTyxLQUFQLEtBQUE7QUFDRCxHOztTQUVELEksR0FBQSxjQUFJLFFBQUosRUFBaUM7QUFDL0IsSUFBQSxRQUFRLENBQUMsS0FBVCxLQUFRLENBQVI7QUFDQSxXQUFBLElBQUE7QUFDRCxHOztTQUVELE8sR0FBQSxpQkFBTyxRQUFQLEVBQTRDO0FBQzFDLFdBQU8sUUFBUSxDQUFDLEtBQWhCLEtBQWUsQ0FBZjtBQUNELEc7O1NBRUQsSyxHQUFBLGVBQUssUUFBTCxFQUFrQztBQUNoQyxXQUFPLEVBQUUsQ0FBQyxRQUFR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QUFFQSxRQUFJLEdBQUcsS0FBUCxTQUFBLEVBQXVCO0FBQ3JCLGFBQU8sR0FBRyxDQUFWLElBQU8sRUFBUDtBQURGLEtBQUEsTUFFTztBQUNMLGFBQU8sRUFBRSxDQUFFLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZ0MsVUFBQSxJQUFEO0FBQUEsZUFBVSxJQUFJLENBQXhELEtBQTBDO0FBQUEsT0FBL0IsQ0FBRixDQUFUO0FBQ0Q7QUFDRixHQWZIOztBQUFBLFVBaUJFLGNBakJGLEdBaUJFLDBCQUFjO0FBQ1osV0FBTyxLQUFBLE9BQUEsR0FBQSxLQUFBLENBQXNCLFVBQUEsR0FBRDtBQUFBLGFBQVMsWUFBWSxDQUFqRCxHQUFpRCxDQUFyQjtBQUFBLEtBQXJCLENBQVA7QUFDRCxHQW5CSDs7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2xpbW1lclN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgQW55T3B0aW9uYWxMaXN0LCBPcHRpb25hbExpc3QgfSBmcm9tICcuL2xpc3QnO1xuXG5hYnN0cmFjdCBjbGFzcyBSZXN1bHRJbXBsPFQ+IHtcbiAgc3RhdGljIGFsbDxUIGV4dGVuZHMgUmVzdWx0PHVua25vd24+W10+KC4uLnJlc3VsdHM6IFQpOiBNYXBBbGw8VD4ge1xuICAgIGxldCBvdXQ6IHVua25vd25bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGlmIChyZXN1bHQuaXNFcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5jYXN0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXQucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPayhvdXQgYXMgTWFwQWxsT2s8VD4pO1xuICB9XG5cbiAgYWJzdHJhY3QgbWFwT2s8VT4oY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gVSk6IFJlc3VsdDxVPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNPazogYm9vbGVhbjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNFcnI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBSZXN1bHQgPSBSZXN1bHRJbXBsO1xuXG5jbGFzcyBPa0ltcGw8VD4gZXh0ZW5kcyBSZXN1bHRJbXBsPFQ+IHtcbiAgcmVhZG9ubHkgaXNPayA9IHRydWU7XG4gIHJlYWRvbmx5IGlzRXJyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgdmFsdWU6IFQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXhwZWN0KF9tZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBpZk9rKGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICBjYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFuZFRoZW48VT4oY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gUmVzdWx0PFU+KTogUmVzdWx0PFU+IHtcbiAgICByZXR1cm4gY2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gIH1cblxuICBtYXBPazxVPihjYWxsYmFjazogKHZhbHVlOiBUKSA9PiBVKTogUmVzdWx0PFU+IHtcbiAgICByZXR1cm4gT2soY2FsbGJhY2sodGhpcy52YWx1ZSkpO1xuICB9XG5cbiAgaWZFcnIoX2NhbGxiYWNrOiAodmFsdWU6IEdsaW1tZXJTeW50YXhFcnJvcikgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWFwRXJyKF9jYWxsYmFjazogKHZhbHVlOiBHbGltbWVyU3ludGF4RXJyb3IpID0+IEdsaW1tZXJTeW50YXhFcnJvcik6IFJlc3VsdDxUPiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgRXJySW1wbDxUPiBleHRlbmRzIFJlc3VsdEltcGw8VD4ge1xuICByZWFkb25seSBpc09rID0gZmFsc2U7XG4gIHJlYWRvbmx5IGlzRXJyID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSByZWFzb246IEdsaW1tZXJTeW50YXhFcnJvcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBleHBlY3QobWVzc2FnZT86IHN0cmluZyk6IFQge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlIHx8ICdleHBlY3RlZCBhbiBPaywgZ290IEVycicpO1xuICB9XG5cbiAgYW5kVGhlbjxVPihfY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gUmVzdWx0PFU+KTogUmVzdWx0PFU+IHtcbiAgICByZXR1cm4gdGhpcy5jYXN0PFU+KCk7XG4gIH1cblxuICBtYXBPazxVPihfY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gVSk6IFJlc3VsdDxVPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzdDxVPigpO1xuICB9XG5cbiAgaWZPayhfY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWFwRXJyKGNhbGxiYWNrOiAodmFsdWU6IEdsaW1tZXJTeW50YXhFcnJvcikgPT4gR2xpbW1lclN5bnRheEVycm9yKTogUmVzdWx0PFQ+IHtcbiAgICByZXR1cm4gRXJyKGNhbGxiYWNrKHRoaXMucmVhc29uKSk7XG4gIH1cblxuICBpZkVycihjYWxsYmFjazogKHZhbHVlOiBHbGltbWVyU3ludGF4RXJyb3IpID0+IHZvaWQpOiB0aGlzIHtcbiAgICBjYWxsYmFjayh0aGlzLnJlYXNvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjYXN0PFU+KCk6IFJlc3VsdDxVPiB7XG4gICAgcmV0dXJuICh0aGlzIGFzIHVua25vd24pIGFzIFJlc3VsdDxVPjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXN1bHQ8VD4oaW5wdXQ6IE1heWJlUmVzdWx0PFQ+KTogaW5wdXQgaXMgUmVzdWx0PFQ+IHtcbiAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgUmVzdWx0SW1wbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludG9SZXN1bHQ8VD4oaW5wdXQ6IE1heWJlUmVzdWx0PFQ+KTogUmVzdWx0PFQ+IHtcbiAgaWYgKGlzUmVzdWx0KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gT2soaW5wdXQpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxUPiA9IE9rSW1wbDxUPiB8IEVyckltcGw8VD47XG5cbnR5cGUgTWFwQWxsT2s8VCBleHRlbmRzIFJlc3VsdDx1bmtub3duPltdPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF06IFRbUF0gZXh0ZW5kcyBSZXN1bHQ8aW5mZXIgSW5uZXI+ID8gSW5uZXIgOiBuZXZlcjtcbn07XG5cbnR5cGUgTWFwQWxsPFQgZXh0ZW5kcyBSZXN1bHQ8dW5rbm93bj5bXT4gPSBSZXN1bHQ8TWFwQWxsT2s8VD4+O1xuXG5leHBvcnQgZnVuY3Rpb24gT2s8VD4odmFsdWU6IFQpOiBSZXN1bHQ8VD4ge1xuICByZXR1cm4gbmV3IE9rSW1wbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIE9rPFQ+ID0gT2tJbXBsPFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gRXJyPFQ+KHJlYXNvbjogR2xpbW1lclN5bnRheEVycm9yKTogUmVzdWx0PFQ+IHtcbiAgcmV0dXJuIG5ldyBFcnJJbXBsKHJlYXNvbik7XG59XG5cbmV4cG9ydCB0eXBlIEVycjxUPiA9IEVyckltcGw8VD47XG5cbmV4cG9ydCB0eXBlIE1heWJlUmVzdWx0PFQ+ID0gVCB8IFJlc3VsdDxUPjtcblxuZXhwb3J0IGNsYXNzIE1hcEludG9SZXN1bHRBcnJheTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaXRlbXM6IFRbXSkge31cblxuICBtYXA8VT4oY2FsbGJhY2s6IChpdGVtOiBUKSA9PiBSZXN1bHQ8VT4pOiBSZXN1bHQ8VVtdPiB7XG4gICAgbGV0IG91dCA9IG5ldyBSZXN1bHRBcnJheTxVPigpO1xuXG4gICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICBvdXQuYWRkKGNhbGxiYWNrKGl0ZW0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnRvQXJyYXkoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzdWx0QXJyYXk8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGl0ZW1zOiBSZXN1bHQ8VD5bXSA9IFtdKSB7fVxuXG4gIGFkZChpdGVtOiBSZXN1bHQ8VD4pOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG4gIH1cblxuICB0b0FycmF5KCk6IFJlc3VsdDxUW10+IHtcbiAgICBsZXQgZXJyID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEVyckltcGw8VD4gPT4gaXRlbSBpbnN0YW5jZW9mIEVyckltcGwpWzBdO1xuXG4gICAgaWYgKGVyciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZXJyLmNhc3Q8VFtdPigpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gT2soKHRoaXMuaXRlbXMgYXMgT2tJbXBsPFQ+W10pLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHRvT3B0aW9uYWxMaXN0KCk6IFJlc3VsdDxBbnlPcHRpb25hbExpc3Q8VD4+IHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubWFwT2soKGFycikgPT4gT3B0aW9uYWxMaXN0KGFycikpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9