@claudexor/journal 3.10.5 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/append-batch.d.ts +2 -0
  2. package/dist/append-batch.d.ts.map +1 -1
  3. package/dist/append-batch.js +4 -0
  4. package/dist/append-batch.js.map +1 -1
  5. package/dist/frame-codec.d.ts +54 -0
  6. package/dist/frame-codec.d.ts.map +1 -1
  7. package/dist/frame-codec.js +167 -87
  8. package/dist/frame-codec.js.map +1 -1
  9. package/dist/frame-reader.d.ts +30 -0
  10. package/dist/frame-reader.d.ts.map +1 -0
  11. package/dist/frame-reader.js +97 -0
  12. package/dist/frame-reader.js.map +1 -0
  13. package/dist/index.d.ts +34 -44
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +81 -156
  16. package/dist/index.js.map +1 -1
  17. package/dist/journal-background-compaction.d.ts +7 -2
  18. package/dist/journal-background-compaction.d.ts.map +1 -1
  19. package/dist/journal-background-compaction.js +79 -78
  20. package/dist/journal-background-compaction.js.map +1 -1
  21. package/dist/journal-compaction-chunks.d.ts +29 -0
  22. package/dist/journal-compaction-chunks.d.ts.map +1 -0
  23. package/dist/journal-compaction-chunks.js +112 -0
  24. package/dist/journal-compaction-chunks.js.map +1 -0
  25. package/dist/journal-compaction.d.ts +27 -5
  26. package/dist/journal-compaction.d.ts.map +1 -1
  27. package/dist/journal-compaction.js +22 -4
  28. package/dist/journal-compaction.js.map +1 -1
  29. package/dist/journal-core.d.ts +96 -0
  30. package/dist/journal-core.d.ts.map +1 -0
  31. package/dist/journal-core.js +173 -0
  32. package/dist/journal-core.js.map +1 -0
  33. package/dist/journal-files.d.ts +0 -1
  34. package/dist/journal-files.d.ts.map +1 -1
  35. package/dist/journal-files.js +0 -9
  36. package/dist/journal-files.js.map +1 -1
  37. package/dist/journal-fold.d.ts +47 -0
  38. package/dist/journal-fold.d.ts.map +1 -0
  39. package/dist/journal-fold.js +81 -0
  40. package/dist/journal-fold.js.map +1 -0
  41. package/dist/journal-recovery.d.ts +18 -6
  42. package/dist/journal-recovery.d.ts.map +1 -1
  43. package/dist/journal-recovery.js +46 -30
  44. package/dist/journal-recovery.js.map +1 -1
  45. package/dist/read-only-preparation.d.ts +7 -0
  46. package/dist/read-only-preparation.d.ts.map +1 -1
  47. package/dist/read-only-preparation.js +98 -41
  48. package/dist/read-only-preparation.js.map +1 -1
  49. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-reader.js","sourceRoot":"","sources":["../src/frame-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAuBrC;;gFAEgF;AAChF,MAAM,UAAU,UAAU,CACxB,EAAU,EACV,SAAiB,EACjB,OAAO,GAAqB,EAAE;IAE9B,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,KAAK,GAA6B,IAAI,CAAC;IAC3C,OAAO,MAAM,GAAG,GAAG,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,eAAe,CAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EACtD,SAAS,CACV,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACnC,gBAAgB,GAAG,MAAM,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EACvC,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,CACrB,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM;QACR,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAE;SACxC,CAAC,CACH,CAAC;QACF,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,WAAW;QAC1B,iBAAiB,EAAE,KAAK,CAAC,QAAQ;QACjC,cAAc,EAAE,MAAM;QACtB,gBAAgB;QAChB,KAAK;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,gBAAgB;IAMD,EAAE;IACF,GAAG;IANd,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,CAAC,CAAC;IAEnB,YACmB,EAAU,EACV,GAAW;kBADX,EAAE;mBACF,GAAG;IACnB,CAAC;IAEJ,wEAAwE;IACxE,IAAI,CAAC,MAAc,EAAE,MAAc;QACjC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACtF,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACpE,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,40 +1,18 @@
