@fncts/query 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/Cache/api.d.ts +28 -0
  2. package/Cache/definition.d.ts +15 -0
  3. package/Cache.d.ts +2 -0
  4. package/CompletedRequestMap.d.ts +17 -0
  5. package/DataSource/api.d.ts +38 -0
  6. package/DataSource/definition.d.ts +46 -0
  7. package/DataSource.d.ts +2 -0
  8. package/DataSourceAspect.d.ts +7 -0
  9. package/Described.d.ts +19 -0
  10. package/Query/api/bimap.d.ts +6 -0
  11. package/Query/api/catchAllCause.d.ts +12 -0
  12. package/Query/api/collectAll.d.ts +7 -0
  13. package/Query/api/collectAllBatched.d.ts +7 -0
  14. package/Query/api/collectAllConcurrent.d.ts +7 -0
  15. package/Query/api/defer.d.ts +7 -0
  16. package/Query/api/ensuring.d.ts +6 -0
  17. package/Query/api/environment.d.ts +47 -0
  18. package/Query/api/flatMap.d.ts +11 -0
  19. package/Query/api/foreach.d.ts +7 -0
  20. package/Query/api/foreachBatched.d.ts +7 -0
  21. package/Query/api/foreachConcurrent.d.ts +7 -0
  22. package/Query/api/fromRequest.d.ts +10 -0
  23. package/Query/api/map.d.ts +6 -0
  24. package/Query/api/mapDataSources.d.ts +7 -0
  25. package/Query/api/mapError.d.ts +6 -0
  26. package/Query/api/mapErrorCause.d.ts +7 -0
  27. package/Query/api/mapIO.d.ts +7 -0
  28. package/Query/api/match.d.ts +6 -0
  29. package/Query/api/matchCauseQuery.d.ts +7 -0
  30. package/Query/api/matchQuery.d.ts +6 -0
  31. package/Query/api/orHalt.d.ts +11 -0
  32. package/Query/api/race.d.ts +11 -0
  33. package/Query/api/run.d.ts +18 -0
  34. package/Query/api/timeout.d.ts +26 -0
  35. package/Query/api/zipWith.d.ts +7 -0
  36. package/Query/api/zipWithBatched.d.ts +6 -0
  37. package/Query/api/zipWithConcurrent.d.ts +6 -0
  38. package/Query/api.d.ts +66 -0
  39. package/Query/definition.d.ts +13 -0
  40. package/Query.d.ts +30 -0
  41. package/QueryFailure.d.ts +6 -0
  42. package/Request.d.ts +38 -0
  43. package/TestSpec.d.ts +6 -0
  44. package/_cjs/Cache/api.cjs +56 -0
  45. package/_cjs/Cache/api.cjs.map +1 -0
  46. package/_cjs/Cache/definition.cjs +13 -0
  47. package/_cjs/Cache/definition.cjs.map +1 -0
  48. package/_cjs/Cache.cjs +28 -0
  49. package/_cjs/Cache.cjs.map +1 -0
  50. package/_cjs/CompletedRequestMap.cjs +40 -0
  51. package/_cjs/CompletedRequestMap.cjs.map +1 -0
  52. package/_cjs/DataSource/api.cjs +111 -0
  53. package/_cjs/DataSource/api.cjs.map +1 -0
  54. package/_cjs/DataSource/definition.cjs +76 -0
  55. package/_cjs/DataSource/definition.cjs.map +1 -0
  56. package/_cjs/DataSource.cjs +28 -0
  57. package/_cjs/DataSource.cjs.map +1 -0
  58. package/_cjs/DataSourceAspect.cjs +17 -0
  59. package/_cjs/DataSourceAspect.cjs.map +1 -0
  60. package/_cjs/Described.cjs +32 -0
  61. package/_cjs/Described.cjs.map +1 -0
  62. package/_cjs/Query/api/bimap.cjs +19 -0
  63. package/_cjs/Query/api/bimap.cjs.map +1 -0
  64. package/_cjs/Query/api/catchAllCause.cjs +29 -0
  65. package/_cjs/Query/api/catchAllCause.cjs.map +1 -0
  66. package/_cjs/Query/api/collectAll.cjs +17 -0
  67. package/_cjs/Query/api/collectAll.cjs.map +1 -0
  68. package/_cjs/Query/api/collectAllBatched.cjs +17 -0
  69. package/_cjs/Query/api/collectAllBatched.cjs.map +1 -0
  70. package/_cjs/Query/api/collectAllConcurrent.cjs +17 -0
  71. package/_cjs/Query/api/collectAllConcurrent.cjs.map +1 -0
  72. package/_cjs/Query/api/defer.cjs +18 -0
  73. package/_cjs/Query/api/defer.cjs.map +1 -0
  74. package/_cjs/Query/api/ensuring.cjs +20 -0
  75. package/_cjs/Query/api/ensuring.cjs.map +1 -0
  76. package/_cjs/Query/api/environment.cjs +94 -0
  77. package/_cjs/Query/api/environment.cjs.map +1 -0
  78. package/_cjs/Query/api/flatMap.cjs +35 -0
  79. package/_cjs/Query/api/flatMap.cjs.map +1 -0
  80. package/_cjs/Query/api/foreach.cjs +26 -0
  81. package/_cjs/Query/api/foreach.cjs.map +1 -0
  82. package/_cjs/Query/api/foreachBatched.cjs +26 -0
  83. package/_cjs/Query/api/foreachBatched.cjs.map +1 -0
  84. package/_cjs/Query/api/foreachConcurrent.cjs +19 -0
  85. package/_cjs/Query/api/foreachConcurrent.cjs.map +1 -0
  86. package/_cjs/Query/api/fromRequest.cjs +38 -0
  87. package/_cjs/Query/api/fromRequest.cjs.map +1 -0
  88. package/_cjs/Query/api/map.cjs +21 -0
  89. package/_cjs/Query/api/map.cjs.map +1 -0
  90. package/_cjs/Query/api/mapDataSources.cjs +21 -0
  91. package/_cjs/Query/api/mapDataSources.cjs.map +1 -0
  92. package/_cjs/Query/api/mapError.cjs +19 -0
  93. package/_cjs/Query/api/mapError.cjs.map +1 -0
  94. package/_cjs/Query/api/mapErrorCause.cjs +19 -0
  95. package/_cjs/Query/api/mapErrorCause.cjs.map +1 -0
  96. package/_cjs/Query/api/mapIO.cjs +20 -0
  97. package/_cjs/Query/api/mapIO.cjs.map +1 -0
  98. package/_cjs/Query/api/match.cjs +20 -0
  99. package/_cjs/Query/api/match.cjs.map +1 -0
  100. package/_cjs/Query/api/matchCauseQuery.cjs +26 -0
  101. package/_cjs/Query/api/matchCauseQuery.cjs.map +1 -0
  102. package/_cjs/Query/api/matchQuery.cjs +21 -0
  103. package/_cjs/Query/api/matchQuery.cjs.map +1 -0
  104. package/_cjs/Query/api/orHalt.cjs +29 -0
  105. package/_cjs/Query/api/orHalt.cjs.map +1 -0
  106. package/_cjs/Query/api/race.cjs +41 -0
  107. package/_cjs/Query/api/race.cjs.map +1 -0
  108. package/_cjs/Query/api/run.cjs +49 -0
  109. package/_cjs/Query/api/run.cjs.map +1 -0
  110. package/_cjs/Query/api/timeout.cjs +71 -0
  111. package/_cjs/Query/api/timeout.cjs.map +1 -0
  112. package/_cjs/Query/api/zipWith.cjs +39 -0
  113. package/_cjs/Query/api/zipWith.cjs.map +1 -0
  114. package/_cjs/Query/api/zipWithBatched.cjs +39 -0
  115. package/_cjs/Query/api/zipWithBatched.cjs.map +1 -0
  116. package/_cjs/Query/api/zipWithConcurrent.cjs +39 -0
  117. package/_cjs/Query/api/zipWithConcurrent.cjs.map +1 -0
  118. package/_cjs/Query/api.cjs +99 -0
  119. package/_cjs/Query/api.cjs.map +1 -0
  120. package/_cjs/Query/definition.cjs +22 -0
  121. package/_cjs/Query/definition.cjs.map +1 -0
  122. package/_cjs/Query.cjs +336 -0
  123. package/_cjs/Query.cjs.map +1 -0
  124. package/_cjs/QueryFailure.cjs +15 -0
  125. package/_cjs/QueryFailure.cjs.map +1 -0
  126. package/_cjs/Request.cjs +54 -0
  127. package/_cjs/Request.cjs.map +1 -0
  128. package/_cjs/global.cjs +6 -0
  129. package/_cjs/global.cjs.map +1 -0
  130. package/_cjs/index.cjs +6 -0
  131. package/_cjs/index.cjs.map +1 -0
  132. package/_cjs/internal/BlockedRequest.cjs +30 -0
  133. package/_cjs/internal/BlockedRequest.cjs.map +1 -0
  134. package/_cjs/internal/BlockedRequests.cjs +367 -0
  135. package/_cjs/internal/BlockedRequests.cjs.map +1 -0
  136. package/_cjs/internal/Continue.cjs +292 -0
  137. package/_cjs/internal/Continue.cjs.map +1 -0
  138. package/_cjs/internal/Parallel.cjs +81 -0
  139. package/_cjs/internal/Parallel.cjs.map +1 -0
  140. package/_cjs/internal/Result.cjs +234 -0
  141. package/_cjs/internal/Result.cjs.map +1 -0
  142. package/_cjs/internal/Sequential.cjs +59 -0
  143. package/_cjs/internal/Sequential.cjs.map +1 -0
  144. package/_mjs/Cache/api.mjs +44 -0
  145. package/_mjs/Cache/api.mjs.map +1 -0
  146. package/_mjs/Cache/definition.mjs +6 -0
  147. package/_mjs/Cache/definition.mjs.map +1 -0
  148. package/_mjs/Cache.mjs +4 -0
  149. package/_mjs/Cache.mjs.map +1 -0
  150. package/_mjs/CompletedRequestMap.mjs +31 -0
  151. package/_mjs/CompletedRequestMap.mjs.map +1 -0
  152. package/_mjs/DataSource/api.mjs +98 -0
  153. package/_mjs/DataSource/api.mjs.map +1 -0
  154. package/_mjs/DataSource/definition.mjs +63 -0
  155. package/_mjs/DataSource/definition.mjs.map +1 -0
  156. package/_mjs/DataSource.mjs +4 -0
  157. package/_mjs/DataSource.mjs.map +1 -0
  158. package/_mjs/DataSourceAspect.mjs +9 -0
  159. package/_mjs/DataSourceAspect.mjs.map +1 -0
  160. package/_mjs/Described.mjs +24 -0
  161. package/_mjs/Described.mjs.map +1 -0
  162. package/_mjs/Query/api/bimap.mjs +11 -0
  163. package/_mjs/Query/api/bimap.mjs.map +1 -0
  164. package/_mjs/Query/api/catchAllCause.mjs +20 -0
  165. package/_mjs/Query/api/catchAllCause.mjs.map +1 -0
  166. package/_mjs/Query/api/collectAll.mjs +9 -0
  167. package/_mjs/Query/api/collectAll.mjs.map +1 -0
  168. package/_mjs/Query/api/collectAllBatched.mjs +9 -0
  169. package/_mjs/Query/api/collectAllBatched.mjs.map +1 -0
  170. package/_mjs/Query/api/collectAllConcurrent.mjs +9 -0
  171. package/_mjs/Query/api/collectAllConcurrent.mjs.map +1 -0
  172. package/_mjs/Query/api/defer.mjs +10 -0
  173. package/_mjs/Query/api/defer.mjs.map +1 -0
  174. package/_mjs/Query/api/ensuring.mjs +12 -0
  175. package/_mjs/Query/api/ensuring.mjs.map +1 -0
  176. package/_mjs/Query/api/environment.mjs +77 -0
  177. package/_mjs/Query/api/environment.mjs.map +1 -0
  178. package/_mjs/Query/api/flatMap.mjs +25 -0
  179. package/_mjs/Query/api/flatMap.mjs.map +1 -0
  180. package/_mjs/Query/api/foreach.mjs +18 -0
  181. package/_mjs/Query/api/foreach.mjs.map +1 -0
  182. package/_mjs/Query/api/foreachBatched.mjs +18 -0
  183. package/_mjs/Query/api/foreachBatched.mjs.map +1 -0
  184. package/_mjs/Query/api/foreachConcurrent.mjs +11 -0
  185. package/_mjs/Query/api/foreachConcurrent.mjs.map +1 -0
  186. package/_mjs/Query/api/fromRequest.mjs +30 -0
  187. package/_mjs/Query/api/fromRequest.mjs.map +1 -0
  188. package/_mjs/Query/api/map.mjs +13 -0
  189. package/_mjs/Query/api/map.mjs.map +1 -0
  190. package/_mjs/Query/api/mapDataSources.mjs +13 -0
  191. package/_mjs/Query/api/mapDataSources.mjs.map +1 -0
  192. package/_mjs/Query/api/mapError.mjs +11 -0
  193. package/_mjs/Query/api/mapError.mjs.map +1 -0
  194. package/_mjs/Query/api/mapErrorCause.mjs +11 -0
  195. package/_mjs/Query/api/mapErrorCause.mjs.map +1 -0
  196. package/_mjs/Query/api/mapIO.mjs +12 -0
  197. package/_mjs/Query/api/mapIO.mjs.map +1 -0
  198. package/_mjs/Query/api/match.mjs +12 -0
  199. package/_mjs/Query/api/match.mjs.map +1 -0
  200. package/_mjs/Query/api/matchCauseQuery.mjs +18 -0
  201. package/_mjs/Query/api/matchCauseQuery.mjs.map +1 -0
  202. package/_mjs/Query/api/matchQuery.mjs +13 -0
  203. package/_mjs/Query/api/matchQuery.mjs.map +1 -0
  204. package/_mjs/Query/api/orHalt.mjs +19 -0
  205. package/_mjs/Query/api/orHalt.mjs.map +1 -0
  206. package/_mjs/Query/api/race.mjs +33 -0
  207. package/_mjs/Query/api/race.mjs.map +1 -0
  208. package/_mjs/Query/api/run.mjs +38 -0
  209. package/_mjs/Query/api/run.mjs.map +1 -0
  210. package/_mjs/Query/api/timeout.mjs +59 -0
  211. package/_mjs/Query/api/timeout.mjs.map +1 -0
  212. package/_mjs/Query/api/zipWith.mjs +30 -0
  213. package/_mjs/Query/api/zipWith.mjs.map +1 -0
  214. package/_mjs/Query/api/zipWithBatched.mjs +31 -0
  215. package/_mjs/Query/api/zipWithBatched.mjs.map +1 -0
  216. package/_mjs/Query/api/zipWithConcurrent.mjs +31 -0
  217. package/_mjs/Query/api/zipWithConcurrent.mjs.map +1 -0
  218. package/_mjs/Query/api.mjs +77 -0
  219. package/_mjs/Query/api.mjs.map +1 -0
  220. package/_mjs/Query/definition.mjs +14 -0
  221. package/_mjs/Query/definition.mjs.map +1 -0
  222. package/_mjs/Query.mjs +34 -0
  223. package/_mjs/Query.mjs.map +1 -0
  224. package/_mjs/QueryFailure.mjs +8 -0
  225. package/_mjs/QueryFailure.mjs.map +1 -0
  226. package/_mjs/Request.mjs +43 -0
  227. package/_mjs/Request.mjs.map +1 -0
  228. package/_mjs/global.mjs +2 -0
  229. package/_mjs/global.mjs.map +1 -0
  230. package/_mjs/index.mjs +2 -0
  231. package/_mjs/index.mjs.map +1 -0
  232. package/_mjs/internal/BlockedRequest.mjs +21 -0
  233. package/_mjs/internal/BlockedRequest.mjs.map +1 -0
  234. package/_mjs/internal/BlockedRequests.mjs +341 -0
  235. package/_mjs/internal/BlockedRequests.mjs.map +1 -0
  236. package/_mjs/internal/Continue.mjs +262 -0
  237. package/_mjs/internal/Continue.mjs.map +1 -0
  238. package/_mjs/internal/Parallel.mjs +62 -0
  239. package/_mjs/internal/Parallel.mjs.map +1 -0
  240. package/_mjs/internal/Result.mjs +208 -0
  241. package/_mjs/internal/Result.mjs.map +1 -0
  242. package/_mjs/internal/Sequential.mjs +44 -0
  243. package/_mjs/internal/Sequential.mjs.map +1 -0
  244. package/_src/Cache/api.ts +49 -0
  245. package/_src/Cache/definition.ts +13 -0
  246. package/_src/Cache.ts +4 -0
  247. package/_src/CompletedRequestMap.ts +38 -0
  248. package/_src/DataSource/api.ts +97 -0
  249. package/_src/DataSource/definition.ts +77 -0
  250. package/_src/DataSource.ts +4 -0
  251. package/_src/DataSourceAspect.ts +7 -0
  252. package/_src/Described.ts +21 -0
  253. package/_src/Query/api/bimap.ts +11 -0
  254. package/_src/Query/api/catchAllCause.ts +17 -0
  255. package/_src/Query/api/collectAll.ts +6 -0
  256. package/_src/Query/api/collectAllBatched.ts +9 -0
  257. package/_src/Query/api/collectAllConcurrent.ts +6 -0
  258. package/_src/Query/api/defer.ts +6 -0
  259. package/_src/Query/api/ensuring.ts +19 -0
  260. package/_src/Query/api/environment.ts +82 -0
  261. package/_src/Query/api/flatMap.ts +26 -0
  262. package/_src/Query/api/foreach.ts +17 -0
  263. package/_src/Query/api/foreachBatched.ts +17 -0
  264. package/_src/Query/api/foreachConcurrent.ts +10 -0
  265. package/_src/Query/api/fromRequest.ts +49 -0
  266. package/_src/Query/api/map.ts +8 -0
  267. package/_src/Query/api/mapDataSources.ts +8 -0
  268. package/_src/Query/api/mapError.ts +8 -0
  269. package/_src/Query/api/mapErrorCause.ts +8 -0
  270. package/_src/Query/api/mapIO.ts +8 -0
  271. package/_src/Query/api/match.ts +11 -0
  272. package/_src/Query/api/matchCauseQuery.ts +21 -0
  273. package/_src/Query/api/matchQuery.ts +12 -0
  274. package/_src/Query/api/orHalt.ts +15 -0
  275. package/_src/Query/api/race.ts +34 -0
  276. package/_src/Query/api/run.ts +40 -0
  277. package/_src/Query/api/timeout.ts +58 -0
  278. package/_src/Query/api/zipWith.ts +44 -0
  279. package/_src/Query/api/zipWithBatched.ts +41 -0
  280. package/_src/Query/api/zipWithConcurrent.ts +45 -0
  281. package/_src/Query/api.ts +76 -0
  282. package/_src/Query/definition.ts +13 -0
  283. package/_src/Query.ts +35 -0
  284. package/_src/QueryFailure.ts +7 -0
  285. package/_src/Request.ts +52 -0
  286. package/_src/global.ts +45 -0
  287. package/_src/index.ts +3 -0
  288. package/_src/internal/BlockedRequest.ts +24 -0
  289. package/_src/internal/BlockedRequests.ts +331 -0
  290. package/_src/internal/Continue.ts +305 -0
  291. package/_src/internal/Parallel.ts +82 -0
  292. package/_src/internal/Result.ts +242 -0
  293. package/_src/internal/Sequential.ts +63 -0
  294. package/global.d.ts +45 -0
  295. package/index.d.ts +1 -0
  296. package/internal/BlockedRequest.d.ts +21 -0
  297. package/internal/BlockedRequests.d.ts +123 -0
  298. package/internal/Continue.d.ts +133 -0
  299. package/internal/Parallel.d.ts +56 -0
  300. package/internal/Result.d.ts +115 -0
  301. package/internal/Sequential.d.ts +40 -0
  302. package/package.json +22 -0
  303. package/runTests.d.ts +1 -0
