@indigoai-us/hq-cloud 6.16.64 → 6.16.66
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/bin/sync-runner-company.d.ts +14 -0
- package/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +42 -8
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-company.test.js +62 -7
- package/dist/bin/sync-runner-company.test.js.map +1 -1
- package/dist/bin/sync-runner-planning.d.ts +12 -3
- package/dist/bin/sync-runner-planning.d.ts.map +1 -1
- package/dist/bin/sync-runner-planning.js +65 -3
- package/dist/bin/sync-runner-planning.js.map +1 -1
- package/dist/bin/sync-runner-planning.test.js +172 -1
- package/dist/bin/sync-runner-planning.test.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +52 -3
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +443 -167
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner-watch-routes.d.ts +19 -2
- package/dist/bin/sync-runner-watch-routes.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-routes.js +40 -5
- package/dist/bin/sync-runner-watch-routes.js.map +1 -1
- package/dist/bin/sync-runner-watch-routes.test.js +47 -0
- package/dist/bin/sync-runner-watch-routes.test.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +64 -6
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +48 -4
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +1577 -169
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/onepass-pull-planner-regressions.test.d.ts +2 -0
- package/dist/cli/onepass-pull-planner-regressions.test.d.ts.map +1 -0
- package/dist/cli/onepass-pull-planner-regressions.test.js +300 -0
- package/dist/cli/onepass-pull-planner-regressions.test.js.map +1 -0
- package/dist/cli/onepass-pull-planner.test.d.ts +2 -0
- package/dist/cli/onepass-pull-planner.test.d.ts.map +1 -0
- package/dist/cli/onepass-pull-planner.test.js +266 -0
- package/dist/cli/onepass-pull-planner.test.js.map +1 -0
- package/dist/cli/push-scan-exclusions.test.js +4 -4
- package/dist/cli/push-scan-exclusions.test.js.map +1 -1
- package/dist/cli/share.d.ts +31 -1
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +136 -6
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +295 -5
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/streaming-pull-planner.bench.test.d.ts +15 -0
- package/dist/cli/streaming-pull-planner.bench.test.d.ts.map +1 -0
- package/dist/cli/streaming-pull-planner.bench.test.js +273 -0
- package/dist/cli/streaming-pull-planner.bench.test.js.map +1 -0
- package/dist/cli/sync-scope.test.js +8 -0
- package/dist/cli/sync-scope.test.js.map +1 -1
- package/dist/cli/sync.d.ts +12 -0
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +302 -123
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +255 -2
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/hq-root-recovery.d.ts +30 -0
- package/dist/hq-root-recovery.d.ts.map +1 -0
- package/dist/hq-root-recovery.js +131 -0
- package/dist/hq-root-recovery.js.map +1 -0
- package/dist/hq-root-recovery.test.d.ts +2 -0
- package/dist/hq-root-recovery.test.d.ts.map +1 -0
- package/dist/hq-root-recovery.test.js +65 -0
- package/dist/hq-root-recovery.test.js.map +1 -0
- package/dist/journal-row-store.d.ts +40 -5
- package/dist/journal-row-store.d.ts.map +1 -1
- package/dist/journal-row-store.js +240 -21
- package/dist/journal-row-store.js.map +1 -1
- package/dist/journal-row-store.test.js +54 -0
- package/dist/journal-row-store.test.js.map +1 -1
- package/dist/journal-snapshot-v4.d.ts.map +1 -1
- package/dist/journal-snapshot-v4.js +11 -6
- package/dist/journal-snapshot-v4.js.map +1 -1
- package/dist/journal-store.test.js +324 -7
- package/dist/journal-store.test.js.map +1 -1
- package/dist/journal.d.ts +51 -16
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +303 -79
- package/dist/journal.js.map +1 -1
- package/dist/lib/exit-codes.d.ts +15 -0
- package/dist/lib/exit-codes.d.ts.map +1 -1
- package/dist/lib/exit-codes.js +15 -0
- package/dist/lib/exit-codes.js.map +1 -1
- package/dist/personal-vault.d.ts.map +1 -1
- package/dist/personal-vault.js +10 -3
- package/dist/personal-vault.js.map +1 -1
- package/dist/personal-vault.test.js +35 -0
- package/dist/personal-vault.test.js.map +1 -1
- package/dist/remote-pull.d.ts.map +1 -1
- package/dist/remote-pull.js +9 -2
- package/dist/remote-pull.js.map +1 -1
- package/dist/remote-pull.test.js +59 -2
- package/dist/remote-pull.test.js.map +1 -1
- package/dist/s3.d.ts +1 -0
- package/dist/s3.d.ts.map +1 -1
- package/dist/s3.js +20 -2
- package/dist/s3.js.map +1 -1
- package/dist/s3.list-cost.test.d.ts +2 -0
- package/dist/s3.list-cost.test.d.ts.map +1 -0
- package/dist/s3.list-cost.test.js +51 -0
- package/dist/s3.list-cost.test.js.map +1 -0
- package/dist/sync/area-ledger.d.ts +27 -3
- package/dist/sync/area-ledger.d.ts.map +1 -1
- package/dist/sync/area-ledger.js +149 -39
- package/dist/sync/area-ledger.js.map +1 -1
- package/dist/sync/area-ledger.test.js +192 -5
- package/dist/sync/area-ledger.test.js.map +1 -1
- package/dist/sync/parallel-sync-coordinator.test.js +29 -0
- package/dist/sync/parallel-sync-coordinator.test.js.map +1 -1
- package/dist/sync/realtime-telemetry.d.ts +1 -1
- package/dist/sync/realtime-telemetry.d.ts.map +1 -1
- package/dist/sync/realtime-telemetry.js +14 -6
- package/dist/sync/realtime-telemetry.js.map +1 -1
- package/dist/sync/realtime-telemetry.test.js +136 -16
- package/dist/sync/realtime-telemetry.test.js.map +1 -1
- package/dist/sync/remote-file-spool.d.ts +16 -0
- package/dist/sync/remote-file-spool.d.ts.map +1 -0
- package/dist/sync/remote-file-spool.js +91 -0
- package/dist/sync/remote-file-spool.js.map +1 -0
- package/dist/sync/remote-file-spool.test.d.ts +2 -0
- package/dist/sync/remote-file-spool.test.d.ts.map +1 -0
- package/dist/sync/remote-file-spool.test.js +77 -0
- package/dist/sync/remote-file-spool.test.js.map +1 -0
- package/dist/sync/state-store.d.ts +6 -0
- package/dist/sync/state-store.d.ts.map +1 -1
- package/dist/sync/state-store.js +14 -2
- package/dist/sync/state-store.js.map +1 -1
- package/dist/watch-coverage.d.ts +24 -0
- package/dist/watch-coverage.d.ts.map +1 -0
- package/dist/watch-coverage.js +46 -0
- package/dist/watch-coverage.js.map +1 -0
- package/dist/watch-coverage.test.d.ts +2 -0
- package/dist/watch-coverage.test.d.ts.map +1 -0
- package/dist/watch-coverage.test.js +56 -0
- package/dist/watch-coverage.test.js.map +1 -0
- package/dist/watcher.d.ts +31 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +172 -0
- package/dist/watcher.js.map +1 -1
- package/dist/watcher.test.js +78 -0
- package/dist/watcher.test.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local recovery for things the vault cannot restore.
|
|
3
|
+
*
|
|
4
|
+
* `.git` is ignored on purpose (size, machine-local, credentials in config),
|
|
5
|
+
* so a vault pull after a wiped HQ tree brings files back and loses history.
|
|
6
|
+
* Empty `repos/public` and `repos/private` are also never uploaded (S3 has no
|
|
7
|
+
* empty directories).
|
|
8
|
+
*
|
|
9
|
+
* The sidecar lives under the machine HQ state dir (`~/.hq/hq-root-git/…`),
|
|
10
|
+
* which survived the 2026-09-18 wipe that removed `core/`, `personal/`, and
|
|
11
|
+
* `.git` while leaving the sync daemon running.
|
|
12
|
+
*/
|
|
13
|
+
export declare const HQ_LAYOUT_DIRS: readonly ["repos", "repos/public", "repos/private"];
|
|
14
|
+
export type GitSidecarAction = "restored" | "snapshotted" | "unchanged" | "absent";
|
|
15
|
+
export declare function gitSidecarDir(hqRoot: string, homeDir?: string): string;
|
|
16
|
+
export declare function shouldCopyGitSidecarEntry(src: string): boolean;
|
|
17
|
+
export declare function snapshotHqGit(hqRoot: string, opts?: {
|
|
18
|
+
homeDir?: string;
|
|
19
|
+
}): GitSidecarAction;
|
|
20
|
+
export declare function restoreHqGitIfMissing(hqRoot: string, opts?: {
|
|
21
|
+
homeDir?: string;
|
|
22
|
+
}): GitSidecarAction;
|
|
23
|
+
export declare function ensureLocalLayoutDirs(hqRoot: string): number;
|
|
24
|
+
export declare function recoverHqRootLocalState(hqRoot: string, opts?: {
|
|
25
|
+
homeDir?: string;
|
|
26
|
+
}): {
|
|
27
|
+
layoutCreated: number;
|
|
28
|
+
git: GitSidecarAction;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=hq-root-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq-root-recovery.d.ts","sourceRoot":"","sources":["../src/hq-root-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,eAAO,MAAM,cAAc,qDAAsD,CAAC;AAElF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEnF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEpF;AAMD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAkBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,gBAAgB,CA4BlB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,gBAAgB,CAkBlB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmB5D;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAA;CAAE,CAQlD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local recovery for things the vault cannot restore.
|
|
3
|
+
*
|
|
4
|
+
* `.git` is ignored on purpose (size, machine-local, credentials in config),
|
|
5
|
+
* so a vault pull after a wiped HQ tree brings files back and loses history.
|
|
6
|
+
* Empty `repos/public` and `repos/private` are also never uploaded (S3 has no
|
|
7
|
+
* empty directories).
|
|
8
|
+
*
|
|
9
|
+
* The sidecar lives under the machine HQ state dir (`~/.hq/hq-root-git/…`),
|
|
10
|
+
* which survived the 2026-09-18 wipe that removed `core/`, `personal/`, and
|
|
11
|
+
* `.git` while leaving the sync daemon running.
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from "fs";
|
|
14
|
+
import * as os from "os";
|
|
15
|
+
import * as path from "path";
|
|
16
|
+
import { canonicalRootHash } from "./backup-prune.js";
|
|
17
|
+
export const HQ_LAYOUT_DIRS = ["repos", "repos/public", "repos/private"];
|
|
18
|
+
export function gitSidecarDir(hqRoot, homeDir = os.homedir()) {
|
|
19
|
+
return path.join(homeDir, ".hq", "hq-root-git", canonicalRootHash(path.resolve(hqRoot)));
|
|
20
|
+
}
|
|
21
|
+
function isGitLockName(name) {
|
|
22
|
+
return name.endsWith(".lock") || name === "gc.pid";
|
|
23
|
+
}
|
|
24
|
+
export function shouldCopyGitSidecarEntry(src) {
|
|
25
|
+
return !isGitLockName(path.basename(src));
|
|
26
|
+
}
|
|
27
|
+
function readHead(gitDir) {
|
|
28
|
+
try {
|
|
29
|
+
return fs.readFileSync(path.join(gitDir, "HEAD"), "utf8");
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function isGitDirectory(gitDir) {
|
|
36
|
+
try {
|
|
37
|
+
return fs.lstatSync(gitDir).isDirectory();
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function snapshotHqGit(hqRoot, opts = {}) {
|
|
44
|
+
const gitDir = path.join(hqRoot, ".git");
|
|
45
|
+
if (!isGitDirectory(gitDir))
|
|
46
|
+
return "absent";
|
|
47
|
+
const dest = gitSidecarDir(hqRoot, opts.homeDir ?? os.homedir());
|
|
48
|
+
const currentHead = readHead(gitDir);
|
|
49
|
+
if (currentHead !== null && currentHead === readHead(dest) && fs.existsSync(dest)) {
|
|
50
|
+
return "unchanged";
|
|
51
|
+
}
|
|
52
|
+
const staging = `${dest}.tmp`;
|
|
53
|
+
try {
|
|
54
|
+
fs.rmSync(staging, { recursive: true, force: true });
|
|
55
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
56
|
+
fs.cpSync(gitDir, staging, {
|
|
57
|
+
recursive: true,
|
|
58
|
+
filter: shouldCopyGitSidecarEntry,
|
|
59
|
+
});
|
|
60
|
+
fs.rmSync(dest, { recursive: true, force: true });
|
|
61
|
+
fs.renameSync(staging, dest);
|
|
62
|
+
return "snapshotted";
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
try {
|
|
66
|
+
fs.rmSync(staging, { recursive: true, force: true });
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
/* staging is best-effort */
|
|
70
|
+
}
|
|
71
|
+
console.warn("hq-root-recovery: git sidecar snapshot failed:", err);
|
|
72
|
+
return "absent";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function restoreHqGitIfMissing(hqRoot, opts = {}) {
|
|
76
|
+
const gitDir = path.join(hqRoot, ".git");
|
|
77
|
+
if (isGitDirectory(gitDir))
|
|
78
|
+
return "unchanged";
|
|
79
|
+
try {
|
|
80
|
+
if (fs.existsSync(gitDir))
|
|
81
|
+
return "unchanged";
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return "absent";
|
|
85
|
+
}
|
|
86
|
+
const dest = gitSidecarDir(hqRoot, opts.homeDir ?? os.homedir());
|
|
87
|
+
if (!isGitDirectory(dest))
|
|
88
|
+
return "absent";
|
|
89
|
+
try {
|
|
90
|
+
fs.mkdirSync(hqRoot, { recursive: true });
|
|
91
|
+
fs.cpSync(dest, gitDir, { recursive: true });
|
|
92
|
+
return "restored";
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
console.warn("hq-root-recovery: git sidecar restore failed:", err);
|
|
96
|
+
return "absent";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function ensureLocalLayoutDirs(hqRoot) {
|
|
100
|
+
let created = 0;
|
|
101
|
+
try {
|
|
102
|
+
fs.mkdirSync(hqRoot, { recursive: true });
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
console.warn("hq-root-recovery: could not create HQ root:", err);
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
for (const rel of HQ_LAYOUT_DIRS) {
|
|
109
|
+
const dir = path.join(hqRoot, rel);
|
|
110
|
+
try {
|
|
111
|
+
if (fs.existsSync(dir))
|
|
112
|
+
continue;
|
|
113
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
114
|
+
created += 1;
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.warn(`hq-root-recovery: could not create ${rel}:`, err);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return created;
|
|
121
|
+
}
|
|
122
|
+
export function recoverHqRootLocalState(hqRoot, opts = {}) {
|
|
123
|
+
const git = restoreHqGitIfMissing(hqRoot, opts);
|
|
124
|
+
const layoutCreated = ensureLocalLayoutDirs(hqRoot);
|
|
125
|
+
const snap = snapshotHqGit(hqRoot, opts);
|
|
126
|
+
return {
|
|
127
|
+
layoutCreated,
|
|
128
|
+
git: git === "restored" ? "restored" : snap,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=hq-root-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq-root-recovery.js","sourceRoot":"","sources":["../src/hq-root-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq-root-recovery.test.d.ts","sourceRoot":"","sources":["../src/hq-root-recovery.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as os from "os";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { ensureLocalLayoutDirs, gitSidecarDir, recoverHqRootLocalState, restoreHqGitIfMissing, shouldCopyGitSidecarEntry, snapshotHqGit, } from "./hq-root-recovery.js";
|
|
6
|
+
describe("hq-root-recovery", () => {
|
|
7
|
+
const temps = [];
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
for (const dir of temps)
|
|
10
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
11
|
+
temps.length = 0;
|
|
12
|
+
});
|
|
13
|
+
function tmp(prefix) {
|
|
14
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), prefix));
|
|
15
|
+
temps.push(dir);
|
|
16
|
+
return dir;
|
|
17
|
+
}
|
|
18
|
+
it("does not copy git lock files into the sidecar", () => {
|
|
19
|
+
expect(shouldCopyGitSidecarEntry("/hq/.git/index.lock")).toBe(false);
|
|
20
|
+
expect(shouldCopyGitSidecarEntry("/hq/.git/gc.pid")).toBe(false);
|
|
21
|
+
expect(shouldCopyGitSidecarEntry("/hq/.git/HEAD")).toBe(true);
|
|
22
|
+
expect(shouldCopyGitSidecarEntry("/hq/.git/objects/pack/pack-1.pack")).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it("creates empty repos/public and repos/private", () => {
|
|
25
|
+
const hqRoot = tmp("hq-layout-");
|
|
26
|
+
expect(ensureLocalLayoutDirs(hqRoot)).toBe(3);
|
|
27
|
+
expect(fs.statSync(path.join(hqRoot, "repos/public")).isDirectory()).toBe(true);
|
|
28
|
+
expect(fs.statSync(path.join(hqRoot, "repos/private")).isDirectory()).toBe(true);
|
|
29
|
+
expect(ensureLocalLayoutDirs(hqRoot)).toBe(0);
|
|
30
|
+
});
|
|
31
|
+
it("snapshots .git next to machine HQ state and restores it after a wipe", () => {
|
|
32
|
+
const homeDir = tmp("hq-home-");
|
|
33
|
+
const hqRoot = tmp("hq-root-");
|
|
34
|
+
const gitDir = path.join(hqRoot, ".git");
|
|
35
|
+
fs.mkdirSync(path.join(gitDir, "objects"), { recursive: true });
|
|
36
|
+
fs.writeFileSync(path.join(gitDir, "HEAD"), "ref: refs/heads/main\n");
|
|
37
|
+
fs.writeFileSync(path.join(gitDir, "objects", "blob"), "history");
|
|
38
|
+
fs.writeFileSync(path.join(gitDir, "index.lock"), "busy");
|
|
39
|
+
expect(snapshotHqGit(hqRoot, { homeDir })).toBe("snapshotted");
|
|
40
|
+
expect(snapshotHqGit(hqRoot, { homeDir })).toBe("unchanged");
|
|
41
|
+
const sidecar = gitSidecarDir(hqRoot, homeDir);
|
|
42
|
+
expect(fs.existsSync(path.join(sidecar, "index.lock"))).toBe(false);
|
|
43
|
+
expect(fs.readFileSync(path.join(sidecar, "HEAD"), "utf8")).toBe("ref: refs/heads/main\n");
|
|
44
|
+
fs.rmSync(gitDir, { recursive: true, force: true });
|
|
45
|
+
expect(fs.existsSync(gitDir)).toBe(false);
|
|
46
|
+
expect(restoreHqGitIfMissing(hqRoot, { homeDir })).toBe("restored");
|
|
47
|
+
expect(fs.readFileSync(path.join(gitDir, "HEAD"), "utf8")).toBe("ref: refs/heads/main\n");
|
|
48
|
+
expect(fs.readFileSync(path.join(gitDir, "objects", "blob"), "utf8")).toBe("history");
|
|
49
|
+
});
|
|
50
|
+
it("recoverHqRootLocalState restores git then recreates empty repos dirs", () => {
|
|
51
|
+
const homeDir = tmp("hq-home-");
|
|
52
|
+
const hqRoot = tmp("hq-root-");
|
|
53
|
+
fs.mkdirSync(path.join(hqRoot, ".git"), { recursive: true });
|
|
54
|
+
fs.writeFileSync(path.join(hqRoot, ".git", "HEAD"), "ref: refs/heads/main\n");
|
|
55
|
+
expect(recoverHqRootLocalState(hqRoot, { homeDir }).git).toBe("snapshotted");
|
|
56
|
+
fs.rmSync(hqRoot, { recursive: true, force: true });
|
|
57
|
+
fs.mkdirSync(hqRoot);
|
|
58
|
+
const result = recoverHqRootLocalState(hqRoot, { homeDir });
|
|
59
|
+
expect(result.git).toBe("restored");
|
|
60
|
+
expect(result.layoutCreated).toBe(3);
|
|
61
|
+
expect(fs.existsSync(path.join(hqRoot, ".git", "HEAD"))).toBe(true);
|
|
62
|
+
expect(fs.existsSync(path.join(hqRoot, "repos/public"))).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=hq-root-recovery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq-root-recovery.test.js","sourceRoot":"","sources":["../src/hq-root-recovery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,19 @@ export interface JournalRowStoreOptions {
|
|
|
28
28
|
/** Retain row-level before-images so callers can derive a delta. Defaults to true. */
|
|
29
29
|
trackChanges?: boolean;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* A compact, insertion-ordered directory-prefix index. The immutable bulk is
|
|
33
|
+
* stored in packed row-id ranges; only rows structurally changed after the
|
|
34
|
+
* index was built need JavaScript sets.
|
|
35
|
+
*/
|
|
36
|
+
interface JournalPrefixIndex {
|
|
37
|
+
readonly prefixIds: Map<string, number>;
|
|
38
|
+
readonly offsets: Uint32Array;
|
|
39
|
+
readonly rowIds: Uint32Array;
|
|
40
|
+
readonly changedRows: Set<number>;
|
|
41
|
+
readonly appendedRows: Map<number, Set<number>>;
|
|
42
|
+
nextPrefixId: number;
|
|
43
|
+
}
|
|
31
44
|
/**
|
|
32
45
|
* The packed row sections carried by HQSNAP4. Typed arrays are intentionally
|
|
33
46
|
* views: the snapshot decoder installs them without decoding rows into objects.
|
|
@@ -117,6 +130,8 @@ export interface JournalRowOverlayChange {
|
|
|
117
130
|
export declare class JournalRowOverlay implements JournalRowsView {
|
|
118
131
|
private readonly base;
|
|
119
132
|
private readonly changes;
|
|
133
|
+
/** Base keys deleted then reinserted must move to the record's tail. */
|
|
134
|
+
private readonly moved;
|
|
120
135
|
private readonly dirtyPaths;
|
|
121
136
|
private dirtyLog;
|
|
122
137
|
constructor(base: JournalRowSource);
|
|
@@ -128,17 +143,19 @@ export declare class JournalRowOverlay implements JournalRowsView {
|
|
|
128
143
|
keys(): IterableIterator<string>;
|
|
129
144
|
entries(): IterableIterator<[string, Readonly<JournalEntry>]>;
|
|
130
145
|
values(): IterableIterator<Readonly<JournalEntry>>;
|
|
146
|
+
entriesForPrefix(prefix: string): IterableIterator<[string, Readonly<JournalEntry>]>;
|
|
131
147
|
toRecord(): Record<string, JournalEntry>;
|
|
132
148
|
dirtyLogSnapshot(): readonly JournalRowOverlayChange[];
|
|
133
149
|
drainDirtyLog(): JournalRowOverlayChange[];
|
|
134
150
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* copy over a long full-sync pass.
|
|
151
|
+
* Return a new durable view without adding the delta to this caller-owned
|
|
152
|
+
* dirty log. The source overlay stays immutable for a full pass that already
|
|
153
|
+
* borrowed it as its read baseline.
|
|
139
154
|
*/
|
|
140
|
-
|
|
155
|
+
withCommittedDelta(upserts: Readonly<Record<string, JournalEntry>>, deletes: readonly string[]): JournalRowOverlay;
|
|
156
|
+
private entriesForPrefixByKey;
|
|
141
157
|
private recordDirty;
|
|
158
|
+
private setReplacement;
|
|
142
159
|
}
|
|
143
160
|
/**
|
|
144
161
|
* A struct-of-arrays store for resident journal rows. It deliberately owns no
|
|
@@ -163,6 +180,15 @@ export declare class JournalRowStore {
|
|
|
163
180
|
private buckets;
|
|
164
181
|
private readonly directories;
|
|
165
182
|
private readonly directoryIds;
|
|
183
|
+
/**
|
|
184
|
+
* Prefix candidates are valuable only to a prefix scan. Snapshot recovery
|
|
185
|
+
* also constructs row stores for whole-journal writers (notably the short
|
|
186
|
+
* reverse shadow), where building this index would add an O(rows) pause to
|
|
187
|
+
* an operation that never queries a prefix. Build its packed ranges at an
|
|
188
|
+
* explicit warm boundary or on the first scan, then retain only structural
|
|
189
|
+
* changes in the small mutable overlay.
|
|
190
|
+
*/
|
|
191
|
+
private prefixRows;
|
|
166
192
|
private readonly authors;
|
|
167
193
|
private readonly authorIds;
|
|
168
194
|
private readonly freeRows;
|
|
@@ -211,6 +237,8 @@ export declare class JournalRowStore {
|
|
|
211
237
|
entriesForPrefix(prefix: string): IterableIterator<[string, Readonly<JournalEntry>]>;
|
|
212
238
|
values(): IterableIterator<Readonly<JournalEntry>>;
|
|
213
239
|
toRecord(): Record<string, JournalEntry>;
|
|
240
|
+
/** Build packed prefix candidates before a latency-sensitive targeted-pull phase. */
|
|
241
|
+
preparePrefixIndex(): JournalPrefixIndex;
|
|
214
242
|
/**
|
|
215
243
|
* Returns and clears changes since the prior checkpoint.
|
|
216
244
|
*
|
|
@@ -246,6 +274,12 @@ export declare class JournalRowStore {
|
|
|
246
274
|
static fromSnapshot(snapshot: JournalRowStoreSnapshot): JournalRowStore;
|
|
247
275
|
private reset;
|
|
248
276
|
private insertWithoutDirtyLog;
|
|
277
|
+
private addRowToPrefixIndex;
|
|
278
|
+
private removeRowFromPrefixIndex;
|
|
279
|
+
private ensurePrefixId;
|
|
280
|
+
private addDynamicPrefixRow;
|
|
281
|
+
private removeDynamicPrefixRow;
|
|
282
|
+
private prefixesForPath;
|
|
249
283
|
private recordDirty;
|
|
250
284
|
private allocateRow;
|
|
251
285
|
private ensureRowCapacity;
|
|
@@ -261,6 +295,7 @@ export declare class JournalRowStore {
|
|
|
261
295
|
private storeLeafFallback;
|
|
262
296
|
private leafBytes;
|
|
263
297
|
private pathForRow;
|
|
298
|
+
private pathForRowForPrefixIndex;
|
|
264
299
|
private findRowId;
|
|
265
300
|
private findIndexedRow;
|
|
266
301
|
private ensureBucketCapacity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal-row-store.d.ts","sourceRoot":"","sources":["../src/journal-row-store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"journal-row-store.d.ts","sourceRoot":"","sources":["../src/journal-row-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,gGAAgG;AAChG,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;CAiB6B,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/D,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;IAC/E,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CAC3D;AAED,KAAK,iBAAiB,GAAG,WAAW,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAsGxE,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,CA2B7E;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAE5B,KAAK,EAAE,eAAe;IAIlC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAIrD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAI5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAI7D,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIhC,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAIlD,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;CAGzC;AAED,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACtD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAED,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAO3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyD;IACjF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAiC;gBAEpB,IAAI,EAAE,gBAAgB;IAEnD,IAAI,IAAI,IAAI,MAAM,CAajB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAIrD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAK5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO5B,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAWhC,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAO7D,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAIlD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAiBrF,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAMxC,gBAAgB,IAAI,SAAS,uBAAuB,EAAE;IAItD,aAAa,IAAI,uBAAuB,EAAE;IAO1C;;;;OAIG;IACH,kBAAkB,CAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAC/C,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,iBAAiB;IAWpB,OAAO,CAAE,qBAAqB;IAQ9B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;CAOvB;AAMD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,iBAAiB,CAA8B;IAEvD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiE;IAChG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAEtC;IACH,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,YAAY,CAAU;IAE9B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,kBAAkB,CAAM;IAChC,QAAQ,CAAC,IAAI,cAAyB;gBAE1B,OAAO,CAAC,EAAE,sBAAsB;gBAChC,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;IA8BtE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sFAAsF;IACtF,oBAAoB,IAAI,IAAI;IAM5B,sFAAsF;IACtF,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAKrD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,4EAA4E;IAC3E,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAQnC,uEAAuE;IACvE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,8EAA8E;IAC9E,KAAK,IAAI,IAAI;IAMb,+EAA+E;IAC/E,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,IAAI;IAKtE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,WAAqB,GAAG,IAAI;IAyBhF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAc5B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAQ7D,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAQhC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAgCpF,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAInD,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAaxC,qFAAqF;IACrF,kBAAkB,IAAI,kBAAkB;IA0CxC;;;;;OAKG;IACH,aAAa,IAAI,gBAAgB,EAAE;IAQnC,6FAA6F;IAC7F,gBAAgB,IAAI,SAAS,gBAAgB,EAAE;IAK/C,qEAAqE;IACrE,YAAY,IAAI,gBAAgB,EAAE;IAIlC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,UAAU,IAAI,uBAAuB;IAqCrC;;;;;;OAMG;IACH,OAAO,CAAC,qCAAqC;IA0D7C,OAAO,CAAC,oBAAoB;IAU5B,kFAAkF;IAClF,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,uBAAuB,GAAG,eAAe;IAyDvE,OAAO,CAAC,KAAK;IAuCb,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAE,eAAe;IASxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,UAAU;IAiElB,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,SAAS;CAKlB;AAED,iFAAiF;AACjF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,CAAC"}
|