1
1
  import { type JournalRecord } from "./frame-codec.js";
2
- import { type JournalCompactionResult } from "./journal-compaction.js";
2
+ import { type JournalCompactionOutcome } from "./journal-compaction.js";
3
+ import { JournalCore, type DurableJournalOptions } from "./journal-core.js";
3
4
  import { type JournalPreparationReceipt } from "./read-only-preparation.js";
4
- export type { JournalRecord, JournalPreparationReceipt };
5
+ export type { JournalRecord, JournalPreparationReceipt, DurableJournalOptions };
5
6
  export { JournalCursorError } from "./journal-cursor.js";
6
7
  export { journalPartitionDirectory } from "./journal-partition.js";
7
8
  export { JournalRecoveryRequiredError, JournalAppendUncertainError };
8
9
  export type { JournalRecoveryLocation, JournalRecoveryState } from "./journal-recovery-state.js";
10
+ export type { FoldRecord, FoldVerdict, JournalFold } from "./journal-fold.js";
11
+ export { keepEverything } from "./journal-fold.js";
12
+ export type { JournalCompactionDeclined, JournalCompactionOutcome, JournalCompactionReceipt, } from "./journal-compaction.js";
9
13
  import { JournalRecoveryRequiredError, JournalAppendUncertainError, type JournalRecoveryState } from "./journal-recovery-state.js";
10
- export interface DurableJournalOptions {
11
- rootDir: string;
12
- partition: string;
13
- now?: () => Date;
14
- epochFactory?: () => string;
15
- appendAndSync?: (fd: number, bytes: Buffer) => void;
16
- compactionThresholdBytes?: number;
17
- /** The daemon opts into after-admission maintenance; standalone callers keep inline compaction. */
18
- deferCompaction?: boolean;
19
- }
20
14
  /** Single-writer, checksummed journal. A returned append has reached fsync. */
21
- export declare class DurableJournal {
22
- readonly options: Readonly<DurableJournalOptions>;
23
- readonly partitionDir: string;
24
- readonly path: string;
25
- private readonly now;
26
- private readonly appendFrame;
27
- private fd;
28
- private entries;
29
- private background;
30
- private epoch;
31
- private nextSeq;
32
- private previousFrameHash;
33
- private knownFileBytes;
34
- private recovery;
35
- private preparationState;
36
- private writable;
37
- private closed;
15
+ export declare class DurableJournal extends JournalCore {
38
16
  static prepare(options: DurableJournalOptions): DurableJournal;
39
17
  constructor(options: DurableJournalOptions);
40
18
  state(): JournalRecoveryState;
@@ -50,18 +28,29 @@ export declare class DurableJournal {
50
28
  currentSequence(): number;
51
29
  currentEpoch(): string;
52
30
  physicalBytes(): number;
53
- /** Atomically replace physical frames with one checksummed compressed frame. */
31
+ /** What the configured fold retired while replaying the file (preparation,
32
+ * construction or activation). Compaction-time retirement is reported on the
33
+ * compaction receipt instead, so the daemon can log both. */
34
+ retiredAtReplay(): {
35
+ count: number;
36
+ bytes: number;
37
+ };
38
+ /** Atomically replace physical frames with one checksummed compressed frame.
39
+ * Refused when a fold is configured: this lossless single-frame writer would
40
+ * persist the retained set renumbered from 1 as a complete history, which an
41
+ * older engine cannot tell apart from a lossless snapshot. */
54
42
  compact(): {
55
43
  beforeBytes: number;
56
44
  afterBytes: number;
57
45
  records: number;
58
46
  } | null;
59
47
  /** Automatic maintenance preserves logical epoch/seq cursors, including ACKed
60
- * appends during preparation. The first caller's signal owns a shared flight. */
48
+ * appends during preparation, and applies the configured fold. The first
49
+ * caller's signal owns a shared flight; a decline is typed, never silent. */
61
50
  compactInBackground(options: {
62
51
  stagingDir: string;
63
52
  signal?: AbortSignal;
64
- }): Promise<JournalCompactionResult["receipt"] | null>;
53
+ }): Promise<JournalCompactionOutcome>;
65
54
  sequenceAfter(cursor: string | null | undefined): number;
66
55
  cursorFor(record: Pick<JournalRecord, "partition" | "epoch" | "seq">): string;
67
56
  append<T>(type: string, payload: T): JournalRecord<T>;
@@ -72,18 +61,19 @@ export declare class DurableJournal {
72
61
  type: string;
73
62
  payload: unknown;
74
63
  }[]): JournalRecord[];
