版博士V2.0程序
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

603 wiersze
16 KiB

  1. /**
  2. * @since 2.10.0
  3. */
  4. import { Alt1 } from './Alt'
  5. import { Alternative1 } from './Alternative'
  6. import { Applicative1 } from './Applicative'
  7. import { Apply1 } from './Apply'
  8. import { Chain1 } from './Chain'
  9. import { Compactable1 } from './Compactable'
  10. import { Either } from './Either'
  11. import { Filterable1 } from './Filterable'
  12. import { FromEither1 } from './FromEither'
  13. import { FromIO1 } from './FromIO'
  14. import { FromTask1 } from './FromTask'
  15. import { Lazy } from './function'
  16. import { Functor1 } from './Functor'
  17. import { IO } from './IO'
  18. import { Monad1 } from './Monad'
  19. import { MonadIO1 } from './MonadIO'
  20. import { MonadTask1 } from './MonadTask'
  21. import * as O from './Option'
  22. import { Pointed1 } from './Pointed'
  23. import { Predicate } from './Predicate'
  24. import { ReadonlyNonEmptyArray } from './ReadonlyNonEmptyArray'
  25. import { Refinement } from './Refinement'
  26. import { Separated } from './Separated'
  27. import * as T from './Task'
  28. import { TaskEither } from './TaskEither'
  29. import { Zero1 } from './Zero'
  30. import Task = T.Task
  31. import Option = O.Option
  32. /**
  33. * @category model
  34. * @since 2.10.0
  35. */
  36. export interface TaskOption<A> extends Task<Option<A>> {}
  37. /**
  38. * @category constructors
  39. * @since 2.10.0
  40. */
  41. export declare const some: <A>(a: A) => TaskOption<A>
  42. /**
  43. * @category lifting
  44. * @since 2.10.0
  45. */
  46. export declare const fromPredicate: {
  47. <A, B extends A>(refinement: Refinement<A, B>): (a: A) => TaskOption<B>
  48. <A>(predicate: Predicate<A>): <B extends A>(b: B) => TaskOption<B>
  49. <A>(predicate: Predicate<A>): (a: A) => TaskOption<A>
  50. }
  51. /**
  52. * @category conversions
  53. * @since 2.10.0
  54. */
  55. export declare const fromOption: <A>(fa: Option<A>) => TaskOption<A>
  56. /**
  57. * @category conversions
  58. * @since 2.10.0
  59. */
  60. export declare const fromEither: <A>(fa: Either<unknown, A>) => TaskOption<A>
  61. /**
  62. * @category conversions
  63. * @since 2.10.0
  64. */
  65. export declare const fromIO: <A>(fa: IO<A>) => TaskOption<A>
  66. /**
  67. * @category conversions
  68. * @since 2.10.0
  69. */
  70. export declare const fromTask: <A>(fa: Task<A>) => TaskOption<A>
  71. /**
  72. * @category conversions
  73. * @since 2.11.0
  74. */
  75. export declare const fromTaskEither: <A>(fa: TaskEither<unknown, A>) => TaskOption<A>
  76. /**
  77. * @category pattern matching
  78. * @since 2.10.0
  79. */
  80. export declare const match: <B, A>(onNone: () => B, onSome: (a: A) => B) => (ma: TaskOption<A>) => Task<B>
  81. /**
  82. * Less strict version of [`match`](#match).
  83. *
  84. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  85. *
  86. * @category pattern matching
  87. * @since 2.10.0
  88. */
  89. export declare const matchW: <B, A, C>(onNone: () => B, onSome: (a: A) => C) => (ma: TaskOption<A>) => Task<B | C>
  90. /**
  91. * The `E` suffix (short for **E**ffect) means that the handlers return an effect (`Task`).
  92. *
  93. * @category pattern matching
  94. * @since 2.10.0
  95. */
  96. export declare const matchE: <B, A>(onNone: () => Task<B>, onSome: (a: A) => Task<B>) => (ma: TaskOption<A>) => Task<B>
  97. /**
  98. * Alias of [`matchE`](#matche).
  99. *
  100. * @category pattern matching
  101. * @since 2.10.0
  102. */
  103. export declare const fold: <B, A>(
  104. onNone: () => T.Task<B>,
  105. onSome: (a: A) => T.Task<B>
  106. ) => (ma: TaskOption<A>) => T.Task<B>
  107. /**
  108. * Less strict version of [`matchE`](#matche).
  109. *
  110. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  111. *
  112. * @category pattern matching
  113. * @since 2.10.0
  114. */
  115. export declare const matchEW: <B, C, A>(
  116. onNone: () => Task<B>,
  117. onSome: (a: A) => Task<C>
  118. ) => (ma: TaskOption<A>) => Task<B | C>
  119. /**
  120. * Alias of [`matchEW`](#matchew).
  121. *
  122. * @category pattern matching
  123. * @since 2.10.0
  124. */
  125. export declare const foldW: <B, C, A>(
  126. onNone: () => T.Task<B>,
  127. onSome: (a: A) => T.Task<C>
  128. ) => (ma: TaskOption<A>) => T.Task<B | C>
  129. /**
  130. * @category error handling
  131. * @since 2.10.0
  132. */
  133. export declare const getOrElse: <A>(onNone: Lazy<Task<A>>) => (fa: TaskOption<A>) => Task<A>
  134. /**
  135. * Less strict version of [`getOrElse`](#getorelse).
  136. *
  137. * The `W` suffix (short for **W**idening) means that the handler return type will be merged.
  138. *
  139. * @category error handling
  140. * @since 2.10.0
  141. */
  142. export declare const getOrElseW: <B>(onNone: Lazy<Task<B>>) => <A>(ma: TaskOption<A>) => Task<A | B>
  143. /**
  144. * @category conversions
  145. * @since 2.10.0
  146. */
  147. export declare const fromNullable: <A>(a: A) => TaskOption<NonNullable<A>>
  148. /**
  149. * Transforms a `Promise` that may reject to a `Promise` that never rejects and returns an `Option` instead.
  150. *
  151. * See also [`tryCatchK`](#trycatchk).
  152. *
  153. * @category interop
  154. * @since 2.10.0
  155. */
  156. export declare const tryCatch: <A>(f: Lazy<Promise<A>>) => TaskOption<A>
  157. /**
  158. * Converts a function returning a `Promise` to one returning a `TaskOption`.
  159. *
  160. * @category interop
  161. * @since 2.10.0
  162. */
  163. export declare const tryCatchK: <A extends readonly unknown[], B>(
  164. f: (...a: A) => Promise<B>
  165. ) => (...a: A) => TaskOption<B>
  166. /**
  167. * @category lifting
  168. * @since 2.10.0
  169. */
  170. export declare const fromNullableK: <A extends ReadonlyArray<unknown>, B>(
  171. f: (...a: A) => B | null | undefined
  172. ) => (...a: A) => TaskOption<NonNullable<B>>
  173. /**
  174. * @category sequencing
  175. * @since 2.10.0
  176. */
  177. export declare const chainNullableK: <A, B>(
  178. f: (a: A) => B | null | undefined
  179. ) => (ma: TaskOption<A>) => TaskOption<NonNullable<B>>
  180. /**
  181. * @category lifting
  182. * @since 2.10.0
  183. */
  184. export declare const fromOptionK: <A extends ReadonlyArray<unknown>, B>(
  185. f: (...a: A) => Option<B>
  186. ) => (...a: A) => TaskOption<B>
  187. /**
  188. * @category sequencing
  189. * @since 2.10.0
  190. */
  191. export declare const chainOptionK: <A, B>(f: (a: A) => Option<B>) => (ma: TaskOption<A>) => TaskOption<B>
  192. /**
  193. * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types
  194. * use the type constructor `F` to represent some computational context.
  195. *
  196. * @category mapping
  197. * @since 2.10.0
  198. */
  199. export declare const map: <A, B>(f: (a: A) => B) => (fa: TaskOption<A>) => TaskOption<B>
  200. /**
  201. * @since 2.10.0
  202. */
  203. export declare const ap: <A>(fa: TaskOption<A>) => <B>(fab: TaskOption<(a: A) => B>) => TaskOption<B>
  204. /**
  205. * @category constructors
  206. * @since 2.10.0
  207. */
  208. export declare const of: <A>(a: A) => TaskOption<A>
  209. /**
  210. * @category sequencing
  211. * @since 2.10.0
  212. */
  213. export declare const chain: <A, B>(f: (a: A) => TaskOption<B>) => (ma: TaskOption<A>) => TaskOption<B>
  214. /**
  215. * @category sequencing
  216. * @since 2.10.0
  217. */
  218. export declare const flatten: <A>(mma: TaskOption<TaskOption<A>>) => TaskOption<A>
  219. /**
  220. * @category error handling
  221. * @since 2.10.0
  222. */
  223. export declare const alt: <A>(second: Lazy<TaskOption<A>>) => (first: TaskOption<A>) => TaskOption<A>
  224. /**
  225. * Less strict version of [`alt`](#alt).
  226. *
  227. * The `W` suffix (short for **W**idening) means that the return types will be merged.
  228. *
  229. * @category error handling
  230. * @since 2.10.0
  231. */
  232. export declare const altW: <B>(second: Lazy<TaskOption<B>>) => <A>(first: TaskOption<A>) => TaskOption<A | B>
  233. /**
  234. * @since 2.10.0
  235. */
  236. export declare const zero: <A>() => TaskOption<A>
  237. /**
  238. * @category constructors
  239. * @since 2.10.0
  240. */
  241. export declare const none: TaskOption<never>
  242. /**
  243. * @category filtering
  244. * @since 2.10.0
  245. */
  246. export declare const compact: Compactable1<URI>['compact']
  247. /**
  248. * @category filtering
  249. * @since 2.10.0
  250. */
  251. export declare const separate: Compactable1<URI>['separate']
  252. /**
  253. * @category filtering
  254. * @since 2.10.0
  255. */
  256. export declare const filter: {
  257. <A, B extends A>(refinement: Refinement<A, B>): (fb: TaskOption<A>) => TaskOption<B>
  258. <A>(predicate: Predicate<A>): <B extends A>(fb: TaskOption<B>) => TaskOption<B>
  259. <A>(predicate: Predicate<A>): (fa: TaskOption<A>) => TaskOption<A>
  260. }
  261. /**
  262. * @category filtering
  263. * @since 2.10.0
  264. */
  265. export declare const filterMap: <A, B>(f: (a: A) => Option<B>) => (fga: TaskOption<A>) => TaskOption<B>
  266. /**
  267. * @category filtering
  268. * @since 2.10.0
  269. */
  270. export declare const partition: {
  271. <A, B extends A>(refinement: Refinement<A, B>): (fb: TaskOption<A>) => Separated<TaskOption<A>, TaskOption<B>>
  272. <A>(predicate: Predicate<A>): <B extends A>(fb: TaskOption<B>) => Separated<TaskOption<B>, TaskOption<B>>
  273. <A>(predicate: Predicate<A>): (fa: TaskOption<A>) => Separated<TaskOption<A>, TaskOption<A>>
  274. }
  275. /**
  276. * @category filtering
  277. * @since 2.10.0
  278. */
  279. export declare const partitionMap: <A, B, C>(
  280. f: (a: A) => Either<B, C>
  281. ) => (fa: TaskOption<A>) => Separated<TaskOption<B>, TaskOption<C>>
  282. /**
  283. * @category type lambdas
  284. * @since 2.10.0
  285. */
  286. export declare const URI = 'TaskOption'
  287. /**
  288. * @category type lambdas
  289. * @since 2.10.0
  290. */
  291. export declare type URI = typeof URI
  292. declare module './HKT' {
  293. interface URItoKind<A> {
  294. readonly [URI]: TaskOption<A>
  295. }
  296. }
  297. /**
  298. * @category instances
  299. * @since 2.10.0
  300. */
  301. export declare const Functor: Functor1<URI>
  302. /**
  303. * @category mapping
  304. * @since 2.10.0
  305. */
  306. export declare const flap: <A>(a: A) => <B>(fab: TaskOption<(a: A) => B>) => TaskOption<B>
  307. /**
  308. * @category instances
  309. * @since 2.10.0
  310. */
  311. export declare const Pointed: Pointed1<URI>
  312. /**
  313. * Runs computations in parallel.
  314. *
  315. * @category instances
  316. * @since 2.10.0
  317. */
  318. export declare const ApplyPar: Apply1<URI>
  319. /**
  320. * Combine two effectful actions, keeping only the result of the first.
  321. *
  322. * @since 2.10.0
  323. */
  324. export declare const apFirst: <B>(second: TaskOption<B>) => <A>(first: TaskOption<A>) => TaskOption<A>
  325. /**
  326. * Combine two effectful actions, keeping only the result of the second.
  327. *
  328. * @since 2.10.0
  329. */
  330. export declare const apSecond: <B>(second: TaskOption<B>) => <A>(first: TaskOption<A>) => TaskOption<B>
  331. /**
  332. * Runs computations in parallel.
  333. *
  334. * @category instances
  335. * @since 2.10.0
  336. */
  337. export declare const ApplicativePar: Applicative1<URI>
  338. /**
  339. * Runs computations sequentially.
  340. *
  341. * @category instances
  342. * @since 2.10.0
  343. */
  344. export declare const ApplySeq: Apply1<URI>
  345. /**
  346. * Runs computations sequentially.
  347. *
  348. * @category instances
  349. * @since 2.10.0
  350. */
  351. export declare const ApplicativeSeq: Applicative1<URI>
  352. /**
  353. * @category instances
  354. * @since 2.10.0
  355. */
  356. export declare const Chain: Chain1<URI>
  357. /**
  358. * Composes computations in sequence, using the return value of one computation to determine the next computation and
  359. * keeping only the result of the first.
  360. *
  361. * @category sequencing
  362. * @since 2.10.0
  363. */
  364. export declare const chainFirst: <A, B>(f: (a: A) => TaskOption<B>) => (first: TaskOption<A>) => TaskOption<A>
  365. /**
  366. * @category instances
  367. * @since 2.10.0
  368. */
  369. export declare const Alt: Alt1<URI>
  370. /**
  371. * @category instances
  372. * @since 2.11.0
  373. */
  374. export declare const Zero: Zero1<URI>
  375. /**
  376. * @category do notation
  377. * @since 2.11.0
  378. */
  379. export declare const guard: (b: boolean) => TaskOption<void>
  380. /**
  381. * @category instances
  382. * @since 2.10.0
  383. */
  384. export declare const Alternative: Alternative1<URI>
  385. /**
  386. * @category instances
  387. * @since 2.10.0
  388. */
  389. export declare const Monad: Monad1<URI>
  390. /**
  391. * @category instances
  392. * @since 2.10.0
  393. */
  394. export declare const MonadIO: MonadIO1<URI>
  395. /**
  396. * @category instances
  397. * @since 2.10.0
  398. */
  399. export declare const MonadTask: MonadTask1<URI>
  400. /**
  401. * @category instances
  402. * @since 2.10.0
  403. */
  404. export declare const Compactable: Compactable1<URI>
  405. /**
  406. * @category instances
  407. * @since 2.10.0
  408. */
  409. export declare const Filterable: Filterable1<URI>
  410. /**
  411. * @category instances
  412. * @since 2.10.0
  413. */
  414. export declare const FromIO: FromIO1<URI>
  415. /**
  416. * @category lifting
  417. * @since 2.10.0
  418. */
  419. export declare const fromIOK: <A extends ReadonlyArray<unknown>, B>(f: (...a: A) => IO<B>) => (...a: A) => TaskOption<B>
  420. /**
  421. * @category sequencing
  422. * @since 2.10.0
  423. */
  424. export declare const chainIOK: <A, B>(f: (a: A) => IO<B>) => (first: TaskOption<A>) => TaskOption<B>
  425. /**
  426. * @category sequencing
  427. * @since 2.10.0
  428. */
  429. export declare const chainFirstIOK: <A, B>(f: (a: A) => IO<B>) => (first: TaskOption<A>) => TaskOption<A>
  430. /**
  431. * @category instances
  432. * @since 2.11.0
  433. */
  434. export declare const FromEither: FromEither1<URI>
  435. /**
  436. * @category lifting
  437. * @since 2.12.0
  438. */
  439. export declare const fromEitherK: <E, A extends ReadonlyArray<unknown>, B>(
  440. f: (...a: A) => Either<E, B>
  441. ) => (...a: A) => TaskOption<B>
  442. /**
  443. * @category sequencing
  444. * @since 2.12.0
  445. */
  446. export declare const chainEitherK: <E, A, B>(f: (a: A) => Either<E, B>) => (ma: TaskOption<A>) => TaskOption<B>
  447. /**
  448. * @category sequencing
  449. * @since 2.12.0
  450. */
  451. export declare const chainFirstEitherK: <E, A, B>(f: (a: A) => Either<E, B>) => (ma: TaskOption<A>) => TaskOption<A>
  452. /**
  453. * @category instances
  454. * @since 2.10.0
  455. */
  456. export declare const FromTask: FromTask1<URI>
  457. /**
  458. * @category lifting
  459. * @since 2.10.0
  460. */
  461. export declare const fromTaskK: <A extends ReadonlyArray<unknown>, B>(
  462. f: (...a: A) => T.Task<B>
  463. ) => (...a: A) => TaskOption<B>
  464. /**
  465. * @category sequencing
  466. * @since 2.10.0
  467. */
  468. export declare const chainTaskK: <A, B>(f: (a: A) => T.Task<B>) => (first: TaskOption<A>) => TaskOption<B>
  469. /**
  470. * @category sequencing
  471. * @since 2.10.0
  472. */
  473. export declare const chainFirstTaskK: <A, B>(f: (a: A) => T.Task<B>) => (first: TaskOption<A>) => TaskOption<A>
  474. /**
  475. * @category do notation
  476. * @since 2.10.0
  477. */
  478. export declare const Do: TaskOption<{}>
  479. /**
  480. * @category do notation
  481. * @since 2.10.0
  482. */
  483. export declare const bindTo: <N extends string>(
  484. name: N
  485. ) => <A>(fa: TaskOption<A>) => TaskOption<{ readonly [K in N]: A }>
  486. declare const let_: <N extends string, A, B>(
  487. name: Exclude<N, keyof A>,
  488. f: (a: A) => B
  489. ) => (fa: TaskOption<A>) => TaskOption<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
  490. export {
  491. /**
  492. * @category do notation
  493. * @since 2.13.0
  494. */
  495. let_ as let
  496. }
  497. /**
  498. * @category do notation
  499. * @since 2.10.0
  500. */
  501. export declare const bind: <N extends string, A, B>(
  502. name: Exclude<N, keyof A>,
  503. f: (a: A) => TaskOption<B>
  504. ) => (ma: TaskOption<A>) => TaskOption<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
  505. /**
  506. * @category do notation
  507. * @since 2.10.0
  508. */
  509. export declare const apS: <N extends string, A, B>(
  510. name: Exclude<N, keyof A>,
  511. fb: TaskOption<B>
  512. ) => (fa: TaskOption<A>) => TaskOption<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
  513. /**
  514. * @since 2.11.0
  515. */
  516. export declare const ApT: TaskOption<readonly []>
  517. /**
  518. * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativePar)`.
  519. *
  520. * @category traversing
  521. * @since 2.11.0
  522. */
  523. export declare const traverseReadonlyNonEmptyArrayWithIndex: <A, B>(
  524. f: (index: number, a: A) => TaskOption<B>
  525. ) => (as: ReadonlyNonEmptyArray<A>) => TaskOption<ReadonlyNonEmptyArray<B>>
  526. /**
  527. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativePar)`.
  528. *
  529. * @category traversing
  530. * @since 2.11.0
  531. */
  532. export declare const traverseReadonlyArrayWithIndex: <A, B>(
  533. f: (index: number, a: A) => TaskOption<B>
  534. ) => (as: readonly A[]) => TaskOption<readonly B[]>
  535. /**
  536. * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativeSeq)`.
  537. *
  538. * @category traversing
  539. * @since 2.11.0
  540. */
  541. export declare const traverseReadonlyNonEmptyArrayWithIndexSeq: <A, B>(
  542. f: (index: number, a: A) => TaskOption<B>
  543. ) => (as: ReadonlyNonEmptyArray<A>) => TaskOption<ReadonlyNonEmptyArray<B>>
  544. /**
  545. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  546. *
  547. * @category traversing
  548. * @since 2.11.0
  549. */
  550. export declare const traverseReadonlyArrayWithIndexSeq: <A, B>(
  551. f: (index: number, a: A) => TaskOption<B>
  552. ) => (as: readonly A[]) => TaskOption<readonly B[]>
  553. /**
  554. * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.
  555. *
  556. * @category traversing
  557. * @since 2.10.0
  558. */
  559. export declare const traverseArrayWithIndex: <A, B>(
  560. f: (index: number, a: A) => TaskOption<B>
  561. ) => (as: ReadonlyArray<A>) => TaskOption<ReadonlyArray<B>>
  562. /**
  563. * Equivalent to `ReadonlyArray#traverse(Applicative)`.
  564. *
  565. * @category traversing
  566. * @since 2.10.0
  567. */
  568. export declare const traverseArray: <A, B>(
  569. f: (a: A) => TaskOption<B>
  570. ) => (as: ReadonlyArray<A>) => TaskOption<ReadonlyArray<B>>
  571. /**
  572. * Equivalent to `ReadonlyArray#sequence(Applicative)`.
  573. *
  574. * @category traversing
  575. * @since 2.10.0
  576. */
  577. export declare const sequenceArray: <A>(as: ReadonlyArray<TaskOption<A>>) => TaskOption<ReadonlyArray<A>>
  578. /**
  579. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  580. *
  581. * @category traversing
  582. * @since 2.10.0
  583. */
  584. export declare const traverseSeqArrayWithIndex: <A, B>(
  585. f: (index: number, a: A) => TaskOption<B>
  586. ) => (as: ReadonlyArray<A>) => TaskOption<ReadonlyArray<B>>
  587. /**
  588. * Equivalent to `ReadonlyArray#traverse(ApplicativeSeq)`.
  589. *
  590. * @category traversing
  591. * @since 2.10.0
  592. */
  593. export declare const traverseSeqArray: <A, B>(
  594. f: (a: A) => TaskOption<B>
  595. ) => (as: ReadonlyArray<A>) => TaskOption<ReadonlyArray<B>>
  596. /**
  597. * Equivalent to `ReadonlyArray#sequence(ApplicativeSeq)`.
  598. *
  599. * @category traversing
  600. * @since 2.10.0
  601. */
  602. export declare const sequenceSeqArray: <A>(as: ReadonlyArray<TaskOption<A>>) => TaskOption<ReadonlyArray<A>>