@hmbown/kytchen-storage 0.1.2 → 0.1.3
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/file-store.d.ts +19 -9
- package/dist/file-store.d.ts.map +1 -1
- package/dist/file-store.js +231 -14
- package/dist/file-store.js.map +1 -1
- package/package.json +2 -2
package/dist/file-store.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import type { CompactionSnapshot, RunEvent } from "@hmbown/kytchen-protocol";
|
|
2
2
|
import type { SessionStore, ThreadRecord, TurnRecord } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* File-based session store using JSON files for durability.
|
|
5
|
-
* Structure:
|
|
6
|
-
* <root>/
|
|
7
|
-
* threads/<threadId>.json — ThreadRecord
|
|
8
|
-
* turns/<threadId>/<runId>.json — TurnRecord
|
|
9
|
-
* events/<runId>.jsonl — Append-only event log (one JSON per line)
|
|
10
|
-
* compactions/<threadId>.json — CompactionSnapshot[]
|
|
11
|
-
*/
|
|
12
3
|
export declare class FileSessionStore implements SessionStore {
|
|
13
4
|
private readonly rootDir;
|
|
14
5
|
constructor(rootDir: string);
|
|
@@ -26,10 +17,29 @@ export declare class FileSessionStore implements SessionStore {
|
|
|
26
17
|
getTurn(runId: string): Promise<TurnRecord | null>;
|
|
27
18
|
getTurnsForThread(threadId: string): Promise<TurnRecord[]>;
|
|
28
19
|
deleteTurn(threadId: string, runId: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Each JSONL line is a checksummed envelope:
|
|
22
|
+
* {"event":<event>,"cs":"<sha256-hex>"}
|
|
23
|
+
* where `cs` is the SHA-256 of the compact JSON of `event`.
|
|
24
|
+
*/
|
|
29
25
|
appendEvent(runId: string, event: RunEvent): Promise<void>;
|
|
30
26
|
getEvents(runId: string): Promise<RunEvent[]>;
|
|
31
27
|
saveCompaction(snapshot: CompactionSnapshot): Promise<void>;
|
|
32
28
|
getLatestCompaction(threadId: string): Promise<CompactionSnapshot | null>;
|
|
33
29
|
getCompactionHistory(threadId: string): Promise<CompactionSnapshot[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Walk all persisted files and verify their checksums.
|
|
32
|
+
*
|
|
33
|
+
* Returns counts of:
|
|
34
|
+
* - `valid` — files that exist and pass checksum validation (or are
|
|
35
|
+
* legacy files with no checksum, which are considered valid)
|
|
36
|
+
* - `corrupt` — files that exist but fail checksum validation
|
|
37
|
+
* - `missing` — files that were expected but could not be read
|
|
38
|
+
*/
|
|
39
|
+
validateStore(): Promise<{
|
|
40
|
+
valid: number;
|
|
41
|
+
corrupt: number;
|
|
42
|
+
missing: number;
|
|
43
|
+
}>;
|
|
34
44
|
}
|
|
35
45
|
//# sourceMappingURL=file-store.d.ts.map
|
package/dist/file-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwEzE,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,cAAc;YAIR,SAAS;IAMjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAczD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAsBlD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqB1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmC7C,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKzE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmB3E;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAyGpF"}
|
package/dist/file-store.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { readFile, writeFile, mkdir, readdir, rm } from "node:fs/promises";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
/**
|
|
4
5
|
* File-based session store using JSON files for durability.
|
|
@@ -8,7 +9,53 @@ import { join } from "node:path";
|
|
|
8
9
|
* turns/<threadId>/<runId>.json — TurnRecord
|
|
9
10
|
* events/<runId>.jsonl — Append-only event log (one JSON per line)
|
|
10
11
|
* compactions/<threadId>.json — CompactionSnapshot[]
|
|
12
|
+
*
|
|
13
|
+
* All JSON files are wrapped in a ChecksummedPayload envelope (version 1).
|
|
14
|
+
* JSONL event lines are wrapped per-line as {"event":<event>,"cs":"<hex>"}.
|
|
15
|
+
* Legacy files without a checksum field are read as-is for backward compatibility.
|
|
11
16
|
*/
|
|
17
|
+
/** SHA-256 hex checksum of a UTF-8 string. */
|
|
18
|
+
function computeChecksum(data) {
|
|
19
|
+
return createHash("sha256").update(data, "utf8").digest("hex");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wrap an arbitrary value in a ChecksummedPayload envelope.
|
|
23
|
+
* `data` is the JSON-serialised form of the value; the checksum is computed
|
|
24
|
+
* over that exact string so the round-trip is deterministic.
|
|
25
|
+
*/
|
|
26
|
+
function wrapPayload(value) {
|
|
27
|
+
const data = JSON.stringify(value, null, 2);
|
|
28
|
+
const checksum = computeChecksum(data);
|
|
29
|
+
const envelope = { data, checksum, version: 1 };
|
|
30
|
+
return JSON.stringify(envelope, null, 2);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Unwrap a ChecksummedPayload envelope and validate the checksum.
|
|
34
|
+
*
|
|
35
|
+
* - If the parsed JSON is a ChecksummedPayload (has `checksum` + `data`
|
|
36
|
+
* fields), the checksum is verified. On mismatch a warning is logged
|
|
37
|
+
* and `checksumValid` is set to `false`.
|
|
38
|
+
* - If the JSON has no `checksum` field it is treated as a legacy file and
|
|
39
|
+
* returned directly without validation.
|
|
40
|
+
*
|
|
41
|
+
* Returns `{ value, checksumValid }` where `value` is the unwrapped object
|
|
42
|
+
* and `checksumValid` is `true` (valid), `false` (corrupt), or `null`
|
|
43
|
+
* (legacy — no checksum present).
|
|
44
|
+
*/
|
|
45
|
+
function unwrapPayload(raw, label) {
|
|
46
|
+
const outer = JSON.parse(raw);
|
|
47
|
+
// Legacy path: no checksum field → read as-is.
|
|
48
|
+
if (!("checksum" in outer)) {
|
|
49
|
+
return { value: outer, checksumValid: null };
|
|
50
|
+
}
|
|
51
|
+
const envelope = outer;
|
|
52
|
+
const expected = computeChecksum(envelope.data);
|
|
53
|
+
const checksumValid = envelope.checksum === expected;
|
|
54
|
+
if (!checksumValid) {
|
|
55
|
+
console.warn(`[FileSessionStore] Checksum mismatch for ${label}. File may be corrupt.`);
|
|
56
|
+
}
|
|
57
|
+
return { value: JSON.parse(envelope.data), checksumValid };
|
|
58
|
+
}
|
|
12
59
|
export class FileSessionStore {
|
|
13
60
|
rootDir;
|
|
14
61
|
constructor(rootDir) {
|
|
@@ -33,12 +80,17 @@ export class FileSessionStore {
|
|
|
33
80
|
async createThread(thread) {
|
|
34
81
|
await this.ensureDir(this.threadsDir());
|
|
35
82
|
const path = join(this.threadsDir(), `${thread.id}.json`);
|
|
36
|
-
await writeFile(path,
|
|
83
|
+
await writeFile(path, wrapPayload(thread));
|
|
37
84
|
}
|
|
38
85
|
async getThread(threadId) {
|
|
39
86
|
try {
|
|
40
87
|
const raw = await readFile(join(this.threadsDir(), `${threadId}.json`), "utf-8");
|
|
41
|
-
|
|
88
|
+
const { value, checksumValid } = unwrapPayload(raw, `thread:${threadId}`);
|
|
89
|
+
if (checksumValid === false) {
|
|
90
|
+
// Checksum failed — return null so callers don't use corrupt data.
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return value;
|
|
42
94
|
}
|
|
43
95
|
catch {
|
|
44
96
|
return null;
|
|
@@ -49,7 +101,7 @@ export class FileSessionStore {
|
|
|
49
101
|
if (!existing)
|
|
50
102
|
throw new Error(`Thread not found: ${threadId}`);
|
|
51
103
|
const updated = { ...existing, ...patch, updatedAt: new Date().toISOString() };
|
|
52
|
-
await writeFile(join(this.threadsDir(), `${threadId}.json`),
|
|
104
|
+
await writeFile(join(this.threadsDir(), `${threadId}.json`), wrapPayload(updated));
|
|
53
105
|
}
|
|
54
106
|
async listThreads() {
|
|
55
107
|
try {
|
|
@@ -59,7 +111,13 @@ export class FileSessionStore {
|
|
|
59
111
|
if (!file.endsWith(".json"))
|
|
60
112
|
continue;
|
|
61
113
|
const raw = await readFile(join(this.threadsDir(), file), "utf-8");
|
|
62
|
-
|
|
114
|
+
const threadId = file.replace(/\.json$/, "");
|
|
115
|
+
const { value, checksumValid } = unwrapPayload(raw, `thread:${threadId}`);
|
|
116
|
+
if (checksumValid === false) {
|
|
117
|
+
// Skip corrupt entries in listings.
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
threads.push(value);
|
|
63
121
|
}
|
|
64
122
|
return threads.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
65
123
|
}
|
|
@@ -86,7 +144,7 @@ export class FileSessionStore {
|
|
|
86
144
|
async upsertTurn(turn) {
|
|
87
145
|
await this.ensureDir(this.turnsDir(turn.threadId));
|
|
88
146
|
const path = join(this.turnsDir(turn.threadId), `${turn.runId}.json`);
|
|
89
|
-
await writeFile(path,
|
|
147
|
+
await writeFile(path, wrapPayload(turn));
|
|
90
148
|
}
|
|
91
149
|
async getTurn(runId) {
|
|
92
150
|
// Need to scan turn directories since we index by runId
|
|
@@ -95,7 +153,11 @@ export class FileSessionStore {
|
|
|
95
153
|
for (const threadId of threadDirs) {
|
|
96
154
|
try {
|
|
97
155
|
const raw = await readFile(join(this.turnsDir(threadId), `${runId}.json`), "utf-8");
|
|
98
|
-
|
|
156
|
+
const { value, checksumValid } = unwrapPayload(raw, `turn:${runId}`);
|
|
157
|
+
if (checksumValid === false) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return value;
|
|
99
161
|
}
|
|
100
162
|
catch {
|
|
101
163
|
continue;
|
|
@@ -115,7 +177,13 @@ export class FileSessionStore {
|
|
|
115
177
|
if (!file.endsWith(".json"))
|
|
116
178
|
continue;
|
|
117
179
|
const raw = await readFile(join(this.turnsDir(threadId), file), "utf-8");
|
|
118
|
-
|
|
180
|
+
const runId = file.replace(/\.json$/, "");
|
|
181
|
+
const { value, checksumValid } = unwrapPayload(raw, `turn:${runId}`);
|
|
182
|
+
if (checksumValid === false) {
|
|
183
|
+
// Skip corrupt turns.
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
turns.push(value);
|
|
119
187
|
}
|
|
120
188
|
return turns.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
121
189
|
}
|
|
@@ -128,19 +196,43 @@ export class FileSessionStore {
|
|
|
128
196
|
await rm(join(this.eventsDir(), `${runId}.jsonl`), { force: true });
|
|
129
197
|
}
|
|
130
198
|
// --- Events (append-only JSONL) ---
|
|
199
|
+
/**
|
|
200
|
+
* Each JSONL line is a checksummed envelope:
|
|
201
|
+
* {"event":<event>,"cs":"<sha256-hex>"}
|
|
202
|
+
* where `cs` is the SHA-256 of the compact JSON of `event`.
|
|
203
|
+
*/
|
|
131
204
|
async appendEvent(runId, event) {
|
|
132
205
|
await this.ensureDir(this.eventsDir());
|
|
133
206
|
const path = join(this.eventsDir(), `${runId}.jsonl`);
|
|
134
|
-
const
|
|
207
|
+
const eventJson = JSON.stringify(event);
|
|
208
|
+
const cs = computeChecksum(eventJson);
|
|
209
|
+
const line = JSON.stringify({ event, cs }) + "\n";
|
|
135
210
|
await writeFile(path, line, { flag: "a" });
|
|
136
211
|
}
|
|
137
212
|
async getEvents(runId) {
|
|
138
213
|
try {
|
|
139
214
|
const raw = await readFile(join(this.eventsDir(), `${runId}.jsonl`), "utf-8");
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
215
|
+
const events = [];
|
|
216
|
+
const lines = raw.split("\n").filter((line) => line.trim().length > 0);
|
|
217
|
+
for (const line of lines) {
|
|
218
|
+
const parsed = JSON.parse(line);
|
|
219
|
+
// Legacy path: line is a bare RunEvent (no `cs` field).
|
|
220
|
+
if (!("cs" in parsed)) {
|
|
221
|
+
events.push(parsed);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
// Checksummed envelope.
|
|
225
|
+
const { event, cs } = parsed;
|
|
226
|
+
const expectedCs = computeChecksum(JSON.stringify(event));
|
|
227
|
+
if (cs !== expectedCs) {
|
|
228
|
+
console.warn(`[FileSessionStore] Event checksum mismatch in run ${runId}. Line skipped for safety.`);
|
|
229
|
+
// Graceful degradation: include the event data anyway but log the warning.
|
|
230
|
+
events.push(event);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
events.push(event);
|
|
234
|
+
}
|
|
235
|
+
return events;
|
|
144
236
|
}
|
|
145
237
|
catch {
|
|
146
238
|
return [];
|
|
@@ -152,7 +244,7 @@ export class FileSessionStore {
|
|
|
152
244
|
const path = join(this.compactionsDir(), `${snapshot.threadId}.json`);
|
|
153
245
|
const history = await this.getCompactionHistory(snapshot.threadId);
|
|
154
246
|
history.push(snapshot);
|
|
155
|
-
await writeFile(path,
|
|
247
|
+
await writeFile(path, wrapPayload(history));
|
|
156
248
|
}
|
|
157
249
|
async getLatestCompaction(threadId) {
|
|
158
250
|
const history = await this.getCompactionHistory(threadId);
|
|
@@ -161,11 +253,136 @@ export class FileSessionStore {
|
|
|
161
253
|
async getCompactionHistory(threadId) {
|
|
162
254
|
try {
|
|
163
255
|
const raw = await readFile(join(this.compactionsDir(), `${threadId}.json`), "utf-8");
|
|
164
|
-
|
|
256
|
+
const { value, checksumValid } = unwrapPayload(raw, `compaction:${threadId}`);
|
|
257
|
+
if (checksumValid === false) {
|
|
258
|
+
// Corrupt compaction history — return empty rather than broken data.
|
|
259
|
+
return [];
|
|
260
|
+
}
|
|
261
|
+
return value;
|
|
165
262
|
}
|
|
166
263
|
catch {
|
|
167
264
|
return [];
|
|
168
265
|
}
|
|
169
266
|
}
|
|
267
|
+
// --- Integrity validation ---
|
|
268
|
+
/**
|
|
269
|
+
* Walk all persisted files and verify their checksums.
|
|
270
|
+
*
|
|
271
|
+
* Returns counts of:
|
|
272
|
+
* - `valid` — files that exist and pass checksum validation (or are
|
|
273
|
+
* legacy files with no checksum, which are considered valid)
|
|
274
|
+
* - `corrupt` — files that exist but fail checksum validation
|
|
275
|
+
* - `missing` — files that were expected but could not be read
|
|
276
|
+
*/
|
|
277
|
+
async validateStore() {
|
|
278
|
+
let valid = 0;
|
|
279
|
+
let corrupt = 0;
|
|
280
|
+
let missing = 0;
|
|
281
|
+
const checkFile = async (filePath, label) => {
|
|
282
|
+
try {
|
|
283
|
+
const raw = await readFile(filePath, "utf-8");
|
|
284
|
+
const { checksumValid } = unwrapPayload(raw, label);
|
|
285
|
+
if (checksumValid === false) {
|
|
286
|
+
corrupt++;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
// null (legacy) or true (valid)
|
|
290
|
+
valid++;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
missing++;
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
const checkJsonlFile = async (filePath, runId) => {
|
|
298
|
+
try {
|
|
299
|
+
const raw = await readFile(filePath, "utf-8");
|
|
300
|
+
const lines = raw.split("\n").filter((l) => l.trim().length > 0);
|
|
301
|
+
for (const line of lines) {
|
|
302
|
+
try {
|
|
303
|
+
const parsed = JSON.parse(line);
|
|
304
|
+
if (!("cs" in parsed)) {
|
|
305
|
+
// Legacy line — count as valid.
|
|
306
|
+
valid++;
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
const { event, cs } = parsed;
|
|
310
|
+
const expectedCs = computeChecksum(JSON.stringify(event));
|
|
311
|
+
if (cs !== expectedCs) {
|
|
312
|
+
console.warn(`[FileSessionStore] validateStore: event checksum mismatch in run ${runId}`);
|
|
313
|
+
corrupt++;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
valid++;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
corrupt++;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
missing++;
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
// Threads
|
|
329
|
+
try {
|
|
330
|
+
const threadFiles = await readdir(this.threadsDir());
|
|
331
|
+
for (const file of threadFiles) {
|
|
332
|
+
if (!file.endsWith(".json"))
|
|
333
|
+
continue;
|
|
334
|
+
await checkFile(join(this.threadsDir(), file), `thread:${file}`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
// Directory doesn't exist — nothing to validate.
|
|
339
|
+
}
|
|
340
|
+
// Turns
|
|
341
|
+
try {
|
|
342
|
+
const threadDirs = await readdir(join(this.rootDir, "turns"));
|
|
343
|
+
for (const threadId of threadDirs) {
|
|
344
|
+
try {
|
|
345
|
+
const turnFiles = await readdir(this.turnsDir(threadId));
|
|
346
|
+
for (const file of turnFiles) {
|
|
347
|
+
if (!file.endsWith(".json"))
|
|
348
|
+
continue;
|
|
349
|
+
await checkFile(join(this.turnsDir(threadId), file), `turn:${file}`);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
// Skip unreadable thread turn directory.
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
// turns directory doesn't exist.
|
|
359
|
+
}
|
|
360
|
+
// Events (JSONL)
|
|
361
|
+
try {
|
|
362
|
+
const eventFiles = await readdir(this.eventsDir());
|
|
363
|
+
for (const file of eventFiles) {
|
|
364
|
+
if (!file.endsWith(".jsonl"))
|
|
365
|
+
continue;
|
|
366
|
+
const runId = file.replace(/\.jsonl$/, "");
|
|
367
|
+
await checkJsonlFile(join(this.eventsDir(), file), runId);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
// events directory doesn't exist.
|
|
372
|
+
}
|
|
373
|
+
// Compactions
|
|
374
|
+
try {
|
|
375
|
+
const compactionFiles = await readdir(this.compactionsDir());
|
|
376
|
+
for (const file of compactionFiles) {
|
|
377
|
+
if (!file.endsWith(".json"))
|
|
378
|
+
continue;
|
|
379
|
+
await checkFile(join(this.compactionsDir(), file), `compaction:${file}`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
catch {
|
|
383
|
+
// compactions directory doesn't exist.
|
|
384
|
+
}
|
|
385
|
+
return { valid, corrupt, missing };
|
|
386
|
+
}
|
|
170
387
|
}
|
|
171
388
|
//# sourceMappingURL=file-store.js.map
|
package/dist/file-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-store.js","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAExC,UAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IACO,QAAQ,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACO,SAAS;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IACO,cAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAW;QACjC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB;IAElB,KAAK,CAAC,YAAY,CAAC,MAAoB;QACrC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAA4B;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/E,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,0CAA0C;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,gBAAgB;IAEhB,KAAK,CAAC,UAAU,CAAC,IAAgB;QAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;QACtE,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa;QACzB,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,MAAM,KAAK,GAAiB,EAAE,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAAa;QAC9C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,qCAAqC;IAErC,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,KAAe;QAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC1C,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,OAAO,GAAG;iBACP,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,qBAAqB;IAErB,KAAK,CAAC,cAAc,CAAC,QAA4B;QAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"file-store.js","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hmbown/kytchen-storage",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Session persistence for Kytchen: file-based and in-memory stores with compaction support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"README.md"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@hmbown/kytchen-protocol": "0.1.
|
|
21
|
+
"@hmbown/kytchen-protocol": "0.1.3"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
24
|
"kytchen",
|