@nxtedition/cache 2.1.14 → 2.1.15
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 +92 -10
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +232 -188
- package/lib/index.js.map +1 -1
- package/lib/memory.d.ts.map +1 -1
- package/lib/memory.js +13 -2
- package/lib/memory.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@ A two-tier async cache with SQLite persistence, in-memory pseudo-LRU, stale-whil
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- **Two-tier storage** — In-memory cache backed by SQLite on disk
|
|
8
|
+
- **File-sharded SQLite** — Keys are hash-routed across N independent SQLite files, bypassing SQLite's per-file writer serialization. ~40% higher throughput under multi-thread write contention (see [Benchmarks](#benchmarks)).
|
|
8
9
|
- **Stale-while-revalidate** — Serve stale data synchronously while refreshing in the background
|
|
9
10
|
- **Request coalescing** — Concurrent fetches for the same key share a single in-flight `Promise`
|
|
10
11
|
- **Cross-thread locking** — `SharedArrayBuffer` + `Atomics.compareExchange` / `Atomics.waitAsync` prevent redundant `valueSelector` calls across worker threads in the same process that share the same `location`
|
|
@@ -87,10 +88,11 @@ The in-memory tier uses a random-two-choice eviction strategy: when the cache is
|
|
|
87
88
|
|
|
88
89
|
#### `DatabaseOptions`
|
|
89
90
|
|
|
90
|
-
| Option | Type | Default | Description
|
|
91
|
-
| --------- | -------- | ---------------------------- |
|
|
92
|
-
| `timeout` | `number` | `20` | SQLite busy timeout in milliseconds.
|
|
93
|
-
| `maxSize` | `number` | `128 * 1024 * 1024` (128 MB) | Maximum database
|
|
91
|
+
| Option | Type | Default | Description |
|
|
92
|
+
| --------- | -------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
93
|
+
| `timeout` | `number` | `20` | SQLite busy timeout in milliseconds. |
|
|
94
|
+
| `maxSize` | `number` | `128 * 1024 * 1024` (128 MB) | Maximum total database size across all shards. Divided evenly per shard. Oldest entries are evicted when a shard is full. |
|
|
95
|
+
| `shards` | `number` | `4` | Number of SQLite files (shards) the cache is spread across. See [File Sharding](#file-sharding). Use `1` for single-file. |
|
|
94
96
|
|
|
95
97
|
#### `Serializer<V>`
|
|
96
98
|
|
|
@@ -183,10 +185,10 @@ Once the stale window expires, the entry is purged entirely and the next `get()`
|
|
|
183
185
|
|
|
184
186
|
```
|
|
185
187
|
|--- ttl ---|--- stale ---|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
sync hit
|
|
189
|
-
|
|
188
|
+
fresh stale expired
|
|
189
|
+
↓ ↓ ↓
|
|
190
|
+
sync hit sync hit async miss
|
|
191
|
+
+ bg refresh
|
|
190
192
|
```
|
|
191
193
|
|
|
192
194
|
## Cross-Thread Locking
|
|
@@ -213,11 +215,32 @@ There is **no cross-process coordination** — two separate Node processes point
|
|
|
213
215
|
|
|
214
216
|
Each slot is an `Int32`. `refresh()` uses `Atomics.add(slot, 1)` rather than a CAS (so concurrent refreshes stack), with an overflow guard at `0xfffffff` — if the counter ever reaches that value the call throws `Error: lock counter overflow` and rolls the increment back, so a wedged slot can't silently wrap. In practice this is unreachable: `0xfffffff` = ~268 M in-flight refreshes, which would OOM long before hitting the guard.
|
|
215
217
|
|
|
218
|
+
## File Sharding
|
|
219
|
+
|
|
220
|
+
The cache partitions its SQLite storage across N physical files (default `shards: 4`). Each key is hash-routed (via xxhash32) to one shard, and reads/writes for that key only touch that shard's connection. This is intended to reduce the SQLite writer-serialization ceiling: SQLite allows only one writer at a time per database file, even in WAL mode, so a single file caps concurrent-writer throughput at roughly one thread's worth of work regardless of how many threads the process spawns.
|
|
221
|
+
|
|
222
|
+
**On-disk layout:**
|
|
223
|
+
|
|
224
|
+
| `shards` | Files |
|
|
225
|
+
| ----------- | -------------------------------------------------------------------- |
|
|
226
|
+
| `1` | `<location>` (single file, legacy layout — compatible with `stat()`) |
|
|
227
|
+
| `N` (N ≥ 2) | `<location>.0`, `<location>.1`, …, `<location>.{N-1}` |
|
|
228
|
+
|
|
229
|
+
With `shards: 1` the cache is a single file at the given `location`, identical to the pre-sharding layout — useful for backup scripts or observability tools that expect one file.
|
|
230
|
+
|
|
231
|
+
**Cross-instance consistency:** hash routing is deterministic (xxhash32 is pure), so two Cache instances pointing at the same `location` with the same `shards` count will route the same keys to the same shards. Data persists across instance restarts.
|
|
232
|
+
|
|
233
|
+
**Changing `shards` invalidates data.** If you open a cache with `shards: 2` after previously using `shards: 4`, keys hash-route to different shard files than they were written to. The old data is still on disk but effectively unreachable until you open with the original shard count.
|
|
234
|
+
|
|
235
|
+
**Per-shard state:** `maxSize` divides evenly across shards (`maxSize / shards` per shard), eviction runs per-shard on `SQLITE_FULL`, and `stats.database.size` is summed across all shards.
|
|
236
|
+
|
|
216
237
|
## Batched Writes
|
|
217
238
|
|
|
218
|
-
SQLite writes are batched using `setImmediate` — multiple `set()` calls within the same microtask turn are coalesced into a single `BEGIN`/`COMMIT` transaction. While a write batch is pending, the in-memory cache is corked (eviction deferred) to avoid dropping entries before they reach disk. If a batch exceeds 512 items, it is flushed immediately.
|
|
239
|
+
SQLite writes are batched using `setImmediate` — multiple `set()` calls within the same microtask turn are coalesced into a single `BEGIN`/`COMMIT` transaction per shard. While a write batch is pending, the in-memory cache is corked (eviction deferred) to avoid dropping entries before they reach disk. If a per-shard batch exceeds 512 items, it is flushed immediately.
|
|
240
|
+
|
|
241
|
+
Flushes iterate shards starting at a random index on each call, so no single shard is starved when the 10 ms per-flush time budget is exhausted mid-pass — the next flush picks a different starting shard.
|
|
219
242
|
|
|
220
|
-
If
|
|
243
|
+
If a shard's database is full (`SQLITE_FULL`), the cache evicts the 256 oldest entries in that shard and retries up to 3 times. On other errors, the entire pending batch for that shard is dropped (items remain in the in-memory cache until natural eviction/TTL) and the error is emitted — this prevents error floods when the underlying failure is persistent (e.g. a read-only DB).
|
|
221
244
|
|
|
222
245
|
## Error Handling
|
|
223
246
|
|
|
@@ -227,6 +250,65 @@ If the database is full (`SQLITE_FULL`), the cache evicts the 256 oldest entries
|
|
|
227
250
|
|
|
228
251
|
All cache instances listen on the `nxt:offPeak` `BroadcastChannel`. When a message is received, `purgeStale()` is called on every active instance, enabling coordinated cleanup during low-traffic periods.
|
|
229
252
|
|
|
253
|
+
## Benchmarks
|
|
254
|
+
|
|
255
|
+
Measured on Apple M3 Pro (12 CPUs), Node 25.6.1. Throughput is `ops/sec`; latency is `ns` (median).
|
|
256
|
+
|
|
257
|
+
### Single-thread hot paths
|
|
258
|
+
|
|
259
|
+
| Operation | ops/sec | p50 | p99 |
|
|
260
|
+
| ------------------------------------------- | ------- | ------ | ------ |
|
|
261
|
+
| `get()` memory hit (sequential keys) | 6.87 M | 125 ns | 333 ns |
|
|
262
|
+
| `get()` memory hit (random keys) | 7.09 M | 125 ns | 250 ns |
|
|
263
|
+
| `peek()` memory hit | 5.74 M | 125 ns | 625 ns |
|
|
264
|
+
| `get()` memory miss, DB hit (sequential) | 386 K | 2.3 µs | 6.9 µs |
|
|
265
|
+
| `get()` memory miss, DB hit (random) | 345 K | 2.3 µs | 9.4 µs |
|
|
266
|
+
| `get()` cold (sync `valueSelector`) | 284 K | 2.0 µs | 3.4 µs |
|
|
267
|
+
| `get()` memory-only hit (no DB) | 8.37 M | 125 ns | 209 ns |
|
|
268
|
+
| `get()` memory-only cold (no DB) | 1.73 M | 500 ns | 1.1 µs |
|
|
269
|
+
| `get()` eviction pressure (`maxCount=1000`) | 1.43 M | 583 ns | 1.8 µs |
|
|
270
|
+
| `delete()` existing keys | 73 K | 12 µs | 32 µs |
|
|
271
|
+
| `purgeStale()` 10 K expired entries | 7.4 ms | — | — |
|
|
272
|
+
|
|
273
|
+
### Shard-count comparison
|
|
274
|
+
|
|
275
|
+
Single-thread overhead of sharding on the hot paths is ≤1 % in either direction. The pay-off is under multi-thread write contention:
|
|
276
|
+
|
|
277
|
+
**4 threads, partitioned cold writes** (each worker writes unique keys, stressing concurrent writers):
|
|
278
|
+
|
|
279
|
+
| `shards` | Aggregate throughput | Scaling vs. 1 thread | Δ vs. `shards: 1` |
|
|
280
|
+
| -------- | -------------------- | -------------------- | ----------------- |
|
|
281
|
+
| 1 | 383 K ops/s | 1.47× | baseline |
|
|
282
|
+
| 2 | 491 K ops/s | 1.85× | **+28 %** |
|
|
283
|
+
| 4 | 551 K ops/s | 2.15× | **+44 %** |
|
|
284
|
+
|
|
285
|
+
**4 threads, shared-keys hot-hit** (mostly memory-resident; sharding shouldn't help much here):
|
|
286
|
+
|
|
287
|
+
| `shards` | Aggregate throughput |
|
|
288
|
+
| -------- | -------------------- |
|
|
289
|
+
| 1 | 25.3 M ops/s |
|
|
290
|
+
| 2 | 24.5 M ops/s |
|
|
291
|
+
| 4 | 24.6 M ops/s |
|
|
292
|
+
|
|
293
|
+
So `shards: 4` (the default) is a large win for write-heavy multi-threaded workloads and roughly break-even otherwise. If you run single-threaded or strictly read-heavy, `shards: 1` removes all sharding overhead and restores the single-file on-disk layout.
|
|
294
|
+
|
|
295
|
+
### Lock option overhead (single-thread)
|
|
296
|
+
|
|
297
|
+
| Path | lock enabled | lock disabled |
|
|
298
|
+
| --------------------------------- | ------------ | ------------- |
|
|
299
|
+
| `get()` cold (sync valueSelector) | 361 K ops/s | 388 K ops/s |
|
|
300
|
+
| `get()` memory hit | 9.23 M ops/s | 8.93 M ops/s |
|
|
301
|
+
|
|
302
|
+
Cross-thread SAB locking adds ~7 % on the cold path and is negligible (or slightly faster) on memory hits. It is worth leaving on unless the workload is strictly single-threaded or partitioned across workers.
|
|
303
|
+
|
|
304
|
+
### Reproducing
|
|
305
|
+
|
|
306
|
+
```sh
|
|
307
|
+
yarn build
|
|
308
|
+
node scripts/bench.mjs # full bench suite
|
|
309
|
+
node scripts/bench-shards.mjs # shard-count comparison (1, 2, 4 shards)
|
|
310
|
+
```
|
|
311
|
+
|
|
230
312
|
## Scripts
|
|
231
313
|
|
|
232
314
|
```sh
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA2BhD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA2BhD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;IACrD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,CAAC,CAAA;CAC1C;AAaD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAClD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,IAAI,CAAA;IACrC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,GAAG,IAAI,CAAA;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAA;AAEtC,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,WAAW,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,EAAE,CAAA;CACtD;AAyFD,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAE,SAAQ,YAAY;;gBA2BhF,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAClD,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,MAAM,EACpC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IA+FxB,IAAI,KAAK;;;;;;;;;;;sBACmB,MAAM;kBAAQ,MAAM,GAAG,SAAS;;MAqB3D;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,KAAK,IAAI,IAAI;IAsBb,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAO/B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IA0BnC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;IAYxB,UAAU,IAAI,IAAI;CAgXnB;AAoBD,uCAAuC;AACvC,eAAO,MAAM,UAAU,cAAQ,CAAA;AAC/B,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -26,6 +26,73 @@ const defaultSerializer = {
|
|
|
26
26
|
const VERSION = 5;
|
|
27
27
|
const MAX_DURATION = 365000000e3;
|
|
28
28
|
const HASHER = await xxhash();
|
|
29
|
+
class DatabaseShard {
|
|
30
|
+
location;
|
|
31
|
+
databaseTimeout = 20;
|
|
32
|
+
database = null;
|
|
33
|
+
getQuery = null;
|
|
34
|
+
delQuery = null;
|
|
35
|
+
purgeStaleQuery = null;
|
|
36
|
+
evictQuery = null;
|
|
37
|
+
pageCountQuery = null;
|
|
38
|
+
pageSizeQuery = null;
|
|
39
|
+
setQuery = null;
|
|
40
|
+
setBatch = [];
|
|
41
|
+
constructor(location, opts) {
|
|
42
|
+
this.location = location;
|
|
43
|
+
for (let n = 0; true; n++) {
|
|
44
|
+
try {
|
|
45
|
+
const maxSize = opts?.maxSize ?? 128 * 1024 * 1024;
|
|
46
|
+
this.databaseTimeout = opts?.timeout ?? 20;
|
|
47
|
+
this.database ??= new DatabaseSync(location, { timeout: this.databaseTimeout });
|
|
48
|
+
this.database.exec(`
|
|
49
|
+
PRAGMA journal_mode = WAL;
|
|
50
|
+
PRAGMA synchronous = OFF;
|
|
51
|
+
PRAGMA wal_autocheckpoint = 10000;
|
|
52
|
+
PRAGMA cache_size = -${Math.ceil(maxSize / 1024 / 8)};
|
|
53
|
+
PRAGMA mmap_size = ${maxSize};
|
|
54
|
+
PRAGMA max_page_count = ${Math.ceil(maxSize / 4096)};
|
|
55
|
+
PRAGMA optimize;
|
|
56
|
+
|
|
57
|
+
CREATE TABLE IF NOT EXISTS cache_v${VERSION} (
|
|
58
|
+
key TEXT PRIMARY KEY NOT NULL,
|
|
59
|
+
val BLOB NOT NULL,
|
|
60
|
+
ttl INTEGER NOT NULL,
|
|
61
|
+
stale INTEGER NOT NULL
|
|
62
|
+
) WITHOUT ROWID;
|
|
63
|
+
|
|
64
|
+
CREATE INDEX IF NOT EXISTS cache_v${VERSION}_stale_idx ON cache_v${VERSION}(stale);
|
|
65
|
+
`);
|
|
66
|
+
this.getQuery = this.database.prepare(`SELECT val, ttl, stale FROM cache_v${VERSION} WHERE key = ? AND stale > ?`);
|
|
67
|
+
this.setQuery = this.database.prepare(`INSERT OR REPLACE INTO cache_v${VERSION} (key, val, ttl, stale) VALUES (?, ?, ?, ?)`);
|
|
68
|
+
this.delQuery = this.database.prepare(`DELETE FROM cache_v${VERSION} WHERE key = ?`);
|
|
69
|
+
this.purgeStaleQuery = this.database.prepare(`DELETE FROM cache_v${VERSION} WHERE stale <= ?`);
|
|
70
|
+
this.evictQuery = this.database.prepare(`DELETE FROM cache_v${VERSION} WHERE key IN (SELECT key FROM cache_v${VERSION} ORDER BY stale ASC LIMIT ?)`);
|
|
71
|
+
this.pageCountQuery = this.database.prepare('PRAGMA page_count');
|
|
72
|
+
this.pageSizeQuery = this.database.prepare('PRAGMA page_size');
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 100);
|
|
77
|
+
if (n >= 16) {
|
|
78
|
+
this[Symbol.dispose]();
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
[Symbol.dispose]() {
|
|
85
|
+
this.getQuery = null;
|
|
86
|
+
this.setQuery = null;
|
|
87
|
+
this.delQuery = null;
|
|
88
|
+
this.purgeStaleQuery = null;
|
|
89
|
+
this.evictQuery = null;
|
|
90
|
+
this.pageCountQuery = null;
|
|
91
|
+
this.pageSizeQuery = null;
|
|
92
|
+
this.database?.close();
|
|
93
|
+
this.database = null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
29
96
|
export class Cache extends EventEmitter {
|
|
30
97
|
#memory;
|
|
31
98
|
#dedupe = new Map();
|
|
@@ -38,16 +105,7 @@ export class Cache extends EventEmitter {
|
|
|
38
105
|
#lockArray;
|
|
39
106
|
#flushHandle = null;
|
|
40
107
|
#location;
|
|
41
|
-
#
|
|
42
|
-
#database = null;
|
|
43
|
-
#getQuery = null;
|
|
44
|
-
#delQuery = null;
|
|
45
|
-
#purgeStaleQuery = null;
|
|
46
|
-
#evictQuery = null;
|
|
47
|
-
#pageCountQuery = null;
|
|
48
|
-
#pageSizeQuery = null;
|
|
49
|
-
#setQuery = null;
|
|
50
|
-
#setBatch = [];
|
|
108
|
+
#shards = null;
|
|
51
109
|
#emitError = (err) => {
|
|
52
110
|
if (this.listenerCount('error') > 0) {
|
|
53
111
|
this.emit('error', err);
|
|
@@ -113,53 +171,31 @@ export class Cache extends EventEmitter {
|
|
|
113
171
|
this.#serializer = opts?.serializer ?? defaultSerializer;
|
|
114
172
|
this.#memory =
|
|
115
173
|
opts?.memory === false || opts?.memory === null ? null : new MemoryCache(opts?.memory);
|
|
116
|
-
|
|
174
|
+
if (opts?.database === false || opts?.database === null) {
|
|
175
|
+
this.#shards = null;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.#shards = [];
|
|
117
179
|
try {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
CREATE TABLE IF NOT EXISTS cache_v${VERSION} (
|
|
131
|
-
key TEXT PRIMARY KEY NOT NULL,
|
|
132
|
-
val BLOB NOT NULL,
|
|
133
|
-
ttl INTEGER NOT NULL,
|
|
134
|
-
stale INTEGER NOT NULL
|
|
135
|
-
) WITHOUT ROWID;
|
|
136
|
-
|
|
137
|
-
CREATE INDEX IF NOT EXISTS cache_v${VERSION}_stale_idx ON cache_v${VERSION}(stale);
|
|
138
|
-
`);
|
|
139
|
-
this.#getQuery = this.#database.prepare(`SELECT val, ttl, stale FROM cache_v${VERSION} WHERE key = ? AND stale > ?`);
|
|
140
|
-
this.#setQuery = this.#database.prepare(`INSERT OR REPLACE INTO cache_v${VERSION} (key, val, ttl, stale) VALUES (?, ?, ?, ?)`);
|
|
141
|
-
this.#delQuery = this.#database.prepare(`DELETE FROM cache_v${VERSION} WHERE key = ?`);
|
|
142
|
-
this.#purgeStaleQuery = this.#database.prepare(`DELETE FROM cache_v${VERSION} WHERE stale <= ?`);
|
|
143
|
-
this.#evictQuery = this.#database.prepare(`DELETE FROM cache_v${VERSION} WHERE key IN (SELECT key FROM cache_v${VERSION} ORDER BY stale ASC LIMIT ?)`);
|
|
144
|
-
this.#pageCountQuery = this.#database.prepare('PRAGMA page_count');
|
|
145
|
-
this.#pageSizeQuery = this.#database.prepare('PRAGMA page_size');
|
|
146
|
-
break;
|
|
180
|
+
if (location === ':memory:') {
|
|
181
|
+
this.#shards.push(new DatabaseShard(location, opts?.database));
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
const count = opts?.database?.shards ?? 4;
|
|
185
|
+
for (let n = 0; n < count; n++) {
|
|
186
|
+
this.#shards.push(new DatabaseShard(count === 1 ? location : location + '.' + n, {
|
|
187
|
+
...opts?.database,
|
|
188
|
+
maxSize: Math.ceil((opts?.database?.maxSize ?? 128 * 1024 * 1024) / count),
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
147
192
|
}
|
|
148
193
|
catch (err) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
this.#database?.close();
|
|
152
|
-
this.#database = null;
|
|
153
|
-
this.#getQuery = null;
|
|
154
|
-
this.#setQuery = null;
|
|
155
|
-
this.#delQuery = null;
|
|
156
|
-
this.#purgeStaleQuery = null;
|
|
157
|
-
this.#evictQuery = null;
|
|
158
|
-
this.#pageCountQuery = null;
|
|
159
|
-
this.#pageSizeQuery = null;
|
|
160
|
-
this.#emitError(err);
|
|
161
|
-
break;
|
|
194
|
+
for (const shard of this.#shards) {
|
|
195
|
+
shard[Symbol.dispose]();
|
|
162
196
|
}
|
|
197
|
+
this.#shards = null;
|
|
198
|
+
this.#emitError(err);
|
|
163
199
|
}
|
|
164
200
|
}
|
|
165
201
|
dbs.add(this);
|
|
@@ -168,14 +204,17 @@ export class Cache extends EventEmitter {
|
|
|
168
204
|
}
|
|
169
205
|
get stats() {
|
|
170
206
|
let database;
|
|
171
|
-
if (this.#
|
|
172
|
-
let size;
|
|
207
|
+
if (this.#shards) {
|
|
208
|
+
let size = 0;
|
|
173
209
|
try {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
210
|
+
for (const shard of this.#shards) {
|
|
211
|
+
const { page_count } = shard.pageCountQuery.get();
|
|
212
|
+
const { page_size } = shard.pageSizeQuery.get();
|
|
213
|
+
size += page_count * page_size;
|
|
214
|
+
}
|
|
177
215
|
}
|
|
178
216
|
catch (err) {
|
|
217
|
+
size = undefined;
|
|
179
218
|
this.#emitError(err);
|
|
180
219
|
}
|
|
181
220
|
database = { location: this.#location, size };
|
|
@@ -192,20 +231,15 @@ export class Cache extends EventEmitter {
|
|
|
192
231
|
close() {
|
|
193
232
|
while (this.#flushHandle) {
|
|
194
233
|
clearImmediate(this.#flushHandle);
|
|
234
|
+
this.#memory?.cork();
|
|
195
235
|
this.#flush();
|
|
196
236
|
}
|
|
197
237
|
this.#closed = true;
|
|
198
238
|
this.#dedupe.clear();
|
|
199
239
|
dbs.delete(this);
|
|
200
|
-
this.#
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
this.#purgeStaleQuery = null;
|
|
204
|
-
this.#evictQuery = null;
|
|
205
|
-
this.#pageCountQuery = null;
|
|
206
|
-
this.#pageSizeQuery = null;
|
|
207
|
-
this.#database?.close();
|
|
208
|
-
this.#database = null;
|
|
240
|
+
for (const shard of this.#shards ?? []) {
|
|
241
|
+
shard[Symbol.dispose]();
|
|
242
|
+
}
|
|
209
243
|
globalThis.__nxt_cache = globalThis.__nxt_cache?.filter((ref) => ref.deref() != null) ?? [];
|
|
210
244
|
const idx = globalThis.__nxt_cache?.findIndex((ref) => ref.deref() === this) ?? -1;
|
|
211
245
|
if (idx !== -1) {
|
|
@@ -232,62 +266,64 @@ export class Cache extends EventEmitter {
|
|
|
232
266
|
if (typeof key !== 'string' || key.length === 0) {
|
|
233
267
|
throw new TypeError('keySelector must return a non-empty string');
|
|
234
268
|
}
|
|
235
|
-
|
|
269
|
+
const hash = HASHER.h32(key);
|
|
236
270
|
if (this.#lockArray) {
|
|
237
|
-
idx =
|
|
271
|
+
const idx = hash % this.#lockArray.length;
|
|
238
272
|
if (Atomics.add(this.#lockArray, idx, 1) >= 0xfffffff) {
|
|
239
273
|
// Roll back the increment before throwing so we don't leak the slot.
|
|
240
|
-
// #refresh would normally own the decrement, but we're bailing before
|
|
241
|
-
// calling it.
|
|
242
274
|
if (Atomics.sub(this.#lockArray, idx, 1) === 1) {
|
|
243
275
|
Atomics.notify(this.#lockArray, idx);
|
|
244
276
|
}
|
|
245
277
|
throw new Error('lock counter overflow');
|
|
246
278
|
}
|
|
247
279
|
}
|
|
248
|
-
|
|
249
|
-
idx = -1;
|
|
250
|
-
}
|
|
251
|
-
return this.#refresh(args, key, idx);
|
|
280
|
+
return this.#refresh(args, key, hash);
|
|
252
281
|
}
|
|
253
282
|
delete(...args) {
|
|
254
283
|
if (this.#closed) {
|
|
255
284
|
throw new Error('cache is closed');
|
|
256
285
|
}
|
|
257
|
-
this.#
|
|
286
|
+
const key = this.#keySelector(...args);
|
|
287
|
+
if (typeof key !== 'string' || key.length === 0) {
|
|
288
|
+
throw new TypeError('key must be a non-empty string');
|
|
289
|
+
}
|
|
290
|
+
const hash = HASHER.h32(key);
|
|
291
|
+
this.#set(key, undefined, hash);
|
|
258
292
|
}
|
|
259
293
|
purgeStale() {
|
|
260
294
|
if (this.#closed) {
|
|
261
295
|
throw new Error('cache is closed');
|
|
262
296
|
}
|
|
263
297
|
this.#memory?.purgeStale(Date.now());
|
|
264
|
-
this.#
|
|
265
|
-
|
|
266
|
-
try {
|
|
267
|
-
this.#purgeStaleQuery?.run(Date.now());
|
|
268
|
-
}
|
|
269
|
-
catch (err) {
|
|
270
|
-
this.#emitError(err);
|
|
271
|
-
}
|
|
272
|
-
try {
|
|
273
|
-
this.#database?.exec('PRAGMA wal_checkpoint(TRUNCATE)');
|
|
274
|
-
}
|
|
275
|
-
catch (err) {
|
|
276
|
-
this.#emitError(err);
|
|
277
|
-
}
|
|
298
|
+
for (const shard of this.#shards ?? []) {
|
|
299
|
+
shard.database?.exec('PRAGMA busy_timeout = 5000');
|
|
278
300
|
try {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
301
|
+
try {
|
|
302
|
+
shard.purgeStaleQuery?.run(Date.now());
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
this.#emitError(err);
|
|
306
|
+
}
|
|
307
|
+
try {
|
|
308
|
+
shard.database?.exec('PRAGMA wal_checkpoint(TRUNCATE)');
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
this.#emitError(err);
|
|
312
|
+
}
|
|
313
|
+
try {
|
|
314
|
+
shard.database?.exec('PRAGMA optimize');
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
this.#emitError(err);
|
|
318
|
+
}
|
|
288
319
|
}
|
|
289
|
-
|
|
290
|
-
|
|
320
|
+
finally {
|
|
321
|
+
try {
|
|
322
|
+
shard.database?.exec(`PRAGMA busy_timeout = ${shard.databaseTimeout}`);
|
|
323
|
+
}
|
|
324
|
+
catch (err) {
|
|
325
|
+
this.#emitError(err);
|
|
326
|
+
}
|
|
291
327
|
}
|
|
292
328
|
}
|
|
293
329
|
}
|
|
@@ -297,10 +333,12 @@ export class Cache extends EventEmitter {
|
|
|
297
333
|
throw new TypeError('keySelector must return a non-empty string');
|
|
298
334
|
}
|
|
299
335
|
const now = Date.now();
|
|
336
|
+
const hash = HASHER.h32(key);
|
|
300
337
|
let cached = this.#memory?.get(key);
|
|
301
338
|
if (cached === undefined) {
|
|
302
339
|
try {
|
|
303
|
-
const
|
|
340
|
+
const shard = this.#shards ? this.#shards[hash % this.#shards.length] : null;
|
|
341
|
+
const row = shard?.getQuery?.get(key, now);
|
|
304
342
|
if (row !== undefined) {
|
|
305
343
|
const entry = this.#loadRow(key, row);
|
|
306
344
|
this.#memory?.set(key, entry);
|
|
@@ -331,12 +369,12 @@ export class Cache extends EventEmitter {
|
|
|
331
369
|
return { async: true, value: pending };
|
|
332
370
|
}
|
|
333
371
|
}
|
|
334
|
-
const idx = this.#lockArray ?
|
|
372
|
+
const idx = this.#lockArray ? hash % this.#lockArray.length : -1;
|
|
335
373
|
if (cached !== undefined) {
|
|
336
374
|
try {
|
|
337
375
|
const val = this.#lockArray ? Atomics.compareExchange(this.#lockArray, idx, 0, 1) : 0;
|
|
338
376
|
if (val === 0) {
|
|
339
|
-
const result = this.#refresh(args, key,
|
|
377
|
+
const result = this.#refresh(args, key, hash);
|
|
340
378
|
if (!result.async) {
|
|
341
379
|
return result;
|
|
342
380
|
}
|
|
@@ -365,27 +403,32 @@ export class Cache extends EventEmitter {
|
|
|
365
403
|
};
|
|
366
404
|
}
|
|
367
405
|
}
|
|
368
|
-
return this.#refresh(args, key,
|
|
406
|
+
return this.#refresh(args, key, hash);
|
|
407
|
+
}
|
|
408
|
+
#release(hash) {
|
|
409
|
+
if (!this.#lockArray) {
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
const idx = hash % this.#lockArray.length;
|
|
413
|
+
if (Atomics.sub(this.#lockArray, idx, 1) === 1) {
|
|
414
|
+
Atomics.notify(this.#lockArray, idx);
|
|
415
|
+
}
|
|
369
416
|
}
|
|
370
|
-
#refresh(args, key,
|
|
417
|
+
#refresh(args, key, hash = HASHER.h32(key)) {
|
|
371
418
|
let value;
|
|
372
419
|
try {
|
|
373
420
|
value = this.#valueSelector(...args);
|
|
374
421
|
}
|
|
375
422
|
catch (err) {
|
|
376
|
-
|
|
377
|
-
Atomics.notify(this.#lockArray, idx);
|
|
378
|
-
}
|
|
423
|
+
this.#release(hash);
|
|
379
424
|
throw err;
|
|
380
425
|
}
|
|
381
426
|
if (!isThenable(value)) {
|
|
382
427
|
try {
|
|
383
|
-
this.#set(key, value);
|
|
428
|
+
this.#set(key, value, hash);
|
|
384
429
|
}
|
|
385
430
|
finally {
|
|
386
|
-
|
|
387
|
-
Atomics.notify(this.#lockArray, idx);
|
|
388
|
-
}
|
|
431
|
+
this.#release(hash);
|
|
389
432
|
}
|
|
390
433
|
return { async: false, value };
|
|
391
434
|
}
|
|
@@ -401,13 +444,11 @@ export class Cache extends EventEmitter {
|
|
|
401
444
|
// entry, skip the write so we don't resurrect a deleted key or
|
|
402
445
|
// overwrite a newer value. #set itself clears dedupe on entry.
|
|
403
446
|
if (this.#dedupe.get(key) === promise) {
|
|
404
|
-
this.#set(key, value);
|
|
447
|
+
this.#set(key, value, hash);
|
|
405
448
|
}
|
|
406
449
|
}
|
|
407
450
|
finally {
|
|
408
|
-
|
|
409
|
-
Atomics.notify(this.#lockArray, idx);
|
|
410
|
-
}
|
|
451
|
+
this.#release(hash);
|
|
411
452
|
}
|
|
412
453
|
return value;
|
|
413
454
|
}, (err) => {
|
|
@@ -417,16 +458,14 @@ export class Cache extends EventEmitter {
|
|
|
417
458
|
}
|
|
418
459
|
}
|
|
419
460
|
finally {
|
|
420
|
-
|
|
421
|
-
Atomics.notify(this.#lockArray, idx);
|
|
422
|
-
}
|
|
461
|
+
this.#release(hash);
|
|
423
462
|
}
|
|
424
463
|
throw err;
|
|
425
464
|
});
|
|
426
465
|
this.#dedupe.set(key, promise);
|
|
427
466
|
return { async: true, value: promise };
|
|
428
467
|
}
|
|
429
|
-
#set(key, value) {
|
|
468
|
+
#set(key, value, hash = HASHER.h32(key)) {
|
|
430
469
|
if (typeof key !== 'string' || key.length === 0) {
|
|
431
470
|
throw new TypeError('key must be a non-empty string');
|
|
432
471
|
}
|
|
@@ -434,15 +473,18 @@ export class Cache extends EventEmitter {
|
|
|
434
473
|
// this call cannot resurrect a deleted key or overwrite a newer value —
|
|
435
474
|
// the async path's onFulfilled identity-checks before calling #set.
|
|
436
475
|
this.#dedupe.delete(key);
|
|
476
|
+
const shard = this.#shards ? this.#shards[hash % this.#shards.length] : null;
|
|
437
477
|
if (value === undefined) {
|
|
438
478
|
// Slow path... Should not be common...
|
|
439
479
|
this.#memory?.delete(key);
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
480
|
+
if (shard) {
|
|
481
|
+
shard.setBatch = shard.setBatch.filter((item) => item.key !== key);
|
|
482
|
+
try {
|
|
483
|
+
shard.delQuery?.run(key);
|
|
484
|
+
}
|
|
485
|
+
catch (err) {
|
|
486
|
+
this.#emitError(err);
|
|
487
|
+
}
|
|
446
488
|
}
|
|
447
489
|
return;
|
|
448
490
|
}
|
|
@@ -463,84 +505,86 @@ export class Cache extends EventEmitter {
|
|
|
463
505
|
const data = this.#serializer.serialize(value);
|
|
464
506
|
const entry = this.#createEntry(key, value, ttl, stale, ArrayBuffer.isView(data) ? data.byteLength : data.length * 2);
|
|
465
507
|
this.#memory?.set(key, entry);
|
|
508
|
+
if (!shard) {
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
466
511
|
if (!this.#flushHandle) {
|
|
467
512
|
this.#memory?.cork();
|
|
468
513
|
this.#flushHandle = setImmediate(this.#flush);
|
|
469
514
|
}
|
|
470
|
-
else if (
|
|
515
|
+
else if (shard.setBatch.length > 512) {
|
|
471
516
|
clearImmediate(this.#flushHandle);
|
|
472
517
|
this.#flush();
|
|
473
518
|
}
|
|
474
|
-
|
|
519
|
+
shard.setBatch.push({ key, data, ttl, stale });
|
|
475
520
|
}
|
|
476
521
|
#flush = () => {
|
|
477
522
|
this.#flushHandle = null;
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
try {
|
|
488
|
-
this.#database.exec('BEGIN');
|
|
489
|
-
while (n < this.#setBatch.length) {
|
|
490
|
-
const { key, data, ttl, stale } = this.#setBatch[n++];
|
|
491
|
-
if (data != null) {
|
|
492
|
-
this.#setQuery?.run(key, data, ttl, stale);
|
|
493
|
-
}
|
|
494
|
-
else {
|
|
495
|
-
this.#delQuery?.run(key);
|
|
496
|
-
}
|
|
497
|
-
if ((n & 0xf) === 0 && performance.now() - startTime > 10) {
|
|
498
|
-
break;
|
|
499
|
-
}
|
|
523
|
+
const startTime = performance.now();
|
|
524
|
+
const len = this.#shards?.length ?? 0;
|
|
525
|
+
const idx = Math.floor(Math.random() * len);
|
|
526
|
+
for (let k = 0; k < len; k++) {
|
|
527
|
+
const shard = this.#shards[(idx + k) % len];
|
|
528
|
+
try {
|
|
529
|
+
for (let retryCount = 0; true; retryCount++) {
|
|
530
|
+
if (!shard.database || shard.setBatch.length === 0) {
|
|
531
|
+
break;
|
|
500
532
|
}
|
|
501
|
-
|
|
502
|
-
this.#setBatch.splice(0, n);
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
catch (err) {
|
|
506
|
-
// ROLLBACK is required: a failed statement leaves the connection with
|
|
507
|
-
// an open transaction; without it the next BEGIN would throw.
|
|
508
|
-
// On SQLITE_FULL, SQLite automatically rolls back the transaction, so
|
|
509
|
-
// the explicit ROLLBACK may fail with "no transaction is active" — ignore it.
|
|
533
|
+
let n = 0;
|
|
510
534
|
try {
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
535
|
+
shard.database.exec('BEGIN');
|
|
536
|
+
while (n < shard.setBatch.length) {
|
|
537
|
+
const { key, data, ttl, stale } = shard.setBatch[n++];
|
|
538
|
+
if (data != null) {
|
|
539
|
+
shard.setQuery?.run(key, data, ttl, stale);
|
|
540
|
+
}
|
|
541
|
+
else {
|
|
542
|
+
shard.delQuery?.run(key);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
shard.database.exec('COMMIT');
|
|
546
|
+
shard.setBatch.splice(0, n);
|
|
547
|
+
break;
|
|
521
548
|
}
|
|
522
|
-
|
|
523
|
-
//
|
|
524
|
-
//
|
|
525
|
-
//
|
|
526
|
-
//
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
549
|
+
catch (err) {
|
|
550
|
+
// ROLLBACK is required: a failed statement leaves the connection with
|
|
551
|
+
// an open transaction; without it the next BEGIN would throw.
|
|
552
|
+
// On SQLITE_FULL, SQLite automatically rolls back the transaction, so
|
|
553
|
+
// the explicit ROLLBACK may fail with "no transaction is active" — ignore it.
|
|
554
|
+
try {
|
|
555
|
+
shard.database.exec('ROLLBACK');
|
|
556
|
+
}
|
|
557
|
+
catch {
|
|
558
|
+
// already rolled back automatically
|
|
559
|
+
// TODO (fix): Check that the error is what we expect (something like "no transaction is active")...
|
|
560
|
+
}
|
|
561
|
+
if (err?.errcode === 13 /* SQLITE_FULL */ &&
|
|
562
|
+
retryCount < 3 &&
|
|
563
|
+
shard.evictQuery != null) {
|
|
564
|
+
shard.evictQuery.run(256);
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
// Intentional: drop the rolled-back items from the batch and surface
|
|
568
|
+
// the error via #emitError below. The corresponding entries remain in
|
|
569
|
+
// #memory until natural eviction/TTL, which is fine for cache semantics
|
|
570
|
+
// — callers already accept that cache values can disappear at any time.
|
|
571
|
+
// Do NOT flag this as silent data loss (see closed issue #167).
|
|
572
|
+
shard.setBatch.splice(0, n);
|
|
573
|
+
throw err;
|
|
574
|
+
}
|
|
530
575
|
}
|
|
531
576
|
}
|
|
532
577
|
}
|
|
578
|
+
catch (err) {
|
|
579
|
+
shard.setBatch.length = 0;
|
|
580
|
+
this.#emitError(err);
|
|
581
|
+
}
|
|
582
|
+
if (performance.now() - startTime > 10) {
|
|
583
|
+
this.#flushHandle = setImmediate(this.#flush);
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
533
586
|
}
|
|
534
|
-
|
|
535
|
-
this.#emitError(err);
|
|
536
|
-
}
|
|
537
|
-
if (this.#setBatch.length > 0) {
|
|
538
|
-
// If we weren't able to flush the entire batch within the time limit, schedule another flush.
|
|
539
|
-
this.#flushHandle = setImmediate(this.#flush);
|
|
540
|
-
}
|
|
541
|
-
else {
|
|
542
|
-
this.#memory?.uncork();
|
|
543
|
-
}
|
|
587
|
+
this.#memory?.uncork();
|
|
544
588
|
};
|
|
545
589
|
#createEntry(key, value, ttl, stale, size) {
|
|
546
590
|
return {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,CAAC,CAAA;IACR,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,WAAW,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,CAAC,CAAA;IACR,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,WAAW,CAAC,CAAC;;gBAaZ,IAAI,CAAC,EAAE,aAAa;IAahC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAiB3C,IAAI;IAIJ,MAAM;IASN,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,MAAM,CAAC,GAAG,EAAE,MAAM;IA+BlB,UAAU,CAAC,GAAG,EAAE,MAAM;IAStB,IAAI,KAAK;;;;;MAOR;CAcF"}
|
package/lib/memory.js
CHANGED
|
@@ -5,6 +5,7 @@ export class MemoryCache {
|
|
|
5
5
|
#maxCount;
|
|
6
6
|
#size = 0;
|
|
7
7
|
#count = 0;
|
|
8
|
+
#counter = 0;
|
|
8
9
|
#cork = 0;
|
|
9
10
|
constructor(opts) {
|
|
10
11
|
if (opts?.maxSize != null && (!Number.isInteger(opts.maxSize) || opts.maxSize < 1)) {
|
|
@@ -24,7 +25,7 @@ export class MemoryCache {
|
|
|
24
25
|
this.#map.set(key, entry);
|
|
25
26
|
entry.key = key;
|
|
26
27
|
entry.index = this.#arr.push(entry) - 1;
|
|
27
|
-
entry.counter =
|
|
28
|
+
entry.counter = this.#nextCounter();
|
|
28
29
|
this.#size += entry.size ?? 0;
|
|
29
30
|
this.#count += 1;
|
|
30
31
|
this.#prune();
|
|
@@ -43,7 +44,7 @@ export class MemoryCache {
|
|
|
43
44
|
get(key) {
|
|
44
45
|
const entry = this.#map.get(key);
|
|
45
46
|
if (entry != null) {
|
|
46
|
-
entry.counter =
|
|
47
|
+
entry.counter = this.#nextCounter();
|
|
47
48
|
}
|
|
48
49
|
return entry;
|
|
49
50
|
}
|
|
@@ -53,6 +54,16 @@ export class MemoryCache {
|
|
|
53
54
|
this.#delete(entry);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
#nextCounter() {
|
|
58
|
+
if (this.#counter === Number.MAX_SAFE_INTEGER) {
|
|
59
|
+
const sorted = [...this.#arr].sort((a, b) => a.counter - b.counter);
|
|
60
|
+
this.#counter = 0;
|
|
61
|
+
for (const e of sorted) {
|
|
62
|
+
e.counter = this.#counter++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this.#counter++;
|
|
66
|
+
}
|
|
56
67
|
#delete(entry) {
|
|
57
68
|
this.#map.delete(entry.key);
|
|
58
69
|
this.#size -= entry.size ?? 0;
|
package/lib/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,WAAW;IACtB,IAAI,GAAqC,IAAI,GAAG,EAAE,CAAA;IAClD,IAAI,GAA+B,EAAE,CAAA;IAErC,QAAQ,CAAA;IACR,SAAS,CAAA;IAET,KAAK,GAAG,CAAC,CAAA;IACT,MAAM,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxtedition/cache",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"tsd": "^0.33.0",
|
|
33
33
|
"typescript": "^5.9.3"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "5c6d79b4a6e0a3684a850151248ac248b712a252"
|
|
36
36
|
}
|