@seanhogg/builderforce-webcontainers-core 2026.10.5 → 2026.10.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.
- package/README.md +1 -1
- package/dist/build.d.ts +3 -3
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +1 -1
- package/dist/build.js.map +1 -1
- package/dist/check/typecheck.d.ts +2 -2
- package/dist/check/typecheck.d.ts.map +1 -1
- package/dist/check/typecheck.js +1 -1
- package/dist/check/typecheck.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/node/childProcess.js +1 -1
- package/dist/node/childProcess.js.map +1 -1
- package/dist/node/misc.js +1 -1
- package/dist/node/misc.js.map +1 -1
- package/dist/shell/builtins.d.ts.map +1 -1
- package/dist/shell/builtins.js +2 -2
- package/dist/shell/builtins.js.map +1 -1
- package/dist/shell/devHandoff.d.ts +1 -1
- package/dist/shell/exec.js +4 -4
- package/dist/shell/exec.js.map +1 -1
- package/dist/shell/expand.js +1 -1
- package/dist/shell/expand.js.map +1 -1
- package/dist/shell/program.d.ts +1 -1
- package/dist/shell/program.js +3 -3
- package/dist/shell/program.js.map +1 -1
- package/dist/system/commands.d.ts +4 -4
- package/dist/system/commands.d.ts.map +1 -1
- package/dist/system/commands.js +3 -3
- package/dist/system/commands.js.map +1 -1
- package/dist/system/index.d.ts +6 -4
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +2 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/kernel.d.ts +9 -16
- package/dist/system/kernel.d.ts.map +1 -1
- package/dist/system/kernel.js +10 -23
- package/dist/system/kernel.js.map +1 -1
- package/dist/system/process.d.ts +18 -14
- package/dist/system/process.d.ts.map +1 -1
- package/dist/system/process.js +12 -10
- package/dist/system/process.js.map +1 -1
- package/dist/system/programs.js +1 -1
- package/dist/system/programs.js.map +1 -1
- package/dist/system/serverEvents.d.ts +27 -0
- package/dist/system/serverEvents.d.ts.map +1 -0
- package/dist/system/serverEvents.js +33 -0
- package/dist/system/serverEvents.js.map +1 -0
- package/dist/system/types.d.ts +4 -4
- package/dist/system/types.d.ts.map +1 -1
- package/dist/vfs.d.ts +11 -16
- package/dist/vfs.d.ts.map +1 -1
- package/dist/vfs.js +3 -8
- package/dist/vfs.js.map +1 -1
- package/package.json +1 -1
- package/src/build.ts +4 -4
- package/src/check/typecheck.ts +4 -4
- package/src/index.ts +1 -1
- package/src/node/childProcess.ts +1 -1
- package/src/node/misc.ts +1 -1
- package/src/shell/builtins.ts +2 -2
- package/src/shell/devHandoff.ts +1 -1
- package/src/shell/exec.ts +4 -4
- package/src/shell/expand.ts +1 -1
- package/src/shell/program.ts +4 -4
- package/src/system/commands.ts +6 -6
- package/src/system/index.ts +6 -4
- package/src/system/kernel.ts +15 -32
- package/src/system/process.ts +28 -20
- package/src/system/programs.ts +1 -1
- package/src/system/serverEvents.ts +44 -0
- package/src/system/types.ts +4 -4
- package/src/vfs.ts +13 -13
package/dist/system/commands.js
CHANGED
|
@@ -30,10 +30,10 @@ export function interpreterFor(fs, path) {
|
|
|
30
30
|
if (target)
|
|
31
31
|
return { name: 'node', args: [target] };
|
|
32
32
|
const firstLine = (fs.readText(path) ?? '').split('\n', 1)[0] ?? '';
|
|
33
|
-
if (/^#!.*\b(?:sh|bash|
|
|
34
|
-
return { name: '
|
|
33
|
+
if (/^#!.*\b(?:sh|bash|bfsh|zsh|dash)\b/.test(firstLine))
|
|
34
|
+
return { name: 'bfsh', args: [path] };
|
|
35
35
|
if (['.sh', '.bash'].includes(extname(path)))
|
|
36
|
-
return { name: '
|
|
36
|
+
return { name: 'bfsh', args: [path] };
|
|
37
37
|
return { name: 'node', args: [path] };
|
|
38
38
|
}
|
|
39
39
|
export function resolveCommand(fs, programs, command, args, cwd, env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/system/commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAUnD,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,GAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC7E,IAAI,GAAG,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,OAAe,EAAE,GAAW,EAAE,GAAuC;IACzH,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,IAAY;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/system/commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAUnD,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,GAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC7E,IAAI,GAAG,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,OAAe,EAAE,GAAW,EAAE,GAAuC;IACzH,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,IAAY;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,oCAAoC,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,QAA2C,EAC3C,OAAe,EACf,IAAc,EACd,GAAW,EACX,GAAuC;IAEvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAE,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,OAAO,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACxI,CAAC"}
|
package/dist/system/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { Kernel, DEFAULT_ENV } from './kernel.js';
|
|
2
|
-
export type { KernelOptions
|
|
3
|
-
export type { System, Program, ProgramContext, ProgramIO, TerminalPort,
|
|
2
|
+
export type { KernelOptions } from './kernel.js';
|
|
3
|
+
export type { System, Program, ProgramContext, ProgramIO, TerminalPort, ProcessOptions, ChildHandle, HttpRequestData, HttpResponseData, HttpHandler } from './types.js';
|
|
4
4
|
export { PortRegistry, parsePortPath } from './ports.js';
|
|
5
5
|
export type { PortEvent } from './ports.js';
|
|
6
|
-
export { runProgram,
|
|
7
|
-
export type {
|
|
6
|
+
export { runProgram, runArguments, toRuntimeProcess, allocatePid } from './process.js';
|
|
7
|
+
export type { RuntimeProcess, RunProgramOptions } from './process.js';
|
|
8
|
+
export { ServerEvents } from './serverEvents.js';
|
|
9
|
+
export type { ServerAddress, PortChange } from './serverEvents.js';
|
|
8
10
|
export { resolveCommand, findExecutable, binDirectories, interpreterFor, commandNotFound } from './commands.js';
|
|
9
11
|
export type { ResolvedCommand } from './commands.js';
|
|
10
12
|
export { InputQueue, LineDiscipline, toTerminal } from './terminal.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxK,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChH,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/system/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Kernel, DEFAULT_ENV } from './kernel.js';
|
|
2
2
|
export { PortRegistry, parsePortPath } from './ports.js';
|
|
3
|
-
export { runProgram,
|
|
3
|
+
export { runProgram, runArguments, toRuntimeProcess, allocatePid } from './process.js';
|
|
4
|
+
export { ServerEvents } from './serverEvents.js';
|
|
4
5
|
export { resolveCommand, findExecutable, binDirectories, interpreterFor, commandNotFound } from './commands.js';
|
|
5
6
|
export { InputQueue, LineDiscipline, toTerminal } from './terminal.js';
|
|
6
7
|
export { defaultPrograms } from './programs.js';
|
package/dist/system/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/system/kernel.d.ts
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { VirtualFileSystem } from '../vfs.js';
|
|
9
9
|
import type { PackageCache } from '../installer/registry.js';
|
|
10
|
-
import type { ChildHandle, HttpRequestData, HttpResponseData, Program,
|
|
10
|
+
import type { ChildHandle, HttpRequestData, HttpResponseData, Program, ProcessOptions, System } from './types.js';
|
|
11
11
|
import { PortRegistry } from './ports.js';
|
|
12
|
-
import {
|
|
12
|
+
import { ServerEvents } from './serverEvents.js';
|
|
13
|
+
import { type RuntimeProcess } from './process.js';
|
|
13
14
|
export interface KernelOptions {
|
|
14
15
|
fs?: VirtualFileSystem;
|
|
15
16
|
/** Programs by command name. The full set comes from `defaultPrograms()`. */
|
|
@@ -23,32 +24,24 @@ export interface KernelOptions {
|
|
|
23
24
|
registry?: string;
|
|
24
25
|
packageCache?: PackageCache;
|
|
25
26
|
}
|
|
26
|
-
export interface KernelSpawnOptions extends SpawnOptions {
|
|
27
|
-
/** Kept for `@webcontainer/api` parity; output is always delivered. */
|
|
28
|
-
output?: boolean;
|
|
29
|
-
}
|
|
30
|
-
type ServerReadyListener = (port: number, url: string) => void;
|
|
31
|
-
type PortListener = (port: number, type: 'open' | 'close', url: string) => void;
|
|
32
27
|
export declare const DEFAULT_ENV: Record<string, string>;
|
|
33
28
|
export declare class Kernel {
|
|
34
29
|
private readonly options;
|
|
35
30
|
readonly fs: VirtualFileSystem;
|
|
36
31
|
readonly ports: PortRegistry;
|
|
32
|
+
/** Servers listening, ports opening and closing. */
|
|
33
|
+
readonly servers: ServerEvents;
|
|
37
34
|
readonly env: Record<string, string>;
|
|
38
|
-
private readonly serverReady;
|
|
39
|
-
private readonly portListeners;
|
|
40
35
|
private readonly system;
|
|
41
36
|
constructor(options: KernelOptions);
|
|
42
|
-
/**
|
|
43
|
-
|
|
37
|
+
/** Start a command — `run('npm', ['install'])`, `run('bfsh', { terminal })` — as a stream-based {@link RuntimeProcess}. */
|
|
38
|
+
run(command: string, args?: string[], options?: ProcessOptions): RuntimeProcess;
|
|
39
|
+
run(command: string, options?: ProcessOptions): RuntimeProcess;
|
|
44
40
|
/** A child as a program's parent sees it — what `System.spawn` returns. */
|
|
45
|
-
spawnChild(command: string, args?: string[], options?:
|
|
41
|
+
spawnChild(command: string, args?: string[], options?: ProcessOptions): ChildHandle;
|
|
46
42
|
/** Send an HTTP request to a virtual server (what the preview service worker does in the browser). */
|
|
47
43
|
request(port: number, request: Partial<HttpRequestData> & {
|
|
48
44
|
url: string;
|
|
49
45
|
}): Promise<HttpResponseData | undefined>;
|
|
50
|
-
on(event: 'server-ready', listener: ServerReadyListener): () => void;
|
|
51
|
-
on(event: 'port', listener: PortListener): () => void;
|
|
52
46
|
}
|
|
53
|
-
export {};
|
|
54
47
|
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/system/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/system/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/F,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sFAAsF;IACtF,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS9C,CAAC;AAEF,qBAAa,MAAM;IAQL,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,KAAK,eAAsB;IACpC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,eAAsB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,aAAa;IAmBnD,2HAA2H;IAC3H,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc;IAC/E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc;IAM9D,2EAA2E;IAC3E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,WAAW;IAQ3F,sGAAsG;IACtG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAGlH"}
|
package/dist/system/kernel.js
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { VirtualFileSystem } from '../vfs.js';
|
|
9
9
|
import { PortRegistry } from './ports.js';
|
|
10
|
+
import { ServerEvents } from './serverEvents.js';
|
|
10
11
|
import { commandNotFound, resolveCommand } from './commands.js';
|
|
11
|
-
import { runProgram,
|
|
12
|
+
import { runArguments, runProgram, toRuntimeProcess } from './process.js';
|
|
12
13
|
export const DEFAULT_ENV = {
|
|
13
14
|
PATH: '/usr/local/bin:/usr/bin:/bin',
|
|
14
15
|
HOME: '/home/user',
|
|
15
16
|
USER: 'user',
|
|
16
|
-
SHELL: '/bin/
|
|
17
|
+
SHELL: '/bin/bfsh',
|
|
17
18
|
TERM: 'xterm-256color',
|
|
18
19
|
COLORTERM: 'truecolor',
|
|
19
20
|
LANG: 'en_US.UTF-8',
|
|
@@ -23,23 +24,16 @@ export class Kernel {
|
|
|
23
24
|
options;
|
|
24
25
|
fs;
|
|
25
26
|
ports = new PortRegistry();
|
|
27
|
+
/** Servers listening, ports opening and closing. */
|
|
28
|
+
servers = new ServerEvents();
|
|
26
29
|
env;
|
|
27
|
-
serverReady = new Set();
|
|
28
|
-
portListeners = new Set();
|
|
29
30
|
system;
|
|
30
31
|
constructor(options) {
|
|
31
32
|
this.options = options;
|
|
32
33
|
this.fs = options.fs ?? new VirtualFileSystem();
|
|
33
34
|
this.env = { ...DEFAULT_ENV, ...options.env };
|
|
34
35
|
const serverUrl = (port) => options.serverUrl?.(port) ?? `http://localhost:${port}/`;
|
|
35
|
-
this.ports.watch(({ type, port }) => {
|
|
36
|
-
const url = serverUrl(port);
|
|
37
|
-
for (const l of this.portListeners)
|
|
38
|
-
l(port, type, url);
|
|
39
|
-
if (type === 'open')
|
|
40
|
-
for (const l of this.serverReady)
|
|
41
|
-
l(port, url);
|
|
42
|
-
});
|
|
36
|
+
this.ports.watch(({ type, port }) => this.servers.portChanged({ type, port, url: serverUrl(port) }));
|
|
43
37
|
this.system = {
|
|
44
38
|
fs: this.fs,
|
|
45
39
|
fetch: options.fetch ?? ((input, init) => globalThis.fetch(input, init)),
|
|
@@ -47,17 +41,15 @@ export class Kernel {
|
|
|
47
41
|
listen: (port, handler) => this.ports.listen(port, handler),
|
|
48
42
|
loopback: (port, request) => this.ports.request(port, request),
|
|
49
43
|
serverUrl,
|
|
50
|
-
announceServer: (port, url) => this.
|
|
44
|
+
announceServer: (port, url) => this.servers.announce({ port, url }),
|
|
51
45
|
previewUrl: options.previewUrl,
|
|
52
46
|
registry: options.registry,
|
|
53
47
|
packageCache: options.packageCache,
|
|
54
48
|
};
|
|
55
49
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
[options, args] = [args, []];
|
|
60
|
-
return toWebContainerProcess(this.spawnChild(command, args, options), !!options.terminal);
|
|
50
|
+
run(command, argsOrOptions, maybeOptions) {
|
|
51
|
+
const [args, options] = runArguments(argsOrOptions, maybeOptions);
|
|
52
|
+
return toRuntimeProcess(this.spawnChild(command, args, options), !!options.terminal);
|
|
61
53
|
}
|
|
62
54
|
/** A child as a program's parent sees it — what `System.spawn` returns. */
|
|
63
55
|
spawnChild(command, args = [], options = {}) {
|
|
@@ -72,10 +64,5 @@ export class Kernel {
|
|
|
72
64
|
request(port, request) {
|
|
73
65
|
return this.ports.request(port, { method: 'GET', headers: {}, body: null, ...request });
|
|
74
66
|
}
|
|
75
|
-
on(event, listener) {
|
|
76
|
-
const set = (event === 'server-ready' ? this.serverReady : this.portListeners);
|
|
77
|
-
set.add(listener);
|
|
78
|
-
return () => set.delete(listener);
|
|
79
|
-
}
|
|
80
67
|
}
|
|
81
68
|
//# sourceMappingURL=kernel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/system/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/system/kernel.ts"],"names":[],"mappings":"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"}
|
package/dist/system/process.d.ts
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Running one program in-process: its stdin queue, TTY line discipline,
|
|
3
3
|
* output listeners and kill signal, packaged as a {@link ChildHandle}. The core
|
|
4
4
|
* kernel uses it for every process; the browser worker uses it for the one
|
|
5
|
-
* program it hosts. Also the
|
|
6
|
-
*
|
|
5
|
+
* program it hosts. Also {@link RuntimeProcess}, the stream-based handle the
|
|
6
|
+
* public `run()` returns.
|
|
7
7
|
*/
|
|
8
|
-
import type { ChildHandle, Program,
|
|
8
|
+
import type { ChildHandle, Program, ProcessOptions, System } from './types.js';
|
|
9
9
|
export declare function allocatePid(): number;
|
|
10
|
-
export interface RunProgramOptions extends
|
|
10
|
+
export interface RunProgramOptions extends ProcessOptions {
|
|
11
11
|
program: Program;
|
|
12
12
|
args: string[];
|
|
13
13
|
system: System;
|
|
@@ -16,17 +16,21 @@ export interface RunProgramOptions extends SpawnOptions {
|
|
|
16
16
|
pid?: number;
|
|
17
17
|
}
|
|
18
18
|
export declare function runProgram(options: RunProgramOptions): ChildHandle;
|
|
19
|
-
/**
|
|
20
|
-
export interface
|
|
19
|
+
/** A running process as a host page sees it: streams for xterm.js or a log, and its exit code. */
|
|
20
|
+
export interface RuntimeProcess {
|
|
21
|
+
readonly pid: number;
|
|
21
22
|
/** stdout and stderr, interleaved as written (`\r\n` line endings when attached to a terminal). */
|
|
22
|
-
readonly
|
|
23
|
-
|
|
24
|
-
readonly
|
|
23
|
+
readonly combinedOutput: ReadableStream<string>;
|
|
24
|
+
/** Keystrokes or piped input; closing it is end-of-file. */
|
|
25
|
+
readonly stdin: WritableStream<string>;
|
|
26
|
+
/** Resolves with the exit code (128 + signal number when killed). */
|
|
27
|
+
wait(): Promise<number>;
|
|
28
|
+
/** Default `SIGTERM`; `SIGKILL` cannot be caught. */
|
|
25
29
|
kill(signal?: string): void;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
rows: number;
|
|
29
|
-
} | number, rows?: number): void;
|
|
30
|
+
/** Resize the attached terminal. A no-op for a process started without one. */
|
|
31
|
+
resizeTerminal(cols: number, rows: number): void;
|
|
30
32
|
}
|
|
31
|
-
|
|
33
|
+
/** `run(command, args?, options?)` and `run(command, options)` — the same call either way. */
|
|
34
|
+
export declare function runArguments(args?: string[] | ProcessOptions, options?: ProcessOptions): [string[], ProcessOptions];
|
|
35
|
+
export declare function toRuntimeProcess(child: ChildHandle, terminal: boolean): RuntimeProcess;
|
|
32
36
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAa,
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAa,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAK1F,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAWD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAwFlE;AAED,kGAAkG;AAClG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,qEAAqE;IACrE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,qDAAqD;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAM,EAAE,GAAG,cAAmB,EAAE,OAAO,GAAE,cAAmB,GAAG,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAE3H;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,CAqBtF"}
|
package/dist/system/process.js
CHANGED
|
@@ -103,8 +103,12 @@ export function runProgram(options) {
|
|
|
103
103
|
exit,
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
/** `run(command, args?, options?)` and `run(command, options)` — the same call either way. */
|
|
107
|
+
export function runArguments(args = [], options = {}) {
|
|
108
|
+
return Array.isArray(args) ? [args, options] : [[], args];
|
|
109
|
+
}
|
|
110
|
+
export function toRuntimeProcess(child, terminal) {
|
|
111
|
+
const combinedOutput = new ReadableStream({
|
|
108
112
|
start(controller) {
|
|
109
113
|
const push = (chunk) => controller.enqueue(terminal ? toTerminal(chunk) : chunk);
|
|
110
114
|
child.onStdout(push);
|
|
@@ -112,19 +116,17 @@ export function toWebContainerProcess(child, terminal) {
|
|
|
112
116
|
void child.exit.then(() => controller.close());
|
|
113
117
|
},
|
|
114
118
|
});
|
|
115
|
-
const
|
|
119
|
+
const stdin = new WritableStream({
|
|
116
120
|
write: (chunk) => child.write(chunk),
|
|
117
121
|
close: () => child.closeStdin(),
|
|
118
122
|
});
|
|
119
123
|
return {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
pid: child.pid,
|
|
125
|
+
combinedOutput,
|
|
126
|
+
stdin,
|
|
127
|
+
wait: () => child.exit,
|
|
123
128
|
kill: (signal) => child.kill(signal),
|
|
124
|
-
resize(
|
|
125
|
-
const size = typeof dimensions === 'number' ? { cols: dimensions, rows: rows ?? 24 } : dimensions;
|
|
126
|
-
child.resize?.(size.cols, size.rows);
|
|
127
|
-
},
|
|
129
|
+
resizeTerminal: (cols, rows) => child.resize?.(cols, rows),
|
|
128
130
|
};
|
|
129
131
|
}
|
|
130
132
|
//# sourceMappingURL=process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/system/process.ts"],"names":[],"mappings":"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"}
|
package/dist/system/programs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"programs.js","sourceRoot":"","sources":["../../src/system/programs.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAExG,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAA4B;QACxC,IAAI,EAAE,WAAW;QACjB,
|
|
1
|
+
{"version":3,"file":"programs.js","sourceRoot":"","sources":["../../src/system/programs.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAExG,SAAS,QAAQ,CAAC,OAAe;IAC/B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAA4B;QACxC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;QACpB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;KACrB,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnG,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who hears about servers in a runtime: a port opening or closing, and a
|
|
3
|
+
* server becoming reachable (which a dev-server handoff announces without
|
|
4
|
+
* opening a port). One instance per runtime — the core `Kernel` and the
|
|
5
|
+
* browser's process host both own one, so the listener contract is the same.
|
|
6
|
+
*/
|
|
7
|
+
export interface ServerAddress {
|
|
8
|
+
port: number;
|
|
9
|
+
/** Where a browser reaches it (the preview URL for that port). */
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PortChange extends ServerAddress {
|
|
13
|
+
type: 'open' | 'close';
|
|
14
|
+
}
|
|
15
|
+
export declare class ServerEvents {
|
|
16
|
+
private readonly listening;
|
|
17
|
+
private readonly changes;
|
|
18
|
+
/** A server started listening (or a dev script handed off to the preview); `url` loads it in an iframe. */
|
|
19
|
+
onListening(listener: (server: ServerAddress) => void): () => void;
|
|
20
|
+
/** A virtual server opened or closed its port. */
|
|
21
|
+
onPortChange(listener: (change: PortChange) => void): () => void;
|
|
22
|
+
/** Report a port table change; an opened port is also a server listening. */
|
|
23
|
+
portChanged(change: PortChange): void;
|
|
24
|
+
/** Report a reachable server that did not open a port of its own. */
|
|
25
|
+
announce(server: ServerAddress): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=serverEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverEvents.d.ts","sourceRoot":"","sources":["../../src/system/serverEvents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,2GAA2G;IAC3G,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAKlE,kDAAkD;IAClD,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAKhE,6EAA6E;IAC7E,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKrC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;CAGtC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who hears about servers in a runtime: a port opening or closing, and a
|
|
3
|
+
* server becoming reachable (which a dev-server handoff announces without
|
|
4
|
+
* opening a port). One instance per runtime — the core `Kernel` and the
|
|
5
|
+
* browser's process host both own one, so the listener contract is the same.
|
|
6
|
+
*/
|
|
7
|
+
export class ServerEvents {
|
|
8
|
+
listening = new Set();
|
|
9
|
+
changes = new Set();
|
|
10
|
+
/** A server started listening (or a dev script handed off to the preview); `url` loads it in an iframe. */
|
|
11
|
+
onListening(listener) {
|
|
12
|
+
this.listening.add(listener);
|
|
13
|
+
return () => this.listening.delete(listener);
|
|
14
|
+
}
|
|
15
|
+
/** A virtual server opened or closed its port. */
|
|
16
|
+
onPortChange(listener) {
|
|
17
|
+
this.changes.add(listener);
|
|
18
|
+
return () => this.changes.delete(listener);
|
|
19
|
+
}
|
|
20
|
+
/** Report a port table change; an opened port is also a server listening. */
|
|
21
|
+
portChanged(change) {
|
|
22
|
+
for (const listener of this.changes)
|
|
23
|
+
listener(change);
|
|
24
|
+
if (change.type === 'open')
|
|
25
|
+
this.announce({ port: change.port, url: change.url });
|
|
26
|
+
}
|
|
27
|
+
/** Report a reachable server that did not open a port of its own. */
|
|
28
|
+
announce(server) {
|
|
29
|
+
for (const listener of this.listening)
|
|
30
|
+
listener(server);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=serverEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverEvents.js","sourceRoot":"","sources":["../../src/system/serverEvents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,OAAO,YAAY;IACN,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IACvD,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEnE,2GAA2G;IAC3G,WAAW,CAAC,QAAyC;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,YAAY,CAAC,QAAsC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,MAAkB;QAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,qEAAqE;IACrE,QAAQ,CAAC,MAAqB;QAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
package/dist/system/types.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface ProgramIO {
|
|
|
21
21
|
/** Present when attached to a terminal (xterm.js). */
|
|
22
22
|
terminal?: TerminalPort;
|
|
23
23
|
}
|
|
24
|
-
export interface
|
|
24
|
+
export interface ProcessOptions {
|
|
25
25
|
cwd?: string;
|
|
26
26
|
env?: Record<string, string>;
|
|
27
27
|
/** Attach to a terminal of this size (`isTTY`, line discipline, `\r\n` output). */
|
|
@@ -30,7 +30,7 @@ export interface SpawnOptions {
|
|
|
30
30
|
rows: number;
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
/** A child as its parent sees it (separate stdout/stderr, unlike the public
|
|
33
|
+
/** A child as its parent sees it (separate stdout/stderr listeners, unlike the streams of the public `RuntimeProcess`). */
|
|
34
34
|
export interface ChildHandle {
|
|
35
35
|
readonly pid: number;
|
|
36
36
|
onStdout(listener: (chunk: string) => void): () => void;
|
|
@@ -59,7 +59,7 @@ export interface System {
|
|
|
59
59
|
fs: VirtualFileSystem;
|
|
60
60
|
/** Outbound network (registry, `http.request`, `fetch`). */
|
|
61
61
|
fetch(input: string, init?: RequestInit): Promise<Response>;
|
|
62
|
-
spawn(command: string, args: string[], options?:
|
|
62
|
+
spawn(command: string, args: string[], options?: ProcessOptions): ChildHandle;
|
|
63
63
|
/** Register a virtual server; throws `EADDRINUSE`. Port 0 picks a free one. Returns the port and an unlisten. */
|
|
64
64
|
listen(port: number, handler: HttpHandler): {
|
|
65
65
|
port: number;
|
|
@@ -69,7 +69,7 @@ export interface System {
|
|
|
69
69
|
loopback(port: number, request: HttpRequestData): Promise<HttpResponseData | undefined>;
|
|
70
70
|
/** Where a browser reaches a server on `port` (the preview URL), if known. */
|
|
71
71
|
serverUrl(port: number): string | undefined;
|
|
72
|
-
/** Tell the host a server is
|
|
72
|
+
/** Tell the host a server is reachable without opening a port; used by the dev-server handoff. */
|
|
73
73
|
announceServer(port: number, url: string): void;
|
|
74
74
|
/** The in-browser dev server's preview URL, for `vite`/`react-scripts start` handoff. */
|
|
75
75
|
previewUrl?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/system/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACrE,kFAAkF;IAClF,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC,+FAA+F;IAC/F,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D,sDAAsD;IACtD,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/system/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vfs.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
export type FileContent = string | Uint8Array;
|
|
2
|
-
/**
|
|
3
|
-
export interface FileSystemTree {
|
|
4
|
-
[name: string]: {
|
|
5
|
-
file: {
|
|
6
|
-
contents: FileContent;
|
|
7
|
-
};
|
|
8
|
-
} | {
|
|
9
|
-
directory: FileSystemTree;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
/** A flat `{ 'src/main.tsx': '...' }` map, the other shape callers commonly hold. */
|
|
2
|
+
/** A flat `{ 'src/main.tsx': '...' }` map: path → contents. */
|
|
13
3
|
export type FlatFiles = Record<string, FileContent>;
|
|
4
|
+
/**
|
|
5
|
+
* Files to write: a name maps to contents (a file) or to another tree (a
|
|
6
|
+
* directory). Names may hold slashes, so a {@link FlatFiles} map is a tree too,
|
|
7
|
+
* and the two styles mix freely: `{ src: { 'main.tsx': '…' }, 'public/a.svg': '…' }`.
|
|
8
|
+
*/
|
|
9
|
+
export interface FileTree {
|
|
10
|
+
[name: string]: FileContent | FileTree;
|
|
11
|
+
}
|
|
14
12
|
export interface FsChange {
|
|
15
13
|
/** `mkdir` is an explicitly created (possibly empty) directory. */
|
|
16
14
|
type: 'write' | 'remove' | 'mkdir';
|
|
@@ -61,11 +59,8 @@ export declare class VirtualFileSystem {
|
|
|
61
59
|
version(path: string): number | undefined;
|
|
62
60
|
/** When the file was last written (epoch ms), or undefined when absent. */
|
|
63
61
|
mtime(path: string): number | undefined;
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
* path→contents map — or a mix, since each entry is judged on its own.
|
|
67
|
-
*/
|
|
68
|
-
mount(files: FileSystemTree | FlatFiles, at?: string): void;
|
|
62
|
+
/** Write many files at once, under `at` (default `/`). A nested object is a directory, created even when empty. */
|
|
63
|
+
writeTree(files: FileTree, at?: string): void;
|
|
69
64
|
/** Flat snapshot keyed without the leading slash (`src/main.tsx`). */
|
|
70
65
|
toFlat(): FlatFiles;
|
|
71
66
|
watch(listener: (change: FsChange) => void): () => void;
|
package/dist/vfs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../src/vfs.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../src/vfs.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,WAAW,QAAQ;IACvB,mEAAmE;IACnE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,KAAK,CAAK;IAElB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAWpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAM1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,4EAA4E;IAC5E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWzB,0EAA0E;IAC1E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/B,+BAA+B;IAC/B,IAAI,IAAI,MAAM,EAAE;IAIhB,oFAAoF;IACpF,mBAAmB,IAAI,MAAM,EAAE;IAI/B,6DAA6D;IAC7D,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IActB,4EAA4E;IAC5E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC,2EAA2E;IAC3E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvC,mHAAmH;IACnH,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAM,GAAG,IAAI;IAW1C,sEAAsE;IACtE,MAAM,IAAI,SAAS;IAMnB,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAKvD,OAAO,CAAC,UAAU;IAQlB,8EAA8E;IAC9E,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,SAAS;IAOjB,2EAA2E;IAC3E,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,IAAI;CAGb"}
|
package/dist/vfs.js
CHANGED
|
@@ -106,20 +106,15 @@ export class VirtualFileSystem {
|
|
|
106
106
|
mtime(path) {
|
|
107
107
|
return this.mtimes.get(normalizePath(path));
|
|
108
108
|
}
|
|
109
|
-
/**
|
|
110
|
-
|
|
111
|
-
* path→contents map — or a mix, since each entry is judged on its own.
|
|
112
|
-
*/
|
|
113
|
-
mount(files, at = '/') {
|
|
109
|
+
/** Write many files at once, under `at` (default `/`). A nested object is a directory, created even when empty. */
|
|
110
|
+
writeTree(files, at = '/') {
|
|
114
111
|
for (const [name, entry] of Object.entries(files)) {
|
|
115
112
|
const path = join(at, name);
|
|
116
113
|
if (typeof entry === 'string' || entry instanceof Uint8Array)
|
|
117
114
|
this.writeFile(path, entry);
|
|
118
|
-
else if ('file' in entry)
|
|
119
|
-
this.writeFile(path, entry.file.contents);
|
|
120
115
|
else {
|
|
121
116
|
this.mkdir(path);
|
|
122
|
-
this.
|
|
117
|
+
this.writeTree(entry, path);
|
|
123
118
|
}
|
|
124
119
|
}
|
|
125
120
|
}
|