75
- private recover;
76
- private intentPath;
77
- private openWriter;
64
+ /** Replay, then journal a discarded pending suffix through the ordinary append path. */
65
+ private replay;
66
+ /** Edge-triggered: one notification per crossing, decoupled from the ACK
67
+ * already returned to the appender and silent once the journal is closed;
68
+ * any completed maintenance pass re-arms it. */
69
+ private notifyThreshold;
70
+ /** An immediate decline is a completed pass too: it re-arms the hook. It
71
+ * never moves the growth baseline — nothing was observed over the data, and
72
+ * moving it on a below-threshold request would delay the first crossing. */
73
+ private declined;
74
+ /** A fold implies deferred, seq-preserving background compaction: the
75
+ * lossless synchronous path would mint a new epoch and renumber the
76
+ * retained set. Explicit `compact()` keeps its own contract. */
78
77
  private compactAtThreshold;
79
- private atCompactionThreshold;
80
- /** One physical install owner for both producers; no serialization or await. */
81
- private installCompaction;
82
- private closeWriter;
83
- private failPreparedActivation;
84
- private requireRecovery;
85
- private assertReadable;
86
- private assertWritable;
87
- private assertOpen;
88
78
  }
89
79
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,39 +1,24 @@
1
- import { recoverJournal } from "./journal-recovery.js";
2
1
  import { randomUUID } from "node:crypto";
