@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.
- package/Cache/api.d.ts +28 -0
- package/Cache/definition.d.ts +15 -0
- package/Cache.d.ts +2 -0
- package/CompletedRequestMap.d.ts +17 -0
- package/DataSource/api.d.ts +38 -0
- package/DataSource/definition.d.ts +46 -0
- package/DataSource.d.ts +2 -0
- package/DataSourceAspect.d.ts +7 -0
- package/Described.d.ts +19 -0
- package/Query/api/bimap.d.ts +6 -0
- package/Query/api/catchAllCause.d.ts +12 -0
- package/Query/api/collectAll.d.ts +7 -0
- package/Query/api/collectAllBatched.d.ts +7 -0
- package/Query/api/collectAllConcurrent.d.ts +7 -0
- package/Query/api/defer.d.ts +7 -0
- package/Query/api/ensuring.d.ts +6 -0
- package/Query/api/environment.d.ts +47 -0
- package/Query/api/flatMap.d.ts +11 -0
- package/Query/api/foreach.d.ts +7 -0
- package/Query/api/foreachBatched.d.ts +7 -0
- package/Query/api/foreachConcurrent.d.ts +7 -0
- package/Query/api/fromRequest.d.ts +10 -0
- package/Query/api/map.d.ts +6 -0
- package/Query/api/mapDataSources.d.ts +7 -0
- package/Query/api/mapError.d.ts +6 -0
- package/Query/api/mapErrorCause.d.ts +7 -0
- package/Query/api/mapIO.d.ts +7 -0
- package/Query/api/match.d.ts +6 -0
- package/Query/api/matchCauseQuery.d.ts +7 -0
- package/Query/api/matchQuery.d.ts +6 -0
- package/Query/api/orHalt.d.ts +11 -0
- package/Query/api/race.d.ts +11 -0
- package/Query/api/run.d.ts +18 -0
- package/Query/api/timeout.d.ts +26 -0
- package/Query/api/zipWith.d.ts +7 -0
- package/Query/api/zipWithBatched.d.ts +6 -0
- package/Query/api/zipWithConcurrent.d.ts +6 -0
- package/Query/api.d.ts +66 -0
- package/Query/definition.d.ts +13 -0
- package/Query.d.ts +30 -0
- package/QueryFailure.d.ts +6 -0
- package/Request.d.ts +38 -0
- package/TestSpec.d.ts +6 -0
- package/_cjs/Cache/api.cjs +56 -0
- package/_cjs/Cache/api.cjs.map +1 -0
- package/_cjs/Cache/definition.cjs +13 -0
- package/_cjs/Cache/definition.cjs.map +1 -0
- package/_cjs/Cache.cjs +28 -0
- package/_cjs/Cache.cjs.map +1 -0
- package/_cjs/CompletedRequestMap.cjs +40 -0
- package/_cjs/CompletedRequestMap.cjs.map +1 -0
- package/_cjs/DataSource/api.cjs +111 -0
- package/_cjs/DataSource/api.cjs.map +1 -0
- package/_cjs/DataSource/definition.cjs +76 -0
- package/_cjs/DataSource/definition.cjs.map +1 -0
- package/_cjs/DataSource.cjs +28 -0
- package/_cjs/DataSource.cjs.map +1 -0
- package/_cjs/DataSourceAspect.cjs +17 -0
- package/_cjs/DataSourceAspect.cjs.map +1 -0
- package/_cjs/Described.cjs +32 -0
- package/_cjs/Described.cjs.map +1 -0
- package/_cjs/Query/api/bimap.cjs +19 -0
- package/_cjs/Query/api/bimap.cjs.map +1 -0
- package/_cjs/Query/api/catchAllCause.cjs +29 -0
- package/_cjs/Query/api/catchAllCause.cjs.map +1 -0
- package/_cjs/Query/api/collectAll.cjs +17 -0
- package/_cjs/Query/api/collectAll.cjs.map +1 -0
- package/_cjs/Query/api/collectAllBatched.cjs +17 -0
- package/_cjs/Query/api/collectAllBatched.cjs.map +1 -0
- package/_cjs/Query/api/collectAllConcurrent.cjs +17 -0
- package/_cjs/Query/api/collectAllConcurrent.cjs.map +1 -0
- package/_cjs/Query/api/defer.cjs +18 -0
- package/_cjs/Query/api/defer.cjs.map +1 -0
- package/_cjs/Query/api/ensuring.cjs +20 -0
- package/_cjs/Query/api/ensuring.cjs.map +1 -0
- package/_cjs/Query/api/environment.cjs +94 -0
- package/_cjs/Query/api/environment.cjs.map +1 -0
- package/_cjs/Query/api/flatMap.cjs +35 -0
- package/_cjs/Query/api/flatMap.cjs.map +1 -0
- package/_cjs/Query/api/foreach.cjs +26 -0
- package/_cjs/Query/api/foreach.cjs.map +1 -0
- package/_cjs/Query/api/foreachBatched.cjs +26 -0
- package/_cjs/Query/api/foreachBatched.cjs.map +1 -0
- package/_cjs/Query/api/foreachConcurrent.cjs +19 -0
- package/_cjs/Query/api/foreachConcurrent.cjs.map +1 -0
- package/_cjs/Query/api/fromRequest.cjs +38 -0
- package/_cjs/Query/api/fromRequest.cjs.map +1 -0
- package/_cjs/Query/api/map.cjs +21 -0
- package/_cjs/Query/api/map.cjs.map +1 -0
- package/_cjs/Query/api/mapDataSources.cjs +21 -0
- package/_cjs/Query/api/mapDataSources.cjs.map +1 -0
- package/_cjs/Query/api/mapError.cjs +19 -0
- package/_cjs/Query/api/mapError.cjs.map +1 -0
- package/_cjs/Query/api/mapErrorCause.cjs +19 -0
- package/_cjs/Query/api/mapErrorCause.cjs.map +1 -0
- package/_cjs/Query/api/mapIO.cjs +20 -0
- package/_cjs/Query/api/mapIO.cjs.map +1 -0
- package/_cjs/Query/api/match.cjs +20 -0
- package/_cjs/Query/api/match.cjs.map +1 -0
- package/_cjs/Query/api/matchCauseQuery.cjs +26 -0
- package/_cjs/Query/api/matchCauseQuery.cjs.map +1 -0
- package/_cjs/Query/api/matchQuery.cjs +21 -0
- package/_cjs/Query/api/matchQuery.cjs.map +1 -0
- package/_cjs/Query/api/orHalt.cjs +29 -0
- package/_cjs/Query/api/orHalt.cjs.map +1 -0
- package/_cjs/Query/api/race.cjs +41 -0
- package/_cjs/Query/api/race.cjs.map +1 -0
- package/_cjs/Query/api/run.cjs +49 -0
- package/_cjs/Query/api/run.cjs.map +1 -0
- package/_cjs/Query/api/timeout.cjs +71 -0
- package/_cjs/Query/api/timeout.cjs.map +1 -0
- package/_cjs/Query/api/zipWith.cjs +39 -0
- package/_cjs/Query/api/zipWith.cjs.map +1 -0
- package/_cjs/Query/api/zipWithBatched.cjs +39 -0
- package/_cjs/Query/api/zipWithBatched.cjs.map +1 -0
- package/_cjs/Query/api/zipWithConcurrent.cjs +39 -0
- package/_cjs/Query/api/zipWithConcurrent.cjs.map +1 -0
- package/_cjs/Query/api.cjs +99 -0
- package/_cjs/Query/api.cjs.map +1 -0
- package/_cjs/Query/definition.cjs +22 -0
- package/_cjs/Query/definition.cjs.map +1 -0
- package/_cjs/Query.cjs +336 -0
- package/_cjs/Query.cjs.map +1 -0
- package/_cjs/QueryFailure.cjs +15 -0
- package/_cjs/QueryFailure.cjs.map +1 -0
- package/_cjs/Request.cjs +54 -0
- package/_cjs/Request.cjs.map +1 -0
- package/_cjs/global.cjs +6 -0
- package/_cjs/global.cjs.map +1 -0
- package/_cjs/index.cjs +6 -0
- package/_cjs/index.cjs.map +1 -0
- package/_cjs/internal/BlockedRequest.cjs +30 -0
- package/_cjs/internal/BlockedRequest.cjs.map +1 -0
- package/_cjs/internal/BlockedRequests.cjs +367 -0
- package/_cjs/internal/BlockedRequests.cjs.map +1 -0
- package/_cjs/internal/Continue.cjs +292 -0
- package/_cjs/internal/Continue.cjs.map +1 -0
- package/_cjs/internal/Parallel.cjs +81 -0
- package/_cjs/internal/Parallel.cjs.map +1 -0
- package/_cjs/internal/Result.cjs +234 -0
- package/_cjs/internal/Result.cjs.map +1 -0
- package/_cjs/internal/Sequential.cjs +59 -0
- package/_cjs/internal/Sequential.cjs.map +1 -0
- package/_mjs/Cache/api.mjs +44 -0
- package/_mjs/Cache/api.mjs.map +1 -0
- package/_mjs/Cache/definition.mjs +6 -0
- package/_mjs/Cache/definition.mjs.map +1 -0
- package/_mjs/Cache.mjs +4 -0
- package/_mjs/Cache.mjs.map +1 -0
- package/_mjs/CompletedRequestMap.mjs +31 -0
- package/_mjs/CompletedRequestMap.mjs.map +1 -0
- package/_mjs/DataSource/api.mjs +98 -0
- package/_mjs/DataSource/api.mjs.map +1 -0
- package/_mjs/DataSource/definition.mjs +63 -0
- package/_mjs/DataSource/definition.mjs.map +1 -0
- package/_mjs/DataSource.mjs +4 -0
- package/_mjs/DataSource.mjs.map +1 -0
- package/_mjs/DataSourceAspect.mjs +9 -0
- package/_mjs/DataSourceAspect.mjs.map +1 -0
- package/_mjs/Described.mjs +24 -0
- package/_mjs/Described.mjs.map +1 -0
- package/_mjs/Query/api/bimap.mjs +11 -0
- package/_mjs/Query/api/bimap.mjs.map +1 -0
- package/_mjs/Query/api/catchAllCause.mjs +20 -0
- package/_mjs/Query/api/catchAllCause.mjs.map +1 -0
- package/_mjs/Query/api/collectAll.mjs +9 -0
- package/_mjs/Query/api/collectAll.mjs.map +1 -0
- package/_mjs/Query/api/collectAllBatched.mjs +9 -0
- package/_mjs/Query/api/collectAllBatched.mjs.map +1 -0
- package/_mjs/Query/api/collectAllConcurrent.mjs +9 -0
- package/_mjs/Query/api/collectAllConcurrent.mjs.map +1 -0
- package/_mjs/Query/api/defer.mjs +10 -0
- package/_mjs/Query/api/defer.mjs.map +1 -0
- package/_mjs/Query/api/ensuring.mjs +12 -0
- package/_mjs/Query/api/ensuring.mjs.map +1 -0
- package/_mjs/Query/api/environment.mjs +77 -0
- package/_mjs/Query/api/environment.mjs.map +1 -0
- package/_mjs/Query/api/flatMap.mjs +25 -0
- package/_mjs/Query/api/flatMap.mjs.map +1 -0
- package/_mjs/Query/api/foreach.mjs +18 -0
- package/_mjs/Query/api/foreach.mjs.map +1 -0
- package/_mjs/Query/api/foreachBatched.mjs +18 -0
- package/_mjs/Query/api/foreachBatched.mjs.map +1 -0
- package/_mjs/Query/api/foreachConcurrent.mjs +11 -0
- package/_mjs/Query/api/foreachConcurrent.mjs.map +1 -0
- package/_mjs/Query/api/fromRequest.mjs +30 -0
- package/_mjs/Query/api/fromRequest.mjs.map +1 -0
- package/_mjs/Query/api/map.mjs +13 -0
- package/_mjs/Query/api/map.mjs.map +1 -0
- package/_mjs/Query/api/mapDataSources.mjs +13 -0
- package/_mjs/Query/api/mapDataSources.mjs.map +1 -0
- package/_mjs/Query/api/mapError.mjs +11 -0
- package/_mjs/Query/api/mapError.mjs.map +1 -0
- package/_mjs/Query/api/mapErrorCause.mjs +11 -0
- package/_mjs/Query/api/mapErrorCause.mjs.map +1 -0
- package/_mjs/Query/api/mapIO.mjs +12 -0
- package/_mjs/Query/api/mapIO.mjs.map +1 -0
- package/_mjs/Query/api/match.mjs +12 -0
- package/_mjs/Query/api/match.mjs.map +1 -0
- package/_mjs/Query/api/matchCauseQuery.mjs +18 -0
- package/_mjs/Query/api/matchCauseQuery.mjs.map +1 -0
- package/_mjs/Query/api/matchQuery.mjs +13 -0
- package/_mjs/Query/api/matchQuery.mjs.map +1 -0
- package/_mjs/Query/api/orHalt.mjs +19 -0
- package/_mjs/Query/api/orHalt.mjs.map +1 -0
- package/_mjs/Query/api/race.mjs +33 -0
- package/_mjs/Query/api/race.mjs.map +1 -0
- package/_mjs/Query/api/run.mjs +38 -0
- package/_mjs/Query/api/run.mjs.map +1 -0
- package/_mjs/Query/api/timeout.mjs +59 -0
- package/_mjs/Query/api/timeout.mjs.map +1 -0
- package/_mjs/Query/api/zipWith.mjs +30 -0
- package/_mjs/Query/api/zipWith.mjs.map +1 -0
- package/_mjs/Query/api/zipWithBatched.mjs +31 -0
- package/_mjs/Query/api/zipWithBatched.mjs.map +1 -0
- package/_mjs/Query/api/zipWithConcurrent.mjs +31 -0
- package/_mjs/Query/api/zipWithConcurrent.mjs.map +1 -0
- package/_mjs/Query/api.mjs +77 -0
- package/_mjs/Query/api.mjs.map +1 -0
- package/_mjs/Query/definition.mjs +14 -0
- package/_mjs/Query/definition.mjs.map +1 -0
- package/_mjs/Query.mjs +34 -0
- package/_mjs/Query.mjs.map +1 -0
- package/_mjs/QueryFailure.mjs +8 -0
- package/_mjs/QueryFailure.mjs.map +1 -0
- package/_mjs/Request.mjs +43 -0
- package/_mjs/Request.mjs.map +1 -0
- package/_mjs/global.mjs +2 -0
- package/_mjs/global.mjs.map +1 -0
- package/_mjs/index.mjs +2 -0
- package/_mjs/index.mjs.map +1 -0
- package/_mjs/internal/BlockedRequest.mjs +21 -0
- package/_mjs/internal/BlockedRequest.mjs.map +1 -0
- package/_mjs/internal/BlockedRequests.mjs +341 -0
- package/_mjs/internal/BlockedRequests.mjs.map +1 -0
- package/_mjs/internal/Continue.mjs +262 -0
- package/_mjs/internal/Continue.mjs.map +1 -0
- package/_mjs/internal/Parallel.mjs +62 -0
- package/_mjs/internal/Parallel.mjs.map +1 -0
- package/_mjs/internal/Result.mjs +208 -0
- package/_mjs/internal/Result.mjs.map +1 -0
- package/_mjs/internal/Sequential.mjs +44 -0
- package/_mjs/internal/Sequential.mjs.map +1 -0
- package/_src/Cache/api.ts +49 -0
- package/_src/Cache/definition.ts +13 -0
- package/_src/Cache.ts +4 -0
- package/_src/CompletedRequestMap.ts +38 -0
- package/_src/DataSource/api.ts +97 -0
- package/_src/DataSource/definition.ts +77 -0
- package/_src/DataSource.ts +4 -0
- package/_src/DataSourceAspect.ts +7 -0
- package/_src/Described.ts +21 -0
- package/_src/Query/api/bimap.ts +11 -0
- package/_src/Query/api/catchAllCause.ts +17 -0
- package/_src/Query/api/collectAll.ts +6 -0
- package/_src/Query/api/collectAllBatched.ts +9 -0
- package/_src/Query/api/collectAllConcurrent.ts +6 -0
- package/_src/Query/api/defer.ts +6 -0
- package/_src/Query/api/ensuring.ts +19 -0
- package/_src/Query/api/environment.ts +82 -0
- package/_src/Query/api/flatMap.ts +26 -0
- package/_src/Query/api/foreach.ts +17 -0
- package/_src/Query/api/foreachBatched.ts +17 -0
- package/_src/Query/api/foreachConcurrent.ts +10 -0
- package/_src/Query/api/fromRequest.ts +49 -0
- package/_src/Query/api/map.ts +8 -0
- package/_src/Query/api/mapDataSources.ts +8 -0
- package/_src/Query/api/mapError.ts +8 -0
- package/_src/Query/api/mapErrorCause.ts +8 -0
- package/_src/Query/api/mapIO.ts +8 -0
- package/_src/Query/api/match.ts +11 -0
- package/_src/Query/api/matchCauseQuery.ts +21 -0
- package/_src/Query/api/matchQuery.ts +12 -0
- package/_src/Query/api/orHalt.ts +15 -0
- package/_src/Query/api/race.ts +34 -0
- package/_src/Query/api/run.ts +40 -0
- package/_src/Query/api/timeout.ts +58 -0
- package/_src/Query/api/zipWith.ts +44 -0
- package/_src/Query/api/zipWithBatched.ts +41 -0
- package/_src/Query/api/zipWithConcurrent.ts +45 -0
- package/_src/Query/api.ts +76 -0
- package/_src/Query/definition.ts +13 -0
- package/_src/Query.ts +35 -0
- package/_src/QueryFailure.ts +7 -0
- package/_src/Request.ts +52 -0
- package/_src/global.ts +45 -0
- package/_src/index.ts +3 -0
- package/_src/internal/BlockedRequest.ts +24 -0
- package/_src/internal/BlockedRequests.ts +331 -0
- package/_src/internal/Continue.ts +305 -0
- package/_src/internal/Parallel.ts +82 -0
- package/_src/internal/Result.ts +242 -0
- package/_src/internal/Sequential.ts +63 -0
- package/global.d.ts +45 -0
- package/index.d.ts +1 -0
- package/internal/BlockedRequest.d.ts +21 -0
- package/internal/BlockedRequests.d.ts +123 -0
- package/internal/Continue.d.ts +133 -0
- package/internal/Parallel.d.ts +56 -0
- package/internal/Result.d.ts +115 -0
- package/internal/Sequential.d.ts +40 -0
- package/package.json +22 -0
- 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,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,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
|
+
}
|