@volter/browser-python 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +2 -1
  2. package/dist/command.d.ts +13 -1
  3. package/dist/command.d.ts.map +1 -1
  4. package/dist/command.js +79 -11
  5. package/dist/command.js.map +1 -1
  6. package/dist/filesystem.d.ts +9 -0
  7. package/dist/filesystem.d.ts.map +1 -1
  8. package/dist/filesystem.js +29 -0
  9. package/dist/filesystem.js.map +1 -1
  10. package/dist/host.d.ts +31 -0
  11. package/dist/host.d.ts.map +1 -0
  12. package/dist/host.js +76 -0
  13. package/dist/host.js.map +1 -0
  14. package/dist/pack-filesystem.d.ts +22 -0
  15. package/dist/pack-filesystem.d.ts.map +1 -0
  16. package/dist/pack-filesystem.js +252 -0
  17. package/dist/pack-filesystem.js.map +1 -0
  18. package/dist/package-manager.d.ts +14 -0
  19. package/dist/package-manager.d.ts.map +1 -1
  20. package/dist/package-manager.js +58 -3
  21. package/dist/package-manager.js.map +1 -1
  22. package/dist/process-host.d.ts +13 -2
  23. package/dist/process-host.d.ts.map +1 -1
  24. package/dist/process-host.js +45 -8
  25. package/dist/process-host.js.map +1 -1
  26. package/dist/protocol.d.ts +28 -4
  27. package/dist/protocol.d.ts.map +1 -1
  28. package/dist/pyodide-artifacts.d.ts +22 -0
  29. package/dist/pyodide-artifacts.d.ts.map +1 -0
  30. package/dist/pyodide-artifacts.js +40 -0
  31. package/dist/pyodide-artifacts.js.map +1 -0
  32. package/dist/pyodide-runtime.d.ts +10 -2
  33. package/dist/pyodide-runtime.d.ts.map +1 -1
  34. package/dist/pyodide-runtime.js +23 -13
  35. package/dist/pyodide-runtime.js.map +1 -1
  36. package/dist/server-host.d.ts +2 -2
  37. package/dist/server-host.d.ts.map +1 -1
  38. package/dist/server-host.js +4 -4
  39. package/dist/server-host.js.map +1 -1
  40. package/dist/subprocess-bridge.d.ts +6 -2
  41. package/dist/subprocess-bridge.d.ts.map +1 -1
  42. package/dist/subprocess-bridge.js +9 -8
  43. package/dist/subprocess-bridge.js.map +1 -1
  44. package/dist/worker.js +147 -20
  45. package/dist/worker.js.map +1 -1
  46. package/dist/wsgi-bridge.d.ts.map +1 -1
  47. package/dist/wsgi-bridge.js +3 -0
  48. package/dist/wsgi-bridge.js.map +1 -1
  49. package/package.json +21 -7
