@rapidrest/core 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/MemoryStore.js +22 -5
- package/dist/lib/MemoryStore.js.map +1 -1
- package/dist/lib/RedisStore.js +70 -36
- package/dist/lib/RedisStore.js.map +1 -1
- package/dist/types/MemoryStore.d.ts +2 -2
- package/dist/types/RedisStore.d.ts +11 -3
- package/dist/types/SimpleStore.d.ts +4 -0
- package/package.json +1 -1
package/dist/lib/MemoryStore.js
CHANGED
|
@@ -72,11 +72,16 @@ export class MemoryStore {
|
|
|
72
72
|
return results;
|
|
73
73
|
}
|
|
74
74
|
loadSet(id) {
|
|
75
|
-
const
|
|
76
|
-
if (!
|
|
75
|
+
const entry = this.sets.get(id);
|
|
76
|
+
if (!entry) {
|
|
77
77
|
return undefined;
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
// Same expiry discipline as load(): a set left past its TTL must not keep being served.
|
|
80
|
+
if (entry.expiresAt <= Date.now()) {
|
|
81
|
+
this.sets.delete(id);
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
return this.loadMany(entry.ids);
|
|
80
85
|
}
|
|
81
86
|
save(id, data, ttl = this.defaultTTL) {
|
|
82
87
|
if (!this.entries.has(id) && this.entries.size >= this.maxSize) {
|
|
@@ -119,8 +124,16 @@ export class MemoryStore {
|
|
|
119
124
|
for (let i = 0; i < ids.length; i++) {
|
|
120
125
|
this.save(ids[i], records[i], ttl);
|
|
121
126
|
}
|
|
122
|
-
// Now store the id set
|
|
123
|
-
|
|
127
|
+
// Now store the id set, bounded by maxSize the same way entries are - otherwise a caller that varies the
|
|
128
|
+
// set id per request/user/query (a normal saveSet usage pattern) would grow this map without limit.
|
|
129
|
+
if (!this.sets.has(id) && this.sets.size >= this.maxSize) {
|
|
130
|
+
this.sweep();
|
|
131
|
+
while (this.sets.size >= this.maxSize && this.sets.size > 0) {
|
|
132
|
+
CacheUtils.evictOldest(this.sets);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.sets.delete(id);
|
|
136
|
+
this.sets.set(id, { ids, expiresAt: Date.now() + ttl * 1000 });
|
|
124
137
|
}
|
|
125
138
|
sweep() {
|
|
126
139
|
const now = Date.now();
|
|
@@ -128,6 +141,10 @@ export class MemoryStore {
|
|
|
128
141
|
if (entry.expiresAt <= now)
|
|
129
142
|
this.entries.delete(sessionId);
|
|
130
143
|
}
|
|
144
|
+
for (const [key, entry] of this.sets.entries()) {
|
|
145
|
+
if (entry.expiresAt <= now)
|
|
146
|
+
this.sets.delete(key);
|
|
147
|
+
}
|
|
131
148
|
}
|
|
132
149
|
}
|
|
133
150
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/MemoryStore.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,mEAAmE;AACnE,+EAA+E;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,KAAM,CAAC;AAEjC;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAapB;QAZA,2CAA2C;QACpC,eAAU,GAAW,EAAE,CAAC;QAErB,YAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;QAE7D,8CAA8C;QACvC,YAAO,GAAW,KAAK,CAAC;QAErB,SAAI,
|
|
1
|
+
{"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/MemoryStore.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/RedisStore.js
CHANGED
|
@@ -25,7 +25,7 @@ export class RedisStore {
|
|
|
25
25
|
* @param baseKey The base key that is pre-pended to all IDs.
|
|
26
26
|
* @param client The Redis client to back this store with. When omitted, the store operates purely in-memory.
|
|
27
27
|
*/
|
|
28
|
-
constructor(baseKey = "store", client) {
|
|
28
|
+
constructor(baseKey = "store.", client) {
|
|
29
29
|
/** The default record TTL (in seconds). */
|
|
30
30
|
this.defaultTTL = 60;
|
|
31
31
|
this.entries = new Map();
|
|
@@ -53,7 +53,7 @@ export class RedisStore {
|
|
|
53
53
|
}
|
|
54
54
|
async delete(id) {
|
|
55
55
|
// Prepend the base key to the id
|
|
56
|
-
id = this.
|
|
56
|
+
id = this._key(id);
|
|
57
57
|
this.entries.delete(id);
|
|
58
58
|
await this.client?.del(id);
|
|
59
59
|
}
|
|
@@ -62,7 +62,7 @@ export class RedisStore {
|
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
// Pre-pend the baseKey to all ids
|
|
65
|
-
ids = ids.map((id) => this.
|
|
65
|
+
ids = ids.map((id) => this._key(id));
|
|
66
66
|
// Delete all local entries
|
|
67
67
|
for (const id of ids) {
|
|
68
68
|
this.entries.delete(id);
|
|
@@ -72,7 +72,7 @@ export class RedisStore {
|
|
|
72
72
|
}
|
|
73
73
|
async deleteSet(id) {
|
|
74
74
|
// Prepend the base key to the id
|
|
75
|
-
id = this.
|
|
75
|
+
id = this._key(id);
|
|
76
76
|
// We purposefully don't delete the individually stored records
|
|
77
77
|
// as they may be relevant to other valid queries. Let them expire
|
|
78
78
|
// naturally.
|
|
@@ -82,9 +82,19 @@ export class RedisStore {
|
|
|
82
82
|
destroy() {
|
|
83
83
|
clearInterval(this.sweepTimer);
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Builds the Redis/local-cache key for the given id. The id is percent-encoded so that it can never introduce
|
|
87
|
+
* a literal delimiter that spoofs a different `baseKey` namespace - e.g. a client-supplied id of "session:X"
|
|
88
|
+
* concatenated raw onto baseKey "user:" would produce the literal key "user:session:X", colliding with a
|
|
89
|
+
* second store constructed as `new RedisStore("user:session:", client)`. Encoding closes that off since
|
|
90
|
+
* `encodeURIComponent` never leaves a literal ":" (or "/", etc.) in its output.
|
|
91
|
+
*/
|
|
92
|
+
_key(id) {
|
|
93
|
+
return this.baseKey + encodeURIComponent(id);
|
|
94
|
+
}
|
|
85
95
|
async load(id, skipRedis = false) {
|
|
86
96
|
// Prepend the base key to the id
|
|
87
|
-
id = this.
|
|
97
|
+
id = this._key(id);
|
|
88
98
|
const entry = this.entries.get(id);
|
|
89
99
|
if (entry) {
|
|
90
100
|
// If the local copy hasn't expired, it's safe to serve directly.
|
|
@@ -144,7 +154,7 @@ export class RedisStore {
|
|
|
144
154
|
if (missing.length > 0) {
|
|
145
155
|
let pipe = this.client.multi();
|
|
146
156
|
for (const pair of missing) {
|
|
147
|
-
const id = this.
|
|
157
|
+
const id = this._key(pair.id);
|
|
148
158
|
pipe.get(id).ttl(id);
|
|
149
159
|
}
|
|
150
160
|
const result = await pipe.execAsPipeline();
|
|
@@ -161,54 +171,65 @@ export class RedisStore {
|
|
|
161
171
|
toSave.push({ id: pair.id, data: record, ttl });
|
|
162
172
|
}
|
|
163
173
|
}
|
|
164
|
-
// Finally go through all items to save.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
// Finally go through all items to save. Evicted per-id, exactly like save()/saveMany() do, rather
|
|
175
|
+
// than precomputing a single batch eviction count sized to `toSave.length`: when the batch itself is
|
|
176
|
+
// larger than `maxSize` (a normal outcome of a bulk loadMany() against a store with a small/default
|
|
177
|
+
// maxSize), `overflow` capped at the map's *current* size evicts too little, and the unconditional
|
|
178
|
+
// insert loop that followed left `entries.size` far above `maxSize`. Same bug class saveMany() was
|
|
179
|
+
// already fixed for - see its comment below for the full rationale.
|
|
180
|
+
for (const entry of toSave) {
|
|
181
|
+
const key = this._key(entry.id);
|
|
182
|
+
if (!this.entries.has(key) && this.entries.size >= this.maxSize) {
|
|
173
183
|
this.sweep();
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
CacheUtils.evictOldest(this.entries, Math.min(overflow, this.entries.size));
|
|
184
|
+
while (this.entries.size >= this.maxSize && this.entries.size > 0) {
|
|
185
|
+
CacheUtils.evictOldest(this.entries);
|
|
177
186
|
}
|
|
178
187
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
data: entry.data,
|
|
182
|
-
expiresAt: Date.now() + entry.ttl * 1000,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
188
|
+
this.entries.delete(key);
|
|
189
|
+
this.entries.set(key, { data: entry.data, expiresAt: Date.now() + entry.ttl * 1000 });
|
|
185
190
|
}
|
|
186
191
|
}
|
|
187
192
|
return results;
|
|
188
193
|
}
|
|
189
194
|
async loadSet(id) {
|
|
190
|
-
id = this.
|
|
195
|
+
id = this._key(id);
|
|
191
196
|
// First look up the list of ids from local storage
|
|
192
|
-
const
|
|
193
|
-
if (
|
|
194
|
-
|
|
197
|
+
const entry = this.sets.get(id);
|
|
198
|
+
if (entry) {
|
|
199
|
+
// Same as load(): if the local copy hasn't expired, it's safe to serve directly. Otherwise Redis is
|
|
200
|
+
// the source of truth (another process may have since re-saved this set) - drop the stale local copy
|
|
201
|
+
// and fall through to check Redis instead of serving it forever.
|
|
202
|
+
if (entry.expiresAt > Date.now()) {
|
|
203
|
+
return this.loadMany(entry.ids);
|
|
204
|
+
}
|
|
205
|
+
this.sets.delete(id);
|
|
195
206
|
}
|
|
196
207
|
if (!this.client) {
|
|
197
208
|
return undefined;
|
|
198
209
|
}
|
|
199
|
-
// The set ids aren't stored locally, so let's try redis.
|
|
200
|
-
|
|
210
|
+
// The set ids aren't stored locally, so let's try redis. Also grab the ttl so the local copy we cache
|
|
211
|
+
// below expires at the same time the Redis-side entry does, instead of being cached forever.
|
|
212
|
+
const [json, ttl] = await this.client.multi().get(id).ttl(id).execAsPipelineTyped();
|
|
201
213
|
if (json) {
|
|
202
214
|
const ids = JSON.parse(json);
|
|
203
|
-
// Store the list of ids locally for faster retrieval next time
|
|
204
|
-
|
|
215
|
+
// Store the list of ids locally for faster retrieval next time, bounded by maxSize the same way
|
|
216
|
+
// entries are - otherwise a caller that varies the set id per request/user/query (a normal loadSet
|
|
217
|
+
// usage pattern) would grow this map without limit.
|
|
218
|
+
if (!this.sets.has(id) && this.sets.size >= this.maxSize) {
|
|
219
|
+
this.sweep();
|
|
220
|
+
while (this.sets.size >= this.maxSize && this.sets.size > 0) {
|
|
221
|
+
CacheUtils.evictOldest(this.sets);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this.sets.delete(id);
|
|
225
|
+
this.sets.set(id, { ids, expiresAt: Date.now() + ttl * 1000 });
|
|
205
226
|
return this.loadMany(ids);
|
|
206
227
|
}
|
|
207
228
|
return undefined;
|
|
208
229
|
}
|
|
209
230
|
async save(id, data, ttl = this.defaultTTL, skipRedis = false) {
|
|
210
231
|
// Prepend the base key to the id
|
|
211
|
-
id = this.
|
|
232
|
+
id = this._key(id);
|
|
212
233
|
// Write to Redis first (when configured): if it fails (bad connection, etc.), the local cache is left
|
|
213
234
|
// untouched instead of reporting a "saved" value locally that never made it to the shared store other
|
|
214
235
|
// instances read from.
|
|
@@ -234,7 +255,7 @@ export class RedisStore {
|
|
|
234
255
|
throw new Error("The ids and data arguments must have the same length.");
|
|
235
256
|
}
|
|
236
257
|
// Prepend the base key to each id
|
|
237
|
-
ids = ids.map((id) => this.
|
|
258
|
+
ids = ids.map((id) => this._key(id));
|
|
238
259
|
// Write to Redis first (when configured): if it fails (bad connection, etc.), the local cache is left
|
|
239
260
|
// untouched instead of reporting a "saved" value locally that never made it to the shared store other
|
|
240
261
|
// instances read from.
|
|
@@ -284,8 +305,17 @@ export class RedisStore {
|
|
|
284
305
|
// Now store all the records in the cache
|
|
285
306
|
await this.saveMany(ids, records, ttl);
|
|
286
307
|
// Finally, store our set of ids
|
|
287
|
-
|
|
288
|
-
this.
|
|
308
|
+
const key = this._key(id);
|
|
309
|
+
await this.client?.setEx(key, ttl, JSON.stringify(ids));
|
|
310
|
+
// Bounded by maxSize the same way entries are - see loadSet()/saveSet() comments above for why.
|
|
311
|
+
if (!this.sets.has(key) && this.sets.size >= this.maxSize) {
|
|
312
|
+
this.sweep();
|
|
313
|
+
while (this.sets.size >= this.maxSize && this.sets.size > 0) {
|
|
314
|
+
CacheUtils.evictOldest(this.sets);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
this.sets.delete(key);
|
|
318
|
+
this.sets.set(key, { ids, expiresAt: Date.now() + ttl * 1000 });
|
|
289
319
|
}
|
|
290
320
|
sweep() {
|
|
291
321
|
const now = Date.now();
|
|
@@ -293,6 +323,10 @@ export class RedisStore {
|
|
|
293
323
|
if (entry.expiresAt <= now)
|
|
294
324
|
this.entries.delete(sessionId);
|
|
295
325
|
}
|
|
326
|
+
for (const [key, entry] of this.sets.entries()) {
|
|
327
|
+
if (entry.expiresAt <= now)
|
|
328
|
+
this.sets.delete(key);
|
|
329
|
+
}
|
|
296
330
|
}
|
|
297
331
|
}
|
|
298
332
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisStore.js","sourceRoot":"","sources":["../../src/RedisStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RedisStore.js","sourceRoot":"","sources":["../../src/RedisStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MemoryStoreEntry, SimpleStore } from "./SimpleStore.js";
|
|
1
|
+
import { MemoryStoreEntry, MemoryStoreSetEntry, SimpleStore } from "./SimpleStore.js";
|
|
2
2
|
/**
|
|
3
3
|
* Implements a SimpleStore storage system that uses a local in-memory storage map.
|
|
4
4
|
*
|
|
@@ -10,7 +10,7 @@ export declare class MemoryStore implements SimpleStore {
|
|
|
10
10
|
protected entries: Map<string, MemoryStoreEntry>;
|
|
11
11
|
/** The maximum number of records to store. */
|
|
12
12
|
maxSize: number;
|
|
13
|
-
protected sets: Map<string,
|
|
13
|
+
protected sets: Map<string, MemoryStoreSetEntry>;
|
|
14
14
|
private sweepTimer;
|
|
15
15
|
constructor();
|
|
16
16
|
clear(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MemoryStoreEntry, SimpleStore } from "./SimpleStore.js";
|
|
2
|
-
import { RedisClientType } from "redis";
|
|
1
|
+
import { MemoryStoreEntry, MemoryStoreSetEntry, SimpleStore } from "./SimpleStore.js";
|
|
2
|
+
import type { RedisClientType } from "redis";
|
|
3
3
|
/**
|
|
4
4
|
* Implements a SimpleStore storage system that combines a local in-memory store optionally backed by Redis. When
|
|
5
5
|
* no Redis client is given, the store behaves as a plain in-memory store (equivalent to `MemoryStore`).
|
|
@@ -17,7 +17,7 @@ export declare class RedisStore implements SimpleStore {
|
|
|
17
17
|
protected entries: Map<string, MemoryStoreEntry>;
|
|
18
18
|
/** The maximum number of records to store. */
|
|
19
19
|
maxSize: number;
|
|
20
|
-
protected sets: Map<string,
|
|
20
|
+
protected sets: Map<string, MemoryStoreSetEntry>;
|
|
21
21
|
private sweepTimer;
|
|
22
22
|
/**
|
|
23
23
|
* @param baseKey The base key that is pre-pended to all IDs.
|
|
@@ -29,6 +29,14 @@ export declare class RedisStore implements SimpleStore {
|
|
|
29
29
|
deleteMany(ids: string[]): Promise<void>;
|
|
30
30
|
deleteSet(id: string): Promise<void>;
|
|
31
31
|
destroy(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Builds the Redis/local-cache key for the given id. The id is percent-encoded so that it can never introduce
|
|
34
|
+
* a literal delimiter that spoofs a different `baseKey` namespace - e.g. a client-supplied id of "session:X"
|
|
35
|
+
* concatenated raw onto baseKey "user:" would produce the literal key "user:session:X", colliding with a
|
|
36
|
+
* second store constructed as `new RedisStore("user:session:", client)`. Encoding closes that off since
|
|
37
|
+
* `encodeURIComponent` never leaves a literal ":" (or "/", etc.) in its output.
|
|
38
|
+
*/
|
|
39
|
+
private _key;
|
|
32
40
|
load(id: string, skipRedis?: boolean): Promise<Record<string, any> | undefined>;
|
|
33
41
|
loadMany(ids: string[]): Promise<(Record<string, any> | undefined)[]>;
|
|
34
42
|
loadSet(id: string): Promise<(Record<string, any> | undefined)[] | undefined>;
|
|
@@ -2,6 +2,10 @@ export interface MemoryStoreEntry {
|
|
|
2
2
|
data: Record<string, any>;
|
|
3
3
|
expiresAt: number;
|
|
4
4
|
}
|
|
5
|
+
export interface MemoryStoreSetEntry {
|
|
6
|
+
ids: any[];
|
|
7
|
+
expiresAt: number;
|
|
8
|
+
}
|
|
5
9
|
/**
|
|
6
10
|
* Defines an interface for a simple key-value storage system that stores temporary records with a specified
|
|
7
11
|
* lifetime (TTL) and size. Supports the storage and retrieval of individual records as well as sets of records.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rapidrest/core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "A collection of common utilities and core functionality for rapidly building RESTful applications.",
|
|
5
5
|
"repository": "https://github.com/rapidrest/core.git",
|
|
6
6
|
"author": "RapidREST <rapidrests@gmail.com>",
|