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

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 (28) hide show
  1. package/dist/{ErrorBoundary-CRhA6ihv.js → ErrorBoundary-Dh-VaAao.js} +1 -1
  2. package/dist/{code-visibility-Bh47dZxU.js → code-visibility-BwTJAT1U.js} +1 -1
  3. package/dist/{common-C0RwQCH0.js → common-BTpcnvZO.js} +1 -1
  4. package/dist/{data-grid-overlay-editor-BVMxTI0f.js → data-grid-overlay-editor-C95q5QIf.js} +1 -1
  5. package/dist/{feedback-button-B_XNkruv.js → feedback-button-sOLkDWYm.js} +2 -2
  6. package/dist/{glide-data-editor-Bk8CGhkL.js → glide-data-editor-D6GkY0Z2.js} +3 -3
  7. package/dist/{globals-CFPR5UsC.js → globals-rH_9s1xB.js} +1 -1
  8. package/dist/main.js +6 -6
  9. package/dist/{number-overlay-editor-DJUv51cZ.js → number-overlay-editor-BjJttHms.js} +1 -1
  10. package/dist/{reveal-component-BbakmqEi.js → reveal-component-Ckn4ABk3.js} +2 -2
  11. package/package.json +1 -1
  12. package/src/core/host/AGENTS.md +6 -5
  13. package/src/core/host/connection.ts +1 -40
  14. package/src/core/wasm/bridge.ts +0 -8
  15. package/src/core/websocket/__tests__/connection-state.test.ts +0 -12
  16. package/src/core/websocket/connection-state.ts +0 -10
  17. package/src/core/host/__tests__/events.test.ts +0 -49
  18. package/src/core/host/events.ts +0 -68
  19. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  20. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  21. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -352
  22. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  23. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  24. package/src/core/websocket/transports/basic.ts +0 -102
  25. package/src/core/websocket/transports/create.ts +0 -31
  26. package/src/core/websocket/transports/sse.ts +0 -320
  27. package/src/core/websocket/transports/transport.ts +0 -50
  28. package/src/core/websocket/transports/ws.ts +0 -98
@@ -135,7 +135,7 @@ function F(e) {
135
135
  }
136
136
  //#endregion
137
137
  //#region src/components/editor/boundary/ErrorBoundary.tsx