@@ -0,0 +1,252 @@
1
+ import { PYTHON_WORKSPACE } from "./pyodide-runtime.js";
2
+ import { encodeBase64 } from "./filesystem.js";
3
+ const S_IFDIR = 0o040000;
4
+ const S_IFREG = 0o100000;
5
+ const ENOENT = 44;
6
+ /**
7
+ * Mounts the store's workspace at Pyodide's workspace path. Returns the
8
+ * record of changes the snapshot reads, or undefined when this Pyodide
9
+ * exposes no filesystem to mount over, in which case the caller restores
10
+ * a snapshot the old way.
11
+ */
12
+ export function mountPackWorkspace(filesystem, store) {
13
+ const FS = filesystem;
14
+ const memfs = FS.filesystems?.MEMFS;
15
+ if (!memfs || typeof FS.mount !== "function" || typeof memfs.createNode !== "function")
16
+ return undefined;
17
+ const changes = { dirty: new Set(), removed: new Set() };
18
+ const enoent = () => FS.genericErrors?.[ENOENT] ?? new FS.ErrnoError(ENOENT);
19
+ const pathOf = (node) => node.packPath ?? PYTHON_WORKSPACE;
20
+ // A node for an entry of the store, created the first time it is looked
21
+ // up: a directory whose listing is filled on demand, or a file whose
22
+ // bytes arrive when a stream opens it.
23
+ function adopt(parent, name, path) {
24
+ const entry = store.entries.get(path);
25
+ if (!entry)
26
+ throw enoent();
27
+ const mode = (entry.mode & 0o7777) | (entry.type === "directory" ? S_IFDIR : S_IFREG);
28
+ const node = memfs.createNode(parent, name, mode, 0);
29
+ node.packPath = path;
30
+ node.timestamp = entry.mtimeMs;
31
+ node.atime = node.mtime = node.ctime = entry.mtimeMs;
32
+ if (entry.type === "directory") {
33
+ node.packListed = false;
34
+ node.node_ops = dirOps(node.node_ops);
35
+ }
36
+ else {
37
+ node.packLoaded = false;
38
+ node.usedBytes = entry.length;
39
+ node.node_ops = fileOps(node.node_ops);
40
+ node.stream_ops = fileStreams(node.stream_ops);
41
+ }
42
+ return node;
43
+ }
44
+ function load(node) {
45
+ if (node.packLoaded !== false || !node.packPath)
46
+ return;
47
+ const bytes = store.read(node.packPath);
48
+ node.contents = bytes;
49
+ node.usedBytes = bytes.byteLength;
50
+ node.packLoaded = true;
51
+ }
52
+ function markDirty(node) {
53
+ if (FS.isDir(node.mode))
54
+ return;
55
+ changes.dirty.add(nodePath(node));
56
+ }
57
+ function nodePath(node) {
58
+ const parts = [];
59
+ let current = node;
60
+ while (current && current.parent !== current) {
61
+ parts.unshift(current.name);
62
+ current = current.parent;
63
+ }
64
+ return `${PYTHON_WORKSPACE}/${parts.join("/")}`.replace(/\/+$/u, "") || PYTHON_WORKSPACE;
65
+ }
66
+ const dirCache = new WeakMap();
67
+ function dirOps(base) {
68
+ const cached = dirCache.get(base);
69
+ if (cached)
70
+ return cached;
71
+ const ops = {
72
+ ...base,
73
+ lookup: (parent, name) => {
74
+ const path = `${pathOf(parent)}/${name}`;
75
+ if (!changes.removed.has(path) && store.entries.has(path))
76
+ return adopt(parent, name, path);
77
+ throw enoent();
78
+ },
79
+ readdir: (node) => {
80
+ const own = base.readdir(node);
81
+ const names = new Set(own);
82
+ const path = pathOf(node);
83
+ for (const name of store.childrenOf(path)) {
84
+ if (!changes.removed.has(`${path}/${name}`))
85
+ names.add(name);
86
+ }
87
+ return [...names];
88
+ },
89
+ mknod: (parent, name, mode, dev) => {
90
+ const path = `${pathOf(parent)}/${name}`;
91
+ changes.removed.delete(path);
92
+ const node = base.mknod(parent, name, mode, dev);
93
+ node.packPath = path;
94
+ if (FS.isDir(mode)) {
95
+ node.packListed = true;
96
+ node.node_ops = dirOps(node.node_ops);
97
+ }
98
+ else {
99
+ node.packLoaded = true;
100
+ changes.dirty.add(path);
101
+ node.node_ops = fileOps(node.node_ops);
102
+ node.stream_ops = fileStreams(node.stream_ops);
103
+ }
104
+ return node;
105
+ },
106
+ unlink: (parent, name) => {
107
+ const path = `${pathOf(parent)}/${name}`;
108
+ base.unlink(parent, name);
109
+ changes.dirty.delete(path);
110
+ changes.removed.add(path);
111
+ },
112
+ rmdir: (parent, name) => {
113
+ const path = `${pathOf(parent)}/${name}`;
114
+ // Empty as the program sees it: nothing of the store's below it either.
115
+ for (const child of store.childrenOf(path))
116
+ if (!changes.removed.has(`${path}/${child}`))
117
+ throw new FS.ErrnoError(55);
118
+ base.rmdir(parent, name);
119
+ changes.removed.add(path);
120
+ },
121
+ rename: (oldNode, newDir, newName) => {
122
+ const from = nodePath(oldNode);
123
+ if (FS.isFile(oldNode.mode))
124
+ load(oldNode);
125
+ else
126
+ materializeTree(oldNode);
127
+ base.rename(oldNode, newDir, newName);
128
+ const to = `${pathOf(newDir)}/${newName}`;
129
+ remap(oldNode, from, to);
130
+ changes.removed.add(from);
131
+ changes.removed.delete(to);
132
+ },
133
+ };
134
+ dirCache.set(base, ops);
135
+ return ops;
136
+ }
137
+ const fileCache = new WeakMap();
138
+ function fileOps(base) {
139
+ const cached = fileCache.get(base);
140
+ if (cached)
141
+ return cached;
142
+ const ops = {
143
+ ...base,
144
+ setattr: (node, attr) => {
145
+ if (attr.size !== undefined)
146
+ load(node);
147
+ base.setattr(node, attr);
148
+ if (attr.size !== undefined || attr.mode !== undefined || attr.timestamp !== undefined)
149
+ markDirty(node);
150
+ },
151
+ };
152
+ fileCache.set(base, ops);
153
+ return ops;
154
+ }
155
+ const streamCache = new WeakMap();
156
+ function fileStreams(base) {
157
+ const cached = streamCache.get(base);
158
+ if (cached)
159
+ return cached;
160
+ const ops = {
161
+ ...base,
162
+ open: (stream) => {
163
+ load(stream.node);
164
+ base.open?.(stream);
165
+ },
166
+ write: (stream, buffer, offset, length, position, canOwn) => {
167
+ load(stream.node);
168
+ const written = base.write(stream, buffer, offset, length, position, canOwn);
169
+ markDirty(stream.node);
170
+ return written;
171
+ },
172
+ };
173
+ streamCache.set(base, ops);
174
+ return ops;
175
+ }
176
+ /** Every node below a directory brought in from the store, so a rename moves a whole tree. */
177
+ function materializeTree(node) {
178
+ const path = pathOf(node);
179
+ for (const name of store.childrenOf(path)) {
180
+ if (changes.removed.has(`${path}/${name}`))
181
+ continue;
182
+ const contents = node.contents;
183
+ const child = contents[name] ?? adopt(node, name, `${path}/${name}`);
184
+ if (FS.isDir(child.mode))
185
+ materializeTree(child);
186
+ else
187
+ load(child);
188
+ }
189
+ node.packListed = true;
190
+ }
191
+ function remap(node, from, to) {
192
+ node.packPath = to;
193
+ if (FS.isFile(node.mode)) {
194
+ changes.dirty.delete(from);
195
+ changes.dirty.add(to);
196
+ return;
197
+ }
198
+ for (const [name, child] of Object.entries(node.contents)) {
199
+ remap(child, `${from}/${name}`, `${to}/${name}`);
200
+ }
201
+ }
202
+ const packfs = {
203
+ mount: () => {
204
+ const root = memfs.createNode(null, "/", S_IFDIR | 0o755, 0);
205
+ root.packPath = PYTHON_WORKSPACE;
206
+ root.node_ops = dirOps(root.node_ops);
207
+ return root;
208
+ },
209
+ };
210
+ if (FS.analyzePath(PYTHON_WORKSPACE).exists) {
211
+ try {
212
+ FS.unmount(PYTHON_WORKSPACE);
213
+ }
214
+ catch { /* not mounted */ }
215
+ try {
216
+ FS.rmdir(PYTHON_WORKSPACE);
217
+ }
218
+ catch { /* holds files from a snapshot run */ }
219
+ }
220
+ FS.mkdirTree(PYTHON_WORKSPACE);
221
+ FS.mount(packfs, {}, PYTHON_WORKSPACE);
222
+ return changes;
223
+ }
224
+ /**
225
+ * The workspace as the page reconciles it: metadata for every entry, and
226
+ * bytes only for what the program wrote. Entries outside the workspace are
227
+ * the page's own, carried through from the snapshot it sent.
228
+ */
229
+ export function snapshotPackWorkspace(filesystem, changes, original) {
230
+ const files = original.files.filter((entry) => entry.path !== PYTHON_WORKSPACE && !entry.path.startsWith(`${PYTHON_WORKSPACE}/`));
231
+ const walk = (path) => {
232
+ const stat = filesystem.stat(path);
233
+ const mtimeMs = stat.mtime instanceof Date ? stat.mtime.getTime() : stat.mtime;
234
+ const metadata = { mode: stat.mode & 0o7777, ...(typeof mtimeMs === "number" && Number.isFinite(mtimeMs) ? { mtimeMs } : {}) };
235
+ if ((stat.mode & 0o170000) === S_IFDIR) {
236
+ files.push({ path, type: "directory", ...metadata });
237
+ for (const name of filesystem.readdir(path)) {
238
+ if (name === "." || name === "..")
239
+ continue;
240
+ walk(`${path}/${name}`);
241
+ }
242
+ return;
243
+ }
244
+ if (changes.dirty.has(path))
245
+ files.push({ path, type: "file", content: encodeBase64(filesystem.readFile(path)), ...metadata });
246
+ else
247
+ files.push({ path, type: "file", ...(typeof stat.size === "number" ? { size: stat.size } : {}), ...metadata });
248
+ };
249
+ walk(PYTHON_WORKSPACE);
250
+ return { files };
251
+ }
252
+ //# sourceMappingURL=pack-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-filesystem.js","sourceRoot":"","sources":["../src/pack-filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAA0B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAoD/C,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,MAAM,GAAG,EAAE,CAAC;AAQlB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA6B,EAAE,KAAgB;IAChF,MAAM,EAAE,GAAG,UAA0B,CAAC;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACzG,MAAM,OAAO,GAAyB,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,GAAU,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IAEnF,wEAAwE;IACxE,qEAAqE;IACrE,uCAAuC;IACvC,SAAS,KAAK,CAAC,MAAsB,EAAE,IAAY,EAAE,IAAY;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,MAAM,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,KAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,IAAI,CAAC,IAAoB;QAChC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,SAAS,SAAS,CAAC,IAAoB;QACrC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,QAAQ,CAAC,IAAoB;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,GAA+B,IAAI,CAAC;QAC/C,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAAC,CAAC;QACxG,OAAO,GAAG,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC;IAC3F,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoD,CAAC;IACjF,SAAS,MAAM,CAAC,IAAmD;QACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM;YAAE,OAAO,MAAuD,CAAC;QAC3E,MAAM,GAAG,GAAG;YACV,GAAG,IAAI;YACP,MAAM,EAAE,CAAC,MAAsB,EAAE,IAAY,EAAkB,EAAE;gBAC/D,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5F,MAAM,MAAM,EAAE,CAAC;YACjB,CAAC;YACD,OAAO,EAAE,CAAC,IAAoB,EAAY,EAAE;gBAC1C,MAAM,GAAG,GAAI,IAAI,CAAC,OAA8C,CAAC,IAAI,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YACpB,CAAC;YACD,KAAK,EAAE,CAAC,MAAsB,EAAE,IAAY,EAAE,IAAY,EAAE,GAAW,EAAkB,EAAE;gBACzF,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAI,IAAI,CAAC,KAAgD,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;qBACjF,CAAC;oBAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAAC,CAAC;gBACjJ,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CAAC,MAAsB,EAAE,IAAY,EAAQ,EAAE;gBACrD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAuC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC5D,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,EAAE,CAAC,MAAsB,EAAE,IAAY,EAAQ,EAAE;gBACpD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACzC,wEAAwE;gBACxE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;wBAAE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrH,IAAI,CAAC,KAAsC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC3D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,EAAE,CAAC,OAAuB,EAAE,MAAsB,EAAE,OAAe,EAAQ,EAAE;gBACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;oBACtC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAuC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,OAAO,EAAoD,CAAC;IAClF,SAAS,OAAO,CAAC,IAAmD;QAClE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,OAAO,MAAuD,CAAC;QAC3E,MAAM,GAAG,GAAG;YACV,GAAG,IAAI;YACP,OAAO,EAAE,CAAC,IAAoB,EAAE,IAA0D,EAAQ,EAAE;gBAClG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAwC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1G,CAAC;SACF,CAAC;QACF,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,OAAO,EAAoD,CAAC;IACpF,SAAS,WAAW,CAAC,IAAmD;QACtE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM;YAAE,OAAO,MAAuD,CAAC;QAC3E,MAAM,GAAG,GAAG;YACV,GAAG,IAAI;YACP,IAAI,EAAE,CAAC,MAAwB,EAAQ,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAyD,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5E,CAAC;YACD,KAAK,EAAE,CAAC,MAAwB,EAAE,MAAkB,EAAE,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,MAAe,EAAU,EAAE;gBACjI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAI,IAAI,CAAC,KAAwC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACjH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8FAA8F;IAC9F,SAAS,eAAe,CAAC,IAAoB;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;gBAAE,SAAS;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA0C,CAAC;YACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACrE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,eAAe,CAAC,KAAK,CAAC,CAAC;;gBAC5C,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,SAAS,KAAK,CAAC,IAAoB,EAAE,IAAY,EAAE,EAAU;QAC3D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAA0C,CAAC,EAAE,CAAC;YAC5F,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAmB,EAAE;YAC1B,MAAM,IAAI,GAAG,KAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;IACF,IAAI,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC;YAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACjE,IAAI,CAAC;YAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;IACrF,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/B,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA6B,EAAE,OAA6B,EAAE,QAAmC;IACrI,MAAM,KAAK,GAA2B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAA2B,CAAC;IACpL,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAA2D,CAAC;QAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/H,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,OAAO,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;oBAAE,SAAS;gBAC5C,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;;YAC1H,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACtH,CAAC,CAAC;IACF,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvB,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -1,8 +1,22 @@
1
1
  import { type PyodideFileSystem, type PyodideRuntime } from "./pyodide-runtime.js";
