express-memorize 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +45 -0
- package/dist/adapters/nestjs.js +1 -1
- package/dist/adapters/nestjs.js.map +1 -1
- package/dist/domain/MemorizeOptions.d.ts +17 -0
- package/dist/domain/MemorizeOptions.d.ts.map +1 -1
- package/dist/memorize.d.ts +1 -0
- package/dist/memorize.d.ts.map +1 -1
- package/dist/memorize.js +7 -3
- package/dist/memorize.js.map +1 -1
- package/dist/serializer.d.ts +7 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/serializer.js +36 -0
- package/dist/serializer.js.map +1 -0
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [2.3.0](https://github.com/ElJijuna/express-memorize/compare/v2.2.0...v2.3.0) (2026-05-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add pluggable serializer option with node:v8 support and benchmark suite ([6b86a3e](https://github.com/ElJijuna/express-memorize/commit/6b86a3eebffc0f513261e6fd657904ad4daab911)), closes [#19](https://github.com/ElJijuna/express-memorize/issues/19)
|
|
7
|
+
|
|
1
8
|
# [2.2.0](https://github.com/ElJijuna/express-memorize/compare/v2.1.0...v2.2.0) (2026-05-11)
|
|
2
9
|
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
- **`maxEntries` cap with LRU eviction** to bound memory usage
|
|
33
33
|
- **Size metrics**: `size()`, `byteSize()`, `getStats()`
|
|
34
34
|
- **Service-level cache**: `remember()`, `set()`, `getValue()`
|
|
35
|
+
- **Pluggable serializer**: `'auto'` (node:v8 when available, else JSON), `'json'`, `'v8'`, or custom
|
|
35
36
|
- Event hooks: `set`, `delete`, `expire`, `evict`
|
|
36
37
|
- Cache inspection and invalidation API (`get`, `getAll`, `delete`, `deleteMatching`, `clear`)
|
|
37
38
|
- Hit counter per cache entry
|
|
@@ -185,6 +186,49 @@ cache.set('config', appConfig);
|
|
|
185
186
|
const config = cache.getValue<AppConfig>('config');
|
|
186
187
|
```
|
|
187
188
|
|
|
189
|
+
### Serializer
|
|
190
|
+
|
|
191
|
+
The `serializer` option controls how values passed to `set()` / `getValue()` / `remember()` are stored internally. It does **not** affect HTTP middleware caching — adapters store response bodies as-is.
|
|
192
|
+
|
|
193
|
+
| Value | Serializes to | Handles `Date`, `Map`, `Set`, `Buffer` | Runtime |
|
|
194
|
+
|-------|--------------|----------------------------------------|---------|
|
|
195
|
+
| `'auto'` *(default)* | Buffer (v8) or string (JSON) | Yes — when `node:v8` is available | Any |
|
|
196
|
+
| `'json'` | string | No | Any (edge runtimes, human-readable) |
|
|
197
|
+
| `'v8'` | Buffer | Yes | Node.js / Bun — throws at construction otherwise |
|
|
198
|
+
| Custom object | user-defined | user-defined | Any |
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// auto (default): uses node:v8 when available, falls back to JSON silently
|
|
202
|
+
const cache = memorize();
|
|
203
|
+
|
|
204
|
+
// Always JSON — useful for edge runtimes or when you need human-readable bodies
|
|
205
|
+
const cache = memorize({ serializer: 'json' });
|
|
206
|
+
|
|
207
|
+
// Always v8 — throws at construction if node:v8 is not available
|
|
208
|
+
const cache = memorize({ serializer: 'v8' });
|
|
209
|
+
|
|
210
|
+
// Custom serializer — bring your own (MessagePack, CBOR, etc.)
|
|
211
|
+
import { pack, unpack } from 'msgpackr';
|
|
212
|
+
const cache = memorize({
|
|
213
|
+
serializer: {
|
|
214
|
+
serialize: (v) => Buffer.from(pack(v)),
|
|
215
|
+
deserialize: (d) => unpack(d as Buffer),
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
With `'v8'` or `'auto'`, `set()` correctly round-trips types that JSON cannot represent:
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
const cache = memorize({ serializer: 'v8', ttl: Infinity });
|
|
224
|
+
|
|
225
|
+
cache.set('created', new Date());
|
|
226
|
+
cache.getValue<Date>('created'); // Date instance preserved
|
|
227
|
+
|
|
228
|
+
cache.set('roles', new Set(['admin', 'editor']));
|
|
229
|
+
cache.getValue<Set<string>>('roles'); // Set instance preserved
|
|
230
|
+
```
|
|
231
|
+
|
|
188
232
|
---
|
|
189
233
|
|
|
190
234
|
## Usage
|
|
@@ -403,6 +447,7 @@ Creates a cache instance. Returns a `Memorize` object.
|
|
|
403
447
|
|--------|------|---------|-------------|
|
|
404
448
|
| `ttl` | `number` | `60_000` | Time-to-live in milliseconds. Pass `Infinity` for no expiry. |
|
|
405
449
|
| `maxEntries` | `number` | `undefined` | Maximum number of entries. LRU eviction when reached. |
|
|
450
|
+
| `serializer` | `'auto' \| 'json' \| 'v8' \| Serializer` | `'auto'` | Serializer for `set()` / `getValue()`. `'auto'` uses `node:v8` when available, falls back to JSON. Does not affect HTTP middleware caching. |
|
|
406
451
|
|
|
407
452
|
### `cache(options?)` / `cache.express(options?)`
|
|
408
453
|
|
package/dist/adapters/nestjs.js
CHANGED
|
@@ -162,7 +162,7 @@ class MemorizeInterceptor {
|
|
|
162
162
|
return cacheObservable(next.handle(), (value) => {
|
|
163
163
|
if (value === undefined || response.headersSent)
|
|
164
164
|
return;
|
|
165
|
-
this.cache.set(key, value, ttl);
|
|
165
|
+
this.cache._store.set(key, { body: value, statusCode: 200, contentType: 'application/json' }, ttl !== null && ttl !== void 0 ? ttl : this.cache._ttl);
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../src/adapters/nestjs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../src/adapters/nestjs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializerOption } from '../serializer';
|
|
1
2
|
/**
|
|
2
3
|
* Options passed to the {@link memorize} factory.
|
|
3
4
|
*
|
|
@@ -25,5 +26,21 @@ export interface MemorizeOptions {
|
|
|
25
26
|
* ```
|
|
26
27
|
*/
|
|
27
28
|
maxEntries?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Serializer used by {@link Memorize.set} and {@link Memorize.getValue}.
|
|
31
|
+
*
|
|
32
|
+
* - `'auto'` (default) — uses `node:v8` when available, falls back to JSON silently.
|
|
33
|
+
* - `'json'` — always uses `JSON.stringify` / `JSON.parse` (edge-runtime safe, human-readable).
|
|
34
|
+
* - `'v8'` — always uses `node:v8`; throws at construction if not available.
|
|
35
|
+
* - Custom object — `{ serialize(v): string | Buffer; deserialize(d): unknown }`.
|
|
36
|
+
*
|
|
37
|
+
* HTTP middleware caching (Express, Hono, Fastify, etc.) is not affected by this option.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const cache = memorize({ serializer: 'v8' }); // opt-in to faster v8 serialization
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
serializer?: SerializerOption;
|
|
28
45
|
}
|
|
29
46
|
//# sourceMappingURL=MemorizeOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemorizeOptions.d.ts","sourceRoot":"","sources":["../../src/domain/MemorizeOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MemorizeOptions.d.ts","sourceRoot":"","sources":["../../src/domain/MemorizeOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B"}
|
package/dist/memorize.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Memorize } from './domain/Memorize';
|
|
2
2
|
import { MemorizeOptions } from './domain/MemorizeOptions';
|
|
3
3
|
import { MemorizeCallOptions } from './domain/MemorizeCallOptions';
|
|
4
|
+
export type { Serializer, SerializerOption } from './serializer';
|
|
4
5
|
export type { Memorize, MemorizeOptions, MemorizeCallOptions };
|
|
5
6
|
/**
|
|
6
7
|
* Creates an in-memory cache instance.
|
package/dist/memorize.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorize.d.ts","sourceRoot":"","sources":["../src/memorize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"memorize.d.ts","sourceRoot":"","sources":["../src/memorize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEjE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAiDhE"}
|
package/dist/memorize.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.memorize = memorize;
|
|
4
4
|
const MemorizeStore_1 = require("./MemorizeStore");
|
|
5
5
|
const express_1 = require("./adapters/express");
|
|
6
|
+
const serializer_1 = require("./serializer");
|
|
6
7
|
/**
|
|
7
8
|
* Creates an in-memory cache instance.
|
|
8
9
|
*
|
|
@@ -54,22 +55,25 @@ const express_1 = require("./adapters/express");
|
|
|
54
55
|
* ```
|
|
55
56
|
*/
|
|
56
57
|
function memorize(options = {}) {
|
|
57
|
-
const { ttl, maxEntries } = options;
|
|
58
|
+
const { ttl, maxEntries, serializer: serializerOption } = options;
|
|
58
59
|
const store = new MemorizeStore_1.MemorizeStore(maxEntries);
|
|
60
|
+
const serializer = (0, serializer_1.createSerializer)(serializerOption);
|
|
59
61
|
const expressMiddleware = (0, express_1.createExpressMiddleware)(store, ttl);
|
|
60
62
|
const cache = function (callOptions) {
|
|
61
63
|
return expressMiddleware(callOptions);
|
|
62
64
|
};
|
|
63
65
|
cache.express = (callOptions) => expressMiddleware(callOptions);
|
|
64
66
|
cache.set = (key, value, entryTtl) => {
|
|
65
|
-
|
|
67
|
+
const body = serializer.serialize(value);
|
|
68
|
+
const contentType = Buffer.isBuffer(body) ? 'application/octet-stream' : 'application/json';
|
|
69
|
+
store.set(key, { body, statusCode: 200, contentType }, entryTtl !== null && entryTtl !== void 0 ? entryTtl : ttl);
|
|
66
70
|
};
|
|
67
71
|
cache.getValue = (key) => {
|
|
68
72
|
const info = store.get(key);
|
|
69
73
|
if (!info)
|
|
70
74
|
return undefined;
|
|
71
75
|
try {
|
|
72
|
-
return
|
|
76
|
+
return serializer.deserialize(info.body);
|
|
73
77
|
}
|
|
74
78
|
catch (_a) {
|
|
75
79
|
return undefined;
|
package/dist/memorize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorize.js","sourceRoot":"","sources":["../src/memorize.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"memorize.js","sourceRoot":"","sources":["../src/memorize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface Serializer {
|
|
2
|
+
serialize(value: unknown): string | Buffer;
|
|
3
|
+
deserialize(data: string | Buffer): unknown;
|
|
4
|
+
}
|
|
5
|
+
export type SerializerOption = 'json' | 'v8' | 'auto' | Serializer;
|
|
6
|
+
export declare function createSerializer(option?: SerializerOption): Serializer;
|
|
7
|
+
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC7C;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC;AAqBnE,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAyB,GAAG,UAAU,CAU9E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSerializer = createSerializer;
|
|
4
|
+
const jsonSerializer = {
|
|
5
|
+
serialize: (v) => JSON.stringify(v),
|
|
6
|
+
deserialize: (d) => JSON.parse(d),
|
|
7
|
+
};
|
|
8
|
+
function tryV8() {
|
|
9
|
+
try {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
11
|
+
const v8 = require('node:v8');
|
|
12
|
+
return {
|
|
13
|
+
serialize: (v) => v8.serialize(v),
|
|
14
|
+
deserialize: (data) => v8.deserialize(Buffer.isBuffer(data) ? data : Buffer.from(data, 'binary')),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (_a) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function createSerializer(option = 'auto') {
|
|
22
|
+
var _a;
|
|
23
|
+
if (typeof option === 'object')
|
|
24
|
+
return option;
|
|
25
|
+
if (option === 'json')
|
|
26
|
+
return jsonSerializer;
|
|
27
|
+
if (option === 'v8') {
|
|
28
|
+
const s = tryV8();
|
|
29
|
+
if (!s)
|
|
30
|
+
throw new Error('[express-memorize] node:v8 is not available in this runtime');
|
|
31
|
+
return s;
|
|
32
|
+
}
|
|
33
|
+
// 'auto': v8 si está disponible, JSON como fallback
|
|
34
|
+
return (_a = tryV8()) !== null && _a !== void 0 ? _a : jsonSerializer;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":";;AA0BA,4CAUC;AA7BD,MAAM,cAAc,GAAe;IACjC,SAAS,EAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAW,CAAC;CAC5C,CAAC;AAEF,SAAS,KAAK;IACZ,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;QAC1D,OAAO;YACL,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAc,EAAE,QAAQ,CAAC,CAAC;SACvF,CAAC;IACJ,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAA2B,MAAM;;IAChE,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACvF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,oDAAoD;IACpD,OAAO,MAAA,KAAK,EAAE,mCAAI,cAAc,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-memorize",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "In-memory cache middleware for Express.js. Caches GET responses with optional TTL — zero dependencies, fully typed.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"test": "jest",
|
|
54
54
|
"test:watch": "jest --watch",
|
|
55
55
|
"prepublishOnly": "npm test && npm run build",
|
|
56
|
+
"bench": "tsx bench/index.ts",
|
|
56
57
|
"docs": "typedoc",
|
|
57
58
|
"docs:watch": "typedoc --watch"
|
|
58
59
|
},
|
|
@@ -112,7 +113,9 @@
|
|
|
112
113
|
"jest": "^29.0.0",
|
|
113
114
|
"koa": "^3.2.0",
|
|
114
115
|
"semantic-release": "^24.2.9",
|
|
116
|
+
"tinybench": "^6.0.2",
|
|
115
117
|
"ts-jest": "^29.0.0",
|
|
118
|
+
"tsx": "^4.22.1",
|
|
116
119
|
"typedoc": "^0.28.18",
|
|
117
120
|
"typedoc-material-theme": "^1.4.1",
|
|
118
121
|
"typescript": "^5.0.0"
|