@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/package.json
CHANGED
package/dist/mjs/connection.mjs
CHANGED
|
@@ -34,7 +34,8 @@ function handleConnection(socket, state) {
|
|
|
34
34
|
nextCallbackId: 1,
|
|
35
35
|
nextStreamId: 1,
|
|
36
36
|
activeStreams: new Map,
|
|
37
|
-
streamReceivers: new Map
|
|
37
|
+
streamReceivers: new Map,
|
|
38
|
+
callbackStreamReceivers: new Map
|
|
38
39
|
};
|
|
39
40
|
state.connections.set(socket, connection);
|
|
40
41
|
const parser = createFrameParser();
|
|
@@ -195,6 +196,15 @@ async function handleMessage(message, connection, state) {
|
|
|
195
196
|
case MessageType.STREAM_ERROR:
|
|
196
197
|
handleStreamError(message, connection);
|
|
197
198
|
break;
|
|
199
|
+
case MessageType.CALLBACK_STREAM_START:
|
|
200
|
+
handleCallbackStreamStart(message, connection);
|
|
201
|
+
break;
|
|
202
|
+
case MessageType.CALLBACK_STREAM_CHUNK:
|
|
203
|
+
handleCallbackStreamChunk(message, connection);
|
|
204
|
+
break;
|
|
205
|
+
case MessageType.CALLBACK_STREAM_END:
|
|
206
|
+
handleCallbackStreamEnd(message, connection);
|
|
207
|
+
break;
|
|
198
208
|
default:
|
|
199
209
|
sendError(connection.socket, message.requestId ?? 0, ErrorCode.UNKNOWN_MESSAGE_TYPE, `Unknown message type: ${message.type}`);
|
|
200
210
|
}
|
|
@@ -386,7 +396,12 @@ async function handleCreateRuntime(message, connection, state) {
|
|
|
386
396
|
throw new Error("Fetch callback not available");
|
|
387
397
|
}
|
|
388
398
|
const serialized = await serializeRequest(request);
|
|
389
|
-
const result = await invokeClientCallback(conn, callbackId, [serialized]);
|
|
399
|
+
const result = await invokeClientCallback(conn, callbackId, [serialized], 60000);
|
|
400
|
+
if (result && typeof result === "object" && result.__streamingResponse) {
|
|
401
|
+
const response = result.response;
|
|
402
|
+
response.__isCallbackStream = true;
|
|
403
|
+
return response;
|
|
404
|
+
}
|
|
390
405
|
return deserializeResponse(result);
|
|
391
406
|
}
|
|
392
407
|
},
|
|
@@ -489,7 +504,7 @@ async function handleCreateRuntime(message, connection, state) {
|
|
|
489
504
|
console: playwrightCallbacks.console,
|
|
490
505
|
onEvent: (event) => {
|
|
491
506
|
if (event.type === "browserConsoleLog" && playwrightCallbacks.onBrowserConsoleLogCallbackId) {
|
|
492
|
-
const promise = invokeClientCallback(connection, playwrightCallbacks.onBrowserConsoleLogCallbackId, [{ level: event.level,
|
|
507
|
+
const promise = invokeClientCallback(connection, playwrightCallbacks.onBrowserConsoleLogCallbackId, [{ level: event.level, stdout: event.stdout, timestamp: event.timestamp }]).catch(() => {});
|
|
493
508
|
pendingCallbacks.push(promise);
|
|
494
509
|
} else if (event.type === "networkRequest" && playwrightCallbacks.onNetworkRequestCallbackId) {
|
|
495
510
|
const promise = invokeClientCallback(connection, playwrightCallbacks.onNetworkRequestCallbackId, [event]).catch(() => {});
|
|
@@ -1434,6 +1449,115 @@ function handleStreamError(message, connection) {
|
|
|
1434
1449
|
session.state = "closed";
|
|
1435
1450
|
connection.activeStreams.delete(message.streamId);
|
|
1436
1451
|
}
|
|
1452
|
+
const callbackReceiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1453
|
+
if (callbackReceiver && callbackReceiver.state === "active") {
|
|
1454
|
+
callbackReceiver.state = "errored";
|
|
1455
|
+
callbackReceiver.error = new Error(message.error);
|
|
1456
|
+
const resolvers = callbackReceiver.pullResolvers.splice(0);
|
|
1457
|
+
for (const resolver of resolvers) {
|
|
1458
|
+
resolver();
|
|
1459
|
+
}
|
|
1460
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
function handleCallbackStreamStart(message, connection) {
|
|
1464
|
+
const receiver = {
|
|
1465
|
+
streamId: message.streamId,
|
|
1466
|
+
requestId: message.requestId,
|
|
1467
|
+
metadata: message.metadata,
|
|
1468
|
+
controller: null,
|
|
1469
|
+
state: "active",
|
|
1470
|
+
pendingChunks: [],
|
|
1471
|
+
pullResolvers: [],
|
|
1472
|
+
controllerFinalized: false
|
|
1473
|
+
};
|
|
1474
|
+
const readableStream = new ReadableStream({
|
|
1475
|
+
start(controller) {
|
|
1476
|
+
receiver.controller = controller;
|
|
1477
|
+
},
|
|
1478
|
+
pull(_controller) {
|
|
1479
|
+
if (receiver.controllerFinalized) {
|
|
1480
|
+
return;
|
|
1481
|
+
}
|
|
1482
|
+
if (receiver.pendingChunks.length > 0) {
|
|
1483
|
+
const chunk = receiver.pendingChunks.shift();
|
|
1484
|
+
receiver.controller.enqueue(chunk);
|
|
1485
|
+
return Promise.resolve();
|
|
1486
|
+
}
|
|
1487
|
+
if (receiver.state === "closed") {
|
|
1488
|
+
if (!receiver.controllerFinalized) {
|
|
1489
|
+
receiver.controllerFinalized = true;
|
|
1490
|
+
receiver.controller.close();
|
|
1491
|
+
}
|
|
1492
|
+
return Promise.resolve();
|
|
1493
|
+
}
|
|
1494
|
+
if (receiver.state === "errored") {
|
|
1495
|
+
if (!receiver.controllerFinalized && receiver.error) {
|
|
1496
|
+
receiver.controllerFinalized = true;
|
|
1497
|
+
receiver.controller.error(receiver.error);
|
|
1498
|
+
}
|
|
1499
|
+
return Promise.resolve();
|
|
1500
|
+
}
|
|
1501
|
+
return new Promise((resolve) => {
|
|
1502
|
+
receiver.pullResolvers.push(resolve);
|
|
1503
|
+
});
|
|
1504
|
+
},
|
|
1505
|
+
cancel(_reason) {
|
|
1506
|
+
receiver.state = "closed";
|
|
1507
|
+
receiver.controllerFinalized = true;
|
|
1508
|
+
const resolvers = receiver.pullResolvers.splice(0);
|
|
1509
|
+
for (const resolver of resolvers) {
|
|
1510
|
+
resolver();
|
|
1511
|
+
}
|
|
1512
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1513
|
+
return Promise.resolve();
|
|
1514
|
+
}
|
|
1515
|
+
});
|
|
1516
|
+
connection.callbackStreamReceivers.set(message.streamId, receiver);
|
|
1517
|
+
const pending = connection.pendingCallbacks.get(message.requestId);
|
|
1518
|
+
if (pending) {
|
|
1519
|
+
connection.pendingCallbacks.delete(message.requestId);
|
|
1520
|
+
if (pending.timeoutId) {
|
|
1521
|
+
clearTimeout(pending.timeoutId);
|
|
1522
|
+
}
|
|
1523
|
+
const response = new Response(readableStream, {
|
|
1524
|
+
status: message.metadata.status,
|
|
1525
|
+
statusText: message.metadata.statusText,
|
|
1526
|
+
headers: message.metadata.headers
|
|
1527
|
+
});
|
|
1528
|
+
pending.resolve({ __streamingResponse: true, response });
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
function handleCallbackStreamChunk(message, connection) {
|
|
1532
|
+
const receiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1533
|
+
if (receiver && receiver.state === "active") {
|
|
1534
|
+
if (receiver.pullResolvers.length > 0) {
|
|
1535
|
+
receiver.controller.enqueue(message.chunk);
|
|
1536
|
+
const resolver = receiver.pullResolvers.shift();
|
|
1537
|
+
resolver();
|
|
1538
|
+
} else {
|
|
1539
|
+
receiver.pendingChunks.push(message.chunk);
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
function handleCallbackStreamEnd(message, connection) {
|
|
1544
|
+
const receiver = connection.callbackStreamReceivers.get(message.streamId);
|
|
1545
|
+
if (receiver) {
|
|
1546
|
+
receiver.state = "closed";
|
|
1547
|
+
while (receiver.pendingChunks.length > 0) {
|
|
1548
|
+
const chunk = receiver.pendingChunks.shift();
|
|
1549
|
+
receiver.controller.enqueue(chunk);
|
|
1550
|
+
}
|
|
1551
|
+
if (!receiver.controllerFinalized) {
|
|
1552
|
+
receiver.controllerFinalized = true;
|
|
1553
|
+
receiver.controller.close();
|
|
1554
|
+
}
|
|
1555
|
+
const resolvers = receiver.pullResolvers.splice(0);
|
|
1556
|
+
for (const resolver of resolvers) {
|
|
1557
|
+
resolver();
|
|
1558
|
+
}
|
|
1559
|
+
connection.callbackStreamReceivers.delete(message.streamId);
|
|
1560
|
+
}
|
|
1437
1561
|
}
|
|
1438
1562
|
function waitForCredit(session) {
|
|
1439
1563
|
return new Promise((resolve) => {
|
|
@@ -1661,4 +1785,4 @@ export {
|
|
|
1661
1785
|
handleConnection
|
|
1662
1786
|
};
|
|
1663
1787
|
|
|
1664
|
-
//# debugId=
|
|
1788
|
+
//# debugId=2A1E0650E9CDD7A964756E2164756E21
|