@ricsam/isolate 0.1.11 → 0.1.12

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.
Files changed (60) hide show
  1. package/README.md +86 -1
  2. package/dist/cjs/bridge/runtime-bindings.cjs +28 -1
  3. package/dist/cjs/bridge/runtime-bindings.cjs.map +3 -3
  4. package/dist/cjs/bridge/sandbox-isolate.cjs +100 -1
  5. package/dist/cjs/bridge/sandbox-isolate.cjs.map +3 -3
  6. package/dist/cjs/host/create-isolate-host.cjs +80 -1
  7. package/dist/cjs/host/create-isolate-host.cjs.map +3 -3
  8. package/dist/cjs/host/nested-host-controller.cjs +61 -3
  9. package/dist/cjs/host/nested-host-controller.cjs.map +3 -3
  10. package/dist/cjs/index.cjs.map +1 -1
  11. package/dist/cjs/internal/browser-source.cjs +16 -5
  12. package/dist/cjs/internal/browser-source.cjs.map +3 -3
  13. package/dist/cjs/internal/client/connection.cjs +12 -1
  14. package/dist/cjs/internal/client/connection.cjs.map +3 -3
  15. package/dist/cjs/internal/daemon/connection.cjs +28 -10
  16. package/dist/cjs/internal/daemon/connection.cjs.map +3 -3
  17. package/dist/cjs/internal/protocol/types.cjs +2 -1
  18. package/dist/cjs/internal/protocol/types.cjs.map +3 -3
  19. package/dist/cjs/internal/typecheck/isolate-types.cjs +33 -1
  20. package/dist/cjs/internal/typecheck/isolate-types.cjs.map +3 -3
  21. package/dist/cjs/package.json +1 -1
  22. package/dist/cjs/playwright.cjs +76 -0
  23. package/dist/cjs/playwright.cjs.map +10 -0
  24. package/dist/cjs/runtime/namespaced-runtime.cjs +181 -0
  25. package/dist/cjs/runtime/namespaced-runtime.cjs.map +10 -0
  26. package/dist/mjs/bridge/runtime-bindings.mjs +28 -1
  27. package/dist/mjs/bridge/runtime-bindings.mjs.map +3 -3
  28. package/dist/mjs/bridge/sandbox-isolate.mjs +100 -1
  29. package/dist/mjs/bridge/sandbox-isolate.mjs.map +3 -3
  30. package/dist/mjs/host/create-isolate-host.mjs +80 -1
  31. package/dist/mjs/host/create-isolate-host.mjs.map +3 -3
  32. package/dist/mjs/host/nested-host-controller.mjs +61 -3
  33. package/dist/mjs/host/nested-host-controller.mjs.map +3 -3
  34. package/dist/mjs/index.mjs.map +1 -1
  35. package/dist/mjs/internal/browser-source.mjs +16 -5
  36. package/dist/mjs/internal/browser-source.mjs.map +3 -3
  37. package/dist/mjs/internal/client/connection.mjs +12 -1
  38. package/dist/mjs/internal/client/connection.mjs.map +3 -3
  39. package/dist/mjs/internal/daemon/connection.mjs +28 -10
  40. package/dist/mjs/internal/daemon/connection.mjs.map +3 -3
  41. package/dist/mjs/internal/protocol/types.mjs +2 -1
  42. package/dist/mjs/internal/protocol/types.mjs.map +3 -3
  43. package/dist/mjs/internal/typecheck/isolate-types.mjs +33 -1
  44. package/dist/mjs/internal/typecheck/isolate-types.mjs.map +3 -3
  45. package/dist/mjs/package.json +1 -1
  46. package/dist/mjs/playwright.mjs +47 -0
  47. package/dist/mjs/playwright.mjs.map +10 -0
  48. package/dist/mjs/runtime/namespaced-runtime.mjs +143 -0
  49. package/dist/mjs/runtime/namespaced-runtime.mjs.map +10 -0
  50. package/dist/types/bridge/sandbox-isolate.d.ts +9 -3
  51. package/dist/types/host/nested-host-controller.d.ts +5 -1
  52. package/dist/types/index.d.ts +1 -1
  53. package/dist/types/internal/browser-source.d.ts +1 -2
  54. package/dist/types/internal/client/types.d.ts +4 -0
  55. package/dist/types/internal/protocol/types.d.ts +8 -1
  56. package/dist/types/internal/typecheck/isolate-types.d.ts +2 -2
  57. package/dist/types/playwright.d.ts +26 -0
  58. package/dist/types/runtime/namespaced-runtime.d.ts +11 -0
  59. package/dist/types/types.d.ts +45 -3
  60. package/package.json +6 -1
