@orkify/cli 1.0.0-beta.5 → 1.0.0-beta.6
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/README.md +10 -5
- package/package.json +8 -31
- package/packages/cache/README.md +0 -114
- package/packages/cache/dist/CacheClient.d.ts +0 -26
- package/packages/cache/dist/CacheClient.d.ts.map +0 -1
- package/packages/cache/dist/CacheClient.js +0 -174
- package/packages/cache/dist/CacheClient.js.map +0 -1
- package/packages/cache/dist/CacheFileStore.d.ts +0 -45
- package/packages/cache/dist/CacheFileStore.d.ts.map +0 -1
- package/packages/cache/dist/CacheFileStore.js +0 -446
- package/packages/cache/dist/CacheFileStore.js.map +0 -1
- package/packages/cache/dist/CachePersistence.d.ts +0 -9
- package/packages/cache/dist/CachePersistence.d.ts.map +0 -1
- package/packages/cache/dist/CachePersistence.js +0 -67
- package/packages/cache/dist/CachePersistence.js.map +0 -1
- package/packages/cache/dist/CachePrimary.d.ts +0 -25
- package/packages/cache/dist/CachePrimary.d.ts.map +0 -1
- package/packages/cache/dist/CachePrimary.js +0 -155
- package/packages/cache/dist/CachePrimary.js.map +0 -1
- package/packages/cache/dist/CacheStore.d.ts +0 -50
- package/packages/cache/dist/CacheStore.d.ts.map +0 -1
- package/packages/cache/dist/CacheStore.js +0 -271
- package/packages/cache/dist/CacheStore.js.map +0 -1
- package/packages/cache/dist/constants.d.ts +0 -6
- package/packages/cache/dist/constants.d.ts.map +0 -1
- package/packages/cache/dist/constants.js +0 -9
- package/packages/cache/dist/constants.js.map +0 -1
- package/packages/cache/dist/index.d.ts +0 -16
- package/packages/cache/dist/index.d.ts.map +0 -1
- package/packages/cache/dist/index.js +0 -86
- package/packages/cache/dist/index.js.map +0 -1
- package/packages/cache/dist/serialize.d.ts +0 -9
- package/packages/cache/dist/serialize.d.ts.map +0 -1
- package/packages/cache/dist/serialize.js +0 -40
- package/packages/cache/dist/serialize.js.map +0 -1
- package/packages/cache/dist/types.d.ts +0 -123
- package/packages/cache/dist/types.d.ts.map +0 -1
- package/packages/cache/dist/types.js +0 -2
- package/packages/cache/dist/types.js.map +0 -1
- package/packages/cache/package.json +0 -27
- package/packages/cache/src/CacheClient.ts +0 -227
- package/packages/cache/src/CacheFileStore.ts +0 -528
- package/packages/cache/src/CachePersistence.ts +0 -89
- package/packages/cache/src/CachePrimary.ts +0 -172
- package/packages/cache/src/CacheStore.ts +0 -308
- package/packages/cache/src/constants.ts +0 -10
- package/packages/cache/src/index.ts +0 -100
- package/packages/cache/src/serialize.ts +0 -49
- package/packages/cache/src/types.ts +0 -156
- package/packages/cache/tsconfig.json +0 -18
- package/packages/cache/tsconfig.tsbuildinfo +0 -1
- package/packages/next/README.md +0 -166
- package/packages/next/dist/error-capture.d.ts +0 -34
- package/packages/next/dist/error-capture.d.ts.map +0 -1
- package/packages/next/dist/error-capture.js +0 -130
- package/packages/next/dist/error-capture.js.map +0 -1
- package/packages/next/dist/error-handler.d.ts +0 -10
- package/packages/next/dist/error-handler.d.ts.map +0 -1
- package/packages/next/dist/error-handler.js +0 -186
- package/packages/next/dist/error-handler.js.map +0 -1
- package/packages/next/dist/isr-cache.d.ts +0 -9
- package/packages/next/dist/isr-cache.d.ts.map +0 -1
- package/packages/next/dist/isr-cache.js +0 -86
- package/packages/next/dist/isr-cache.js.map +0 -1
- package/packages/next/dist/stream.d.ts +0 -5
- package/packages/next/dist/stream.d.ts.map +0 -1
- package/packages/next/dist/stream.js +0 -22
- package/packages/next/dist/stream.js.map +0 -1
- package/packages/next/dist/types.d.ts +0 -33
- package/packages/next/dist/types.d.ts.map +0 -1
- package/packages/next/dist/types.js +0 -6
- package/packages/next/dist/types.js.map +0 -1
- package/packages/next/dist/use-cache.d.ts +0 -4
- package/packages/next/dist/use-cache.d.ts.map +0 -1
- package/packages/next/dist/use-cache.js +0 -86
- package/packages/next/dist/use-cache.js.map +0 -1
- package/packages/next/dist/utils.d.ts +0 -32
- package/packages/next/dist/utils.d.ts.map +0 -1
- package/packages/next/dist/utils.js +0 -88
- package/packages/next/dist/utils.js.map +0 -1
- package/packages/next/package.json +0 -52
- package/packages/next/src/error-capture.ts +0 -177
- package/packages/next/src/error-handler.ts +0 -221
- package/packages/next/src/isr-cache.ts +0 -100
- package/packages/next/src/stream.ts +0 -23
- package/packages/next/src/types.ts +0 -33
- package/packages/next/src/use-cache.ts +0 -99
- package/packages/next/src/utils.ts +0 -102
- package/packages/next/tsconfig.json +0 -19
- package/packages/next/tsconfig.tsbuildinfo +0 -1
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { CacheFileStore } from './CacheFileStore.js';
|
|
2
|
-
import { CachePersistence } from './CachePersistence.js';
|
|
3
|
-
import { CacheStore } from './CacheStore.js';
|
|
4
|
-
export class CachePrimary {
|
|
5
|
-
fileBacked;
|
|
6
|
-
persistence;
|
|
7
|
-
processName;
|
|
8
|
-
store;
|
|
9
|
-
constructor(processName, config) {
|
|
10
|
-
this.processName = processName;
|
|
11
|
-
this.fileBacked = config?.fileBacked === true;
|
|
12
|
-
this.store = this.fileBacked ? new CacheFileStore(processName, config) : new CacheStore(config);
|
|
13
|
-
this.persistence = new CachePersistence(processName);
|
|
14
|
-
}
|
|
15
|
-
handleMessage(_worker, msg, allWorkers) {
|
|
16
|
-
switch (msg.type) {
|
|
17
|
-
case 'cache:set': {
|
|
18
|
-
const expiresAt = msg.ttl ? Date.now() + msg.ttl * 1000 : undefined;
|
|
19
|
-
this.store.set(msg.key, msg.value, expiresAt, msg.tags);
|
|
20
|
-
// Broadcast to ALL workers (including sender) for consistency
|
|
21
|
-
for (const [, state] of allWorkers) {
|
|
22
|
-
if (state.worker.isConnected()) {
|
|
23
|
-
state.worker.send({
|
|
24
|
-
__orkify: true,
|
|
25
|
-
type: 'cache:set',
|
|
26
|
-
key: msg.key,
|
|
27
|
-
value: msg.value,
|
|
28
|
-
expiresAt,
|
|
29
|
-
tags: msg.tags,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
case 'cache:delete': {
|
|
36
|
-
this.store.delete(msg.key);
|
|
37
|
-
for (const [, state] of allWorkers) {
|
|
38
|
-
if (state.worker.isConnected()) {
|
|
39
|
-
state.worker.send({
|
|
40
|
-
__orkify: true,
|
|
41
|
-
type: 'cache:delete',
|
|
42
|
-
key: msg.key,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case 'cache:clear': {
|
|
49
|
-
this.store.clear();
|
|
50
|
-
for (const [, state] of allWorkers) {
|
|
51
|
-
if (state.worker.isConnected()) {
|
|
52
|
-
state.worker.send({ __orkify: true, type: 'cache:clear' });
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
case 'cache:invalidate-tag': {
|
|
58
|
-
this.store.invalidateTag(msg.tag);
|
|
59
|
-
const tagTimestamp = this.store.getTagExpiration([msg.tag]);
|
|
60
|
-
for (const [, state] of allWorkers) {
|
|
61
|
-
if (state.worker.isConnected()) {
|
|
62
|
-
state.worker.send({
|
|
63
|
-
__orkify: true,
|
|
64
|
-
type: 'cache:invalidate-tag',
|
|
65
|
-
tag: msg.tag,
|
|
66
|
-
tagTimestamp,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
case 'cache:update-tag-timestamp': {
|
|
73
|
-
this.store.applyTagTimestamp(msg.tag, msg.tagTimestamp);
|
|
74
|
-
for (const [, state] of allWorkers) {
|
|
75
|
-
if (state.worker.isConnected()) {
|
|
76
|
-
state.worker.send({
|
|
77
|
-
__orkify: true,
|
|
78
|
-
type: 'cache:update-tag-timestamp',
|
|
79
|
-
tag: msg.tag,
|
|
80
|
-
tagTimestamp: msg.tagTimestamp,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
case 'cache:configure': {
|
|
87
|
-
this.applyConfig(msg.config);
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Upgrade from CacheStore to CacheFileStore when a worker reports fileBacked config.
|
|
94
|
-
* Migrates existing in-memory entries and loads the disk index from any previous session.
|
|
95
|
-
*/
|
|
96
|
-
applyConfig(config) {
|
|
97
|
-
if (!config.fileBacked || this.fileBacked)
|
|
98
|
-
return;
|
|
99
|
-
const snapshot = this.store.serialize();
|
|
100
|
-
const newStore = new CacheFileStore(this.processName, config);
|
|
101
|
-
this.store.destroy();
|
|
102
|
-
this.store = newStore;
|
|
103
|
-
// Migrate existing in-memory entries (from CachePersistence restore or earlier sets)
|
|
104
|
-
for (const [key, entry] of snapshot.entries) {
|
|
105
|
-
this.store.set(key, entry.value, entry.expiresAt, entry.tags);
|
|
106
|
-
}
|
|
107
|
-
for (const [tag, ts] of snapshot.tagTimestamps) {
|
|
108
|
-
this.store.applyTagTimestamp(tag, ts);
|
|
109
|
-
}
|
|
110
|
-
this.fileBacked = true;
|
|
111
|
-
// Load disk index from previous file-backed sessions (async, entries promoted lazily)
|
|
112
|
-
void this.store.loadIndex();
|
|
113
|
-
}
|
|
114
|
-
sendSnapshot(worker) {
|
|
115
|
-
const snapshot = this.store.serialize();
|
|
116
|
-
if (snapshot.entries.length === 0 && snapshot.tagTimestamps.length === 0)
|
|
117
|
-
return;
|
|
118
|
-
worker.send({
|
|
119
|
-
__orkify: true,
|
|
120
|
-
type: 'cache:snapshot',
|
|
121
|
-
entries: snapshot.entries,
|
|
122
|
-
tagTimestamps: snapshot.tagTimestamps,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
async persist() {
|
|
126
|
-
if (this.fileBacked) {
|
|
127
|
-
await this.store.flush();
|
|
128
|
-
// Clear CachePersistence so stale snapshot data isn't loaded on next restart
|
|
129
|
-
await this.persistence.clear();
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
const snapshot = this.store.serialize();
|
|
133
|
-
await this.persistence.save(snapshot);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
async restore() {
|
|
137
|
-
if (this.fileBacked) {
|
|
138
|
-
await this.store.loadIndex();
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
const snapshot = await this.persistence.load();
|
|
142
|
-
if (snapshot.entries.length > 0 || snapshot.tagTimestamps.length > 0) {
|
|
143
|
-
this.store.applySnapshot(snapshot);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
destroy() {
|
|
148
|
-
this.store.destroy();
|
|
149
|
-
}
|
|
150
|
-
async shutdown() {
|
|
151
|
-
await this.persist();
|
|
152
|
-
this.store.destroy();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=CachePrimary.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CachePrimary.js","sourceRoot":"","sources":["../src/CachePrimary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,MAAM,OAAO,YAAY;IACf,UAAU,CAAU;IACpB,WAAW,CAAmB;IAC9B,WAAW,CAAS;IACpB,KAAK,CAAc;IAE3B,YAAY,WAAmB,EAAE,MAAoB;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CACX,OAAe,EACf,GAAuB,EACvB,UAAoC;QAEpC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxD,8DAA8D;gBAC9D,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAChB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,WAAW;4BACjB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,SAAS;4BACT,IAAI,EAAE,GAAG,CAAC,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3B,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAChB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,cAAc;4BACpB,GAAG,EAAE,GAAG,CAAC,GAAG;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAChB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,sBAAsB;4BAC5B,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,YAAY;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,4BAA4B,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBACxD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAChB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,4BAA4B;4BAClC,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,YAAY,EAAE,GAAG,CAAC,YAAY;yBAC/B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,MAAmB;QACrC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAElD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAEtB,qFAAqF;QACrF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,sFAAsF;QACtF,KAAM,IAAI,CAAC,KAAwB,CAAC,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjF,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAO,IAAI,CAAC,KAAwB,CAAC,KAAK,EAAE,CAAC;YAC7C,6EAA6E;YAC7E,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAO,IAAI,CAAC,KAAwB,CAAC,SAAS,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { CacheConfig, CacheEntry, CacheSnapshot, CacheStats, EvictReason, ICacheStore } from './types.js';
|
|
2
|
-
export type OnEvictCallback = (key: string, entry: CacheEntry, reason: EvictReason) => void;
|
|
3
|
-
export declare class CacheStore implements ICacheStore {
|
|
4
|
-
private entries;
|
|
5
|
-
private hits;
|
|
6
|
-
private maxEntries;
|
|
7
|
-
private maxMemorySize;
|
|
8
|
-
private misses;
|
|
9
|
-
private onEvict;
|
|
10
|
-
private sweepTimer;
|
|
11
|
-
private tagIndex;
|
|
12
|
-
private tagTimestamps;
|
|
13
|
-
totalBytes: number;
|
|
14
|
-
constructor(config?: CacheConfig, onEvict?: OnEvictCallback);
|
|
15
|
-
get<T>(key: string): T | undefined;
|
|
16
|
-
set(key: string, value: unknown, expiresAt?: number, tags?: string[], precomputedByteSize?: number): void;
|
|
17
|
-
delete(key: string): boolean;
|
|
18
|
-
clear(): void;
|
|
19
|
-
has(key: string): boolean;
|
|
20
|
-
stats(): CacheStats;
|
|
21
|
-
/** Invalidate all entries with the given tag. Returns deleted keys. */
|
|
22
|
-
invalidateTag(tag: string): string[];
|
|
23
|
-
/** Returns the most recent invalidation timestamp across the given tags (0 if none). */
|
|
24
|
-
getTagExpiration(tags: string[]): number;
|
|
25
|
-
/** Set a tag invalidation timestamp without deleting entries (for IPC replay). */
|
|
26
|
-
applyTagTimestamp(tag: string, timestamp: number): void;
|
|
27
|
-
getAsync<T>(key: string): Promise<T | undefined>;
|
|
28
|
-
/** Apply a set from IPC — no broadcast triggered */
|
|
29
|
-
applySet(key: string, value: unknown, expiresAt?: number, tags?: string[]): void;
|
|
30
|
-
/** Apply a delete from IPC — no broadcast triggered */
|
|
31
|
-
applyDelete(key: string): void;
|
|
32
|
-
/** Apply a full snapshot from primary — replaces all entries and tag timestamps */
|
|
33
|
-
applySnapshot(snapshot: CacheSnapshot): void;
|
|
34
|
-
/** Export for snapshots and persistence */
|
|
35
|
-
serialize(): CacheSnapshot;
|
|
36
|
-
destroy(): void;
|
|
37
|
-
/** Remove all expired entries */
|
|
38
|
-
private sweep;
|
|
39
|
-
/** Check if adding pendingEntries + pendingBytes would exceed limits */
|
|
40
|
-
private overLimit;
|
|
41
|
-
/** Evict the entry with the oldest lastAccessedAt. Returns false if nothing to evict. */
|
|
42
|
-
private evictLru;
|
|
43
|
-
/** Remove a key from the entries map and clean up its tag index entries */
|
|
44
|
-
private removeEntry;
|
|
45
|
-
/** Add a key to the tag index for each of its tags */
|
|
46
|
-
private addToTagIndex;
|
|
47
|
-
/** Remove a key from the tag index. Optionally skip a specific tag (already being deleted). */
|
|
48
|
-
private removeFromTagIndex;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=CacheStore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CacheStore.d.ts","sourceRoot":"","sources":["../src/CacheStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EAEZ,MAAM,YAAY,CAAC;AAQpB,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;AAE5F,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,aAAa,CAA6B;IAClD,UAAU,SAAK;gBAEH,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,eAAe;IAS3D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAgBlC,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,mBAAmB,CAAC,EAAE,MAAM,GAC3B,IAAI;IA2BP,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS5B,KAAK,IAAI,IAAI;IAOb,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB,KAAK,IAAI,UAAU;IAWnB,uEAAuE;IACvE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBpC,wFAAwF;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IAWxC,kFAAkF;IAClF,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIjD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAItD,oDAAoD;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhF,uDAAuD;IACvD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,mFAAmF;IACnF,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA4B5C,2CAA2C;IAC3C,SAAS,IAAI,aAAa;IAe1B,OAAO,IAAI,IAAI;IAWf,iCAAiC;IACjC,OAAO,CAAC,KAAK;IAUb,wEAAwE;IACxE,OAAO,CAAC,SAAS;IAMjB,yFAAyF;IACzF,OAAO,CAAC,QAAQ;IAoBhB,2EAA2E;IAC3E,OAAO,CAAC,WAAW;IAMnB,sDAAsD;IACtD,OAAO,CAAC,aAAa;IAWrB,+FAA+F;IAC/F,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import { CACHE_CLEANUP_INTERVAL, CACHE_DEFAULT_MAX_ENTRIES, CACHE_DEFAULT_MAX_MEMORY_SIZE, } from './constants.js';
|
|
2
|
-
import { serialize, serializedByteLength } from './serialize.js';
|
|
3
|
-
export class CacheStore {
|
|
4
|
-
entries = new Map();
|
|
5
|
-
hits = 0;
|
|
6
|
-
maxEntries;
|
|
7
|
-
maxMemorySize;
|
|
8
|
-
misses = 0;
|
|
9
|
-
onEvict;
|
|
10
|
-
sweepTimer;
|
|
11
|
-
tagIndex = new Map(); // tag → keys
|
|
12
|
-
tagTimestamps = new Map(); // tag → epoch ms of last invalidation
|
|
13
|
-
totalBytes = 0;
|
|
14
|
-
constructor(config, onEvict) {
|
|
15
|
-
this.maxEntries = config?.maxEntries ?? CACHE_DEFAULT_MAX_ENTRIES;
|
|
16
|
-
this.maxMemorySize = config?.maxMemorySize ?? CACHE_DEFAULT_MAX_MEMORY_SIZE;
|
|
17
|
-
this.onEvict = onEvict;
|
|
18
|
-
this.sweepTimer = setInterval(() => this.sweep(), CACHE_CLEANUP_INTERVAL);
|
|
19
|
-
this.sweepTimer.unref();
|
|
20
|
-
}
|
|
21
|
-
get(key) {
|
|
22
|
-
const entry = this.entries.get(key);
|
|
23
|
-
if (!entry) {
|
|
24
|
-
this.misses++;
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
if (entry.expiresAt !== undefined && entry.expiresAt < Date.now()) {
|
|
28
|
-
this.removeEntry(key, entry);
|
|
29
|
-
this.misses++;
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
|
-
entry.lastAccessedAt = Date.now();
|
|
33
|
-
this.hits++;
|
|
34
|
-
return entry.value;
|
|
35
|
-
}
|
|
36
|
-
set(key, value, expiresAt, tags, precomputedByteSize) {
|
|
37
|
-
const byteSize = precomputedByteSize ?? serializedByteLength(serialize(value));
|
|
38
|
-
const existing = this.entries.get(key);
|
|
39
|
-
if (existing) {
|
|
40
|
-
// Remove old tag associations and byte count before overwriting
|
|
41
|
-
this.removeFromTagIndex(key, existing.tags);
|
|
42
|
-
this.totalBytes -= existing.byteSize;
|
|
43
|
-
}
|
|
44
|
-
// Evict until we're under both limits (entry count for new keys, byte limit always)
|
|
45
|
-
while (this.overLimit(existing ? 0 : 1, byteSize)) {
|
|
46
|
-
if (!this.evictLru())
|
|
47
|
-
break; // nothing left to evict
|
|
48
|
-
}
|
|
49
|
-
this.entries.set(key, {
|
|
50
|
-
byteSize,
|
|
51
|
-
value,
|
|
52
|
-
expiresAt,
|
|
53
|
-
lastAccessedAt: Date.now(),
|
|
54
|
-
tags,
|
|
55
|
-
});
|
|
56
|
-
this.totalBytes += byteSize;
|
|
57
|
-
if (tags) {
|
|
58
|
-
this.addToTagIndex(key, tags);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
delete(key) {
|
|
62
|
-
const entry = this.entries.get(key);
|
|
63
|
-
if (!entry)
|
|
64
|
-
return false;
|
|
65
|
-
this.removeFromTagIndex(key, entry.tags);
|
|
66
|
-
this.totalBytes -= entry.byteSize;
|
|
67
|
-
this.entries.delete(key);
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
clear() {
|
|
71
|
-
this.entries.clear();
|
|
72
|
-
this.tagIndex.clear();
|
|
73
|
-
this.tagTimestamps.clear();
|
|
74
|
-
this.totalBytes = 0;
|
|
75
|
-
}
|
|
76
|
-
has(key) {
|
|
77
|
-
const entry = this.entries.get(key);
|
|
78
|
-
if (!entry)
|
|
79
|
-
return false;
|
|
80
|
-
if (entry.expiresAt !== undefined && entry.expiresAt < Date.now()) {
|
|
81
|
-
this.removeEntry(key, entry);
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
stats() {
|
|
87
|
-
const total = this.hits + this.misses;
|
|
88
|
-
return {
|
|
89
|
-
size: this.entries.size,
|
|
90
|
-
hits: this.hits,
|
|
91
|
-
misses: this.misses,
|
|
92
|
-
hitRate: total === 0 ? 0 : this.hits / total,
|
|
93
|
-
totalBytes: this.totalBytes,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/** Invalidate all entries with the given tag. Returns deleted keys. */
|
|
97
|
-
invalidateTag(tag) {
|
|
98
|
-
this.tagTimestamps.set(tag, Date.now());
|
|
99
|
-
const keys = this.tagIndex.get(tag);
|
|
100
|
-
if (!keys || keys.size === 0)
|
|
101
|
-
return [];
|
|
102
|
-
const deleted = [];
|
|
103
|
-
for (const key of keys) {
|
|
104
|
-
const entry = this.entries.get(key);
|
|
105
|
-
if (entry) {
|
|
106
|
-
// Remove this key from all its other tag sets
|
|
107
|
-
this.removeFromTagIndex(key, entry.tags, tag);
|
|
108
|
-
this.totalBytes -= entry.byteSize;
|
|
109
|
-
this.entries.delete(key);
|
|
110
|
-
deleted.push(key);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// Remove the tag itself from the index
|
|
114
|
-
this.tagIndex.delete(tag);
|
|
115
|
-
return deleted;
|
|
116
|
-
}
|
|
117
|
-
/** Returns the most recent invalidation timestamp across the given tags (0 if none). */
|
|
118
|
-
getTagExpiration(tags) {
|
|
119
|
-
let max = 0;
|
|
120
|
-
for (const tag of tags) {
|
|
121
|
-
const ts = this.tagTimestamps.get(tag);
|
|
122
|
-
if (ts !== undefined && ts > max) {
|
|
123
|
-
max = ts;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return max;
|
|
127
|
-
}
|
|
128
|
-
/** Set a tag invalidation timestamp without deleting entries (for IPC replay). */
|
|
129
|
-
applyTagTimestamp(tag, timestamp) {
|
|
130
|
-
this.tagTimestamps.set(tag, timestamp);
|
|
131
|
-
}
|
|
132
|
-
async getAsync(key) {
|
|
133
|
-
return this.get(key);
|
|
134
|
-
}
|
|
135
|
-
/** Apply a set from IPC — no broadcast triggered */
|
|
136
|
-
applySet(key, value, expiresAt, tags) {
|
|
137
|
-
this.set(key, value, expiresAt, tags);
|
|
138
|
-
}
|
|
139
|
-
/** Apply a delete from IPC — no broadcast triggered */
|
|
140
|
-
applyDelete(key) {
|
|
141
|
-
this.delete(key);
|
|
142
|
-
}
|
|
143
|
-
/** Apply a full snapshot from primary — replaces all entries and tag timestamps */
|
|
144
|
-
applySnapshot(snapshot) {
|
|
145
|
-
this.entries.clear();
|
|
146
|
-
this.tagIndex.clear();
|
|
147
|
-
this.tagTimestamps.clear();
|
|
148
|
-
this.totalBytes = 0;
|
|
149
|
-
const now = Date.now();
|
|
150
|
-
for (const [key, serialized] of snapshot.entries) {
|
|
151
|
-
// Skip expired entries
|
|
152
|
-
if (serialized.expiresAt !== undefined && serialized.expiresAt < now)
|
|
153
|
-
continue;
|
|
154
|
-
const tags = serialized.tags;
|
|
155
|
-
const byteSize = serializedByteLength(serialize(serialized.value));
|
|
156
|
-
this.entries.set(key, {
|
|
157
|
-
byteSize,
|
|
158
|
-
value: serialized.value,
|
|
159
|
-
expiresAt: serialized.expiresAt,
|
|
160
|
-
lastAccessedAt: now,
|
|
161
|
-
tags,
|
|
162
|
-
});
|
|
163
|
-
this.totalBytes += byteSize;
|
|
164
|
-
if (tags) {
|
|
165
|
-
this.addToTagIndex(key, tags);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
for (const [tag, ts] of snapshot.tagTimestamps) {
|
|
169
|
-
this.tagTimestamps.set(tag, ts);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/** Export for snapshots and persistence */
|
|
173
|
-
serialize() {
|
|
174
|
-
const now = Date.now();
|
|
175
|
-
const entries = [];
|
|
176
|
-
for (const [key, entry] of this.entries) {
|
|
177
|
-
// Skip expired entries
|
|
178
|
-
if (entry.expiresAt !== undefined && entry.expiresAt < now)
|
|
179
|
-
continue;
|
|
180
|
-
const serialized = { value: entry.value, expiresAt: entry.expiresAt };
|
|
181
|
-
if (entry.tags && entry.tags.length > 0) {
|
|
182
|
-
serialized.tags = entry.tags;
|
|
183
|
-
}
|
|
184
|
-
entries.push([key, serialized]);
|
|
185
|
-
}
|
|
186
|
-
return { entries, tagTimestamps: [...this.tagTimestamps] };
|
|
187
|
-
}
|
|
188
|
-
destroy() {
|
|
189
|
-
if (this.sweepTimer) {
|
|
190
|
-
clearInterval(this.sweepTimer);
|
|
191
|
-
this.sweepTimer = undefined;
|
|
192
|
-
}
|
|
193
|
-
this.entries.clear();
|
|
194
|
-
this.tagIndex.clear();
|
|
195
|
-
this.tagTimestamps.clear();
|
|
196
|
-
this.totalBytes = 0;
|
|
197
|
-
}
|
|
198
|
-
/** Remove all expired entries */
|
|
199
|
-
sweep() {
|
|
200
|
-
const now = Date.now();
|
|
201
|
-
for (const [key, entry] of this.entries) {
|
|
202
|
-
if (entry.expiresAt !== undefined && entry.expiresAt < now) {
|
|
203
|
-
this.onEvict?.(key, entry, 'expired');
|
|
204
|
-
this.removeEntry(key, entry);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
/** Check if adding pendingEntries + pendingBytes would exceed limits */
|
|
209
|
-
overLimit(pendingEntries, pendingBytes) {
|
|
210
|
-
if (this.entries.size + pendingEntries > this.maxEntries)
|
|
211
|
-
return true;
|
|
212
|
-
if (this.totalBytes + pendingBytes > this.maxMemorySize)
|
|
213
|
-
return true;
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
/** Evict the entry with the oldest lastAccessedAt. Returns false if nothing to evict. */
|
|
217
|
-
evictLru() {
|
|
218
|
-
let oldestKey;
|
|
219
|
-
let oldestTime = Infinity;
|
|
220
|
-
for (const [key, entry] of this.entries) {
|
|
221
|
-
if (entry.lastAccessedAt < oldestTime) {
|
|
222
|
-
oldestTime = entry.lastAccessedAt;
|
|
223
|
-
oldestKey = key;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
if (oldestKey === undefined)
|
|
227
|
-
return false;
|
|
228
|
-
const entry = this.entries.get(oldestKey);
|
|
229
|
-
if (entry) {
|
|
230
|
-
this.onEvict?.(oldestKey, entry, 'lru');
|
|
231
|
-
this.removeFromTagIndex(oldestKey, entry.tags);
|
|
232
|
-
this.totalBytes -= entry.byteSize;
|
|
233
|
-
}
|
|
234
|
-
this.entries.delete(oldestKey);
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
/** Remove a key from the entries map and clean up its tag index entries */
|
|
238
|
-
removeEntry(key, entry) {
|
|
239
|
-
this.removeFromTagIndex(key, entry.tags);
|
|
240
|
-
this.totalBytes -= entry.byteSize;
|
|
241
|
-
this.entries.delete(key);
|
|
242
|
-
}
|
|
243
|
-
/** Add a key to the tag index for each of its tags */
|
|
244
|
-
addToTagIndex(key, tags) {
|
|
245
|
-
for (const tag of tags) {
|
|
246
|
-
let keys = this.tagIndex.get(tag);
|
|
247
|
-
if (!keys) {
|
|
248
|
-
keys = new Set();
|
|
249
|
-
this.tagIndex.set(tag, keys);
|
|
250
|
-
}
|
|
251
|
-
keys.add(key);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
/** Remove a key from the tag index. Optionally skip a specific tag (already being deleted). */
|
|
255
|
-
removeFromTagIndex(key, tags, skipTag) {
|
|
256
|
-
if (!tags)
|
|
257
|
-
return;
|
|
258
|
-
for (const tag of tags) {
|
|
259
|
-
if (tag === skipTag)
|
|
260
|
-
continue;
|
|
261
|
-
const keys = this.tagIndex.get(tag);
|
|
262
|
-
if (keys) {
|
|
263
|
-
keys.delete(key);
|
|
264
|
-
if (keys.size === 0) {
|
|
265
|
-
this.tagIndex.delete(tag);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
//# sourceMappingURL=CacheStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CacheStore.js","sourceRoot":"","sources":["../src/CacheStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const CACHE_DIR: string;
|
|
2
|
-
export declare const CACHE_DEFAULT_MAX_ENTRIES = 10000;
|
|
3
|
-
export declare const CACHE_DEFAULT_MAX_MEMORY_SIZE: number;
|
|
4
|
-
export declare const CACHE_DEFAULT_MAX_VALUE_SIZE: number;
|
|
5
|
-
export declare const CACHE_CLEANUP_INTERVAL = 60000;
|
|
6
|
-
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,QAA6B,CAAC;AACpD,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,6BAA6B,QAAmB,CAAC;AAC9D,eAAO,MAAM,4BAA4B,QAAc,CAAC;AACxD,eAAO,MAAM,sBAAsB,QAAS,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
const ORKIFY_HOME = join(homedir(), '.orkify');
|
|
4
|
-
export const CACHE_DIR = join(ORKIFY_HOME, 'cache');
|
|
5
|
-
export const CACHE_DEFAULT_MAX_ENTRIES = 10_000;
|
|
6
|
-
export const CACHE_DEFAULT_MAX_MEMORY_SIZE = 64 * 1024 * 1024; // 64 MB
|
|
7
|
-
export const CACHE_DEFAULT_MAX_VALUE_SIZE = 1024 * 1024; // 1 MB
|
|
8
|
-
export const CACHE_CLEANUP_INTERVAL = 60_000; // 60s
|
|
9
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,CAAC,MAAM"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { CacheConfig } from './types.js';
|
|
2
|
-
import { CacheClient } from './CacheClient.js';
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated Use `cache.configure()` instead. Will be removed in a future version.
|
|
5
|
-
*/
|
|
6
|
-
export declare function configure(config: CacheConfig): void;
|
|
7
|
-
/**
|
|
8
|
-
* Shared cache singleton. Reads are always synchronous local Map lookups.
|
|
9
|
-
* In cluster mode, writes broadcast via IPC so all workers converge.
|
|
10
|
-
* In standalone/fork mode, behaves as a local in-memory cache.
|
|
11
|
-
*
|
|
12
|
-
* Call `cache.configure()` before any other method to set options.
|
|
13
|
-
*/
|
|
14
|
-
export declare const cache: CacheClient;
|
|
15
|
-
export type { CacheConfig, CacheSetOptions, CacheStats } from './types.js';
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA2D/C;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKnD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,WAoBlB,CAAC;AAEH,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { CacheClient } from './CacheClient.js';
|
|
2
|
-
let instance;
|
|
3
|
-
let pendingConfig;
|
|
4
|
-
// In cluster mode, IPC cache messages (including snapshots) can arrive before
|
|
5
|
-
// this module loads. The metrics probe registers a global buffer on
|
|
6
|
-
// `globalThis.__orkifyCacheBuffer` synchronously before any `await`, so those
|
|
7
|
-
// early messages are captured even when this module loads late.
|
|
8
|
-
//
|
|
9
|
-
// Messages that arrive *after* this module loads but *before* the proxy is first
|
|
10
|
-
// accessed are captured by the local early listener below. Both sources are
|
|
11
|
-
// merged and drained when the CacheClient is created.
|
|
12
|
-
const g = globalThis;
|
|
13
|
-
const probeBuffer = Array.isArray(g.__orkifyCacheBuffer)
|
|
14
|
-
? g.__orkifyCacheBuffer
|
|
15
|
-
: [];
|
|
16
|
-
const localBuffer = [];
|
|
17
|
-
let earlyListener;
|
|
18
|
-
if (process.env.ORKIFY_CLUSTER_MODE === 'true' && typeof process.send === 'function') {
|
|
19
|
-
earlyListener = (msg) => {
|
|
20
|
-
const m = msg;
|
|
21
|
-
if (m?.__orkify && m.type?.startsWith('cache:')) {
|
|
22
|
-
localBuffer.push(msg);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
process.on('message', earlyListener);
|
|
26
|
-
}
|
|
27
|
-
function createInstance() {
|
|
28
|
-
// Stop the local early listener — CacheClient registers its own
|
|
29
|
-
if (earlyListener) {
|
|
30
|
-
process.removeListener('message', earlyListener);
|
|
31
|
-
earlyListener = undefined;
|
|
32
|
-
}
|
|
33
|
-
// Stop the probe's global buffer listener
|
|
34
|
-
if (typeof g.__orkifyCacheBufferCleanup === 'function') {
|
|
35
|
-
g.__orkifyCacheBufferCleanup();
|
|
36
|
-
delete g.__orkifyCacheBufferCleanup;
|
|
37
|
-
delete g.__orkifyCacheBuffer;
|
|
38
|
-
}
|
|
39
|
-
// Merge probe buffer + local buffer — probe messages arrived first
|
|
40
|
-
const merged = [...probeBuffer, ...localBuffer];
|
|
41
|
-
probeBuffer.length = 0;
|
|
42
|
-
localBuffer.length = 0;
|
|
43
|
-
// Default to fileBacked: true unless explicitly disabled
|
|
44
|
-
const config = pendingConfig?.fileBacked === false ? pendingConfig : { fileBacked: true, ...pendingConfig };
|
|
45
|
-
instance = new CacheClient(config, merged);
|
|
46
|
-
const client = instance;
|
|
47
|
-
g.__orkifyCacheStats = () => client.stats();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @deprecated Use `cache.configure()` instead. Will be removed in a future version.
|
|
51
|
-
*/
|
|
52
|
-
export function configure(config) {
|
|
53
|
-
if (instance) {
|
|
54
|
-
throw new Error('orkify/cache: configure() must be called before the first use of cache');
|
|
55
|
-
}
|
|
56
|
-
pendingConfig = config;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Shared cache singleton. Reads are always synchronous local Map lookups.
|
|
60
|
-
* In cluster mode, writes broadcast via IPC so all workers converge.
|
|
61
|
-
* In standalone/fork mode, behaves as a local in-memory cache.
|
|
62
|
-
*
|
|
63
|
-
* Call `cache.configure()` before any other method to set options.
|
|
64
|
-
*/
|
|
65
|
-
export const cache = new Proxy({}, {
|
|
66
|
-
get(_target, prop, receiver) {
|
|
67
|
-
// configure() must run before the instance is created
|
|
68
|
-
if (prop === 'configure') {
|
|
69
|
-
return (config) => {
|
|
70
|
-
if (instance) {
|
|
71
|
-
throw new Error('orkify/cache: configure() must be called before the first use of cache');
|
|
72
|
-
}
|
|
73
|
-
pendingConfig = config;
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
if (!instance)
|
|
77
|
-
createInstance();
|
|
78
|
-
const inst = instance;
|
|
79
|
-
const value = Reflect.get(inst, prop, receiver);
|
|
80
|
-
if (typeof value === 'function') {
|
|
81
|
-
return value.bind(inst);
|
|
82
|
-
}
|
|
83
|
-
return value;
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,IAAI,QAAiC,CAAC;AACtC,IAAI,aAAsC,CAAC;AAE3C,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,sDAAsD;AACtD,MAAM,CAAC,GAAG,UAAqC,CAAC;AAChD,MAAM,WAAW,GAAc,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjE,CAAC,CAAE,CAAC,CAAC,mBAAiC;IACtC,CAAC,CAAC,EAAE,CAAC;AAEP,MAAM,WAAW,GAAc,EAAE,CAAC;AAClC,IAAI,aAAmD,CAAC;AAExD,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;IACrF,aAAa,GAAG,CAAC,GAAY,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,GAA4C,CAAC;QACvD,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc;IACrB,gEAAgE;IAChE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjD,aAAa,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,CAAC,CAAC,0BAA0B,KAAK,UAAU,EAAE,CAAC;QACtD,CAAC,CAAC,0BAAyC,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC,0BAA0B,CAAC;QACpC,OAAO,CAAC,CAAC,mBAAmB,CAAC;IAC/B,CAAC;IAED,mEAAmE;IACnE,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC;IAChD,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvB,yDAAyD;IACzD,MAAM,MAAM,GACV,aAAa,EAAE,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;IAE/F,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC;IACvB,CAA6B,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAgB,IAAI,KAAK,CAAC,EAAiB,EAAE;IAC7D,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;QACzB,sDAAsD;QACtD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,MAAmB,EAAE,EAAE;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBAC5F,CAAC;gBACD,aAAa,GAAG,MAAM,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ;YAAE,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,QAAuB,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type Encoding = 'json' | 'v8';
|
|
2
|
-
export interface Serialized {
|
|
3
|
-
data: string;
|
|
4
|
-
encoding: Encoding;
|
|
5
|
-
}
|
|
6
|
-
export declare function serialize(value: unknown): Serialized;
|
|
7
|
-
export declare function deserialize({ data, encoding }: Serialized): unknown;
|
|
8
|
-
export declare function serializedByteLength(s: Serialized): number;
|
|
9
|
-
//# sourceMappingURL=serialize.d.ts.map
|