138
- var I = (0, T.lazy)(() => import("./feedback-button-B_XNkruv.js").then((e) => ({ default: e.FeedbackModal }))), L = (e) => {
138
+ var I = (0, T.lazy)(() => import("./feedback-button-sOLkDWYm.js").then((e) => ({ default: e.FeedbackModal }))), L = (e) => {
139
139
  let t = (0, w.c)(2), n;
140
140
  return t[0] === e.children ? n = t[1] : (n = /* @__PURE__ */ (0, j.jsx)(O, {
141
141
  FallbackComponent: R,
@@ -18,7 +18,7 @@ function x() {
18
18
  return e.warn("Failed to get version from mount config"), null;
19
19
  }
20
20
  }
21
- var S = x() || "0.25.3-dev81", C = u(S), w = u(!0);
21
+ var S = x() || "0.25.3-dev82", C = u(S), w = u(!0);
22
22
  u(null);
23
23
  //#endregion
24
24
  //#region src/core/wasm/state.ts
@@ -12,7 +12,7 @@ import { t as ut } from "./check-P35dc2dH.js";
12
12
  import { A as dt, C as ft, M as pt, O as mt, S as ht, _ as gt, b as _t, c as vt, d as yt, g as bt, h as xt, i as St, l as Ct, m as wt, n as Tt, p as Et, s as Dt, t as Ot, u as kt, v as At, y as jt } from "./select-B0LRDH0g.js";
13
13
  import { $ as Mt, $t as Nt, A as Pt, At as Ft, B as It, Bt as Lt, Ct as Rt, D as zt, Dt as Bt, E as Vt, Et as Ht, F as Ut, Ft as Wt, G as Gt, Gt as Kt, H as qt, Ht as Jt, I as Yt, It as Xt, J as Zt, Jt as Qt, Kt as $t, L as en, Lt as tn, M as nn, Mt as rn, N as an, Nt as on, O as sn, Ot as cn, P as ln, Pt as un, Q as dn, Qt as fn, R as pn, Rt as mn, S as hn, St as gn, T as _n, Tt as vn, U as yn, Ut as bn, V as xn, Vt as Sn, W as Cn, Wt as wn, X as Tn, Xt as En, Y as Dn, Yt as On, Z as kn, Zt as An, _ as jn, _n as Mn, _t as Nn, a as Pn, an as Fn, at as In, b as Ln, bt as Rn, cn as zn, ct as Bn, d as Vn, dn as Hn, en as Un, et as Wn, f as Gn, fn as Kn, ft as qn, gn as Jn, gt as Yn, h as Xn, hn as Zn, ht as Qn, i as $n, in as er, it as tr, j as nr, jt as rr, k as ir, kt as ar, l as or, ln as sr, lt as cr, mn as lr, mt as ur, n as dr, nn as fr, nt as pr, o as mr, ot as hr, pn as gr, pt as _r, qt as vr, rn as yr, rt as br, s as xr, sn as Sr, st as Cr, t as wr, tt as Tr, u as Er, ut as Dr, vn as Or, vt as kr, w as Ar, wt as jr, x as Mr, xt as Nr, y as Pr, yn as Fr, yt as Ir, z as Lr, zt as Rr } from "./dropdown-menu-B3eUiVJB.js";
14
14
  import { a as zr, c as Br, d as Vr, i as Hr, l as Ur, n as Wr, o as Gr, r as Kr, t as qr, v as Jr, x as Yr, y as Xr } from "./toDate-CjPuEPou.js";
15
- import { n as Zr, t as Qr } from "./ErrorBoundary-CRhA6ihv.js";
15
+ import { n as Zr, t as Qr } from "./ErrorBoundary-Dh-VaAao.js";
16
16
  import { t as $r } from "./clsx-CoeGtWvn.js";
17
17
  import { t as ei } from "./react-dom-DUmH0GXv.js";
18
18
  import { t as ti } from "./jsx-runtime-3BD1kT0s.js";
@@ -2,7 +2,7 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-sHtZdjeP.js";
3
3
  import { t as n } from "./react-dom-DUmH0GXv.js";
4
4
  import { c as r, l as i, u as a } from "./data-grid-types-0PJ-9N5n.js";
5
- import { a as o, i as s, n as c, r as l } from "./glide-data-editor-Bk8CGhkL.js";
5
+ import { a as o, i as s, n as c, r as l } from "./glide-data-editor-D6GkY0Z2.js";
6
6
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js
7
7
  var u = /* @__PURE__ */ e(t(), 1), d = /* @__PURE__ */ e(n(), 1), f = /*#__PURE__*/ o("div")({
8
8
  name: "DataGridOverlayEditorStyle",
@@ -5,12 +5,12 @@ import { t as i } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { t as a } from "./copy-icon-CPoxUG7G.js";
6
6
  import { Dt as o, G as s, It as c, K as l, Rt as u, V as d, dn as f, h as p, i as m, n as h } from "./error-entries-CMNtA8NK.js";
7
7
  import { b as g } from "./select-B0LRDH0g.js";
8
- import { n as ee, t as te } from "./globals-CFPR5UsC.js";
8
+ import { n as ee, t as te } from "./globals-rH_9s1xB.js";
9
9
  import { t as _ } from "./jsx-runtime-3BD1kT0s.js";
10
10
  import { C as v, _ as ne, i as y } from "./useTheme-DympCsQg.js";
11
11
  import { a as re, i as ie, n as ae, r as oe } from "./dialog-C1PcpCqX.js";
12
12
  import { t as se } from "./useAsyncData-ChgNtdmE.js";
13
- import { t as ce } from "./code-visibility-Bh47dZxU.js";
13
+ import { t as ce } from "./code-visibility-BwTJAT1U.js";
14
14
  //#region src/components/ui/skeleton.tsx
15
15
  var b = /* @__PURE__ */ e(r(), 1), x = i(), S = _(), le = (e) => {
16
16
  let n = (0, x.c)(8), r, i;
@@ -6,7 +6,7 @@ import { i as s, n as c, r as l } from "./copy-icon-CPoxUG7G.js";
6
6
  import { C as u, c as d, i as f, n as p, s as m, t as h, x as g } from "./select-B0LRDH0g.js";
7
7
  import { d as _, h as v, i as y, l as b, n as x, o as S, s as C, t as w, u as T } from "./dropdown-menu-B3eUiVJB.js";
8
8
  import { c as E, d as D, l as O, n as k, o as A, s as ee, t as j, u as te } from "./glide-utils-Bt8_pBa2.js";
9
- import { n as ne, t as re } from "./ErrorBoundary-CRhA6ihv.js";
9
+ import { n as ne, t as re } from "./ErrorBoundary-Dh-VaAao.js";
10
10
  import { t as ie } from "./react-dom-DUmH0GXv.js";
11
11
  import { t as M } from "./jsx-runtime-3BD1kT0s.js";
12
12
  import { t as N } from "./label-BRnUC0NX.js";
@@ -7062,7 +7062,7 @@ function rs(e, t, n, r, i) {
7062
7062
  }
7063
7063
  //#endregion
7064
7064
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/data-editor/data-editor.js
7065
- var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-BVMxTI0f.js")), ss = 0;
7065
+ var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-C95q5QIf.js")), ss = 0;
7066
7066
  function cs(e) {
7067
7067
  return (0, is.default)((0, as.default)((0, as.default)(e).filter((e) => e.span !== void 0).map((e) => (0, Za.default)((e.span?.[0] ?? 0) + 1, (e.span?.[1] ?? 0) + 1))));
7068
7068
  }
@@ -9293,7 +9293,7 @@ function Vs(e, t, n, r, i) {
9293
9293
  }
9294
9294
  //#endregion
9295
9295
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/cells/number-cell.js
9296
- var Hs = K.lazy(async () => await import("./number-overlay-editor-DJUv51cZ.js")), Us = {
9296
+ var Hs = K.lazy(async () => await import("./number-overlay-editor-BjJttHms.js")), Us = {
9297
9297
  getAccessibilityString: (e) => e.data?.toString() ?? "",
9298
9298
  kind: W.Number,
9299
9299
  needsHover: (e) => e.hoverEffect === !0,
@@ -1,6 +1,6 @@
1
1
  import { h as e } from "./tooltip-CKO1pHJo.js";
2
2
  import { _ as t } from "./useTheme-DympCsQg.js";
3
- import { r as n } from "./code-visibility-Bh47dZxU.js";
3
+ import { r as n } from "./code-visibility-BwTJAT1U.js";
4
4
  var r = e("triangle-alert", [
5
5
  ["path", {
6
6
  d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
package/dist/main.js CHANGED
@@ -7,7 +7,7 @@ import { C as w, F as T, G as E, I as D, J as O, K as k, L as A, P as j, R as M,
7
7
  import { a as oe, d as se, f as ce, h as V, i as le, n as ue, o as de, r as fe, t as pe } from "./tooltip-CKO1pHJo.js";
8
8
  import { $t as me, At as he, B as ge, Bt as _e, D as ve, Dt as ye, E as be, Et as xe, Ft as Se, Gt as Ce, J as we, Jt as Te, Kt as Ee, M as De, Mt as Oe, N as ke, O as Ae, Ot as je, Q as Me, R as Ne, S as Pe, Ut as Fe, V as Ie, Vt as Le, W as Re, Y as ze, Yt as Be, Z as Ve, _ as He, b as Ue, bt as We, cn as Ge, dt as Ke, en as qe, f as Je, fn as Ye, ft as Xe, g as Ze, gn as Qe, gt as $e, h as et, hn as tt, ht as nt, in as rt, j as it, jt as at, k as ot, kt as st, ln as ct, m as lt, nn as ut, nt as dt, o as ft, p as pt, pn as mt, q as ht, qt as gt, rt as _t, s as vt, sn as yt, st as bt, tn as xt, u as St, un as Ct, ut as wt, v as Tt, wt as Et, y as Dt, z as Ot, zt as kt } from "./error-entries-CMNtA8NK.js";
9
9
  import { D as At, E as jt, O as Mt, S as Nt, T as Pt, _ as Ft, a as It, c as Lt, d as Rt, f as zt, g as Bt, h as Vt, i as Ht, l as Ut, m as Wt, n as Gt, o as Kt, p as qt, r as Jt, s as Yt, t as Xt, u as Zt, v as Qt, w as $t, x as en, y as tn } from "./spec-C-LRKGtT.js";
10
- import { $ as nn, $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, Xt as Xn, Y as Zn, Yt as Qn, Zt as $n, _ as er, _t as tr, at as nr, b as rr, c as ir, cn as ar, ct as or, d as sr, dn as cr, dt as lr, en as ur, et as dr, f as fr, fn as pr, ft as mr, g as hr, gt as gr, h as _r, ht as vr, in as yr, it as br, j as xr, jt as Sr, k as Cr, kt as wr, ln as Tr, lt as Er, m as Dr, mn as Or, mt as kr, nn as Ar, nt as jr, on as Mr, ot as Nr, p as Pr, pn as Fr, pt as Ir, q as Lr, qt as Rr, r as zr, rn as Br, rt as Vr, sn as Hr, st as Ur, t as Wr, tn as Gr, tt as Kr, u as qr, un as Jr, ut as Yr, v as Xr, vt as Zr, w as Qr, wt as $r, x as ei, xt as ti, y as ni, z as ri, zt as ii } from "./common-C0RwQCH0.js";
10
+ import { $ as nn, $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, Xt as Xn, Y as Zn, Yt as Qn, Zt as $n, _ as er, _t as tr, at as nr, b as rr, c as ir, cn as ar, ct as or, d as sr, dn as cr, dt as lr, en as ur, et as dr, f as fr, fn as pr, ft as mr, g as hr, gt as gr, h as _r, ht as vr, in as yr, it as br, j as xr, jt as Sr, k as Cr, kt as wr, ln as Tr, lt as Er, m as Dr, mn as Or, mt as kr, nn as Ar, nt as jr, on as Mr, ot as Nr, p as Pr, pn as Fr, pt as Ir, q as Lr, qt as Rr, r as zr, rn as Br, rt as Vr, sn as Hr, st as Ur, t as Wr, tn as Gr, tt as Kr, u as qr, un as Jr, ut as Yr, v as Xr, vt as Zr, w as Qr, wt as $r, x as ei, xt as ti, y as ni, z as ri, zt as ii } from "./common-BTpcnvZO.js";
11
11
  import { c as ai, i as oi, n as si, o as ci, t as li } from "./useLifecycle-VVmz_24o.js";
12
12
  import { t as ui } from "./check-P35dc2dH.js";
13
13
  import { A as di, C as fi, D as pi, E as mi, M as hi, O as gi, S as _i, T as vi, a as yi, b as bi, c as xi, i as Si, k as Ci, l as wi, n as Ti, o as Ei, r as Di, s as Oi, t as ki, w as Ai, x as ji } from "./select-B0LRDH0g.js";
@@ -15,8 +15,8 @@ import { At as Mi, C as Ni, Dt as Pi, J as Fi, K as Ii, R as Li, S as Ri, U as z
15
15
  import { C as ua, _ as da, a as fa, b as pa, c as ma, f as ha, h as ga, m as _a, p as va, s as ya, u as ba, x as xa, y as Sa } from "./toDate-CjPuEPou.js";
16
16
  import { a as Ca, c as wa, d as Ta, f as Ea, i as Da, l as Oa, n as ka, o as Aa, r as ja, s as Ma, t as Na } from "./process-output-BJRJFobf.js";
17
17
  import { a as Pa, c as Fa, d as Ia, i as La, l as Ra, r as za, u as Ba } from "./glide-utils-Bt8_pBa2.js";
18
- import { n as Va, t as Ha } from "./ErrorBoundary-CRhA6ihv.js";
19
- import { n as Ua, t as Wa } from "./globals-CFPR5UsC.js";
18
+ import { n as Va, t as Ha } from "./ErrorBoundary-Dh-VaAao.js";
19
+ import { n as Ua, t as Wa } from "./globals-rH_9s1xB.js";
20
20
  import { t as Ga } from "./react-dom-DUmH0GXv.js";
21
21
  import { t as Ka } from "./jsx-runtime-3BD1kT0s.js";
22
22
  import { B as qa, C as H, Ct as Ja, D as Ya, E as Xa, F as U, G as Za, H as Qa, I as $a, L as eo, M as W, N as to, O as no, P as ro, Q as io, R as ao, S as G, St as oo, Tt as so, U as co, W as lo, Y as uo, Z as fo, _ as po, _t as mo, a as ho, b as go, bt as _o, c as vo, d as yo, f as bo, g as xo, h as So, ht as Co, i as wo, j as K, k as To, l as Eo, m as Do, n as Oo, o as ko, p as Ao, r as jo, s as Mo, u as No, ut as Po, v as Fo, vt as Io, w as Lo, wt as Ro, x as zo, xt as Bo, y as Vo, yt as Ho } from "./use-restore-focus-DBCITLeF.js";
@@ -39,7 +39,7 @@ import { t as Ms } from "./useAsyncData-ChgNtdmE.js";
39
39
  import { i as Ns, n as Ps, r as Fs } from "./formats-6pLWWrY2.js";
40
40
  import { D as Is, O as Ls } from "./vega-loader.browser-B9Pz0EGP.js";
41
41
  import { a as Rs, n as zs } from "./loader-Bm8cy3e8.js";
42
- import { c as Bs, d as Vs, i as Hs, l as Us, o as Ws, s as Gs, t as Ks, u as qs } from "./code-visibility-Bh47dZxU.js";
42
+ import { c as Bs, d as Vs, i as Hs, l as Us, o as Ws, s as Gs, t as Ks, u as qs } from "./code-visibility-BwTJAT1U.js";
43
43
  import { t as Js } from "./useDeepCompareMemoize-Bet7kSsI.js";
44
44
  import { t as Ys } from "./esm-D2gTsXEV.js";
45
45
  //#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
@@ -10578,7 +10578,7 @@ function VC(e, t) {
10578
10578
  }
10579
10579
  //#endregion
10580
10580
  //#region src/plugins/impl/DataEditorPlugin.tsx
10581
- var HC = J.lazy(() => import("./glide-data-editor-Bk8CGhkL.js").then((e) => e.t)), UC = wS("marimo-data-editor", { cssStyles: [qS] }).withData(W({
10581
+ var HC = J.lazy(() => import("./glide-data-editor-D6GkY0Z2.js").then((e) => e.t)), UC = wS("marimo-data-editor", { cssStyles: [qS] }).withData(W({
10582
10582
  initialValue: W({ edits: G(W({
10583
10583
  rowIdx: K(),
10584
10584
  columnId: U(),
@@ -30291,7 +30291,7 @@ function BR(e) {
30291
30291
  }
30292
30292
  //#endregion
30293
30293
  //#region src/components/editor/renderers/slides-layout/slides-layout.tsx
30294
- var VR = J.lazy(() => import("./reveal-component-BbakmqEi.js")), HR = (e) => {
30294
+ var VR = J.lazy(() => import("./reveal-component-Ckn4ABk3.js")), HR = (e) => {
30295
30295
  let t = (0, X.c)(33), { layout: n, setLayout: r, cells: i, mode: a } = e, o = ns(da), s = a === "read" || o, c = ns(He) > 1, [l, u] = (0, J.useState)(null), d;
30296
30296
  t[0] !== i || t[1] !== n ? (d = RP(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
30297
30297
  let { slideCells: f, skippedIds: p, noOutputIds: m, slideTypes: h, startCellIndex: g } = d, _;
@@ -1,6 +1,6 @@
1
1
  import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-sHtZdjeP.js";
3
- import { a as n } from "./glide-data-editor-Bk8CGhkL.js";
3
+ import { a as n } from "./glide-data-editor-D6GkY0Z2.js";
4
4
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js
5
5
  var r = /* @__PURE__ */ e(t()), i = /*#__PURE__*/ n("div")({
6
6
  name: "NumberOverlayEditorStyle",
@@ -4,14 +4,14 @@ import { t as o } from "./react-sHtZdjeP.js";
4
4
  import { t as s } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { h as c, t as l } from "./tooltip-CKO1pHJo.js";
6
6
  import { O as u } from "./error-entries-CMNtA8NK.js";
7
- import { Q as d, X as f, Z as p, an as m, cn as h, i as g, in as _, l as v, n as y, r as b, t as x, u as S } from "./common-C0RwQCH0.js";
7
+ import { Q as d, X as f, Z as p, an as m, cn as h, i as g, in as _, l as v, n as y, r as b, t as x, u as S } from "./common-BTpcnvZO.js";
8
8
  import { M as C } from "./select-B0LRDH0g.js";
9
9
  import { q as ee } from "./dropdown-menu-B3eUiVJB.js";
10
10
  import { _ as w } from "./toDate-CjPuEPou.js";
11
11
  import { t as T } from "./jsx-runtime-3BD1kT0s.js";
12
12
  import { q as E } from "./use-restore-focus-DBCITLeF.js";
13
13
  import { A as D, C as O, b as k } from "./useTheme-DympCsQg.js";
14
- import { a as A, n as te, t as ne } from "./code-visibility-Bh47dZxU.js";
14
+ import { a as A, n as te, t as ne } from "./code-visibility-BwTJAT1U.js";
15
15
  /* empty css */
16
16
  var j = c("sticky-note", [["path", {
17
17
  d: "M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.25.3-dev81",
3
+ "version": "0.25.3-dev82",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -5,11 +5,12 @@ Production code may import host modules, `@marimo-team/client`,
5
5
  `marimo/host-imports`. Tests are exempt.
6
6
 
7
7
  The protocol schemas and types live in `@marimo-team/client/protocol`.
8
- The native `marimo` event is a marimo extension and is defined in `events.ts`.
9
8
 
10
9
  Define interfaces here and inject application behavior through adapters.
11
10
 
12
- `stream.ts` reduces stream events into one state. Each kind of object is a
13
- `Resource` in `resources/` with pure handlers keyed by event name. The stream
14
- handles phase, notebook identity, and control events itself. The client holds
15
- one state atom and exposes derived atoms.
11
+ `notebook-client.ts` follows the notebook with `NotebookEvents` from
12
+ `@marimo-team/client`, over a `NotebookTransport` the editor supplies. The
13
+ editor's transports for its session routes live in
14
+ `core/websocket/transports/notebook.ts`. Each kind of object is a `NotebookResource`
15
+ in `resources/` with pure handlers keyed by event name, composed with
16
+ `createNotebookReducer`. The client holds one state atom and exposes derived atoms.
@@ -37,45 +37,6 @@ export type ConnectionStatus =
37
37
 
38
38
  /** The recovery policy for a closed connection. */
39
39
  export interface CloseDecision {
40
- kind: "terminal" | "gave-up" | "retry";
40
+ kind: "terminal" | "retry";
41
41
  status: ConnectionStatus;
42
42
  }
43
-
44
- export type ConnectionEvent = "open" | "close" | "message" | "error";
45
-
46
- export interface IConnectionTransportMap {
47
- open: WebSocketEventMap["open"];
48
- message: WebSocketEventMap["message"];
49
- close: WebSocketEventMap["close"];
50
- error: WebSocketEventMap["error"];
51
- }
52
-
53
- export type ConnectionTransportCallback<T extends ConnectionEvent> = (
54
- data: IConnectionTransportMap[T],
55
- ) => void;
56
-
57
- /** Transport readiness, using the WebSocket readyState values. */
58
- export const TransportReadyState = {
59
- CONNECTING: 0,
60
- OPEN: 1,
61
- CLOSING: 2,
62
- CLOSED: 3,
63
- } as const;
64
-
65
- export type TransportReadyState =
66
- (typeof TransportReadyState)[keyof typeof TransportReadyState];
67
-
68
- /** A reconnectable source of notebook messages. */
69
- export interface NotebookTransport {
70
- reconnect(code?: number | undefined, reason?: string | undefined): void;
71
- close(): void;
72
- addEventListener<T extends ConnectionEvent>(
73
- event: T,
74
- callback: ConnectionTransportCallback<T>,
75
- ): void;
76
- removeEventListener<T extends ConnectionEvent>(
77
- event: T,
78
- callback: ConnectionTransportCallback<T>,
79
- ): void;
80
- readyState: TransportReadyState;
81
- }
@@ -38,8 +38,6 @@ import type {
38
38
  } from "../network/types";
39
39
  import { filenameAtom } from "../saving/file-state";
40
40
  import { store } from "../state/jotai";
41
- import { BasicTransport } from "../websocket/transports/basic";
42
- import type { IConnectionTransport } from "../websocket/transports/transport";
43
41
  import { PyodideRouter } from "./router";
44
42
  import { getWorkerRPC } from "./rpc";
45
43
  import { getWasmRuntimeConfig } from "./runtime-config";
@@ -719,12 +717,6 @@ export class PyodideBridge implements RunRequests, EditRequests {
719
717
  }
720
718
  }
721
719
 
722
- export function createPyodideConnection(): IConnectionTransport {
723
- return BasicTransport.withProducerCallback((callback) => {
724
- PyodideBridge.INSTANCE.attachMessageConsumer(callback);
725
- });
726
- }
727
-
728
720
  // Compose the worker name. The optional "::controller" suffix tells
729
721
  // getController.ts that the host page provides a custom /wasm/controller.js
730
722
  // and that the dynamic import should be attempted. Hosts opt in by setting
@@ -64,16 +64,4 @@ describe("classifyCloseEvent", () => {
64
64
  });
65
65
  });
66
66
  });
67
-
68
- describe("transport exhaustion", () => {
69
- it("MARIMO_TRANSPORT_EXHAUSTED → gave-up with KERNEL_DISCONNECTED", () => {
70
- const decision = classify("MARIMO_TRANSPORT_EXHAUSTED");
71
- expect(decision.kind).toBe("gave-up");
72
- expect(decision.status).toEqual({
73
- state: ConnectionState.CLOSED,
74
- code: WebSocketClosedReason.KERNEL_DISCONNECTED,
75
- reason: "kernel not found",
76
- });
77
- });
78
- });
79
67
  });
@@ -2,22 +2,12 @@
2
2
 
3
3
  import type { CloseDecision } from "../host/connection";
4
4
  import { Logger } from "@/utils/Logger";
5
- import { TRANSPORT_EXHAUSTED_REASON } from "./transports/ws";
6
5
  import { ConnectionState, WebSocketClosedReason } from "./types";
7
6
 
8
7
  // Keep server reasons in sync with ws_endpoint.py and ws/*.py.
9
8
  // SSE carries the same reasons in close events. Unclassified reasons retry.
10
9
  export function classifyCloseEvent(event: { reason?: string }): CloseDecision {
11
10
  switch (event.reason) {
12
- case TRANSPORT_EXHAUSTED_REASON:
13
- return {
14
- kind: "gave-up",
15
- status: {
16
- state: ConnectionState.CLOSED,
17
- code: WebSocketClosedReason.KERNEL_DISCONNECTED,
18
- reason: "kernel not found",
19
- },
20
- };
21
11
  case "MARIMO_NO_FILE_KEY":
22
12
  case "MARIMO_NO_SESSION_ID":
23
13
  case "MARIMO_NO_SESSION":
@@ -1,49 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import { describe, expect, expectTypeOf, it } from "vitest";
4
- import { z } from "zod";
5
- import { type NotebookEvent, parseNotebookEvent } from "../events";
6
-
7
- describe("notebook messages", () => {
8
- it("normalizes session and host envelopes for native marimo messages", () => {
9
- const notification = {
10
- op: "variables",
11
- variables: [{ name: "x", value: Number.NaN }],
12
- };
13
- expectTypeOf<
14
- Extract<NotebookEvent, { event: "marimo" }>["data"]["marimo"]
15
- >().toBeUnknown();
16
- const host = { event: "marimo", data: { marimo: notification } };
17
- expect(parseNotebookEvent({ data: notification })).toEqual(host);
18
- expect(parseNotebookEvent({ ...host, id: "42" })).toEqual({
19
- ...host,
20
- id: "42",
21
- });
22
- });
23
-
24
- it("retains unknown event cursors without interpreting their payloads", () => {
25
- expect(
26
- parseNotebookEvent({ event: "future", id: "42", data: null }),
27
- ).toEqual({ event: "unknown", name: "future", id: "42" });
28
- });
29
-
30
- it("decodes known events outside the client's subscription filters", () => {
31
- const event = {
32
- event: "run.removed",
33
- id: "42",
34
- data: { id: "r1", time: "2026-10-19T12:00:00Z" },
35
- };
36
- expect(parseNotebookEvent(event)).toEqual(event);
37
- });
38
-
39
- it.each([
40
- { event: "cell", id: "42", data: { cell: { id: "c1" } } },
41
- { event: "run.removed", id: "42", data: {} },
42
- { event: "ready", data: {} },
43
- { event: "marimo", data: {} },
44
- {},
45
- null,
46
- ])("rejects malformed known messages: %j", (message) => {
47
- expect(() => parseNotebookEvent(message)).toThrow(z.ZodError);
48
- });
49
- });
@@ -1,68 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import { z } from "zod";
4
- import * as Protocol from "@marimo-team/client/protocol";
5
-
6
- /**
7
- * Notebook stream events, including native marimo notifications.
8
- *
9
- * Known events follow the generated protocol. Unknown events retain their name
10
- * and cursor so clients can skip them without losing their place in the stream.
11
- */
12
-
13
- const envelope = z.object({
14
- event: z.string().min(1),
15
- data: z.unknown(),
16
- id: z.string().min(1).optional(),
17
- });
18
-
19
- const knownNames = new Set<string>(
20
- Protocol.Event.options.flatMap((schema) => schema.shape.event.options),
21
- );
22
-
23
- /**
24
- * A native marimo message carried by a host stream.
25
- *
26
- * The protocol leaves extension events to their producer. The payload is
27
- * passed through for the session handler to interpret.
28
- */
29
- const MarimoEvent = z.object({
30
- event: z.literal("marimo"),
31
- id: z.string().min(1).optional(),
32
- data: z.object({ marimo: z.unknown() }),
33
- });
34
-
35
- /** A decoded event, or the name and cursor of an unrecognized event. */
36
- export type NotebookEvent =
37
- | Protocol.EventOutput
38
- | z.output<typeof MarimoEvent>
39
- | {
40
- readonly event: "unknown";
41
- readonly name: string;
42
- readonly id?: string;
43
- };
44
-
45
- const sessionEnvelope = z.object({ data: z.unknown() });
46
-
47
- /**
48
- * Decode a host event or an in-process WASM `{ data: notification }` message.
49
- *
50
- * Throws if the envelope or a known event is malformed. Native notification
51
- * payloads are passed through for the session handler to interpret.
52
- */
53
- export function parseNotebookEvent(value: unknown): NotebookEvent {
54
- if (typeof value === "object" && value !== null && !("event" in value)) {
55
- return {
56
- event: "marimo",
57
- data: { marimo: sessionEnvelope.parse(value).data },
58
- };
59
- }
60
- const parsed = envelope.parse(value);
61
- if (parsed.event === "marimo") {
62
- return MarimoEvent.parse(parsed);
63
- }
64
- if (knownNames.has(parsed.event)) {
65
- return Protocol.Event.parse(parsed);
66
- }
67
- return { event: "unknown", name: parsed.event, id: parsed.id };
68
- }
@@ -1,49 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import { afterEach, describe, expect, it, vi } from "vitest";
4
- import { BasicTransport } from "../transports/basic";
5
- import { SseTransport } from "../transports/sse";
6
- import { WsTransport } from "../transports/ws";
7
- import { createConnectionTransport } from "../transports/create";
8
-
9
- vi.mock("../../wasm/utils", () => ({
10
- isWasm: () => false,
11
- }));
12
-
13
- describe("createConnectionTransport", () => {
14
- afterEach(() => {
15
- vi.restoreAllMocks();
16
- });
17
-
18
- const options = {
19
- url: () => "http://localhost/ws",
20
- headers: () => ({}),
21
- };
22
-
23
- it("uses BasicTransport for static notebooks", () => {
24
- const transport = createConnectionTransport({
25
- ...options,
26
- static: true,
27
- transportType: "websocket",
28
- });
29
- expect(transport).toBeInstanceOf(BasicTransport);
30
- });
31
-
32
- it("uses WsTransport by default", () => {
33
- const transport = createConnectionTransport({
34
- ...options,
35
- static: false,
36
- transportType: "websocket",
37
- });
38
- expect(transport).toBeInstanceOf(WsTransport);
39
- });
40
-
41
- it("uses SseTransport when the transport type is sse", () => {
42
- const transport = createConnectionTransport({
43
- ...options,
44
- static: false,
45
- transportType: "sse",
46
- });
47
- expect(transport).toBeInstanceOf(SseTransport);
48
- });
49
- });