@@ -181,6 +181,9 @@ async function handleMessage(message, connection, state) {
181
181
  case MessageType.DISPOSE_RUNTIME:
182
182
  await handleDisposeRuntime(message, connection, state);
183
183
  break;
184
+ case MessageType.DISPOSE_NAMESPACE:
185
+ await handleDisposeNamespace(message, connection, state);
186
+ break;
184
187
  case MessageType.EVAL:
185
188
  await handleEval(message, connection, state);
186
189
  break;
@@ -334,6 +337,7 @@ async function hardDeleteRuntime(instance, state, reason) {
334
337
  }
335
338
  await instance.runtime.dispose();
336
339
  } finally {
340
+ detachRuntimeFromOwningConnection(instance, state);
337
341
  state.isolates.delete(instance.isolateId);
338
342
  if (instance.namespaceId != null) {
339
343
  const indexed = state.namespacedRuntimes.get(instance.namespaceId);
@@ -356,6 +360,12 @@ async function hardDeleteRuntime(instance, state, reason) {
356
360
  logRuntimeLifecycle(state, wasPooled ? "evicted pooled" : "hard-disposed", instance, reason);
357
361
  }
358
362
  }
363
+ function detachRuntimeFromOwningConnection(instance, state) {
364
+ if (!instance.ownerConnection) {
365
+ return;
366
+ }
367
+ state.connections.get(instance.ownerConnection)?.isolates.delete(instance.isolateId);
368
+ }
359
369
  var RECONNECTION_TIMEOUT_MS = 30000;
360
370
  function softDeleteRuntime(instance, state, reason) {
361
371
  const runtimeAbortWasAborted = instance.runtimeAbortController?.signal.aborted ?? false;
@@ -583,14 +593,7 @@ async function handleCreateRuntime(message, connection, state) {
583
593
  const existing = state.namespacedRuntimes.get(namespaceId);
584
594
  if (existing) {
585
595
  if (!existing.isDisposed) {
586
- if (existing.ownerConnection === connection.socket) {
587
- sendOk(connection.socket, message.requestId, {
588
- isolateId: existing.isolateId,
589
- reused: true
590
- });
591
- return;
592
- }
593
- sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, `Namespace "${namespaceId}" already has an active runtime`);
596
+ sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, `Namespace "${namespaceId}" already has an active runtime`, { name: "NamespaceInUseError" });
594
597
  return;
595
598
  }
596
599
  reuseNamespacedRuntime(existing, connection, message, state);
@@ -601,7 +604,7 @@ async function handleCreateRuntime(message, connection, state) {
601
604
  return;
602
605
  }
603
606
  if (state.namespacedCreatesInFlight.has(namespaceId)) {
604
- sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, `Namespace "${namespaceId}" creation already in progress`);
607
+ sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, `Namespace "${namespaceId}" creation already in progress`, { name: "NamespaceInUseError" });
605
608
  return;
606
609
  }
607
610
  state.namespacedCreatesInFlight.add(namespaceId);
@@ -1165,6 +1168,21 @@ async function handleDisposeRuntime(message, connection, state) {
1165
1168
  sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, error.message, { name: error.name, stack: error.stack });
1166
1169
  }
1167
1170
  }
1171
+ async function handleDisposeNamespace(message, connection, state) {
1172
+ const instance = state.namespacedRuntimes.get(message.namespaceId);
1173
+ if (!instance) {
1174
+ sendOk(connection.socket, message.requestId);
1175
+ return;
1176
+ }
1177
+ const requestReason = typeof message.reason === "string" && message.reason.length > 0 ? message.reason : "client requested namespace dispose";
1178
+ try {
1179
+ await hardDeleteRuntime(instance, state, requestReason);
1180
+ sendOk(connection.socket, message.requestId);
1181
+ } catch (err) {
1182
+ const error = err;
1183
+ sendError(connection.socket, message.requestId, ErrorCode.SCRIPT_ERROR, error.message, { name: error.name, stack: error.stack });
1184
+ }
1185
+ }
1168
1186
  async function handleEval(message, connection, state) {
1169
1187
  const instance = state.isolates.get(message.isolateId);
1170
1188
  if (!instance) {
@@ -2212,4 +2230,4 @@ export {
2212
2230
  handleConnection
2213
2231
  };
2214
2232
 
2215
- //# debugId=BDEE2D0ADF7AA07564756E2164756E21
2233
+ //# debugId=B375B10E50F2EE8464756E2164756E21