gemi 0.148.0 → 0.149.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/dist/ai/index.js +1 -1
- package/dist/{chunk-95vm1de8.js → chunk-1z619xe0.js} +6 -6
- package/dist/{chunk-95vm1de8.js.map → chunk-1z619xe0.js.map} +3 -3
- package/dist/{chunk-h34n0w2w.js → chunk-g6a4axhj.js} +1 -1
- package/dist/{chunk-56k4fg31.js → chunk-hgz3728r.js} +2 -2
- package/dist/{chunk-56k4fg31.js.map → chunk-hgz3728r.js.map} +1 -1
- package/dist/{chunk-01tw5f26.js → chunk-k2cj2577.js} +1 -1
- package/dist/{chunk-r9arr68h.js → chunk-nb42h4qa.js} +1 -1
- package/dist/{chunk-b4pqgz0f.js → chunk-nhdx7cpz.js} +1 -1
- package/dist/{chunk-8vx9dws4.js → chunk-pyhgsasa.js} +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/http/index.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +9 -9
- package/dist/services/index.js.map +3 -3
- package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts +21 -0
- package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts.map +1 -1
- package/dist/services/redis/RedisManager.d.ts +23 -4
- package/dist/services/redis/RedisManager.d.ts.map +1 -1
- package/package.json +1 -1
- /package/dist/{chunk-h34n0w2w.js.map → chunk-g6a4axhj.js.map} +0 -0
- /package/dist/{chunk-01tw5f26.js.map → chunk-k2cj2577.js.map} +0 -0
- /package/dist/{chunk-r9arr68h.js.map → chunk-nb42h4qa.js.map} +0 -0
- /package/dist/{chunk-b4pqgz0f.js.map → chunk-nhdx7cpz.js.map} +0 -0
- /package/dist/{chunk-8vx9dws4.js.map → chunk-pyhgsasa.js.map} +0 -0
|
@@ -24,9 +24,22 @@ export interface RedisRateLimiterOptions {
|
|
|
24
24
|
* one (payments, sign-up, anything that costs money per call).
|
|
25
25
|
*/
|
|
26
26
|
failOpen?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* How long one `consume` may wait for Redis, in ms, before it gives up and
|
|
29
|
+
* follows `failOpen`. Default `250`. Without it, a request waits as long as
|
|
30
|
+
* the client does: up to the connect timeout and the reconnect loop (10 to
|
|
31
|
+
* 30 s) while Redis is down, and with no limit when Redis stops answering on
|
|
32
|
+
* an open connection. `0` turns it off.
|
|
33
|
+
*/
|
|
34
|
+
timeout?: number;
|
|
27
35
|
/** Called with every Redis failure. Defaults to `console.error`. */
|
|
28
36
|
onError?: (error: unknown) => void;
|
|
29
37
|
}
|
|
38
|
+
/** What `onError` gets when a `consume` ran past `timeout`. */
|
|
39
|
+
export declare class RedisRateLimiterTimeoutError extends Error {
|
|
40
|
+
readonly code = "ERR_RATE_LIMITER_TIMEOUT";
|
|
41
|
+
constructor(timeout: number);
|
|
42
|
+
}
|
|
30
43
|
/**
|
|
31
44
|
* Rate limiter backed by Redis, so every instance of the app counts against the
|
|
32
45
|
* same budget. Use it as soon as you run more than one process.
|
|
@@ -48,11 +61,19 @@ export declare class RedisRateLimiter extends RateLimiterDriver {
|
|
|
48
61
|
private injectedClient?;
|
|
49
62
|
private prefix;
|
|
50
63
|
private failOpen;
|
|
64
|
+
private timeout;
|
|
51
65
|
private onError;
|
|
52
66
|
/** Cached `SCRIPT LOAD` result, so the script body is sent at most once. */
|
|
53
67
|
private scriptSha;
|
|
54
68
|
constructor(options?: RedisRateLimiterOptions);
|
|
55
69
|
consume(params: ConsumeParams): Promise<RateLimitResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Settles with `work`, or rejects with `RedisRateLimiterTimeoutError` once
|
|
72
|
+
* `timeout` passes. The command itself is not cancelled (Redis may still run
|
|
73
|
+
* the script, so a request that timed out can still be counted); its late
|
|
74
|
+
* outcome is ignored.
|
|
75
|
+
*/
|
|
76
|
+
private withTimeout;
|
|
56
77
|
private get client();
|
|
57
78
|
/** Runs the script by digest, loading it on first use and after a flush. */
|
|
58
79
|
private run;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisRateLimiterDriver.d.ts","sourceRoot":"","sources":["../../../../services/rate-limiter/drivers/RedisRateLimiterDriver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAyCD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD,OAAO,CAAC,cAAc,CAAC,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAA2B;IAE1C,4EAA4E;IAC5E,OAAO,CAAC,SAAS,CAAgC;gBAErC,OAAO,GAAE,uBAA4B;
|
|
1
|
+
{"version":3,"file":"RedisRateLimiterDriver.d.ts","sourceRoot":"","sources":["../../../../services/rate-limiter/drivers/RedisRateLimiterDriver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,+DAA+D;AAC/D,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,8BAA8B;gBAE/B,OAAO,EAAE,MAAM;CAI5B;AAyCD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD,OAAO,CAAC,cAAc,CAAC,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA2B;IAE1C,4EAA4E;IAC5E,OAAO,CAAC,SAAS,CAAgC;gBAErC,OAAO,GAAE,uBAA4B;IAS3C,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IA0D9D;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkBnB,OAAO,KAAK,MAAM,GAuBjB;IAED,4EAA4E;YAC9D,GAAG;IAejB,OAAO,CAAC,IAAI;CAcb"}
|
|
@@ -4,13 +4,30 @@ export declare class RedisManager {
|
|
|
4
4
|
config: RedisConfig;
|
|
5
5
|
static token: string;
|
|
6
6
|
private instance;
|
|
7
|
+
/** When the connect the manager started on `instance` began, while it is pending. */
|
|
8
|
+
private connectingSince;
|
|
9
|
+
/** When `instance` was first seen down, after its connect settled. */
|
|
10
|
+
private downSince;
|
|
11
|
+
/** How long a client must be down before it is replaced. */
|
|
12
|
+
private replaceDelay;
|
|
7
13
|
constructor(config?: RedisConfig);
|
|
8
14
|
/**
|
|
9
|
-
* Bun's Redis client. Built on first access and memoized
|
|
15
|
+
* Bun's Redis client. Built on first access and memoized; building it starts
|
|
16
|
+
* the connection, which the first command would do anyway.
|
|
10
17
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
18
|
+
* Once Bun's client gives up on a connection (a connect timeout, or
|
|
19
|
+
* `maxRetries` reconnects in a row) it never connects again, and every later
|
|
20
|
+
* command fails at once with `Connection has failed`, even after Redis is
|
|
21
|
+
* back (#982); calling its `connect()` again can hang. So an access that
|
|
22
|
+
* finds the client down replaces it: the old one is closed and a new one
|
|
23
|
+
* built. A client is down when it is not connected and no connect the
|
|
24
|
+
* manager started on it is still pending. It gets a grace period first, so a
|
|
25
|
+
* blip that Bun's own reconnect covers costs nothing: 0.5 s, doubling with
|
|
26
|
+
* each replacement that does not connect, up to 10 s, and back to 0.5 s once
|
|
27
|
+
* one connects. So a Redis that stays down is tried at most every 10 s.
|
|
28
|
+
*
|
|
29
|
+
* Read `client` each time rather than keeping it: a kept reference can be a
|
|
30
|
+
* client that was replaced and closed.
|
|
14
31
|
*/
|
|
15
32
|
get client(): RedisClient;
|
|
16
33
|
/**
|
|
@@ -27,5 +44,7 @@ export declare class RedisManager {
|
|
|
27
44
|
* Does not build one to close it.
|
|
28
45
|
*/
|
|
29
46
|
close(): void;
|
|
47
|
+
private build;
|
|
48
|
+
private isDown;
|
|
30
49
|
}
|
|
31
50
|
//# sourceMappingURL=RedisManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisManager.d.ts","sourceRoot":"","sources":["../../../services/redis/RedisManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,KAAK,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"RedisManager.d.ts","sourceRoot":"","sources":["../../../services/redis/RedisManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,KAAK,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA+B5C,qBAAa,YAAY;IAYJ,MAAM,EAAE,WAAW;IAXtC,MAAM,CAAC,KAAK,SAAW;IAEvB,OAAO,CAAC,QAAQ,CAA4B;IAE5C,qFAAqF;IACrF,OAAO,CAAC,eAAe,CAAuB;IAC9C,sEAAsE;IACtE,OAAO,CAAC,SAAS,CAAuB;IACxC,4DAA4D;IAC5D,OAAO,CAAC,YAAY,CAAwB;gBAEzB,MAAM,GAAE,WAAgB;IAE3C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,MAAM,IAAI,WAAW,CAYxB;IAED;;;;;;;OAOG;IACH,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAK7B;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,KAAK;IAqCb,OAAO,CAAC,MAAM;CAqBf"}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|