@superblocksteam/workspace-sync 0.0.0-stage → 2.0.178-next.1

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 (123) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +43 -2
  3. package/dist/atomic-write.d.ts +7 -0
  4. package/dist/atomic-write.d.ts.map +1 -0
  5. package/dist/atomic-write.js +33 -0
  6. package/dist/atomic-write.js.map +1 -0
  7. package/dist/branch-write-guard.d.ts +32 -0
  8. package/dist/branch-write-guard.d.ts.map +1 -0
  9. package/dist/branch-write-guard.js +38 -0
  10. package/dist/branch-write-guard.js.map +1 -0
  11. package/dist/control.d.ts +237 -0
  12. package/dist/control.d.ts.map +1 -0
  13. package/dist/control.js +242 -0
  14. package/dist/control.js.map +1 -0
  15. package/dist/dbfs-transport.d.ts +52 -0
  16. package/dist/dbfs-transport.d.ts.map +1 -0
  17. package/dist/dbfs-transport.js +21 -0
  18. package/dist/dbfs-transport.js.map +1 -0
  19. package/dist/download.d.ts +54 -0
  20. package/dist/download.d.ts.map +1 -0
  21. package/dist/download.js +475 -0
  22. package/dist/download.js.map +1 -0
  23. package/dist/draft-helpers.d.ts +114 -0
  24. package/dist/draft-helpers.d.ts.map +1 -0
  25. package/dist/draft-helpers.js +760 -0
  26. package/dist/draft-helpers.js.map +1 -0
  27. package/dist/draft-journal-store.d.ts +30 -0
  28. package/dist/draft-journal-store.d.ts.map +1 -0
  29. package/dist/draft-journal-store.js +7 -0
  30. package/dist/draft-journal-store.js.map +1 -0
  31. package/dist/draft-state-report-metrics.d.ts +5 -0
  32. package/dist/draft-state-report-metrics.d.ts.map +1 -0
  33. package/dist/draft-state-report-metrics.js +36 -0
  34. package/dist/draft-state-report-metrics.js.map +1 -0
  35. package/dist/file-draft-journal-store.d.ts +26 -0
  36. package/dist/file-draft-journal-store.d.ts.map +1 -0
  37. package/dist/file-draft-journal-store.js +123 -0
  38. package/dist/file-draft-journal-store.js.map +1 -0
  39. package/dist/flush-scheduler.d.ts +24 -0
  40. package/dist/flush-scheduler.d.ts.map +1 -0
  41. package/dist/flush-scheduler.js +36 -0
  42. package/dist/flush-scheduler.js.map +1 -0
  43. package/dist/hash-cache.d.ts +16 -0
  44. package/dist/hash-cache.d.ts.map +1 -0
  45. package/dist/hash-cache.js +62 -0
  46. package/dist/hash-cache.js.map +1 -0
  47. package/dist/hash-dir-tree.d.ts +10 -0
  48. package/dist/hash-dir-tree.d.ts.map +1 -0
  49. package/dist/hash-dir-tree.js +53 -0
  50. package/dist/hash-dir-tree.js.map +1 -0
  51. package/dist/index.d.ts +27 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +27 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/list-dir.d.ts +31 -0
  56. package/dist/list-dir.d.ts.map +1 -0
  57. package/dist/list-dir.js +153 -0
  58. package/dist/list-dir.js.map +1 -0
  59. package/dist/logger.d.ts +16 -0
  60. package/dist/logger.d.ts.map +1 -0
  61. package/dist/logger.js +16 -0
  62. package/dist/logger.js.map +1 -0
  63. package/dist/native-draft-session.d.ts +28 -0
  64. package/dist/native-draft-session.d.ts.map +1 -0
  65. package/dist/native-draft-session.js +154 -0
  66. package/dist/native-draft-session.js.map +1 -0
  67. package/dist/rpc-client.d.ts +7 -0
  68. package/dist/rpc-client.d.ts.map +1 -0
  69. package/dist/rpc-client.js +2 -0
  70. package/dist/rpc-client.js.map +1 -0
  71. package/dist/safe-directory-reader.d.ts +28 -0
  72. package/dist/safe-directory-reader.d.ts.map +1 -0
  73. package/dist/safe-directory-reader.js +136 -0
  74. package/dist/safe-directory-reader.js.map +1 -0
  75. package/dist/server-tree.d.ts +56 -0
  76. package/dist/server-tree.d.ts.map +1 -0
  77. package/dist/server-tree.js +179 -0
  78. package/dist/server-tree.js.map +1 -0
  79. package/dist/session-draft-journal-store.d.ts +42 -0
  80. package/dist/session-draft-journal-store.d.ts.map +1 -0
  81. package/dist/session-draft-journal-store.js +177 -0
  82. package/dist/session-draft-journal-store.js.map +1 -0
  83. package/dist/snapshot/take-snapshot.d.ts +41 -0
  84. package/dist/snapshot/take-snapshot.d.ts.map +1 -0
  85. package/dist/snapshot/take-snapshot.js +244 -0
  86. package/dist/snapshot/take-snapshot.js.map +1 -0
  87. package/dist/snapshot/types.d.ts +25 -0
  88. package/dist/snapshot/types.d.ts.map +1 -0
  89. package/dist/snapshot/types.js +3 -0
  90. package/dist/snapshot/types.js.map +1 -0
  91. package/dist/snapshot/upload-snapshot.d.ts +33 -0
  92. package/dist/snapshot/upload-snapshot.d.ts.map +1 -0
  93. package/dist/snapshot/upload-snapshot.js +113 -0
  94. package/dist/snapshot/upload-snapshot.js.map +1 -0
  95. package/dist/socket-dbfs-transport.d.ts +32 -0
  96. package/dist/socket-dbfs-transport.d.ts.map +1 -0
  97. package/dist/socket-dbfs-transport.js +126 -0
  98. package/dist/socket-dbfs-transport.js.map +1 -0
  99. package/dist/sync-credential-provider.d.ts +27 -0
  100. package/dist/sync-credential-provider.d.ts.map +1 -0
  101. package/dist/sync-credential-provider.js +22 -0
  102. package/dist/sync-credential-provider.js.map +1 -0
  103. package/dist/sync-engine.d.ts +119 -0
  104. package/dist/sync-engine.d.ts.map +1 -0
  105. package/dist/sync-engine.js +358 -0
  106. package/dist/sync-engine.js.map +1 -0
  107. package/dist/sync-paths.d.ts +61 -0
  108. package/dist/sync-paths.d.ts.map +1 -0
  109. package/dist/sync-paths.js +107 -0
  110. package/dist/sync-paths.js.map +1 -0
  111. package/dist/sync-telemetry.d.ts +12 -0
  112. package/dist/sync-telemetry.d.ts.map +1 -0
  113. package/dist/sync-telemetry.js +33 -0
  114. package/dist/sync-telemetry.js.map +1 -0
  115. package/dist/testing.d.ts +66 -0
  116. package/dist/testing.d.ts.map +1 -0
  117. package/dist/testing.js +180 -0
  118. package/dist/testing.js.map +1 -0
  119. package/dist/workspace-state-store.d.ts +52 -0
  120. package/dist/workspace-state-store.d.ts.map +1 -0
  121. package/dist/workspace-state-store.js +45 -0
  122. package/dist/workspace-state-store.js.map +1 -0
  123. package/package.json +59 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-helpers.js","sourceRoot":"","sources":["../src/draft-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Where a native draft journal is kept. `NativeDraftJournal` owns the
