@zudojs/cache 0.0.1
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/LICENSE +21 -0
- package/README.md +41 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cache.d.ts +62 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +135 -0
- package/dist/cache.js.map +1 -0
- package/dist/constants.d.ts +40 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +61 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +8 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/invalidation.d.ts +68 -0
- package/dist/invalidation.d.ts.map +1 -0
- package/dist/invalidation.js +103 -0
- package/dist/invalidation.js.map +1 -0
- package/dist/key-builder.d.ts +36 -0
- package/dist/key-builder.d.ts.map +1 -0
- package/dist/key-builder.js +66 -0
- package/dist/key-builder.js.map +1 -0
- package/dist/lock.d.ts +30 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +103 -0
- package/dist/lock.js.map +1 -0
- package/dist/memory.d.ts +37 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +140 -0
- package/dist/memory.js.map +1 -0
- package/dist/metrics.d.ts +41 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +96 -0
- package/dist/metrics.js.map +1 -0
- package/dist/serializer.d.ts +43 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/serializer.js +74 -0
- package/dist/serializer.js.map +1 -0
- package/dist/store.d.ts +42 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +180 -0
- package/dist/store.js.map +1 -0
- package/dist/tags.d.ts +37 -0
- package/dist/tags.d.ts.map +1 -0
- package/dist/tags.js +93 -0
- package/dist/tags.js.map +1 -0
- package/dist/types-adapter.d.ts +24 -0
- package/dist/types-adapter.d.ts.map +1 -0
- package/dist/types-adapter.js +2 -0
- package/dist/types-adapter.js.map +1 -0
- package/dist/types-config.d.ts +21 -0
- package/dist/types-config.d.ts.map +1 -0
- package/dist/types-config.js +2 -0
- package/dist/types-config.js.map +1 -0
- package/dist/types-events.d.ts +38 -0
- package/dist/types-events.d.ts.map +1 -0
- package/dist/types-events.js +2 -0
- package/dist/types-events.js.map +1 -0
- package/dist/types-health.d.ts +20 -0
- package/dist/types-health.d.ts.map +1 -0
- package/dist/types-health.js +2 -0
- package/dist/types-health.js.map +1 -0
- package/dist/types-keys.d.ts +15 -0
- package/dist/types-keys.d.ts.map +1 -0
- package/dist/types-keys.js +2 -0
- package/dist/types-keys.js.map +1 -0
- package/dist/types-lock.d.ts +22 -0
- package/dist/types-lock.d.ts.map +1 -0
- package/dist/types-lock.js +2 -0
- package/dist/types-lock.js.map +1 -0
- package/dist/types-metrics.d.ts +19 -0
- package/dist/types-metrics.d.ts.map +1 -0
- package/dist/types-metrics.js +2 -0
- package/dist/types-metrics.js.map +1 -0
- package/dist/types-operations.d.ts +39 -0
- package/dist/types-operations.d.ts.map +1 -0
- package/dist/types-operations.js +2 -0
- package/dist/types-operations.js.map +1 -0
- package/dist/types-results.d.ts +33 -0
- package/dist/types-results.d.ts.map +1 -0
- package/dist/types-results.js +2 -0
- package/dist/types-results.js.map +1 -0
- package/dist/types-tags.d.ts +13 -0
- package/dist/types-tags.d.ts.map +1 -0
- package/dist/types-tags.js +2 -0
- package/dist/types-tags.js.map +1 -0
- package/dist/types-utility.d.ts +31 -0
- package/dist/types-utility.d.ts.map +1 -0
- package/dist/types-utility.js +2 -0
- package/dist/types-utility.js.map +1 -0
- package/dist/types-values.d.ts +24 -0
- package/dist/types-values.d.ts.map +1 -0
- package/dist/types-values.js +2 -0
- package/dist/types-values.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
package/dist/cache.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Cache Service
|
|
3
|
+
* High-level cache service combining adapter, serializer, key builder, tags, invalidation, locking, and metrics.
|
|
4
|
+
*/
|
|
5
|
+
import { DEFAULT_TTL_MS } from "./constants.js";
|
|
6
|
+
import { DefaultKeyBuilder } from "./key-builder.js";
|
|
7
|
+
import { createCacheStore, DefaultCacheStore } from "./store.js";
|
|
8
|
+
import { createTagStore, InMemoryTagStore } from "./tags.js";
|
|
9
|
+
import { CacheInvalidationManager, createInvalidationManager, } from "./invalidation.js";
|
|
10
|
+
import { CacheLockManager, createLockManager } from "./lock.js";
|
|
11
|
+
import { createCacheMetrics, InMemoryCacheMetrics } from "./metrics.js";
|
|
12
|
+
export class CacheService {
|
|
13
|
+
store;
|
|
14
|
+
keyBuilder;
|
|
15
|
+
tagStore;
|
|
16
|
+
invalidation;
|
|
17
|
+
lockManager;
|
|
18
|
+
metrics;
|
|
19
|
+
defaultTtl;
|
|
20
|
+
enabled;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
this.enabled = options.config?.enabled ?? true;
|
|
23
|
+
this.defaultTtl = options.config?.defaultTtl ?? DEFAULT_TTL_MS;
|
|
24
|
+
this.metrics =
|
|
25
|
+
options.config?.collectStats !== false ? createCacheMetrics() : null;
|
|
26
|
+
this.store = createCacheStore({
|
|
27
|
+
adapter: options.adapter,
|
|
28
|
+
metrics: this.metrics,
|
|
29
|
+
});
|
|
30
|
+
this.keyBuilder =
|
|
31
|
+
options.keyBuilder ??
|
|
32
|
+
new DefaultKeyBuilder({
|
|
33
|
+
prefix: options.config?.prefix,
|
|
34
|
+
separator: options.config?.separator,
|
|
35
|
+
namespace: options.config?.namespace,
|
|
36
|
+
});
|
|
37
|
+
this.tagStore = createTagStore();
|
|
38
|
+
this.invalidation = createInvalidationManager({
|
|
39
|
+
adapter: options.adapter,
|
|
40
|
+
tagStore: this.tagStore,
|
|
41
|
+
});
|
|
42
|
+
this.lockManager = createLockManager();
|
|
43
|
+
}
|
|
44
|
+
async get(key, options) {
|
|
45
|
+
if (!this.enabled)
|
|
46
|
+
return { hit: false, value: null };
|
|
47
|
+
return this.store.get(this.keyBuilder.build(key, options));
|
|
48
|
+
}
|
|
49
|
+
async set(key, value, options) {
|
|
50
|
+
if (!this.enabled)
|
|
51
|
+
return { success: false, key, expiresAt: null };
|
|
52
|
+
const fullKey = this.keyBuilder.build(key, options);
|
|
53
|
+
const result = await this.store.set(fullKey, value, {
|
|
54
|
+
ttl: options?.ttl ?? this.defaultTtl,
|
|
55
|
+
...options,
|
|
56
|
+
});
|
|
57
|
+
if (options?.tags && options.tags.length > 0)
|
|
58
|
+
await this.tagStore.add(fullKey, options.tags);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
async delete(key, options) {
|
|
62
|
+
if (!this.enabled)
|
|
63
|
+
return { deleted: false, key };
|
|
64
|
+
return this.store.delete(this.keyBuilder.build(key, options));
|
|
65
|
+
}
|
|
66
|
+
async has(key, options) {
|
|
67
|
+
if (!this.enabled)
|
|
68
|
+
return false;
|
|
69
|
+
return this.store.has(this.keyBuilder.build(key, options));
|
|
70
|
+
}
|
|
71
|
+
async clear(options) {
|
|
72
|
+
if (!this.enabled)
|
|
73
|
+
return { cleared: 0 };
|
|
74
|
+
return this.store.clear(options);
|
|
75
|
+
}
|
|
76
|
+
async getOrSet(key, fn, options) {
|
|
77
|
+
if (!this.enabled)
|
|
78
|
+
return { value: await fn(), cached: false };
|
|
79
|
+
if (!options?.forceRefresh) {
|
|
80
|
+
const cached = await this.get(key, options);
|
|
81
|
+
if (cached.hit)
|
|
82
|
+
return { value: cached.value, cached: true };
|
|
83
|
+
}
|
|
84
|
+
const value = await fn();
|
|
85
|
+
await this.set(key, value, options);
|
|
86
|
+
return { value, cached: false };
|
|
87
|
+
}
|
|
88
|
+
async invalidateByTag(tags) {
|
|
89
|
+
return this.invalidation.invalidateByTag(tags);
|
|
90
|
+
}
|
|
91
|
+
async invalidateByPattern(pattern) {
|
|
92
|
+
return this.invalidation.invalidateByPattern(pattern);
|
|
93
|
+
}
|
|
94
|
+
async withLock(key, fn, options) {
|
|
95
|
+
return this.lockManager.withLock(key, fn, {
|
|
96
|
+
ttl: options?.ttl,
|
|
97
|
+
retry: options?.retryAttempts
|
|
98
|
+
? { attempts: options.retryAttempts, delay: 100 }
|
|
99
|
+
: undefined,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
getStats() {
|
|
103
|
+
return this.metrics?.getStats() ?? null;
|
|
104
|
+
}
|
|
105
|
+
async healthCheck() {
|
|
106
|
+
const start = performance.now();
|
|
107
|
+
try {
|
|
108
|
+
await this.store.has("__health__");
|
|
109
|
+
return {
|
|
110
|
+
healthy: true,
|
|
111
|
+
adapter: this.store.name,
|
|
112
|
+
latencyMs: performance.now() - start,
|
|
113
|
+
checkedAt: new Date(),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return {
|
|
118
|
+
healthy: false,
|
|
119
|
+
adapter: this.store.name,
|
|
120
|
+
checkedAt: new Date(),
|
|
121
|
+
error: error instanceof Error ? error.message : String(error),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async connect() {
|
|
126
|
+
await this.store.connect?.();
|
|
127
|
+
}
|
|
128
|
+
async disconnect() {
|
|
129
|
+
await this.store.disconnect?.();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export function createCacheService(options) {
|
|
133
|
+
return new CacheService(options);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Constants
|
|
3
|
+
*
|
|
4
|
+
* Default values, limits, and magic numbers used across the cache package.
|
|
5
|
+
*/
|
|
6
|
+
/** Default time-to-live in milliseconds (5 minutes). */
|
|
7
|
+
export declare const DEFAULT_TTL_MS: number;
|
|
8
|
+
/** Maximum supported TTL (24 hours). */
|
|
9
|
+
export declare const MAX_TTL_MS: number;
|
|
10
|
+
/** Minimum TTL (1 second). */
|
|
11
|
+
export declare const MIN_TTL_MS = 1000;
|
|
12
|
+
/** Default namespace separator. */
|
|
13
|
+
export declare const DEFAULT_SEPARATOR = ":";
|
|
14
|
+
/** Default key prefix. */
|
|
15
|
+
export declare const DEFAULT_PREFIX = "zudojs";
|
|
16
|
+
/** Maximum key length in characters. */
|
|
17
|
+
export declare const MAX_KEY_LENGTH = 256;
|
|
18
|
+
/** Pattern used to validate cache keys. */
|
|
19
|
+
export declare const CACHE_KEY_PATTERN: RegExp;
|
|
20
|
+
/** Default lock TTL in milliseconds (30 seconds). */
|
|
21
|
+
export declare const DEFAULT_LOCK_TTL_MS = 30000;
|
|
22
|
+
/** Default number of retry attempts for lock acquisition. */
|
|
23
|
+
export declare const DEFAULT_LOCK_RETRY_ATTEMPTS = 3;
|
|
24
|
+
/** Default delay between lock retry attempts in milliseconds. */
|
|
25
|
+
export declare const DEFAULT_LOCK_RETRY_DELAY_MS = 100;
|
|
26
|
+
/** Maximum number of latency samples to keep per operation. */
|
|
27
|
+
export declare const MAX_LATENCY_SAMPLES = 1000;
|
|
28
|
+
/** Bucket boundaries for latency histograms (ms). */
|
|
29
|
+
export declare const LATENCY_BUCKETS: readonly [1, 5, 10, 25, 50, 100, 250, 500, 1000];
|
|
30
|
+
/** Default maximum number of entries for the in-memory adapter. */
|
|
31
|
+
export declare const DEFAULT_MAX_ENTRIES = 10000;
|
|
32
|
+
/** Default maximum memory budget in bytes (50 MB). */
|
|
33
|
+
export declare const DEFAULT_MAX_MEMORY_BYTES: number;
|
|
34
|
+
/** Maximum number of keys in a single batch operation. */
|
|
35
|
+
export declare const MAX_BATCH_SIZE = 100;
|
|
36
|
+
/** Glob pattern for matching all keys. */
|
|
37
|
+
export declare const MATCH_ALL_PATTERN = "*";
|
|
38
|
+
/** Regex pattern that matches valid namespace characters. */
|
|
39
|
+
export declare const NAMESPACE_PATTERN: RegExp;
|
|
40
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAgB,CAAC;AAE5C,wCAAwC;AACxC,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C,8BAA8B;AAC9B,eAAO,MAAM,UAAU,OAAQ,CAAC;AAMhC,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,0BAA0B;AAC1B,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,wCAAwC;AACxC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AAMvD,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAM/C,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAEzC,qDAAqD;AACrD,eAAO,MAAM,eAAe,YAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;AAMhF,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,QAAmB,CAAC;AAMzD,0DAA0D;AAC1D,eAAO,MAAM,cAAc,MAAM,CAAC;AAMlC,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,QAAuB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Constants
|
|
3
|
+
*
|
|
4
|
+
* Default values, limits, and magic numbers used across the cache package.
|
|
5
|
+
*/
|
|
6
|
+
/* -------------------------------------------------------------------------- */
|
|
7
|
+
/* Default TTL */
|
|
8
|
+
/* -------------------------------------------------------------------------- */
|
|
9
|
+
/** Default time-to-live in milliseconds (5 minutes). */
|
|
10
|
+
export const DEFAULT_TTL_MS = 5 * 60 * 1000;
|
|
11
|
+
/** Maximum supported TTL (24 hours). */
|
|
12
|
+
export const MAX_TTL_MS = 24 * 60 * 60 * 1000;
|
|
13
|
+
/** Minimum TTL (1 second). */
|
|
14
|
+
export const MIN_TTL_MS = 1_000;
|
|
15
|
+
/* -------------------------------------------------------------------------- */
|
|
16
|
+
/* Key Generation */
|
|
17
|
+
/* -------------------------------------------------------------------------- */
|
|
18
|
+
/** Default namespace separator. */
|
|
19
|
+
export const DEFAULT_SEPARATOR = ":";
|
|
20
|
+
/** Default key prefix. */
|
|
21
|
+
export const DEFAULT_PREFIX = "zudojs";
|
|
22
|
+
/** Maximum key length in characters. */
|
|
23
|
+
export const MAX_KEY_LENGTH = 256;
|
|
24
|
+
/** Pattern used to validate cache keys. */
|
|
25
|
+
export const CACHE_KEY_PATTERN = /^[a-zA-Z0-9._\-:]+$/;
|
|
26
|
+
/* -------------------------------------------------------------------------- */
|
|
27
|
+
/* Lock Defaults */
|
|
28
|
+
/* -------------------------------------------------------------------------- */
|
|
29
|
+
/** Default lock TTL in milliseconds (30 seconds). */
|
|
30
|
+
export const DEFAULT_LOCK_TTL_MS = 30_000;
|
|
31
|
+
/** Default number of retry attempts for lock acquisition. */
|
|
32
|
+
export const DEFAULT_LOCK_RETRY_ATTEMPTS = 3;
|
|
33
|
+
/** Default delay between lock retry attempts in milliseconds. */
|
|
34
|
+
export const DEFAULT_LOCK_RETRY_DELAY_MS = 100;
|
|
35
|
+
/* -------------------------------------------------------------------------- */
|
|
36
|
+
/* Metrics */
|
|
37
|
+
/* -------------------------------------------------------------------------- */
|
|
38
|
+
/** Maximum number of latency samples to keep per operation. */
|
|
39
|
+
export const MAX_LATENCY_SAMPLES = 1_000;
|
|
40
|
+
/** Bucket boundaries for latency histograms (ms). */
|
|
41
|
+
export const LATENCY_BUCKETS = [1, 5, 10, 25, 50, 100, 250, 500, 1000];
|
|
42
|
+
/* -------------------------------------------------------------------------- */
|
|
43
|
+
/* Memory Adapter */
|
|
44
|
+
/* -------------------------------------------------------------------------- */
|
|
45
|
+
/** Default maximum number of entries for the in-memory adapter. */
|
|
46
|
+
export const DEFAULT_MAX_ENTRIES = 10_000;
|
|
47
|
+
/** Default maximum memory budget in bytes (50 MB). */
|
|
48
|
+
export const DEFAULT_MAX_MEMORY_BYTES = 50 * 1024 * 1024;
|
|
49
|
+
/* -------------------------------------------------------------------------- */
|
|
50
|
+
/* Batch Operations */
|
|
51
|
+
/* -------------------------------------------------------------------------- */
|
|
52
|
+
/** Maximum number of keys in a single batch operation. */
|
|
53
|
+
export const MAX_BATCH_SIZE = 100;
|
|
54
|
+
/* -------------------------------------------------------------------------- */
|
|
55
|
+
/* Patterns */
|
|
56
|
+
/* -------------------------------------------------------------------------- */
|
|
57
|
+
/** Glob pattern for matching all keys. */
|
|
58
|
+
export const MATCH_ALL_PATTERN = "*";
|
|
59
|
+
/** Regex pattern that matches valid namespace characters. */
|
|
60
|
+
export const NAMESPACE_PATTERN = /^[a-zA-Z0-9._\-]+$/;
|
|
61
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C,wCAAwC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,8BAA8B;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,mCAAmC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;AAEhF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,sDAAsD;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Error Types
|
|
3
|
+
*
|
|
4
|
+
* All cache error types are defined in @zudojs/errors and re-exported here
|
|
5
|
+
* for convenience. No local error classes are created in this package.
|
|
6
|
+
*/
|
|
7
|
+
export { CacheError, isCacheError, cacheConnectionError, cacheTimeoutError, cacheSerializationError, cacheDeserializationError, cacheInvalidKeyError, cacheAdapterNotConfiguredError, CacheOperation, } from "@zudojs/errors";
|
|
8
|
+
export type { CacheErrorOptions } from "@zudojs/errors";
|
|
9
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Error Types
|
|
3
|
+
*
|
|
4
|
+
* All cache error types are defined in @zudojs/errors and re-exported here
|
|
5
|
+
* for convenience. No local error classes are created in this package.
|
|
6
|
+
*/
|
|
7
|
+
export { CacheError, isCacheError, cacheConnectionError, cacheTimeoutError, cacheSerializationError, cacheDeserializationError, cacheInvalidKeyError, cacheAdapterNotConfiguredError, CacheOperation, } from "@zudojs/errors";
|
|
8
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache
|
|
3
|
+
*
|
|
4
|
+
* Cache abstraction layer with memory adapter, tag-based
|
|
5
|
+
* invalidation, distributed locking, and metrics.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createCacheService, createMemoryCacheAdapter } from "@zudojs/cache";
|
|
10
|
+
*
|
|
11
|
+
* const cache = createCacheService({
|
|
12
|
+
* adapter: createMemoryCacheAdapter(),
|
|
13
|
+
* config: { defaultTtl: 60_000 },
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* await cache.set("user:123", { name: "Alice" }, { tags: ["users"] });
|
|
17
|
+
* const result = await cache.get("user:123");
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export type { CacheKey, CacheNamespace, CacheKeyParts, CacheKeyOptions, CacheValue, SerializableCacheValue, CacheTTL, CacheExpiration, CacheExpirationInfo, CacheSetOptions, CacheGetOptions, CacheDeleteOptions, CacheHasOptions, CacheClearOptions, CacheKeysOptions, CacheGetManyOptions, CacheSetManyOptions, CacheDeleteManyOptions, CacheEntry, CacheEntryMetadata, CacheGetResult, CacheSetResult, CacheDeleteResult, CacheDeleteManyResult, CacheClearResult, CacheStats, CacheAdapter, CacheStore, CacheAdapterFactory, CacheConfig, CacheEventType, CacheTag, CacheTagOptions, CacheTagStore, CacheLockOptions, CacheLock, CacheLockStore, CacheHealth, CacheHealthChecker, CacheSerializer, CacheMetrics, CacheOperation, CacheMiddlewareContext, CacheMiddleware, CacheSerializationOptions, CacheErrorCode, CacheOrComputeOptions, CacheOrComputeResult, CacheBatchOperation, CacheBatchResult, MaybePromise, CacheResult, } from "./types.js";
|
|
21
|
+
export type { BaseCacheEvent, CacheHitEvent, CacheMissEvent, CacheSetEvent, CacheDeleteEvent, CacheClearEvent, CacheErrorEvent, CacheEvent, CacheEventHandler, CacheEventSubscription, } from "./types-events.js";
|
|
22
|
+
export type { CacheKeyBuilder } from "./types-keys.js";
|
|
23
|
+
export { DEFAULT_TTL_MS, MAX_TTL_MS, MIN_TTL_MS, DEFAULT_SEPARATOR, DEFAULT_PREFIX, MAX_KEY_LENGTH, CACHE_KEY_PATTERN, DEFAULT_LOCK_TTL_MS, DEFAULT_LOCK_RETRY_ATTEMPTS, DEFAULT_LOCK_RETRY_DELAY_MS, MAX_LATENCY_SAMPLES, LATENCY_BUCKETS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_MEMORY_BYTES, MAX_BATCH_SIZE, MATCH_ALL_PATTERN, NAMESPACE_PATTERN, } from "./constants.js";
|
|
24
|
+
export { CacheError, isCacheError, cacheConnectionError, cacheTimeoutError, cacheSerializationError, cacheDeserializationError, cacheInvalidKeyError, cacheAdapterNotConfiguredError, } from "./errors.js";
|
|
25
|
+
export type { CacheErrorOptions } from "./errors.js";
|
|
26
|
+
export { JsonCacheSerializer, RawCacheSerializer, defaultSerializer, rawSerializer, getSerializer, } from "./serializer.js";
|
|
27
|
+
export { DefaultKeyBuilder, createKeyBuilder, defaultKeyBuilder, } from "./key-builder.js";
|
|
28
|
+
export { DefaultCacheStore, createCacheStore } from "./store.js";
|
|
29
|
+
export { MemoryCacheAdapter, createMemoryCacheAdapter } from "./memory.js";
|
|
30
|
+
export { InMemoryTagStore, createTagStore } from "./tags.js";
|
|
31
|
+
export { CacheInvalidationManager, createInvalidationManager, } from "./invalidation.js";
|
|
32
|
+
export { InMemoryLockStore, CacheLockManager, createLockManager, defaultLockStore, } from "./lock.js";
|
|
33
|
+
export { InMemoryCacheMetrics, createCacheMetrics } from "./metrics.js";
|
|
34
|
+
export { CacheService, createCacheService } from "./cache.js";
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache
|
|
3
|
+
*
|
|
4
|
+
* Cache abstraction layer with memory adapter, tag-based
|
|
5
|
+
* invalidation, distributed locking, and metrics.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createCacheService, createMemoryCacheAdapter } from "@zudojs/cache";
|
|
10
|
+
*
|
|
11
|
+
* const cache = createCacheService({
|
|
12
|
+
* adapter: createMemoryCacheAdapter(),
|
|
13
|
+
* config: { defaultTtl: 60_000 },
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* await cache.set("user:123", { name: "Alice" }, { tags: ["users"] });
|
|
17
|
+
* const result = await cache.get("user:123");
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
// Constants
|
|
21
|
+
export { DEFAULT_TTL_MS, MAX_TTL_MS, MIN_TTL_MS, DEFAULT_SEPARATOR, DEFAULT_PREFIX, MAX_KEY_LENGTH, CACHE_KEY_PATTERN, DEFAULT_LOCK_TTL_MS, DEFAULT_LOCK_RETRY_ATTEMPTS, DEFAULT_LOCK_RETRY_DELAY_MS, MAX_LATENCY_SAMPLES, LATENCY_BUCKETS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_MEMORY_BYTES, MAX_BATCH_SIZE, MATCH_ALL_PATTERN, NAMESPACE_PATTERN, } from "./constants.js";
|
|
22
|
+
// Errors (re-exported from @zudojs/errors)
|
|
23
|
+
export { CacheError, isCacheError, cacheConnectionError, cacheTimeoutError, cacheSerializationError, cacheDeserializationError, cacheInvalidKeyError, cacheAdapterNotConfiguredError, } from "./errors.js";
|
|
24
|
+
// Serializer
|
|
25
|
+
export { JsonCacheSerializer, RawCacheSerializer, defaultSerializer, rawSerializer, getSerializer, } from "./serializer.js";
|
|
26
|
+
// Key Builder
|
|
27
|
+
export { DefaultKeyBuilder, createKeyBuilder, defaultKeyBuilder, } from "./key-builder.js";
|
|
28
|
+
// Store
|
|
29
|
+
export { DefaultCacheStore, createCacheStore } from "./store.js";
|
|
30
|
+
// Memory Adapter
|
|
31
|
+
export { MemoryCacheAdapter, createMemoryCacheAdapter } from "./memory.js";
|
|
32
|
+
// Tags
|
|
33
|
+
export { InMemoryTagStore, createTagStore } from "./tags.js";
|
|
34
|
+
// Invalidation
|
|
35
|
+
export { CacheInvalidationManager, createInvalidationManager, } from "./invalidation.js";
|
|
36
|
+
// Lock
|
|
37
|
+
export { InMemoryLockStore, CacheLockManager, createLockManager, defaultLockStore, } from "./lock.js";
|
|
38
|
+
// Metrics
|
|
39
|
+
export { InMemoryCacheMetrics, createCacheMetrics } from "./metrics.js";
|
|
40
|
+
// Cache Service
|
|
41
|
+
export { CacheService, createCacheService } from "./cache.js";
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyEH,YAAY;AACZ,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,2CAA2C;AAC3C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAIrB,aAAa;AACb,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,QAAQ;AACR,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,iBAAiB;AACjB,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO;AACP,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE7D,eAAe;AACf,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,OAAO;AACP,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,UAAU;AACV,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Invalidation
|
|
3
|
+
*
|
|
4
|
+
* Coordinates cache invalidation across tags, patterns, and keys.
|
|
5
|
+
* Works with both the tag store and the cache adapter to ensure
|
|
6
|
+
* consistent invalidation.
|
|
7
|
+
*/
|
|
8
|
+
import type { CacheAdapter, CacheClearResult, CacheKey, CacheNamespace, CacheTag, CacheTagStore } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Coordinates cache invalidation across multiple strategies:
|
|
11
|
+
* - Tag-based invalidation
|
|
12
|
+
* - Pattern-based invalidation
|
|
13
|
+
* - Direct key invalidation
|
|
14
|
+
*/
|
|
15
|
+
export declare class CacheInvalidationManager {
|
|
16
|
+
private readonly adapter;
|
|
17
|
+
private readonly tagStore;
|
|
18
|
+
constructor(options: {
|
|
19
|
+
readonly adapter: CacheAdapter;
|
|
20
|
+
readonly tagStore: CacheTagStore;
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Invalidates all cache entries associated with the given tags.
|
|
24
|
+
* Returns the number of keys that were affected.
|
|
25
|
+
*/
|
|
26
|
+
invalidateByTag(tags: readonly CacheTag[], options?: {
|
|
27
|
+
readonly namespace?: CacheNamespace;
|
|
28
|
+
}): Promise<CacheClearResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Invalidates all cache entries matching the given glob pattern.
|
|
31
|
+
*/
|
|
32
|
+
invalidateByPattern(pattern: string, options?: {
|
|
33
|
+
readonly namespace?: CacheNamespace;
|
|
34
|
+
}): Promise<CacheClearResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Invalidates all cache entries in the given namespace.
|
|
37
|
+
*/
|
|
38
|
+
invalidateByNamespace(namespace: CacheNamespace): Promise<CacheClearResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Invalidates a specific cache key.
|
|
41
|
+
*/
|
|
42
|
+
invalidateKey(key: CacheKey, options?: {
|
|
43
|
+
readonly namespace?: CacheNamespace;
|
|
44
|
+
}): Promise<{
|
|
45
|
+
readonly deleted: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
/**
|
|
48
|
+
* Invalidates multiple cache keys at once.
|
|
49
|
+
*/
|
|
50
|
+
invalidateKeys(keys: readonly CacheKey[], options?: {
|
|
51
|
+
readonly namespace?: CacheNamespace;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
readonly deleted: number;
|
|
54
|
+
readonly keys: readonly CacheKey[];
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Clears all entries in the cache adapter and resets the tag store.
|
|
58
|
+
*/
|
|
59
|
+
flushAll(): Promise<CacheClearResult>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a cache invalidation manager.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createInvalidationManager(options: {
|
|
65
|
+
readonly adapter: CacheAdapter;
|
|
66
|
+
readonly tagStore: CacheTagStore;
|
|
67
|
+
}): CacheInvalidationManager;
|
|
68
|
+
//# sourceMappingURL=invalidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../src/invalidation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,aAAa,EACd,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,YAAY,OAAO,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;QAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;KAClC,EAGA;IAID;;;OAGG;IACG,eAAe,CACnB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GAChD,OAAO,CAAC,gBAAgB,CAAC,CAe3B;IAID;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GAChD,OAAO,CAAC,gBAAgB,CAAC,CAK3B;IAID;;OAEG;IACG,qBAAqB,CACzB,SAAS,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAE3B;IAID;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,QAAQ,EACb,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GAChD,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAGxC;IAID;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GAChD,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;KACpC,CAAC,CAaD;IAID;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAQ1C;CACF;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC,GAAG,wBAAwB,CAE3B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Invalidation
|
|
3
|
+
*
|
|
4
|
+
* Coordinates cache invalidation across tags, patterns, and keys.
|
|
5
|
+
* Works with both the tag store and the cache adapter to ensure
|
|
6
|
+
* consistent invalidation.
|
|
7
|
+
*/
|
|
8
|
+
/* -------------------------------------------------------------------------- */
|
|
9
|
+
/* Invalidation Manager */
|
|
10
|
+
/* -------------------------------------------------------------------------- */
|
|
11
|
+
/**
|
|
12
|
+
* Coordinates cache invalidation across multiple strategies:
|
|
13
|
+
* - Tag-based invalidation
|
|
14
|
+
* - Pattern-based invalidation
|
|
15
|
+
* - Direct key invalidation
|
|
16
|
+
*/
|
|
17
|
+
export class CacheInvalidationManager {
|
|
18
|
+
adapter;
|
|
19
|
+
tagStore;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.adapter = options.adapter;
|
|
22
|
+
this.tagStore = options.tagStore;
|
|
23
|
+
}
|
|
24
|
+
/* ---- Tag Invalidation ---- */
|
|
25
|
+
/**
|
|
26
|
+
* Invalidates all cache entries associated with the given tags.
|
|
27
|
+
* Returns the number of keys that were affected.
|
|
28
|
+
*/
|
|
29
|
+
async invalidateByTag(tags, options) {
|
|
30
|
+
let totalCleared = 0;
|
|
31
|
+
for (const tag of tags) {
|
|
32
|
+
const keys = await this.tagStore.getKeys(tag, options);
|
|
33
|
+
for (const key of keys) {
|
|
34
|
+
await this.adapter.delete(key, options);
|
|
35
|
+
}
|
|
36
|
+
const result = await this.tagStore.invalidate(tag, options);
|
|
37
|
+
totalCleared += result.cleared;
|
|
38
|
+
}
|
|
39
|
+
return { cleared: totalCleared };
|
|
40
|
+
}
|
|
41
|
+
/* ---- Pattern Invalidation ---- */
|
|
42
|
+
/**
|
|
43
|
+
* Invalidates all cache entries matching the given glob pattern.
|
|
44
|
+
*/
|
|
45
|
+
async invalidateByPattern(pattern, options) {
|
|
46
|
+
return this.adapter.clear({
|
|
47
|
+
...options,
|
|
48
|
+
pattern,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/* ---- Namespace Invalidation ---- */
|
|
52
|
+
/**
|
|
53
|
+
* Invalidates all cache entries in the given namespace.
|
|
54
|
+
*/
|
|
55
|
+
async invalidateByNamespace(namespace) {
|
|
56
|
+
return this.adapter.clear({ namespace });
|
|
57
|
+
}
|
|
58
|
+
/* ---- Direct Key Invalidation ---- */
|
|
59
|
+
/**
|
|
60
|
+
* Invalidates a specific cache key.
|
|
61
|
+
*/
|
|
62
|
+
async invalidateKey(key, options) {
|
|
63
|
+
const result = await this.adapter.delete(key, options);
|
|
64
|
+
return { deleted: result.deleted };
|
|
65
|
+
}
|
|
66
|
+
/* ---- Bulk Invalidation ---- */
|
|
67
|
+
/**
|
|
68
|
+
* Invalidates multiple cache keys at once.
|
|
69
|
+
*/
|
|
70
|
+
async invalidateKeys(keys, options) {
|
|
71
|
+
let deleted = 0;
|
|
72
|
+
const deletedKeys = [];
|
|
73
|
+
for (const key of keys) {
|
|
74
|
+
const result = await this.adapter.delete(key, options);
|
|
75
|
+
if (result.deleted) {
|
|
76
|
+
deleted++;
|
|
77
|
+
deletedKeys.push(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return { deleted, keys: deletedKeys };
|
|
81
|
+
}
|
|
82
|
+
/* ---- Full Flush ---- */
|
|
83
|
+
/**
|
|
84
|
+
* Clears all entries in the cache adapter and resets the tag store.
|
|
85
|
+
*/
|
|
86
|
+
async flushAll() {
|
|
87
|
+
const result = await this.adapter.clear();
|
|
88
|
+
if (typeof this.tagStore.clear === "function") {
|
|
89
|
+
this.tagStore.clear();
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/* -------------------------------------------------------------------------- */
|
|
95
|
+
/* Factory */
|
|
96
|
+
/* -------------------------------------------------------------------------- */
|
|
97
|
+
/**
|
|
98
|
+
* Creates a cache invalidation manager.
|
|
99
|
+
*/
|
|
100
|
+
export function createInvalidationManager(options) {
|
|
101
|
+
return new CacheInvalidationManager(options);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=invalidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidation.js","sourceRoot":"","sources":["../src/invalidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/cache — Key Builder
|
|
3
|
+
*
|
|
4
|
+
* Builds fully qualified cache keys from key parts, namespaces,
|
|
5
|
+
* and prefixes. Ensures keys are well-formed and consistently formatted.
|
|
6
|
+
*/
|
|
7
|
+
import type { CacheKey, CacheKeyOptions, CacheNamespace } from "./types.js";
|
|
8
|
+
import type { CacheKeyBuilder } from "./types-keys.js";
|
|
9
|
+
/**
|
|
10
|
+
* Default implementation of the `CacheKeyBuilder` contract.
|
|
11
|
+
*
|
|
12
|
+
* Keys are built as: `[prefix:][namespace:]key`
|
|
13
|
+
*/
|
|
14
|
+
export declare class DefaultKeyBuilder implements CacheKeyBuilder {
|
|
15
|
+
private readonly globalPrefix;
|
|
16
|
+
private readonly globalSeparator;
|
|
17
|
+
private readonly currentNamespace?;
|
|
18
|
+
constructor(options?: {
|
|
19
|
+
readonly prefix?: string;
|
|
20
|
+
readonly separator?: string;
|
|
21
|
+
readonly namespace?: CacheNamespace;
|
|
22
|
+
});
|
|
23
|
+
build(key: string, options?: CacheKeyOptions): CacheKey;
|
|
24
|
+
namespace(namespace: CacheNamespace): CacheKeyBuilder;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new `DefaultKeyBuilder` with the given options.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createKeyBuilder(options?: {
|
|
30
|
+
readonly prefix?: string;
|
|
31
|
+
readonly separator?: string;
|
|
32
|
+
readonly namespace?: CacheNamespace;
|
|
33
|
+
}): DefaultKeyBuilder;
|
|
34
|
+
/** Default key builder singleton. */
|
|
35
|
+
export declare const defaultKeyBuilder: DefaultKeyBuilder;
|
|
36
|
+
//# sourceMappingURL=key-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../src/key-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAavD;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAiB;IAEnD,YAAY,OAAO,CAAC,EAAE;QACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;KACrC,EAIA;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CA+BtD;IAED,SAAS,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,CAMpD;CACF;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;CACrC,GAAG,iBAAiB,CAEpB;AAED,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|