3
- import { closeSync, fstatSync, lstatSync, renameSync, rmSync } from "node:fs";
4
- import { dirname, join } from "node:path";
5
- import { ensureCanonicalPrivateDirectory, fsyncDirectory } from "@claudexor/util";
6
- import { prepareAppendBatch } from "./append-batch.js";
2
+ import { fstatSync, lstatSync, rmSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { ensureCanonicalPrivateDirectory } from "@claudexor/util";
5
+ import { cloneJson, prepareAppendBatch } from "./append-batch.js";
7
6
  import { ZERO_HASH } from "./frame-codec.js";
8
- import { prepareJournalCompaction } from "./journal-compaction.js";
7
+ import { declinedCompaction, prepareJournalCompaction, } from "./journal-compaction.js";
9
8
  import { prepareBackgroundCompaction, sameBoundary, } from "./journal-background-compaction.js";
10
- import { appendAndSync, ensurePrivateFile, sameJournalFile, openJournalWriter, reopenOriginalWriter, readIntent, removeFile, writeIntent, } from "./journal-files.js";
9
+ import { JournalCore } from "./journal-core.js";
10
+ import { ensurePrivateFile, sameJournalFile, readIntent, removeFile, writeIntent, } from "./journal-files.js";
11
11
  import { sequenceAfterCursor, encodeCursor, JournalCursorError } from "./journal-cursor.js";
12
12
  import { journalPartitionDirectory } from "./journal-partition.js";
13
13
  import { fingerprintPreparedJournal, inspectPreparedJournal, } from "./read-only-preparation.js";
14
14
  export { JournalCursorError } from "./journal-cursor.js";
15
15
  export { journalPartitionDirectory } from "./journal-partition.js";
16
16
  export { JournalRecoveryRequiredError, JournalAppendUncertainError };
17
- import { JournalRecoveryRequiredError, JournalAppendUncertainError, journalRecoveryAt, } from "./journal-recovery-state.js";
17
+ export { keepEverything } from "./journal-fold.js";
18
+ import { JournalRecoveryRequiredError, JournalAppendUncertainError, } from "./journal-recovery-state.js";
18
19
  const PREPARED_JOURNAL = Symbol("prepared-journal");
19
20
  /** Single-writer, checksummed journal. A returned append has reached fsync. */
20
- export class DurableJournal {
21
- options;
22
- partitionDir;
23
- path;
24
- now;
25
- appendFrame;
26
- fd = -1;
27
- entries = [];
28
- background = null;
29
- epoch;
30
- nextSeq = 1;
31
- previousFrameHash = ZERO_HASH;
32
- knownFileBytes = 0;
33
- recovery = { status: "ready", discardedTailBytes: 0 };
34
- preparationState = null;
35
- writable = false;
36
- closed = false;
21
+ export class DurableJournal extends JournalCore {
37
22
  static prepare(options) {
38
23
  if (!options.partition.trim())
39
24
  throw new Error("journal partition must not be empty");
@@ -45,18 +30,13 @@ export class DurableJournal {
45
30
  intentPath: join(partitionDir, "append.pending.json"),
46
31
  partition: options.partition,
47
32
  initialEpoch: (options.epochFactory ?? randomUUID)(),
33
+ fold: options.fold,
48
34
  });
49
35
  const InternalJournal = DurableJournal;
50
36
  return new InternalJournal(options, PREPARED_JOURNAL, prepared);
51
37
  }
52
38
  constructor(options, token, prepared) {
53
- if (!options.partition.trim())
54
- throw new Error("journal partition must not be empty");
55
- this.options = Object.freeze({ ...options });
56
- this.now = options.now ?? (() => new Date());
57
- this.appendFrame = options.appendAndSync ?? appendAndSync;
58
- this.partitionDir = journalPartitionDirectory(options.rootDir, options.partition);
59
- this.path = join(this.partitionDir, "journal.bin");
39
+ super(options);
60
40
  if (token === PREPARED_JOURNAL && prepared) {
61
41
  this.preparationState = prepared.receipt;
62
42
  this.recovery = structuredClone(prepared.recovery);
@@ -66,6 +46,8 @@ export class DurableJournal {
66
46
  this.nextSeq = prepared.nextSeq;
67
47
  this.previousFrameHash = prepared.previousFrameHash;
68
48
  this.knownFileBytes = prepared.knownFileBytes;
49
+ this.replayRetired = { count: prepared.retiredCount, bytes: prepared.retiredBytes };
50
+ this.compactionBaselineBytes = this.replayBaselineBytes();
69
51
  return;
70
52
  }
71
53
  ensureCanonicalPrivateDirectory(options.rootDir);
@@ -73,7 +55,7 @@ export class DurableJournal {
73
55
  ensureCanonicalPrivateDirectory(this.partitionDir);
74
56
  ensurePrivateFile(this.path);
75
57
  this.openWriter();
76
- this.recover();
58
+ this.replay();
77
59
  this.compactAtThreshold();
78
60
  }
79
61
  state() {
@@ -117,7 +99,7 @@ export class DurableJournal {
117
99
  this.knownFileBytes = 0;
118
100
  this.recovery = { status: "ready", discardedTailBytes: 0 };
119
101
  this.openWriter();
120
- this.recover();
102
+ this.replay();
121
103
  const activatedRecovery = this.state();
122
104
  if (activatedRecovery.status === "recovery_required") {
123
105
  throw new JournalRecoveryRequiredError(activatedRecovery);
@@ -166,8 +148,21 @@ export class DurableJournal {
166
148
  this.assertOpen();
167
149
  return this.knownFileBytes;
168
150
  }
169
- /** Atomically replace physical frames with one checksummed compressed frame. */
151
+ /** What the configured fold retired while replaying the file (preparation,
152
+ * construction or activation). Compaction-time retirement is reported on the
153
+ * compaction receipt instead, so the daemon can log both. */
154
+ retiredAtReplay() {
155
+ this.assertOpen();
156
+ return { ...this.replayRetired };
157
+ }
158
+ /** Atomically replace physical frames with one checksummed compressed frame.
159
+ * Refused when a fold is configured: this lossless single-frame writer would
160
+ * persist the retained set renumbered from 1 as a complete history, which an
161
+ * older engine cannot tell apart from a lossless snapshot. */
170
162
  compact() {
163
+ if (this.options.fold) {
164
+ throw new Error("synchronous compaction is unavailable with a fold; use compactInBackground");
165
+ }
171
166
  this.background?.controller.abort();
172
167
  this.assertReadable();
173
168
  this.assertWritable();
@@ -189,16 +184,19 @@ export class DurableJournal {
189
184
  }
190
185
  }
191
186
  /** Automatic maintenance preserves logical epoch/seq cursors, including ACKed
192
- * appends during preparation. The first caller's signal owns a shared flight. */
187
+ * appends during preparation, and applies the configured fold. The first
188
+ * caller's signal owns a shared flight; a decline is typed, never silent. */
193
189
  compactInBackground(options) {
194
190
  if (this.background)
195
191
  return this.background.promise;
196
192
  this.assertReadable();
197
193
  this.assertWritable();
198
194
  if (options.signal?.aborted)
199
- return Promise.resolve(null);
200
- if (!this.atCompactionThreshold() || this.entries.length === 0)
201
- return Promise.resolve(null);
195
+ return Promise.resolve(this.declined("aborted"));
196
+ if (!this.atCompactionThreshold())
197
+ return Promise.resolve(this.declined("below_threshold"));
198
+ if (this.nextSeq <= 1)
199
+ return Promise.resolve(this.declined("empty"));
202
200
  const controller = new AbortController();
203
201
  const abort = () => controller.abort();
204
202
  options.signal?.addEventListener("abort", abort, { once: true });
@@ -227,6 +225,7 @@ export class DurableJournal {
227
225
  time: this.now().toISOString(),
228
226
  entries,
229
227
  prefix: current(),
228
+ fold: this.options.fold,
230
229
  current,
231
230
  install: (candidate, boundary) => {
232
231
  if (!sameBoundary(current(), boundary))
@@ -241,9 +240,18 @@ export class DurableJournal {
241
240
  return true;
242
241
  },
243
242
  }).finally(() => {
243
+ // Every pass that reached the data settles the growth baseline —
244
+ // install, real decline, a pass aborted in flight (it resolves as a
245
+ // declined `aborted` through this promise) or failure alike (an install
246
+ // already set it to the installed size): the next attempt waits for a
247
+ // threshold of NEW bytes instead of re-folding the whole retained
248
+ // prefix, and failing again, on every following append (an unwritable
249
+ // staging directory, an ENOSPC window).
250
+ this.compactionBaselineBytes = this.knownFileBytes;
244
251
  options.signal?.removeEventListener("abort", abort);
245
252
  if (this.background?.promise === promise)
246
253
  this.background = null;
254
+ this.thresholdNotified = false;
247
255
  });
248
256
  this.background = { controller, promise };
249
257
  return promise;
@@ -305,134 +313,51 @@ export class DurableJournal {
305
313
  this.nextSeq = batch.nextSeq;
306
314
  this.previousFrameHash = batch.previousFrameHash;
307
315
  this.knownFileBytes += batch.bytes.length;
316
+ this.notifyThreshold();
308
317
  return batch.records.map((record) => ({ ...record, payload: cloneJson(record.payload) }));
309
318
  }
310
- recover() {
311
- let result;
312
- try {
313
- result = recoverJournal(this.fd, this.path, this.options.partition, this.intentPath());
314
- }
315
- catch (error) {
316
- if (!(error instanceof JournalRecoveryRequiredError))
317
- throw error;
318
- this.recovery = error.recovery;
319
+ /** Replay, then journal a discarded pending suffix through the ordinary append path. */
320
+ replay() {
321
+ const discardedBytes = this.recover();
322
+ if (discardedBytes === 0)
319
323
  return;
320
- }
321
- this.entries = result.records;
322
- const last = this.entries.at(-1);
323
- if (last) {
324
- this.epoch = last.epoch;
325
- this.nextSeq = last.seq + 1;
326
- this.previousFrameHash = last.frameHash;
327
- }
328
- this.knownFileBytes = result.knownFileBytes;
329
- if (result.discardedBytes > 0) {
330
- this.recovery = { status: "ready", discardedTailBytes: result.discardedBytes };
331
- this.append("journal.recovery_tail_discarded", {
332
- recoveryId: randomUUID(),
333
- discardedBytes: result.discardedBytes,
334
- validBytes: result.knownFileBytes,
335
- originalBytes: result.knownFileBytes + result.discardedBytes,
336
- detectedAt: this.now().toISOString(),
337
- });
338
- }
324
+ this.append("journal.recovery_tail_discarded", {
325
+ recoveryId: randomUUID(),
326
+ discardedBytes,
327
+ validBytes: this.knownFileBytes,
328
+ originalBytes: this.knownFileBytes + discardedBytes,
329
+ detectedAt: this.now().toISOString(),
330
+ });
339
331
  }
340
- intentPath() {
341
- return join(this.partitionDir, "append.pending.json");
332
+ /** Edge-triggered: one notification per crossing, decoupled from the ACK
333
+ * already returned to the appender and silent once the journal is closed;
334
+ * any completed maintenance pass re-arms it. */
335
+ notifyThreshold() {
336
+ const hook = this.options.onCompactionThreshold;
337
+ if (!hook || this.thresholdNotified || !this.atCompactionThreshold())
338
+ return;
339
+ this.thresholdNotified = true;
340
+ queueMicrotask(() => {
341
+ if (!this.closed)
342
+ hook();
343
+ });
342
344
  }
343
- openWriter() {
344
- this.fd = openJournalWriter(this.path);
345
- this.writable = true;
345
+ /** An immediate decline is a completed pass too: it re-arms the hook. It
346
+ * never moves the growth baseline — nothing was observed over the data, and
347
+ * moving it on a below-threshold request would delay the first crossing. */
348
+ declined(reason) {
349
+ this.thresholdNotified = false;
350
+ return declinedCompaction(reason);
346
351
  }
352
+ /** A fold implies deferred, seq-preserving background compaction: the
353
+ * lossless synchronous path would mint a new epoch and renumber the
354
+ * retained set. Explicit `compact()` keeps its own contract. */
347
355
  compactAtThreshold() {
348
356
  if (!this.options.deferCompaction &&
357
+ !this.options.fold &&
349
358
  this.recovery.status === "ready" &&
350
359
  this.atCompactionThreshold())
351
360
  this.compact();
352
361
  }
353
- atCompactionThreshold() {
354
- return this.knownFileBytes >= (this.options.compactionThresholdBytes ?? 8 * 1024 * 1024);
355
- }
356
- /** One physical install owner for both producers; no serialization or await. */
357
- installCompaction(result) {
358
- const original = fstatSync(this.fd);
359
- if (result.knownFileBytes >= this.knownFileBytes)
360
- throw new Error("compaction did not reclaim bytes");
361
- let renamed = false;
362
- let closed = false;
363
- const fd = this.fd;
364
- this.fd = -1;
365
- this.writable = false;
366
- try {
367
- closeSync(fd);
368
- closed = true;
369
- renameSync(result.path, this.path);
370
- renamed = true;
371
- fsyncDirectory(dirname(this.path));
372
- this.openWriter();
373
- }
374
- catch (error) {
375
- this.closeWriter();
376
- if (closed && !renamed) {
377
- this.fd = reopenOriginalWriter(this.path, original);
378
- this.writable = this.fd >= 0;
379
- }
380
- if (!this.writable)
381
- throw new JournalRecoveryRequiredError(this.requireRecovery(0, `journal compaction install failed: ${error instanceof Error ? error.message : String(error)}`));
382
- throw error;
383
- }
384
- this.entries = result.records;
385
- this.epoch = result.epoch;
386
- this.nextSeq = result.nextSeq;
387
- this.previousFrameHash = result.previousFrameHash;
388
- this.knownFileBytes = result.knownFileBytes;
389
- }
390
- closeWriter() {
391
- const fd = this.fd;
392
- this.fd = -1;
393
- this.writable = false;
394
- if (fd < 0)
395
- return;
396
- try {
397
- closeSync(fd);
398
- }
399
- catch {
400
- /* best-effort revocation: the handle number is never reused by this writer */
401
- }
402
- }
403
- failPreparedActivation(error) {
404
- this.closeWriter();
405
- this.entries.length = 0;
406
- this.nextSeq = 1;
407
- this.previousFrameHash = ZERO_HASH;
408
- this.knownFileBytes = 0;
409
- const recovery = error instanceof JournalRecoveryRequiredError
410
- ? error.recovery
411
- : this.requireRecovery(0, `prepared activation failed: ${error instanceof Error ? error.message : String(error)}`);
412
- this.recovery = structuredClone(recovery);
413
- throw new JournalRecoveryRequiredError(recovery);
414
- }
415
- requireRecovery(byteOffset, reason) {
416
- this.recovery = journalRecoveryAt(byteOffset, reason);
417
- this.background?.controller.abort();
418
- return this.recovery;
419
- }
420
- assertReadable() {
421
- this.assertOpen();
422
- if (this.recovery.status === "recovery_required") {
423
- throw new JournalRecoveryRequiredError(this.recovery);
424
- }
425
- }
426
- assertWritable() {
427
- if (!this.writable)
428
- throw new Error("journal preparation is not activated");
429
- }
430
- assertOpen() {
431
- if (this.closed)
432
- throw new Error("journal writer is closed");
433
- }
434
- }
435
- function cloneJson(value) {
436
- return JSON.parse(JSON.stringify(value));
437
362
  }
438
363
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAgC,MAAM,yBAAyB,CAAC;AACjG,OAAO,EACL,2BAA2B,EAC3B,YAAY,GAEb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GAGvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,CAAC;AAErE,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AAYrC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,OAAO,cAAc;IAChB,OAAO,CAAkC;IACzC,YAAY,CAAS;IACrB,IAAI,CAAS;IACL,GAAG,CAAa;IAChB,WAAW,CAAsC;IAC1D,EAAE,GAAG,CAAC,CAAC,CAAC;IACR,OAAO,GAAoB,EAAE,CAAC;IAC9B,UAAU,GAGP,IAAI,CAAC;IACR,KAAK,CAAS;IACd,OAAO,GAAG,CAAC,CAAC;IACZ,iBAAiB,GAAG,SAAS,CAAC;IAC9B,cAAc,GAAG,CAAC,CAAC;IACnB,QAAQ,GAAyB,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IAC5E,gBAAgB,GAAqC,IAAI,CAAC;IAC1D,QAAQ,GAAG,KAAK,CAAC;IACjB,MAAM,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,OAAO,CAAC,OAA8B;QAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,sBAAsB,CAAC;YACtC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY;YACZ,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC;YACrD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,cAMvB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAGD,YACE,OAA8B,EAC9B,KAA+B,EAC/B,QAAoC;QAEpC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,gBAAgB,IAAI,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACpD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,+BAA+B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,EAAE,CAAC;QACpD,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC1F,OAAO,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACnF,IACE,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAW;YACxD,MAAM,CAAC,mBAAmB,KAAK,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EACxE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,iBAAiB,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBACrD,MAAM,IAAI,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;gFAC4E;IAC5E,OAAO,CAAc,QAAQ,GAAG,CAAC,EAAE,KAAyB;QAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aACpF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAM,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjE,MAAM,IAAI,kBAAkB,CAAC,sDAAsD,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,eAAe;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,gFAAgF;IAChF,OAAO;QACL,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,wBAAwB,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;qFACiF;IACjF,mBAAmB,CAAC,OAGnB;QACC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7F,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAuB,EAAE;YACvC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBACpE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,2BAA2B,CAAC;YAC1C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YAC9B,OAAO;YACP,MAAM,EAAE,OAAO,EAAE;YACjB,OAAO;YACP,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,IACE,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC;oBAC3D,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC;oBACzD,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAE7B,MAAM,IAAI,4BAA4B,CACpC,IAAI,CAAC,eAAe,CAClB,QAAQ,CAAC,cAAc,EACvB,6DAA6D,CAC9D,CACF,CAAC;gBACJ,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO;gBAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,MAAiC;QAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,SAAS,CAAC,MAA0D;QAClE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/E,MAAM,IAAI,kBAAkB,CAAC,uDAAuD,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAI,IAAY,EAAE,OAAU;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAqB,CAAC;IACtE,CAAC;IAED;;kDAE8C;IAC9C,WAAW,CAAC,OAAsD;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACpF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,WAAW,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,MAAM,IAAI,4BAA4B,CACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,2CAA2C,CAAC,CACvF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO;SACR,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,UAAU,EACV,oFAAoF,CACrF,CAAC;YACF,MAAM,IAAI,2BAA2B,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEO,OAAO;QACb,IAAI,MAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,4BAA4B,CAAC;gBAAE,MAAM,KAAK,CAAC;YAClE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,iCAAiC,EAAE;gBAC7C,UAAU,EAAE,UAAU,EAAE;gBACxB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,cAAc;gBACjC,aAAa,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;gBAC5D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACxD,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,kBAAkB;QACxB,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO;YAChC,IAAI,CAAC,qBAAqB,EAAE;YAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,gFAAgF;IACxE,iBAAiB,CAAC,MAA+B;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;YAC9C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,GAAG,IAAI,CAAC;YACd,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC;YACf,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAChB,MAAM,IAAI,4BAA4B,CACpC,IAAI,CAAC,eAAe,CAClB,CAAC,EACD,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/F,CACF,CAAC;YACJ,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC9C,CAAC;IAEO,WAAW;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO;QACnB,IAAI,CAAC;YACH,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,8EAA8E;QAChF,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAc;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,MAAM,QAAQ,GACZ,KAAK,YAAY,4BAA4B;YAC3C,CAAC,CAAC,KAAK,CAAC,QAAQ;YAChB,CAAC,CAAC,IAAI,CAAC,eAAe,CAClB,CAAC,EACD,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEO,eAAe,CACrB,UAAkB,EAClB,MAAc;QAEd,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACjD,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC9E,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,SAAS,SAAS,CAAI,KAAQ;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { type JournalRecord } from "./frame-codec.js";
2
- import { type JournalCompactionResult } from "./journal-compaction.js";
2
+ import { type JournalCompactionOutcome, type JournalCompactionResult } from "./journal-compaction.js";
3
+ import { type JournalFold } from "./journal-fold.js";
4
+ /** `count` is the in-memory entry count (the retained prefix length captured);
5
+ * `nextSeq`/`previousFrameHash`/`knownFileBytes` are disk chain state. The two
6
+ * are different arithmetic once a fold has run at replay. */
3
7
  export interface CompactionBoundary {
4
8
  count: number;
5
9
  nextSeq: number;
@@ -16,8 +20,9 @@ export declare function prepareBackgroundCompaction(input: {
16
20
  time: string;
17
21
  entries: readonly JournalRecord[];
18
22
  prefix: CompactionBoundary;
23
+ fold?: JournalFold;
19
24
  current(): CompactionBoundary;
20
25
  install(candidate: JournalCompactionResult, boundary: CompactionBoundary): boolean;
21
- }): Promise<JournalCompactionResult["receipt"] | null>;
26
+ }): Promise<JournalCompactionOutcome>;
22
27
  export declare function sameBoundary(a: CompactionBoundary, b: CompactionBoundary): boolean;
23
28
  //# sourceMappingURL=journal-background-compaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"journal-background-compaction.d.ts","sourceRoot":"","sources":["../src/journal-background-compaction.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;6DAC6D;AAC7D,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,IAAI,kBAAkB,CAAC;IAC9B,OAAO,CAAC,SAAS,EAAE,uBAAuB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC;CACpF,GAAG,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAwFrD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAOlF"}
1
+ {"version":3,"file":"journal-background-compaction.d.ts","sourceRoot":"","sources":["../src/journal-background-compaction.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE1F,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKjE;;6DAE6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;6DAC6D;AAC7D,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,IAAI,kBAAkB,CAAC;IAC9B,OAAO,CAAC,SAAS,EAAE,uBAAuB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC;CACpF,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgHpC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAOlF"}