express-memorize 2.1.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 +15 -0
- package/README.md +156 -2
- package/dist/adapters/fastify.d.ts +40 -0
- package/dist/adapters/fastify.d.ts.map +1 -0
- package/dist/adapters/fastify.js +93 -0
- package/dist/adapters/fastify.js.map +1 -0
- package/dist/adapters/koa.d.ts +36 -0
- package/dist/adapters/koa.d.ts.map +1 -0
- package/dist/adapters/koa.js +73 -0
- package/dist/adapters/koa.js.map +1 -0
- package/dist/adapters/nestjs.js +1 -1
- package/dist/adapters/nestjs.js.map +1 -1
- package/dist/domain/Memorize.d.ts +6 -0
- package/dist/domain/Memorize.d.ts.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 +8 -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 +28 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
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
|
+
|
|
8
|
+
# [2.2.0](https://github.com/ElJijuna/express-memorize/compare/v2.1.0...v2.2.0) (2026-05-11)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **fastify:** add Fastify cache adapter (Closes [#9](https://github.com/ElJijuna/express-memorize/issues/9)) ([9b940cd](https://github.com/ElJijuna/express-memorize/commit/9b940cdc4a15c27d17264a497c29d32bde09e523))
|
|
14
|
+
* **koa:** add Koa cache adapter (Closes [#8](https://github.com/ElJijuna/express-memorize/issues/8)) ([39673fc](https://github.com/ElJijuna/express-memorize/commit/39673fcd92b5cb5d57560adb982cf1d4b85d4eb5))
|
|
15
|
+
|
|
1
16
|
# [2.1.0](https://github.com/ElJijuna/express-memorize/compare/v2.0.0...v2.1.0) (2026-05-11)
|
|
2
17
|
|
|
3
18
|
|
package/README.md
CHANGED
|
@@ -9,20 +9,30 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
In-memory HTTP cache for <strong>Express, NestJS, Hono, Fetch API</strong>, and more.<br/>
|
|
12
|
+
In-memory HTTP cache for <strong>Express, Fastify, Koa, NestJS, Hono, Fetch API</strong>, and more.<br/>
|
|
13
13
|
Caches <code>GET</code> responses with optional TTL — zero dependencies, fully typed.
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="#express"><img src="https://img.shields.io/badge/Express-000000?logo=express&logoColor=white" alt="Express adapter" /></a>
|
|
18
|
+
<a href="#fastify"><img src="https://img.shields.io/badge/Fastify-000000?logo=fastify&logoColor=white" alt="Fastify adapter" /></a>
|
|
19
|
+
<a href="#koa"><img src="https://img.shields.io/badge/Koa-33333D?logo=koa&logoColor=white" alt="Koa adapter" /></a>
|
|
20
|
+
<a href="#nestjs"><img src="https://img.shields.io/badge/NestJS-E0234E?logo=nestjs&logoColor=white" alt="NestJS adapter" /></a>
|
|
21
|
+
<a href="#hono"><img src="https://img.shields.io/badge/Hono-E36002?logo=hono&logoColor=white" alt="Hono adapter" /></a>
|
|
22
|
+
<a href="#fetch-api--serverless"><img src="https://img.shields.io/badge/Fetch%20API-F7DF1E?logo=javascript&logoColor=black" alt="Fetch API adapter" /></a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
16
25
|
---
|
|
17
26
|
|
|
18
27
|
## Features
|
|
19
28
|
|
|
20
29
|
- Caches `GET` responses automatically when status code is `2xx`
|
|
21
|
-
- Works with **Express**, **NestJS**, **Hono**, **Fetch API / serverless**, and direct service-level usage
|
|
30
|
+
- Works with **Express**, **Fastify**, **Koa**, **NestJS**, **Hono**, **Fetch API / serverless**, and direct service-level usage
|
|
22
31
|
- Per-route TTL override and `noCache` bypass
|
|
23
32
|
- **`maxEntries` cap with LRU eviction** to bound memory usage
|
|
24
33
|
- **Size metrics**: `size()`, `byteSize()`, `getStats()`
|
|
25
34
|
- **Service-level cache**: `remember()`, `set()`, `getValue()`
|
|
35
|
+
- **Pluggable serializer**: `'auto'` (node:v8 when available, else JSON), `'json'`, `'v8'`, or custom
|
|
26
36
|
- Event hooks: `set`, `delete`, `expire`, `evict`
|
|
27
37
|
- Cache inspection and invalidation API (`get`, `getAll`, `delete`, `deleteMatching`, `clear`)
|
|
28
38
|
- Hit counter per cache entry
|
|
@@ -38,6 +48,8 @@ npm install express-memorize
|
|
|
38
48
|
Adapters for non-Express runtimes are optional — install only what you need:
|
|
39
49
|
|
|
40
50
|
```bash
|
|
51
|
+
npm install fastify # only if using the Fastify adapter
|
|
52
|
+
npm install koa @koa/router # only if using the Koa adapter
|
|
41
53
|
npm install hono # only if using the Hono adapter
|
|
42
54
|
npm install @nestjs/common @nestjs/core rxjs # only if using the NestJS adapter
|
|
43
55
|
```
|
|
@@ -61,6 +73,43 @@ app.get('/users', cache(), async (req, res) => {
|
|
|
61
73
|
app.listen(3000);
|
|
62
74
|
```
|
|
63
75
|
|
|
76
|
+
### Fastify
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import Fastify from 'fastify';
|
|
80
|
+
import { memorize } from 'express-memorize';
|
|
81
|
+
import { createFastifyPlugin } from 'express-memorize/fastify';
|
|
82
|
+
|
|
83
|
+
const app = Fastify();
|
|
84
|
+
const cache = memorize({ ttl: 30_000 });
|
|
85
|
+
|
|
86
|
+
await app.register(createFastifyPlugin(cache));
|
|
87
|
+
|
|
88
|
+
app.get('/users', async () => {
|
|
89
|
+
return usersService.findAll();
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Koa
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import Koa from 'koa';
|
|
97
|
+
import Router from '@koa/router';
|
|
98
|
+
import { memorize } from 'express-memorize';
|
|
99
|
+
import { createKoaMiddleware } from 'express-memorize/koa';
|
|
100
|
+
|
|
101
|
+
const app = new Koa();
|
|
102
|
+
const router = new Router();
|
|
103
|
+
const cache = memorize({ ttl: 30_000 });
|
|
104
|
+
|
|
105
|
+
router.get('/users', createKoaMiddleware(cache), async (ctx) => {
|
|
106
|
+
ctx.body = await usersService.findAll();
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
app.use(router.routes());
|
|
110
|
+
app.use(router.allowedMethods());
|
|
111
|
+
```
|
|
112
|
+
|
|
64
113
|
### Hono
|
|
65
114
|
|
|
66
115
|
```typescript
|
|
@@ -137,6 +186,49 @@ cache.set('config', appConfig);
|
|
|
137
186
|
const config = cache.getValue<AppConfig>('config');
|
|
138
187
|
```
|
|
139
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
|
+
|
|
140
232
|
---
|
|
141
233
|
|
|
142
234
|
## Usage
|
|
@@ -166,6 +258,65 @@ app.get('/live-feed', cache({ noCache: true }), handler);
|
|
|
166
258
|
// Sets X-Cache: BYPASS, never reads or writes the cache
|
|
167
259
|
```
|
|
168
260
|
|
|
261
|
+
### Fastify route-level usage
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
import { createFastifyPreHandler } from 'express-memorize/fastify';
|
|
265
|
+
|
|
266
|
+
app.get(
|
|
267
|
+
'/users',
|
|
268
|
+
{
|
|
269
|
+
preHandler: createFastifyPreHandler(cache, { ttl: 10_000 }),
|
|
270
|
+
},
|
|
271
|
+
async () => usersService.findAll(),
|
|
272
|
+
);
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### GraphQL caching
|
|
276
|
+
|
|
277
|
+
GraphQL is not a simple route-level caching problem. A single `POST /graphql`
|
|
278
|
+
endpoint can execute different operations, use variables, depend on the current
|
|
279
|
+
viewer, and return partial data with errors. For now, the recommended strategy
|
|
280
|
+
is **service-level caching** with `remember()` inside resolvers or the services
|
|
281
|
+
they call.
|
|
282
|
+
|
|
283
|
+
```typescript
|
|
284
|
+
const cache = memorize({ ttl: 30_000 });
|
|
285
|
+
|
|
286
|
+
const resolvers = {
|
|
287
|
+
Query: {
|
|
288
|
+
user: (_parent, args, context) => {
|
|
289
|
+
const viewerScope = context.user ? `user:${context.user.id}` : 'anonymous';
|
|
290
|
+
return cache.remember(
|
|
291
|
+
`graphql:${viewerScope}:user:${args.id}`,
|
|
292
|
+
() => usersService.findVisibleById(args.id, context.user),
|
|
293
|
+
);
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
Mutation: {
|
|
297
|
+
updateUser: async (_parent, args) => {
|
|
298
|
+
const user = await usersService.update(args.id, args.input);
|
|
299
|
+
cache.deleteMatching(`graphql:*:user:${args.id}`);
|
|
300
|
+
return user;
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**GraphQL cache key rules:**
|
|
307
|
+
|
|
308
|
+
- Include every input that can change the result: operation name, normalized query or field name, variables, locale, feature flags, and any relevant authorization scope.
|
|
309
|
+
- Do not share cached data across users unless the resolver result is genuinely public.
|
|
310
|
+
- Keep mutation invalidation explicit with `delete()` or `deleteMatching()`; automatic invalidation is too schema-specific for a generic adapter.
|
|
311
|
+
- Avoid caching responses that contain GraphQL errors unless your application has a deliberate policy for partial data.
|
|
312
|
+
- Prefer resolver or service-level caching for expensive data fetches. Operation-level caching may be considered later for public, query-only workloads with strict keying rules.
|
|
313
|
+
|
|
314
|
+
There is currently no dedicated GraphQL adapter. If one is added later, the
|
|
315
|
+
first practical target should be **Apollo Server**, because its plugin lifecycle
|
|
316
|
+
can cache complete operation responses without coupling the core package entry
|
|
317
|
+
point to GraphQL. NestJS GraphQL, Mercurius, and Yoga integrations should stay
|
|
318
|
+
separate implementation issues unless a shared GraphQL abstraction emerges.
|
|
319
|
+
|
|
169
320
|
### NestJS decorators
|
|
170
321
|
|
|
171
322
|
Use `MemorizeInterceptor` on a controller or globally, then configure caching at the controller or method level.
|
|
@@ -296,6 +447,7 @@ Creates a cache instance. Returns a `Memorize` object.
|
|
|
296
447
|
|--------|------|---------|-------------|
|
|
297
448
|
| `ttl` | `number` | `60_000` | Time-to-live in milliseconds. Pass `Infinity` for no expiry. |
|
|
298
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. |
|
|
299
451
|
|
|
300
452
|
### `cache(options?)` / `cache.express(options?)`
|
|
301
453
|
|
|
@@ -333,6 +485,8 @@ Returns an Express `RequestHandler`. `cache()` is a backwards-compatible alias f
|
|
|
333
485
|
|-------------|--------|-----------|
|
|
334
486
|
| `express-memorize` | `memorize` | Core factory |
|
|
335
487
|
| `express-memorize/express` | `createExpressAdapter(cache, options?)` | Express |
|
|
488
|
+
| `express-memorize/fastify` | `createFastifyPlugin(cache, options?)`, `createFastifyPreHandler(cache, options?)` | Fastify |
|
|
489
|
+
| `express-memorize/koa` | `createKoaMiddleware(cache, options?)` | Koa |
|
|
336
490
|
| `express-memorize/nestjs` | `MemorizeModule`, `MemorizeInterceptor`, decorators | NestJS |
|
|
337
491
|
| `express-memorize/hono` | `createHonoMiddleware(cache, options?)` | Hono |
|
|
338
492
|
| `express-memorize/fetch` | `cacheFetchHandler(cache, handler, options?)` | Fetch API / Serverless |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FastifyPluginCallback, FastifyRequest, preHandlerHookHandler } from 'fastify';
|
|
2
|
+
import type { Memorize } from '../domain/Memorize';
|
|
3
|
+
export interface FastifyAdapterOptions {
|
|
4
|
+
/** Time-to-live in milliseconds. Defaults to the global TTL. */
|
|
5
|
+
ttl?: number;
|
|
6
|
+
/** Skip caching for this route. Sets `X-Cache: BYPASS`. */
|
|
7
|
+
noCache?: boolean;
|
|
8
|
+
/** Custom cache key extractor. Defaults to `request.url`. */
|
|
9
|
+
key?: (request: FastifyRequest) => string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a Fastify plugin that caches `GET` route responses with a `2xx`
|
|
13
|
+
* status code.
|
|
14
|
+
*
|
|
15
|
+
* Requires `fastify` to be installed as an optional peer dependency.
|
|
16
|
+
*
|
|
17
|
+
* @param cache - The {@link Memorize} instance to use as the backing store.
|
|
18
|
+
* @param options - Optional plugin-level options.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import Fastify from 'fastify';
|
|
23
|
+
* import { memorize } from 'express-memorize';
|
|
24
|
+
* import { createFastifyPlugin } from 'express-memorize/fastify';
|
|
25
|
+
*
|
|
26
|
+
* const app = Fastify();
|
|
27
|
+
* const cache = memorize({ ttl: 30_000 });
|
|
28
|
+
*
|
|
29
|
+
* await app.register(createFastifyPlugin(cache));
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function createFastifyPlugin(cache: Memorize, options?: FastifyAdapterOptions): FastifyPluginCallback;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a route-level Fastify `preHandler` that caches `GET` responses.
|
|
35
|
+
*
|
|
36
|
+
* Use this when only selected routes should be cached, or when a route needs a
|
|
37
|
+
* TTL, `noCache`, or key override.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createFastifyPreHandler(cache: Memorize, options?: FastifyAdapterOptions): preHandlerHookHandler;
|
|
40
|
+
//# sourceMappingURL=fastify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,MAAM,CAAC;CAC3C;AAmBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB,CAavB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB,CAkDvB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFastifyPlugin = createFastifyPlugin;
|
|
4
|
+
exports.createFastifyPreHandler = createFastifyPreHandler;
|
|
5
|
+
function serializePayload(payload) {
|
|
6
|
+
if (typeof payload === 'string' ||
|
|
7
|
+
Buffer.isBuffer(payload) ||
|
|
8
|
+
payload instanceof ArrayBuffer ||
|
|
9
|
+
ArrayBuffer.isView(payload)) {
|
|
10
|
+
return { body: payload };
|
|
11
|
+
}
|
|
12
|
+
if (payload === undefined) {
|
|
13
|
+
return { body: '' };
|
|
14
|
+
}
|
|
15
|
+
return { body: JSON.stringify(payload), contentType: 'application/json; charset=utf-8' };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates a Fastify plugin that caches `GET` route responses with a `2xx`
|
|
19
|
+
* status code.
|
|
20
|
+
*
|
|
21
|
+
* Requires `fastify` to be installed as an optional peer dependency.
|
|
22
|
+
*
|
|
23
|
+
* @param cache - The {@link Memorize} instance to use as the backing store.
|
|
24
|
+
* @param options - Optional plugin-level options.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import Fastify from 'fastify';
|
|
29
|
+
* import { memorize } from 'express-memorize';
|
|
30
|
+
* import { createFastifyPlugin } from 'express-memorize/fastify';
|
|
31
|
+
*
|
|
32
|
+
* const app = Fastify();
|
|
33
|
+
* const cache = memorize({ ttl: 30_000 });
|
|
34
|
+
*
|
|
35
|
+
* await app.register(createFastifyPlugin(cache));
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function createFastifyPlugin(cache, options) {
|
|
39
|
+
const plugin = function memorizeFastifyPlugin(fastify, _pluginOptions, done) {
|
|
40
|
+
fastify.addHook('preHandler', createFastifyPreHandler(cache, options));
|
|
41
|
+
done();
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperties(plugin, {
|
|
44
|
+
[Symbol.for('skip-override')]: { value: true },
|
|
45
|
+
[Symbol.for('fastify.display-name')]: { value: 'express-memorize-fastify' },
|
|
46
|
+
[Symbol.for('plugin-meta')]: { value: { name: 'express-memorize-fastify' } },
|
|
47
|
+
});
|
|
48
|
+
return plugin;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a route-level Fastify `preHandler` that caches `GET` responses.
|
|
52
|
+
*
|
|
53
|
+
* Use this when only selected routes should be cached, or when a route needs a
|
|
54
|
+
* TTL, `noCache`, or key override.
|
|
55
|
+
*/
|
|
56
|
+
function createFastifyPreHandler(cache, options) {
|
|
57
|
+
return function memorizeFastifyPreHandler(request, reply, done) {
|
|
58
|
+
if (request.method !== 'GET') {
|
|
59
|
+
done();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (options === null || options === void 0 ? void 0 : options.noCache) {
|
|
63
|
+
reply.header('X-Cache', 'BYPASS');
|
|
64
|
+
done();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const key = (options === null || options === void 0 ? void 0 : options.key) ? options.key(request) : request.url;
|
|
68
|
+
const cached = cache._store.getRaw(key);
|
|
69
|
+
if (cached) {
|
|
70
|
+
reply
|
|
71
|
+
.header('X-Cache', 'HIT')
|
|
72
|
+
.type(cached.contentType)
|
|
73
|
+
.code(cached.statusCode)
|
|
74
|
+
.send(cached.body);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const originalSend = reply.send.bind(reply);
|
|
78
|
+
reply.send = function sendWithCache(payload) {
|
|
79
|
+
var _a, _b, _c, _d;
|
|
80
|
+
const statusCode = reply.statusCode;
|
|
81
|
+
if (statusCode >= 200 && statusCode < 300) {
|
|
82
|
+
const ttl = (_a = options === null || options === void 0 ? void 0 : options.ttl) !== null && _a !== void 0 ? _a : cache._ttl;
|
|
83
|
+
const serialized = serializePayload(payload);
|
|
84
|
+
const contentType = (_d = (_c = (_b = reply.getHeader('content-type')) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : serialized.contentType) !== null && _d !== void 0 ? _d : 'application/octet-stream';
|
|
85
|
+
cache._store.set(key, { body: serialized.body, statusCode, contentType }, ttl);
|
|
86
|
+
}
|
|
87
|
+
reply.header('X-Cache', 'MISS');
|
|
88
|
+
return originalSend(payload);
|
|
89
|
+
};
|
|
90
|
+
done();
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=fastify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/adapters/fastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Context, Middleware } from 'koa';
|
|
2
|
+
import type { Memorize } from '../domain/Memorize';
|
|
3
|
+
export interface KoaAdapterOptions {
|
|
4
|
+
/** Time-to-live in milliseconds. Defaults to the global TTL. */
|
|
5
|
+
ttl?: number;
|
|
6
|
+
/** Skip caching for this route. Sets `X-Cache: BYPASS`. */
|
|
7
|
+
noCache?: boolean;
|
|
8
|
+
/** Custom cache key extractor. Defaults to `ctx.originalUrl ?? ctx.url`. */
|
|
9
|
+
key?: (ctx: Context) => string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates Koa middleware that caches `GET` responses with a `2xx` status code.
|
|
13
|
+
*
|
|
14
|
+
* Requires `koa` to be installed as an optional peer dependency.
|
|
15
|
+
*
|
|
16
|
+
* @param cache - The {@link Memorize} instance to use as the backing store.
|
|
17
|
+
* @param options - Optional per-route options.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import Koa from 'koa';
|
|
22
|
+
* import Router from '@koa/router';
|
|
23
|
+
* import { memorize } from 'express-memorize';
|
|
24
|
+
* import { createKoaMiddleware } from 'express-memorize/koa';
|
|
25
|
+
*
|
|
26
|
+
* const app = new Koa();
|
|
27
|
+
* const router = new Router();
|
|
28
|
+
* const cache = memorize({ ttl: 30_000 });
|
|
29
|
+
*
|
|
30
|
+
* router.get('/users', createKoaMiddleware(cache), async (ctx) => {
|
|
31
|
+
* ctx.body = await usersService.findAll();
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function createKoaMiddleware(cache: Memorize, options?: KoaAdapterOptions): Middleware;
|
|
36
|
+
//# sourceMappingURL=koa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../src/adapters/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CAChC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,CAoCZ"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createKoaMiddleware = createKoaMiddleware;
|
|
4
|
+
function defaultKey(ctx) {
|
|
5
|
+
var _a;
|
|
6
|
+
return (_a = ctx.originalUrl) !== null && _a !== void 0 ? _a : ctx.url;
|
|
7
|
+
}
|
|
8
|
+
function inferContentType(body) {
|
|
9
|
+
if (Buffer.isBuffer(body) || body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {
|
|
10
|
+
return 'application/octet-stream';
|
|
11
|
+
}
|
|
12
|
+
if (typeof body === 'string') {
|
|
13
|
+
return 'text/plain';
|
|
14
|
+
}
|
|
15
|
+
if (body === undefined || body === null) {
|
|
16
|
+
return 'application/octet-stream';
|
|
17
|
+
}
|
|
18
|
+
return 'application/json';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates Koa middleware that caches `GET` responses with a `2xx` status code.
|
|
22
|
+
*
|
|
23
|
+
* Requires `koa` to be installed as an optional peer dependency.
|
|
24
|
+
*
|
|
25
|
+
* @param cache - The {@link Memorize} instance to use as the backing store.
|
|
26
|
+
* @param options - Optional per-route options.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import Koa from 'koa';
|
|
31
|
+
* import Router from '@koa/router';
|
|
32
|
+
* import { memorize } from 'express-memorize';
|
|
33
|
+
* import { createKoaMiddleware } from 'express-memorize/koa';
|
|
34
|
+
*
|
|
35
|
+
* const app = new Koa();
|
|
36
|
+
* const router = new Router();
|
|
37
|
+
* const cache = memorize({ ttl: 30_000 });
|
|
38
|
+
*
|
|
39
|
+
* router.get('/users', createKoaMiddleware(cache), async (ctx) => {
|
|
40
|
+
* ctx.body = await usersService.findAll();
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function createKoaMiddleware(cache, options) {
|
|
45
|
+
return async function memorizeKoaMiddleware(ctx, next) {
|
|
46
|
+
var _a;
|
|
47
|
+
if (ctx.method !== 'GET') {
|
|
48
|
+
await next();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (options === null || options === void 0 ? void 0 : options.noCache) {
|
|
52
|
+
ctx.set('X-Cache', 'BYPASS');
|
|
53
|
+
await next();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const key = (options === null || options === void 0 ? void 0 : options.key) ? options.key(ctx) : defaultKey(ctx);
|
|
57
|
+
const cached = cache._store.getRaw(key);
|
|
58
|
+
if (cached) {
|
|
59
|
+
ctx.set('X-Cache', 'HIT');
|
|
60
|
+
ctx.status = cached.statusCode;
|
|
61
|
+
ctx.type = cached.contentType;
|
|
62
|
+
ctx.body = cached.body;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
await next();
|
|
66
|
+
if (ctx.status >= 200 && ctx.status < 300) {
|
|
67
|
+
const contentType = ctx.response.type || inferContentType(ctx.body);
|
|
68
|
+
cache._store.set(key, { body: ctx.body, statusCode: ctx.status, contentType }, (_a = options === null || options === void 0 ? void 0 : options.ttl) !== null && _a !== void 0 ? _a : cache._ttl);
|
|
69
|
+
ctx.set('X-Cache', 'MISS');
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=koa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa.js","sourceRoot":"","sources":["../../src/adapters/koa.ts"],"names":[],"mappings":";;AAwDA,kDAuCC;AAnFD,SAAS,UAAU,CAAC,GAAY;;IAC9B,OAAO,MAAA,GAAG,CAAC,WAAW,mCAAI,GAAG,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,mBAAmB,CACjC,KAAe,EACf,OAA2B;IAE3B,OAAO,KAAK,UAAU,qBAAqB,CAAC,GAAY,EAAE,IAAI;;QAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7B,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;YAC/B,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;YAC9B,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,EAAE,CAAC;QAEb,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,KAAK,CAAC,MAAM,CAAC,GAAG,CACd,GAAG,EACH,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EACvD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,mCAAI,KAAK,CAAC,IAAI,CAC3B,CAAC;YACF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
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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"}
|
|
@@ -239,5 +239,11 @@ export interface Memorize {
|
|
|
239
239
|
* @internal
|
|
240
240
|
*/
|
|
241
241
|
_store: MemorizeStore;
|
|
242
|
+
/**
|
|
243
|
+
* Global TTL configured through `memorize({ ttl })`. Intended for use by
|
|
244
|
+
* framework adapters only.
|
|
245
|
+
* @internal
|
|
246
|
+
*/
|
|
247
|
+
_ttl?: number;
|
|
242
248
|
}
|
|
243
249
|
//# sourceMappingURL=Memorize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Memorize.d.ts","sourceRoot":"","sources":["../../src/domain/Memorize.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Memorize.d.ts","sourceRoot":"","sources":["../../src/domain/Memorize.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;
|
|
@@ -93,6 +97,7 @@ function memorize(options = {}) {
|
|
|
93
97
|
cache.byteSize = () => store.byteSize();
|
|
94
98
|
cache.getStats = () => store.getStats();
|
|
95
99
|
cache._store = store;
|
|
100
|
+
cache._ttl = ttl;
|
|
96
101
|
return cache;
|
|
97
102
|
}
|
|
98
103
|
//# sourceMappingURL=memorize.js.map
|
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",
|
|
@@ -18,6 +18,14 @@
|
|
|
18
18
|
"types": "./dist/adapters/hono.d.ts",
|
|
19
19
|
"default": "./dist/adapters/hono.js"
|
|
20
20
|
},
|
|
21
|
+
"./fastify": {
|
|
22
|
+
"types": "./dist/adapters/fastify.d.ts",
|
|
23
|
+
"default": "./dist/adapters/fastify.js"
|
|
24
|
+
},
|
|
25
|
+
"./koa": {
|
|
26
|
+
"types": "./dist/adapters/koa.d.ts",
|
|
27
|
+
"default": "./dist/adapters/koa.js"
|
|
28
|
+
},
|
|
21
29
|
"./nestjs": {
|
|
22
30
|
"types": "./dist/adapters/nestjs.d.ts",
|
|
23
31
|
"default": "./dist/adapters/nestjs.js"
|
|
@@ -45,6 +53,7 @@
|
|
|
45
53
|
"test": "jest",
|
|
46
54
|
"test:watch": "jest --watch",
|
|
47
55
|
"prepublishOnly": "npm test && npm run build",
|
|
56
|
+
"bench": "tsx bench/index.ts",
|
|
48
57
|
"docs": "typedoc",
|
|
49
58
|
"docs:watch": "typedoc --watch"
|
|
50
59
|
},
|
|
@@ -60,35 +69,53 @@
|
|
|
60
69
|
],
|
|
61
70
|
"license": "MIT",
|
|
62
71
|
"peerDependencies": {
|
|
72
|
+
"@koa/router": ">=10.0.0",
|
|
63
73
|
"@nestjs/common": ">=9.0.0",
|
|
64
74
|
"@nestjs/core": ">=9.0.0",
|
|
65
75
|
"express": ">=4.0.0",
|
|
76
|
+
"fastify": ">=4.0.0",
|
|
66
77
|
"hono": ">=4.0.0",
|
|
78
|
+
"koa": ">=2.0.0",
|
|
67
79
|
"rxjs": ">=7.0.0"
|
|
68
80
|
},
|
|
69
81
|
"peerDependenciesMeta": {
|
|
82
|
+
"@koa/router": {
|
|
83
|
+
"optional": true
|
|
84
|
+
},
|
|
70
85
|
"@nestjs/common": {
|
|
71
86
|
"optional": true
|
|
72
87
|
},
|
|
73
88
|
"@nestjs/core": {
|
|
74
89
|
"optional": true
|
|
75
90
|
},
|
|
91
|
+
"fastify": {
|
|
92
|
+
"optional": true
|
|
93
|
+
},
|
|
76
94
|
"hono": {
|
|
77
95
|
"optional": true
|
|
78
96
|
},
|
|
97
|
+
"koa": {
|
|
98
|
+
"optional": true
|
|
99
|
+
},
|
|
79
100
|
"rxjs": {
|
|
80
101
|
"optional": true
|
|
81
102
|
}
|
|
82
103
|
},
|
|
83
104
|
"devDependencies": {
|
|
105
|
+
"@koa/router": "^15.5.0",
|
|
84
106
|
"@semantic-release/changelog": "^6.0.3",
|
|
85
107
|
"@types/express": "^4.17.21",
|
|
86
108
|
"@types/jest": "^29.0.0",
|
|
109
|
+
"@types/koa": "^3.0.2",
|
|
87
110
|
"@types/node": "^20.0.0",
|
|
111
|
+
"fastify": "^5.6.2",
|
|
88
112
|
"hono": "^4.12.16",
|
|
89
113
|
"jest": "^29.0.0",
|
|
114
|
+
"koa": "^3.2.0",
|
|
90
115
|
"semantic-release": "^24.2.9",
|
|
116
|
+
"tinybench": "^6.0.2",
|
|
91
117
|
"ts-jest": "^29.0.0",
|
|
118
|
+
"tsx": "^4.22.1",
|
|
92
119
|
"typedoc": "^0.28.18",
|
|
93
120
|
"typedoc-material-theme": "^1.4.1",
|
|
94
121
|
"typescript": "^5.0.0"
|