@bendyline/docblocks 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/{chunk-J32GU3F3.js → chunk-6IYMTYMQ.js} +249 -221
  2. package/dist/chunk-6IYMTYMQ.js.map +1 -0
  3. package/dist/{chunk-75UUF6C4.js → chunk-B56KWCSE.js} +2 -2
  4. package/dist/{chunk-RVQHY3XU.js → chunk-BNKV7MTO.js} +1 -1
  5. package/dist/{chunk-RVQHY3XU.js.map → chunk-BNKV7MTO.js.map} +1 -1
  6. package/dist/chunk-BXMF5YQJ.js +149 -0
  7. package/dist/chunk-BXMF5YQJ.js.map +1 -0
  8. package/dist/{chunk-PGR7LK6D.js → chunk-COYQXQK3.js} +14 -5
  9. package/dist/chunk-COYQXQK3.js.map +1 -0
  10. package/dist/{chunk-RQJRQF46.js → chunk-DN7A33LL.js} +42 -49
  11. package/dist/chunk-DN7A33LL.js.map +1 -0
  12. package/dist/chunk-FA7UNOXK.js +20 -0
  13. package/dist/chunk-FA7UNOXK.js.map +1 -0
  14. package/dist/chunk-GM5YXU4L.js +29 -0
  15. package/dist/chunk-GM5YXU4L.js.map +1 -0
  16. package/dist/{chunk-SI2LU2RP.js → chunk-JS6XFWQK.js} +2 -1
  17. package/dist/chunk-JS6XFWQK.js.map +1 -0
  18. package/dist/{chunk-EGNDADXB.js → chunk-MNSZ7EZN.js} +2 -2
  19. package/dist/chunk-P3DVZQ6S.js +228 -0
  20. package/dist/chunk-P3DVZQ6S.js.map +1 -0
  21. package/dist/chunk-P4WATND4.js +52 -0
  22. package/dist/chunk-P4WATND4.js.map +1 -0
  23. package/dist/chunk-RVPGQBWR.js +169 -0
  24. package/dist/chunk-RVPGQBWR.js.map +1 -0
  25. package/dist/chunk-U722UUFN.js +9 -0
  26. package/dist/chunk-U722UUFN.js.map +1 -0
  27. package/dist/{chunk-GCPBEMMH.js → chunk-VTCSF7VS.js} +11 -21
  28. package/dist/chunk-VTCSF7VS.js.map +1 -0
  29. package/dist/{chunk-2D7Y4IR3.js → chunk-WJKYY5QR.js} +123 -66
  30. package/dist/chunk-WJKYY5QR.js.map +1 -0
  31. package/dist/{chunk-5MYAICRE.js → chunk-XUML3MKV.js} +44 -56
  32. package/dist/chunk-XUML3MKV.js.map +1 -0
  33. package/dist/document/index.d.ts +358 -6
  34. package/dist/document/index.js +24 -3
  35. package/dist/document/index.js.map +1 -1
  36. package/dist/filesystem/electron.d.ts +73 -4
  37. package/dist/filesystem/electron.js +16 -3
  38. package/dist/filesystem/electron.js.map +1 -1
  39. package/dist/filesystem/index.d.ts +228 -22
  40. package/dist/filesystem/index.js +133 -19
  41. package/dist/filesystem/index.js.map +1 -1
  42. package/dist/filesystem/indexeddb.d.ts +284 -5
  43. package/dist/filesystem/indexeddb.js +22 -4
  44. package/dist/filesystem/indexeddb.js.map +1 -1
  45. package/dist/filesystem/memory.d.ts +152 -4
  46. package/dist/filesystem/memory.js +12 -3
  47. package/dist/filesystem/memory.js.map +1 -1
  48. package/dist/filesystem/native.d.ts +136 -4
  49. package/dist/filesystem/native.js +27 -3
  50. package/dist/filesystem/native.js.map +1 -1
  51. package/dist/host/index.d.ts +32 -9
  52. package/dist/host/index.js +26 -29
  53. package/dist/host/index.js.map +1 -1
  54. package/dist/index.d.ts +14 -10
  55. package/dist/index.js +204 -9
  56. package/dist/index.js.map +1 -1
  57. package/dist/mcp/index.d.ts +33 -4
  58. package/dist/mcp/index.js +31 -3
  59. package/dist/mcp/index.js.map +1 -1
  60. package/dist/mcp/zod.d.ts +637 -635
  61. package/dist/mcp/zod.js +700 -884
  62. package/dist/mcp/zod.js.map +1 -1
  63. package/dist/share/index.d.ts +43 -0
  64. package/dist/share/index.js +13 -0
  65. package/dist/share/index.js.map +1 -0
  66. package/dist/{types-CsX6EN2t.d.ts → types-BEg5SQ1_.d.ts} +1 -1
  67. package/dist/{types-eOlt9J7n.d.ts → types-CueK0tvU.d.ts} +34 -11
  68. package/dist/vscode/index.d.ts +220 -3
  69. package/dist/vscode/index.js +382 -2
  70. package/dist/vscode/index.js.map +1 -1
  71. package/dist/workspace/index.d.ts +141 -4
  72. package/dist/workspace/index.js +28 -2
  73. package/dist/workspace/index.js.map +1 -1
  74. package/package.json +9 -5
  75. package/dist/chunk-2D7Y4IR3.js.map +0 -1
  76. package/dist/chunk-5MYAICRE.js.map +0 -1
  77. package/dist/chunk-AYZ4HN5M.js +0 -20
  78. package/dist/chunk-AYZ4HN5M.js.map +0 -1
  79. package/dist/chunk-GCPBEMMH.js.map +0 -1
  80. package/dist/chunk-J32GU3F3.js.map +0 -1
  81. package/dist/chunk-PGR7LK6D.js.map +0 -1
  82. package/dist/chunk-RQJRQF46.js.map +0 -1
  83. package/dist/chunk-SI2LU2RP.js.map +0 -1
  84. package/dist/chunk-W5UUUII5.js +0 -142
  85. package/dist/chunk-W5UUUII5.js.map +0 -1
  86. package/dist/document/document-session.d.ts +0 -127
  87. package/dist/document/document-session.d.ts.map +0 -1
  88. package/dist/document/document-session.js +0 -749
  89. package/dist/document/document-session.js.map +0 -1
  90. package/dist/document/filesystem-target.d.ts +0 -17
  91. package/dist/document/filesystem-target.d.ts.map +0 -1
  92. package/dist/document/filesystem-target.js +0 -70
  93. package/dist/document/filesystem-target.js.map +0 -1
  94. package/dist/document/index.d.ts.map +0 -1
  95. package/dist/document/recovery-journal.d.ts +0 -125
  96. package/dist/document/recovery-journal.d.ts.map +0 -1
  97. package/dist/document/recovery-journal.js +0 -385
  98. package/dist/document/recovery-journal.js.map +0 -1
  99. package/dist/document/types.d.ts +0 -89
  100. package/dist/document/types.d.ts.map +0 -1
  101. package/dist/document/types.js +0 -9
  102. package/dist/document/types.js.map +0 -1
  103. package/dist/filesystem/commit-lock.d.ts +0 -3
  104. package/dist/filesystem/commit-lock.d.ts.map +0 -1
  105. package/dist/filesystem/commit-lock.js +0 -20
  106. package/dist/filesystem/commit-lock.js.map +0 -1
  107. package/dist/filesystem/dbk-workspace.d.ts +0 -34
  108. package/dist/filesystem/dbk-workspace.d.ts.map +0 -1
  109. package/dist/filesystem/dbk-workspace.js +0 -85
  110. package/dist/filesystem/dbk-workspace.js.map +0 -1
  111. package/dist/filesystem/electron-provider-v2.d.ts +0 -36
  112. package/dist/filesystem/electron-provider-v2.d.ts.map +0 -1
  113. package/dist/filesystem/electron-provider-v2.js +0 -503
  114. package/dist/filesystem/electron-provider-v2.js.map +0 -1
  115. package/dist/filesystem/electron-provider.d.ts +0 -35
  116. package/dist/filesystem/electron-provider.d.ts.map +0 -1
  117. package/dist/filesystem/electron-provider.js +0 -69
  118. package/dist/filesystem/electron-provider.js.map +0 -1
  119. package/dist/filesystem/electron.d.ts.map +0 -1
  120. package/dist/filesystem/file-media-provider.d.ts +0 -23
  121. package/dist/filesystem/file-media-provider.d.ts.map +0 -1
  122. package/dist/filesystem/file-media-provider.js +0 -85
  123. package/dist/filesystem/file-media-provider.js.map +0 -1
  124. package/dist/filesystem/filesystem-content-container.d.ts +0 -24
  125. package/dist/filesystem/filesystem-content-container.d.ts.map +0 -1
  126. package/dist/filesystem/filesystem-content-container.js +0 -153
  127. package/dist/filesystem/filesystem-content-container.js.map +0 -1
  128. package/dist/filesystem/fs-error.d.ts +0 -46
  129. package/dist/filesystem/fs-error.d.ts.map +0 -1
  130. package/dist/filesystem/fs-error.js +0 -170
  131. package/dist/filesystem/fs-error.js.map +0 -1
  132. package/dist/filesystem/index.d.ts.map +0 -1
  133. package/dist/filesystem/indexeddb-content-container.d.ts +0 -22
  134. package/dist/filesystem/indexeddb-content-container.d.ts.map +0 -1
  135. package/dist/filesystem/indexeddb-content-container.js +0 -100
  136. package/dist/filesystem/indexeddb-content-container.js.map +0 -1
  137. package/dist/filesystem/indexeddb-provider-v2.d.ts +0 -96
  138. package/dist/filesystem/indexeddb-provider-v2.d.ts.map +0 -1
  139. package/dist/filesystem/indexeddb-provider-v2.js +0 -1241
  140. package/dist/filesystem/indexeddb-provider-v2.js.map +0 -1
  141. package/dist/filesystem/indexeddb-provider.d.ts +0 -39
  142. package/dist/filesystem/indexeddb-provider.d.ts.map +0 -1
  143. package/dist/filesystem/indexeddb-provider.js +0 -145
  144. package/dist/filesystem/indexeddb-provider.js.map +0 -1
  145. package/dist/filesystem/indexeddb-store.d.ts +0 -34
  146. package/dist/filesystem/indexeddb-store.d.ts.map +0 -1
  147. package/dist/filesystem/indexeddb-store.js +0 -165
  148. package/dist/filesystem/indexeddb-store.js.map +0 -1
  149. package/dist/filesystem/indexeddb.d.ts.map +0 -1
  150. package/dist/filesystem/legacy-v2-adapter.d.ts +0 -62
  151. package/dist/filesystem/legacy-v2-adapter.d.ts.map +0 -1
  152. package/dist/filesystem/legacy-v2-adapter.js +0 -499
  153. package/dist/filesystem/legacy-v2-adapter.js.map +0 -1
  154. package/dist/filesystem/memory-provider-v2.d.ts +0 -92
  155. package/dist/filesystem/memory-provider-v2.d.ts.map +0 -1
  156. package/dist/filesystem/memory-provider-v2.js +0 -615
  157. package/dist/filesystem/memory-provider-v2.js.map +0 -1
  158. package/dist/filesystem/memory-provider.d.ts +0 -54
  159. package/dist/filesystem/memory-provider.d.ts.map +0 -1
  160. package/dist/filesystem/memory-provider.js +0 -132
  161. package/dist/filesystem/memory-provider.js.map +0 -1
  162. package/dist/filesystem/memory.d.ts.map +0 -1
  163. package/dist/filesystem/move-entry.d.ts +0 -9
  164. package/dist/filesystem/move-entry.d.ts.map +0 -1
  165. package/dist/filesystem/move-entry.js +0 -103
  166. package/dist/filesystem/move-entry.js.map +0 -1
  167. package/dist/filesystem/move-error.d.ts +0 -53
  168. package/dist/filesystem/move-error.d.ts.map +0 -1
  169. package/dist/filesystem/move-error.js +0 -99
  170. package/dist/filesystem/move-error.js.map +0 -1
  171. package/dist/filesystem/native-provider-v2.d.ts +0 -75
  172. package/dist/filesystem/native-provider-v2.d.ts.map +0 -1
  173. package/dist/filesystem/native-provider-v2.js +0 -849
  174. package/dist/filesystem/native-provider-v2.js.map +0 -1
  175. package/dist/filesystem/native-provider.d.ts +0 -53
  176. package/dist/filesystem/native-provider.d.ts.map +0 -1
  177. package/dist/filesystem/native-provider.js +0 -471
  178. package/dist/filesystem/native-provider.js.map +0 -1
  179. package/dist/filesystem/native.d.ts.map +0 -1
  180. package/dist/filesystem/types.d.ts +0 -83
  181. package/dist/filesystem/types.d.ts.map +0 -1
  182. package/dist/filesystem/types.js +0 -16
  183. package/dist/filesystem/types.js.map +0 -1
  184. package/dist/filesystem/v2.d.ts +0 -172
  185. package/dist/filesystem/v2.d.ts.map +0 -1
  186. package/dist/filesystem/v2.js +0 -16
  187. package/dist/filesystem/v2.js.map +0 -1
  188. package/dist/filesystem/workspace-path.d.ts +0 -21
  189. package/dist/filesystem/workspace-path.d.ts.map +0 -1
  190. package/dist/filesystem/workspace-path.js +0 -80
  191. package/dist/filesystem/workspace-path.js.map +0 -1
  192. package/dist/host/filesystem-v2.d.ts +0 -45
  193. package/dist/host/filesystem-v2.d.ts.map +0 -1
  194. package/dist/host/filesystem-v2.js +0 -13
  195. package/dist/host/filesystem-v2.js.map +0 -1
  196. package/dist/host/git.d.ts +0 -200
  197. package/dist/host/git.d.ts.map +0 -1
  198. package/dist/host/git.js +0 -15
  199. package/dist/host/git.js.map +0 -1
  200. package/dist/host/index.d.ts.map +0 -1
  201. package/dist/host/types.d.ts +0 -232
  202. package/dist/host/types.d.ts.map +0 -1
  203. package/dist/host/types.js +0 -10
  204. package/dist/host/types.js.map +0 -1
  205. package/dist/host/wire-policy.d.ts +0 -22
  206. package/dist/host/wire-policy.d.ts.map +0 -1
  207. package/dist/host/wire-policy.js +0 -92
  208. package/dist/host/wire-policy.js.map +0 -1
  209. package/dist/index.d.ts.map +0 -1
  210. package/dist/mcp/index.d.ts.map +0 -1
  211. package/dist/mcp/types.d.ts +0 -466
  212. package/dist/mcp/types.d.ts.map +0 -1
  213. package/dist/mcp/types.js +0 -25
  214. package/dist/mcp/types.js.map +0 -1
  215. package/dist/mcp/wire.d.ts +0 -29
  216. package/dist/mcp/wire.d.ts.map +0 -1
  217. package/dist/mcp/wire.js +0 -1046
  218. package/dist/mcp/wire.js.map +0 -1
  219. package/dist/mcp/zod.d.ts.map +0 -1
  220. package/dist/vscode/index.d.ts.map +0 -1
  221. package/dist/vscode/messages.d.ts +0 -204
  222. package/dist/vscode/messages.d.ts.map +0 -1
  223. package/dist/vscode/messages.js +0 -494
  224. package/dist/vscode/messages.js.map +0 -1
  225. package/dist/workspace/index.d.ts.map +0 -1
  226. package/dist/workspace/reconcile-electron.d.ts +0 -19
  227. package/dist/workspace/reconcile-electron.d.ts.map +0 -1
  228. package/dist/workspace/reconcile-electron.js +0 -42
  229. package/dist/workspace/reconcile-electron.js.map +0 -1
  230. package/dist/workspace/types.d.ts +0 -69
  231. package/dist/workspace/types.d.ts.map +0 -1
  232. package/dist/workspace/types.js +0 -2
  233. package/dist/workspace/types.js.map +0 -1
  234. package/dist/workspace/workspace-manager.d.ts +0 -47
  235. package/dist/workspace/workspace-manager.d.ts.map +0 -1
  236. package/dist/workspace/workspace-manager.js +0 -126
  237. package/dist/workspace/workspace-manager.js.map +0 -1
  238. package/src/document/document-session.ts +0 -834
  239. package/src/document/filesystem-target.ts +0 -109
  240. package/src/document/index.ts +0 -41
  241. package/src/document/recovery-journal.ts +0 -536
  242. package/src/document/types.ts +0 -116
  243. package/src/filesystem/commit-lock.ts +0 -29
  244. package/src/filesystem/dbk-workspace.ts +0 -135
  245. package/src/filesystem/electron-provider-v2.ts +0 -630
  246. package/src/filesystem/electron-provider.ts +0 -99
  247. package/src/filesystem/electron.ts +0 -3
  248. package/src/filesystem/file-media-provider.ts +0 -103
  249. package/src/filesystem/filesystem-content-container.ts +0 -164
  250. package/src/filesystem/fs-error.ts +0 -234
  251. package/src/filesystem/index.ts +0 -143
  252. package/src/filesystem/indexeddb-content-container.ts +0 -112
  253. package/src/filesystem/indexeddb-provider-v2.ts +0 -1740
  254. package/src/filesystem/indexeddb-provider.ts +0 -171
  255. package/src/filesystem/indexeddb-store.ts +0 -207
  256. package/src/filesystem/indexeddb.ts +0 -12
  257. package/src/filesystem/legacy-v2-adapter.ts +0 -779
  258. package/src/filesystem/memory-provider-v2.ts +0 -896
  259. package/src/filesystem/memory-provider.ts +0 -180
  260. package/src/filesystem/memory.ts +0 -15
  261. package/src/filesystem/move-entry.ts +0 -142
  262. package/src/filesystem/move-error.ts +0 -159
  263. package/src/filesystem/native-provider-v2.ts +0 -1165
  264. package/src/filesystem/native-provider.ts +0 -537
  265. package/src/filesystem/native.ts +0 -16
  266. package/src/filesystem/types.ts +0 -114
  267. package/src/filesystem/v2.ts +0 -231
  268. package/src/filesystem/workspace-path.ts +0 -92
  269. package/src/host/filesystem-v2.ts +0 -104
  270. package/src/host/git.ts +0 -246
  271. package/src/host/index.ts +0 -93
  272. package/src/host/types.ts +0 -274
  273. package/src/host/wire-policy.ts +0 -103
  274. package/src/index.ts +0 -10
  275. package/src/mcp/index.ts +0 -3
  276. package/src/mcp/types.ts +0 -594
  277. package/src/mcp/wire.ts +0 -1280
  278. package/src/mcp/zod.ts +0 -1000
  279. package/src/vscode/index.ts +0 -2
  280. package/src/vscode/messages.ts +0 -704
  281. package/src/workspace/index.ts +0 -17
  282. package/src/workspace/reconcile-electron.ts +0 -65
  283. package/src/workspace/types.ts +0 -67
  284. package/src/workspace/workspace-manager.ts +0 -151
  285. /package/dist/{chunk-75UUF6C4.js.map → chunk-B56KWCSE.js.map} +0 -0
  286. /package/dist/{chunk-EGNDADXB.js.map → chunk-MNSZ7EZN.js.map} +0 -0