2
2
  export interface PythonPipInvocation {
3
3
  requirements: string[];
4
+ /** Present when a lockfile pinned the versions; the caller says so once. */
5
+ lockfile?: {
6
+ file: string;
7
+ pins: number;
8
+ };
4
9
  }
5
10
  export declare function restorePythonPackages(pyodide: PyodideRuntime): Promise<void>;
6
11
  export declare function installPythonPackages(pyodide: PyodideRuntime, invocation: PythonPipInvocation): Promise<void>;
12
+ /**
13
+ * `uv.lock` records the version of every package a project resolved, in
14
+ * TOML: a sequence of `[[package]]` tables with a name and a version. The
15
+ * tab installs through micropip, which takes requirement strings, so a
16
+ * lockfile pins each requirement to what the project recorded.
17
+ */
18
+ export declare function readUvLock(text: string): Map<string, string>;
19
+ /** A requirement pinned to the version a lockfile recorded, where it names one. */
20
+ export declare function pinRequirement(requirement: string, versions: ReadonlyMap<string, string>): string;
7
21
  export declare function parsePipInvocation(fs: PyodideFileSystem, argv: string[], cwd: string): PythonPipInvocation | undefined;
8
22
  //# sourceMappingURL=package-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7G,MAAM,WAAW,mBAAmB;IAAG,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE;AAE/D,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,iBAAiB,EACrB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,mBAAmB,GAAG,SAAS,CAyBjC"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7G,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAKjG;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,iBAAiB,EACrB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,mBAAmB,GAAG,SAAS,CAwCjC"}