@@ -0,0 +1,62 @@
1
+ var _a;
2
+ import * as tsplus_module_1 from "@fncts/base/collection/immutable/Conc/api";
3
+ import * as tsplus_module_2 from "@fncts/base/collection/immutable/HashMap/api";
4
+ import * as tsplus_module_3 from "@fncts/base/data/Maybe/destructors";
5
+ import * as tsplus_module_4 from "@fncts/base/collection/immutable/Conc/constructors";
6
+ import { Sequential } from "@fncts/query/internal/Sequential";
7
+ export const ParallelTypeId = /*#__PURE__*/Symbol.for("fncts.query.Parallel");
8
+ export const ParallelVariance = /*#__PURE__*/Symbol.for("fncts.query.Parallel.Variance");
9
+ /**
10
+ * @tsplus type fncts.query.Parallel
11
+ * @tsplus companion fncts.query.ParallelOps
12
+ */
13
+ export class Parallel {
14
+ constructor(map) {
15
+ this.map = map;
16
+ this[_a] = ParallelTypeId;
17
+ }
18
+ }
19
+ _a = ParallelTypeId;
20
+ /**
21
+ * @tsplus pipeable fncts.query.Parallel concat
22
+ */
23
+ export function concat(that) {
24
+ return self => {
25
+ return new Parallel(tsplus_module_2.foldLeftWithIndex(self.map, (k, map, v) => tsplus_module_2.set(k, tsplus_module_3.match(() => v, requests => tsplus_module_1.concat(v)(requests))(tsplus_module_2.get(k)(map)))(map))(that.map));
26
+ };
27
+ }
28
+ /**
29
+ * @tsplus getter fncts.query.Parallel isEmpty
30
+ */
31
+ export function isEmpty(self) {
32
+ return tsplus_module_2.isEmpty(self.map);
33
+ }
34
+ /**
35
+ * @tsplus getter fncts.query.Parallel keys
36
+ */
37
+ export function keys(self) {
38
+ return tsplus_module_2.keys(self.map);
39
+ }
40
+ /**
41
+ * @tsplus getter fncts.query.Parallel toIterable
42
+ */
43
+ export function toIterable(self) {
44
+ return self.map;
45
+ }
46
+ /**
47
+ * @tsplus getter fncts.query.Parallel sequential
48
+ */
49
+ export function sequential(self) {
50
+ return new Sequential(tsplus_module_2.map(v => tsplus_module_4.make(v))(self.map));
51
+ }
52
+ /**
53
+ * @tsplus static fncts.query.ParallelOps __call
54
+ */
55
+ export function makeParallel(dataSource, blockedRequest) {
56
+ return new Parallel(tsplus_module_2.make([dataSource, tsplus_module_4.make(blockedRequest)]));
57
+ }
58
+ /**
59
+ * @tsplus static fncts.query.ParallelOps empty
60
+ */
61
+ export const empty = /*#__PURE__*/new Parallel( /*#__PURE__*/tsplus_module_2.empty());
62
+ //# sourceMappingURL=Parallel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parallel.mjs","mappings":";;;;;AAGA,SAASA,UAAU,QAAQ,kCAAkC;AAE7D,OAAO,MAAMC,cAAc,gBAAGC,MAAM,CAACC,GAAG,CAAC,sBAAsB,CAAC;AAGhE,OAAO,MAAMC,gBAAgB,gBAAGF,MAAM,CAACC,GAAG,CAAC,+BAA+B,CAAC;AAG3E;;;;AAIA,OAAM,MAAOE,QAAQ;EAMnBC,YAAqBC,GAA6D;IAA7D,QAAG,GAAHA,GAAG;IALf,QAAgB,GAAmBN,cAAc;EAK2B;;KAL3EA,cAAc;AAQ1B;;;AAGA,OAAM,SAAUO,MAAM,CAAKC,IAAkB;EAC3C,OAAWC,IAAiB,IAAsB;IAChD,OAAO,IAAIL,QAAQ,CACjBM,kCAA2BD,IAAI,CAACH,GAAG,EAAE,CAACK,CAAC,EAAEL,GAAG,EAAEM,CAAC,KAC7CF,oBACEC,CAAC,EACDE,sBACE,MAAMD,CAAC,EACNE,QAAQ,IAAKC,uBAAgBH,CAAC,EAAjBE,QAAQ,CAAU,EAFlCJ,oBAAQC,CAAC,EAATL,GAAG,CAAO,CAGT,EALHA,GAAG,CAMF,EAPHE,IAAI,CAACF,GAAG,CAQP,CACF;EACH,CAAC;AACH;AAEA;;;AAGA,OAAM,SAAUU,OAAO,CAAIP,IAAiB;EAC1C,+BAAOA,IAAI,CAACH,GAAG;AACjB;AAEA;;;AAGA,OAAM,SAAUW,IAAI,CAAIR,IAAiB;EACvC,4BAAOA,IAAI,CAACH,GAAG;AACjB;AAEA;;;AAGA,OAAM,SAAUY,UAAU,CAAIT,IAAiB;EAC7C,OAAOA,IAAI,CAACH,GAAG;AACjB;AAEA;;;AAGA,OAAM,SAAUa,UAAU,CAAIV,IAAiB;EAC7C,OAAO,IAAIV,UAAU,CAACW,oBAAcE,CAAC,IAAKQ,qBAAKR,CAAC,CAAC,EAA3BH,IAAI,CAACH,GAAG,CAAoB,CAAC;AACrD;AAEA;;;AAGA,OAAM,SAAUe,YAAY,CAAOC,UAA4B,EAAEC,cAAiC;EAChG,OAAO,IAAInB,QAAQ,CAACM,qBAAQ,CAACY,UAAU,EAAEF,qBAAKG,cAAc,CAAC,CAAC,CAAC,CAAC;AAClE;AAEA;;;AAGA,OAAO,MAAMC,KAAK,gBAAoB,IAAIpB,QAAQ,eAACM,uBAAe,CAAC","names":["Sequential","ParallelTypeId","Symbol","for","ParallelVariance","Parallel","constructor","map","concat","that","self","tsplus_module_2","k","v","tsplus_module_3","requests","tsplus_module_1","isEmpty","keys","toIterable","sequential","tsplus_module_4","makeParallel","dataSource","blockedRequest","empty"],"sourceRoot":"","sources":["../../_src/internal/Parallel.ts"],"sourcesContent":[null]}
@@ -0,0 +1,208 @@
1
+ var _a;
2
+ const fileName_1 = "(@fncts/query) src/internal/Result.ts";
3
+ import * as tsplus_module_1 from "@fncts/query/internal/Continue";
4
+ import * as tsplus_module_2 from "@fncts/base/data/Cause/api";
5
+ import * as tsplus_module_3 from "@fncts/base/data/Either/destructors";
6
+ import * as tsplus_module_4 from "@fncts/query/internal/BlockedRequests";
7
+ import * as tsplus_module_5 from "@fncts/base/collection/immutable/Conc/api/empty";
8
+ import * as tsplus_module_6 from "@fncts/base/collection/immutable/Conc/api";
9
+ import * as tsplus_module_7 from "@fncts/base/collection/Iterable/api";
10
+ import * as tsplus_module_8 from "@fncts/base/collection/immutable/Conc/constructors";
11
+ import * as tsplus_module_9 from "@fncts/base/data/Exit/api";
12
+ export const blocked = blocked_1;
13
+ export const done = done_1;
14
+ export const fail = fail_1;
15
+ export const matchType = matchType_1;
16
+ export const ResultTypeId = /*#__PURE__*/Symbol.for("fncts.query.Result");
17
+ export const ResultVariance = /*#__PURE__*/Symbol.for("fncts.query.Result.Variance");
18
+ /**
19
+ * @tsplus type fncts.query.Result
20
+ * @tsplus companion fncts.query.ResultOps
21
+ */
22
+ export class Result {
23
+ constructor() {
24
+ this[_a] = ResultTypeId;
25
+ }
26
+ }
27
+ _a = ResultTypeId;
28
+ export class Blocked extends Result {
29
+ constructor(blockedRequests, cont) {
30
+ super();
31
+ this.blockedRequests = blockedRequests;
32
+ this.cont = cont;
33
+ this._tag = 0 /* ResultTag.Blocked */;
34
+ }
35
+ }
36
+
37
+ export class Done extends Result {
38
+ constructor(value) {
39
+ super();
40
+ this.value = value;
41
+ this._tag = 1 /* ResultTag.Done */;
42
+ }
43
+ }
44
+
45
+ export class Fail extends Result {
46
+ constructor(cause) {
47
+ super();
48
+ this.cause = cause;
49
+ this._tag = 2 /* ResultTag.Fail */;
50
+ }
51
+ }
52
+
53
+ function concrete(_) {
54
+ //
55
+ }
56
+ /**
57
+ * @tsplus static fncts.query.ResultOps blocked
58
+ */
59
+ function blocked_1(blockedRequests, cont) {
60
+ return new Blocked(blockedRequests, cont);
61
+ }
62
+ /**
63
+ * @tsplus static fncts.query.ResultOps done
64
+ */
65
+ function done_1(value) {
66
+ return new Done(value);
67
+ }
68
+ /**
69
+ * @tsplus static fncts.query.ResultOps fail
70
+ */
71
+ function fail_1(cause) {
72
+ return new Fail(cause);
73
+ }
74
+ /**
75
+ * @tsplus pipeable fncts.query.Result matchType
76
+ */
77
+ function matchType_1(cases) {
78
+ return self => {
79
+ concrete(self);
80
+ switch (self._tag) {
81
+ case 0 /* ResultTag.Blocked */:
82
+ {
83
+ return cases.Blocked(self.blockedRequests, self.cont);
84
+ }
85
+ case 1 /* ResultTag.Done */:
86
+ {
87
+ return cases.Done(self.value);
88
+ }
89
+ case 2 /* ResultTag.Fail */:
90
+ {
91
+ return cases.Fail(self.cause);
92
+ }
93
+ }
94
+ };
95
+ }
96
+ /**
97
+ * @tsplus pipeable fncts.query.Result match
98
+ */
99
+ export function match(failure, success) {
100
+ return self => {
101
+ return matchType_1({
102
+ Blocked: (br, c) => blocked_1(br, tsplus_module_1.match(failure, success, fileName_1 + ":108:53")(c)),
103
+ Done: a => done_1(success(a)),
104
+ Fail: e => tsplus_module_3.match(e => done_1(failure(e)), fail_1)(tsplus_module_2.failureOrCause(e))
105
+ })(self);
106
+ };
107
+ }
108
+ /**
109
+ * @tsplus pipeable fncts.query.Result map
110
+ */
111
+ export function map(f, __tsplusTrace) {
112
+ return self => {
113
+ return matchType_1({
114
+ Blocked: (br, c) => blocked_1(br, tsplus_module_1.map(f, __tsplusTrace)(c)),
115
+ Done: a => done_1(f(a)),
116
+ Fail: cause => fail_1(cause)
117
+ })(self);
118
+ };
119
+ }
120
+ /**
121
+ * @tsplus pipeable fncts.query.Result mapDataSources
122
+ */
123
+ export function mapDataSources(f) {
124
+ return self => {
125
+ return matchType_1({
126
+ Blocked: (br, c) => blocked_1(tsplus_module_4.mapDataSources(f)(br), tsplus_module_1.mapDataSources(f, fileName_1 + ":134:80")(c)),
127
+ Done: a => done_1(a),
128
+ Fail: cause => fail_1(cause)
129
+ })(self);
130
+ };
131
+ }
132
+ /**
133
+ * @tsplus pipeable fncts.query.Result mapError
134
+ */
135
+ export function mapError(f, __tsplusTrace) {
136
+ return self => {
137
+ return matchType_1({
138
+ Blocked: (br, c) => blocked_1(br, tsplus_module_1.mapError(f, __tsplusTrace)(c)),
139
+ Done: done_1,
140
+ Fail: cause => fail_1(tsplus_module_2.map(f)(cause))
141
+ })(self);
142
+ };
143
+ }
144
+ /**
145
+ * @tsplus pipeable fncts.query.Result mapErrorCause
146
+ */
147
+ export function mapErrorCause(f, __tsplusTrace) {
148
+ return self => {
149
+ return matchType_1({
150
+ Blocked: (br, c) => blocked_1(br, tsplus_module_1.mapErrorCause(f, __tsplusTrace)(c)),
151
+ Done: done_1,
152
+ Fail: cause => fail_1(f(cause))
153
+ })(self);
154
+ };
155
+ }
156
+ /**
157
+ * @tsplus static fncts.query.ResultOps collectAllConcurrent
158
+ */
159
+ export function collectAllConcurrent(self, __tsplusTrace) {
160
+ const [blocked, done, fails] = tsplus_module_7.foldLeft([tsplus_module_5.empty(), tsplus_module_5.empty(), tsplus_module_5.empty()], ([blocked, done, fails], [index, result]) => matchType_1({
161
+ Blocked: (br, c) => [tsplus_module_6.append([br, c, index])(blocked), done, fails],
162
+ Done: a => [blocked, tsplus_module_6.append([a, index])(done), fails],
163
+ Fail: e => [blocked, done, tsplus_module_6.append([e, index])(fails)]
164
+ })(result))(tsplus_module_7.zipWithIndex(self));
165
+ if (tsplus_module_6.isEmpty(blocked) && tsplus_module_6.isEmpty(fails)) {
166
+ return done_1(tsplus_module_6.map(([a]) => a)(done));
167
+ } else if (tsplus_module_6.isEmpty(fails)) {
168
+ const blockedRequests = tsplus_module_6.foldLeft(tsplus_module_4.empty(), (b, a) => tsplus_module_4.both(b, a))(tsplus_module_6.map(([br]) => br)(blocked));
169
+ const cont = tsplus_module_1.map(as => {
170
+ const array = Array(as.length);
171
+ tsplus_module_6.forEachWithIndex((i, a) => {
172
+ array[i] = a;
173
+ })(tsplus_module_6.zip(tsplus_module_6.map(([cont]) => cont)(blocked))(as));
174
+ tsplus_module_6.forEachWithIndex((i, a) => {
175
+ array[i] = a;
176
+ })(done);
177
+ return tsplus_module_8.from(array);
178
+ }, __tsplusTrace)(tsplus_module_1.collectAllConcurrent(tsplus_module_6.map(([_, cont]) => cont)(blocked)));
179
+ return blocked_1(blockedRequests, cont);
180
+ } else {
181
+ return fail_1(tsplus_module_6.foldLeft(tsplus_module_2.empty(), (b, a) => tsplus_module_2.both(b, a))(tsplus_module_6.map(([cause]) => cause)(fails)));
182
+ }
183
+ }
184
+ /**
185
+ * @tsplus pipeable fncts.query.Result contramapEnvironment
186
+ */
187
+ export function contramapEnvironment(f, __tsplusTrace) {
188
+ return self => {
189
+ return matchType_1({
190
+ Blocked: (br, cont) => blocked_1(tsplus_module_4.contramapEnvironment(f, __tsplusTrace)(br), tsplus_module_1.contramapEnvironment(f, __tsplusTrace)(cont)),
191
+ Done: a => done_1(a),
192
+ Fail: e => fail_1(e)
193
+ })(self);
194
+ };
195
+ }
196
+ /**
197
+ * @tsplus static fncts.query.ResultOps fromEither
198
+ */
199
+ export function fromEither(either) {
200
+ return tsplus_module_3.match(e => fail_1(tsplus_module_2.fail(e)), a => done_1(a))(either);
201
+ }
202
+ /**
203
+ * @tsplus static fncts.query.ResultOps fromExit
204
+ */
205
+ export function fromExit(exit) {
206
+ return tsplus_module_9.match(fail_1, done_1)(exit);
207
+ }
208
+ //# sourceMappingURL=Result.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Result.mjs","mappings":"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","names":["blocked","done","fail","matchType","ResultTypeId","Symbol","for","ResultVariance","Result","constructor","Blocked","blockedRequests","cont","Done","value","Fail","cause","concrete","_","cases","self","_tag","match","failure","success","matchType_1","br","c","blocked_1","tsplus_module_1","a","done_1","e","tsplus_module_3","map","f","__tsplusTrace","fail_1","mapDataSources","tsplus_module_4","mapError","tsplus_module_2","mapErrorCause","collectAllConcurrent","fails","tsplus_module_7","tsplus_module_5","index","result","tsplus_module_6","b","as","array","Array","length","i","tsplus_module_8","contramapEnvironment","fromEither","either","fromExit","exit","tsplus_module_9"],"sourceRoot":"","sources":["../../_src/internal/Result.ts"],"sourcesContent":[null]}
@@ -0,0 +1,44 @@
1
+ var _a;
2
+ import * as tsplus_module_1 from "@fncts/base/collection/immutable/Conc/api";
3
+ import * as tsplus_module_2 from "@fncts/base/collection/immutable/HashMap/api";
4
+ import * as tsplus_module_3 from "@fncts/base/data/Maybe/destructors";
5
+ export const SequentialTypeId = /*#__PURE__*/Symbol.for("fncts.query.Sequential");
6
+ export const SequentialVariance = /*#__PURE__*/Symbol.for("fncts.query.Sequential.Variance");
7
+ /**
8
+ * @tsplus type fncts.query.Sequential
9
+ * @tsplus companion fncts.query.SequentialOps
10
+ */
11
+ export class Sequential {
12
+ constructor(map) {
13
+ this.map = map;
14
+ this[_a] = SequentialTypeId;
15
+ }
16
+ }
17
+ _a = SequentialTypeId;
18
+ /**
19
+ * @tsplus pipeable fncts.query.Sequential concat
20
+ */
21
+ export function concat(that) {
22
+ return self => {
23
+ return new Sequential(tsplus_module_2.foldLeftWithIndex(self.map, (k, map, v) => tsplus_module_2.set(k, tsplus_module_3.match(() => v, requests => tsplus_module_1.concat(v)(requests))(tsplus_module_2.get(k)(map)))(map))(that.map));
24
+ };
25
+ }
26
+ /**
27
+ * @tsplus getter fncts.query.Sequential isEmpty
28
+ */
29
+ export function isEmpty(self) {
30
+ return tsplus_module_2.isEmpty(self.map);
31
+ }
32
+ /**
33
+ * @tsplus getter fncts.query.Sequential keys
34
+ */
35
+ export function keys(self) {
36
+ return tsplus_module_2.keys(self.map);
37
+ }
38
+ /**
39
+ * @tsplus getter fncts.query.Sequential toIterable
40
+ */
41
+ export function toIterable(self) {
42
+ return self.map;
43
+ }
44
+ //# sourceMappingURL=Sequential.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sequential.mjs","mappings":";;;;AAGA,OAAO,MAAMA,gBAAgB,gBAAGC,MAAM,CAACC,GAAG,CAAC,wBAAwB,CAAC;AAGpE,OAAO,MAAMC,kBAAkB,gBAAGF,MAAM,CAACC,GAAG,CAAC,iCAAiC,CAAC;AAG/E;;;;AAIA,OAAM,MAAOE,UAAU;EAMrBC,YAAqBC,GAAmE;IAAnE,QAAG,GAAHA,GAAG;IALf,QAAkB,GAAqBN,gBAAgB;EAK2B;;KALjFA,gBAAgB;AAQ5B;;;AAGA,OAAM,SAAUO,MAAM,CAAKC,IAAoB;EAC7C,OAAWC,IAAmB,IAAwB;IACpD,OAAO,IAAIL,UAAU,CACnBM,kCAA2BD,IAAI,CAACH,GAAG,EAAE,CAACK,CAAC,EAAEL,GAAG,EAAEM,CAAC,KAC7CF,oBACEC,CAAC,EACDE,sBACE,MAAMD,CAAC,EACNE,QAAQ,IAAKC,uBAAgBH,CAAC,EAAjBE,QAAQ,CAAU,EAFlCJ,oBAAQC,CAAC,EAATL,GAAG,CAAO,CAGT,EALHA,GAAG,CAMF,EAPHE,IAAI,CAACF,GAAG,CAQP,CACF;EACH,CAAC;AACH;AAEA;;;AAGA,OAAM,SAAUU,OAAO,CAAIP,IAAmB;EAC5C,+BAAOA,IAAI,CAACH,GAAG;AACjB;AAEA;;;AAGA,OAAM,SAAUW,IAAI,CAAIR,IAAmB;EACzC,4BAAOA,IAAI,CAACH,GAAG;AACjB;AAEA;;;AAGA,OAAM,SAAUY,UAAU,CACxBT,IAAmB;EAEnB,OAAOA,IAAI,CAACH,GAAG;AACjB","names":["SequentialTypeId","Symbol","for","SequentialVariance","Sequential","constructor","map","concat","that","self","tsplus_module_2","k","v","tsplus_module_3","requests","tsplus_module_1","isEmpty","keys","toIterable"],"sourceRoot":"","sources":["../../_src/internal/Sequential.ts"],"sourcesContent":[null]}
@@ -0,0 +1,49 @@
1
+ import type { Either } from "@fncts/base/data/Either";
2
+ import type { Maybe } from "@fncts/base/data/Maybe";
3
+ import type { UIO } from "@fncts/io/IO";
4
+ import type { Request } from "@fncts/query/Request";
5
+
6
+ import { Ref } from "@fncts/io/Ref";
7
+ import { Cache } from "@fncts/query/Cache/definition";
8
+
9
+ /**
10
+ * @tsplus static fncts.query.CacheOps empty
11
+ */
12
+ export function empty(__tsplusTrace?: string): UIO<Cache> {
13
+ return IO(Cache.unsafeMake());
14
+ }
15
+
16
+ export class Default extends Cache {
17
+ constructor(private readonly state: Ref<HashMap<any, any>>) {
18
+ super();
19
+ }
20
+ get<E, A>(request: Request<E, A>, __tsplusTrace?: string | undefined): FIO<void, Ref<Maybe<Either<E, A>>>> {
21
+ return this.state.get.map((map) => map.get(request)).just.orElseFail(undefined);
22
+ }
23
+ lookup<E, A extends Request<E, B>, B>(
24
+ request: A,
25
+ __tsplusTrace?: string | undefined,
26
+ ): UIO<Either<Ref<Maybe<Either<E, B>>>, Ref<Maybe<Either<E, B>>>>> {
27
+ return Ref.make(Nothing<Either<E, B>>()).flatMap((ref) => {
28
+ return this.state.modify((map) =>
29
+ map.get(request).match(
30
+ () => [Left(ref), map.set(request, ref)],
31
+ (ref) => [Right(ref), map],
32
+ ),
33
+ );
34
+ });
35
+ }
36
+ put<E, A>(request: Request<E, A>, result: Ref<Maybe<Either<E, A>>>, __tsplusTrace?: string | undefined): UIO<void> {
37
+ return this.state.update((map) => map.set(request, result));
38
+ }
39
+ remove<E, A>(request: Request<E, A>, __tsplusTrace?: string | undefined): UIO<void> {
40
+ return this.state.update((map) => map.remove(request));
41
+ }
42
+ }
43
+
44
+ /**
45
+ * @tsplus static fncts.query.CacheOps unsafeMake
46
+ */
47
+ export function unsafeMake(): Cache {
48
+ return new Default(Ref.unsafeMake(HashMap.empty()));
49
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @tsplus type fncts.query.Cache
3
+ * @tsplus companion fncts.query.CacheOps
4
+ */
5
+ export abstract class Cache {
6
+ abstract get<E, A>(request: Request<E, A>, __tsplusTrace?: string): FIO<void, Ref<Maybe<Either<E, A>>>>;
7
+ abstract lookup<E, A>(
8
+ request: Request<E, A>,
9
+ __tsplusTrace?: string,
10
+ ): UIO<Either<Ref<Maybe<Either<E, A>>>, Ref<Maybe<Either<E, A>>>>>;
11
+ abstract put<E, A>(request: Request<E, A>, result: Ref<Maybe<Either<E, A>>>, __tsplusTrace?: string): UIO<void>;
12
+ abstract remove<E, A>(request: Request<E, A>, __tsplusTrace?: string): UIO<void>;
13
+ }
package/_src/Cache.ts ADDED
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./Cache/*.ts }
2
+ export * from "./Cache/api.js";
3
+ export * from "./Cache/definition.js";
4
+ // codegen:end
@@ -0,0 +1,38 @@
1
+ export class CompletedRequestMap {
2
+ constructor(private map: HashMap<any, Either<any, any>>) {}
3
+
4
+ static empty(): CompletedRequestMap {
5
+ return new CompletedRequestMap(HashMap.empty());
6
+ }
7
+
8
+ concat(that: CompletedRequestMap) {
9
+ return new CompletedRequestMap(this.map.union(that.map));
10
+ }
11
+
12
+ insert<E, A>(request: Request<E, A>, result: Either<E, A>): CompletedRequestMap {
13
+ return new CompletedRequestMap(this.map.set(request, result));
14
+ }
15
+
16
+ insertMaybe<E, A>(request: Request<E, A>, result: Either<E, Maybe<A>>): CompletedRequestMap {
17
+ return result.match(
18
+ (e) => this.insert(request, Left(e)),
19
+ (r) =>
20
+ r.match(
21
+ () => this,
22
+ (a) => this.insert(request, Right(a)),
23
+ ),
24
+ );
25
+ }
26
+
27
+ lookup<E, A>(request: Request<E, A>): Maybe<Either<E, A>> {
28
+ return this.map.get(request);
29
+ }
30
+
31
+ requests(): HashSet<Request<any, any>> {
32
+ return this.map.keySet;
33
+ }
34
+
35
+ contains(request: any): boolean {
36
+ return this.map.has(request);
37
+ }
38
+ }
@@ -0,0 +1,97 @@
1
+ import type { Conc } from "@fncts/base/collection/immutable/Conc";
2
+ import type { Described } from "@fncts/query/Described";
3
+
4
+ import { IO } from "@fncts/io/IO";
5
+ import { CompletedRequestMap } from "@fncts/query/CompletedRequestMap";
6
+ import { Batched, DataSource } from "@fncts/query/DataSource/definition";
7
+
8
+ /**
9
+ * @tsplus pipeable fncts.query.DataSource contramap
10
+ */
11
+ export function contamap<A, B>(f: Described<(b: B) => A>) {
12
+ return <R>(self: DataSource<R, A>): DataSource<R, B> => {
13
+ return new (class extends DataSource<R, B> {
14
+ identifier = `${self.identifier}.contramap(${f.description})`;
15
+ runAll(requests: Conc<Conc<B>>, __tsplusTrace?: string | undefined): IO<R, never, CompletedRequestMap> {
16
+ return self.runAll(requests.map((_) => _.map(f.value)));
17
+ }
18
+ })();
19
+ };
20
+ }
21
+
22
+ /**
23
+ * @tsplus pipeable fncts.query.DataSource contramapEnvironment
24
+ */
25
+ export function contramapEnvironment<R0, R>(
26
+ f: Described<(_: Environment<R0>) => Environment<R>>,
27
+ __tsplusTrace?: string,
28
+ ) {
29
+ return <A>(self: DataSource<R, A>): DataSource<R0, A> => {
30
+ return new (class extends DataSource<R0, A> {
31
+ identifier = `${self.identifier}.contramapEnvironment(${f.description})`;
32
+ runAll(requests: Conc<Conc<A>>, __tsplusTrace?: string | undefined): IO<R0, never, CompletedRequestMap> {
33
+ return self.runAll(requests).contramapEnvironment(f.value);
34
+ }
35
+ })();
36
+ };
37
+ }
38
+
39
+ /**
40
+ * @tsplus static fncts.query.BatchedOps make
41
+ * @tsplus static fncts.query.DataSourceOps makeBatched
42
+ */
43
+ export function makeBatched<R, A>(
44
+ name: string,
45
+ f: (requests: Conc<A>) => IO<R, never, CompletedRequestMap>,
46
+ ): DataSource<R, A> {
47
+ return new (class extends Batched<R, A> {
48
+ identifier: string = name;
49
+ run(requests: Conc<A>, __tsplusTrace?: string): IO<R, never, CompletedRequestMap> {
50
+ return f(requests);
51
+ }
52
+ })();
53
+ }
54
+
55
+ /**
56
+ * @tsplus static fncts.query.DataSourceOps make
57
+ */
58
+ export function make<R, A>(
59
+ name: string,
60
+ f: (requests: Conc<Conc<A>>) => IO<R, never, CompletedRequestMap>,
61
+ ): DataSource<R, A> {
62
+ return new (class extends DataSource<R, A> {
63
+ identifier: string = name;
64
+ runAll(requests: Conc<Conc<A>>, __tsplusTrace?: string | undefined): IO<R, never, CompletedRequestMap> {
65
+ return f(requests);
66
+ }
67
+ })();
68
+ }
69
+
70
+ /**
71
+ * @tsplus static fncts.query.DataSourceOps fromFunction
72
+ */
73
+ export function fromFunction<A extends Request<never, B>, B>(name: string, f: (a: A) => B): DataSource<never, A> {
74
+ return new (class extends Batched<never, A> {
75
+ run(requests: Conc<A>, __tsplusTrace?: string | undefined): IO<never, never, CompletedRequestMap> {
76
+ return IO.succeedNow(requests.foldLeft(CompletedRequestMap.empty(), (map, k) => map.insert(k, Right(f(k)))));
77
+ }
78
+ identifier: string = name;
79
+ })();
80
+ }
81
+
82
+ /**
83
+ * @tsplus static fncts.query.DataSourceOps fromFunctionIO
84
+ */
85
+ export function fromFunctionIO<R, E, A extends Request<E, B>, B>(
86
+ name: string,
87
+ f: (a: A) => IO<R, E, B>,
88
+ ): DataSource<R, A> {
89
+ return new (class extends Batched<R, A> {
90
+ identifier: string = name;
91
+ run(requests: Conc<A>, __tsplusTrace?: string | undefined): IO<R, never, CompletedRequestMap> {
92
+ return IO.foreachConcurrent(requests, (a) => f(a).either.map((r) => [a, r] as const)).map((results) =>
93
+ results.foldLeft(CompletedRequestMap.empty(), (map, [k, v]) => map.insert(k, v)),
94
+ );
95
+ }
96
+ })();
97
+ }
@@ -0,0 +1,77 @@
1
+ /* eslint-disable @typescript-eslint/no-inferrable-types */
2
+ import { Conc } from "@fncts/base/collection/immutable/Conc";
3
+ import { IO } from "@fncts/io/IO";
4
+ import { CompletedRequestMap } from "@fncts/query/CompletedRequestMap";
5
+
6
+ export const DataSourceTypeId = Symbol.for("fncts.query.DataSource");
7
+ export type DataSourceTypeId = typeof DataSourceTypeId;
8
+
9
+ export const DataSourceVariance = Symbol.for("fncts.query.DataSource.Variance");
10
+ export type DataSourceVariance = typeof DataSourceVariance;
11
+
12
+ /**
13
+ * @tsplus type fncts.query.DataSource
14
+ * @tsplus companion fncts.query.DataSourceOps
15
+ */
16
+ export abstract class DataSource<out R, in A> implements Hashable, Equatable {
17
+ readonly [DataSourceTypeId]: DataSourceTypeId = DataSourceTypeId;
18
+ declare [DataSourceVariance]: {
19
+ readonly _R: (_: never) => R;
20
+ readonly _A: (_: A) => void;
21
+ };
22
+
23
+ /**
24
+ * The data source's identifier.
25
+ */
26
+ abstract readonly identifier: string;
27
+ /**
28
+ * Execute a collection of requests. The outer `Chunk` represents batches of
29
+ * requests that must be performed sequentially. The inner `Chunk` represents
30
+ * a batch of requests that can be performed in parallel.
31
+ */
32
+ abstract runAll(requests: Conc<Conc<A>>, __tsplusTrace?: string): IO<R, never, CompletedRequestMap>;
33
+
34
+ /**
35
+ * Returns a data source that executes at most `n` requests in parallel.
36
+ */
37
+ batchN(n: number): DataSource<R, A> {
38
+ const self = this;
39
+ return new (class extends DataSource<R, A> {
40
+ identifier: string = `${this.identifier}.batchN(${n})`;
41
+ runAll(requests: Conc<Conc<A>>, __tsplusTrace?: string): IO<R, never, CompletedRequestMap> {
42
+ if (n < 1) {
43
+ return IO.halt(new IllegalArgumentError("n must be at least 1", "DataSource.batchN"));
44
+ } else {
45
+ return self.runAll(requests.foldLeft(Conc.empty(), (b, a) => b.concat(a.chunksOf(n))));
46
+ }
47
+ }
48
+ })();
49
+ }
50
+
51
+ get [Symbol.hash]() {
52
+ return Hashable.string(this.identifier);
53
+ }
54
+
55
+ [Symbol.equals](that: unknown): boolean {
56
+ return isDataSource(that) && this.identifier === that.identifier;
57
+ }
58
+ }
59
+
60
+ /**
61
+ * @tsplus type fncts.query.Batched
62
+ * @tsplus companion fncts.query.BatchedOps
63
+ */
64
+ export abstract class Batched<R, A> extends DataSource<R, A> {
65
+ abstract run(requests: Conc<A>, __tsplusTrace?: string): IO<R, never, CompletedRequestMap>;
66
+ runAll(requests: Conc<Conc<A>>, __tsplusTrace?: string | undefined): IO<R, never, CompletedRequestMap> {
67
+ return IO.foldLeft(requests, CompletedRequestMap.empty(), (completedRequestMap, requests) => {
68
+ const newRequests: Conc<A> = requests.filter((a) => !completedRequestMap.contains(a));
69
+ if (newRequests.isEmpty) return IO.succeedNow(completedRequestMap);
70
+ else return this.run(newRequests).map((_) => completedRequestMap.concat(_));
71
+ });
72
+ }
73
+ }
74
+
75
+ export function isDataSource(u: unknown): u is DataSource<unknown, unknown> {
76
+ return hasTypeId(u, DataSourceTypeId);
77
+ }
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./DataSource/*.ts }
2
+ export * from "./DataSource/api.js";
3
+ export * from "./DataSource/definition.js";
4
+ // codegen:end
@@ -0,0 +1,7 @@
1
+ export const DataSourceAspectTypeId = Symbol.for("fncts.query.DataSourceAspect")
2
+ export type DataSourceAspectTypeId = typeof DataSourceAspectTypeId
3
+
4
+ export abstract class DataSourceAspect<R> {
5
+ readonly [DataSourceAspectTypeId]: DataSourceAspectTypeId = DataSourceAspectTypeId
6
+ abstract apply<R1, A>(dataSource: DataSource<R1, A>): DataSource<R | R1, A>
7
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A `Described<A>` is a value of type `A` along with a string description of
3
+ * that value. The description may be used to generate a hash associated with
4
+ * the value, so values that are equal should have the same description and
5
+ * values that are not equal should have different descriptions.
6
+ *
7
+ * @tsplus type fncts.query.Described
8
+ * @tsplus companion fncts.query.DescribedOps
9
+ */
10
+ export class Described<A> {
11
+ constructor(readonly value: A, readonly description: string) {}
12
+ }
13
+
14
+ /**
15
+ * @tsplus pipeable global described
16
+ */
17
+ export function described(description: string) {
18
+ return <A>(value: A): Described<A> => {
19
+ return new Described(value, description);
20
+ };
21
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @tsplus pipeable fncts.query.Query bimap
3
+ */
4
+ export function bimap<E, A, E1, B>(failure: (e: E) => E1, success: (a: A) => B, __tsplusTrace?: string) {
5
+ return <R>(self: Query<R, E, A>): Query<R, E1, B> => {
6
+ return self.matchQuery(
7
+ (e) => Query.failNow(failure(e)),
8
+ (a) => Query.succeedNow(success(a)),
9
+ );
10
+ };
11
+ }