@@ -1,615 +0,0 @@
1
- import { FsError } from './fs-error.js';
2
- import { parseFileSystemVersion, } from './v2.js';
3
- import { WORKSPACE_ROOT, parseWorkspacePath, workspacePathBasename, workspacePathContains, workspacePathDirname, } from './workspace-path.js';
4
- const MEMORY_CAPABILITIES = Object.freeze({
5
- writeAtomicity: 'process',
6
- moveAtomicity: 'process',
7
- snapshotAtomicity: 'process',
8
- conditionalWrite: 'process',
9
- recursiveRemove: true,
10
- watch: true,
11
- caseSensitivity: 'sensitive',
12
- symlinkPolicy: 'unsupported',
13
- durability: 'volatile',
14
- });
15
- /**
16
- * Correctness reference for FileSystemProviderV2.
17
- *
18
- * Every mutation validates first, stages a fresh map, swaps it once, and only
19
- * then emits notifications. File buffers are owned by the provider and every
20
- * read/snapshot returns a defensive copy.
21
- */
22
- export class MemoryFileSystemProviderV2 {
23
- constructor(id, label) {
24
- this.capabilities = MEMORY_CAPABILITIES;
25
- this.watchers = new Set();
26
- this.subscriptions = new Set();
27
- this.pendingEvents = [];
28
- this.emittingEvents = false;
29
- this.mutationCounter = 0;
30
- this.eventSequence = 0;
31
- this.disposed = false;
32
- this.disposePromise = null;
33
- this.id = id;
34
- this.label = label;
35
- this.treeVersion = parseFileSystemVersion(`${id}:0`);
36
- const now = new Date().toISOString();
37
- this.entries = new Map([
38
- [WORKSPACE_ROOT, { kind: 'directory', version: this.treeVersion, lastModified: now }],
39
- ]);
40
- }
41
- /** Monotonic in-process revision used by synchronous transient-workspace staging. */
42
- get mutationRevision() {
43
- return this.mutationCounter;
44
- }
45
- /** @internal Atomically couple owned bytes to their v1 compatibility kind. */
46
- readCompatibilityFile(path) {
47
- this.assertOpen('read');
48
- const canonical = this.canonical(path);
49
- const entry = this.entries.get(canonical);
50
- if (!entry)
51
- return null;
52
- if (entry.kind !== 'file') {
53
- throw this.error('type-mismatch', 'read', canonical, 'Expected a file but found a directory.');
54
- }
55
- return Object.freeze({ data: entry.data.slice(0), payloadKind: entry.payloadKind });
56
- }
57
- /** @internal Capture an owned synchronous copy for DBK whole-tree staging. */
58
- captureState() {
59
- this.assertOpen('snapshot');
60
- const files = [];
61
- const directories = [];
62
- for (const [path, entry] of [...this.entries].sort(([left], [right]) => compareText(left, right))) {
63
- if (!path)
64
- continue;
65
- if (entry.kind === 'directory')
66
- directories.push(path);
67
- else {
68
- files.push(Object.freeze({ path, data: entry.data.slice(0), payloadKind: entry.payloadKind }));
69
- }
70
- }
71
- return Object.freeze({
72
- revision: this.mutationCounter,
73
- files: Object.freeze(files),
74
- directories: Object.freeze(directories),
75
- });
76
- }
77
- /** @internal Atomically replace a transient workspace after complete validation. */
78
- replaceState(replacement, expectedRevision) {
79
- this.assertOpen('write');
80
- const stagedFiles = new Map();
81
- const stagedDirectories = new Set();
82
- const explicitDirectories = new Set();
83
- for (const rawDirectory of replacement.directories ?? []) {
84
- const directory = this.canonicalNonRoot(rawDirectory, 'create-directory');
85
- if (explicitDirectories.has(directory)) {
86
- throw this.error('already-exists', 'create-directory', directory, 'Duplicate replacement directory.');
87
- }
88
- explicitDirectories.add(directory);
89
- stagedDirectories.add(directory);
90
- addParentPaths(stagedDirectories, directory);
91
- }
92
- for (const rawFile of replacement.files) {
93
- const path = this.canonicalNonRoot(rawFile.path, 'write');
94
- if (stagedFiles.has(path)) {
95
- throw this.error('already-exists', 'write', path, 'Duplicate replacement file.');
96
- }
97
- if (!isMemoryFilePayloadKind(rawFile.payloadKind)) {
98
- throw this.error('type-mismatch', 'write', path, 'Invalid replacement payload kind.');
99
- }
100
- stagedFiles.set(path, {
101
- data: copyBytes(rawFile.data),
102
- payloadKind: rawFile.payloadKind,
103
- });
104
- addParentPaths(stagedDirectories, path);
105
- }
106
- for (const path of stagedFiles.keys()) {
107
- if (stagedDirectories.has(path)) {
108
- throw this.error('type-mismatch', 'write', path, 'Replacement path has conflicting file and directory kinds.');
109
- }
110
- for (const parent of parentChain(path)) {
111
- if (parent && stagedFiles.has(parent)) {
112
- throw this.error('type-mismatch', 'write', parent, 'A replacement parent is a file.');
113
- }
114
- }
115
- }
116
- if (expectedRevision !== undefined && expectedRevision !== this.mutationCounter) {
117
- throw this.error('conflict', 'write', WORKSPACE_ROOT, 'Memory filesystem changed while replacement contents were staged.');
118
- }
119
- const version = this.nextVersion();
120
- const now = new Date().toISOString();
121
- const next = new Map([
122
- [WORKSPACE_ROOT, { kind: 'directory', version, lastModified: now }],
123
- ]);
124
- this.addDirectories(next, [...stagedDirectories], version, now);
125
- for (const [path, file] of stagedFiles) {
126
- next.set(path, {
127
- kind: 'file',
128
- data: file.data,
129
- payloadKind: file.payloadKind,
130
- version,
131
- lastModified: now,
132
- });
133
- }
134
- this.entries = next;
135
- this.emit({
136
- type: 'overflow',
137
- kind: null,
138
- path: WORKSPACE_ROOT,
139
- destinationPath: null,
140
- version: null,
141
- previousVersion: null,
142
- });
143
- }
144
- /** @internal Synchronous setup hook used before a transient provider is published. */
145
- seedText(path, content) {
146
- this.writeFileNow(path, new TextEncoder().encode(content), { createParents: true }, 'text');
147
- }
148
- /** @internal Legacy text write that preserves text/binary compatibility metadata. */
149
- async writeText(path, content, options = {}) {
150
- return this.writeFileNow(path, new TextEncoder().encode(content), options, 'text');
151
- }
152
- /** @internal Legacy binary write that explicitly changes compatibility payload kind. */
153
- async writeBinary(path, data, options = {}) {
154
- return this.writeFileNow(path, data, options, 'binary');
155
- }
156
- /** @internal Atomic legacy compare-and-write over the authoritative v2 entry. */
157
- async commitText(path, content, expectedContent) {
158
- this.assertOpen('write');
159
- const canonical = this.canonicalNonRoot(path, 'write');
160
- const existing = this.entries.get(canonical);
161
- if (existing?.kind === 'directory') {
162
- throw this.error('type-mismatch', 'write', canonical, 'Cannot replace a directory.');
163
- }
164
- const currentContent = existing?.kind === 'file' && existing.payloadKind === 'text'
165
- ? new TextDecoder().decode(existing.data)
166
- : null;
167
- if ((existing?.kind === 'file' && existing.payloadKind === 'binary') ||
168
- (currentContent !== expectedContent && currentContent !== content)) {
169
- return {
170
- status: 'conflict',
171
- content: currentContent,
172
- version: existing?.version ?? null,
173
- };
174
- }
175
- const written = this.writeFileNow(canonical, new TextEncoder().encode(content), { createParents: true, expectedVersion: existing?.version ?? null }, 'text');
176
- return { status: 'committed', version: written.version };
177
- }
178
- async stat(path) {
179
- this.assertOpen('stat');
180
- const canonical = this.canonical(path);
181
- const entry = this.entries.get(canonical);
182
- return entry ? this.toEntrySnapshot(canonical, entry) : null;
183
- }
184
- async readFile(path) {
185
- this.assertOpen('read');
186
- const canonical = this.canonical(path);
187
- const entry = this.entries.get(canonical);
188
- if (!entry)
189
- return null;
190
- if (entry.kind !== 'file') {
191
- throw this.error('type-mismatch', 'read', canonical, 'Expected a file but found a directory.');
192
- }
193
- return Object.freeze({
194
- entry: this.toFileSnapshot(canonical, entry),
195
- data: entry.data.slice(0),
196
- });
197
- }
198
- async readDirectory(path) {
199
- this.assertOpen('list');
200
- const canonical = this.canonical(path);
201
- const directory = this.entries.get(canonical);
202
- if (!directory) {
203
- throw this.error('not-found', 'list', canonical, 'Directory does not exist.');
204
- }
205
- if (directory.kind !== 'directory') {
206
- throw this.error('type-mismatch', 'list', canonical, 'Expected a directory but found a file.');
207
- }
208
- const children = [];
209
- for (const [entryPath, entry] of this.entries) {
210
- if (entryPath && workspacePathDirname(entryPath) === canonical) {
211
- children.push(this.toEntrySnapshot(entryPath, entry));
212
- }
213
- }
214
- children.sort(compareSnapshots);
215
- return Object.freeze(children);
216
- }
217
- async writeFile(path, data, options = {}) {
218
- return this.writeFileNow(path, data, options);
219
- }
220
- writeFileNow(path, data, options, payloadKind) {
221
- this.assertOpen('write');
222
- const canonical = this.canonicalNonRoot(path, 'write');
223
- const existing = this.entries.get(canonical);
224
- if (existing?.kind === 'directory') {
225
- throw this.error('type-mismatch', 'write', canonical, 'Cannot replace a directory with a file.');
226
- }
227
- const mode = options.mode ?? 'upsert';
228
- if (mode === 'create' && existing) {
229
- throw this.error('already-exists', 'write', canonical, 'File already exists.');
230
- }
231
- if (mode === 'replace' && !existing) {
232
- throw this.error('not-found', 'write', canonical, 'File does not exist.');
233
- }
234
- this.assertExpectedVersion(existing, options.expectedVersion, 'write', canonical);
235
- const missingParents = this.planParents(canonical, options.createParents ?? false, 'write');
236
- const ownedData = copyBytes(data);
237
- const version = this.nextVersion();
238
- const now = new Date().toISOString();
239
- const next = new Map(this.entries);
240
- this.addDirectories(next, missingParents, version, now);
241
- next.set(canonical, {
242
- kind: 'file',
243
- data: ownedData,
244
- payloadKind: payloadKind ?? (existing?.kind === 'file' ? existing.payloadKind : 'binary'),
245
- version,
246
- lastModified: now,
247
- });
248
- this.touchParents(next, canonical, version, now);
249
- this.entries = next;
250
- for (const directoryPath of missingParents) {
251
- this.emit({
252
- type: 'created',
253
- kind: 'directory',
254
- path: directoryPath,
255
- destinationPath: null,
256
- version,
257
- previousVersion: null,
258
- });
259
- }
260
- this.emit({
261
- type: existing ? 'modified' : 'created',
262
- kind: 'file',
263
- path: canonical,
264
- destinationPath: null,
265
- version,
266
- previousVersion: existing?.version ?? null,
267
- });
268
- return this.toFileSnapshot(canonical, next.get(canonical));
269
- }
270
- async createDirectory(path, options = {}) {
271
- this.assertOpen('create-directory');
272
- const canonical = this.canonical(path);
273
- const existing = this.entries.get(canonical);
274
- if (existing) {
275
- if (existing.kind !== 'directory') {
276
- throw this.error('type-mismatch', 'create-directory', canonical, 'Cannot replace a file with a directory.');
277
- }
278
- if ((options.mode ?? 'ensure') === 'create') {
279
- throw this.error('already-exists', 'create-directory', canonical, 'Directory already exists.');
280
- }
281
- return this.toDirectorySnapshot(canonical, existing);
282
- }
283
- const missingParents = this.planParents(canonical, options.createParents ?? false, 'create-directory');
284
- const version = this.nextVersion();
285
- const now = new Date().toISOString();
286
- const next = new Map(this.entries);
287
- const created = [...missingParents, canonical];
288
- this.addDirectories(next, created, version, now);
289
- this.touchParents(next, canonical, version, now);
290
- this.entries = next;
291
- for (const directoryPath of created) {
292
- this.emit({
293
- type: 'created',
294
- kind: 'directory',
295
- path: directoryPath,
296
- destinationPath: null,
297
- version,
298
- previousVersion: null,
299
- });
300
- }
301
- return this.toDirectorySnapshot(canonical, next.get(canonical));
302
- }
303
- async remove(path, options = {}) {
304
- this.assertOpen('remove');
305
- const canonical = this.canonicalNonRoot(path, 'remove');
306
- const existing = this.entries.get(canonical);
307
- if (!existing) {
308
- if ((options.missing ?? 'error') === 'ignore') {
309
- return Object.freeze({ removed: false, version: this.treeVersion });
310
- }
311
- throw this.error('not-found', 'remove', canonical, 'Entry does not exist.');
312
- }
313
- this.assertExpectedVersion(existing, options.expectedVersion, 'remove', canonical);
314
- const descendants = [...this.entries.keys()].filter((candidate) => workspacePathContains(canonical, candidate, false));
315
- if (existing.kind === 'directory' && descendants.length > 0 && !options.recursive) {
316
- throw this.error('not-empty', 'remove', canonical, 'Directory is not empty.');
317
- }
318
- const version = this.nextVersion();
319
- const now = new Date().toISOString();
320
- const next = new Map(this.entries);
321
- next.delete(canonical);
322
- if (existing.kind === 'directory') {
323
- for (const descendant of descendants)
324
- next.delete(descendant);
325
- }
326
- this.touchParents(next, canonical, version, now);
327
- this.entries = next;
328
- this.emit({
329
- type: 'removed',
330
- kind: existing.kind,
331
- path: canonical,
332
- destinationPath: null,
333
- version: null,
334
- previousVersion: existing.version,
335
- });
336
- return Object.freeze({ removed: true, version });
337
- }
338
- async move(oldPath, newPath, options = {}) {
339
- this.assertOpen('move');
340
- const sourcePath = this.canonicalNonRoot(oldPath, 'move');
341
- const destinationPath = this.canonicalNonRoot(newPath, 'move');
342
- const source = this.entries.get(sourcePath);
343
- if (!source)
344
- throw this.error('not-found', 'move', sourcePath, 'Source does not exist.');
345
- this.assertExpectedVersion(source, options.expectedVersion, 'move', sourcePath);
346
- if (sourcePath === destinationPath)
347
- return this.toEntrySnapshot(sourcePath, source);
348
- if (this.entries.has(destinationPath)) {
349
- throw new FsError('already-exists', 'Destination already exists.', {
350
- operation: 'move',
351
- path: sourcePath,
352
- destinationPath,
353
- });
354
- }
355
- if (source.kind === 'directory' && workspacePathContains(sourcePath, destinationPath, false)) {
356
- throw new FsError('invalid-path', 'Cannot move a directory into itself.', {
357
- operation: 'move',
358
- path: sourcePath,
359
- destinationPath,
360
- });
361
- }
362
- const missingParents = this.planParents(destinationPath, options.createParents ?? false, 'move');
363
- const sourcePaths = [...this.entries.keys()].filter((candidate) => workspacePathContains(sourcePath, candidate));
364
- const sourceSet = new Set(sourcePaths);
365
- const remapped = sourcePaths.map((currentPath) => {
366
- const suffix = currentPath.slice(sourcePath.length);
367
- const target = parseWorkspacePath(`${destinationPath}${suffix}`);
368
- if (this.entries.has(target) && !sourceSet.has(target)) {
369
- throw new FsError('already-exists', 'A destination descendant already exists.', {
370
- operation: 'move',
371
- path: currentPath,
372
- destinationPath: target,
373
- });
374
- }
375
- return [currentPath, target];
376
- });
377
- const version = this.nextVersion();
378
- const now = new Date().toISOString();
379
- const next = new Map(this.entries);
380
- for (const currentPath of sourcePaths)
381
- next.delete(currentPath);
382
- this.addDirectories(next, missingParents, version, now);
383
- for (const [currentPath, targetPath] of remapped) {
384
- const current = this.entries.get(currentPath);
385
- next.set(targetPath, this.withVersion(current, version, now));
386
- }
387
- this.touchParents(next, sourcePath, version, now);
388
- this.touchParents(next, destinationPath, version, now);
389
- this.entries = next;
390
- for (const directoryPath of missingParents) {
391
- this.emit({
392
- type: 'created',
393
- kind: 'directory',
394
- path: directoryPath,
395
- destinationPath: null,
396
- version,
397
- previousVersion: null,
398
- });
399
- }
400
- this.emit({
401
- type: 'moved',
402
- kind: source.kind,
403
- path: sourcePath,
404
- destinationPath,
405
- version,
406
- previousVersion: source.version,
407
- });
408
- return this.toEntrySnapshot(destinationPath, next.get(destinationPath));
409
- }
410
- async snapshot() {
411
- this.assertOpen('snapshot');
412
- const entries = [...this.entries.entries()]
413
- .sort(([left], [right]) => compareText(left, right))
414
- .map(([path, entry]) => {
415
- if (entry.kind === 'file') {
416
- return Object.freeze({ ...this.toFileSnapshot(path, entry), data: entry.data.slice(0) });
417
- }
418
- return this.toDirectorySnapshot(path, entry);
419
- });
420
- return Object.freeze({ version: this.treeVersion, entries: Object.freeze(entries) });
421
- }
422
- watch(listener, options = {}) {
423
- this.assertOpen('watch');
424
- const watcher = { listener, onError: options.onError };
425
- this.watchers.add(watcher);
426
- let closed = false;
427
- let disposePromise = null;
428
- const subscription = {
429
- get closed() {
430
- return closed;
431
- },
432
- ready: Promise.resolve(),
433
- dispose: () => {
434
- if (disposePromise)
435
- return disposePromise;
436
- closed = true;
437
- this.watchers.delete(watcher);
438
- this.subscriptions.delete(subscription);
439
- disposePromise = Promise.resolve();
440
- return disposePromise;
441
- },
442
- };
443
- this.subscriptions.add(subscription);
444
- return subscription;
445
- }
446
- dispose() {
447
- if (this.disposePromise)
448
- return this.disposePromise;
449
- this.disposed = true;
450
- this.disposePromise = Promise.all([...this.subscriptions].map((subscription) => subscription.dispose())).then(() => undefined);
451
- return this.disposePromise;
452
- }
453
- canonical(path) {
454
- return parseWorkspacePath(path);
455
- }
456
- canonicalNonRoot(path, operation) {
457
- const canonical = this.canonical(path);
458
- if (!canonical) {
459
- throw this.error('invalid-path', operation, canonical, 'The workspace root is not a file entry.');
460
- }
461
- return canonical;
462
- }
463
- assertOpen(operation) {
464
- if (!this.disposed)
465
- return;
466
- throw new FsError('disposed', 'Filesystem provider is disposed.', { operation });
467
- }
468
- assertExpectedVersion(entry, expected, operation, path) {
469
- if (expected === undefined)
470
- return;
471
- if (expected === null ? !entry : entry?.version === expected)
472
- return;
473
- throw this.error('conflict', operation, path, 'Entry version does not match the expected version.');
474
- }
475
- planParents(path, createParents, operation) {
476
- const missing = [];
477
- for (const parent of parentChain(path)) {
478
- if (!parent)
479
- continue;
480
- const entry = this.entries.get(parent);
481
- if (entry?.kind === 'file') {
482
- throw this.error('type-mismatch', operation, parent, 'A parent path is a file, not a directory.');
483
- }
484
- if (!entry) {
485
- if (!createParents) {
486
- throw this.error('not-found', operation, parent, 'Parent directory does not exist.');
487
- }
488
- missing.push(parent);
489
- }
490
- }
491
- return missing;
492
- }
493
- addDirectories(target, paths, version, lastModified) {
494
- for (const path of paths) {
495
- target.set(path, { kind: 'directory', version, lastModified });
496
- }
497
- }
498
- touchParents(target, path, version, lastModified) {
499
- for (const parent of parentChain(path)) {
500
- const entry = target.get(parent);
501
- if (entry?.kind === 'directory') {
502
- target.set(parent, { kind: 'directory', version, lastModified });
503
- }
504
- }
505
- }
506
- withVersion(entry, version, lastModified) {
507
- return entry.kind === 'file'
508
- ? {
509
- kind: 'file',
510
- data: entry.data,
511
- payloadKind: entry.payloadKind,
512
- version,
513
- lastModified,
514
- }
515
- : { kind: 'directory', version, lastModified };
516
- }
517
- nextVersion() {
518
- this.mutationCounter += 1;
519
- this.treeVersion = parseFileSystemVersion(`${this.id}:${this.mutationCounter}`);
520
- return this.treeVersion;
521
- }
522
- toEntrySnapshot(path, entry) {
523
- return entry.kind === 'file'
524
- ? this.toFileSnapshot(path, entry)
525
- : this.toDirectorySnapshot(path, entry);
526
- }
527
- toFileSnapshot(path, entry) {
528
- return Object.freeze({
529
- kind: 'file',
530
- path,
531
- name: workspacePathBasename(path),
532
- size: entry.data.byteLength,
533
- version: entry.version,
534
- lastModified: entry.lastModified,
535
- });
536
- }
537
- toDirectorySnapshot(path, entry) {
538
- return Object.freeze({
539
- kind: 'directory',
540
- path,
541
- name: workspacePathBasename(path),
542
- size: null,
543
- version: entry.version,
544
- lastModified: entry.lastModified,
545
- });
546
- }
547
- emit(event) {
548
- const complete = Object.freeze({
549
- ...event,
550
- sequence: ++this.eventSequence,
551
- origin: 'local',
552
- });
553
- this.pendingEvents.push(complete);
554
- if (this.emittingEvents)
555
- return;
556
- this.emittingEvents = true;
557
- try {
558
- while (this.pendingEvents.length > 0) {
559
- const pending = this.pendingEvents.shift();
560
- if (!pending)
561
- continue;
562
- for (const watcher of [...this.watchers]) {
563
- try {
564
- watcher.listener(pending);
565
- }
566
- catch {
567
- // A watcher is observational; it cannot roll back a completed mutation.
568
- }
569
- }
570
- }
571
- }
572
- finally {
573
- this.emittingEvents = false;
574
- }
575
- }
576
- error(code, operation, path, message) {
577
- return new FsError(code, message, { operation, path });
578
- }
579
- }
580
- function parentChain(path) {
581
- const parents = [];
582
- let current = workspacePathDirname(path);
583
- while (true) {
584
- parents.unshift(current);
585
- if (!current)
586
- return parents;
587
- current = workspacePathDirname(current);
588
- }
589
- }
590
- function addParentPaths(target, path) {
591
- for (const parent of parentChain(path)) {
592
- if (parent)
593
- target.add(parent);
594
- }
595
- }
596
- function isMemoryFilePayloadKind(value) {
597
- return value === 'text' || value === 'binary';
598
- }
599
- function copyBytes(data) {
600
- const source = ArrayBuffer.isView(data)
601
- ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength)
602
- : new Uint8Array(data);
603
- const copy = new Uint8Array(source.byteLength);
604
- copy.set(source);
605
- return copy.buffer;
606
- }
607
- function compareSnapshots(left, right) {
608
- if (left.kind !== right.kind)
609
- return left.kind === 'directory' ? -1 : 1;
610
- return compareText(left.name, right.name);
611
- }
612
- function compareText(left, right) {
613
- return left < right ? -1 : left > right ? 1 : 0;
614
- }
615
- //# sourceMappingURL=memory-provider-v2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-provider-v2.js","sourceRoot":"","sources":["../../src/filesystem/memory-provider-v2.ts"],"names":[],"mappings":"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"}