@@ -11,9 +11,50 @@ export async function restorePythonPackages(pyodide) {
11
11
  writeRequirements(pyodide.FS, await resolvedRequirements(pyodide));
12
12
  }
13
13
  export async function installPythonPackages(pyodide, invocation) {
14
+ // Nothing to install records nothing: a project with an empty requirements file has no packages to list.
15
+ if (invocation.requirements.length === 0)
16
+ return;
14
17
  await installRequirements(pyodide, invocation.requirements);
15
18
  writeRequirements(pyodide.FS, await resolvedRequirements(pyodide));
16
19
  }
20
+ /**
21
+ * `uv.lock` records the version of every package a project resolved, in
22
+ * TOML: a sequence of `[[package]]` tables with a name and a version. The
23
+ * tab installs through micropip, which takes requirement strings, so a
24
+ * lockfile pins each requirement to what the project recorded.
25
+ */
26
+ export function readUvLock(text) {
27
+ const versions = new Map();
28
+ let name;
29
+ for (const raw of text.split("\n")) {
30
+ const line = raw.trim();
31
+ if (line === "[[package]]") {
32
+ name = undefined;
33
+ continue;
34
+ }
35
+ if (line.startsWith("[") && line !== "[[package]]") {
36
+ name = undefined;
37
+ continue;
38
+ }
39
+ const nameMatch = /^name\s*=\s*"([^"]+)"$/u.exec(line);
40
+ if (nameMatch) {
41
+ name = nameMatch[1];
42
+ continue;
43
+ }
44
+ const versionMatch = /^version\s*=\s*"([^"]+)"$/u.exec(line);
45
+ if (versionMatch && name && !versions.has(name))
46
+ versions.set(name, versionMatch[1]);
47
+ }
48
+ return versions;
49
+ }
50
+ /** A requirement pinned to the version a lockfile recorded, where it names one. */
51
+ export function pinRequirement(requirement, versions) {
52
+ const name = /^[A-Za-z0-9._-]+/u.exec(requirement.trim())?.[0];
53
+ if (!name)
54
+ return requirement;
55
+ const pinned = versions.get(name) ?? versions.get(name.toLowerCase()) ?? versions.get(name.replace(/_/gu, "-").toLowerCase());
56
+ return pinned ? `${name}==${pinned}` : requirement;
57
+ }
17
58
  export function parsePipInvocation(fs, argv, cwd) {
18
59
  const executable = pythonBasename(argv[0] ?? "");
19
60
  const args = executable === "pip" || executable === "pip3"
@@ -23,8 +64,9 @@ export function parsePipInvocation(fs, argv, cwd) {
23
64
  if (!args)
24
65
  return;
25
66
  if (args[0] !== "install")
26
- throw new Error("browser pip currently supports: pip install <packages> [-r requirements.txt]");
67
+ throw new Error("pip in the tab supports only `pip install <packages> [-r requirements.txt]`, and only as a temporary path: a project's Python dependencies are meant to be prepared on a machine by `npx browser-substrate dev`.");
27
68
  const requirements = [];
69
+ let fromFile = false;
28
70
  for (let index = 1; index < args.length; index += 1) {
29
71
  const argument = args[index];
30
72
  if (argument === "--disable-pip-version-check" || argument === "-q" || argument === "--quiet")
@@ -37,18 +79,31 @@ export function parsePipInvocation(fs, argv, cwd) {
37
79
  if (!fs.analyzePath(path).exists)
38
80
  throw new Error(`pip: requirements file not found: ${path}`);
39
81
  requirements.push(...parseRequirementFile(new TextDecoder().decode(fs.readFile(path))));
82
+ fromFile = true;
40
83
  continue;
41
84
  }
42
85
  if (argument.startsWith("-"))
43
86
  throw new Error(`browser pip does not support option: ${argument}`);
44
87
  requirements.push(argument);
45
88
  }
89
+ // A requirements file that names nothing is an install with nothing to do,
90
+ // as pip takes it; a bare `pip install` is a mistake, as pip says.
91
+ if (requirements.length === 0 && !fromFile)
92
+ throw new Error("pip install requires at least one package.");
93
+ // A lockfile beside the project pins what is installed, as it does for npm.
94
+ const lockPath = absolutePythonPath("uv.lock", cwd);
95
+ if (fs.analyzePath(lockPath).exists) {
96
+ const versions = readUvLock(new TextDecoder().decode(fs.readFile(lockPath)));
97
+ if (versions.size > 0) {
98
+ const pinned = requirements.map((requirement) => pinRequirement(requirement, versions));
99
+ validateRequirements(pinned);
100
+ return { requirements: pinned, lockfile: { file: "uv.lock", pins: versions.size } };
101
+ }
102
+ }
46
103
  validateRequirements(requirements);
47
104
  return { requirements };
48
105
  }
49
106
  async function installRequirements(pyodide, requirements) {
50
- if (requirements.length === 0)
51
- throw new Error("pip install requires at least one package.");
52
107
  validateRequirements(requirements);
53
108
  await withPythonNetworkPurpose("package", async () => {
54
109
  await pyodide.loadPackage("micropip");
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,35 @@
1
1
  import type { BrowserFileSystem } from "@volter/browser-runtime/browser-filesystem.js";
2
2
  import type { BrowserCommandBackend } from "@volter/browser-runtime/browser-process.js";
3
- import type { PythonServerWorkerMessage } from "./protocol.js";
3
+ import type { PythonFilesystemSync, PythonServerWorkerMessage } from "./protocol.js";
4
4
  type ProcessMessage = Extract<PythonServerWorkerMessage, {
5
5
  type: "process-run" | "process-cancel" | "process-start" | "process-action";
6
6
  }>;
7
7
  /** Owns synchronous subprocess calls and long-lived Popen handles for one Python worker. */
8
8
  export declare class PythonChildProcessHost {
9
9
  private readonly filesystem;
10
+ private readonly sync;
10
11
  private readonly backend?;
11
12
  private readonly controllers;
12
13
  private readonly children;
13
14
  private nextChildId;
14
15
  private active;
15
16
  private closed;
16
- constructor(filesystem: BrowserFileSystem, backend?: BrowserCommandBackend | undefined);
17
+ /** One reading of the tree at a time, so two children measure from different bases. */
18
+ private changeQueue;
19
+ constructor(filesystem: BrowserFileSystem, sync: PythonFilesystemSync, backend?: BrowserCommandBackend | undefined);
17
20
  handles(message: PythonServerWorkerMessage): message is ProcessMessage;
18
21
  handle(message: ProcessMessage): void;
19
22
  close(): void;
20
23
  private run;
21
24
  private runOnce;
25
+ /**
26
+ * What the child changed: the delta between the tree the worker last saw
27
+ * and the tree now, with bytes read for the changed files alone. Nothing
28
+ * else of the project crosses, and what does is recorded as the worker's
29
+ * new base, the way the page records what the program wrote. Only the
30
+ * workspace crosses; the worker's realm holds nothing above it.
31
+ */
32
+ private childChanges;
22
33
  private start;
23
34
  private act;
24
35
  private requiredBackend;
@@ -1 +1 @@
1
- {"version":3,"file":"process-host.d.ts","sourceRoot":"","sources":["../src/process-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,KAAK,cAAc,GAAG,OAAO,CAAC,yBAAyB,EAAE;IACvD,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;CAC7E,CAAC,CAAC;AAsBH,4FAA4F;AAC5F,qBAAa,sBAAsB;IAQ/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAR3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;gBAGJ,UAAU,EAAE,iBAAiB,EAC7B,OAAO,CAAC,EAAE,qBAAqB,YAAA;IAGlD,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,IAAI,cAAc;IAKtE,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAYrC,KAAK,IAAI,IAAI;IAcb,OAAO,CAAC,GAAG;YAcG,OAAO;IAqBrB,OAAO,CAAC,KAAK;YA0DC,GAAG;IAsDjB,OAAO,CAAC,eAAe;CAIxB"}
1
+ {"version":3,"file":"process-host.d.ts","sourceRoot":"","sources":["../src/process-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAErF,KAAK,cAAc,GAAG,OAAO,CAAC,yBAAyB,EAAE;IACvD,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;CAC7E,CAAC,CAAC;AAuBH,4FAA4F;AAC5F,qBAAa,sBAAsB;IAU/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAX3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,uFAAuF;IACvF,OAAO,CAAC,WAAW,CAAuC;gBAGvC,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,qBAAqB,YAAA;IAGlD,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,IAAI,cAAc;IAKtE,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAYrC,KAAK,IAAI,IAAI;IAcb,OAAO,CAAC,GAAG;YAcG,OAAO;IAqBrB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,KAAK;YAyDC,GAAG;IAsDjB,OAAO,CAAC,eAAe;CAIxB"}
@@ -1,3 +1,5 @@
1
+ import { createProcessFilesystemPatch, } from "@volter/browser-runtime/browser-process-filesystem.js";
2
+ import { PYTHON_WORKSPACE } from "./pyodide-runtime.js";
1
3
  const MAX_PROCESS_REQUESTS = 8;
2
4
  const MAX_PROCESS_COMMAND_CHARS = 64 * 1024;
3
5
  const MAX_PROCESS_INPUT_BYTES = 16 * 1024 * 1024;
@@ -6,14 +8,18 @@ const MAX_PROCESS_READ_BYTES = 1024 * 1024;
6
8
  /** Owns synchronous subprocess calls and long-lived Popen handles for one Python worker. */
7
9
  export class PythonChildProcessHost {
8
10
  filesystem;
11
+ sync;
9
12
  backend;
10
13
  controllers = new Map();
11
14
  children = new Map();
12
15
  nextChildId = 1;
13
16
  active = 0;
14
17
  closed = false;
15
- constructor(filesystem, backend) {
18
+ /** One reading of the tree at a time, so two children measure from different bases. */
19
+ changeQueue = Promise.resolve();
20
+ constructor(filesystem, sync, backend) {
16
21
  this.filesystem = filesystem;
22
+ this.sync = sync;
17
23
  this.backend = backend;
18
24
  }
19
25
  handles(message) {
@@ -74,12 +80,41 @@ export class PythonChildProcessHost {
74
80
  signal,
75
81
  ...(stdin.byteLength > 0 ? { stdinStream: oneChunk(stdin) } : {}),
76
82
  });
77
- complete(message, { result, filesystem: this.filesystem.toSnapshot() });
83
+ complete(message, { result, patch: await this.childChanges() });
78
84
  }
79
85
  catch (cause) {
80
86
  complete(message, { error: errorMessage(cause) });
81
87
  }
82
88
  }
89
+ /**
90
+ * What the child changed: the delta between the tree the worker last saw
91
+ * and the tree now, with bytes read for the changed files alone. Nothing
92
+ * else of the project crosses, and what does is recorded as the worker's
93
+ * new base, the way the page records what the program wrote. Only the
94
+ * workspace crosses; the worker's realm holds nothing above it.
95
+ */
96
+ childChanges() {
97
+ const changes = this.changeQueue.then(async () => {
98
+ const base = this.sync.base();
99
+ const difference = createProcessFilesystemPatch(base, this.filesystem.toSnapshot());
100
+ const files = [];
101
+ for (const entry of difference.files) {
102
+ if (!insideWorkspace(entry.path))
103
+ continue;
104
+ if (entry.type !== "file" || entry.content !== undefined) {
105
+ files.push(entry);
106
+ continue;
107
+ }
108
+ const { size: _size, ...rest } = entry;
109
+ files.push({ ...rest, content: encode(await this.filesystem.readFile(entry.path)) });
110
+ }
111
+ const patch = { files, removed: difference.removed.filter(insideWorkspace) };
112
+ this.sync.advance(patch);
113
+ return patch;
114
+ });
115
+ this.changeQueue = changes.catch(() => undefined);
116
+ return changes;
117
+ }
83
118
  start(message) {
84
119
  try {
85
120
  const backend = this.requiredBackend();
@@ -128,11 +163,10 @@ export class PythonChildProcessHost {
128
163
  writeOutput(stdout, result.stderr);
129
164
  else if (stderr && result.stderr && !stderrStreamed)
130
165
  writeOutput(stderr, result.stderr);
131
- return { result, filesystem: this.filesystem.toSnapshot() };
132
- }, (cause) => ({
133
- error: errorMessage(cause),
134
- filesystem: this.filesystem.toSnapshot(),
135
- })).then((completion) => {
166
+ // What this child changed is read when the program waits for it,
167
+ // against the tree the worker holds then.
168
+ return { result };
169
+ }, (cause) => ({ error: errorMessage(cause) })).then((completion) => {
136
170
  child.finished = completion;
137
171
  stdout?.close();
138
172
  stderr?.close();
@@ -201,7 +235,7 @@ export class PythonChildProcessHost {
201
235
  if (message.closeStdin)
202
236
  child.stdin?.close();
203
237
  const completion = await child.completion;
204
- complete(message, completion);
238
+ complete(message, { ...completion, patch: await this.childChanges() });
205
239
  }
206
240
  catch (cause) {
207
241
  complete(message, { error: errorMessage(cause) });
@@ -292,6 +326,9 @@ class AsyncProcessOutput {
292
326
  reader();
293
327
  }
294
328
  }
329
+ function insideWorkspace(path) {
330
+ return path === PYTHON_WORKSPACE || path.startsWith(`${PYTHON_WORKSPACE}/`);
331
+ }
295
332
  function validateRequest(command, cwd, env) {
296
333
  if (!command || command.length > MAX_PROCESS_COMMAND_CHARS
297
334
  || !cwd.startsWith("/") || cwd.length > 16_384 || Object.keys(env).length > 256) {
@@ -1 +1 @@
1
- {"version":3,"file":"process-host.js","sourceRoot":"","sources":["../src/process-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-host.js","sourceRoot":"","sources":["../src/process-host.ts"],"names":[],"mappings":"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"}