@effect-app/infra 2.31.2 → 2.32.0
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/CHANGELOG.md +12 -0
- package/_cjs/Emailer/Sendgrid.cjs +3 -4
- package/_cjs/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/Emailer/fake.cjs +0 -3
- package/_cjs/Emailer/fake.cjs.map +1 -1
- package/_cjs/Emailer/service.cjs +3 -5
- package/_cjs/Emailer/service.cjs.map +1 -1
- package/_cjs/Model/dsl.cjs +0 -3
- package/_cjs/Model/dsl.cjs.map +1 -1
- package/_cjs/QueueMaker/memQueue.cjs +0 -3
- package/_cjs/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/QueueMaker/sbqueue.cjs +0 -6
- package/_cjs/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/QueueMaker/service.cjs.map +1 -1
- package/_cjs/RequestContext.cjs +0 -4
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/Store/index.cjs +0 -3
- package/_cjs/Store/index.cjs.map +1 -1
- package/_cjs/Store/service.cjs +0 -8
- package/_cjs/Store/service.cjs.map +1 -1
- package/_cjs/adapters/memQueue.cjs +0 -4
- package/_cjs/adapters/memQueue.cjs.map +1 -1
- package/_cjs/arbs.cjs +0 -6
- package/_cjs/arbs.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +0 -22
- package/_cjs/rateLimit.cjs.map +1 -1
- package/dist/CUPS.d.ts +1 -1
- package/dist/Emailer/Sendgrid.d.ts +0 -3
- package/dist/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/Emailer/Sendgrid.js +6 -7
- package/dist/Emailer/fake.d.ts +0 -3
- package/dist/Emailer/fake.d.ts.map +1 -1
- package/dist/Emailer/fake.js +1 -4
- package/dist/Emailer/service.d.ts +13 -10
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +4 -6
- package/dist/Model/Repository/service.d.ts +0 -3
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/dsl.d.ts +0 -9
- package/dist/Model/dsl.d.ts.map +1 -1
- package/dist/Model/dsl.js +1 -4
- package/dist/QueueMaker/memQueue.d.ts +0 -3
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +1 -4
- package/dist/QueueMaker/sbqueue.d.ts +2 -8
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +1 -7
- package/dist/QueueMaker/service.d.ts +0 -3
- package/dist/QueueMaker/service.d.ts.map +1 -1
- package/dist/QueueMaker/service.js +1 -1
- package/dist/RequestContext.d.ts +1 -5
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +1 -5
- package/dist/Store/index.d.ts +0 -3
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +1 -4
- package/dist/Store/service.d.ts +1 -9
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +1 -9
- package/dist/adapters/ServiceBus.d.ts +1 -1
- package/dist/adapters/memQueue.d.ts +0 -4
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +1 -5
- package/dist/arbs.d.ts +0 -6
- package/dist/arbs.d.ts.map +1 -1
- package/dist/arbs.js +1 -7
- package/dist/rateLimit.d.ts +0 -15
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +1 -23
- package/package.json +2 -2
- package/src/Emailer/Sendgrid.ts +17 -18
- package/src/Emailer/fake.ts +0 -3
- package/src/Emailer/service.ts +6 -6
- package/src/Model/Repository/service.ts +0 -3
- package/src/Model/dsl.ts +0 -9
- package/src/QueueMaker/memQueue.ts +0 -3
- package/src/QueueMaker/sbqueue.ts +0 -6
- package/src/QueueMaker/service.ts +0 -3
- package/src/RequestContext.ts +0 -4
- package/src/Store/index.ts +0 -3
- package/src/Store/service.ts +0 -8
- package/src/adapters/memQueue.ts +0 -4
- package/src/arbs.ts +0 -6
- package/src/rateLimit.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/adapters/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;;0BAQ5B,MAAM;;0BAAN,MAAM;;0BAAN,MAAM;;;;;;;;;;;;;;;;8BAAN,MAAM;;;AAWlC
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/adapters/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;;0BAQ5B,MAAM;;0BAAN,MAAM;;0BAAN,MAAM;;;;;;;;;;;;;;;;8BAAN,MAAM;;;AAWlC,qBAAa,QAAS,SAAQ,aAA0D;IACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,uDAAiB;CACtC"}
|
|
@@ -14,11 +14,7 @@ const make = Effect
|
|
|
14
14
|
})
|
|
15
15
|
};
|
|
16
16
|
});
|
|
17
|
-
/**
|
|
18
|
-
* @tsplus type MemQueue
|
|
19
|
-
* @tsplus companion MemQueue.Ops
|
|
20
|
-
*/
|
|
21
17
|
export class MemQueue extends Context.TagMakeId("effect-app/MemQueue", make)() {
|
|
22
18
|
static Live = this.toLayer();
|
|
23
19
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQWMsTUFBTSxZQUFZLENBQUE7QUFDeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFFakMsTUFBTSxJQUFJLEdBQUcsTUFBTTtLQUNoQixHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ1osTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBK0IsQ0FBQyxDQUFBO0lBRTlFLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdEIsSUFBSSxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ2YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBVSxDQUFBO1lBQ3pDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2xCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxDQUFDO0tBQ0wsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUosTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxFQUFZO0lBQ3RGLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBIn0=
|
package/dist/arbs.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { A } from "effect-app/Schema";
|
|
2
2
|
import * as FastCheck from "effect/FastCheck";
|
|
3
|
-
/**
|
|
4
|
-
* @tsplus getter FastCheck generateRandom
|
|
5
|
-
*/
|
|
6
3
|
export declare function generate<T>(arb: FastCheck.Arbitrary<T>): FastCheck.Value<T>;
|
|
7
|
-
/**
|
|
8
|
-
* @tsplus getter effect/schema/Arbitrary generate
|
|
9
|
-
*/
|
|
10
4
|
export declare function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>): FastCheck.Value<T>;
|
|
11
5
|
//# sourceMappingURL=arbs.d.ts.map
|
package/dist/arbs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arbs.d.ts","sourceRoot":"","sources":["../src/arbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAQ7C
|
|
1
|
+
{"version":3,"file":"arbs.d.ts","sourceRoot":"","sources":["../src/arbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAQ7C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,sBAEtD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAE/D"}
|
package/dist/arbs.js
CHANGED
|
@@ -6,16 +6,10 @@ import { Random } from "fast-check";
|
|
|
6
6
|
import * as rand from "pure-rand";
|
|
7
7
|
const rnd = new Random(rand.congruential32(5));
|
|
8
8
|
setFaker(faker);
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus getter FastCheck generateRandom
|
|
11
|
-
*/
|
|
12
9
|
export function generate(arb) {
|
|
13
10
|
return arb.generate(rnd, undefined);
|
|
14
11
|
}
|
|
15
|
-
/**
|
|
16
|
-
* @tsplus getter effect/schema/Arbitrary generate
|
|
17
|
-
*/
|
|
18
12
|
export function generateFromArbitrary(arb) {
|
|
19
13
|
return generate(arb(FastCheck));
|
|
20
14
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUU1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUVqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFOUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLFFBQVEsQ0FBSSxHQUEyQjtJQUNyRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUksR0FBdUI7SUFDOUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyJ9
|
package/dist/rateLimit.d.ts
CHANGED
|
@@ -6,24 +6,9 @@ import type { Semaphore } from "effect-app/Effect";
|
|
|
6
6
|
* immediately before the effect begins execution and releasing them
|
|
7
7
|
* delayed by duration after the effect completes execution, whether by success,
|
|
8
8
|
* failure, or interruption.
|
|
9
|
-
*
|
|
10
|
-
* @tsplus static effect/io/Effect/Semaphore.Ops withPermitsDuration
|
|
11
|
-
* @tsplus pipeable effect/io/Effect/Semaphore withPermitsDuration
|
|
12
9
|
*/
|
|
13
10
|
export declare function SEM_withPermitsDuration(permits: number, duration: Duration): (self: Semaphore) => <R, E, A>(effect: Effect<A, E, R>) => Effect<A, E, R>;
|
|
14
|
-
/**
|
|
15
|
-
* @tsplus pipeable Iterable batchPar
|
|
16
|
-
* @tsplus static Collection.Ops batchPar
|
|
17
|
-
*/
|
|
18
11
|
export declare function batchPar<R, E, A, R2, E2, A2, T>(n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>, forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>): (items: Iterable<T>) => Effect.Effect<A2[], E | E2, R | R2>;
|
|
19
|
-
/**
|
|
20
|
-
* @tsplus pipeable Iterable batch
|
|
21
|
-
* @tsplus static Collection.Ops batch
|
|
22
|
-
*/
|
|
23
12
|
export declare function batch<R, E, A, R2, E2, A2, T>(n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>, forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>): (items: Iterable<T>) => Effect.Effect<A2[], E | E2, R | R2>;
|
|
24
|
-
/**
|
|
25
|
-
* @tsplus pipeable Iterable naiveRateLimit
|
|
26
|
-
* @tsplus static Collection.Ops naiveRateLimit
|
|
27
|
-
*/
|
|
28
13
|
export declare function naiveRateLimit(n: number, d: Duration): <T>(items: Iterable<T>) => <R, E, A, R2, E2, A2>(forEachItem: (i: T) => Effect<A, E, R>, forEachBatch: (a: A[]) => Effect<A2, E2, R2>) => Effect.Effect<A2[], E | E2, R | R2>;
|
|
29
14
|
//# sourceMappingURL=rateLimit.d.ts.map
|
package/dist/rateLimit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../src/rateLimit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../src/rateLimit.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAS,MAAM,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,UAC3D,SAAS,KAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAahF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC7C,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC/E,YAAY,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,WAErD,QAAQ,CAAC,CAAC,CAAC,yCAS3B;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1C,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC/E,YAAY,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,WAErD,QAAQ,CAAC,CAAC,CAAC,yCAQ3B;AAkBD,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,QAAQ,IAEH,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,eACxC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,gBACxB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,yCAc/C"}
|
package/dist/rateLimit.js
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
// * immediately before the effect begins execution and releasing them
|
|
4
4
|
// * delayed by duration after the effect completes execution, whether by success,
|
|
5
5
|
// * failure, or interruption.
|
|
6
|
-
// *
|
|
7
|
-
// * @tsplus static effect/stm/TSemaphore.Ops withPermitsDuration
|
|
8
|
-
// * @tsplus pipeable effect/stm/TSemaphore withPermitsDuration
|
|
9
6
|
// */
|
|
10
7
|
// export function withPermitsDuration(permits: number, duration: Duration) {
|
|
11
8
|
// return (self: TSemaphore): <R, E, A>(effect: Effect<R, E, A>) => Effect<R, E, A> => {
|
|
@@ -28,9 +25,6 @@ import { Array, Effect } from "effect-app";
|
|
|
28
25
|
* immediately before the effect begins execution and releasing them
|
|
29
26
|
* delayed by duration after the effect completes execution, whether by success,
|
|
30
27
|
* failure, or interruption.
|
|
31
|
-
*
|
|
32
|
-
* @tsplus static effect/io/Effect/Semaphore.Ops withPermitsDuration
|
|
33
|
-
* @tsplus pipeable effect/io/Effect/Semaphore withPermitsDuration
|
|
34
28
|
*/
|
|
35
29
|
export function SEM_withPermitsDuration(permits, duration) {
|
|
36
30
|
return (self) => {
|
|
@@ -39,28 +33,16 @@ export function SEM_withPermitsDuration(permits, duration) {
|
|
|
39
33
|
.pipe(Effect.ensuring(Effect.delay(self.release(permits), duration))))));
|
|
40
34
|
};
|
|
41
35
|
}
|
|
42
|
-
/**
|
|
43
|
-
* @tsplus pipeable Iterable batchPar
|
|
44
|
-
* @tsplus static Collection.Ops batchPar
|
|
45
|
-
*/
|
|
46
36
|
export function batchPar(n, forEachItem, forEachBatch) {
|
|
47
37
|
return (items) => Effect.forEach(Array.chunk_(items, n), (_, i) => Effect
|
|
48
38
|
.forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
|
|
49
39
|
.pipe(Effect.flatMap((_) => forEachBatch(_, i))), { concurrency: "inherit" });
|
|
50
40
|
}
|
|
51
|
-
/**
|
|
52
|
-
* @tsplus pipeable Iterable batch
|
|
53
|
-
* @tsplus static Collection.Ops batch
|
|
54
|
-
*/
|
|
55
41
|
export function batch(n, forEachItem, forEachBatch) {
|
|
56
42
|
return (items) => Effect.forEach(Array.chunk_(items, n), (_, i) => Effect
|
|
57
43
|
.forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
|
|
58
44
|
.pipe(Effect.flatMap((_) => forEachBatch(_, i))));
|
|
59
45
|
}
|
|
60
|
-
// /**
|
|
61
|
-
// * @tsplus pipeable Iterable rateLimit
|
|
62
|
-
// * @tsplus static Collection.Ops rateLimit
|
|
63
|
-
// */
|
|
64
46
|
// export function rateLimit(
|
|
65
47
|
// n: number,
|
|
66
48
|
// d: DUR
|
|
@@ -76,10 +58,6 @@ export function batch(n, forEachItem, forEachBatch) {
|
|
|
76
58
|
// .mapChunksEffect(_ => _.forEachEffectPar(forEachItem).tap(forEachBatch))
|
|
77
59
|
// .runCollect
|
|
78
60
|
// }
|
|
79
|
-
/**
|
|
80
|
-
* @tsplus pipeable Iterable naiveRateLimit
|
|
81
|
-
* @tsplus static Collection.Ops naiveRateLimit
|
|
82
|
-
*/
|
|
83
61
|
export function naiveRateLimit(n, d) {
|
|
84
62
|
return (items) => ((forEachItem, forEachBatch) => Effect.forEach(Array.chunk_(items, n), (batch, i) => ((i === 0)
|
|
85
63
|
? Effect.void
|
|
@@ -88,4 +66,4 @@ export function naiveRateLimit(n, d) {
|
|
|
88
66
|
.forEach(batch, forEachItem, { concurrency: n })
|
|
89
67
|
.pipe(Effect.flatMap(forEachBatch))))));
|
|
90
68
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JhdGVMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxtRkFBbUY7QUFDbkYsK0JBQStCO0FBQy9CLE1BQU07QUFDTiw2RUFBNkU7QUFDN0UsMEZBQTBGO0FBQzFGLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixVQUFVO0FBQ1YsTUFBTTtBQUNOLElBQUk7QUFHSixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUcxQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsUUFBa0I7SUFDekUsT0FBTyxDQUFDLElBQWUsRUFBeUQsRUFBRTtRQUNoRixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDaEIsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDLENBQ0wsQ0FBQyxDQUNQLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsQ0FBUyxFQUNULFdBQStFLEVBQy9FLFlBQW9FO0lBRXBFLE9BQU8sQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLE9BQU8sQ0FDWixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDUCxNQUFNO1NBQ0gsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO1NBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUMzQixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQ25CLENBQVMsRUFDVCxXQUErRSxFQUMvRSxZQUFvRTtJQUVwRSxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQ3RCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ1AsTUFBTTtTQUNILE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztTQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6RSxDQUFBO0FBQ0wsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixlQUFlO0FBQ2YsV0FBVztBQUNYLE1BQU07QUFDTixzQ0FBc0M7QUFDdEMsNkJBQTZCO0FBQzdCLGdEQUFnRDtBQUNoRCwwREFBMEQ7QUFDMUQsV0FBVztBQUNYLHFDQUFxQztBQUNyQyxzQkFBc0I7QUFDdEIsd0NBQXdDO0FBQ3hDLG1GQUFtRjtBQUNuRixzQkFBc0I7QUFDdEIsSUFBSTtBQUVKLE1BQU0sVUFBVSxjQUFjLENBQzVCLENBQVMsRUFDVCxDQUFXO0lBRVgsT0FBTyxDQUFJLEtBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDakMsV0FBc0MsRUFDdEMsWUFBNEMsRUFDNUMsRUFBRSxDQUNGLE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQ3RCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ1gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDbkIsTUFBTTtTQUNILE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQ3RDLENBQUMsQ0FDUCxDQUFDLENBQUE7QUFDTixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "6.1.0",
|
|
15
15
|
"query-string": "^9.1.1",
|
|
16
|
-
"effect-app": "2.19.
|
|
16
|
+
"effect-app": "2.19.5"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.2.0",
|
package/src/Emailer/Sendgrid.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Array, Effect, Equivalence, Redacted } from "effect-app"
|
|
|
5
5
|
import { dropUndefinedT } from "effect-app/utils"
|
|
6
6
|
import { inspect } from "util"
|
|
7
7
|
import { InfraLogger } from "../logger.js"
|
|
8
|
-
import { Emailer } from "./service.js"
|
|
8
|
+
import { Emailer, SendMailError } from "./service.js"
|
|
9
9
|
import type { EmailMsg, EmailMsgOptionalFrom, SendgridConfig } from "./service.js"
|
|
10
10
|
|
|
11
11
|
const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPrefix }: SendgridConfig) =>
|
|
@@ -32,20 +32,22 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
|
|
|
32
32
|
}
|
|
33
33
|
yield* InfraLogger.logDebug("Sending email").pipe(Effect.annotateLogs("msg", inspect(renderedMsg, false, 5)))
|
|
34
34
|
|
|
35
|
-
const ret = yield* Effect
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
err
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
35
|
+
const ret = yield* Effect
|
|
36
|
+
.async<
|
|
37
|
+
[sgMail.ClientResponse, Record<string, unknown>],
|
|
38
|
+
Error | sgMail.ResponseError
|
|
39
|
+
>(
|
|
40
|
+
(cb) =>
|
|
41
|
+
void sgMail.send(
|
|
42
|
+
renderedMsg as any, // sue me
|
|
43
|
+
msg.isMultiple ?? true,
|
|
44
|
+
(err, result) =>
|
|
45
|
+
err
|
|
46
|
+
? cb(Effect.fail(err))
|
|
47
|
+
: cb(Effect.sync(() => result))
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
.pipe(Effect.mapError((raw) => new SendMailError({ raw })))
|
|
49
51
|
|
|
50
52
|
// const event = {
|
|
51
53
|
// name: "EmailSent",
|
|
@@ -62,9 +64,6 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
|
|
|
62
64
|
})
|
|
63
65
|
})
|
|
64
66
|
|
|
65
|
-
/**
|
|
66
|
-
* @tsplus static Emailer.Ops SendgridLayer
|
|
67
|
-
*/
|
|
68
67
|
export function Sendgrid(config: SendgridConfig) {
|
|
69
68
|
return Emailer.toLayer(makeSendgrid(config))
|
|
70
69
|
}
|
package/src/Emailer/fake.ts
CHANGED
package/src/Emailer/service.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js"
|
|
2
2
|
import type { ResponseError } from "@sendgrid/mail"
|
|
3
3
|
import type { Effect, NonEmptyReadonlyArray, Redacted } from "effect-app"
|
|
4
|
-
import { Context } from "effect-app"
|
|
4
|
+
import { Context, Data } from "effect-app"
|
|
5
5
|
import type { Email } from "effect-app/Schema"
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export class SendMailError extends Data.TaggedError("SendMailError")<{
|
|
8
|
+
readonly raw: Error | ResponseError
|
|
9
|
+
}> {}
|
|
10
|
+
|
|
11
11
|
export class Emailer extends Context.TagId("effect-app/Emailer")<Emailer, {
|
|
12
|
-
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void,
|
|
12
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, SendMailError>
|
|
13
13
|
}>() {}
|
|
14
14
|
|
|
15
15
|
export type EmailData = Email | {
|
|
@@ -6,9 +6,6 @@ import type { FieldValues, ResolveFirstLevel } from "../filter/types.js"
|
|
|
6
6
|
import type { QAll, Query, QueryProjection } from "../query.js"
|
|
7
7
|
import type { Mapped } from "./legacy.js"
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus type Repository
|
|
11
|
-
*/
|
|
12
9
|
export interface Repository<
|
|
13
10
|
T,
|
|
14
11
|
Encoded extends FieldValues,
|
package/src/Model/dsl.ts
CHANGED
|
@@ -25,9 +25,6 @@ export type AllDSL<T, Evt> =
|
|
|
25
25
|
) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>)
|
|
26
26
|
& AllDSLExt<T, Evt>
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
* @tsplus type DSLExt
|
|
30
|
-
*/
|
|
31
28
|
export interface AllDSLExt<T, Evt> {
|
|
32
29
|
modify: <R, E, A, S1 extends T, S2 extends T>(
|
|
33
30
|
pure: (items: readonly S1[], dsl: PureDSL<readonly S1[], readonly S2[], Evt>) => Effect<A, E, R>
|
|
@@ -51,9 +48,6 @@ export type OneDSL<T, Evt> =
|
|
|
51
48
|
) => Effect<A, E, FixEnv<R, Evt, S1, S2>>)
|
|
52
49
|
& OneDSLExt<T, Evt>
|
|
53
50
|
|
|
54
|
-
/**
|
|
55
|
-
* @tsplus type DSLExt
|
|
56
|
-
*/
|
|
57
51
|
export interface OneDSLExt<T, Evt> {
|
|
58
52
|
modify: <R, E, A, S1 extends T, S2 extends T>(
|
|
59
53
|
pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>
|
|
@@ -128,9 +122,6 @@ export function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effec
|
|
|
128
122
|
return (items: Iterable<T>) => Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn)
|
|
129
123
|
}
|
|
130
124
|
|
|
131
|
-
/**
|
|
132
|
-
* @tsplus fluent Iterable ifAny
|
|
133
|
-
*/
|
|
134
125
|
export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>) {
|
|
135
126
|
return Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn)
|
|
136
127
|
}
|
|
@@ -7,9 +7,6 @@ import { InfraLogger } from "../logger.js"
|
|
|
7
7
|
import { reportNonInterruptedFailure } from "./errors.js"
|
|
8
8
|
import { type QueueBase, QueueMeta } from "./service.js"
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
* @tsplus static QueueMaker.Ops makeMem
|
|
12
|
-
*/
|
|
13
10
|
export function makeMemQueue<
|
|
14
11
|
Evt extends { id: S.StringId; _tag: string },
|
|
15
12
|
DrainEvt extends { id: S.StringId; _tag: string },
|
|
@@ -15,9 +15,6 @@ import { InfraLogger } from "../logger.js"
|
|
|
15
15
|
import { reportNonInterruptedFailure, reportNonInterruptedFailureCause, reportQueueError } from "./errors.js"
|
|
16
16
|
import { type QueueBase, QueueMeta } from "./service.js"
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
20
|
-
*/
|
|
21
18
|
export function makeServiceBusQueue<
|
|
22
19
|
Evt extends { id: StringId; _tag: string },
|
|
23
20
|
DrainEvt extends { id: StringId; _tag: string },
|
|
@@ -152,9 +149,6 @@ export function makeServiceBusQueue<
|
|
|
152
149
|
})
|
|
153
150
|
}
|
|
154
151
|
|
|
155
|
-
/**
|
|
156
|
-
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
157
|
-
*/
|
|
158
152
|
export function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string) {
|
|
159
153
|
return Layer.merge(ServiceBusReceiverFactory.Live(queueDrainName), LiveSender(queueName)).pipe(
|
|
160
154
|
Layer.provide(LiveServiceBusClient(url))
|
package/src/RequestContext.ts
CHANGED
|
@@ -7,10 +7,6 @@ export type Locale = typeof Locale.Type
|
|
|
7
7
|
|
|
8
8
|
export const LocaleRef = FiberRef.unsafeMake<Locale>("en")
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
* @tsplus type RequestContext
|
|
12
|
-
* @tsplus companion RequestContext.Ops
|
|
13
|
-
*/
|
|
14
10
|
export class RequestContext extends S.ExtendedClass<
|
|
15
11
|
RequestContext,
|
|
16
12
|
RequestContext.Encoded
|
package/src/Store/index.ts
CHANGED
|
@@ -6,9 +6,6 @@ import { MemoryStoreLive } from "./Memory.js"
|
|
|
6
6
|
// import { RedisStoreLayer } from "./Redis.js"
|
|
7
7
|
import type { StorageConfig } from "./service.js"
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus static StoreMaker.Ops Layer
|
|
11
|
-
*/
|
|
12
9
|
export function StoreMakerLayer(cfg: StorageConfig) {
|
|
13
10
|
const storageUrl = Redacted.value(cfg.url)
|
|
14
11
|
if (storageUrl.startsWith("mem://")) {
|
package/src/Store/service.ts
CHANGED
|
@@ -91,10 +91,6 @@ export interface Store<
|
|
|
91
91
|
remove: (e: Encoded) => Effect<void>
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
/**
|
|
95
|
-
* @tsplus type StoreMaker
|
|
96
|
-
* @tsplus companion StoreMaker.Ops
|
|
97
|
-
*/
|
|
98
94
|
export class StoreMaker extends Context.TagId("effect-app/StoreMaker")<StoreMaker, {
|
|
99
95
|
make: <IdKey extends keyof Encoded, Encoded extends FieldValues, R = never, E = never>(
|
|
100
96
|
name: string,
|
|
@@ -172,10 +168,6 @@ export const makeContextMap = () => {
|
|
|
172
168
|
|
|
173
169
|
const makeMap = Effect.sync(() => makeContextMap())
|
|
174
170
|
|
|
175
|
-
/**
|
|
176
|
-
* @tsplus type ContextMap
|
|
177
|
-
* @tsplus companion ContextMap.Ops
|
|
178
|
-
*/
|
|
179
171
|
export class ContextMap extends Context.TagMakeId("effect-app/ContextMap", makeMap)<ContextMap>() {
|
|
180
172
|
}
|
|
181
173
|
|
package/src/adapters/memQueue.ts
CHANGED
package/src/arbs.ts
CHANGED
|
@@ -11,16 +11,10 @@ const rnd = new Random(rand.congruential32(5))
|
|
|
11
11
|
|
|
12
12
|
setFaker(faker)
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* @tsplus getter FastCheck generateRandom
|
|
16
|
-
*/
|
|
17
14
|
export function generate<T>(arb: FastCheck.Arbitrary<T>) {
|
|
18
15
|
return arb.generate(rnd, undefined)
|
|
19
16
|
}
|
|
20
17
|
|
|
21
|
-
/**
|
|
22
|
-
* @tsplus getter effect/schema/Arbitrary generate
|
|
23
|
-
*/
|
|
24
18
|
export function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>) {
|
|
25
19
|
return generate(arb(FastCheck))
|
|
26
20
|
}
|
package/src/rateLimit.ts
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
// * immediately before the effect begins execution and releasing them
|
|
4
4
|
// * delayed by duration after the effect completes execution, whether by success,
|
|
5
5
|
// * failure, or interruption.
|
|
6
|
-
// *
|
|
7
|
-
// * @tsplus static effect/stm/TSemaphore.Ops withPermitsDuration
|
|
8
|
-
// * @tsplus pipeable effect/stm/TSemaphore withPermitsDuration
|
|
9
6
|
// */
|
|
10
7
|
// export function withPermitsDuration(permits: number, duration: Duration) {
|
|
11
8
|
// return (self: TSemaphore): <R, E, A>(effect: Effect<R, E, A>) => Effect<R, E, A> => {
|
|
@@ -32,9 +29,6 @@ import type { Semaphore } from "effect-app/Effect"
|
|
|
32
29
|
* immediately before the effect begins execution and releasing them
|
|
33
30
|
* delayed by duration after the effect completes execution, whether by success,
|
|
34
31
|
* failure, or interruption.
|
|
35
|
-
*
|
|
36
|
-
* @tsplus static effect/io/Effect/Semaphore.Ops withPermitsDuration
|
|
37
|
-
* @tsplus pipeable effect/io/Effect/Semaphore withPermitsDuration
|
|
38
32
|
*/
|
|
39
33
|
export function SEM_withPermitsDuration(permits: number, duration: Duration) {
|
|
40
34
|
return (self: Semaphore): <R, E, A>(effect: Effect<A, E, R>) => Effect<A, E, R> => {
|
|
@@ -52,10 +46,6 @@ export function SEM_withPermitsDuration(permits: number, duration: Duration) {
|
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
|
|
55
|
-
/**
|
|
56
|
-
* @tsplus pipeable Iterable batchPar
|
|
57
|
-
* @tsplus static Collection.Ops batchPar
|
|
58
|
-
*/
|
|
59
49
|
export function batchPar<R, E, A, R2, E2, A2, T>(
|
|
60
50
|
n: number,
|
|
61
51
|
forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>,
|
|
@@ -72,10 +62,6 @@ export function batchPar<R, E, A, R2, E2, A2, T>(
|
|
|
72
62
|
)
|
|
73
63
|
}
|
|
74
64
|
|
|
75
|
-
/**
|
|
76
|
-
* @tsplus pipeable Iterable batch
|
|
77
|
-
* @tsplus static Collection.Ops batch
|
|
78
|
-
*/
|
|
79
65
|
export function batch<R, E, A, R2, E2, A2, T>(
|
|
80
66
|
n: number,
|
|
81
67
|
forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>,
|
|
@@ -91,10 +77,6 @@ export function batch<R, E, A, R2, E2, A2, T>(
|
|
|
91
77
|
)
|
|
92
78
|
}
|
|
93
79
|
|
|
94
|
-
// /**
|
|
95
|
-
// * @tsplus pipeable Iterable rateLimit
|
|
96
|
-
// * @tsplus static Collection.Ops rateLimit
|
|
97
|
-
// */
|
|
98
80
|
// export function rateLimit(
|
|
99
81
|
// n: number,
|
|
100
82
|
// d: DUR
|
|
@@ -111,11 +93,6 @@ export function batch<R, E, A, R2, E2, A2, T>(
|
|
|
111
93
|
// .runCollect
|
|
112
94
|
// }
|
|
113
95
|
|
|
114
|
-
/**
|
|
115
|
-
* @tsplus pipeable Iterable naiveRateLimit
|
|
116
|
-
* @tsplus static Collection.Ops naiveRateLimit
|
|
117
|
-
*/
|
|
118
|
-
|
|
119
96
|
export function naiveRateLimit(
|
|
120
97
|
n: number,
|
|
121
98
|
d: Duration
|