@sandboxxjs/core 2.0.1 → 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.
- package/CHANGELOG.md +12 -0
- package/dist/create-client.d.ts.map +1 -1
- package/dist/create-client.js +10 -3
- package/dist/create-client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/provider.d.ts +16 -5
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +3 -3
- package/package.json +1 -1
- package/src/create-client.ts +12 -3
- package/src/index.ts +1 -0
- package/src/provider.ts +17 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @sandboxxjs/core
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 5c1c1a9: Add SandboxBootstrap component to Provider — Step 2: Prepare.
|
|
8
|
+
|
|
9
|
+
- SandboxProvider now requires createBootstrap() method
|
|
10
|
+
- web-provider: bootstrap boots WebContainer internally, no need to import @webcontainer/api
|
|
11
|
+
- node-provider: bootstrap is no-op (container already running)
|
|
12
|
+
- createSandboxClient calls bootstrap.boot() before creating other components
|
|
13
|
+
- Removed custom WebContainer type definitions, using @webcontainer/api directly
|
|
14
|
+
|
|
3
15
|
## 2.0.1
|
|
4
16
|
|
|
5
17
|
## 2.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,UAAU,CAAC;AAQpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,UAAU,CAAC;AAQpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,CAiL5E"}
|
package/dist/create-client.js
CHANGED
|
@@ -6,14 +6,21 @@
|
|
|
6
6
|
* Executor, FileSystem, and ProcessManager components.
|
|
7
7
|
*/
|
|
8
8
|
export function createSandboxClient(provider) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const bootstrap = provider.createBootstrap();
|
|
10
|
+
let executor;
|
|
11
|
+
let fs;
|
|
12
|
+
let pm;
|
|
12
13
|
let ws = null;
|
|
13
14
|
let heartbeatTimer = null;
|
|
14
15
|
let isConnected = false;
|
|
15
16
|
async function connect(options) {
|
|
16
17
|
const { wsUrl, sandboxId, token, heartbeatInterval = 30_000 } = options;
|
|
18
|
+
// Step 2: Prepare — boot the sandbox environment
|
|
19
|
+
await bootstrap.boot();
|
|
20
|
+
// Create components after bootstrap (environment is now ready)
|
|
21
|
+
executor = provider.createExecutor();
|
|
22
|
+
fs = provider.createFileSystem();
|
|
23
|
+
pm = provider.createProcessManager();
|
|
17
24
|
return new Promise((resolve, reject) => {
|
|
18
25
|
ws = new WebSocket(wsUrl);
|
|
19
26
|
ws.onopen = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,MAAM,
|
|
1
|
+
{"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
export type { AllocateRequest, SandboxAllocator, SandboxContainer, SandboxContainerType, SandboxStatus, } from "./allocator";
|
|
20
20
|
export type { SandboxClient, SandboxClientOptions } from "./client";
|
|
21
21
|
export { createSandboxClient } from "./create-client";
|
|
22
|
-
export type { SandboxExecutor, SandboxFileSystem, SandboxProcessManager, SandboxProvider, } from "./provider";
|
|
22
|
+
export type { SandboxBootstrap, SandboxExecutor, SandboxFileSystem, SandboxProcessManager, SandboxProvider, } from "./provider";
|
|
23
23
|
export type { SandboxConnection, SandboxRegistry } from "./registry";
|
|
24
24
|
export type { SandboxRouter } from "./router";
|
|
25
25
|
export type { ExecOptions, ExecResult, FileInfo, ProcessInfo, Sandbox } from "./sandbox";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
* SandboxProvider — platform capability injection.
|
|
3
3
|
*
|
|
4
4
|
* Provider is a component factory that supplies platform-specific
|
|
5
|
-
* implementations of Executor, FileSystem, and ProcessManager.
|
|
5
|
+
* implementations of Bootstrap, Executor, FileSystem, and ProcessManager.
|
|
6
6
|
*
|
|
7
7
|
* The core layer (createSandboxClient) only depends on this interface.
|
|
8
8
|
* Platform differences are isolated in provider implementations:
|
|
9
|
-
* - node-provider: child_process + node:fs
|
|
10
|
-
* - web-provider: @webcontainer/api
|
|
9
|
+
* - node-provider: child_process + node:fs (bootstrap is no-op)
|
|
10
|
+
* - web-provider: @webcontainer/api (bootstrap boots WebContainer)
|
|
11
11
|
* - Future: Docker, SSH, etc.
|
|
12
12
|
*/
|
|
13
13
|
import type { ExecOptions, ExecResult, FileInfo, ProcessInfo } from "./sandbox";
|
|
14
|
+
/**
|
|
15
|
+
* Bootstrap component — Step 2: Prepare.
|
|
16
|
+
*
|
|
17
|
+
* Initializes the sandbox environment before other components can work.
|
|
18
|
+
* For cloud containers this is a no-op (container is already running).
|
|
19
|
+
* For WebContainer this boots the runtime in the browser.
|
|
20
|
+
*/
|
|
21
|
+
export interface SandboxBootstrap {
|
|
22
|
+
boot(): Promise<void>;
|
|
23
|
+
}
|
|
14
24
|
/**
|
|
15
25
|
* Command execution component.
|
|
16
26
|
*/
|
|
@@ -43,10 +53,11 @@ export interface SandboxProcessManager {
|
|
|
43
53
|
* SandboxProvider — the component factory.
|
|
44
54
|
*
|
|
45
55
|
* Each platform implements this interface to provide its components.
|
|
46
|
-
* createSandboxClient(provider)
|
|
47
|
-
*
|
|
56
|
+
* createSandboxClient(provider) calls bootstrap.boot() first,
|
|
57
|
+
* then obtains other components and dispatches incoming messages.
|
|
48
58
|
*/
|
|
49
59
|
export interface SandboxProvider {
|
|
60
|
+
createBootstrap(): SandboxBootstrap;
|
|
50
61
|
createExecutor(): SandboxExecutor;
|
|
51
62
|
createFileSystem(): SandboxFileSystem;
|
|
52
63
|
createProcessManager(): SandboxProcessManager;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,IAAI,eAAe,CAAC;IAClC,gBAAgB,IAAI,iBAAiB,CAAC;IACtC,oBAAoB,IAAI,qBAAqB,CAAC;CAC/C"}
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,IAAI,gBAAgB,CAAC;IACpC,cAAc,IAAI,eAAe,CAAC;IAClC,gBAAgB,IAAI,iBAAiB,CAAC;IACtC,oBAAoB,IAAI,qBAAqB,CAAC;CAC/C"}
|
package/dist/provider.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* SandboxProvider — platform capability injection.
|
|
3
3
|
*
|
|
4
4
|
* Provider is a component factory that supplies platform-specific
|
|
5
|
-
* implementations of Executor, FileSystem, and ProcessManager.
|
|
5
|
+
* implementations of Bootstrap, Executor, FileSystem, and ProcessManager.
|
|
6
6
|
*
|
|
7
7
|
* The core layer (createSandboxClient) only depends on this interface.
|
|
8
8
|
* Platform differences are isolated in provider implementations:
|
|
9
|
-
* - node-provider: child_process + node:fs
|
|
10
|
-
* - web-provider: @webcontainer/api
|
|
9
|
+
* - node-provider: child_process + node:fs (bootstrap is no-op)
|
|
10
|
+
* - web-provider: @webcontainer/api (bootstrap boots WebContainer)
|
|
11
11
|
* - Future: Docker, SSH, etc.
|
|
12
12
|
*/
|
|
13
13
|
export {};
|
package/package.json
CHANGED
package/src/create-client.ts
CHANGED
|
@@ -17,10 +17,11 @@ import type {
|
|
|
17
17
|
import type { SandboxProvider } from "./provider";
|
|
18
18
|
|
|
19
19
|
export function createSandboxClient(provider: SandboxProvider): SandboxClient {
|
|
20
|
-
const
|
|
21
|
-
const fs = provider.createFileSystem();
|
|
22
|
-
const pm = provider.createProcessManager();
|
|
20
|
+
const bootstrap = provider.createBootstrap();
|
|
23
21
|
|
|
22
|
+
let executor: ReturnType<SandboxProvider["createExecutor"]>;
|
|
23
|
+
let fs: ReturnType<SandboxProvider["createFileSystem"]>;
|
|
24
|
+
let pm: ReturnType<SandboxProvider["createProcessManager"]>;
|
|
24
25
|
let ws: WebSocket | null = null;
|
|
25
26
|
let heartbeatTimer: ReturnType<typeof setInterval> | null = null;
|
|
26
27
|
let isConnected = false;
|
|
@@ -28,6 +29,14 @@ export function createSandboxClient(provider: SandboxProvider): SandboxClient {
|
|
|
28
29
|
async function connect(options: SandboxClientOptions): Promise<void> {
|
|
29
30
|
const { wsUrl, sandboxId, token, heartbeatInterval = 30_000 } = options;
|
|
30
31
|
|
|
32
|
+
// Step 2: Prepare — boot the sandbox environment
|
|
33
|
+
await bootstrap.boot();
|
|
34
|
+
|
|
35
|
+
// Create components after bootstrap (environment is now ready)
|
|
36
|
+
executor = provider.createExecutor();
|
|
37
|
+
fs = provider.createFileSystem();
|
|
38
|
+
pm = provider.createProcessManager();
|
|
39
|
+
|
|
31
40
|
return new Promise((resolve, reject) => {
|
|
32
41
|
ws = new WebSocket(wsUrl);
|
|
33
42
|
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ export type { SandboxClient, SandboxClientOptions } from "./client";
|
|
|
31
31
|
export { createSandboxClient } from "./create-client";
|
|
32
32
|
// Provider — Platform capability injection
|
|
33
33
|
export type {
|
|
34
|
+
SandboxBootstrap,
|
|
34
35
|
SandboxExecutor,
|
|
35
36
|
SandboxFileSystem,
|
|
36
37
|
SandboxProcessManager,
|
package/src/provider.ts
CHANGED
|
@@ -2,17 +2,28 @@
|
|
|
2
2
|
* SandboxProvider — platform capability injection.
|
|
3
3
|
*
|
|
4
4
|
* Provider is a component factory that supplies platform-specific
|
|
5
|
-
* implementations of Executor, FileSystem, and ProcessManager.
|
|
5
|
+
* implementations of Bootstrap, Executor, FileSystem, and ProcessManager.
|
|
6
6
|
*
|
|
7
7
|
* The core layer (createSandboxClient) only depends on this interface.
|
|
8
8
|
* Platform differences are isolated in provider implementations:
|
|
9
|
-
* - node-provider: child_process + node:fs
|
|
10
|
-
* - web-provider: @webcontainer/api
|
|
9
|
+
* - node-provider: child_process + node:fs (bootstrap is no-op)
|
|
10
|
+
* - web-provider: @webcontainer/api (bootstrap boots WebContainer)
|
|
11
11
|
* - Future: Docker, SSH, etc.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { ExecOptions, ExecResult, FileInfo, ProcessInfo } from "./sandbox";
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Bootstrap component — Step 2: Prepare.
|
|
18
|
+
*
|
|
19
|
+
* Initializes the sandbox environment before other components can work.
|
|
20
|
+
* For cloud containers this is a no-op (container is already running).
|
|
21
|
+
* For WebContainer this boots the runtime in the browser.
|
|
22
|
+
*/
|
|
23
|
+
export interface SandboxBootstrap {
|
|
24
|
+
boot(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
|
|
16
27
|
/**
|
|
17
28
|
* Command execution component.
|
|
18
29
|
*/
|
|
@@ -44,10 +55,11 @@ export interface SandboxProcessManager {
|
|
|
44
55
|
* SandboxProvider — the component factory.
|
|
45
56
|
*
|
|
46
57
|
* Each platform implements this interface to provide its components.
|
|
47
|
-
* createSandboxClient(provider)
|
|
48
|
-
*
|
|
58
|
+
* createSandboxClient(provider) calls bootstrap.boot() first,
|
|
59
|
+
* then obtains other components and dispatches incoming messages.
|
|
49
60
|
*/
|
|
50
61
|
export interface SandboxProvider {
|
|
62
|
+
createBootstrap(): SandboxBootstrap;
|
|
51
63
|
createExecutor(): SandboxExecutor;
|
|
52
64
|
createFileSystem(): SandboxFileSystem;
|
|
53
65
|
createProcessManager(): SandboxProcessManager;
|