valkyries 0.1.4 → 0.1.7
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/README.md +7 -0
- package/dist/cache/batch-read.d.mts.map +1 -1
- package/dist/cache/batch-read.mjs +24 -7
- package/dist/cache/batch-read.mjs.map +1 -1
- package/dist/cache/core.d.mts +4 -1
- package/dist/cache/core.d.mts.map +1 -1
- package/dist/cache/core.mjs +9 -1
- package/dist/cache/core.mjs.map +1 -1
- package/dist/cache/deletes.d.mts +10 -1
- package/dist/cache/deletes.d.mts.map +1 -1
- package/dist/cache/deletes.mjs +66 -3
- package/dist/cache/deletes.mjs.map +1 -1
- package/dist/cache/single-read.d.mts.map +1 -1
- package/dist/cache/single-read.mjs +10 -1
- package/dist/cache/single-read.mjs.map +1 -1
- package/dist/cache.d.mts +1 -0
- package/dist/cache.d.mts.map +1 -1
- package/dist/cache.mjs.map +1 -1
- package/dist/clients.d.mts +6 -0
- package/dist/clients.d.mts.map +1 -1
- package/dist/clients.mjs +5 -1
- package/dist/clients.mjs.map +1 -1
- package/dist/config.d.mts +2 -0
- package/dist/config.d.mts.map +1 -1
- package/dist/config.mjs +8 -0
- package/dist/config.mjs.map +1 -1
- package/dist/delete.d.mts.map +1 -1
- package/dist/delete.mjs +22 -8
- package/dist/delete.mjs.map +1 -1
- package/dist/dynamic-config/fields.d.mts.map +1 -1
- package/dist/dynamic-config/fields.mjs +9 -1
- package/dist/dynamic-config/fields.mjs.map +1 -1
- package/dist/dynamic-config/storage.d.mts.map +1 -1
- package/dist/dynamic-config/storage.mjs +11 -4
- package/dist/dynamic-config/storage.mjs.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/rate-limiter.d.mts.map +1 -1
- package/dist/rate-limiter.mjs +6 -4
- package/dist/rate-limiter.mjs.map +1 -1
- package/dist/retry.d.mts +24 -0
- package/dist/retry.d.mts.map +1 -0
- package/dist/retry.mjs +50 -0
- package/dist/retry.mjs.map +1 -0
- package/dist/types.d.mts +7 -0
- package/dist/types.d.mts.map +1 -1
- package/docs/cache.md +19 -0
- package/docs/clients.md +9 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -22,6 +22,13 @@ VALKEY_RATE_LIMITER_URL=redis://localhost:6379
|
|
|
22
22
|
VALKEY_DYNAMIC_CONFIG_URL=redis://localhost:6379
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
Connection tuning (applies to all package-managed clients):
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
VALKEY_INFLIGHT_REQUESTS_LIMIT=1000 # max concurrent in-flight requests per client (default: 1000)
|
|
29
|
+
VALKEY_REQUEST_TIMEOUT_MS=500 # per-request timeout in milliseconds (default: 500)
|
|
30
|
+
```
|
|
31
|
+
|
|
25
32
|
Bloom filters require Valkey with the Bloom module. For local development and CI, use Valkey Bundle:
|
|
26
33
|
|
|
27
34
|
```sh
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-read.d.mts","sourceRoot":"","sources":["../../cache/batch-read.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAW1D,8BAAsB,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IACrF,kBAAkB,CAAC,CAAC,EAClB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAC3D,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-read.d.mts","sourceRoot":"","sources":["../../cache/batch-read.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAW1D,8BAAsB,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IACrF,kBAAkB,CAAC,CAAC,EAClB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAC3D,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAsDpC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAgC3F,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,cAAc;CAWvB"}
|
|
@@ -22,7 +22,18 @@ export class ValkeyCacheBatchRead extends ValkeyCacheSingleRead {
|
|
|
22
22
|
const stats = new BatchReadStats();
|
|
23
23
|
const start = process.hrtime.bigint();
|
|
24
24
|
try {
|
|
25
|
-
|
|
25
|
+
let cachedEntries;
|
|
26
|
+
try {
|
|
27
|
+
cachedEntries = await this.getValuesWithTtl(serializedKeys);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
this.handleReadError(error);
|
|
31
|
+
stats.misses = normalizedKeys.length;
|
|
32
|
+
stats.missKeys = serializedKeys;
|
|
33
|
+
const fallbackResults = await batchFn(normalizedKeys);
|
|
34
|
+
assertBatchResultLength(fallbackResults, normalizedKeys.length);
|
|
35
|
+
return scatter(Array.from(fallbackResults, (v) => v ?? null));
|
|
36
|
+
}
|
|
26
37
|
const cachedValues = cachedEntries.map((entry) => entry.value);
|
|
27
38
|
const missing = collectMissingKeys(cachedEntries, normalizedKeys, serializedKeys, cachedValues, stats);
|
|
28
39
|
stats.misses = missing.keys.length;
|
|
@@ -103,16 +114,19 @@ export class ValkeyCacheBatchRead extends ValkeyCacheSingleRead {
|
|
|
103
114
|
function collectMissingKeys(entries, normalizedKeys, serializedKeys, cachedValues, stats) {
|
|
104
115
|
const indices = [];
|
|
105
116
|
const keys = [];
|
|
117
|
+
// ⚡ Bolt Optimization:
|
|
118
|
+
// What: Combine the TTL check and avoid a temporary boolean variable.
|
|
119
|
+
// Why: Simplifies the condition path in the hot loop.
|
|
120
|
+
// Impact: Better throughput for large batches.
|
|
106
121
|
for (let i = 0; i < cachedValues.length; i++) {
|
|
107
122
|
const entry = entries[i];
|
|
108
123
|
if (entry.bloomMiss) {
|
|
109
124
|
stats.bloomMisses++;
|
|
110
125
|
stats.bloomMissKeys.push(serializedKeys[i]);
|
|
111
|
-
cachedValues[i] = null;
|
|
112
126
|
continue;
|
|
113
127
|
}
|
|
114
|
-
|
|
115
|
-
|
|
128
|
+
if (entry.value === null &&
|
|
129
|
+
(entry.ttlSecondsRemaining === null || entry.ttlSecondsRemaining === -2)) {
|
|
116
130
|
indices.push(i);
|
|
117
131
|
keys.push(normalizedKeys[i]);
|
|
118
132
|
stats.missKeys.push(serializedKeys[i]);
|
|
@@ -129,10 +143,13 @@ function assertBatchResultLength(results, expectedLength) {
|
|
|
129
143
|
}
|
|
130
144
|
}
|
|
131
145
|
function mergeFetchedResults(cachedValues, missingIndices, fetchedResults) {
|
|
132
|
-
|
|
146
|
+
// ⚡ Bolt Optimization:
|
|
147
|
+
// What: Mutate the intermediate `cachedValues` array directly instead of spreading.
|
|
148
|
+
// Why: Avoids O(n) array clone allocation in the hot path.
|
|
149
|
+
// Impact: Lower allocation pressure during merge.
|
|
133
150
|
for (let i = 0; i < missingIndices.length; i++) {
|
|
134
|
-
|
|
151
|
+
cachedValues[missingIndices[i]] = fetchedResults[i] ?? null;
|
|
135
152
|
}
|
|
136
|
-
return
|
|
153
|
+
return cachedValues;
|
|
137
154
|
}
|
|
138
155
|
//# sourceMappingURL=batch-read.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-read.mjs","sourceRoot":"","sources":["../../cache/batch-read.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,cAAc;IAClB,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IACX,WAAW,GAAG,CAAC,CAAC;IAChB,OAAO,GAAa,EAAE,CAAC;IACvB,QAAQ,GAAa,EAAE,CAAC;IACxB,aAAa,GAAa,EAAE,CAAC;CAC9B;AAED,MAAM,OAAgB,oBAAiC,SAAQ,qBAAwB;IACrF,kBAAkB,CAChB,OAA4D;QAE5D,OAAO,KAAK,EAAE,IAAS,EAA4B,EAAE;YACnD,MAAM,EACJ,SAAS,EAAE,cAAc,EACzB,cAAc,EACd,aAAa,GACd,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,UAA2B,EAAmB,EAAE,CAC/D,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,
|
|
1
|
+
{"version":3,"file":"batch-read.mjs","sourceRoot":"","sources":["../../cache/batch-read.mts"],"names":[],"mappings":"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"}
|
package/dist/cache/core.d.mts
CHANGED
|
@@ -12,12 +12,15 @@ export declare abstract class ValkeyCacheCore<K = string> {
|
|
|
12
12
|
nullTtl: number;
|
|
13
13
|
mode: ValkeyCacheMode;
|
|
14
14
|
staleTtlAge: number;
|
|
15
|
+
fallbackOnReadError: boolean;
|
|
15
16
|
protected bloomFilter?: ValkeyBloomFilter;
|
|
16
17
|
protected bloomFilterEnabled?: () => boolean;
|
|
17
18
|
protected refreshPromises: Map<string, Promise<void>>;
|
|
18
19
|
protected keySerializer: (key: K) => string;
|
|
19
20
|
protected client: GlideClient;
|
|
20
|
-
constructor({ prefix, ttlSeconds, nullTtlSeconds, mode, staleTtlAge, bloomFilter, bloomFilterEnabled, keySerializer, client, }: ValkeyCacheOptions<K>);
|
|
21
|
+
constructor({ prefix, ttlSeconds, nullTtlSeconds, mode, staleTtlAge, bloomFilter, bloomFilterEnabled, keySerializer, client, fallbackOnReadError, }: ValkeyCacheOptions<K>);
|
|
22
|
+
/** Reports a Valkey read error and rethrows when fallbackOnReadError is false. */
|
|
23
|
+
protected handleReadError(error: unknown): void;
|
|
21
24
|
protected emitCacheEvents(hitKeys: string[], missKeys: string[], bloomMissKeys: string[]): void;
|
|
22
25
|
protected deduplicateKeys(keys: K[]): {
|
|
23
26
|
validKeys: K[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.mts","sourceRoot":"","sources":["../../cache/core.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,8BAAsB,eAAe,CAAC,CAAC,GAAG,MAAM;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAC1C,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7C,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,EACV,MAAM,EACN,UAAU,EACV,cAAc,EACd,IAAa,EACb,WAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,MAA0B,GAC3B,EAAE,kBAAkB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.mts","sourceRoot":"","sources":["../../cache/core.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,8BAAsB,eAAe,CAAC,CAAC,GAAG,MAAM;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAC1C,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7C,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,EACV,MAAM,EACN,UAAU,EACV,cAAc,EACd,IAAa,EACb,WAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,MAA0B,EAC1B,mBAA0B,GAC3B,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAoBxB,kFAAkF;IAClF,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK/C,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IAqBxF,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;QACpC,SAAS,EAAE,CAAC,EAAE,CAAC;QACf,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB;IAyBD,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI;IAMhD,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAI9D,SAAS,CAAC,4BAA4B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;cAIrD,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;cAmB3D,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgBjF,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;cAO7C,MAAM,CACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,GAAG,IAAI,GACzB,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;cAkB5C,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAGxE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACxE,gBAAgB;CAgB/B"}
|
package/dist/cache/core.mjs
CHANGED
|
@@ -12,12 +12,13 @@ export class ValkeyCacheCore {
|
|
|
12
12
|
nullTtl;
|
|
13
13
|
mode;
|
|
14
14
|
staleTtlAge;
|
|
15
|
+
fallbackOnReadError;
|
|
15
16
|
bloomFilter;
|
|
16
17
|
bloomFilterEnabled;
|
|
17
18
|
refreshPromises;
|
|
18
19
|
keySerializer;
|
|
19
20
|
client;
|
|
20
|
-
constructor({ prefix, ttlSeconds, nullTtlSeconds, mode = "json", staleTtlAge = 0.9, bloomFilter, bloomFilterEnabled, keySerializer, client = cacheValkeyClient, }) {
|
|
21
|
+
constructor({ prefix, ttlSeconds, nullTtlSeconds, mode = "json", staleTtlAge = 0.9, bloomFilter, bloomFilterEnabled, keySerializer, client = cacheValkeyClient, fallbackOnReadError = true, }) {
|
|
21
22
|
if (!prefix)
|
|
22
23
|
throw new Error("ValkeyCache requires a prefix");
|
|
23
24
|
if (!(ttlSeconds > 0))
|
|
@@ -30,6 +31,7 @@ export class ValkeyCacheCore {
|
|
|
30
31
|
throw new Error("ValkeyCache: staleTtlAge must be between 0 and 1");
|
|
31
32
|
}
|
|
32
33
|
this.staleTtlAge = staleTtlAge;
|
|
34
|
+
this.fallbackOnReadError = fallbackOnReadError;
|
|
33
35
|
this.bloomFilter = bloomFilter;
|
|
34
36
|
this.bloomFilterEnabled = bloomFilterEnabled;
|
|
35
37
|
this.refreshPromises = new Map();
|
|
@@ -37,6 +39,12 @@ export class ValkeyCacheCore {
|
|
|
37
39
|
keySerializer ?? ((key) => String(key));
|
|
38
40
|
this.client = client;
|
|
39
41
|
}
|
|
42
|
+
/** Reports a Valkey read error and rethrows when fallbackOnReadError is false. */
|
|
43
|
+
handleReadError(error) {
|
|
44
|
+
if (!this.fallbackOnReadError)
|
|
45
|
+
throw error;
|
|
46
|
+
handleValkeyError(error);
|
|
47
|
+
}
|
|
40
48
|
emitCacheEvents(hitKeys, missKeys, bloomMissKeys) {
|
|
41
49
|
if (hitKeys.length > 0)
|
|
42
50
|
emitValkeyEvent("cache:hit", {
|
package/dist/cache/core.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.mjs","sourceRoot":"","sources":["../../cache/core.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQjG,MAAM,OAAgB,eAAe;IACnC,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,OAAO,CAAS;IAChB,IAAI,CAAkB;IACtB,WAAW,CAAS;
|
|
1
|
+
{"version":3,"file":"core.mjs","sourceRoot":"","sources":["../../cache/core.mts"],"names":[],"mappings":"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"}
|
package/dist/cache/deletes.d.mts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
import type { GlideClient } from "@valkey/valkey-glide";
|
|
2
|
+
import type { ValkeyCache } from "../cache.mts";
|
|
1
3
|
import { ValkeyCacheMutations } from "./mutations.mts";
|
|
4
|
+
export type ValkeyCacheDeleteFromCachesEntry<K = any> = {
|
|
5
|
+
cache: ValkeyCache<K>;
|
|
6
|
+
keys: readonly K[];
|
|
7
|
+
};
|
|
2
8
|
export declare class ValkeyCacheDeletes<K = string> extends ValkeyCacheMutations<K> {
|
|
3
9
|
delete(...keys: K[]): Promise<number>;
|
|
4
10
|
protected deleteBySerializedKey(...serializedKeys: string[]): Promise<number>;
|
|
5
11
|
invalidate(): Promise<void>;
|
|
6
|
-
static
|
|
12
|
+
static deleteFromCaches<K>(entries: readonly ValkeyCacheDeleteFromCachesEntry<K>[]): Promise<number>;
|
|
13
|
+
static deleteFromCaches(entries: readonly ValkeyCacheDeleteFromCachesEntry<any>[]): Promise<number>;
|
|
14
|
+
static invalidate(prefix: string, client?: GlideClient): Promise<void>;
|
|
15
|
+
private static deleteSerializedEntriesFromClient;
|
|
7
16
|
}
|
|
8
17
|
//# sourceMappingURL=deletes.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deletes.d.mts","sourceRoot":"","sources":["../../cache/deletes.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deletes.d.mts","sourceRoot":"","sources":["../../cache/deletes.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,gCAAgC,CAAC,CAAC,GAAG,GAAG,IAAI;IACtD,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CACpB,CAAC;AAYF,qBAAa,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;cA+B3B,qBAAqB,CAAC,GAAG,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnF,UAAU;WAIG,gBAAgB,CAAC,CAAC,EAC7B,OAAO,EAAE,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,GACtD,OAAO,CAAC,MAAM,CAAC;WACL,gBAAgB,CAC3B,OAAO,EAAE,SAAS,gCAAgC,CAAC,GAAG,CAAC,EAAE,GACxD,OAAO,CAAC,MAAM,CAAC;WAgCL,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,cAAoB;mBAQ7C,iCAAiC;CA0BvD"}
|
package/dist/cache/deletes.mjs
CHANGED
|
@@ -21,7 +21,11 @@ export class ValkeyCacheDeletes extends ValkeyCacheMutations {
|
|
|
21
21
|
}
|
|
22
22
|
if (keyArray.length === 0)
|
|
23
23
|
return 0;
|
|
24
|
-
|
|
24
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
25
|
+
const invalidationKeys = new Array(serializedKeys.length);
|
|
26
|
+
for (let i = 0; i < serializedKeys.length; i++) {
|
|
27
|
+
invalidationKeys[i] = this.getSerializedInvalidationKey(serializedKeys[i]);
|
|
28
|
+
}
|
|
25
29
|
const result = await this.client.invokeScript(cacheDeleteWithInvalidationScript, {
|
|
26
30
|
keys: [...keyArray, ...invalidationKeys],
|
|
27
31
|
args: [String(keyArray.length), String(INVALIDATION_MARKER_TTL_SECONDS)],
|
|
@@ -31,9 +35,18 @@ export class ValkeyCacheDeletes extends ValkeyCacheMutations {
|
|
|
31
35
|
return count;
|
|
32
36
|
}
|
|
33
37
|
async deleteBySerializedKey(...serializedKeys) {
|
|
34
|
-
const
|
|
35
|
-
if (
|
|
38
|
+
const len = serializedKeys.length;
|
|
39
|
+
if (len === 0)
|
|
36
40
|
return 0;
|
|
41
|
+
// ⚡ Bolt Optimization:
|
|
42
|
+
// What: Pre-allocate array and use an indexed loop.
|
|
43
|
+
// Why: Avoids iterator overhead and array resizing during mapping.
|
|
44
|
+
// Impact: Measurably faster in internal benchmarks for larger batch delete operations, reducing GC allocation pressure.
|
|
45
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
46
|
+
const keyArray = new Array(len);
|
|
47
|
+
for (let i = 0; i < len; i++) {
|
|
48
|
+
keyArray[i] = this.getSerializedCacheKey(serializedKeys[i]);
|
|
49
|
+
}
|
|
37
50
|
const count = await this.client.unlink(keyArray);
|
|
38
51
|
emitValkeyEvent("cache:delete", { cacheName: this.prefix, keys: serializedKeys });
|
|
39
52
|
return count;
|
|
@@ -41,9 +54,59 @@ export class ValkeyCacheDeletes extends ValkeyCacheMutations {
|
|
|
41
54
|
invalidate() {
|
|
42
55
|
return ValkeyCacheDeletes.invalidate(this.prefix, this.client);
|
|
43
56
|
}
|
|
57
|
+
static async deleteFromCaches(entries) {
|
|
58
|
+
const groups = new Map();
|
|
59
|
+
for (const entry of entries) {
|
|
60
|
+
const serializedKeys = [];
|
|
61
|
+
for (const key of entry.keys) {
|
|
62
|
+
const serialized = entry.cache.toSerializedKey(key);
|
|
63
|
+
if (serialized !== null)
|
|
64
|
+
serializedKeys.push(serialized);
|
|
65
|
+
}
|
|
66
|
+
if (serializedKeys.length === 0)
|
|
67
|
+
continue;
|
|
68
|
+
const group = groups.get(entry.cache.client);
|
|
69
|
+
const serializedEntry = {
|
|
70
|
+
cache: entry.cache,
|
|
71
|
+
serializedKeys,
|
|
72
|
+
};
|
|
73
|
+
if (group) {
|
|
74
|
+
group.push(serializedEntry);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
groups.set(entry.cache.client, [serializedEntry]);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let deleted = 0;
|
|
81
|
+
for (const [client, group] of groups) {
|
|
82
|
+
deleted += await ValkeyCacheDeletes.deleteSerializedEntriesFromClient(client, group);
|
|
83
|
+
}
|
|
84
|
+
return deleted;
|
|
85
|
+
}
|
|
44
86
|
static async invalidate(prefix, client = cacheValkeyClient) {
|
|
45
87
|
await deleteKeysWithPrefix(client, prefix ? `${CACHE_NAMESPACE}:${prefix}:*` : `${CACHE_NAMESPACE}:*`);
|
|
46
88
|
emitValkeyEvent("cache:invalidate", { cacheName: prefix });
|
|
47
89
|
}
|
|
90
|
+
static async deleteSerializedEntriesFromClient(client, entries) {
|
|
91
|
+
const cacheKeys = [];
|
|
92
|
+
const invalidationKeys = [];
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
for (const serializedKey of entry.serializedKeys) {
|
|
95
|
+
cacheKeys.push(entry.cache.getSerializedCacheKey(serializedKey));
|
|
96
|
+
invalidationKeys.push(entry.cache.getSerializedInvalidationKey(serializedKey));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const result = await client.invokeScript(cacheDeleteWithInvalidationScript, {
|
|
100
|
+
keys: [...cacheKeys, ...invalidationKeys],
|
|
101
|
+
args: [String(cacheKeys.length), String(INVALIDATION_MARKER_TTL_SECONDS)],
|
|
102
|
+
});
|
|
103
|
+
for (const entry of entries) {
|
|
104
|
+
emitValkeyEvent("cache:delete", {
|
|
105
|
+
cacheName: entry.cache.prefix,
|
|
106
|
+
keys: entry.serializedKeys,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return normalizeCountResult(result);
|
|
110
|
+
}
|
|
48
111
|
}
|
|
49
112
|
//# sourceMappingURL=deletes.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deletes.mjs","sourceRoot":"","sources":["../../cache/deletes.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deletes.mjs","sourceRoot":"","sources":["../../cache/deletes.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-read.d.mts","sourceRoot":"","sources":["../../cache/single-read.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,8BAAsB,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,uBAAuB,CAAC,CAAC,CAAC;IACxF,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,IAC9C,KAAK,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"single-read.d.mts","sourceRoot":"","sources":["../../cache/single-read.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,8BAAsB,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,uBAAuB,CAAC,CAAC,CAAC;IACxF,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,IAC9C,KAAK,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA+C1C,uBAAuB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;IAIpC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM;IAMhB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,mBAAmB;IAOtC,SAAS,CAAC,eAAe,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM;IAiBvB,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAC/C"}
|
|
@@ -13,7 +13,16 @@ export class ValkeyCacheSingleRead extends ValkeyCacheStaleRefresh {
|
|
|
13
13
|
let misses = 0;
|
|
14
14
|
let bloomMisses = 0;
|
|
15
15
|
try {
|
|
16
|
-
|
|
16
|
+
let entry;
|
|
17
|
+
try {
|
|
18
|
+
entry = await this.getValueWithTtl(serializedKey);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
this.handleReadError(error);
|
|
22
|
+
misses = 1;
|
|
23
|
+
return (await fn(key)) ?? null;
|
|
24
|
+
}
|
|
25
|
+
const { value: cached, ttlSecondsRemaining, bloomMiss } = entry;
|
|
17
26
|
if (bloomMiss) {
|
|
18
27
|
bloomMisses = 1;
|
|
19
28
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-read.mjs","sourceRoot":"","sources":["../../cache/single-read.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,OAAgB,qBAAkC,SAAQ,uBAA0B;IACxF,aAAa,CAAI,EAA6C;QAC5D,OAAO,KAAK,EAAE,GAAM,EAAqB,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,aAAa,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,
|
|
1
|
+
{"version":3,"file":"single-read.mjs","sourceRoot":"","sources":["../../cache/single-read.mts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.mts
CHANGED
package/dist/cache.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.mts","sourceRoot":"","sources":["../cache.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.mts","sourceRoot":"","sources":["../cache.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;CAAG"}
|
package/dist/cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.mjs","sourceRoot":"","sources":["../cache.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.mjs","sourceRoot":"","sources":["../cache.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,OAAO,WAAwB,SAAQ,kBAAqB;CAAG"}
|
package/dist/clients.d.mts
CHANGED
|
@@ -3,6 +3,8 @@ export type ValkeyReadFrom = "primary" | "preferReplica";
|
|
|
3
3
|
export type ValkeyClientOptions = {
|
|
4
4
|
readFrom?: ValkeyReadFrom;
|
|
5
5
|
lazyConnect?: boolean;
|
|
6
|
+
inflightRequestsLimit?: number;
|
|
7
|
+
requestTimeout?: number;
|
|
6
8
|
};
|
|
7
9
|
export declare const urlsToClients: Map<string, GlideClient>;
|
|
8
10
|
export declare const cacheValkeyClient: GlideClient;
|
|
@@ -27,6 +29,8 @@ export declare function glideConfigFromUrl(url: string, options?: ValkeyClientOp
|
|
|
27
29
|
} | undefined;
|
|
28
30
|
readFrom: ValkeyReadFrom | undefined;
|
|
29
31
|
lazyConnect: boolean;
|
|
32
|
+
inflightRequestsLimit: number;
|
|
33
|
+
requestTimeout: number;
|
|
30
34
|
};
|
|
31
35
|
export declare function buildDynamicConfigSubscriptionClientConfig(url: string): {
|
|
32
36
|
pubsubSubscriptions: {
|
|
@@ -46,6 +50,8 @@ export declare function buildDynamicConfigSubscriptionClientConfig(url: string):
|
|
|
46
50
|
} | undefined;
|
|
47
51
|
readFrom: ValkeyReadFrom | undefined;
|
|
48
52
|
lazyConnect: boolean;
|
|
53
|
+
inflightRequestsLimit: number;
|
|
54
|
+
requestTimeout: number;
|
|
49
55
|
};
|
|
50
56
|
export {};
|
|
51
57
|
//# sourceMappingURL=clients.d.mts.map
|
package/dist/clients.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.d.mts","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EAEX,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAM9B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,eAAe,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"clients.d.mts","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EAEX,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAM9B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,eAAe,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAG5D,eAAO,MAAM,iBAAiB,aAE5B,CAAC;AACH,eAAO,MAAM,uBAAuB,aAElC,CAAC;AACH,eAAO,MAAM,yBAAyB,aAEpC,CAAC;AAIH,KAAK,oBAAoB,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;AAGrD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE9E;AAED,wBAAgB,2CAA2C,IAAI,OAAO,CAAC,WAAW,CAAC,CAclF;AAED,wBAAsB,0CAA0C,IAAI,OAAO,CAAC,IAAI,CAAC,CAShF;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;EA0B5E;AAED,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;EAUrE"}
|
package/dist/clients.mjs
CHANGED
|
@@ -49,7 +49,9 @@ function handlePubSubMessage(msg) {
|
|
|
49
49
|
}
|
|
50
50
|
export async function upsertValkeyClientByUrl(url, options) {
|
|
51
51
|
const effectiveLazyConnect = options?.lazyConnect ?? true;
|
|
52
|
-
const
|
|
52
|
+
const effectiveInflight = options?.inflightRequestsLimit ?? config.inflight_requests_limit;
|
|
53
|
+
const effectiveTimeout = options?.requestTimeout ?? config.request_timeout_ms;
|
|
54
|
+
const cacheKey = `${url}:${options?.readFrom ?? "default"}:${effectiveLazyConnect}:${effectiveInflight}:${effectiveTimeout}`;
|
|
53
55
|
const existing = urlsToClients.get(cacheKey);
|
|
54
56
|
if (existing)
|
|
55
57
|
return existing;
|
|
@@ -86,6 +88,8 @@ export function glideConfigFromUrl(url, options) {
|
|
|
86
88
|
: undefined,
|
|
87
89
|
readFrom: options?.readFrom,
|
|
88
90
|
lazyConnect: options?.lazyConnect ?? true,
|
|
91
|
+
inflightRequestsLimit: options?.inflightRequestsLimit ?? config.inflight_requests_limit,
|
|
92
|
+
requestTimeout: options?.requestTimeout ?? config.request_timeout_ms,
|
|
89
93
|
};
|
|
90
94
|
}
|
|
91
95
|
catch (cause) {
|
package/dist/clients.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.mjs","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,wBAAwB,GAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,sBAAsB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"clients.mjs","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"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"}
|
package/dist/config.d.mts
CHANGED
package/dist/config.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../config.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../config.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;CAmBlB,CAAC"}
|
package/dist/config.mjs
CHANGED
|
@@ -6,5 +6,13 @@ export const config = {
|
|
|
6
6
|
rate_limiter_url: process.env.VALKEY_RATE_LIMITER_URL || process.env.VALKEY_CACHE_URL || DEFAULT_VALKEY_URL,
|
|
7
7
|
// used for distributed configuration
|
|
8
8
|
dynamic_config_url: process.env.VALKEY_DYNAMIC_CONFIG_URL || DEFAULT_VALKEY_URL,
|
|
9
|
+
inflight_requests_limit: (() => {
|
|
10
|
+
const n = Number(process.env.VALKEY_INFLIGHT_REQUESTS_LIMIT);
|
|
11
|
+
return Number.isFinite(n) ? n : 1000;
|
|
12
|
+
})(),
|
|
13
|
+
request_timeout_ms: (() => {
|
|
14
|
+
const n = Number(process.env.VALKEY_REQUEST_TIMEOUT_MS);
|
|
15
|
+
return Number.isFinite(n) ? n : 500;
|
|
16
|
+
})(),
|
|
9
17
|
};
|
|
10
18
|
//# sourceMappingURL=config.mjs.map
|
package/dist/config.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","sourceRoot":"","sources":["../config.mts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GACtB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW,OAAO,CAAC;AAExF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB;IAE7D,6EAA6E;IAC7E,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB;IAE3F,qCAAqC;IACrC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,kBAAkB;
|
|
1
|
+
{"version":3,"file":"config.mjs","sourceRoot":"","sources":["../config.mts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GACtB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW,OAAO,CAAC;AAExF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB;IAE7D,6EAA6E;IAC7E,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB;IAE3F,qCAAqC;IACrC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,kBAAkB;IAE/E,uBAAuB,EAAE,CAAC,GAAG,EAAE;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC,CAAC,EAAE;IACJ,kBAAkB,EAAE,CAAC,GAAG,EAAE;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC,CAAC,EAAE;CACL,CAAC"}
|
package/dist/delete.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.mts","sourceRoot":"","sources":["../delete.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,oBAAoB,GAAU,QAAQ,WAAW,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"delete.d.mts","sourceRoot":"","sources":["../delete.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,oBAAoB,GAAU,QAAQ,WAAW,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAmC7F,CAAC"}
|
package/dist/delete.mjs
CHANGED
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
import { handleValkeyError } from "./errors.mjs";
|
|
2
2
|
export const deleteKeysWithPrefix = async (client, pattern) => {
|
|
3
3
|
let cursor = "0";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const unlinkPromises = [];
|
|
5
|
+
try {
|
|
6
|
+
do {
|
|
6
7
|
// GlideClient scan method signature: scan(cursor: string, options?: ScanOptions)
|
|
7
8
|
/* oxlint-disable no-await-in-loop */
|
|
8
9
|
const result = await client.scan(cursor, { match: pattern });
|
|
9
10
|
cursor = result[0];
|
|
10
11
|
const keys = result[1];
|
|
11
12
|
if (keys.length > 0) {
|
|
12
|
-
|
|
13
|
+
// Attach a no-op catch to prevent unhandled rejection crashes if scan fails
|
|
14
|
+
// before Promise.all is reached. SonarCloud complains about empty callbacks,
|
|
15
|
+
// so we call a dummy function or use a minimal expression.
|
|
16
|
+
const p = client.unlink(keys);
|
|
17
|
+
p.catch(() => undefined);
|
|
18
|
+
unlinkPromises.push(p);
|
|
19
|
+
// Prevent unbounded memory/concurrency by batching promises
|
|
20
|
+
if (unlinkPromises.length >= 100) {
|
|
21
|
+
await Promise.all(unlinkPromises);
|
|
22
|
+
unlinkPromises.length = 0;
|
|
23
|
+
}
|
|
13
24
|
}
|
|
25
|
+
} while (cursor !== "0");
|
|
26
|
+
if (unlinkPromises.length > 0) {
|
|
27
|
+
await Promise.all(unlinkPromises);
|
|
14
28
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
handleValkeyError(err);
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
20
34
|
};
|
|
21
35
|
//# sourceMappingURL=delete.mjs.map
|
package/dist/delete.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.mjs","sourceRoot":"","sources":["../delete.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAAmB,EAAE,OAAe,EAAiB,EAAE;IAChG,IAAI,MAAM,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"delete.mjs","sourceRoot":"","sources":["../delete.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAAmB,EAAE,OAAe,EAAiB,EAAE;IAChG,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,MAAM,cAAc,GAAsB,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,GAAG,CAAC;YACF,iFAAiF;YACjF,qCAAqC;YACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAa,CAAC;YAEnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,4EAA4E;gBAC5E,6EAA6E;gBAC7E,2DAA2D;gBAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACzB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEvB,4DAA4D;gBAC5D,IAAI,cAAc,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBACjC,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAClC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;QAEzB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.mts","sourceRoot":"","sources":["../../dynamic-config/fields.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE/E,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"fields.d.mts","sourceRoot":"","sources":["../../dynamic-config/fields.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE/E,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,QA2BlD;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CAapB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAK9F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAK1F"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
export function validateFieldTypes(fieldTypes, defaultFields) {
|
|
2
|
-
|
|
2
|
+
if (fieldTypes == null) {
|
|
3
|
+
throw new Error("Field types are required");
|
|
4
|
+
}
|
|
5
|
+
// ⚡ Bolt Optimization:
|
|
6
|
+
// What: Use Object.keys instead of Object.entries for iteration.
|
|
7
|
+
// Why: Avoids O(N) array/tuple allocations and lowers GC pressure.
|
|
8
|
+
// Impact: Faster execution during initialization, especially with many config fields.
|
|
9
|
+
for (const name of Object.keys(fieldTypes)) {
|
|
10
|
+
const type = fieldTypes[name];
|
|
3
11
|
if (!(name in defaultFields))
|
|
4
12
|
throw new Error(`Default field ${name} is not defined`);
|
|
5
13
|
const defaultValue = defaultFields[name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.mjs","sourceRoot":"","sources":["../../dynamic-config/fields.mts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAChC,UAAkD,EAClD,aAAiD;IAEjD,
|
|
1
|
+
{"version":3,"file":"fields.mjs","sourceRoot":"","sources":["../../dynamic-config/fields.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.mts","sourceRoot":"","sources":["../../dynamic-config/storage.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,eAAO,MAAM,4BAA4B,uCAExC,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAuC,GAC9C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAW7D;AAED,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,GACf,EAAE;IACD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"storage.d.mts","sourceRoot":"","sources":["../../dynamic-config/storage.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,eAAO,MAAM,4BAA4B,uCAExC,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAuC,GAC9C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAW7D;AAED,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,GACf,EAAE;IACD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhB;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,GAAG,EACH,IAAI,EACJ,MAAkC,GACnC,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,iBAGA;AAED,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,UAAU,EACV,aAAa,GACd,EAAE;IACD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACnD;;;EAkBA"}
|
|
@@ -16,9 +16,11 @@ export async function getDynamicConfigFieldsMap(key, client = dynamicConfigValke
|
|
|
16
16
|
}
|
|
17
17
|
export async function applyFieldsFromMap({ fields, fieldsMap, fieldTypes, defaultFields, skipFieldNames, }) {
|
|
18
18
|
let parsedCount = 0;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
// ⚡ Bolt Optimization:
|
|
20
|
+
// What: Use Object.keys instead of for...in.
|
|
21
|
+
// Why: Aligns with V8 best practices for fast iteration and avoids Object.hasOwn checks on every iteration.
|
|
22
|
+
// Impact: Lower CPU usage and faster object parsing, avoiding SonarCloud code smell rules.
|
|
23
|
+
for (const name of Object.keys(fieldTypes)) {
|
|
22
24
|
const type = fieldTypes[name];
|
|
23
25
|
const valkeyEntry = fieldsMap[name];
|
|
24
26
|
const value = valkeyEntry?.value != null
|
|
@@ -41,7 +43,12 @@ export async function writeDynamicConfigFields({ key, args, client = dynamicConf
|
|
|
41
43
|
export function buildMissingDefaultWrites({ fieldsMap, fieldTypes, defaultFields, }) {
|
|
42
44
|
const toApply = [];
|
|
43
45
|
const writeArgs = [];
|
|
44
|
-
|
|
46
|
+
// ⚡ Bolt Optimization:
|
|
47
|
+
// What: Use Object.keys instead of Object.entries.
|
|
48
|
+
// Why: Prevents creating temporary arrays/tuples for each map entry.
|
|
49
|
+
// Impact: Lower GC pressure and faster iteration over default field configurations.
|
|
50
|
+
for (const name of Object.keys(fieldTypes)) {
|
|
51
|
+
const type = fieldTypes[name];
|
|
45
52
|
const valkeyEntry = fieldsMap[name];
|
|
46
53
|
const value = valkeyEntry?.value != null
|
|
47
54
|
? parseField(type, stringifyValkeyField(valkeyEntry.value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sourceRoot":"","sources":["../../dynamic-config/storage.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAc,CACxD,UAAU,CAAC,+BAA+B,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC7E,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAW,EACX,SAAsB,yBAAyB;IAE/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAuD,EAAE,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAC/C,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,GAOf;IACC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"storage.mjs","sourceRoot":"","sources":["../../dynamic-config/storage.mts"],"names":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -10,5 +10,6 @@ export * from "./utils.mts";
|
|
|
10
10
|
export * from "./errors.mts";
|
|
11
11
|
export * from "./key-normalization.mts";
|
|
12
12
|
export * from "./cache-metrics.mts";
|
|
13
|
+
export * from "./retry.mts";
|
|
13
14
|
export type { RateLimiterOptions, ValkeyBloomFilterOptions, ValkeyCacheOptions, ValkeyCacheMode, ValkeyCacheResponse, DynamicConfigField, DynamicConfigFieldType, DynamicConfigOptions, } from "./types.mts";
|
|
14
15
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../index.mts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../index.mts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../index.mts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../index.mts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.d.mts","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,qBAAa,WAAW;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,MAAM,CAAc;gBAEhB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAgC,EAAE,EAAE,kBAAkB;IAQlF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.mts","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,qBAAa,WAAW;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,MAAM,CAAc;gBAEhB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAgC,EAAE,EAAE,kBAAkB;IAQlF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;IAmBvB;;;;;;;;;;;OAWG;IACG,WAAW,CACf,GAAG,EAAE,MAAM,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAuClD;;;OAGG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9F;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiB5D,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAU7B,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,UAAU;WAIG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,cAA0B;CAQzE"}
|
package/dist/rate-limiter.mjs
CHANGED
|
@@ -31,8 +31,9 @@ export class RateLimiter {
|
|
|
31
31
|
// Use CSPRNG to prevent predictability and collisions.
|
|
32
32
|
// Optimization: Generate one UUID and append index to avoid calling CSPRNG N times.
|
|
33
33
|
const base = randomUUID();
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
// Optimization: Pre-allocate args array using new Array(size) which is faster in V8 than setting .length on empty array
|
|
35
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
36
|
+
const args = new Array(keys.length + 1);
|
|
36
37
|
args[0] = this.ttl.toString();
|
|
37
38
|
for (let i = 0; i < keys.length; i++) {
|
|
38
39
|
args[i + 1] = `${base}-${i}`;
|
|
@@ -60,8 +61,9 @@ export class RateLimiter {
|
|
|
60
61
|
// Use CSPRNG to prevent predictability and collisions.
|
|
61
62
|
// Optimization: Generate one UUID and append index to avoid calling CSPRNG N times.
|
|
62
63
|
const base = randomUUID();
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
// Optimization: Pre-allocate args array using new Array(size) which is faster in V8 than setting .length on empty array
|
|
65
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
66
|
+
const args = new Array(keys.length + 1);
|
|
65
67
|
args[0] = ttlSeconds.toString();
|
|
66
68
|
for (let i = 0; i < keys.length; i++) {
|
|
67
69
|
args[i + 1] = `${base}-${i}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.mjs","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,MAAM,oBAAoB,GAAG,cAAc,CAAC,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,MAAM,oBAAoB,GAAG,cAAc,CAAC,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,MAAM,4BAA4B,GAAG,cAAc,CACjD,UAAU,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9D,CAAC;AAEF,MAAM,OAAO,WAAW;IACtB,MAAM,CAAS;IACf,GAAG,CAAS;IACJ,MAAM,CAAc;IAE5B,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,uBAAuB,EAAsB;QACtF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAa;QACrB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,kEAAkE;QAClE,uDAAuD;QACvD,oFAAoF;QACpF,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAa,
|
|
1
|
+
{"version":3,"file":"rate-limiter.mjs","sourceRoot":"","sources":["../rate-limiter.mts"],"names":[],"mappings":"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"}
|
package/dist/retry.d.mts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when the error is a transient Valkey / Glide connection or saturation error
|
|
3
|
+
* that is safe to retry (the operation was never sent or was rejected before execution).
|
|
4
|
+
*/
|
|
5
|
+
export declare function isRetryableValkeyError(error: unknown): boolean;
|
|
6
|
+
export type RetryValkeyOperationOptions = {
|
|
7
|
+
/** Maximum number of attempts (default: 3). */
|
|
8
|
+
attempts?: number;
|
|
9
|
+
/** Milliseconds to wait between attempts (default: 1000). */
|
|
10
|
+
delayMs?: number;
|
|
11
|
+
/** Predicate controlling which errors trigger a retry (default: isRetryableValkeyError). */
|
|
12
|
+
shouldRetry?: (error: unknown) => boolean;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Retries a Valkey operation on transient connection / saturation errors.
|
|
16
|
+
*
|
|
17
|
+
* Non-retryable errors (shouldRetry returns false) are rethrown immediately.
|
|
18
|
+
* After all attempts are exhausted the last error is rethrown.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const job = await retryValkeyOperation(() => queue.add(name, data, opts));
|
|
22
|
+
*/
|
|
23
|
+
export declare function retryValkeyOperation<T>(fn: () => Promise<T>, options?: RetryValkeyOperationOptions): Promise<T>;
|
|
24
|
+
//# sourceMappingURL=retry.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.mts","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3C,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
|
package/dist/retry.mjs
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Substring patterns that identify transient Valkey / Glide errors which are safe to retry.
|
|
3
|
+
* These originate from the @valkey/valkey-glide native Rust core.
|
|
4
|
+
*/
|
|
5
|
+
const RETRYABLE_PATTERNS = [
|
|
6
|
+
"Reached maximum inflight requests",
|
|
7
|
+
"Connection closed",
|
|
8
|
+
"Request timed out",
|
|
9
|
+
"Socket was closed",
|
|
10
|
+
"Client is in closing state",
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* Returns true when the error is a transient Valkey / Glide connection or saturation error
|
|
14
|
+
* that is safe to retry (the operation was never sent or was rejected before execution).
|
|
15
|
+
*/
|
|
16
|
+
export function isRetryableValkeyError(error) {
|
|
17
|
+
if (!(error instanceof Error))
|
|
18
|
+
return false;
|
|
19
|
+
const msg = error.message;
|
|
20
|
+
return RETRYABLE_PATTERNS.some((pattern) => msg.includes(pattern));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Retries a Valkey operation on transient connection / saturation errors.
|
|
24
|
+
*
|
|
25
|
+
* Non-retryable errors (shouldRetry returns false) are rethrown immediately.
|
|
26
|
+
* After all attempts are exhausted the last error is rethrown.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const job = await retryValkeyOperation(() => queue.add(name, data, opts));
|
|
30
|
+
*/
|
|
31
|
+
export async function retryValkeyOperation(fn, options) {
|
|
32
|
+
const { attempts = 3, delayMs = 1000, shouldRetry = isRetryableValkeyError } = options ?? {};
|
|
33
|
+
const maxAttempts = Math.max(1, attempts);
|
|
34
|
+
let lastError;
|
|
35
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
36
|
+
try {
|
|
37
|
+
return await fn();
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (!shouldRetry(error))
|
|
41
|
+
throw error;
|
|
42
|
+
lastError = error;
|
|
43
|
+
if (attempt < maxAttempts - 1) {
|
|
44
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
throw lastError;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=retry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.mjs","sourceRoot":"","sources":["../retry.mts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,kBAAkB,GAAG;IACzB,mCAAmC;IACnC,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,4BAA4B;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoB,EACpB,OAAqC;IAErC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,GAAG,sBAAsB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
package/dist/types.d.mts
CHANGED
|
@@ -29,6 +29,13 @@ export type ValkeyCacheOptions<K = string> = {
|
|
|
29
29
|
bloomFilterEnabled?: () => boolean;
|
|
30
30
|
/** Optional Valkey client. Defaults to the package cache client. */
|
|
31
31
|
client?: GlideClient;
|
|
32
|
+
/**
|
|
33
|
+
* When true (default), a Valkey read error in cacheGetByAny / cacheGetByAnyBatch is reported
|
|
34
|
+
* via handleValkeyError and the fetch function is called directly as a fallback instead of
|
|
35
|
+
* propagating the error to the caller. Set to false for caches that must not silently bypass
|
|
36
|
+
* Valkey (e.g. strongly-consistent auth caches).
|
|
37
|
+
*/
|
|
38
|
+
fallbackOnReadError?: boolean;
|
|
32
39
|
} & (K extends string ? {
|
|
33
40
|
/**
|
|
34
41
|
* Converts a key to its string representation for cache storage.
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,mBAAmB,CAAC,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM,IAAI;IAC3C,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yHAAyH;IACzH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClC,+JAA+J;IAC/J,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,CAAC;IAC7D,sHAAsH;IACtH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,mBAAmB,CAAC,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM,IAAI;IAC3C,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yHAAyH;IACzH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClC,+JAA+J;IAC/J,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,CAAC;IAC7D,sHAAsH;IACtH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,CAAC,CAAC,SAAS,MAAM,GACjB;IACE;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;CACpC,GACD;IACE;;;OAGG;IACH,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;CACnC,CAAC,CAAC;AAEP,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AACzD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAE5F,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG;IACjC,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,6EAA6E;IAC7E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC"}
|
package/docs/cache.md
CHANGED
|
@@ -164,6 +164,25 @@ cache.delete(...keys: K[]): Promise<number>
|
|
|
164
164
|
|
|
165
165
|
Deletes cache entries and writes short-lived invalidation markers so in-flight read-through writes do not repopulate stale data.
|
|
166
166
|
|
|
167
|
+
## `ValkeyCache.deleteFromCaches(entries)`
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
ValkeyCache.deleteFromCaches([
|
|
171
|
+
{ cache: usersPrivateCache, keys: userKeys },
|
|
172
|
+
{ cache: usersPublicCache, keys: userKeys },
|
|
173
|
+
]): Promise<number>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Deletes entries from multiple cache instances while preserving the same invalidation-marker protection as `delete(...keys)`.
|
|
177
|
+
|
|
178
|
+
Behavior:
|
|
179
|
+
|
|
180
|
+
- Invalid keys are filtered through each cache instance's serializer.
|
|
181
|
+
- Entries sharing the same Valkey client are deleted with one script call.
|
|
182
|
+
- Entries using different clients are grouped by client.
|
|
183
|
+
- `cache:delete` events are emitted per cache prefix.
|
|
184
|
+
- The returned count is the sum of deleted cache keys.
|
|
185
|
+
|
|
167
186
|
## `invalidateCacheGetByAny(...keys)`
|
|
168
187
|
|
|
169
188
|
```ts
|
package/docs/clients.md
CHANGED
|
@@ -30,11 +30,17 @@ Default clients are created at module load:
|
|
|
30
30
|
type ValkeyClientOptions = {
|
|
31
31
|
readFrom?: "primary" | "preferReplica";
|
|
32
32
|
lazyConnect?: boolean;
|
|
33
|
+
inflightRequestsLimit?: number;
|
|
34
|
+
requestTimeout?: number;
|
|
33
35
|
};
|
|
34
36
|
```
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
| Option | Default | Env var | Description |
|
|
39
|
+
| ----------------------- | --------------- | -------------------------------- | ---------------------------------------------------------- |
|
|
40
|
+
| `readFrom` | (Glide default) | — | Read preference: `"primary"` or `"preferReplica"`. |
|
|
41
|
+
| `lazyConnect` | `true` | — | Whether Glide connects lazily on first command. |
|
|
42
|
+
| `inflightRequestsLimit` | `1000` | `VALKEY_INFLIGHT_REQUESTS_LIMIT` | Maximum number of concurrent inflight requests per client. |
|
|
43
|
+
| `requestTimeout` | `500` | `VALKEY_REQUEST_TIMEOUT_MS` | Per-request timeout in milliseconds. |
|
|
38
44
|
|
|
39
45
|
## `urlsToClients`
|
|
40
46
|
|
|
@@ -42,7 +48,7 @@ type ValkeyClientOptions = {
|
|
|
42
48
|
const urlsToClients: Map<string, GlideClient>;
|
|
43
49
|
```
|
|
44
50
|
|
|
45
|
-
Registry of package-managed clients keyed by URL, read preference,
|
|
51
|
+
Registry of package-managed clients keyed by URL, read preference, lazy-connect, inflight-requests limit, and request timeout.
|
|
46
52
|
|
|
47
53
|
## `upsertValkeyClientByUrl(url, options?)`
|
|
48
54
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valkyries",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Valkey utilities for caches, bloom filters, dynamic configuration, and rate limiting.",
|
|
5
5
|
"homepage": "https://github.com/jonathanong/valkyries#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
"@types/node": "^25.8.0",
|
|
56
56
|
"@vitest/coverage-v8": "^4.1.6",
|
|
57
57
|
"github-actionlint": "^1.7.12",
|
|
58
|
-
"oxfmt": "^0.
|
|
58
|
+
"oxfmt": "^0.51.0",
|
|
59
59
|
"oxlint": "^1.65.0",
|
|
60
|
-
"oxlint-tsgolint": "^0.
|
|
60
|
+
"oxlint-tsgolint": "^0.23.0",
|
|
61
61
|
"tsx": "^4.22.1",
|
|
62
62
|
"typescript": "^6.0.3",
|
|
63
63
|
"vitest": "^4.1.6"
|