UNPKG

@effect-ts/system

Version:

Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.

685 lines (553 loc) 14.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Failure", { enumerable: true, get: function () { return _exit.Failure; } }); Object.defineProperty(exports, "Success", { enumerable: true, get: function () { return _exit.Success; } }); exports.ap = ap; exports.ap_ = ap_; exports.as = as; exports.as_ = as_; exports.assertsFailure = assertsFailure; exports.bimap = bimap; exports.bimap_ = bimap_; exports.chain = chain; exports.chain_ = chain_; exports.collectAll = collectAll; exports.collectAllPar = collectAllPar; exports.die = die; exports.exists = exists; exports.exists_ = exists_; exports.fail = fail; exports.failCause = failCause; exports.flatten = flatten; exports.fold = fold; exports.fold_ = fold_; exports.fromEither = fromEither; exports.fromOption = fromOption; exports.getOrElse = getOrElse; exports.getOrElse_ = getOrElse_; exports.halt = halt; exports.interrupt = interrupt; exports.interrupted = interrupted; exports.map = map; exports.mapBoth = mapBoth; exports.mapBoth_ = mapBoth_; exports.mapError = mapError; exports.mapErrorCause = mapErrorCause; exports.mapErrorCause_ = mapErrorCause_; exports.mapError_ = mapError_; exports.map_ = map_; exports.orElseFail = orElseFail; exports.orElseFail_ = orElseFail_; exports.succeed = succeed; exports.succeeded = succeeded; exports.toEither = toEither; exports.unit = void 0; exports.untraced = untraced; exports.zip = zip; exports.zipLeft = zipLeft; exports.zipLeft_ = zipLeft_; exports.zipPar = zipPar; exports.zipParLeft = zipParLeft; exports.zipParLeft_ = zipParLeft_; exports.zipParRight = zipParRight; exports.zipParRight_ = zipParRight_; exports.zipPar_ = zipPar_; exports.zipRight = zipRight; exports.zipRight_ = zipRight_; exports.zipWith = zipWith; exports.zipWith_ = zipWith_; exports.zip_ = zip_; var C = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Cause/core.js")); var _errors = /*#__PURE__*/require("../Cause/errors.js"); var A = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Collections/Immutable/Array/index.js")); var Tp = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Collections/Immutable/Tuple/index.js")); var E = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Either/index.js")); var _index4 = /*#__PURE__*/require("../Function/index.js"); var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Option/index.js")); var _exit = /*#__PURE__*/require("./exit.js"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } // ets_tracing: off /** * Applicative's ap */ function ap_(fa, fab) { return chain_(fab, f => map_(fa, a => f(a))); } /** * Applicative's ap * * @ets_data_first ap_ */ function ap(fa) { return fab => ap_(fa, fab); } /** * Replaces the success value with the one provided. */ function as_(exit, b) { return map_(exit, () => b); } /** * Replaces the success value with the one provided. * * @ets_data_first as_ */ function as(b) { return exit => as_(exit, b); } /** * Maps over both the error and value type. */ function bimap_(exit, f, g) { return mapError(f)(map(g)(exit)); } /** * Maps over both the error and value type. * * @ets_data_first bimap_ */ function bimap(f, g) { return exit => bimap_(exit, f, g); } /** * Flat maps over the value type. */ function chain_(exit, f) { switch (exit._tag) { case "Failure": { return exit; } case "Success": { return f(exit.value); } } } /** * Flat maps over the value type. * * @ets_data_first chain_ */ function chain(f) { return exit => chain_(exit, f); } /** * Collects all the success states and merges sequentially the causes */ function collectAll(...exits) { return O.map_(A.head(exits), head => map(A.reverse)(A.reduce_(A.drop_(exits, 1), map(x => [x])(head), (acc, el) => zipWith(el, (acc, el) => [el, ...acc], C.combineSeq)(acc)))); } /** * Zips this together with the specified result using the combination functions. */ function zipWith_(exit, that, f, g) { switch (exit._tag) { case "Failure": { switch (that._tag) { case "Success": { return exit; } case "Failure": { return halt(g(exit.cause, that.cause)); } } } // eslint-disable-next-line no-fallthrough case "Success": { switch (that._tag) { case "Success": { return succeed(f(exit.value, that.value)); } case "Failure": { return that; } } } } } /** * Zips this together with the specified result using the combination functions. * * @ets_data_first zipWith_ */ function zipWith(that, f, g) { return exit => zipWith_(exit, that, f, g); } /** * Collects all the success states and merges the causes in parallel */ function collectAllPar(...exits) { return O.map_(A.head(exits), head => map(A.reverse)(A.reduce_(A.drop_(exits, 1), map(x => [x])(head), (acc, el) => zipWith(el, (acc, el) => [el, ...acc], C.combinePar)(acc)))); } /** * Construct an Exit with an unchecked cause containing the specified error */ function die(error) { return halt(C.die(error)); } /** * Returns f(a) if the exit is successful */ function exists_(exit, f) { return fold(() => false, f)(exit); } /** * Returns f(a) if the exit is successful * * @ets_data_first exists_ */ function exists(f) { return exit => exists_(exit, f); } /** * Constructs a failed exit with the specified checked error */ function fail(e) { return halt(C.fail(e)); } /** * Constructs a failed exit with the specified cause */ function failCause(cause) { return new _exit.Failure(cause); } /** * Flatten nested Exits */ function flatten(exit) { return chain(_index4.identity)(exit); } /** * Folds over the value or cause. */ function fold_(exit, failed, succeed) { switch (exit._tag) { case "Success": { return succeed(exit.value); } case "Failure": { return failed(exit.cause); } } } /** * Folds over the value or cause. * * @ets_data_first fold_ */ function fold(failed, succeed) { return exit => fold_(exit, failed, succeed); } /** * Embeds Either's Error & Success in an Exit */ function fromEither(e) { return e._tag === "Left" ? fail(e.left) : succeed(e.right); } /** * Embeds an option result into an Exit with the specified error using onNone */ function fromOption(onNone) { return a => a._tag === "None" ? fail(onNone()) : succeed(a.value); } /** * Get successful result falling back to orElse result in case of failure */ function getOrElse_(exit, orElse) { switch (exit._tag) { case "Success": { return exit.value; } case "Failure": { return orElse(exit.cause); } } } /** * Get successful result falling back to orElse result in case of failure * * @ets_data_first getOrElse_ */ function getOrElse(orElse) { return exit => getOrElse_(exit, orElse); } /** * Constructs a failed exit with the specified cause */ function halt(cause) { return new _exit.Failure(cause); } /** * Constructs an exit with the specified interruption state */ function interrupt(id) { return halt(C.interrupt(id)); } /** * Returns if Exit contains an interruption state */ function interrupted(exit) { switch (exit._tag) { case "Success": { return false; } case "Failure": { return C.interrupted(exit.cause); } } } /** * Maps over the value type. */ function map_(exit, f) { return chain(a => succeed(f(a)))(exit); } /** * Maps over the value type. * * @ets_data_first map_ */ function map(f) { return exit => map_(exit, f); } /** * Maps over the error type. */ function mapError_(exit, f) { switch (exit._tag) { case "Failure": { return halt(C.map(f)(exit.cause)); } case "Success": { return exit; } } } /** * Maps over the error type. * * @ets_data_first mapError_ */ function mapError(f) { return exit => mapError_(exit, f); } /** * Maps over the cause type. */ function mapErrorCause_(exit, f) { switch (exit._tag) { case "Failure": { return halt(f(exit.cause)); } case "Success": { return exit; } } } /** * Maps over the cause type. * * @ets_data_first mapErrorCause_ */ function mapErrorCause(f) { return exit => mapErrorCause_(exit, f); } /** * Replaces the error value with the one provided. */ function orElseFail_(exit, e) { return mapError(() => e)(exit); } /** * Replaces the error value with the one provided. * * @ets_data_first orElseFail_ */ function orElseFail(e) { return exit => orElseFail_(exit, e); } /** * Construct a succeeded exit with the specified value */ function succeed(a) { return new _exit.Success(a); } /** * Returns if an exit is succeeded */ function succeeded(exit) { switch (exit._tag) { case "Failure": { return false; } case "Success": { return true; } } } /** * Converts the `Exit` to an `Either<FiberFailure, A>`, by wrapping the * cause in `FiberFailure` (if the result is failed). */ function toEither(exit) { switch (exit._tag) { case "Success": { return E.right(exit.value); } case "Failure": { return E.left(new _errors.FiberFailure(exit.cause)); } } } /** * Discards the value. */ const unit = /*#__PURE__*/succeed(undefined); /** * Sequentially zips the this result with the specified result or else returns the failed `Cause[E1]` */ exports.unit = unit; function zip_(exit, that) { return zipWith(that, (a, b) => Tp.tuple(a, b), C.combineSeq)(exit); } /** * Sequentially zips the this result with the specified result or else returns the failed `Cause[E1]` * * @ets_data_first zip_ */ function zip(that) { return exit => zip_(exit, that); } /** * Sequentially zips the this result with the specified result discarding the second element of the tuple or else returns the failed `Cause[E1]` */ function zipLeft_(exit, that) { return zipWith(that, (a, _) => a, C.combineSeq)(exit); } /** * Sequentially zips the this result with the specified result discarding the second element of the tuple or else returns the failed `Cause[E1]` * * @ets_data_first zipLeft_ */ function zipLeft(that) { return exit => zipLeft_(exit, that); } /** * Parallelly zips the this result with the specified result or else returns the failed `Cause[E1]` */ function zipPar_(exit, that) { return zipWith(that, (a, b) => Tp.tuple(a, b), C.combinePar)(exit); } /** * Parallelly zips the this result with the specified result or else returns the failed `Cause[E1]` * * @ets_data_first zipPar_ */ function zipPar(that) { return exit => zipPar_(exit, that); } /** * Parallelly zips the this result with the specified result discarding the second element of the tuple or else returns the failed `Cause[E1]` */ function zipParLeft_(exit, that) { return zipWith(that, (a, _) => a, C.combinePar)(exit); } /** * Parallelly zips the this result with the specified result discarding the second element of the tuple or else returns the failed `Cause[E1]` * * @ets_data_first zipParLeft_ */ function zipParLeft(that) { return exit => zipParLeft_(exit, that); } /** * Parallelly zips the this result with the specified result discarding the first element of the tuple or else returns the failed `Cause[E1]` */ function zipParRight_(exit, that) { return zipWith(that, (_, b) => b, C.combinePar)(exit); } /** * Parallelly zips the this result with the specified result discarding the first element of the tuple or else returns the failed `Cause[E1]` * * @ets_data_first zipParRight_ */ function zipParRight(that) { return exit => zipParRight_(exit, that); } /** * Sequentially zips the this result with the specified result discarding the first element of the tuple or else returns the failed `Cause[E1]` */ function zipRight_(exit, that) { return zipWith(that, (_, b) => b, C.combineSeq)(exit); } /** * Sequentially zips the this result with the specified result discarding the first element of the tuple or else returns the failed `Cause[E1]` * * @ets_data_first zipRight_ */ function zipRight(that) { return exit => zipRight_(exit, that); } /** * Returns an untraced exit value. */ function untraced(self) { return self._tag === "Success" ? self : halt(C.untraced(self.cause)); } /** * Asserts an exit is a failure */ function assertsFailure(exit) { if (exit._tag === "Success") { throw new Error("expected a failed exit and got success"); } } /** * Maps over both the error and value type. */ function mapBoth_(self, f, g) { return map_(mapError_(self, f), g); } /** * Maps over both the error and value type. * * @ets_data_first mapBoth_ */ function mapBoth(f, g) { return self => mapBoth_(self, f, g); } //# sourceMappingURL=core.js.map