UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

97 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Provide = exports.ProvideAll = exports.ProvideSome = exports.UseAll = exports.UseSome = exports.provideAll = exports.useAll = exports.provideSome = exports.useSome = exports.MonadRec = exports.ChainRec = exports.chainRec = void 0; const tslib_1 = require("tslib"); /** * @typed/fp/Reader is an extension to fp-ts/Reader with ChainRec + MonadRec instances. * * @since 0.9.2 */ const ChainRec_1 = require("fp-ts/ChainRec"); const R = (0, tslib_1.__importStar)(require("fp-ts/Reader")); const function_1 = require("./function"); (0, tslib_1.__exportStar)(require("fp-ts/Reader"), exports); /** * @since 0.9.2 * @category Combinator */ const chainRec = (f) => (value) => (r) => (0, function_1.pipe)(value, (0, ChainRec_1.tailRec)((a) => f(a)(r))); exports.chainRec = chainRec; /** * @since 0.9.2 * @category Instance */ exports.ChainRec = { chainRec: exports.chainRec, }; /** * @since 0.9.2 * @category Instance */ exports.MonadRec = { ...R.Monad, chainRec: exports.chainRec, }; /** * @since 0.9.2 * @category Combinator */ const useSome = (provided) => (reader) => (e) => reader({ ...e, ...provided }); exports.useSome = useSome; /** * @since 0.9.2 * @category Combinator */ const provideSome = (provided) => (reader) => (e) => reader({ ...provided, ...e }); exports.provideSome = provideSome; /** * @since 0.9.2 * @category Combinator */ const useAll = (provided) => (reader) => () => reader(provided); exports.useAll = useAll; /** * @since 0.9.2 * @category Combinator */ const provideAll = (provided) => (reader) => (e) => { var _a; return reader({ ...provided, ...((_a = e) !== null && _a !== void 0 ? _a : {}) }); }; exports.provideAll = provideAll; /** * @since 0.9.2 * @category Instance */ exports.UseSome = { useSome: exports.useSome, }; /** * @since 0.9.2 * @category Instance */ exports.UseAll = { useAll: exports.useAll, }; /** * @since 0.9.2 * @category Instance */ exports.ProvideSome = { provideSome: exports.provideSome, }; /** * @since 0.9.2 * @category Instance */ exports.ProvideAll = { provideAll: exports.provideAll, }; /** * @since 0.9.2 * @category Instance */ exports.Provide = { useSome: exports.useSome, useAll: exports.useAll, provideSome: exports.provideSome, provideAll: exports.provideAll, }; //# sourceMappingURL=Reader.js.map