@dimina-kit/fs-core 0.2.0-dev.20260710085051 → 0.3.0-dev.6-dev.20260711133419

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 (51) hide show
  1. package/README.md +205 -18
  2. package/dist/client.js +23 -11
  3. package/dist/disk-mirror.js +2 -2
  4. package/dist/fs-core.worker.js +101 -21
  5. package/dist/sync/binary-sidecar.js +147 -0
  6. package/dist/sync/sync-engine.js +119 -169
  7. package/dist/sync/watch-expander.js +202 -0
  8. package/dist/worker-files.cjs +32 -0
  9. package/dist/worker-files.js +35 -0
  10. package/dist/worker-lib/.tsbuildinfo +1 -0
  11. package/dist/worker-lib/engine-shared.d.ts +79 -0
  12. package/dist/worker-lib/engine-shared.d.ts.map +1 -0
  13. package/dist/worker-lib/engine-shared.js +6 -3
  14. package/dist/worker-lib/paths.d.ts +4 -0
  15. package/dist/worker-lib/paths.d.ts.map +1 -0
  16. package/dist/worker-lib/protocol.d.ts +119 -0
  17. package/dist/worker-lib/protocol.d.ts.map +1 -0
  18. package/dist/worker-lib/protocol.js +73 -0
  19. package/dist/worker-lib/rpc-types.d.ts +68 -0
  20. package/dist/worker-lib/rpc-types.d.ts.map +1 -0
  21. package/dist/worker-lib/wal-codec.d.ts +58 -0
  22. package/dist/worker-lib/wal-codec.d.ts.map +1 -0
  23. package/dist/worker-lib/wal-codec.js +8 -5
  24. package/dist/zip.js +1 -1
  25. package/package.json +25 -2
  26. package/src/__checks__/types-smoke.ts +61 -0
  27. package/src/agent-tools.ts +3 -3
  28. package/src/client-retry.test.ts +76 -0
  29. package/src/client.ts +112 -45
  30. package/src/disk-mirror.ts +2 -2
  31. package/src/fs-core-handover.test.ts +215 -0
  32. package/src/fs-core-opid-replay.test.ts +158 -0
  33. package/src/fs-core-recovery-lock.test.ts +225 -0
  34. package/src/fs-core-recovery.ts +115 -13
  35. package/src/fs-core-write-ops.ts +14 -11
  36. package/src/fs-core.worker.ts +26 -11
  37. package/src/worker-files.test.ts +39 -0
  38. package/src/worker-files.ts +43 -0
  39. package/src/worker-lib/engine-shared.ts +19 -5
  40. package/src/worker-lib/protocol.test.ts +37 -0
  41. package/src/worker-lib/protocol.ts +184 -0
  42. package/src/worker-lib/wal-codec.ts +8 -5
  43. package/src/zip.ts +1 -1
  44. package/sync/binary-sidecar.test.ts +150 -0
  45. package/sync/binary-sidecar.ts +187 -0
  46. package/sync/sync-engine-degraded.test.ts +309 -0
  47. package/sync/sync-engine.test.ts +20 -91
  48. package/sync/sync-engine.ts +134 -181
  49. package/sync/truth-port.ts +3 -3
  50. package/sync/watch-expander.test.ts +96 -0
  51. package/sync/watch-expander.ts +236 -0
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Watch-batch expansion — an OPTIONAL port-side helper for assembling a
3
+ * `TruthPort.changes` adapter (see truth-port.ts: turning a watcher's
4
+ * coalesced/lossy events into the actual set of paths worth re-examining is
5
+ * the PORT's responsibility; sync-engine.ts's `handleBatch` trusts the
6
+ * expanded batch as-is and does no expansion of its own). It turns raw
7
+ * `fs.watch`-style paths (which may be coalesced ancestor-DIRECTORY events,
8
+ * an overflow `'.'` full-tree rescan, or the name of a file that no longer
9
+ * exists) into the set of paths the sync engine should actually re-examine.
10
+ * The only dependency is a stat-capable `readdir` (one listing call, no
11
+ * content bytes) — see {@link WatchExpanderReaddir}.
12
+ *
13
+ * Why events are only a HINT, not the truth: FSEvents-style recursive
14
+ * watchers COALESCE a write burst into ancestor-DIRECTORY events (and an
15
+ * overflow surfaces as a null filename, reported as `'.'`) — observed: a
16
+ * 200-file external burst delivered only 132 per-file events, the rest
17
+ * arriving as their parent directory. So a watched path is not necessarily a
18
+ * file, and "nothing was reported for path X" does not mean X is unchanged.
19
+ *
20
+ * How stat-level truth-checking works (the git-index/rsync pattern): for
21
+ * every watch path, this module lists the TRUTH SOURCE's current
22
+ * (size, mtimeMs) for every file in that path's scope (itself + its parent
23
+ * directory — the same scope FSEvents coalescing collapses onto) and diffs it
24
+ * against a session-scoped index of what it last saw for each file:
25
+ * - a ledger path inside the scanned scope that is now missing from the
26
+ * disk listing is reported as a deletion (this is what recovers a
27
+ * coalesced `rm -rf`, which a real watcher may name only a few of the
28
+ * removed children for, or none) — unconditional, since a deletion has
29
+ * no "stat" to compare;
30
+ * - a disk file whose stat is NEW or DIFFERENT from the index is reported,
31
+ * and the index is updated to match;
32
+ * - a disk file whose stat is UNCHANGED is a stat-confirmed survivor and is
33
+ * never reported. This is the whole point: an N-file directory with one
34
+ * real change no longer costs the engine N content reads (readdir stats
35
+ * are cheap — one listing round trip per directory level, no bytes —
36
+ * while the engine's `handleInboundPath` does a full `port.read` per
37
+ * reported path);
38
+ * - the event path `p` ITSELF is additionally, unconditionally reported
39
+ * UNLESS it is currently a confirmed live, listable directory with no
40
+ * ledger record sitting at that exact path. Content can change without a
41
+ * stat move (same-size in-place edit inside one filesystem timestamp
42
+ * tick — the classic "racy git" case), and this module never reads file
43
+ * CONTENT to judge that — only the engine's own read+compare can, which
44
+ * is why a plain file / deleted path / transient probe failure always
45
+ * gets reported. A CONFIRMED live directory has no content of its own to
46
+ * mis-judge that way, so reporting it would normally just cost a wasted
47
+ * `port.read` (404 → EISDIR) — EXCEPT when the ledger still holds a
48
+ * record AT THAT EXACT PATH (a stale FILE record from before the path
49
+ * was replaced by a directory — see "Same-named file→directory
50
+ * replacement" below): that record needs the same EISDIR→404 retirement
51
+ * path, and for a ROOT-LEVEL replaced path (no parent directory of its
52
+ * own) the ledger-deletion sweep below cannot reach it by prefix at all,
53
+ * so this is the only path that retires it.
54
+ * Over-reporting is always safe (the engine content-compares every reported
55
+ * path, so a false positive is a no-op); under-reporting is what loses data,
56
+ * which is why the ledger-deletion sweep and the point-named path (per the
57
+ * exception above) are unconditional rather than stat-gated.
58
+ *
59
+ * Same-named file→directory replacement: EVERY scope gets the readdir probe,
60
+ * even when the path is a ledger-known FILE — a file can have been replaced
61
+ * by a same-named directory, and skipping the probe for "known files" would
62
+ * silently drop that directory's whole subtree (the watcher only names the
63
+ * parent). The stale ledger FILE record retires via whichever of two paths
64
+ * applies: the point-named-path exception above (when the watcher names the
65
+ * replaced path directly — the only option when it has no parent directory
66
+ * of its own to register a scope prefix), or the ledger-deletion sweep's
67
+ * PARENT-scope prefix (when the watcher instead names a sibling or the
68
+ * parent directory — the record no longer matches the replaced path's own
69
+ * now-a-directory prefix, only the parent's). Either way the engine's
70
+ * `port.read` gets EISDIR (mapped to a not-found by e.g. the devtools
71
+ * bridge), which its not-found discipline treats as a deletion.
72
+ *
73
+ * Index lifecycle: `resetIndex()` clears the session-scoped stat index —
74
+ * call it whenever the ledger itself is reseeded (e.g. dimina-kit
75
+ * wal-audit.ts's `initLedger`), so a stale index can never survive a project
76
+ * switch or ledger rebuild. `warmFromDisk()` then seeds it directly from the
77
+ * CURRENT disk tree right after the reseed (called once the ledger walk
78
+ * itself has completed) — without this, the first watch batch after every
79
+ * project open would see an all-cold index and re-report every file it
80
+ * touches, defeating the point of stat-diffing for exactly the common case
81
+ * (a directory-level event shortly after open). A path this module has never
82
+ * seen at all (warm-up included) is always reported on its first sighting —
83
+ * nothing is missed by a partial/failed warm-up, it just costs that one
84
+ * file's content read instead of being skipped.
85
+ */
86
+ /** A stat-less disk entry (a readdir/stat race on the truth-source side)
87
+ * never matches a cached stat: `NaN !== NaN` unconditionally, so a racy
88
+ * entry is always reported rather than risking a false "unchanged" skip. */
89
+ function toDiskStat(size, mtimeMs) {
90
+ return { size: size ?? Number.NaN, mtimeMs: mtimeMs ?? Number.NaN };
91
+ }
92
+ /** `rel`'s scope prefixes for the ledger-deletion sweep: itself-as-a-directory
93
+ * and its parent directory — the same two listings {@link createWatchExpander}'s
94
+ * `listDiskStats` probes. `''` (the whole-ledger prefix) only ever arises from
95
+ * the `'.'` overflow rescan, handled by the caller before this is reached. */
96
+ function scopePrefixes(rel) {
97
+ const slash = rel.lastIndexOf('/');
98
+ const parentRel = slash >= 0 ? rel.slice(0, slash) : '';
99
+ const prefixes = new Set([rel ? `${rel}/` : '']);
100
+ if (slash >= 0)
101
+ prefixes.add(parentRel ? `${parentRel}/` : '');
102
+ return { prefixes, parentRel, slash };
103
+ }
104
+ /** `true` when `q` falls under one of `prefixes` (`''` matches everything —
105
+ * the `'.'` overflow case). */
106
+ function inScope(q, prefixes) {
107
+ for (const prefix of prefixes) {
108
+ if (prefix === '' || q.startsWith(prefix))
109
+ return true;
110
+ }
111
+ return false;
112
+ }
113
+ export function createWatchExpander(readdir) {
114
+ /** Session-scoped: `rel -> last stat this module reported for it`. Cleared
115
+ * by `resetIndex()`, seeded by `warmFromDisk()`; see this module's doc
116
+ * "Index lifecycle". */
117
+ let statIndex = new Map();
118
+ /** List every FILE's current (size, mtimeMs) under `startRel`, recursively
119
+ * — NO content reads (a content walk would turn each expansion pass back
120
+ * into a content-read storm). */
121
+ async function listDiskStats(startRel, out) {
122
+ async function walk(rel) {
123
+ const entries = await readdir(rel || '.');
124
+ for (const [name, type, size, mtimeMs] of entries) {
125
+ const childRel = rel ? `${rel}/${name}` : name;
126
+ if (type === 2)
127
+ await walk(childRel);
128
+ else
129
+ out.set(childRel, toDiskStat(size, mtimeMs));
130
+ }
131
+ }
132
+ await walk(startRel);
133
+ }
134
+ /** One swallowed stat-listing probe. Returns whether `rel` is CURRENTLY a
135
+ * live, listable directory (a plain file, a deleted path, or any other
136
+ * probe failure all report `false`) — the caller uses this to decide
137
+ * whether the point-named path itself needs an unconditional report (see
138
+ * this module's doc). Failure otherwise changes nothing: the caller's own
139
+ * ledger-deletion sweep still covers a deleted/replaced path, and a tree
140
+ * mutating mid-walk just means the stats collected so far are what count. */
141
+ async function probeDiskStats(rel, out) {
142
+ try {
143
+ await listDiskStats(rel, out);
144
+ return true;
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
150
+ /** Expand ONE watch path into `out` — see this module's doc for the full
151
+ * algorithm. `p === '.'` is the overflow full-tree rescan: scope is the
152
+ * whole tree (`rel = ''`, no parent probe, ledger prefix `''` matches
153
+ * every path). `ledgerPathSet` is `ledgerPaths` as a `Set` for the O(1)
154
+ * exact-path membership check the point-named-path exception needs. */
155
+ async function expandWatchPath(p, ledgerPaths, ledgerPathSet, out) {
156
+ const rel = p === '.' ? '' : p;
157
+ const diskStats = new Map();
158
+ const isLiveDirectory = await probeDiskStats(rel, diskStats);
159
+ const { prefixes, parentRel, slash } = scopePrefixes(rel);
160
+ if (p !== '.' && slash >= 0)
161
+ await probeDiskStats(parentRel, diskStats);
162
+ // See this module's doc for why a confirmed live directory is excluded
163
+ // UNLESS the ledger still has a stale record at that exact path.
164
+ if (p !== '.' && (!isLiveDirectory || ledgerPathSet.has(p)))
165
+ out.add(p);
166
+ // Ledger paths in scope but missing from the disk listing — coalesced
167
+ // deletions (see this module's doc).
168
+ for (const q of ledgerPaths) {
169
+ if (!inScope(q, prefixes))
170
+ continue;
171
+ if (!diskStats.has(q)) {
172
+ out.add(q);
173
+ statIndex.delete(q);
174
+ }
175
+ }
176
+ // Disk files in scope: report new/changed, skip stat-confirmed survivors.
177
+ for (const [q, stat] of diskStats) {
178
+ const known = statIndex.get(q);
179
+ if (known && known.size === stat.size && known.mtimeMs === stat.mtimeMs)
180
+ continue;
181
+ out.add(q);
182
+ statIndex.set(q, stat);
183
+ }
184
+ }
185
+ return {
186
+ async expandWatchBatch(paths, ledgerPaths) {
187
+ const out = new Set();
188
+ const ledgerPathSet = new Set(ledgerPaths);
189
+ for (const p of paths)
190
+ await expandWatchPath(p, ledgerPaths, ledgerPathSet, out);
191
+ return [...out];
192
+ },
193
+ resetIndex() {
194
+ statIndex = new Map();
195
+ },
196
+ async warmFromDisk() {
197
+ const warm = new Map();
198
+ await probeDiskStats('', warm);
199
+ statIndex = warm;
200
+ },
201
+ };
202
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var worker_files_exports = {};
20
+ __export(worker_files_exports, {
21
+ FS_CORE_WORKER_FILES: () => FS_CORE_WORKER_FILES,
22
+ resolveWorkerFiles: () => resolveWorkerFiles
23
+ });
24
+ module.exports = __toCommonJS(worker_files_exports);
25
+ const FS_CORE_WORKER_FILES = ["fs-core.worker.js", "fs-query.worker.js"];
26
+ function resolveWorkerFiles(clientEntryPath) {
27
+ const cut = Math.max(clientEntryPath.lastIndexOf("/"), clientEntryPath.lastIndexOf("\\"));
28
+ if (cut < 0) throw new Error(`resolveWorkerFiles: not a path to client.js: ${clientEntryPath}`);
29
+ const sep = clientEntryPath[cut];
30
+ const dir = clientEntryPath.slice(0, cut);
31
+ return { dir, files: FS_CORE_WORKER_FILES.map((name) => dir + sep + name) };
32
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The authoritative statement of fs-core's worker-artifact distribution
3
+ * contract, for Node-side consumers that copy/serve the worker files
4
+ * (dimina-kit workbench's vite-preset, qdmp-web-workbench's server.cjs):
5
+ *
6
+ * dist/fs-core.worker.js and dist/fs-query.worker.js are single-file,
7
+ * self-contained ESM (no import statements) living in the SAME directory
8
+ * as dist/client.js, under exactly these file names.
9
+ *
10
+ * build-workers.js asserts this at build time; consumers should derive the
11
+ * names/locations from here instead of re-deriving them with hardcoded
12
+ * string joins. Pure string manipulation (no node:path) so the module loads
13
+ * in any runtime and ships as both ESM (dist/worker-files.js) and CJS
14
+ * (dist/worker-files.cjs — see the exports map's `require` condition, for
15
+ * CommonJS hosts like server.cjs).
16
+ */
17
+ /** The worker artifacts' literal file names, siblings of `client.js`. */
18
+ export const FS_CORE_WORKER_FILES = ['fs-core.worker.js', 'fs-query.worker.js'];
19
+ /**
20
+ * Resolve the on-disk worker file paths from the resolved path of the
21
+ * `./client` entry — the one path every consumer can obtain:
22
+ *
23
+ * resolveWorkerFiles(require.resolve('@dimina-kit/fs-core/client'))
24
+ *
25
+ * Preserves whichever path separator the input uses (POSIX or Windows), so
26
+ * the result is joinable/copyable as-is on the host platform.
27
+ */
28
+ export function resolveWorkerFiles(clientEntryPath) {
29
+ const cut = Math.max(clientEntryPath.lastIndexOf('/'), clientEntryPath.lastIndexOf('\\'));
30
+ if (cut < 0)
31
+ throw new Error(`resolveWorkerFiles: not a path to client.js: ${clientEntryPath}`);
32
+ const sep = clientEntryPath[cut];
33
+ const dir = clientEntryPath.slice(0, cut);
34
+ return { dir, files: FS_CORE_WORKER_FILES.map((name) => dir + sep + name) };
35
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../src/worker-lib/wal-codec.ts","../../src/worker-lib/protocol.ts","../../src/worker-lib/engine-shared.ts","../../src/worker-lib/paths.ts","../../src/worker-lib/rpc-types.ts","../../../../node_modules/.pnpm/@types+aria-query@5.0.4/node_modules/@types/aria-query/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/domexception.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/events.d.ts","../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/fetch.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/navigator.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/storage.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.generated.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sqlite.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/@types+keyv@3.1.4/node_modules/@types/keyv/index.d.ts","../../../../node_modules/.pnpm/@types+http-cache-semantics@4.2.0/node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/.pnpm/@types+responselike@1.0.3/node_modules/@types/responselike/index.d.ts","../../../../node_modules/.pnpm/@types+cacheable-request@6.0.3/node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../../node_modules/.pnpm/devtools-protocol@0.0.1173815/node_modules/devtools-protocol/types/protocol.d.ts","../../../../node_modules/.pnpm/devtools-protocol@0.0.1173815/node_modules/devtools-protocol/types/protocol-mapping.d.ts","../../../../node_modules/.pnpm/devtools-protocol@0.0.1173815/node_modules/devtools-protocol/types/protocol-proxy-api.d.ts","../../../../node_modules/.pnpm/@types+chrome-remote-interface@0.33.0/node_modules/@types/chrome-remote-interface/index.d.ts","../../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/index.d.ts","../../../../node_modules/.pnpm/@types+debug@4.1.13/node_modules/@types/debug/index.d.ts","../../../../node_modules/.pnpm/@types+esrecurse@4.3.1/node_modules/@types/esrecurse/index.d.ts","../../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../../../../node_modules/.pnpm/@types+fs-extra@9.0.13/node_modules/@types/fs-extra/index.d.ts","../../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../../../../node_modules/.pnpm/@types+prop-types@15.7.15/node_modules/@types/prop-types/index.d.ts","../../../../node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/global.d.ts","../../../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../../../node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/index.d.ts","../../../../node_modules/.pnpm/@types+react-dom@18.3.7_@types+react@18.3.28/node_modules/@types/react-dom/index.d.ts","../../../../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../../../../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/index.d.ts","../../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.ts","../../../../node_modules/.pnpm/@types+yauzl@2.10.3/node_modules/@types/yauzl/index.d.ts"],"fileIdsList":[[71,120,137,138],[71,120,131,134,137,138,163,170,171,172,173],[71,120,137,138,175,176],[71,120,137,138,179,180],[71,120,137,138,182],[71,120,132,137,138,170],[71,120,131,137,138,170],[71,117,118,120,137,138],[71,119,120,137,138],[120,137,138],[71,120,125,137,138,155],[71,120,121,126,131,137,138,140,152,163],[71,120,121,122,131,137,138,140],[66,67,68,71,120,137,138],[71,120,123,137,138,164],[71,120,124,125,132,137,138,141],[71,120,125,137,138,152,160],[71,120,126,128,131,137,138,140],[71,119,120,127,137,138],[71,120,128,129,137,138],[71,120,130,131,137,138],[71,119,120,131,137,138],[71,120,131,132,133,137,138,152,163],[71,120,131,132,133,137,138,147,152,155],[71,113,120,128,131,134,137,138,140,152,163],[71,120,131,132,134,135,137,138,140,152,160,163],[71,120,134,136,137,138,152,160,163],[69,70,71,72,73,74,75,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],[71,120,131,137,138],[71,120,137,138,139,163],[71,120,128,131,137,138,140,152],[71,120,137,138,141],[71,120,137,138,142],[71,119,120,137,138,143],[71,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],[71,120,137,138,145],[71,120,137,138,146],[71,120,131,137,138,147,148],[71,120,137,138,147,149,164,166],[71,120,132,137,138],[71,120,131,137,138,152,153,155],[71,120,137,138,154,155],[71,120,137,138,152,153],[71,120,137,138,155],[71,120,137,138,156],[71,117,120,137,138,152,157,163],[71,120,131,137,138,158,159],[71,120,137,138,158,159],[71,120,125,137,138,140,152,160],[71,120,137,138,161],[71,120,137,138,140,162],[71,120,134,137,138,146,163],[71,120,125,137,138,164],[71,120,137,138,152,165],[71,120,137,138,139,166],[71,120,137,138,167],[71,113,120,137,138],[71,113,120,131,133,137,138,143,152,155,163,165,166,168],[71,120,137,138,152,169],[71,120,137,138,191],[71,120,137,138,188,189,190],[71,120,134,137,138,152,170],[71,120,137,138,193],[71,120,131,134,136,137,138,140,152,160,163,169,170],[71,120,131,137,138,152,170],[71,120,137,138,178],[71,85,89,120,137,138,163],[71,85,120,137,138,152,163],[71,80,120,137,138],[71,82,85,120,137,138,160,163],[71,120,137,138,140,160],[71,120,137,138,170],[71,80,120,137,138,170],[71,82,85,120,137,138,140,163],[71,77,78,81,84,120,131,137,138,152,163],[71,85,92,120,137,138],[71,77,83,120,137,138],[71,85,106,107,120,137,138],[71,81,85,120,137,138,155,163,170],[71,106,120,137,138,170],[71,79,80,120,137,138,170],[71,85,120,137,138],[71,79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,120,137,138],[71,85,100,120,137,138],[71,85,92,93,120,137,138],[71,83,85,93,94,120,137,138],[71,84,120,137,138],[71,77,80,85,120,137,138],[71,85,89,93,94,120,137,138],[71,89,120,137,138],[71,83,85,88,120,137,138,163],[71,77,82,85,92,120,137,138],[71,120,137,138,152],[71,80,85,106,120,137,138,168,170],[60,61,71,120,137,138]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fc1c715018bd0e18da3d081fc699ed864bcbc649f6c50f1c8ed16190d72c341","signature":"9b546d203bc5e7ee24e1c58d308ed9a0f051c77c5887b0a53c6e29e4e8b0819e","impliedFormat":99},{"version":"87d8e0cdaa871f6aba96c81cbbf41d68b69aeb8760e819968471f12d8101aa45","signature":"61bc310c0ba21ca50a756a2be5be5471da9fdf0ecc423cafbf76eb43725a7725","impliedFormat":99},{"version":"1c964b8867e333b1c9b121d01b59400a0c12845a9ed5bbb451a012cf10812b28","signature":"931735038a7680c23dbaf876f28f0a84b44f5814ea1d3ce6252ddc12ef598d01","impliedFormat":99},{"version":"8b9c1389a0ae5982da813d6e610cc969633b745aa697c66df0664878ceaacb45","signature":"14e3ec63b1cbbf9bab38f3c02d44c2df001a0762bda8fd877497e350f7cf149a","impliedFormat":99},{"version":"0a023ed2ad2c67bc5c2133587ce12a00549124ccacf26b065929530641e1291a","signature":"37c44cf815cb4620f0ad0be1836a3966a06793046cc873efe28fe3ef0aed2006","impliedFormat":99},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1},{"version":"4f6ae308c5f2901f2988c817e1511520619e9025b9b12cc7cce2ab2e6ffed78a","impliedFormat":1},{"version":"8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"c08dfc92155fa371a85591a1f8a22f5c4e0a0f97933dac0de15da5f4d1b22578","impliedFormat":1},{"version":"fd1b77b4588ef43760d4c86443e446fa39715ac1e54f6ae5ca6fce5d6d9c76fa","impliedFormat":1},{"version":"6ba4e91dfe621ccd8d268b3b6b95d8b95a33a97fabfa0950d9d6b288503d2dfe","impliedFormat":1},{"version":"7257315c96212e317ccaf05cd4b95f9fdd48350b6d366a131f02cec67fe634f7","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"89e326922cadcc2331d7e851011cf9f0456a681aaf3c95b48b81f8d80e8cdfba","impliedFormat":1},{"version":"d5799bcf7fe4e6de3063abf4e321c14b051706f03cf5716d8a19f22fe1f69519","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ed19da84b7dbf00952ad0b98ce5c194f1903bcf7c94d8103e8e0d63b271543ae","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"74d5a87c3616cd5d8691059d531504403aa857e09cbaecb1c64dfb9ace0db185","impliedFormat":1}],"root":[[60,64]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../../src/worker-lib","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[65,1],[174,2],[177,3],[181,4],[183,5],[175,1],[184,1],[185,1],[186,6],[172,1],[187,1],[171,7],[182,1],[117,8],[118,8],[119,9],[71,10],[120,11],[121,12],[122,13],[66,1],[69,14],[67,1],[68,1],[123,15],[124,16],[125,17],[126,18],[127,19],[128,20],[129,20],[130,21],[131,22],[132,23],[133,24],[72,1],[70,1],[134,25],[135,26],[136,27],[170,28],[137,29],[138,1],[139,30],[140,31],[141,32],[142,33],[143,34],[144,35],[145,36],[146,37],[147,38],[148,38],[149,39],[150,1],[151,40],[152,41],[154,42],[153,43],[155,44],[156,45],[157,46],[158,47],[159,48],[160,49],[161,50],[162,51],[163,52],[164,53],[165,54],[166,55],[167,56],[73,1],[74,1],[75,1],[114,57],[115,1],[116,1],[168,58],[169,59],[188,1],[192,60],[189,1],[191,61],[173,62],[194,63],[193,1],[195,64],[196,65],[176,1],[76,1],[190,1],[179,66],[180,66],[178,1],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[92,67],[102,68],[91,67],[112,69],[83,70],[82,71],[111,72],[105,73],[110,74],[85,75],[99,76],[84,77],[108,78],[80,79],[79,72],[109,80],[81,81],[86,82],[87,1],[90,82],[77,1],[113,83],[103,84],[94,85],[95,86],[97,87],[93,88],[96,89],[106,72],[88,90],[89,91],[98,92],[78,93],[101,84],[100,82],[104,1],[107,94],[62,95],[63,1],[61,1],[64,1],[60,1]],"latestChangedDtsFile":"./rpc-types.d.ts","version":"5.9.2"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * fs-core 引擎共享定义(lib 中立)—— opcode 语义、调优常量、内存态记录形状、
3
+ * RPC 错误构造。被 fs-core.worker.ts 及其拆出的 fs-core-recovery.ts /
4
+ * fs-core-write-ops.ts 三方共用;纯类型/常量声明,不含任何 DOM/WebWorker
5
+ * 专属全局引用,可被主 tsconfig(DOM lib)与 tsconfig.worker.json
6
+ * (WebWorker lib)两个 program 同时编译。
7
+ */
8
+ import type { WalRecord } from './wal-codec.js';
9
+ import type { FsCoreErrorCode } from './protocol.js';
10
+ export declare const OP: {
11
+ readonly WRITE: 1;
12
+ readonly RM: 2;
13
+ readonly MV: 3;
14
+ readonly MKDIR: 4;
15
+ readonly CHECKPOINT: 5;
16
+ readonly RESTORE: 6;
17
+ };
18
+ export declare const OP_NAME: Record<number, string>;
19
+ export declare const WRITE_OPCODES: Set<number>;
20
+ export declare const INLINE_MAX = 4096;
21
+ export declare const GROUP_WINDOW_MS = 50;
22
+ export declare const SEGMENT_ROTATE_BYTES: number;
23
+ export declare const OPID_WINDOW = 1024;
24
+ export declare const TURN_DEFAULT_TTL_MS = 120000;
25
+ export declare const TURN_MAX_OPS = 1000;
26
+ export declare const AUDIT_CAP = 4096;
27
+ export declare const CHECKPOINT_KEEP = 20;
28
+ export interface MirrorEntry {
29
+ content: string;
30
+ rev: number;
31
+ }
32
+ export interface AuditEntry {
33
+ gen: number;
34
+ opcode: number;
35
+ actor?: string;
36
+ turnId?: string;
37
+ path?: string;
38
+ from?: string;
39
+ to?: string;
40
+ cpId?: string;
41
+ }
42
+ export interface TurnState {
43
+ turnId: string;
44
+ cpId: string;
45
+ expiresAt: number;
46
+ ops: number;
47
+ }
48
+ export interface WindowOp {
49
+ respond: (r: Record<string, unknown>) => void;
50
+ gen: number;
51
+ path?: string;
52
+ actor?: string;
53
+ opId?: string;
54
+ extra?: Record<string, unknown>;
55
+ }
56
+ /** An opId's cached RPC result, replayed verbatim (+`idempotent: true`) when
57
+ * the same opId is re-sent after a response timeout. The live write path
58
+ * caches the FULL respond payload (`{gen, rev, ...extra}` / restore's
59
+ * `{gen, restored}`) so a replay carries the same fields the first response
60
+ * did — `cpId`/`turnId`/`expiresAt`/`restored` included. Entries rebuilt by
61
+ * WAL replay after a worker restart only carry `{gen}` (the WAL does not
62
+ * record memory-only extras); those entries serve cross-session dedup, which
63
+ * a same-session retry never hits. */
64
+ export type OpIdResult = {
65
+ gen: number;
66
+ rev?: number;
67
+ } & Record<string, unknown>;
68
+ export type Respond = (r: Record<string, unknown>) => void;
69
+ export interface WorkerError extends Error {
70
+ code?: FsCoreErrorCode;
71
+ extra?: Record<string, unknown>;
72
+ }
73
+ /** `code` is typed against the exported wire contract (worker-lib/protocol.ts),
74
+ * so the set of codes this worker can throw and the set consumers can match on
75
+ * are the same list by construction. */
76
+ export declare function rpcErr(code: FsCoreErrorCode, message: string, extra?: Record<string, unknown>): WorkerError;
77
+ /** 供 fs-core-recovery.ts 的回放循环使用;纯函数(无副作用)。 */
78
+ export declare function epochFloor(replayed: WalRecord[]): number;
79
+ //# sourceMappingURL=engine-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-shared.d.ts","sourceRoot":"","sources":["../../src/worker-lib/engine-shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,eAAO,MAAM,EAAE;;;;;;;CAA2E,CAAA;AAC1F,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA+E,CAAA;AAE1H,eAAO,MAAM,aAAa,aAAwD,CAAA;AAClF,eAAO,MAAM,UAAU,OAAO,CAAA;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,eAAO,MAAM,oBAAoB,QAAkB,CAAA;AACnD,eAAO,MAAM,WAAW,OAAO,CAAA;AAE/B,eAAO,MAAM,mBAAmB,SAAS,CAAA;AACzC,eAAO,MAAM,YAAY,OAAO,CAAA;AAChC,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;;;;;;sCAOsC;AACtC,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,KAAK;IACxC,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;wCAEwC;AACxC,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAK3G;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAExD"}
@@ -1,17 +1,20 @@
1
1
  export const OP = { WRITE: 1, RM: 2, MV: 3, MKDIR: 4, CHECKPOINT: 5, RESTORE: 6 };
2
2
  export const OP_NAME = { 1: 'write', 2: 'rm', 3: 'mv', 4: 'mkdir', 5: 'checkpoint', 6: 'restore' };
3
- // §4.7 restore 冲突检查只关心"写类"操作(改变文件内容/存在性),checkpoint 本身不算
3
+ // restore 冲突检查只关心"写类"操作(改变文件内容/存在性),checkpoint 本身不算
4
4
  export const WRITE_OPCODES = new Set([OP.WRITE, OP.RM, OP.MV, OP.RESTORE]);
5
5
  export const INLINE_MAX = 4096; // payload ≤4KB 内联进 WAL 记录
6
6
  export const GROUP_WINDOW_MS = 50; // 人类写组提交窗口
7
7
  export const SEGMENT_ROTATE_BYTES = 4 * 1024 * 1024;
8
8
  export const OPID_WINDOW = 1024;
9
- // P4 turn 能力:agent 写必须在有效 turn 内(fs-core 侧执法,不信任调用方透传)
9
+ // turn 能力:agent 写必须在有效 turn 内(fs-core 侧执法,不信任调用方透传)
10
10
  export const TURN_DEFAULT_TTL_MS = 120000;
11
11
  export const TURN_MAX_OPS = 1000; // per-turn 限额(跑飞的 agent 刹车)
12
12
  export const AUDIT_CAP = 4096; // 内存审计环(fs_diff 的数据源;重启由 WAL 回放重建)
13
- // P5 checkpoint LRU:保留最近 N 个;被淘汰者的 blob 在下次 compaction GC 回收
13
+ // checkpoint LRU:保留最近 N 个;被淘汰者的 blob 在下次 compaction GC 回收
14
14
  export const CHECKPOINT_KEEP = 20;
15
+ /** `code` is typed against the exported wire contract (worker-lib/protocol.ts),
16
+ * so the set of codes this worker can throw and the set consumers can match on
17
+ * are the same list by construction. */
15
18
  export function rpcErr(code, message, extra) {
16
19
  const e = new Error(message);
17
20
  e.code = code;
@@ -0,0 +1,4 @@
1
+ /** 路径监狱(纯函数,lib 中立)—— fs-core.worker.ts 的写路径统一走这里做归一化/校验。 */
2
+ export declare const DERIVED_PREFIXES: string[];
3
+ export declare function normalizePath(p: unknown): string | null;
4
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/worker-lib/paths.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,UAAqC,CAAA;AAElE,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUvD"}