版博士V2.0程序
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

TaskEither.js 38 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  1. "use strict";
  2. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  3. if (k2 === undefined) k2 = k;
  4. var desc = Object.getOwnPropertyDescriptor(m, k);
  5. if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  6. desc = { enumerable: true, get: function() { return m[k]; } };
  7. }
  8. Object.defineProperty(o, k2, desc);
  9. }) : (function(o, m, k, k2) {
  10. if (k2 === undefined) k2 = k;
  11. o[k2] = m[k];
  12. }));
  13. var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  14. Object.defineProperty(o, "default", { enumerable: true, value: v });
  15. }) : function(o, v) {
  16. o["default"] = v;
  17. });
  18. var __importStar = (this && this.__importStar) || function (mod) {
  19. if (mod && mod.__esModule) return mod;
  20. var result = {};
  21. if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  22. __setModuleDefault(result, mod);
  23. return result;
  24. };
  25. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  26. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  27. return new (P || (P = Promise))(function (resolve, reject) {
  28. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  29. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  30. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  31. step((generator = generator.apply(thisArg, _arguments || [])).next());
  32. });
  33. };
  34. var __generator = (this && this.__generator) || function (thisArg, body) {
  35. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  36. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  37. function verb(n) { return function (v) { return step([n, v]); }; }
  38. function step(op) {
  39. if (f) throw new TypeError("Generator is already executing.");
  40. while (_) try {
  41. if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
  42. if (y = 0, t) op = [op[0] & 2, t.value];
  43. switch (op[0]) {
  44. case 0: case 1: t = op; break;
  45. case 4: _.label++; return { value: op[1], done: false };
  46. case 5: _.label++; y = op[1]; op = [0]; continue;
  47. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  48. default:
  49. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  50. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  51. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  52. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  53. if (t[2]) _.ops.pop();
  54. _.trys.pop(); continue;
  55. }
  56. op = body.call(thisArg, _);
  57. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  58. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  59. }
  60. };
  61. Object.defineProperty(exports, "__esModule", { value: true });
  62. exports.altW = exports.alt = exports.flatten = exports.flattenW = exports.chainW = exports.chain = exports.apW = exports.ap = exports.mapLeft = exports.bimap = exports.map = exports.chainIOEitherK = exports.chainIOEitherKW = exports.fromIOEitherK = exports.chainTaskOptionK = exports.chainTaskOptionKW = exports.fromTaskOptionK = exports.swap = exports.orLeft = exports.orElseFirstTaskK = exports.orElseFirstIOK = exports.orElseFirstW = exports.orElseFirst = exports.orElseW = exports.orElse = exports.chainNullableK = exports.fromNullableK = exports.fromNullable = exports.toUnion = exports.tryCatchK = exports.tryCatch = exports.getOrElseW = exports.getOrElse = exports.foldW = exports.matchEW = exports.fold = exports.matchE = exports.matchW = exports.match = exports.fromTaskOption = exports.fromIOEither = exports.fromEither = exports.fromTask = exports.fromIO = exports.leftIO = exports.rightIO = exports.leftTask = exports.rightTask = exports.right = exports.left = void 0;
  63. exports.bracketW = exports.bracket = exports.taskify = exports.chainFirstTaskK = exports.chainTaskK = exports.fromTaskK = exports.FromTask = exports.chainFirstIOK = exports.chainIOK = exports.fromIOK = exports.FromIO = exports.fromEitherK = exports.filterOrElseW = exports.filterOrElse = exports.fromPredicate = exports.chainFirstEitherKW = exports.chainFirstEitherK = exports.chainEitherKW = exports.chainEitherK = exports.chainOptionK = exports.fromOptionK = exports.fromOption = exports.FromEither = exports.Alt = exports.Bifunctor = exports.chainFirstW = exports.chainFirst = exports.MonadThrow = exports.MonadTask = exports.MonadIO = exports.Monad = exports.Chain = exports.ApplicativeSeq = exports.ApplySeq = exports.ApplicativePar = exports.apSecondW = exports.apSecond = exports.apFirstW = exports.apFirst = exports.ApplyPar = exports.Pointed = exports.flap = exports.Functor = exports.getFilterable = exports.getCompactable = exports.getAltTaskValidation = exports.getApplicativeTaskValidation = exports.URI = exports.throwError = exports.of = void 0;
  64. exports.getTaskValidation = exports.getSemigroup = exports.getApplyMonoid = exports.getApplySemigroup = exports.taskEitherSeq = exports.taskEither = exports.sequenceSeqArray = exports.traverseSeqArray = exports.traverseSeqArrayWithIndex = exports.sequenceArray = exports.traverseArray = exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndexSeq = exports.traverseReadonlyNonEmptyArrayWithIndexSeq = exports.traverseReadonlyArrayWithIndex = exports.traverseReadonlyNonEmptyArrayWithIndex = exports.ApT = exports.apSW = exports.apS = exports.bindW = exports.bind = exports.let = exports.bindTo = exports.Do = void 0;
  65. var Applicative_1 = require("./Applicative");
  66. var Apply_1 = require("./Apply");
  67. var Chain_1 = require("./Chain");
  68. var Compactable_1 = require("./Compactable");
  69. var E = __importStar(require("./Either"));
  70. var ET = __importStar(require("./EitherT"));
  71. var Filterable_1 = require("./Filterable");
  72. var FromEither_1 = require("./FromEither");
  73. var FromIO_1 = require("./FromIO");
  74. var FromTask_1 = require("./FromTask");
  75. var function_1 = require("./function");
  76. var Functor_1 = require("./Functor");
  77. var _ = __importStar(require("./internal"));
  78. var T = __importStar(require("./Task"));
  79. // -------------------------------------------------------------------------------------
  80. // constructors
  81. // -------------------------------------------------------------------------------------
  82. /**
  83. * @category constructors
  84. * @since 2.0.0
  85. */
  86. exports.left = ET.left(T.Pointed);
  87. /**
  88. * @category constructors
  89. * @since 2.0.0
  90. */
  91. exports.right = ET.right(T.Pointed);
  92. /**
  93. * @category constructors
  94. * @since 2.0.0
  95. */
  96. exports.rightTask = ET.rightF(T.Functor);
  97. /**
  98. * @category constructors
  99. * @since 2.0.0
  100. */
  101. exports.leftTask = ET.leftF(T.Functor);
  102. /**
  103. * @category constructors
  104. * @since 2.0.0
  105. */
  106. exports.rightIO = (0, function_1.flow)(T.fromIO, exports.rightTask);
  107. /**
  108. * @category constructors
  109. * @since 2.0.0
  110. */
  111. exports.leftIO = (0, function_1.flow)(T.fromIO, exports.leftTask);
  112. // -------------------------------------------------------------------------------------
  113. // conversions
  114. // -------------------------------------------------------------------------------------
  115. /**
  116. * @category conversions
  117. * @since 2.7.0
  118. */
  119. exports.fromIO = exports.rightIO;
  120. /**
  121. * @category conversions
  122. * @since 2.7.0
  123. */
  124. exports.fromTask = exports.rightTask;
  125. /**
  126. * @category conversions
  127. * @since 2.0.0
  128. */
  129. exports.fromEither = T.of;
  130. /**
  131. * @category conversions
  132. * @since 2.0.0
  133. */
  134. exports.fromIOEither = T.fromIO;
  135. /**
  136. * @category conversions
  137. * @since 2.11.0
  138. */
  139. var fromTaskOption = function (onNone) {
  140. return T.map(E.fromOption(onNone));
  141. };
  142. exports.fromTaskOption = fromTaskOption;
  143. /**
  144. * @category pattern matching
  145. * @since 2.10.0
  146. */
  147. exports.match =
  148. /*#__PURE__*/ ET.match(T.Functor);
  149. /**
  150. * Less strict version of [`match`](#match).
  151. *
  152. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  153. *
  154. * @category pattern matching
  155. * @since 2.10.0
  156. */
  157. exports.matchW = exports.match;
  158. /**
  159. * The `E` suffix (short for **E**ffect) means that the handlers return an effect (`Task`).
  160. *
  161. * @category pattern matching
  162. * @since 2.10.0
  163. */
  164. exports.matchE = ET.matchE(T.Monad);
  165. /**
  166. * Alias of [`matchE`](#matche).
  167. *
  168. * @category pattern matching
  169. * @since 2.0.0
  170. */
  171. exports.fold = exports.matchE;
  172. /**
  173. * Less strict version of [`matchE`](#matche).
  174. *
  175. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  176. *
  177. * @category pattern matching
  178. * @since 2.10.0
  179. */
  180. exports.matchEW = exports.matchE;
  181. /**
  182. * Alias of [`matchEW`](#matchew).
  183. *
  184. * @category pattern matching
  185. * @since 2.10.0
  186. */
  187. exports.foldW = exports.matchEW;
  188. /**
  189. * @category error handling
  190. * @since 2.0.0
  191. */
  192. exports.getOrElse =
  193. /*#__PURE__*/ ET.getOrElse(T.Monad);
  194. /**
  195. * Less strict version of [`getOrElse`](#getorelse).
  196. *
  197. * The `W` suffix (short for **W**idening) means that the handler return type will be merged.
  198. *
  199. * @category error handling
  200. * @since 2.6.0
  201. */
  202. exports.getOrElseW = exports.getOrElse;
  203. /**
  204. * Transforms a `Promise` that may reject to a `Promise` that never rejects and returns an `Either` instead.
  205. *
  206. * See also [`tryCatchK`](#trycatchk).
  207. *
  208. * @example
  209. * import { left, right } from 'fp-ts/Either'
  210. * import { tryCatch } from 'fp-ts/TaskEither'
  211. *
  212. * tryCatch(() => Promise.resolve(1), String)().then(result => {
  213. * assert.deepStrictEqual(result, right(1))
  214. * })
  215. * tryCatch(() => Promise.reject('error'), String)().then(result => {
  216. * assert.deepStrictEqual(result, left('error'))
  217. * })
  218. *
  219. * @category interop
  220. * @since 2.0.0
  221. */
  222. var tryCatch = function (f, onRejected) {
  223. return function () { return __awaiter(void 0, void 0, void 0, function () {
  224. var reason_1;
  225. return __generator(this, function (_a) {
  226. switch (_a.label) {
  227. case 0:
  228. _a.trys.push([0, 2, , 3]);
  229. return [4 /*yield*/, f().then(_.right)];
  230. case 1: return [2 /*return*/, _a.sent()];
  231. case 2:
  232. reason_1 = _a.sent();
  233. return [2 /*return*/, _.left(onRejected(reason_1))];
  234. case 3: return [2 /*return*/];
  235. }
  236. });
  237. }); };
  238. };
  239. exports.tryCatch = tryCatch;
  240. /**
  241. * Converts a function returning a `Promise` to one returning a `TaskEither`.
  242. *
  243. * @category interop
  244. * @since 2.5.0
  245. */
  246. var tryCatchK = function (f, onRejected) {
  247. return function () {
  248. var a = [];
  249. for (var _i = 0; _i < arguments.length; _i++) {
  250. a[_i] = arguments[_i];
  251. }
  252. return (0, exports.tryCatch)(function () { return f.apply(void 0, a); }, onRejected);
  253. };
  254. };
  255. exports.tryCatchK = tryCatchK;
  256. /**
  257. * @category conversions
  258. * @since 2.10.0
  259. */
  260. exports.toUnion = ET.toUnion(T.Functor);
  261. /**
  262. * @category conversions
  263. * @since 2.12.0
  264. */
  265. exports.fromNullable = ET.fromNullable(T.Pointed);
  266. /**
  267. * @category lifting
  268. * @since 2.12.0
  269. */
  270. exports.fromNullableK = ET.fromNullableK(T.Pointed);
  271. /**
  272. * @category sequencing
  273. * @since 2.12.0
  274. */
  275. exports.chainNullableK =
  276. /*#__PURE__*/ ET.chainNullableK(T.Monad);
  277. // -------------------------------------------------------------------------------------
  278. // combinators
  279. // -------------------------------------------------------------------------------------
  280. /**
  281. * Returns `ma` if is a `Right` or the value returned by `onLeft` otherwise.
  282. *
  283. * See also [alt](#alt).
  284. *
  285. * @example
  286. * import * as E from 'fp-ts/Either'
  287. * import { pipe } from 'fp-ts/function'
  288. * import * as TE from 'fp-ts/TaskEither'
  289. *
  290. * async function test() {
  291. * const errorHandler = TE.orElse((error: string) => TE.right(`recovering from ${error}...`))
  292. * assert.deepStrictEqual(await pipe(TE.right('ok'), errorHandler)(), E.right('ok'))
  293. * assert.deepStrictEqual(await pipe(TE.left('ko'), errorHandler)(), E.right('recovering from ko...'))
  294. * }
  295. *
  296. * test()
  297. *
  298. * @category error handling
  299. * @since 2.0.0
  300. */
  301. exports.orElse =
  302. /*#__PURE__*/ ET.orElse(T.Monad);
  303. /**
  304. * Less strict version of [`orElse`](#orelse).
  305. *
  306. * The `W` suffix (short for **W**idening) means that the return types will be merged.
  307. *
  308. * @category error handling
  309. * @since 2.10.0
  310. */
  311. exports.orElseW = exports.orElse;
  312. /**
  313. * @category error handling
  314. * @since 2.11.0
  315. */
  316. exports.orElseFirst =
  317. /*#__PURE__*/ ET.orElseFirst(T.Monad);
  318. /**
  319. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  320. *
  321. * @category error handling
  322. * @since 2.11.0
  323. */
  324. exports.orElseFirstW = exports.orElseFirst;
  325. /**
  326. * @category error handling
  327. * @since 2.12.0
  328. */
  329. var orElseFirstIOK = function (onLeft) { return (0, exports.orElseFirst)((0, exports.fromIOK)(onLeft)); };
  330. exports.orElseFirstIOK = orElseFirstIOK;
  331. /**
  332. * @category error handling
  333. * @since 2.12.0
  334. */
  335. var orElseFirstTaskK = function (onLeft) { return (0, exports.orElseFirst)((0, exports.fromTaskK)(onLeft)); };
  336. exports.orElseFirstTaskK = orElseFirstTaskK;
  337. /**
  338. * @category error handling
  339. * @since 2.11.0
  340. */
  341. exports.orLeft =
  342. /*#__PURE__*/ ET.orLeft(T.Monad);
  343. /**
  344. * @since 2.0.0
  345. */
  346. exports.swap = ET.swap(T.Functor);
  347. /**
  348. * @category lifting
  349. * @since 2.11.0
  350. */
  351. var fromTaskOptionK = function (onNone) {
  352. var from = (0, exports.fromTaskOption)(onNone);
  353. return function (f) { return (0, function_1.flow)(f, from); };
  354. };
  355. exports.fromTaskOptionK = fromTaskOptionK;
  356. /**
  357. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  358. *
  359. * @category sequencing
  360. * @since 2.12.3
  361. */
  362. var chainTaskOptionKW = function (onNone) {
  363. return function (f) {
  364. return function (ma) {
  365. return (0, function_1.pipe)(ma, (0, exports.chain)((0, exports.fromTaskOptionK)(onNone)(f)));
  366. };
  367. };
  368. };
  369. exports.chainTaskOptionKW = chainTaskOptionKW;
  370. /**
  371. * @category sequencing
  372. * @since 2.11.0
  373. */
  374. exports.chainTaskOptionK = exports.chainTaskOptionKW;
  375. /**
  376. * @category lifting
  377. * @since 2.4.0
  378. */
  379. var fromIOEitherK = function (f) { return (0, function_1.flow)(f, exports.fromIOEither); };
  380. exports.fromIOEitherK = fromIOEitherK;
  381. /**
  382. * Less strict version of [`chainIOEitherK`](#chainioeitherk).
  383. *
  384. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  385. *
  386. * @category sequencing
  387. * @since 2.6.1
  388. */
  389. var chainIOEitherKW = function (f) { return (0, exports.chainW)((0, exports.fromIOEitherK)(f)); };
  390. exports.chainIOEitherKW = chainIOEitherKW;
  391. /**
  392. * @category sequencing
  393. * @since 2.4.0
  394. */
  395. exports.chainIOEitherK = exports.chainIOEitherKW;
  396. var _map = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.map)(f)); };
  397. var _apPar = function (fab, fa) { return (0, function_1.pipe)(fab, (0, exports.ap)(fa)); };
  398. var _apSeq = function (fab, fa) {
  399. return (0, function_1.pipe)(fab, (0, exports.chain)(function (f) { return (0, function_1.pipe)(fa, (0, exports.map)(f)); }));
  400. };
  401. /* istanbul ignore next */
  402. var _chain = function (ma, f) { return (0, function_1.pipe)(ma, (0, exports.chain)(f)); };
  403. /* istanbul ignore next */
  404. var _bimap = function (fa, f, g) { return (0, function_1.pipe)(fa, (0, exports.bimap)(f, g)); };
  405. /* istanbul ignore next */
  406. var _mapLeft = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.mapLeft)(f)); };
  407. /* istanbul ignore next */
  408. var _alt = function (fa, that) { return (0, function_1.pipe)(fa, (0, exports.alt)(that)); };
  409. /**
  410. * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types
  411. * use the type constructor `F` to represent some computational context.
  412. *
  413. * @category mapping
  414. * @since 2.0.0
  415. */
  416. exports.map = ET.map(T.Functor);
  417. /**
  418. * Map a pair of functions over the two type arguments of the bifunctor.
  419. *
  420. * @category mapping
  421. * @since 2.0.0
  422. */
  423. exports.bimap =
  424. /*#__PURE__*/ ET.bimap(T.Functor);
  425. /**
  426. * Map a function over the first type argument of a bifunctor.
  427. *
  428. * @category error handling
  429. * @since 2.0.0
  430. */
  431. exports.mapLeft =
  432. /*#__PURE__*/ ET.mapLeft(T.Functor);
  433. /**
  434. * @since 2.0.0
  435. */
  436. exports.ap =
  437. /*#__PURE__*/ ET.ap(T.ApplyPar);
  438. /**
  439. * Less strict version of [`ap`](#ap).
  440. *
  441. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  442. *
  443. * @since 2.8.0
  444. */
  445. exports.apW = exports.ap;
  446. /**
  447. * Composes computations in sequence, using the return value of one computation to determine the next computation.
  448. *
  449. * @category sequencing
  450. * @since 2.0.0
  451. */
  452. exports.chain =
  453. /*#__PURE__*/ ET.chain(T.Monad);
  454. /**
  455. * Less strict version of [`chain`](#chain).
  456. *
  457. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  458. *
  459. * @category sequencing
  460. * @since 2.6.0
  461. */
  462. exports.chainW = exports.chain;
  463. /**
  464. * Less strict version of [`flatten`](#flatten).
  465. *
  466. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  467. *
  468. * @category sequencing
  469. * @since 2.11.0
  470. */
  471. exports.flattenW =
  472. /*#__PURE__*/ (0, exports.chainW)(function_1.identity);
  473. /**
  474. * @category sequencing
  475. * @since 2.0.0
  476. */
  477. exports.flatten = exports.flattenW;
  478. /**
  479. * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to
  480. * types of kind `* -> *`.
  481. *
  482. * In case of `TaskEither` returns `fa` if is a `Right` or the value returned by `that` otherwise.
  483. *
  484. * See also [orElse](#orelse).
  485. *
  486. * @example
  487. * import * as E from 'fp-ts/Either'
  488. * import { pipe } from 'fp-ts/function'
  489. * import * as TE from 'fp-ts/TaskEither'
  490. *
  491. * async function test() {
  492. * assert.deepStrictEqual(
  493. * await pipe(
  494. * TE.right(1),
  495. * TE.alt(() => TE.right(2))
  496. * )(),
  497. * E.right(1)
  498. * )
  499. * assert.deepStrictEqual(
  500. * await pipe(
  501. * TE.left('a'),
  502. * TE.alt(() => TE.right(2))
  503. * )(),
  504. * E.right(2)
  505. * )
  506. * assert.deepStrictEqual(
  507. * await pipe(
  508. * TE.left('a'),
  509. * TE.alt(() => TE.left('b'))
  510. * )(),
  511. * E.left('b')
  512. * )
  513. * }
  514. *
  515. * test()
  516. *
  517. * @category error handling
  518. * @since 2.0.0
  519. */
  520. exports.alt =
  521. /*#__PURE__*/ ET.alt(T.Monad);
  522. /**
  523. * Less strict version of [`alt`](#alt).
  524. *
  525. * The `W` suffix (short for **W**idening) means that the error and the return types will be merged.
  526. *
  527. * @category error handling
  528. * @since 2.9.0
  529. */
  530. exports.altW = exports.alt;
  531. /**
  532. * @category constructors
  533. * @since 2.0.0
  534. */
  535. exports.of = exports.right;
  536. /**
  537. * @since 2.7.0
  538. */
  539. exports.throwError = exports.left;
  540. /**
  541. * @category type lambdas
  542. * @since 2.0.0
  543. */
  544. exports.URI = 'TaskEither';
  545. /**
  546. * The default [`ApplicativePar`](#applicativepar) instance returns the first error, if you want to
  547. * get all errors you need to provide a way to concatenate them via a `Semigroup`.
  548. *
  549. * @example
  550. * import * as E from 'fp-ts/Either'
  551. * import { pipe } from 'fp-ts/function'
  552. * import * as RA from 'fp-ts/ReadonlyArray'
  553. * import * as S from 'fp-ts/Semigroup'
  554. * import * as string from 'fp-ts/string'
  555. * import * as T from 'fp-ts/Task'
  556. * import * as TE from 'fp-ts/TaskEither'
  557. *
  558. * interface User {
  559. * readonly id: string
  560. * readonly name: string
  561. * }
  562. *
  563. * const remoteDatabase: ReadonlyArray<User> = [
  564. * { id: 'id1', name: 'John' },
  565. * { id: 'id2', name: 'Mary' },
  566. * { id: 'id3', name: 'Joey' }
  567. * ]
  568. *
  569. * const fetchUser = (id: string): TE.TaskEither<string, User> =>
  570. * pipe(
  571. * remoteDatabase,
  572. * RA.findFirst((user) => user.id === id),
  573. * TE.fromOption(() => `${id} not found`)
  574. * )
  575. *
  576. * async function test() {
  577. * assert.deepStrictEqual(
  578. * await pipe(['id4', 'id5'], RA.traverse(TE.ApplicativePar)(fetchUser))(),
  579. * E.left('id4 not found') // <= first error
  580. * )
  581. *
  582. * const Applicative = TE.getApplicativeTaskValidation(
  583. * T.ApplyPar,
  584. * pipe(string.Semigroup, S.intercalate(', '))
  585. * )
  586. *
  587. * assert.deepStrictEqual(
  588. * await pipe(['id4', 'id5'], RA.traverse(Applicative)(fetchUser))(),
  589. * E.left('id4 not found, id5 not found') // <= all errors
  590. * )
  591. * }
  592. *
  593. * test()
  594. *
  595. * @category error handling
  596. * @since 2.7.0
  597. */
  598. function getApplicativeTaskValidation(A, S) {
  599. var ap = (0, Apply_1.ap)(A, E.getApplicativeValidation(S));
  600. return {
  601. URI: exports.URI,
  602. _E: undefined,
  603. map: _map,
  604. ap: function (fab, fa) { return (0, function_1.pipe)(fab, ap(fa)); },
  605. of: exports.of
  606. };
  607. }
  608. exports.getApplicativeTaskValidation = getApplicativeTaskValidation;
  609. /**
  610. * The default [`Alt`](#alt) instance returns the last error, if you want to
  611. * get all errors you need to provide a way to concatenate them via a `Semigroup`.
  612. *
  613. * See [`getAltValidation`](./Either.ts.html#getaltvalidation).
  614. *
  615. * @category error handling
  616. * @since 2.7.0
  617. */
  618. function getAltTaskValidation(S) {
  619. var alt = ET.altValidation(T.Monad, S);
  620. return {
  621. URI: exports.URI,
  622. _E: undefined,
  623. map: _map,
  624. alt: function (fa, that) { return (0, function_1.pipe)(fa, alt(that)); }
  625. };
  626. }
  627. exports.getAltTaskValidation = getAltTaskValidation;
  628. /**
  629. * @category filtering
  630. * @since 2.10.0
  631. */
  632. var getCompactable = function (M) {
  633. var C = E.getCompactable(M);
  634. return {
  635. URI: exports.URI,
  636. _E: undefined,
  637. compact: (0, Compactable_1.compact)(T.Functor, C),
  638. separate: (0, Compactable_1.separate)(T.Functor, C, E.Functor)
  639. };
  640. };
  641. exports.getCompactable = getCompactable;
  642. /**
  643. * @category filtering
  644. * @since 2.1.0
  645. */
  646. function getFilterable(M) {
  647. var F = E.getFilterable(M);
  648. var C = (0, exports.getCompactable)(M);
  649. var filter = (0, Filterable_1.filter)(T.Functor, F);
  650. var filterMap = (0, Filterable_1.filterMap)(T.Functor, F);
  651. var partition = (0, Filterable_1.partition)(T.Functor, F);
  652. var partitionMap = (0, Filterable_1.partitionMap)(T.Functor, F);
  653. return {
  654. URI: exports.URI,
  655. _E: undefined,
  656. map: _map,
  657. compact: C.compact,
  658. separate: C.separate,
  659. filter: function (fa, predicate) { return (0, function_1.pipe)(fa, filter(predicate)); },
  660. filterMap: function (fa, f) { return (0, function_1.pipe)(fa, filterMap(f)); },
  661. partition: function (fa, predicate) { return (0, function_1.pipe)(fa, partition(predicate)); },
  662. partitionMap: function (fa, f) { return (0, function_1.pipe)(fa, partitionMap(f)); }
  663. };
  664. }
  665. exports.getFilterable = getFilterable;
  666. /**
  667. * @category instances
  668. * @since 2.7.0
  669. */
  670. exports.Functor = {
  671. URI: exports.URI,
  672. map: _map
  673. };
  674. /**
  675. * @category mapping
  676. * @since 2.10.0
  677. */
  678. exports.flap = (0, Functor_1.flap)(exports.Functor);
  679. /**
  680. * @category instances
  681. * @since 2.10.0
  682. */
  683. exports.Pointed = {
  684. URI: exports.URI,
  685. of: exports.of
  686. };
  687. /**
  688. * Runs computations in parallel.
  689. *
  690. * @category instances
  691. * @since 2.10.0
  692. */
  693. exports.ApplyPar = {
  694. URI: exports.URI,
  695. map: _map,
  696. ap: _apPar
  697. };
  698. /**
  699. * Combine two effectful actions, keeping only the result of the first.
  700. *
  701. * @since 2.0.0
  702. */
  703. exports.apFirst = (0, Apply_1.apFirst)(exports.ApplyPar);
  704. /**
  705. * Less strict version of [`apFirst`](#apfirst).
  706. *
  707. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  708. *
  709. * @since 2.12.0
  710. */
  711. exports.apFirstW = exports.apFirst;
  712. /**
  713. * Combine two effectful actions, keeping only the result of the second.
  714. *
  715. * @since 2.0.0
  716. */
  717. exports.apSecond = (0, Apply_1.apSecond)(exports.ApplyPar);
  718. /**
  719. * Less strict version of [`apSecond`](#apsecond).
  720. *
  721. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  722. *
  723. * @since 2.12.0
  724. */
  725. exports.apSecondW = exports.apSecond;
  726. /**
  727. * Runs computations in parallel.
  728. *
  729. * @category instances
  730. * @since 2.7.0
  731. */
  732. exports.ApplicativePar = {
  733. URI: exports.URI,
  734. map: _map,
  735. ap: _apPar,
  736. of: exports.of
  737. };
  738. /**
  739. * Runs computations sequentially.
  740. *
  741. * @category instances
  742. * @since 2.10.0
  743. */
  744. exports.ApplySeq = {
  745. URI: exports.URI,
  746. map: _map,
  747. ap: _apSeq
  748. };
  749. /**
  750. * Runs computations sequentially.
  751. *
  752. * @category instances
  753. * @since 2.7.0
  754. */
  755. exports.ApplicativeSeq = {
  756. URI: exports.URI,
  757. map: _map,
  758. ap: _apSeq,
  759. of: exports.of
  760. };
  761. /**
  762. * @category instances
  763. * @since 2.10.0
  764. */
  765. exports.Chain = {
  766. URI: exports.URI,
  767. map: _map,
  768. ap: _apPar,
  769. chain: _chain
  770. };
  771. /**
  772. * @category instances
  773. * @since 2.10.0
  774. */
  775. exports.Monad = {
  776. URI: exports.URI,
  777. map: _map,
  778. ap: _apPar,
  779. chain: _chain,
  780. of: exports.of
  781. };
  782. /**
  783. * @category instances
  784. * @since 2.10.0
  785. */
  786. exports.MonadIO = {
  787. URI: exports.URI,
  788. map: _map,
  789. ap: _apPar,
  790. chain: _chain,
  791. of: exports.of,
  792. fromIO: exports.fromIO
  793. };
  794. /**
  795. * @category instances
  796. * @since 2.10.0
  797. */
  798. exports.MonadTask = {
  799. URI: exports.URI,
  800. map: _map,
  801. ap: _apPar,
  802. chain: _chain,
  803. of: exports.of,
  804. fromIO: exports.fromIO,
  805. fromTask: exports.fromTask
  806. };
  807. /**
  808. * @category instances
  809. * @since 2.10.0
  810. */
  811. exports.MonadThrow = {
  812. URI: exports.URI,
  813. map: _map,
  814. ap: _apPar,
  815. chain: _chain,
  816. of: exports.of,
  817. throwError: exports.throwError
  818. };
  819. /**
  820. * Composes computations in sequence, using the return value of one computation to determine the next computation and
  821. * keeping only the result of the first.
  822. *
  823. * @category sequencing
  824. * @since 2.0.0
  825. */
  826. exports.chainFirst =
  827. /*#__PURE__*/ (0, Chain_1.chainFirst)(exports.Chain);
  828. /**
  829. * Less strict version of [`chainFirst`](#chainfirst).
  830. *
  831. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  832. *
  833. * @category sequencing
  834. * @since 2.8.0
  835. */
  836. exports.chainFirstW = exports.chainFirst;
  837. /**
  838. * @category instances
  839. * @since 2.7.0
  840. */
  841. exports.Bifunctor = {
  842. URI: exports.URI,
  843. bimap: _bimap,
  844. mapLeft: _mapLeft
  845. };
  846. /**
  847. * @category instances
  848. * @since 2.7.0
  849. */
  850. exports.Alt = {
  851. URI: exports.URI,
  852. map: _map,
  853. alt: _alt
  854. };
  855. /**
  856. * @category instances
  857. * @since 2.10.0
  858. */
  859. exports.FromEither = {
  860. URI: exports.URI,
  861. fromEither: exports.fromEither
  862. };
  863. /**
  864. * @category conversions
  865. * @since 2.0.0
  866. */
  867. exports.fromOption =
  868. /*#__PURE__*/ (0, FromEither_1.fromOption)(exports.FromEither);
  869. /**
  870. * @category lifting
  871. * @since 2.10.0
  872. */
  873. exports.fromOptionK =
  874. /*#__PURE__*/ (0, FromEither_1.fromOptionK)(exports.FromEither);
  875. /**
  876. * @category sequencing
  877. * @since 2.10.0
  878. */
  879. exports.chainOptionK = (0, FromEither_1.chainOptionK)(exports.FromEither, exports.Chain);
  880. /**
  881. * @category sequencing
  882. * @since 2.4.0
  883. */
  884. exports.chainEitherK =
  885. /*#__PURE__*/ (0, FromEither_1.chainEitherK)(exports.FromEither, exports.Chain);
  886. /**
  887. * Less strict version of [`chainEitherK`](#chaineitherk).
  888. *
  889. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  890. *
  891. * @category sequencing
  892. * @since 2.6.1
  893. */
  894. exports.chainEitherKW = exports.chainEitherK;
  895. /**
  896. * @category sequencing
  897. * @since 2.12.0
  898. */
  899. exports.chainFirstEitherK =
  900. /*#__PURE__*/ (0, FromEither_1.chainFirstEitherK)(exports.FromEither, exports.Chain);
  901. /**
  902. * Less strict version of [`chainFirstEitherK`](#chainfirsteitherk).
  903. *
  904. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  905. *
  906. * @category sequencing
  907. * @since 2.12.0
  908. */
  909. exports.chainFirstEitherKW = exports.chainFirstEitherK;
  910. /**
  911. * @category lifting
  912. * @since 2.0.0
  913. */
  914. exports.fromPredicate = (0, FromEither_1.fromPredicate)(exports.FromEither);
  915. /**
  916. * @category filtering
  917. * @since 2.0.0
  918. */
  919. exports.filterOrElse = (0, FromEither_1.filterOrElse)(exports.FromEither, exports.Chain);
  920. /**
  921. * Less strict version of [`filterOrElse`](#filterorelse).
  922. *
  923. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  924. *
  925. * @category filtering
  926. * @since 2.9.0
  927. */
  928. exports.filterOrElseW = exports.filterOrElse;
  929. /**
  930. * @category lifting
  931. * @since 2.4.0
  932. */
  933. exports.fromEitherK = (0, FromEither_1.fromEitherK)(exports.FromEither);
  934. /**
  935. * @category instances
  936. * @since 2.10.0
  937. */
  938. exports.FromIO = {
  939. URI: exports.URI,
  940. fromIO: exports.fromIO
  941. };
  942. /**
  943. * @category lifting
  944. * @since 2.10.0
  945. */
  946. exports.fromIOK = (0, FromIO_1.fromIOK)(exports.FromIO);
  947. /**
  948. * @category sequencing
  949. * @since 2.10.0
  950. */
  951. exports.chainIOK =
  952. /*#__PURE__*/ (0, FromIO_1.chainIOK)(exports.FromIO, exports.Chain);
  953. /**
  954. * @category sequencing
  955. * @since 2.10.0
  956. */
  957. exports.chainFirstIOK =
  958. /*#__PURE__*/ (0, FromIO_1.chainFirstIOK)(exports.FromIO, exports.Chain);
  959. /**
  960. * @category instances
  961. * @since 2.10.0
  962. */
  963. exports.FromTask = {
  964. URI: exports.URI,
  965. fromIO: exports.fromIO,
  966. fromTask: exports.fromTask
  967. };
  968. /**
  969. * @category lifting
  970. * @since 2.10.0
  971. */
  972. exports.fromTaskK = (0, FromTask_1.fromTaskK)(exports.FromTask);
  973. /**
  974. * @category sequencing
  975. * @since 2.10.0
  976. */
  977. exports.chainTaskK =
  978. /*#__PURE__*/ (0, FromTask_1.chainTaskK)(exports.FromTask, exports.Chain);
  979. /**
  980. * @category sequencing
  981. * @since 2.10.0
  982. */
  983. exports.chainFirstTaskK =
  984. /*#__PURE__*/ (0, FromTask_1.chainFirstTaskK)(exports.FromTask, exports.Chain);
  985. function taskify(f) {
  986. return function () {
  987. var args = Array.prototype.slice.call(arguments);
  988. return function () {
  989. return new Promise(function (resolve) {
  990. var cbResolver = function (e, r) { return (e != null ? resolve(_.left(e)) : resolve(_.right(r))); };
  991. f.apply(null, args.concat(cbResolver));
  992. });
  993. };
  994. };
  995. }
  996. exports.taskify = taskify;
  997. /**
  998. * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of
  999. * whether the body action throws (\*) or returns.
  1000. *
  1001. * (\*) i.e. returns a `Left`
  1002. *
  1003. * @since 2.0.0
  1004. */
  1005. var bracket = function (acquire, use, release) { return (0, exports.bracketW)(acquire, use, release); };
  1006. exports.bracket = bracket;
  1007. /**
  1008. * Less strict version of [`bracket`](#bracket).
  1009. *
  1010. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  1011. *
  1012. * @since 2.12.0
  1013. */
  1014. var bracketW = function (acquire, use, release) {
  1015. return (0, function_1.pipe)(acquire, (0, exports.chainW)(function (a) {
  1016. return (0, function_1.pipe)(use(a), T.chain(function (e) {
  1017. return (0, function_1.pipe)(release(a, e), (0, exports.chainW)(function () { return T.of(e); }));
  1018. }));
  1019. }));
  1020. };
  1021. exports.bracketW = bracketW;
  1022. // -------------------------------------------------------------------------------------
  1023. // do notation
  1024. // -------------------------------------------------------------------------------------
  1025. /**
  1026. * @category do notation
  1027. * @since 2.9.0
  1028. */
  1029. exports.Do = (0, exports.of)(_.emptyRecord);
  1030. /**
  1031. * @category do notation
  1032. * @since 2.8.0
  1033. */
  1034. exports.bindTo = (0, Functor_1.bindTo)(exports.Functor);
  1035. var let_ = /*#__PURE__*/ (0, Functor_1.let)(exports.Functor);
  1036. exports.let = let_;
  1037. /**
  1038. * @category do notation
  1039. * @since 2.8.0
  1040. */
  1041. exports.bind = (0, Chain_1.bind)(exports.Chain);
  1042. /**
  1043. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  1044. *
  1045. * @category do notation
  1046. * @since 2.8.0
  1047. */
  1048. exports.bindW = exports.bind;
  1049. /**
  1050. * @category do notation
  1051. * @since 2.8.0
  1052. */
  1053. exports.apS = (0, Apply_1.apS)(exports.ApplyPar);
  1054. /**
  1055. * Less strict version of [`apS`](#aps).
  1056. *
  1057. * The `W` suffix (short for **W**idening) means that the error types will be merged.
  1058. *
  1059. * @category do notation
  1060. * @since 2.8.0
  1061. */
  1062. exports.apSW = exports.apS;
  1063. /**
  1064. * @since 2.11.0
  1065. */
  1066. exports.ApT = (0, exports.of)(_.emptyReadonlyArray);
  1067. // -------------------------------------------------------------------------------------
  1068. // array utils
  1069. // -------------------------------------------------------------------------------------
  1070. /**
  1071. * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativePar)`.
  1072. *
  1073. * @category traversing
  1074. * @since 2.11.0
  1075. */
  1076. var traverseReadonlyNonEmptyArrayWithIndex = function (f) {
  1077. return (0, function_1.flow)(T.traverseReadonlyNonEmptyArrayWithIndex(f), T.map(E.traverseReadonlyNonEmptyArrayWithIndex(function_1.SK)));
  1078. };
  1079. exports.traverseReadonlyNonEmptyArrayWithIndex = traverseReadonlyNonEmptyArrayWithIndex;
  1080. /**
  1081. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativePar)`.
  1082. *
  1083. * @category traversing
  1084. * @since 2.11.0
  1085. */
  1086. var traverseReadonlyArrayWithIndex = function (f) {
  1087. var g = (0, exports.traverseReadonlyNonEmptyArrayWithIndex)(f);
  1088. return function (as) { return (_.isNonEmpty(as) ? g(as) : exports.ApT); };
  1089. };
  1090. exports.traverseReadonlyArrayWithIndex = traverseReadonlyArrayWithIndex;
  1091. /**
  1092. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  1093. *
  1094. * @category traversing
  1095. * @since 2.11.0
  1096. */
  1097. var traverseReadonlyNonEmptyArrayWithIndexSeq = function (f) {
  1098. return function (as) {
  1099. return function () {
  1100. return _.tail(as).reduce(function (acc, a, i) {
  1101. return acc.then(function (ebs) {
  1102. return _.isLeft(ebs)
  1103. ? acc
  1104. : f(i + 1, a)().then(function (eb) {
  1105. if (_.isLeft(eb)) {
  1106. return eb;
  1107. }
  1108. ebs.right.push(eb.right);
  1109. return ebs;
  1110. });
  1111. });
  1112. }, f(0, _.head(as))().then(E.map(_.singleton)));
  1113. };
  1114. };
  1115. };
  1116. exports.traverseReadonlyNonEmptyArrayWithIndexSeq = traverseReadonlyNonEmptyArrayWithIndexSeq;
  1117. /**
  1118. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  1119. *
  1120. * @category traversing
  1121. * @since 2.11.0
  1122. */
  1123. var traverseReadonlyArrayWithIndexSeq = function (f) {
  1124. var g = (0, exports.traverseReadonlyNonEmptyArrayWithIndexSeq)(f);
  1125. return function (as) { return (_.isNonEmpty(as) ? g(as) : exports.ApT); };
  1126. };
  1127. exports.traverseReadonlyArrayWithIndexSeq = traverseReadonlyArrayWithIndexSeq;
  1128. /**
  1129. * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.
  1130. *
  1131. * @category traversing
  1132. * @since 2.9.0
  1133. */
  1134. exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndex;
  1135. /**
  1136. * Equivalent to `ReadonlyArray#traverse(Applicative)`.
  1137. *
  1138. * @category traversing
  1139. * @since 2.9.0
  1140. */
  1141. var traverseArray = function (f) { return (0, exports.traverseReadonlyArrayWithIndex)(function (_, a) { return f(a); }); };
  1142. exports.traverseArray = traverseArray;
  1143. /**
  1144. * Equivalent to `ReadonlyArray#sequence(Applicative)`.
  1145. *
  1146. * @category traversing
  1147. * @since 2.9.0
  1148. */
  1149. exports.sequenceArray =
  1150. /*#__PURE__*/ (0, exports.traverseArray)(function_1.identity);
  1151. /**
  1152. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  1153. *
  1154. * @category traversing
  1155. * @since 2.9.0
  1156. */
  1157. exports.traverseSeqArrayWithIndex = exports.traverseReadonlyArrayWithIndexSeq;
  1158. /**
  1159. * Equivalent to `ReadonlyArray#traverse(ApplicativeSeq)`.
  1160. *
  1161. * @category traversing
  1162. * @since 2.9.0
  1163. */
  1164. var traverseSeqArray = function (f) { return (0, exports.traverseReadonlyArrayWithIndexSeq)(function (_, a) { return f(a); }); };
  1165. exports.traverseSeqArray = traverseSeqArray;
  1166. /**
  1167. * Equivalent to `ReadonlyArray#sequence(ApplicativeSeq)`.
  1168. *
  1169. * @category traversing
  1170. * @since 2.9.0
  1171. */
  1172. exports.sequenceSeqArray =
  1173. /*#__PURE__*/ (0, exports.traverseSeqArray)(function_1.identity);
  1174. // -------------------------------------------------------------------------------------
  1175. // deprecated
  1176. // -------------------------------------------------------------------------------------
  1177. /**
  1178. * This instance is deprecated, use small, specific instances instead.
  1179. * For example if a function needs a `Functor` instance, pass `TE.Functor` instead of `TE.taskEither`
  1180. * (where `TE` is from `import TE from 'fp-ts/TaskEither'`)
  1181. *
  1182. * @category zone of death
  1183. * @since 2.0.0
  1184. * @deprecated
  1185. */
  1186. exports.taskEither = {
  1187. URI: exports.URI,
  1188. bimap: _bimap,
  1189. mapLeft: _mapLeft,
  1190. map: _map,
  1191. of: exports.of,
  1192. ap: _apPar,
  1193. chain: _chain,
  1194. alt: _alt,
  1195. fromIO: exports.fromIO,
  1196. fromTask: exports.fromTask,
  1197. throwError: exports.throwError
  1198. };
  1199. /**
  1200. * This instance is deprecated, use small, specific instances instead.
  1201. * For example if a function needs a `Functor` instance, pass `TE.Functor` instead of `TE.taskEitherSeq`
  1202. * (where `TE` is from `import TE from 'fp-ts/TaskEither'`)
  1203. *
  1204. * @category zone of death
  1205. * @since 2.0.0
  1206. * @deprecated
  1207. */
  1208. exports.taskEitherSeq = {
  1209. URI: exports.URI,
  1210. bimap: _bimap,
  1211. mapLeft: _mapLeft,
  1212. map: _map,
  1213. of: exports.of,
  1214. ap: _apSeq,
  1215. chain: _chain,
  1216. alt: _alt,
  1217. fromIO: exports.fromIO,
  1218. fromTask: exports.fromTask,
  1219. throwError: exports.throwError
  1220. };
  1221. /**
  1222. * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.
  1223. *
  1224. * @category zone of death
  1225. * @since 2.0.0
  1226. * @deprecated
  1227. */
  1228. exports.getApplySemigroup =
  1229. /*#__PURE__*/ (0, Apply_1.getApplySemigroup)(exports.ApplySeq);
  1230. /**
  1231. * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.
  1232. *
  1233. * @category zone of death
  1234. * @since 2.0.0
  1235. * @deprecated
  1236. */
  1237. exports.getApplyMonoid =
  1238. /*#__PURE__*/ (0, Applicative_1.getApplicativeMonoid)(exports.ApplicativeSeq);
  1239. /**
  1240. * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.
  1241. *
  1242. * @category zone of death
  1243. * @since 2.0.0
  1244. * @deprecated
  1245. */
  1246. var getSemigroup = function (S) {
  1247. return (0, Apply_1.getApplySemigroup)(T.ApplySeq)(E.getSemigroup(S));
  1248. };
  1249. exports.getSemigroup = getSemigroup;
  1250. /**
  1251. * Use [`getApplicativeTaskValidation`](#getapplicativetaskvalidation) and [`getAltTaskValidation`](#getalttaskvalidation) instead.
  1252. *
  1253. * @category zone of death
  1254. * @since 2.0.0
  1255. * @deprecated
  1256. */
  1257. function getTaskValidation(SE) {
  1258. var applicativeTaskValidation = getApplicativeTaskValidation(T.ApplicativePar, SE);
  1259. var altTaskValidation = getAltTaskValidation(SE);
  1260. return {
  1261. URI: exports.URI,
  1262. _E: undefined,
  1263. map: _map,
  1264. ap: applicativeTaskValidation.ap,
  1265. of: exports.of,
  1266. chain: _chain,
  1267. bimap: _bimap,
  1268. mapLeft: _mapLeft,
  1269. alt: altTaskValidation.alt,
  1270. fromIO: exports.fromIO,
  1271. fromTask: exports.fromTask,
  1272. throwError: exports.throwError
  1273. };
  1274. }
  1275. exports.getTaskValidation = getTaskValidation;