@cqrs-ddd/pipeline-cache 0.5.2 → 0.6.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/cache.behavior.d.ts +4 -20
- package/dist/cache.behavior.d.ts.map +1 -1
- package/dist/cache.behavior.js +20 -51
- package/dist/cache.behavior.js.map +1 -1
- package/dist/helpers/cache-key.d.ts.map +1 -1
- package/dist/helpers/cache-key.js +5 -4
- package/dist/helpers/cache-key.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/cache.behavior.d.ts
CHANGED
|
@@ -3,31 +3,15 @@ import type { Cache } from 'cache-manager';
|
|
|
3
3
|
import { type IPipelineCache } from './adapters/cache-manager.adapter.js';
|
|
4
4
|
import type { CacheBehaviorOptions } from './interfaces/cache-options.interface.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* The `context.items` entry recording whether the request was served from cache (`true` on hit).
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* const isHit = context.items.get(CACHE_HIT_ITEM) === true;
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
export declare const CACHE_HIT_ITEM: unique symbol;
|
|
14
|
-
/**
|
|
15
|
-
* Typed token for {@link CACHE_HIT_ITEM}: the cache hit flag. Reads and writes the same
|
|
16
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
8
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
17
9
|
*/
|
|
18
10
|
export declare const CACHE_HIT_ITEM_TOKEN: PipelineItemToken<boolean>;
|
|
19
11
|
/**
|
|
20
|
-
*
|
|
12
|
+
* The `context.items` entry recording the resolved cache key string.
|
|
21
13
|
*
|
|
22
|
-
*
|
|
23
|
-
* ```ts
|
|
24
|
-
* const key = context.items.get(CACHE_KEY_ITEM) as string | undefined;
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare const CACHE_KEY_ITEM: unique symbol;
|
|
28
|
-
/**
|
|
29
|
-
* Typed token for {@link CACHE_KEY_ITEM}: the resolved cache key. Reads and writes the same
|
|
30
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
14
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
31
15
|
*/
|
|
32
16
|
export declare const CACHE_KEY_ITEM_TOKEN: PipelineItemToken<string>;
|
|
33
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.behavior.d.ts","sourceRoot":"","sources":["../src/cache.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"cache.behavior.d.ts","sourceRoot":"","sources":["../src/cache.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,OAAO,CACb,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,MAAM,CACb,CAAC;AAyB/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,aACX,YACE,iBAAiB,EACjB,gCAAgC,CAAC,oBAAoB,CAAC;IAExD,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EAAE,yBAAyB,CA2BrE;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,YACE,KAAK,EAAE,KAAK,GAAG,cAAc,EAC7B,QAAQ,CAAC,EAAE,oBAAoB,EAC/B,MAAM,CAAC,EAAE,cAAc,EAcxB;IAEK,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CA0BlB;IAED,4FAA4F;YAC9E,IAAI;IAYlB,sEAAsE;YACxD,KAAK;IA0BnB,oEAAoE;IACpE,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,QAAQ;IAQhB,uEAAuE;IACvE,uBAAuB,CACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,oBAAoB,CAGtB;CACF"}
|
package/dist/cache.behavior.js
CHANGED
|
@@ -1,34 +1,18 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
|
-
import { createPipelineItem, PIPELINE_BEHAVIOR_CONTRACT, setPipelineItem, } from '@cqrs-ddd/pipeline';
|
|
2
|
+
import { behaviorDiagnostic, createPipelineItem, PIPELINE_BEHAVIOR_CONTRACT, setPipelineItem, } from '@cqrs-ddd/pipeline';
|
|
3
3
|
import { CacheManagerAdapter, } from './adapters/cache-manager.adapter.js';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* The `context.items` entry recording whether the request was served from cache (`true` on hit).
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* ```ts
|
|
9
|
-
* const isHit = context.items.get(CACHE_HIT_ITEM) === true;
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
export const CACHE_HIT_ITEM = Symbol('CACHE_HIT_ITEM');
|
|
13
|
-
/**
|
|
14
|
-
* Typed token for {@link CACHE_HIT_ITEM}: the cache hit flag. Reads and writes the same
|
|
15
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
7
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
16
8
|
*/
|
|
17
|
-
export const CACHE_HIT_ITEM_TOKEN = createPipelineItem('CACHE_HIT_ITEM'
|
|
9
|
+
export const CACHE_HIT_ITEM_TOKEN = createPipelineItem('CACHE_HIT_ITEM');
|
|
18
10
|
/**
|
|
19
|
-
*
|
|
11
|
+
* The `context.items` entry recording the resolved cache key string.
|
|
20
12
|
*
|
|
21
|
-
*
|
|
22
|
-
* ```ts
|
|
23
|
-
* const key = context.items.get(CACHE_KEY_ITEM) as string | undefined;
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export const CACHE_KEY_ITEM = Symbol('CACHE_KEY_ITEM');
|
|
27
|
-
/**
|
|
28
|
-
* Typed token for {@link CACHE_KEY_ITEM}: the resolved cache key. Reads and writes the same
|
|
29
|
-
* `context.items` entry through `getPipelineItem` / `requirePipelineItem`.
|
|
13
|
+
* Read it with `getPipelineItem` or `requirePipelineItem`.
|
|
30
14
|
*/
|
|
31
|
-
export const CACHE_KEY_ITEM_TOKEN = createPipelineItem('CACHE_KEY_ITEM'
|
|
15
|
+
export const CACHE_KEY_ITEM_TOKEN = createPipelineItem('CACHE_KEY_ITEM');
|
|
32
16
|
const DEFAULT_KINDS = ['query'];
|
|
33
17
|
/** Whether this request kind is configured for caching. */
|
|
34
18
|
function inScope(options, requestKind) {
|
|
@@ -73,40 +57,25 @@ function inScope(options, requestKind) {
|
|
|
73
57
|
*/
|
|
74
58
|
export class CacheBehavior {
|
|
75
59
|
static [PIPELINE_BEHAVIOR_CONTRACT] = {
|
|
76
|
-
order: (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
after: ['@cqrs-ddd/pipeline-casl:CaslBehavior', 'CaslBehavior'],
|
|
83
|
-
};
|
|
84
|
-
},
|
|
60
|
+
order: ({ effectiveOptions, requestKind }) => inScope(effectiveOptions, requestKind)
|
|
61
|
+
? { after: ['@cqrs-ddd/pipeline-casl:CaslBehavior', 'CaslBehavior'] }
|
|
62
|
+
: undefined,
|
|
85
63
|
validate: (context) => {
|
|
86
64
|
const options = context.effectiveOptions;
|
|
87
|
-
if (!inScope(options, context.requestKind))
|
|
65
|
+
if (!inScope(options, context.requestKind))
|
|
88
66
|
return undefined;
|
|
89
|
-
}
|
|
90
67
|
if (!options?.key) {
|
|
91
|
-
return
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
fix: 'Provide a key factory via createPartitionedCacheKeyFactory(...) in ' +
|
|
97
|
-
'the cache({ key }) entry or the CacheBehavior constructor defaults.',
|
|
98
|
-
},
|
|
99
|
-
];
|
|
68
|
+
return behaviorDiagnostic(context, CacheBehavior.name, {
|
|
69
|
+
message: 'Active CacheBehavior requires an explicit `key` factory',
|
|
70
|
+
fix: 'Provide a key factory via createPartitionedCacheKeyFactory(...) in ' +
|
|
71
|
+
'the cache({ key }) entry or the CacheBehavior constructor defaults.',
|
|
72
|
+
});
|
|
100
73
|
}
|
|
101
74
|
if (typeof options.key !== 'function') {
|
|
102
|
-
return
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
message: `CacheBehavior key factory must be a callable function, received ${typeof options.key}`,
|
|
107
|
-
fix: 'Pass a valid function (ctx) => string as the key option of the cache({ key }) entry.',
|
|
108
|
-
},
|
|
109
|
-
];
|
|
75
|
+
return behaviorDiagnostic(context, CacheBehavior.name, {
|
|
76
|
+
message: `CacheBehavior key factory must be a callable function, received ${typeof options.key}`,
|
|
77
|
+
fix: 'Pass a valid function (ctx) => string as the key option of the cache({ key }) entry.',
|
|
78
|
+
});
|
|
110
79
|
}
|
|
111
80
|
return undefined;
|
|
112
81
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.behavior.js","sourceRoot":"","sources":["../src/cache.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,kBAAkB,EAMlB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"cache.behavior.js","sourceRoot":"","sources":["../src/cache.behavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-key.d.ts","sourceRoot":"","sources":["../../src/helpers/cache-key.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"cache-key.d.ts","sourceRoot":"","sources":["../../src/helpers/cache-key.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAE5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAKhF,4DAA4D;AAC5D,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAC;IAE7D;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAC;IAE1D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,GAClC,eAAe,CA2BjB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
|
-
import { tenantSegments, } from '@cqrs-ddd/pipeline';
|
|
3
|
+
import { principalSegments, tenantSegments, } from '@cqrs-ddd/pipeline';
|
|
4
4
|
import { joinKeySegments, stableStringify } from '@cqrs-ddd/safe-stringify';
|
|
5
5
|
import { MissingCachePartitionError } from '../errors/missing-partition.error.js';
|
|
6
6
|
/** Key format version. Bump to make a format change produce a cold cache. */
|
|
@@ -67,17 +67,18 @@ export function createPartitionedCacheKeyFactory(options) {
|
|
|
67
67
|
'cache',
|
|
68
68
|
KEY_VERSION,
|
|
69
69
|
...tenant,
|
|
70
|
-
principal
|
|
70
|
+
principal,
|
|
71
71
|
scope,
|
|
72
72
|
context.requestName,
|
|
73
73
|
digestRequest(context.request),
|
|
74
74
|
]);
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
/** The trimmed principal; `
|
|
77
|
+
/** The trimmed principal; `undefined` when it is absent and not required. */
|
|
78
78
|
function principalOf(context, options, requirePrincipal) {
|
|
79
79
|
const resolved = options.principal(context);
|
|
80
|
-
const principal = typeof resolved === 'string' ? resolved
|
|
80
|
+
const [principal] = principalSegments(typeof resolved === 'string' ? resolved : undefined) ??
|
|
81
|
+
[];
|
|
81
82
|
if (requirePrincipal && !principal) {
|
|
82
83
|
throw new MissingCachePartitionError(context.requestName, 'principal', 'A cache hit skips the handler and therefore its entity-level ' +
|
|
83
84
|
'authorization. Return the authenticated principal, or pass ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../src/helpers/cache-key.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../src/helpers/cache-key.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CacheManagerAdapter, type IPipelineCache, } from './adapters/cache-manager.adapter.js';
|
|
2
|
-
export {
|
|
2
|
+
export { CACHE_HIT_ITEM_TOKEN, CACHE_KEY_ITEM_TOKEN, CacheBehavior, } from './cache.behavior.js';
|
|
3
3
|
export { type CachePartitionDimension, MissingCachePartitionError, } from './errors/missing-partition.error.js';
|
|
4
4
|
export { buildCacheAttributes } from './helpers/build-attributes.js';
|
|
5
5
|
export { type CacheIntentOptions, cache, } from './helpers/cache.intent.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,uBAAuB,EAC5B,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,GACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,gCAAgC,EAChC,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,yCAAyC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
2
|
export { CacheManagerAdapter, } from './adapters/cache-manager.adapter.js';
|
|
3
|
-
export {
|
|
3
|
+
export { CACHE_HIT_ITEM_TOKEN, CACHE_KEY_ITEM_TOKEN, CacheBehavior, } from './cache.behavior.js';
|
|
4
4
|
export { MissingCachePartitionError, } from './errors/missing-partition.error.js';
|
|
5
5
|
export { buildCacheAttributes } from './helpers/build-attributes.js';
|
|
6
6
|
export { cache, } from './helpers/cache.intent.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,mBAAmB,GAEpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,mBAAmB,GAEpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAEL,KAAK,GACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,gCAAgC,GAEjC,MAAM,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/pipeline-cache",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Result caching for @cqrs-ddd/pipeline on cache-manager and Keyv stores, with keys partitioned by tenant, principal and permission scope",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@cqrs-ddd/pipeline": "^0.
|
|
48
|
+
"@cqrs-ddd/pipeline": "^0.6.0",
|
|
49
49
|
"@keyv/memcache": "^2.0.0",
|
|
50
50
|
"@keyv/postgres": "^2.0.0",
|
|
51
51
|
"@keyv/redis": "^4.0.0 || ^5.0.0",
|
|
@@ -68,14 +68,14 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@cqrs-ddd/pipeline": "0.
|
|
71
|
+
"@cqrs-ddd/pipeline": "0.6.0",
|
|
72
72
|
"@vitest/coverage-v8": "^5.0.5",
|
|
73
73
|
"cache-manager": "^7.2.9",
|
|
74
74
|
"keyv": "^5.6.0",
|
|
75
75
|
"vitest": "^5.0.5"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@cqrs-ddd/safe-stringify": "^0.
|
|
78
|
+
"@cqrs-ddd/safe-stringify": "^0.6.0"
|
|
79
79
|
},
|
|
80
80
|
"scripts": {
|
|
81
81
|
"build": "tsc -p tsconfig.build.json",
|