UNPKG

@tinymce/beehive-flow

Version:

A CLI tool implementing the beehive flow git branching process

55 lines 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.poll = exports.filterMap = exports.parMapRecord = exports.parMap = exports.setError = exports.getOrElse = exports.tryPromise = exports.fail = exports.succeed = exports.optionToPromise = exports.eitherToPromise = void 0; const tslib_1 = require("tslib"); const E = tslib_1.__importStar(require("fp-ts/Either")); const O = tslib_1.__importStar(require("fp-ts/Option")); const EitherUtils = tslib_1.__importStar(require("./EitherUtils")); const ObjUtils = tslib_1.__importStar(require("./ObjUtils")); const Type = tslib_1.__importStar(require("./Type")); const eitherToPromise = (e) => new Promise((resolve, reject) => { E.fold(reject, resolve)(e); }); exports.eitherToPromise = eitherToPromise; const optionToPromise = (o, e) => new Promise((resolve, reject) => { O.fold(() => reject(e), resolve)(o); }); exports.optionToPromise = optionToPromise; const succeed = (a) => Promise.resolve(a); exports.succeed = succeed; const fail = (error) => Promise.reject(errorify(error)); exports.fail = fail; const errorify = (error) => Type.isString(error) ? new Error(error) : error; const tryPromise = (p) => p.then(E.right, E.left); exports.tryPromise = tryPromise; const getOrElse = (p, other) => p.then((x) => x, () => other); exports.getOrElse = getOrElse; const setError = (p, error) => p.catch(() => (0, exports.fail)(error)); exports.setError = setError; const parMap = (input, p) => Promise.all(input.map(p)); exports.parMap = parMap; const parMapRecord = (input, p) => { const keys = Object.keys(input); const mapper = (k) => p(input[k], k).then((b) => [k, b]); return (0, exports.parMap)(keys, mapper).then(ObjUtils.fromPairs); }; exports.parMapRecord = parMapRecord; const filterMap = async (input, p) => (0, exports.parMap)(input, (a) => (0, exports.tryPromise)(p(a))).then(EitherUtils.rights); exports.filterMap = filterMap; const poll = async (fn, timeout, delay) => new Promise((resolve, reject) => { const start = Date.now(); const check = () => { fn().then(resolve, () => { const now = Date.now(); if (now - start > timeout) { reject(new Error('Timeout waiting for condition')); } else { setTimeout(check, delay); } }); }; check(); }); exports.poll = poll; //# sourceMappingURL=PromiseUtils.js.map