@marimo-team/islands 0.25.3-dev81 → 0.25.3-dev85

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 (38) hide show
  1. package/dist/{ErrorBoundary-CRhA6ihv.js → ErrorBoundary-2IYfhnL4.js} +1 -1
  2. package/dist/{chat-ui-C0_lCzql.js → chat-ui-C9S_7vEJ.js} +4 -4
  3. package/dist/{code-visibility-Bh47dZxU.js → code-visibility-DHJtE2fT.js} +3 -3
  4. package/dist/{common-C0RwQCH0.js → common-COjg9Wjo.js} +5 -5
  5. package/dist/{data-grid-overlay-editor-BVMxTI0f.js → data-grid-overlay-editor-C9wy2To6.js} +1 -1
  6. package/dist/{error-entries-CMNtA8NK.js → error-entries-Cmiq1RT-.js} +1 -1
  7. package/dist/{feedback-button-B_XNkruv.js → feedback-button-wob0Aeib.js} +3 -3
  8. package/dist/{formats-6pLWWrY2.js → formats-ZmooA-MD.js} +1 -1
  9. package/dist/{glide-data-editor-Bk8CGhkL.js → glide-data-editor-bvazCP1C.js} +3 -3
  10. package/dist/{globals-CFPR5UsC.js → globals-dzNj_tMG.js} +1 -1
  11. package/dist/{html-to-image-6xcoTKhC.js → html-to-image-Dc3mTXAs.js} +2 -2
  12. package/dist/main.js +13 -13
  13. package/dist/{number-overlay-editor-DJUv51cZ.js → number-overlay-editor-k3nwtjJY.js} +1 -1
  14. package/dist/{process-output-BJRJFobf.js → process-output-C47Xs8_M.js} +2 -2
  15. package/dist/{reveal-component-BbakmqEi.js → reveal-component-BaedRCK0.js} +4 -4
  16. package/dist/{toDate-CjPuEPou.js → toDate-C6BRw8i5.js} +10 -13
  17. package/dist/{vega-component-DnfQeoyt.js → vega-component-B8IjMdad.js} +2 -2
  18. package/package.json +1 -1
  19. package/src/core/host/AGENTS.md +6 -5
  20. package/src/core/host/connection.ts +1 -40
  21. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  22. package/src/core/runtime/__tests__/runtime.test.ts +13 -5
  23. package/src/core/runtime/runtime.ts +23 -27
  24. package/src/core/wasm/bridge.ts +0 -8
  25. package/src/core/websocket/__tests__/connection-state.test.ts +0 -12
  26. package/src/core/websocket/connection-state.ts +0 -10
  27. package/src/core/host/__tests__/events.test.ts +0 -49
  28. package/src/core/host/events.ts +0 -68
  29. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  30. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  31. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -352
  32. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  33. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  34. package/src/core/websocket/transports/basic.ts +0 -102
  35. package/src/core/websocket/transports/create.ts +0 -31
  36. package/src/core/websocket/transports/sse.ts +0 -320
  37. package/src/core/websocket/transports/transport.ts +0 -50
  38. package/src/core/websocket/transports/ws.ts +0 -98
@@ -1,98 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import ReconnectingWebSocket from "partysocket/ws";
4
- import type {
5
- ConnectionEvent,
6
- ConnectionTransportCallback,
7
- IConnectionTransport,
8
- } from "./transport";
9
-
10
- // Per-`reconnect()` retry budget. After exhaustion, partysocket stops silently;
11
- // the wrapper rewrites the close-event reason to surface the give-up.
12
- export const MAX_RETRIES = 10;
13
-
14
- export const TRANSPORT_EXHAUSTED_REASON = "MARIMO_TRANSPORT_EXHAUSTED";
15
-
16
- export class WsTransport implements IConnectionTransport {
17
- private inner: ReconnectingWebSocket;
18
- private closeWrappers = new WeakMap<
19
- ConnectionTransportCallback<"close">,
20
- ConnectionTransportCallback<"close">
21
- >();
22
-
23
- public constructor(urlProvider: () => string) {
24
- this.inner = new ReconnectingWebSocket(urlProvider, undefined, {
25
- maxRetries: MAX_RETRIES,
26
- debug: false,
27
- startClosed: true,
28
- // long timeout — the server can become slow when many notebooks are open.
29
- connectionTimeout: 10_000,
30
- });
31
- }
32
-
33
- public get readyState(): WebSocket["readyState"] {
34
- return this.inner.readyState as WebSocket["readyState"];
35
- }
36
-
37
- public reconnect(code?: number, reason?: string): void {
38
- this.inner.reconnect(code, reason);
39
- }
40
-
41
- public close(): void {
42
- this.inner.close();
43
- }
44
-
45
- public send(
46
- data: string | ArrayBuffer | Blob | ArrayBufferView<ArrayBuffer>,
47
- ): void {
48
- this.inner.send(data);
49
- }
50
-
51
- public addEventListener<T extends ConnectionEvent>(
52
- event: T,
53
- callback: ConnectionTransportCallback<T>,
54
- ): void {
55
- if (event === "close") {
56
- const userCb = callback as ConnectionTransportCallback<"close">;
57
- // Match native EventTarget dedupe: a second addEventListener with the
58
- // same listener is a no-op. Without this, repeated adds leak wrappers
59
- // on the inner socket and double-fire on close.
60
- if (this.closeWrappers.has(userCb)) {
61
- return;
62
- }
63
- const wrapper: ConnectionTransportCallback<"close"> = (e) => {
64
- if (this.inner.retryCount >= MAX_RETRIES) {
65
- userCb(
66
- new CloseEvent("close", {
67
- code: e.code,
68
- reason: TRANSPORT_EXHAUSTED_REASON,
69
- wasClean: e.wasClean,
70
- }),
71
- );
72
- } else {
73
- userCb(e);
74
- }
75
- };
76
- this.closeWrappers.set(userCb, wrapper);
77
- this.inner.addEventListener("close", wrapper);
78
- return;
79
- }
80
- this.inner.addEventListener(event, callback as never);
81
- }
82
-
83
- public removeEventListener<T extends ConnectionEvent>(
84
- event: T,
85
- callback: ConnectionTransportCallback<T>,
86
- ): void {
87
- if (event === "close") {
88
- const userCb = callback as ConnectionTransportCallback<"close">;
89
- const wrapper = this.closeWrappers.get(userCb);
90
- if (wrapper) {
91
- this.closeWrappers.delete(userCb);
92
- this.inner.removeEventListener("close", wrapper);
93
- }
94
- return;
95
- }
96
- this.inner.removeEventListener(event, callback as never);
97
- }
98
- }