@ricsam/isolate-daemon 0.1.8 → 0.1.10
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/cjs/connection.cjs +128 -4
- package/dist/cjs/connection.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/mjs/connection.mjs +128 -4
- package/dist/mjs/connection.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/types/types.d.ts +21 -0
- package/package.json +1 -1
package/dist/cjs/connection.cjs
CHANGED
|
@@ -62,7 +62,8 @@ function handleConnection(socket, state) {
|
|
|
62
62
|
nextCallbackId: 1,
|
|
63
63
|
nextStreamId: 1,
|
|
64
64
|
activeStreams: new Map,
|
|
65
|
-
streamReceivers: new Map
|
|
65
|
+
streamReceivers: new Map,
|
|
66
|
+
callbackStreamReceivers: new Map
|
|
66
67
|
};
|
|
67
68
|
state.connections.set(socket, connection);
|
|
68
69
|
const parser = import_isolate_protocol.createFrameParser();
|
|
@@ -223,6 +224,15 @@ async function handleMessage(message, connection, state) {
|
|
|
223
224
|
case import_isolate_protocol.MessageType.STREAM_ERROR:
|
|
224
225
|
handleStreamError(message, connection);
|
|
225
226
|
break;
|
|
227
|
+
case import_isolate_protocol.MessageType.CALLBACK_STREAM_START:
|
|
228
|
+
handleCallbackStreamStart(message, connection);
|
|
229
|
+
break;
|
|
230
|
+
case import_isolate_protocol.MessageType.CALLBACK_STREAM_CHUNK:
|
|
231
|
+
handleCallbackStreamChunk(message, connection);
|
|
232
|
+
break;
|
|
233
|
+
case import_isolate_protocol.MessageType.CALLBACK_STREAM_END:
|
|
234
|
+
handleCallbackStreamEnd(message, connection);
|
|
235
|
+
break;
|
|
226
236
|
default:
|
|
227
237
|
sendError(connection.socket, message.requestId ?? 0, import_isolate_protocol.ErrorCode.UNKNOWN_MESSAGE_TYPE, `Unknown message type: ${message.type}`);
|
|
228
238
|
}
|
|
@@ -414,7 +424,12 @@ async function handleCreateRuntime(message, connection, state) {
|
|
|
414
424
|
throw new Error("Fetch callback not available");
|
|
415
425
|
}
|
|
416
426
|
const serialized = await serializeRequest(request);
|
|
417
|
-
const result = await invokeClientCallback(conn, callbackId, [serialized]);
|
|
427
|
+
const result = await invokeClientCallback(conn, callbackId, [serialized], 60000);
|
|
428
|
+
if (result && typeof result === "object" && result.__streamingResponse) {
|
|
429
|
+
const response = result.response;
|
|
430
|
+
response.__isCallbackStream = true;
|
|
431
|
+
return response;
|
|
432
|
+
}
|
|
418
433
|
return deserializeResponse(result);
|
|
419
434
|
}
|
|
420
435
|
},
|
|
@@ -517,7 +532,7 @@ async function handleCreateRuntime(message, connection, state) {
|
|
|
517
532
|
console: playwrightCallbacks.console,
|
|
518
533
|
onEvent: (event) => {
|
|
519
534
|
if (event.type === "browserConsoleLog" && playwrightCallbacks.onBrowserConsoleLogCallbackId) {
|
|
520
|
-
const promise = invokeClientCallback(connection, playwrightCallbacks.onBrowserConsoleLogCallbackId, [{ level: event.level,
|
|
535
|
+
const promise = invokeClientCallback(connection, playwrightCallbacks.onBrowserConsoleLogCallbackId, [{ level: event.level, stdout: event.stdout, timestamp: event.timestamp }]).catch(() => {});
|
|
521
536
|
pendingCallbacks.push(promise);
|
|
522
537
|
} else if (event.type === "networkRequest" && playwrightCallbacks.onNetworkRequestCallbackId) {
|
|
523
538
|
const promise = invokeClientCallback(connection, playwrightCallbacks.onNetworkRequestCallbackId, [event]).catch(() => {});
|
|
@@ -1462,6 +1477,115 @@ function handleStreamError(message, connection) {
|
|
|
1462
1477
|
session.state = "closed";
|
|
1463
1478
|
connection.activeStreams.delete(message.streamId);
|
|
1464
1479
|
}
|
|
1480
|
+
const callbackReceiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1481
|
+
if (callbackReceiver && callbackReceiver.state === "active") {
|
|
1482
|
+
callbackReceiver.state = "errored";
|
|
1483
|
+
callbackReceiver.error = new Error(message.error);
|
|
1484
|
+
const resolvers = callbackReceiver.pullResolvers.splice(0);
|
|
1485
|
+
for (const resolver of resolvers) {
|
|
1486
|
+
resolver();
|
|
1487
|
+
}
|
|
1488
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
function handleCallbackStreamStart(message, connection) {
|
|
1492
|
+
const receiver = {
|
|
1493
|
+
streamId: message.streamId,
|
|
1494
|
+
requestId: message.requestId,
|
|
1495
|
+
metadata: message.metadata,
|
|
1496
|
+
controller: null,
|
|
1497
|
+
state: "active",
|
|
1498
|
+
pendingChunks: [],
|
|
1499
|
+
pullResolvers: [],
|
|
1500
|
+
controllerFinalized: false
|
|
1501
|
+
};
|
|
1502
|
+
const readableStream = new ReadableStream({
|
|
1503
|
+
start(controller) {
|
|
1504
|
+
receiver.controller = controller;
|
|
1505
|
+
},
|
|
1506
|
+
pull(_controller) {
|
|
1507
|
+
if (receiver.controllerFinalized) {
|
|
1508
|
+
return;
|
|
1509
|
+
}
|
|
1510
|
+
if (receiver.pendingChunks.length > 0) {
|
|
1511
|
+
const chunk = receiver.pendingChunks.shift();
|
|
1512
|
+
receiver.controller.enqueue(chunk);
|
|
1513
|
+
return Promise.resolve();
|
|
1514
|
+
}
|
|
1515
|
+
if (receiver.state === "closed") {
|
|
1516
|
+
if (!receiver.controllerFinalized) {
|
|
1517
|
+
receiver.controllerFinalized = true;
|
|
1518
|
+
receiver.controller.close();
|
|
1519
|
+
}
|
|
1520
|
+
return Promise.resolve();
|
|
1521
|
+
}
|
|
1522
|
+
if (receiver.state === "errored") {
|
|
1523
|
+
if (!receiver.controllerFinalized && receiver.error) {
|
|
1524
|
+
receiver.controllerFinalized = true;
|
|
1525
|
+
receiver.controller.error(receiver.error);
|
|
1526
|
+
}
|
|
1527
|
+
return Promise.resolve();
|
|
1528
|
+
}
|
|
1529
|
+
return new Promise((resolve) => {
|
|
1530
|
+
receiver.pullResolvers.push(resolve);
|
|
1531
|
+
});
|
|
1532
|
+
},
|
|
1533
|
+
cancel(_reason) {
|
|
1534
|
+
receiver.state = "closed";
|
|
1535
|
+
receiver.controllerFinalized = true;
|
|
1536
|
+
const resolvers = receiver.pullResolvers.splice(0);
|
|
1537
|
+
for (const resolver of resolvers) {
|
|
1538
|
+
resolver();
|
|
1539
|
+
}
|
|
1540
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1541
|
+
return Promise.resolve();
|
|
1542
|
+
}
|
|
1543
|
+
});
|
|
1544
|
+
connection.callbackStreamReceivers.set(message.streamId, receiver);
|
|
1545
|
+
const pending = connection.pendingCallbacks.get(message.requestId);
|
|
1546
|
+
if (pending) {
|
|
1547
|
+
connection.pendingCallbacks.delete(message.requestId);
|
|
1548
|
+
if (pending.timeoutId) {
|
|
1549
|
+
clearTimeout(pending.timeoutId);
|
|
1550
|
+
}
|
|
1551
|
+
const response = new Response(readableStream, {
|
|
1552
|
+
status: message.metadata.status,
|
|
1553
|
+
statusText: message.metadata.statusText,
|
|
1554
|
+
headers: message.metadata.headers
|
|
1555
|
+
});
|
|
1556
|
+
pending.resolve({ __streamingResponse: true, response });
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
function handleCallbackStreamChunk(message, connection) {
|
|
1560
|
+
const receiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1561
|
+
if (receiver && receiver.state === "active") {
|
|
1562
|
+
if (receiver.pullResolvers.length > 0) {
|
|
1563
|
+
receiver.controller.enqueue(message.chunk);
|
|
1564
|
+
const resolver = receiver.pullResolvers.shift();
|
|
1565
|
+
resolver();
|
|
1566
|
+
} else {
|
|
1567
|
+
receiver.pendingChunks.push(message.chunk);
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
function handleCallbackStreamEnd(message, connection) {
|
|
1572
|
+
const receiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1573
|
+
if (receiver) {
|
|
1574
|
+
receiver.state = "closed";
|
|
1575
|
+
while (receiver.pendingChunks.length > 0) {
|
|
1576
|
+
const chunk = receiver.pendingChunks.shift();
|
|
1577
|
+
receiver.controller.enqueue(chunk);
|
|
1578
|
+
}
|
|
1579
|
+
if (!receiver.controllerFinalized) {
|
|
1580
|
+
receiver.controllerFinalized = true;
|
|
1581
|
+
receiver.controller.close();
|
|
1582
|
+
}
|
|
1583
|
+
const resolvers = receiver.pullResolvers.splice(0);
|
|
1584
|
+
for (const resolver of resolvers) {
|
|
1585
|
+
resolver();
|
|
1586
|
+
}
|
|
1587
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1588
|
+
}
|
|
1465
1589
|
}
|
|
1466
1590
|
function waitForCredit(session) {
|
|
1467
1591
|
return new Promise((resolve) => {
|
|
@@ -1686,4 +1810,4 @@ async function handleClearCollectedData(message, connection, state) {
|
|
|
1686
1810
|
}
|
|
1687
1811
|
}
|
|
1688
1812
|
|
|
1689
|
-
//# debugId=
|
|
1813
|
+
//# debugId=DE5E35C70F14FD3964756E2164756E21
|