@phpsandbox/sdk 0.0.30 → 0.0.33
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 +19 -0
- package/dist/browser/phpsandbox-sdk.esm.js +58 -9
- package/dist/browser/phpsandbox-sdk.esm.js.map +2 -2
- package/dist/browser/phpsandbox-sdk.esm.min.js +2 -2
- package/dist/browser/phpsandbox-sdk.esm.min.js.map +3 -3
- package/dist/browser/phpsandbox-sdk.iife.js +58 -9
- package/dist/browser/phpsandbox-sdk.iife.js.map +2 -2
- package/dist/browser/phpsandbox-sdk.iife.min.js +2 -2
- package/dist/browser/phpsandbox-sdk.iife.min.js.map +3 -3
- package/dist/index.d.ts +14 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/services.d.ts +14 -7
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +7 -2
- package/dist/services.js.map +1 -1
- package/dist/socket/index.d.ts +1 -0
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +31 -3
- package/dist/socket/index.js.map +1 -1
- package/dist/terminal.d.ts.map +1 -1
- package/dist/terminal.js +16 -3
- package/dist/terminal.js.map +1 -1
- package/package.json +2 -2
|
@@ -345,6 +345,8 @@ var PHPSandbox = (() => {
|
|
|
345
345
|
Transport: () => Transport,
|
|
346
346
|
createBeacon: () => createBeacon,
|
|
347
347
|
isBeaconSupported: () => isBeaconSupported,
|
|
348
|
+
notebookBuiltinServices: () => notebookBuiltinServices,
|
|
349
|
+
notebookKnownServices: () => notebookKnownServices,
|
|
348
350
|
once: () => once,
|
|
349
351
|
timeout: () => timeout
|
|
350
352
|
});
|
|
@@ -682,19 +684,30 @@ var PHPSandbox = (() => {
|
|
|
682
684
|
},
|
|
683
685
|
close: dispose
|
|
684
686
|
});
|
|
687
|
+
let controller = null;
|
|
685
688
|
const output = new ReadableStream({
|
|
686
|
-
start: (
|
|
689
|
+
start: (_controller) => {
|
|
690
|
+
controller = _controller;
|
|
687
691
|
disposables.add(
|
|
688
692
|
this.listen(`terminal.output.${id}`, (data) => {
|
|
689
|
-
controller
|
|
693
|
+
controller?.enqueue(data.output);
|
|
690
694
|
})
|
|
691
695
|
);
|
|
692
696
|
},
|
|
693
|
-
cancel:
|
|
697
|
+
cancel: () => {
|
|
698
|
+
controller = null;
|
|
699
|
+
dispose();
|
|
700
|
+
}
|
|
694
701
|
});
|
|
695
702
|
const exit = new Promise((resolve) => {
|
|
696
703
|
disposables.add(
|
|
697
704
|
this.listen(`terminal.close.${id}`, (data) => {
|
|
705
|
+
if (controller) {
|
|
706
|
+
try {
|
|
707
|
+
controller.close();
|
|
708
|
+
} catch {
|
|
709
|
+
}
|
|
710
|
+
}
|
|
698
711
|
dispose();
|
|
699
712
|
resolve(data.exitCode);
|
|
700
713
|
})
|
|
@@ -1070,6 +1083,8 @@ var PHPSandbox = (() => {
|
|
|
1070
1083
|
};
|
|
1071
1084
|
|
|
1072
1085
|
// src/services.ts
|
|
1086
|
+
var notebookBuiltinServices = ["redis"];
|
|
1087
|
+
var notebookKnownServices = ["start", "nginx", ...notebookBuiltinServices];
|
|
1073
1088
|
var Services = class {
|
|
1074
1089
|
constructor(okra) {
|
|
1075
1090
|
this.okra = okra;
|
|
@@ -1077,8 +1092,11 @@ var PHPSandbox = (() => {
|
|
|
1077
1092
|
list() {
|
|
1078
1093
|
return this.okra.invoke("service.list");
|
|
1079
1094
|
}
|
|
1080
|
-
run(name) {
|
|
1081
|
-
return this.okra.invoke("service.run", {
|
|
1095
|
+
run(name, command) {
|
|
1096
|
+
return this.okra.invoke("service.run", {
|
|
1097
|
+
name,
|
|
1098
|
+
command
|
|
1099
|
+
});
|
|
1082
1100
|
}
|
|
1083
1101
|
stop(name) {
|
|
1084
1102
|
return this.okra.invoke("service.stop", { name });
|
|
@@ -3220,7 +3238,7 @@ var PHPSandbox = (() => {
|
|
|
3220
3238
|
this.connectionStats.connectionStartTime = Date.now();
|
|
3221
3239
|
const startClosed = options.startClosed !== false;
|
|
3222
3240
|
this.rws = new reconnecting_websocket_mjs_default(this.url.toString(), [], {
|
|
3223
|
-
WebSocket: globalThis.WebSocket ?? browser_default,
|
|
3241
|
+
WebSocket: options.webSocket ?? globalThis.WebSocket ?? browser_default,
|
|
3224
3242
|
connectionTimeout: options.connectionTimeout,
|
|
3225
3243
|
maxReconnectionDelay: 2e3,
|
|
3226
3244
|
minReconnectionDelay: 200,
|
|
@@ -3275,7 +3293,19 @@ var PHPSandbox = (() => {
|
|
|
3275
3293
|
async registerWatchers() {
|
|
3276
3294
|
const onMessage = (ev) => {
|
|
3277
3295
|
if (!(ev.data instanceof Blob)) {
|
|
3278
|
-
|
|
3296
|
+
const error = new Error("Unexpected message type: " + typeof ev.data);
|
|
3297
|
+
this.connectionStats.totalErrors++;
|
|
3298
|
+
this.log("error", "Unexpected WebSocket message type", {
|
|
3299
|
+
error: error.message,
|
|
3300
|
+
messageType: typeof ev.data
|
|
3301
|
+
});
|
|
3302
|
+
this.eventEmitter.emit("transport.error", {
|
|
3303
|
+
type: "message_type_error",
|
|
3304
|
+
error,
|
|
3305
|
+
rawMessage: ev.data,
|
|
3306
|
+
timestamp: Date.now()
|
|
3307
|
+
});
|
|
3308
|
+
return;
|
|
3279
3309
|
}
|
|
3280
3310
|
ev.data.arrayBuffer().then((buffer) => {
|
|
3281
3311
|
if (buffer.byteLength === 0) {
|
|
@@ -3283,7 +3313,19 @@ var PHPSandbox = (() => {
|
|
|
3283
3313
|
return;
|
|
3284
3314
|
}
|
|
3285
3315
|
try {
|
|
3286
|
-
this.handleRawMessage(decode(buffer))
|
|
3316
|
+
void this.handleRawMessage(decode(buffer)).catch((error) => {
|
|
3317
|
+
this.connectionStats.totalErrors++;
|
|
3318
|
+
this.log("error", "Failed to process WebSocket frame", {
|
|
3319
|
+
error: error instanceof Error ? error.message : String(error),
|
|
3320
|
+
byteLength: buffer.byteLength
|
|
3321
|
+
});
|
|
3322
|
+
this.eventEmitter.emit("transport.error", {
|
|
3323
|
+
type: "message_handle_error",
|
|
3324
|
+
error,
|
|
3325
|
+
rawMessage: buffer,
|
|
3326
|
+
timestamp: Date.now()
|
|
3327
|
+
});
|
|
3328
|
+
});
|
|
3287
3329
|
} catch (error) {
|
|
3288
3330
|
this.connectionStats.totalErrors++;
|
|
3289
3331
|
this.log("error", "Failed to decode WebSocket frame", {
|
|
@@ -3307,6 +3349,10 @@ var PHPSandbox = (() => {
|
|
|
3307
3349
|
});
|
|
3308
3350
|
}
|
|
3309
3351
|
async handleRawMessage(ev) {
|
|
3352
|
+
if (this.closed) {
|
|
3353
|
+
this.log("debug", "Ignoring message received after transport was closed");
|
|
3354
|
+
return;
|
|
3355
|
+
}
|
|
3310
3356
|
if (typeof ev !== "object" || ev === null) {
|
|
3311
3357
|
this.log("debug", "Received invalid message format", { ev });
|
|
3312
3358
|
return;
|
|
@@ -4968,7 +5014,8 @@ var PHPSandbox = (() => {
|
|
|
4968
5014
|
this.emitter = EventManager.createInstance();
|
|
4969
5015
|
this.socket = new Transport(data.okraUrl, this.emitter, {
|
|
4970
5016
|
debug: client.options.debug,
|
|
4971
|
-
startClosed: client.options.startClosed
|
|
5017
|
+
startClosed: client.options.startClosed,
|
|
5018
|
+
webSocket: client.options.webSocket
|
|
4972
5019
|
});
|
|
4973
5020
|
this.watchConnection();
|
|
4974
5021
|
__privateSet(this, _initPromise, __privateMethod(this, _NotebookInstance_instances, init_fn).call(this));
|
|
@@ -5136,6 +5183,8 @@ var PHPSandbox = (() => {
|
|
|
5136
5183
|
reject(error);
|
|
5137
5184
|
});
|
|
5138
5185
|
}));
|
|
5186
|
+
void __privateGet(this, _initPromise).catch(() => {
|
|
5187
|
+
});
|
|
5139
5188
|
return __privateGet(this, _initPromise);
|
|
5140
5189
|
};
|
|
5141
5190
|
var NotebookSecrets = class {
|