@cloudflare/sandbox 0.8.1 → 0.8.2
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/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/sandbox-DDDSuWA6.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -844,6 +844,7 @@ var HttpTransport = class extends BaseTransport {
|
|
|
844
844
|
const DEFAULT_REQUEST_TIMEOUT_MS = 12e4;
|
|
845
845
|
const DEFAULT_STREAM_IDLE_TIMEOUT_MS = 3e5;
|
|
846
846
|
const DEFAULT_CONNECT_TIMEOUT_MS = 3e4;
|
|
847
|
+
const DEFAULT_IDLE_DISCONNECT_MS = 1e3;
|
|
847
848
|
const MIN_TIME_FOR_CONNECT_RETRY_MS = 15e3;
|
|
848
849
|
/**
|
|
849
850
|
* WebSocket transport implementation
|
|
@@ -856,6 +857,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
856
857
|
state = "disconnected";
|
|
857
858
|
pendingRequests = /* @__PURE__ */ new Map();
|
|
858
859
|
connectPromise = null;
|
|
860
|
+
idleDisconnectTimer = null;
|
|
859
861
|
boundHandleMessage;
|
|
860
862
|
boundHandleClose;
|
|
861
863
|
constructor(config) {
|
|
@@ -880,6 +882,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
880
882
|
* callers share the same connection attempt.
|
|
881
883
|
*/
|
|
882
884
|
async connect() {
|
|
885
|
+
this.clearIdleDisconnectTimer();
|
|
883
886
|
if (this.isConnected()) return;
|
|
884
887
|
if (this.connectPromise) return this.connectPromise;
|
|
885
888
|
this.connectPromise = this.doConnect();
|
|
@@ -1055,6 +1058,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1055
1058
|
*/
|
|
1056
1059
|
async request(method, path$1, body, headers) {
|
|
1057
1060
|
await this.connect();
|
|
1061
|
+
this.clearIdleDisconnectTimer();
|
|
1058
1062
|
const id = generateRequestId();
|
|
1059
1063
|
const request = {
|
|
1060
1064
|
type: "request",
|
|
@@ -1068,12 +1072,14 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1068
1072
|
const timeoutMs = this.config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
1069
1073
|
const timeoutId = setTimeout(() => {
|
|
1070
1074
|
this.pendingRequests.delete(id);
|
|
1075
|
+
this.scheduleIdleDisconnect();
|
|
1071
1076
|
reject(/* @__PURE__ */ new Error(`Request timeout after ${timeoutMs}ms: ${method} ${path$1}`));
|
|
1072
1077
|
}, timeoutMs);
|
|
1073
1078
|
this.pendingRequests.set(id, {
|
|
1074
1079
|
resolve: (response) => {
|
|
1075
1080
|
clearTimeout(timeoutId);
|
|
1076
1081
|
this.pendingRequests.delete(id);
|
|
1082
|
+
this.scheduleIdleDisconnect();
|
|
1077
1083
|
resolve({
|
|
1078
1084
|
status: response.status,
|
|
1079
1085
|
body: response.body
|
|
@@ -1082,6 +1088,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1082
1088
|
reject: (error) => {
|
|
1083
1089
|
clearTimeout(timeoutId);
|
|
1084
1090
|
this.pendingRequests.delete(id);
|
|
1091
|
+
this.scheduleIdleDisconnect();
|
|
1085
1092
|
reject(error);
|
|
1086
1093
|
},
|
|
1087
1094
|
isStreaming: false,
|
|
@@ -1092,6 +1099,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1092
1099
|
} catch (error) {
|
|
1093
1100
|
clearTimeout(timeoutId);
|
|
1094
1101
|
this.pendingRequests.delete(id);
|
|
1102
|
+
this.scheduleIdleDisconnect();
|
|
1095
1103
|
reject(error instanceof Error ? error : new Error(String(error)));
|
|
1096
1104
|
}
|
|
1097
1105
|
});
|
|
@@ -1112,6 +1120,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1112
1120
|
*/
|
|
1113
1121
|
async requestStream(method, path$1, body, headers) {
|
|
1114
1122
|
await this.connect();
|
|
1123
|
+
this.clearIdleDisconnectTimer();
|
|
1115
1124
|
const id = generateRequestId();
|
|
1116
1125
|
const request = {
|
|
1117
1126
|
type: "request",
|
|
@@ -1128,6 +1137,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1128
1137
|
const createIdleTimeout = () => {
|
|
1129
1138
|
return setTimeout(() => {
|
|
1130
1139
|
this.pendingRequests.delete(id);
|
|
1140
|
+
this.scheduleIdleDisconnect();
|
|
1131
1141
|
const error = /* @__PURE__ */ new Error(`Stream idle timeout after ${idleTimeoutMs}ms: ${method} ${path$1}`);
|
|
1132
1142
|
if (firstMessageReceived) try {
|
|
1133
1143
|
streamController?.error(error);
|
|
@@ -1155,6 +1165,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1155
1165
|
});
|
|
1156
1166
|
}
|
|
1157
1167
|
this.pendingRequests.delete(id);
|
|
1168
|
+
this.scheduleIdleDisconnect();
|
|
1158
1169
|
}
|
|
1159
1170
|
});
|
|
1160
1171
|
this.pendingRequests.set(id, {
|
|
@@ -1162,6 +1173,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1162
1173
|
const pending = this.pendingRequests.get(id);
|
|
1163
1174
|
if (pending?.timeoutId) clearTimeout(pending.timeoutId);
|
|
1164
1175
|
this.pendingRequests.delete(id);
|
|
1176
|
+
this.scheduleIdleDisconnect();
|
|
1165
1177
|
if (!firstMessageReceived) {
|
|
1166
1178
|
firstMessageReceived = true;
|
|
1167
1179
|
if (response.status >= 400) rejectStream(/* @__PURE__ */ new Error(`Stream error: ${response.status} - ${JSON.stringify(response.body)}`));
|
|
@@ -1178,6 +1190,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1178
1190
|
const pending = this.pendingRequests.get(id);
|
|
1179
1191
|
if (pending?.timeoutId) clearTimeout(pending.timeoutId);
|
|
1180
1192
|
this.pendingRequests.delete(id);
|
|
1193
|
+
this.scheduleIdleDisconnect();
|
|
1181
1194
|
if (firstMessageReceived) try {
|
|
1182
1195
|
streamController?.error(error);
|
|
1183
1196
|
} catch {}
|
|
@@ -1202,6 +1215,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1202
1215
|
});
|
|
1203
1216
|
if (pending.timeoutId) clearTimeout(pending.timeoutId);
|
|
1204
1217
|
this.pendingRequests.delete(id);
|
|
1218
|
+
this.scheduleIdleDisconnect();
|
|
1205
1219
|
}
|
|
1206
1220
|
pending.bufferedChunks = void 0;
|
|
1207
1221
|
}
|
|
@@ -1215,6 +1229,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1215
1229
|
} catch (error) {
|
|
1216
1230
|
clearTimeout(timeoutId);
|
|
1217
1231
|
this.pendingRequests.delete(id);
|
|
1232
|
+
this.scheduleIdleDisconnect();
|
|
1218
1233
|
rejectStream(error instanceof Error ? error : new Error(String(error)));
|
|
1219
1234
|
}
|
|
1220
1235
|
});
|
|
@@ -1301,6 +1316,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1301
1316
|
});
|
|
1302
1317
|
if (pending.timeoutId) clearTimeout(pending.timeoutId);
|
|
1303
1318
|
this.pendingRequests.delete(chunk.id);
|
|
1319
|
+
this.scheduleIdleDisconnect();
|
|
1304
1320
|
}
|
|
1305
1321
|
}
|
|
1306
1322
|
/**
|
|
@@ -1312,6 +1328,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1312
1328
|
const idleTimeoutMs = this.config.streamIdleTimeoutMs ?? DEFAULT_STREAM_IDLE_TIMEOUT_MS;
|
|
1313
1329
|
pending.timeoutId = setTimeout(() => {
|
|
1314
1330
|
this.pendingRequests.delete(id);
|
|
1331
|
+
this.scheduleIdleDisconnect();
|
|
1315
1332
|
if (pending.streamController) try {
|
|
1316
1333
|
pending.streamController.error(/* @__PURE__ */ new Error(`Stream idle timeout after ${idleTimeoutMs}ms`));
|
|
1317
1334
|
} catch {}
|
|
@@ -1354,6 +1371,7 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1354
1371
|
* Cleanup resources
|
|
1355
1372
|
*/
|
|
1356
1373
|
cleanup() {
|
|
1374
|
+
this.clearIdleDisconnectTimer();
|
|
1357
1375
|
if (this.ws) {
|
|
1358
1376
|
this.ws.removeEventListener("close", this.boundHandleClose);
|
|
1359
1377
|
this.ws.removeEventListener("message", this.boundHandleMessage);
|
|
@@ -1365,6 +1383,23 @@ var WebSocketTransport = class extends BaseTransport {
|
|
|
1365
1383
|
for (const pending of this.pendingRequests.values()) if (pending.timeoutId) clearTimeout(pending.timeoutId);
|
|
1366
1384
|
this.pendingRequests.clear();
|
|
1367
1385
|
}
|
|
1386
|
+
scheduleIdleDisconnect() {
|
|
1387
|
+
if (!this.isConnected() || this.pendingRequests.size > 0) return;
|
|
1388
|
+
this.clearIdleDisconnectTimer();
|
|
1389
|
+
this.idleDisconnectTimer = setTimeout(() => {
|
|
1390
|
+
this.idleDisconnectTimer = null;
|
|
1391
|
+
if (this.pendingRequests.size === 0 && this.isConnected()) {
|
|
1392
|
+
this.logger.debug("Disconnecting idle WebSocket transport");
|
|
1393
|
+
this.cleanup();
|
|
1394
|
+
}
|
|
1395
|
+
}, DEFAULT_IDLE_DISCONNECT_MS);
|
|
1396
|
+
}
|
|
1397
|
+
clearIdleDisconnectTimer() {
|
|
1398
|
+
if (this.idleDisconnectTimer) {
|
|
1399
|
+
clearTimeout(this.idleDisconnectTimer);
|
|
1400
|
+
this.idleDisconnectTimer = null;
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1368
1403
|
};
|
|
1369
1404
|
|
|
1370
1405
|
//#endregion
|
|
@@ -3591,7 +3626,7 @@ function buildS3fsSource(bucket, prefix) {
|
|
|
3591
3626
|
* This file is auto-updated by .github/changeset-version.ts during releases
|
|
3592
3627
|
* DO NOT EDIT MANUALLY - Changes will be overwritten on the next version bump
|
|
3593
3628
|
*/
|
|
3594
|
-
const SDK_VERSION = "0.8.
|
|
3629
|
+
const SDK_VERSION = "0.8.2";
|
|
3595
3630
|
|
|
3596
3631
|
//#endregion
|
|
3597
3632
|
//#region src/sandbox.ts
|