UNPKG

@typed/future

Version:
33 lines 1.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Future = void 0; const disposable_1 = require("@typed/disposable"); const either_1 = require("@typed/either"); const env_1 = require("@typed/env"); const lambda_1 = require("@typed/lambda"); var Future; (function (Future) { Future.of = (value) => env_1.Pure.of(either_1.Either.of(value)); Future.create = (fn) => (e) => env_1.Resume.create((cb) => { const ifNotResolved = createIfNotResolved(); return fn(ifNotResolved(lambda_1.pipe(either_1.Left.of, cb)), ifNotResolved(lambda_1.pipe(either_1.Right.of, cb)), e); }); Future.fromPromise = (promise) => Future.create((reject, resolve) => { const disposable = disposable_1.Disposable.lazy(); promise().then((a) => disposable.addDisposable(resolve(a)), (e) => disposable.addDisposable(reject(e))); return disposable; }); })(Future = exports.Future || (exports.Future = {})); function createIfNotResolved() { let resolved = false; return (fn) => { return (value) => { if (!resolved) { resolved = true; return fn(value); } return disposable_1.Disposable.None; }; }; } //# sourceMappingURL=Future.js.map