3
+ * semantics (capture, reconcile, retire); a store only persists the one record
4
+ * an application root has.
5
+ */
6
+ export type DraftJournalPhase = "running" | "complete";
7
+ /** One native execution session's recovery record, decoded. */
8
+ export interface DraftJournalRecord {
9
+ /** Real path of the application root the record belongs to. */
10
+ root: string;
11
+ /** `<applicationId>:<branchName>`; a record for another scope is refused. */
12
+ scope: string;
13
+ id: string;
14
+ /** Tracked file contents before the session started, by relative path. */
15
+ before: ReadonlyMap<string, Buffer>;
16
+ /** Pre-session originals the draft markers are rebuilt from. */
17
+ originals: ReadonlyMap<string, Buffer>;
18
+ phase: DraftJournalPhase;
19
+ /** Snapshot hash of the finalized tree; set once `phase` is `complete`. */
20
+ hash?: string;
21
+ }
22
+ export interface DraftJournalStore {
23
+ /** The stored record, or undefined when there is none. */
24
+ read(): Promise<DraftJournalRecord | undefined>;
25
+ /** Replaces the stored record atomically. */
26
+ write(record: DraftJournalRecord): Promise<void>;
27
+ /** Removes the stored record. A missing record is not an error. */
28
+ clear(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=draft-journal-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-journal-store.d.ts","sourceRoot":"","sources":["../src/draft-journal-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvD,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gEAAgE;IAChE,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,EAAE,iBAAiB,CAAC;IACzB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,IAAI,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAChD,6CAA6C;IAC7C,KAAK,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,mEAAmE;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Where a native draft journal is kept. `NativeDraftJournal` owns the
3
+ * semantics (capture, reconcile, retire); a store only persists the one record
4
+ * an application root has.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=draft-journal-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-journal-store.js","sourceRoot":"","sources":["../src/draft-journal-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,5 @@
1
+ export type DraftRestoreOutcome = "error" | "markers_present" | "no_changes" | "no_checkpoint" | "restored";
2
+ export type DraftRestorePhase = "checkpoint_fetch" | "tree_diff" | "content_fetch" | "marker_write";
3
+ export declare function recordDraftRestore(outcome: DraftRestoreOutcome, phase?: DraftRestorePhase | "unknown"): void;
4
+ export declare function recordDraftStateReport(outcome: "error" | "success", durationMs: number): void;
5
+ //# sourceMappingURL=draft-state-report-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-state-report-metrics.d.ts","sourceRoot":"","sources":["../src/draft-state-report-metrics.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,WAAW,GACX,eAAe,GACf,cAAc,CAAC;AAEnB,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,GACpC,IAAI,CAQN;AAyBD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,GACjB,IAAI,CAIN"}
@@ -0,0 +1,36 @@
1
+ import { metrics } from "@opentelemetry/api";
2
+ const METER_NAME = "superblocks.dev-server.sync";
3
+ let resultCounter;
4
+ let durationHistogram;
5
+ let restoreCounter;
6
+ export function recordDraftRestore(outcome, phase) {
7
+ restoreCounter ??= metrics
8
+ .getMeter(METER_NAME)
9
+ .createCounter("superblocks_dev_server.sync.draft_restore", {
10
+ description: "Outcome of rebuilding draft markers from the last checkpoint at startup.",
11
+ });
12
+ restoreCounter.add(1, { outcome, ...(phase && { phase }) });
13
+ }
14
+ function getResultCounter() {
15
+ resultCounter ??= metrics
16
+ .getMeter(METER_NAME)
17
+ .createCounter("superblocks_dev_server.sync.draft_state_report", {
18
+ description: "Outcome of server draft-state reports.",
19
+ });
20
+ return resultCounter;
21
+ }
22
+ function getDurationHistogram() {
23
+ durationHistogram ??= metrics
24
+ .getMeter(METER_NAME)
25
+ .createHistogram("superblocks_dev_server.sync.draft_state_report.duration", {
26
+ description: "Draft-state report latency from queue insertion through completion.",
27
+ unit: "ms",
28
+ });
29
+ return durationHistogram;
30
+ }
31
+ export function recordDraftStateReport(outcome, durationMs) {
32
+ const attributes = { outcome };
33
+ getResultCounter().add(1, attributes);
34
+ getDurationHistogram().record(durationMs, attributes);
35
+ }
36
+ //# sourceMappingURL=draft-state-report-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-state-report-metrics.js","sourceRoot":"","sources":["../src/draft-state-report-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE3E,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAEjD,IAAI,aAAkC,CAAC;AACvC,IAAI,iBAAwC,CAAC;AAC7C,IAAI,cAAmC,CAAC;AAexC,MAAM,UAAU,kBAAkB,CAChC,OAA4B,EAC5B,KAAqC;IAErC,cAAc,KAAK,OAAO;SACvB,QAAQ,CAAC,UAAU,CAAC;SACpB,aAAa,CAAC,2CAA2C,EAAE;QAC1D,WAAW,EACT,0EAA0E;KAC7E,CAAC,CAAC;IACL,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB;IACvB,aAAa,KAAK,OAAO;SACtB,QAAQ,CAAC,UAAU,CAAC;SACpB,aAAa,CAAC,gDAAgD,EAAE;QAC/D,WAAW,EAAE,wCAAwC;KACtD,CAAC,CAAC;IACL,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB;IAC3B,iBAAiB,KAAK,OAAO;SAC1B,QAAQ,CAAC,UAAU,CAAC;SACpB,eAAe,CACd,yDAAyD,EACzD;QACE,WAAW,EACT,qEAAqE;QACvE,IAAI,EAAE,IAAI;KACX,CACF,CAAC;IACJ,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA4B,EAC5B,UAAkB;IAElB,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC;IAC/B,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,oBAAoB,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { DraftJournalRecord, DraftJournalStore } from "./draft-journal-store.js";
2
+ /** The default directory: a sibling of the application root. */
3
+ export declare function defaultDraftJournalDirectory(root: string): string;
4
+ /**
5
+ * Keeps the journal as one JSON file with base64 file contents in a directory
6
+ * outside the application root, named by the SHA-256 of the root's real path.
7
+ * This is the live-edit (Clark) layout; the location and schema are unchanged
8
+ * from before stores existed, so a journal left by an older dev server is
9
+ * still recovered.
10
+ */
11
+ export declare class FileDraftJournalStore implements DraftJournalStore {
12
+ private readonly root;
13
+ private readonly directory;
14
+ constructor(root: string, directory?: string);
15
+ read(): Promise<DraftJournalRecord | undefined>;
16
+ write(record: DraftJournalRecord): Promise<void>;
17
+ clear(): Promise<void>;
18
+ private realPath;
19
+ private filePath;
20
+ }
21
+ /**
22
+ * Throws unless `candidate` lies outside `root`, so a journal can never be
23
+ * written into (and synced with) the tree it describes.
24
+ */
25
+ export declare function assertOutsideRoot(root: string, candidate: string): void;
26
+ //# sourceMappingURL=file-draft-journal-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-draft-journal-store.d.ts","sourceRoot":"","sources":["../src/file-draft-journal-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAgBlC,gEAAgE;AAChE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF5B,YACmB,IAAI,EAAE,MAAM,EACZ,SAAS,SAAqC,EAC7D;IAEE,IAAI,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAiCpD;IAEK,KAAK,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAarD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;YAEa,QAAQ;YAQR,QAAQ;CAUvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAWvE"}
@@ -0,0 +1,123 @@
1
+ import { createHash } from "node:crypto";
2
+ import * as fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { z } from "zod";
5
+ import { writeFileAtomic } from "./atomic-write.js";
6
+ import { SafeDirectoryReader } from "./safe-directory-reader.js";
7
+ const MAX_JOURNAL_BYTES = 96 * 1024 * 1024;
8
+ const fileJournalSchema = z.object({
9
+ version: z.literal(1),
10
+ root: z.string(),
11
+ scope: z.string(),
12
+ id: z.string(),
13
+ before: z.record(z.string()),
14
+ originals: z.record(z.string()),
15
+ phase: z.enum(["running", "complete"]),
16
+ hash: z.string().optional(),
17
+ });
18
+ /** The default directory: a sibling of the application root. */
19
+ export function defaultDraftJournalDirectory(root) {
20
+ return path.resolve(root, "..", ".superblocks-native-drafts");
21
+ }
22
+ /**
23
+ * Keeps the journal as one JSON file with base64 file contents in a directory
24
+ * outside the application root, named by the SHA-256 of the root's real path.
25
+ * This is the live-edit (Clark) layout; the location and schema are unchanged
26
+ * from before stores existed, so a journal left by an older dev server is
27
+ * still recovered.
28
+ */
29
+ export class FileDraftJournalStore {
30
+ root;
31
+ directory;
32
+ constructor(root, directory = defaultDraftJournalDirectory(root)) {
33
+ this.root = root;
34
+ this.directory = directory;
35
+ }
36
+ async read() {
37
+ const file = await this.filePath();
38
+ const reader = await SafeDirectoryReader.open(path.dirname(file)).catch((error) => {
39
+ if (error instanceof Error &&
40
+ "code" in error &&
41
+ error.code === "ENOENT")
42
+ return undefined;
43
+ throw error;
44
+ });
45
+ if (!reader)
46
+ return undefined;
47
+ let contents;
48
+ try {
49
+ contents = await reader.readFile(path.basename(file), MAX_JOURNAL_BYTES);
50
+ }
51
+ finally {
52
+ await reader.close();
53
+ }
54
+ if (!contents)
55
+ return undefined;
56
+ const journal = fileJournalSchema.parse(JSON.parse(contents.toString("utf8")));
57
+ return {
58
+ root: journal.root,
59
+ scope: journal.scope,
60
+ id: journal.id,
61
+ before: decode(journal.before),
62
+ originals: decode(journal.originals),
63
+ phase: journal.phase,
64
+ ...(journal.hash === undefined ? {} : { hash: journal.hash }),
65
+ };
66
+ }
67
+ async write(record) {
68
+ const file = await this.filePath(true);
69
+ const journal = {
70
+ version: 1,
71
+ root: record.root,
72
+ scope: record.scope,
73
+ id: record.id,
74
+ before: encode(record.before),
75
+ originals: encode(record.originals),
76
+ phase: record.phase,
77
+ hash: record.hash,
78
+ };
79
+ await writeFileAtomic(file, JSON.stringify(journal));
80
+ }
81
+ async clear() {
82
+ await fs.rm(await this.filePath(), { force: true });
83
+ }
84
+ async realPath(absolute) {
85
+ return fs.realpath(absolute).catch((error) => {
86
+ if (error.code === "ENOENT")
87
+ return path.resolve(absolute);
88
+ throw error;
89
+ });
90
+ }
91
+ async filePath(create = false) {
92
+ const root = await this.realPath(this.root);
93
+ assertOutsideRoot(root, path.resolve(this.directory));
94
+ if (create)
95
+ await fs.mkdir(this.directory, { recursive: true, mode: 0o700 });
96
+ const directory = await this.realPath(this.directory);
97
+ assertOutsideRoot(root, directory);
98
+ const key = createHash("sha256").update(root).digest("hex");
99
+ return path.join(directory, `${key}.json`);
100
+ }
101
+ }
102
+ /**
103
+ * Throws unless `candidate` lies outside `root`, so a journal can never be
104
+ * written into (and synced with) the tree it describes.
105
+ */
106
+ export function assertOutsideRoot(root, candidate) {
107
+ const relative = path.relative(root, candidate);
108
+ if (!relative ||
109
+ (!relative.startsWith(`..${path.sep}`) &&
110
+ relative !== ".." &&
111
+ !path.isAbsolute(relative)))
112
+ throw new Error("Native draft journal must be outside the application root");
113
+ }
114
+ function encode(files) {
115
+ return Object.fromEntries([...files].map(([relative, bytes]) => [relative, bytes.toString("base64")]));
116
+ }
117
+ function decode(files) {
118
+ return new Map(Object.entries(files).map(([relative, encoded]) => [
119
+ relative,
120
+ Buffer.from(encoded, "base64"),
121
+ ]));
122
+ }
123
+ //# sourceMappingURL=file-draft-journal-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-draft-journal-store.js","sourceRoot":"","sources":["../src/file-draft-journal-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** Idle time after the last change before an interim flush runs. */
2
+ export declare const SYNC_INTERVAL_MS = 10000;
3
+ /** Longest a continuous burst of changes waits for an interim flush. */
4
+ export declare const SYNC_MAX_WAIT_MS = 30000;
5
+ export interface FlushScheduler {
6
+ /** Records a change: (re)arms the trailing timer within the burst cap. */
7
+ schedule(): void;
8
+ /** Drops a pending flush without running it. */
9
+ cancel(): void;
10
+ /** True while a flush is armed. */
11
+ readonly pending: boolean;
12
+ }
13
+ /**
14
+ * Trailing debounce with a cap, matching the live-edit autosync: a flush runs
15
+ * `intervalMs` after the last change, and no later than `maxWaitMs` after the
16
+ * first change of a burst.
17
+ */
18
+ export declare function createFlushScheduler({ flush, onError, intervalMs, maxWaitMs, }: {
19
+ flush: () => Promise<unknown>;
20
+ onError?: (error: unknown) => void;
21
+ intervalMs?: number;
22
+ maxWaitMs?: number;
23
+ }): FlushScheduler;
24
+ //# sourceMappingURL=flush-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-scheduler.d.ts","sourceRoot":"","sources":["../src/flush-scheduler.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,QAAQ,IAAI,IAAI,CAAC;IACjB,gDAAgD;IAChD,MAAM,IAAI,IAAI,CAAC;IACf,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,OAAO,EACP,UAA6B,EAC7B,SAA4B,GAC7B,EAAE;IACD,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CA2BjB"}
@@ -0,0 +1,36 @@
1
+ /** Idle time after the last change before an interim flush runs. */
2
+ export const SYNC_INTERVAL_MS = 10_000;
3
+ /** Longest a continuous burst of changes waits for an interim flush. */
4
+ export const SYNC_MAX_WAIT_MS = 30_000;
5
+ /**
6
+ * Trailing debounce with a cap, matching the live-edit autosync: a flush runs
7
+ * `intervalMs` after the last change, and no later than `maxWaitMs` after the
8
+ * first change of a burst.
9
+ */
10
+ export function createFlushScheduler({ flush, onError, intervalMs = SYNC_INTERVAL_MS, maxWaitMs = SYNC_MAX_WAIT_MS, }) {
11
+ let timer;
12
+ let burstStartedAt;
13
+ const fire = () => {
14
+ timer = undefined;
15
+ burstStartedAt = undefined;
16
+ flush().catch((error) => onError?.(error));
17
+ };
18
+ return {
19
+ schedule() {
20
+ const now = Date.now();
21
+ burstStartedAt ??= now;
22
+ const remaining = maxWaitMs - (now - burstStartedAt);
23
+ clearTimeout(timer);
24
+ timer = setTimeout(fire, Math.max(0, Math.min(intervalMs, remaining)));
25
+ },
26
+ cancel() {
27
+ clearTimeout(timer);
28
+ timer = undefined;
29
+ burstStartedAt = undefined;
30
+ },
31
+ get pending() {
32
+ return timer !== undefined;
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=flush-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-scheduler.js","sourceRoot":"","sources":["../src/flush-scheduler.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAWvC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,KAAK,EACL,OAAO,EACP,UAAU,GAAG,gBAAgB,EAC7B,SAAS,GAAG,gBAAgB,GAM7B;IACC,IAAI,KAAgD,CAAC;IACrD,IAAI,cAAkC,CAAC;IAEvC,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,GAAG,SAAS,CAAC;QAClB,cAAc,GAAG,SAAS,CAAC;QAC3B,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,cAAc,KAAK,GAAG,CAAC;YACvB,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YACrD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,MAAM;YACJ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC;YAClB,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO;YACT,OAAO,KAAK,KAAK,SAAS,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { DirectorySnapshot, DirectoryState } from "./snapshot/types.js";
2
+ /**
3
+ * A cache of hashes of DBFS objects that we know that are already stored in the server.
4
+ */
5
+ export declare class HashCache {
6
+ private directories;
7
+ private file_contents;
8
+ private now;
9
+ add_directory(hash: string): void;
10
+ add_file_content(hash: string): void;
11
+ add_directory_recursive(directory: DirectoryState | DirectorySnapshot): void;
12
+ check_directory(hash: string): boolean;
13
+ check_file_content(hash: string): boolean;
14
+ empty(): void;
15
+ }
16
+ //# sourceMappingURL=hash-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-cache.d.ts","sourceRoot":"","sources":["../src/hash-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAS7E;;GAEG;AACH,qBAAa,SAAS;IAGpB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,aAAa,CAA6B;IAElD,OAAO,CAAC,GAAG;IAIX,aAAa,CAAC,IAAI,EAAE,MAAM,QAEzB;IAED,gBAAgB,CAAC,IAAI,EAAE,MAAM,QAE5B;IAED,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,iBAAiB,QASpE;IAED,eAAe,CAAC,IAAI,EAAE,MAAM,WAU3B;IAED,kBAAkB,CAAC,IAAI,EAAE,MAAM,WAU9B;IAED,KAAK,SAGJ;CACF"}
@@ -0,0 +1,62 @@
1
+ /** How long after we've seen a hash in the server, we consider it to be still in the server. */
2
+ const CACHE_DURATION_MS = 1_000 * 60 * 60 * 6; // 6 hours
3
+ // TODO(george): We are not currently removing old entries from the cache after they expire. We only do this when one of the
4
+ // `check_*` methods is called. If a hash is added to the cache but never checked, it will never be removed from the cache.
5
+ // This causes a memory leak. This can be a problem if the user has a large number of files in their project and/or if they are
6
+ // keeping the dev server running for a long time.
7
+ /**
8
+ * A cache of hashes of DBFS objects that we know that are already stored in the server.
9
+ */
10
+ export class HashCache {
11
+ // for both maps, the values are timestamps from the monotonic clock (`performance.now()`) that represent the time
12
+ // when we added the hash to the respective cache
13
+ directories = new Map();
14
+ file_contents = new Map();
15
+ now() {
16
+ return performance.now();
17
+ }
18
+ add_directory(hash) {
19
+ this.directories.set(hash, this.now());
20
+ }
21
+ add_file_content(hash) {
22
+ this.file_contents.set(hash, this.now());
23
+ }
24
+ add_directory_recursive(directory) {
25
+ this.add_directory(directory.hash);
26
+ for (const entry of directory.contents) {
27
+ if (entry.type === "d") {
28
+ this.add_directory_recursive(entry);
29
+ }
30
+ else if (entry.type === "-") {
31
+ this.add_file_content(entry.hash);
32
+ }
33
+ }
34
+ }
35
+ check_directory(hash) {
36
+ const timestamp = this.directories.get(hash);
37
+ if (timestamp === undefined) {
38
+ return false;
39
+ }
40
+ if (this.now() - timestamp > CACHE_DURATION_MS) {
41
+ this.directories.delete(hash);
42
+ return false;
43
+ }
44
+ return true;
45
+ }
46
+ check_file_content(hash) {
47
+ const timestamp = this.file_contents.get(hash);
48
+ if (timestamp === undefined) {
49
+ return false;
50
+ }
51
+ if (this.now() - timestamp > CACHE_DURATION_MS) {
52
+ this.file_contents.delete(hash);
53
+ return false;
54
+ }
55
+ return true;
56
+ }
57
+ empty() {
58
+ this.directories.clear();
59
+ this.file_contents.clear();
60
+ }
61
+ }
62
+ //# sourceMappingURL=hash-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-cache.js","sourceRoot":"","sources":["../src/hash-cache.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,iBAAiB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU;AAEzD,4HAA4H;AAC5H,2HAA2H;AAC3H,+HAA+H;AAC/H,kDAAkD;AAClD;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,kHAAkH;IAClH,iDAAiD;IACzC,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,GAAG;QACT,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB,CAAC,SAA6C;QACnE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { DirectoryState } from "./snapshot/types.js";
2
+ /**
3
+ * Computes the hash of a local directory, including the hashes of all its contents recursively.
4
+ *
5
+ * @param localDirectoryPath - The path to the local directory to hash.
6
+ * @param excludedDirectories - An array of directory names to be ignored.
7
+ * @returns A promise that resolves to the hash of the directory and its contents.
8
+ */
9
+ export declare function hashLocalDirectory(localDirectoryPath: string, rootDirectoryPath?: string): Promise<DirectoryState>;
10
+ //# sourceMappingURL=hash-dir-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-dir-tree.d.ts","sourceRoot":"","sources":["../src/hash-dir-tree.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,SAAqB,GACrC,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
@@ -0,0 +1,53 @@
1
+ import { hashDirectoryContents, hashFileContents, } from "@superblocksteam/shared";
2
+ import { unreachable } from "@superblocksteam/util";
3
+ import { listLocalDirectory } from "./list-dir.js";
4
+ /**
5
+ * Computes the hash of a local directory, including the hashes of all its contents recursively.
6
+ *
7
+ * @param localDirectoryPath - The path to the local directory to hash.
8
+ * @param excludedDirectories - An array of directory names to be ignored.
9
+ * @returns A promise that resolves to the hash of the directory and its contents.
10
+ */
11
+ export async function hashLocalDirectory(localDirectoryPath, rootDirectoryPath = localDirectoryPath) {
12
+ const directoryContents = [];
13
+ const localDirListing = listLocalDirectory(localDirectoryPath, rootDirectoryPath);
14
+ for await (const localDirEntry of localDirListing) {
15
+ let entry;
16
+ switch (localDirEntry.type) {
17
+ case "-": {
18
+ const hash = await hashFileContents(localDirEntry.contents);
19
+ entry = {
20
+ type: "-",
21
+ executable: localDirEntry.executable,
22
+ name: localDirEntry.name,
23
+ hash,
24
+ };
25
+ break;
26
+ }
27
+ case "d": {
28
+ const { hash, contents: subdirectoryContents } = await hashLocalDirectory(localDirEntry.localPath, rootDirectoryPath);
29
+ entry = {
30
+ type: "d",
31
+ name: localDirEntry.name,
32
+ hash,
33
+ contents: subdirectoryContents,
34
+ };
35
+ break;
36
+ }
37
+ case "l": {
38
+ entry = {
39
+ type: "l",
40
+ target: localDirEntry.target,
41
+ name: localDirEntry.name,
42
+ };
43
+ break;
44
+ }
45
+ default:
46
+ unreachable(localDirEntry);
47
+ }
48
+ directoryContents.push(entry);
49
+ }
50
+ const hash = await hashDirectoryContents(directoryContents);
51
+ return { contents: directoryContents, hash };
52
+ }
53
+ //# sourceMappingURL=hash-dir-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-dir-tree.js","sourceRoot":"","sources":["../src/hash-dir-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,kBAA0B,EAC1B,iBAAiB,GAAG,kBAAkB;IAEtC,MAAM,iBAAiB,GAAyB,EAAE,CAAC;IACnD,MAAM,eAAe,GAAG,kBAAkB,CACxC,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;IACF,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;QAClD,IAAI,KAAyB,CAAC;QAC9B,QAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,MAAM,gBAAgB,CACjC,aAAa,CAAC,QAAwB,CACvC,CAAC;gBACF,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,UAAU,EAAE,aAAa,CAAC,UAAU;oBACpC,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI;iBACL,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,GAAG,EAAE,CAAC;gBACT,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAC5C,MAAM,kBAAkB,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACvE,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI;oBACJ,QAAQ,EAAE,oBAAoB;iBAC/B,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,GAAG,EAAE,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,IAAI,EAAE,aAAa,CAAC,IAAI;iBACzB,CAAC;gBACF,MAAM;YACR,CAAC;YACD;gBACE,WAAW,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,27 @@
1
+ export * from "./atomic-write.js";
2
+ export * from "./branch-write-guard.js";
3
+ export * from "./dbfs-transport.js";
4
+ export * from "./download.js";
5
+ export * from "./draft-helpers.js";
6
+ export * from "./draft-journal-store.js";
7
+ export * from "./draft-state-report-metrics.js";
8
+ export * from "./file-draft-journal-store.js";
9
+ export * from "./flush-scheduler.js";
10
+ export * from "./hash-cache.js";
11
+ export * from "./hash-dir-tree.js";
12
+ export * from "./list-dir.js";
13
+ export * from "./logger.js";
14
+ export * from "./native-draft-session.js";
15
+ export * from "./rpc-client.js";
16
+ export * from "./safe-directory-reader.js";
17
+ export * from "./server-tree.js";
18
+ export * from "./session-draft-journal-store.js";
19
+ export * from "./snapshot/take-snapshot.js";
20
+ export * from "./snapshot/types.js";
21
+ export * from "./snapshot/upload-snapshot.js";
22
+ export * from "./socket-dbfs-transport.js";
23
+ export * from "./sync-credential-provider.js";
24
+ export * from "./sync-engine.js";
25
+ export * from "./sync-paths.js";
26
+ export * from "./workspace-state-store.js";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ export * from "./atomic-write.js";
2
+ export * from "./branch-write-guard.js";
3
+ export * from "./dbfs-transport.js";
4
+ export * from "./download.js";
5
+ export * from "./draft-helpers.js";
6
+ export * from "./draft-journal-store.js";
7
+ export * from "./draft-state-report-metrics.js";
8
+ export * from "./file-draft-journal-store.js";
9
+ export * from "./flush-scheduler.js";
10
+ export * from "./hash-cache.js";
11
+ export * from "./hash-dir-tree.js";
12
+ export * from "./list-dir.js";
13
+ export * from "./logger.js";
14
+ export * from "./native-draft-session.js";
15
+ export * from "./rpc-client.js";
16
+ export * from "./safe-directory-reader.js";
17
+ export * from "./server-tree.js";
18
+ export * from "./session-draft-journal-store.js";
19
+ export * from "./snapshot/take-snapshot.js";
20
+ export * from "./snapshot/types.js";
21
+ export * from "./snapshot/upload-snapshot.js";
22
+ export * from "./socket-dbfs-transport.js";
23
+ export * from "./sync-credential-provider.js";
24
+ export * from "./sync-engine.js";
25
+ export * from "./sync-paths.js";
26
+ export * from "./workspace-state-store.js";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC"}