@marimo-team/frontend 0.22.1-dev38 → 0.22.1-dev39

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 (229) hide show
  1. package/dist/assets/{CellStatus-DKyVv7Zj.js → CellStatus-Cf0Jlrcs.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-BUc9LHJJ.js → ConnectedDataExplorerComponent-DUxaLoL7.js} +1 -1
  3. package/dist/assets/{JsonOutput-DboWEw2n.js → JsonOutput-IpD2GLtO.js} +1 -1
  4. package/dist/assets/{MarimoErrorOutput-RmM7djc-.js → MarimoErrorOutput-dTNCLY-Q.js} +1 -1
  5. package/dist/assets/{Plot-C7NE7pEx.js → Plot-BAM1jEAz.js} +72 -72
  6. package/dist/assets/{RenderHTML-Bmn77an6.js → RenderHTML-C5GEp4ca.js} +1 -1
  7. package/dist/assets/{add-cell-with-ai-RyZ9Xe2b.js → add-cell-with-ai-C0J3LyiV.js} +1 -1
  8. package/dist/assets/{add-connection-dialog-DiHC8_uD.js → add-connection-dialog-C42PDYI7.js} +1 -1
  9. package/dist/assets/{agent-panel-CWWFNdAZ.js → agent-panel-CH-jHjEl.js} +1 -1
  10. package/dist/assets/{ai-model-dropdown-Dnf-CxbP.js → ai-model-dropdown-D14GiszF.js} +1 -1
  11. package/dist/assets/{app-config-button-D1Z_xsvC.js → app-config-button-v-557oRb.js} +1 -1
  12. package/dist/assets/{cell-editor-CKnV9MwH.js → cell-editor-Dd6UaL1A.js} +2 -2
  13. package/dist/assets/{cell-link-D4UrIH9w.js → cell-link-Cimoe3Fv.js} +1 -1
  14. package/dist/assets/{cells-ArUhhHls.js → cells-CcsG9Aum.js} +1 -1
  15. package/dist/assets/{chat-display-YmFjOXkV.js → chat-display-hfpeXiYe.js} +1 -1
  16. package/dist/assets/{chat-panel-B76rxYTh.js → chat-panel-DxT370nA.js} +1 -1
  17. package/dist/assets/{chat-ui-BitNq1z6.js → chat-ui-Dv4y0-td.js} +1 -1
  18. package/dist/assets/{column-preview-BvDPfcdF.js → column-preview-ZSErTRFA.js} +1 -1
  19. package/dist/assets/{command-palette-CPRmmNjA.js → command-palette-CjF_cblG.js} +1 -1
  20. package/dist/assets/{common-CRBlPqv5.js → common-BZK7spst.js} +1 -1
  21. package/dist/assets/{components-DwGcJvMB.js → components-D2OlyENc.js} +1 -1
  22. package/dist/assets/{components-BfHGr__b.js → components-DpxyscxU.js} +1 -1
  23. package/dist/assets/{datasource-D9e37ifa.js → datasource-D9nfSxKS.js} +1 -1
  24. package/dist/assets/{dependency-graph-panel-BBmN-Vc7.js → dependency-graph-panel-5MbMtFss.js} +1 -1
  25. package/dist/assets/{documentation-panel-Dm2xtsTq.js → documentation-panel-DPdXS3YO.js} +1 -1
  26. package/dist/assets/{download-7EtMZf2Y.js → download-BFQaUFKI.js} +1 -1
  27. package/dist/assets/{edit-page-B-kCXJQD.js → edit-page-CMd8_Psc.js} +4 -4
  28. package/dist/assets/{error-panel-C3-vTzaH.js → error-panel-DV8jpRsf.js} +1 -1
  29. package/dist/assets/{file-explorer-panel-DyDct4o3.js → file-explorer-panel-Dr_ZNDk3.js} +1 -1
  30. package/dist/assets/{file-icons-JXAG6vK-.js → file-icons-DSJsG_mI.js} +1 -1
  31. package/dist/assets/{floating-outline-B6Qyid7Q.js → floating-outline-Cfa1ESSb.js} +1 -1
  32. package/dist/assets/{focus-DCN0oEe0.js → focus-C5u0JQUq.js} +1 -1
  33. package/dist/assets/{form-Byef3KYr.js → form-3ZUGKch9.js} +1 -1
  34. package/dist/assets/glide-data-editor-a3qLDl-r.js +132 -0
  35. package/dist/assets/{home-page-Bg02jazh.js → home-page-BrqppCUS.js} +1 -1
  36. package/dist/assets/{hooks-BoxLBXGI.js → hooks-CHE17GG1.js} +1 -1
  37. package/dist/assets/{html-to-image-C5XSE7QT.js → html-to-image-BRbQwG7G.js} +1 -1
  38. package/dist/assets/{index-B1HqiNNr.js → index-Bt8G6SSE.js} +8 -8
  39. package/dist/assets/{kiosk-mode-CriCUOI1.js → kiosk-mode-Cu86-jaD.js} +1 -1
  40. package/dist/assets/{layout-BjQtqcnj.js → layout-B-lTkLKA.js} +1 -1
  41. package/dist/assets/{logs-panel-CoWO9c8s.js → logs-panel-CNVgwoHO.js} +1 -1
  42. package/dist/assets/{markdown-renderer-CyUc0f8D.js → markdown-renderer-B91NzmVT.js} +1 -1
  43. package/dist/assets/{name-cell-input-DeM6upjB.js → name-cell-input-hsV_b1Op.js} +1 -1
  44. package/dist/assets/{outline-panel-C4P3wA7Z.js → outline-panel-C3jvSnZF.js} +1 -1
  45. package/dist/assets/{packages-panel-DnrjjQDF.js → packages-panel-0_Z5vM7i.js} +1 -1
  46. package/dist/assets/{panels-aBXT7_tR.js → panels-uc8QhzpO.js} +1 -1
  47. package/dist/assets/{process-output-e_aMblRk.js → process-output-CsvKn_Mr.js} +1 -1
  48. package/dist/assets/{readonly-python-code-CVgh88Tn.js → readonly-python-code-oFCRG7Wt.js} +1 -1
  49. package/dist/assets/{run-page-yA3m6QEA.js → run-page-DKCqiq_f.js} +1 -1
  50. package/dist/assets/{scratchpad-panel-Cul3iUG0.js → scratchpad-panel-ChHLgDv_.js} +1 -1
  51. package/dist/assets/{session-panel-CzPIEKo8.js → session-panel-CPKKt31q.js} +1 -1
  52. package/dist/assets/{snippets-panel-DQgE3W8I.js → snippets-panel-CDqEDwpY.js} +1 -1
  53. package/dist/assets/{spec-CBbUxOvL.js → spec-CFx2bitO.js} +1 -1
  54. package/dist/assets/{state-pGNeffyB.js → state-BBVlYaRC.js} +1 -1
  55. package/dist/assets/{state-C79RsVoe.js → state-C93JW11U.js} +1 -1
  56. package/dist/assets/{textarea-DqzNK0s9.js → textarea-DJEKmYtw.js} +1 -1
  57. package/dist/assets/{tracing-BUFVOmZw.js → tracing-CLWi5jD3.js} +1 -1
  58. package/dist/assets/{tracing-panel-BsLloPWd.js → tracing-panel-ksnvVrMH.js} +2 -2
  59. package/dist/assets/{useAddCell-cC7JUC0q.js → useAddCell-mJ1PkF-E.js} +1 -1
  60. package/dist/assets/{useCellActionButton-BiYBXHfb.js → useCellActionButton-4HWj1rt3.js} +1 -1
  61. package/dist/assets/{useDeleteCell-D2p4Dz0U.js → useDeleteCell-B0OAS0ly.js} +1 -1
  62. package/dist/assets/{useDependencyPanelTab-c5-eXlcr.js → useDependencyPanelTab-BuZ0fgAR.js} +1 -1
  63. package/dist/assets/useLifecycle-N3bfh_O1.js +1 -0
  64. package/dist/assets/{useNotebookActions-A-2lB6Y1.js → useNotebookActions-DuHUqtII.js} +1 -1
  65. package/dist/assets/{useRunCells-DgBY-vh9.js → useRunCells-Du76UV1R.js} +1 -1
  66. package/dist/assets/{useSplitCell-SS0kKwVk.js → useSplitCell-CeL7eJq1.js} +1 -1
  67. package/dist/index.html +24 -24
  68. package/package.json +1 -1
  69. package/src/__mocks__/common.ts +4 -4
  70. package/src/components/chat/acp/agent-panel.tsx +2 -2
  71. package/src/components/data-table/__tests__/columns.test.tsx +7 -7
  72. package/src/components/data-table/cell-hover-template/types.ts +1 -1
  73. package/src/components/data-table/cell-hover-text/types.ts +1 -1
  74. package/src/components/data-table/cell-selection/__tests__/feature.test.ts +1 -1
  75. package/src/components/data-table/cell-selection/types.ts +1 -1
  76. package/src/components/data-table/cell-styling/types.ts +1 -1
  77. package/src/components/data-table/charts/chart-spec/altair-generator.ts +2 -2
  78. package/src/components/data-table/column-formatting/types.ts +2 -2
  79. package/src/components/data-table/column-summary/legacy-chart-spec.ts +1 -1
  80. package/src/components/data-table/column-wrapping/types.ts +1 -1
  81. package/src/components/data-table/copy-column/types.ts +1 -1
  82. package/src/components/data-table/focus-row/types.ts +1 -1
  83. package/src/components/data-table/loading-table.tsx +1 -1
  84. package/src/components/data-table/range-focus/__tests__/atoms.test.ts +2 -2
  85. package/src/components/data-table/range-focus/atoms.ts +2 -2
  86. package/src/components/dependency-graph/dependency-graph-tree.tsx +1 -1
  87. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +1 -1
  88. package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
  89. package/src/components/editor/app-container.tsx +1 -1
  90. package/src/components/editor/chrome/panels/empty-state.tsx +1 -0
  91. package/src/components/editor/controls/keyboard-shortcuts.tsx +1 -1
  92. package/src/components/editor/navigation/__tests__/navigation.test.ts +1 -1
  93. package/src/components/editor/navigation/navigation.ts +1 -1
  94. package/src/components/editor/notebook-cell.tsx +1 -1
  95. package/src/components/editor/output/JsonOutput.tsx +4 -4
  96. package/src/components/editor/output/ansi-reduce.ts +2 -2
  97. package/src/components/editor/output/console/ConsoleOutput.tsx +1 -1
  98. package/src/components/editor/renderers/cells-renderer.tsx +1 -1
  99. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +1 -1
  100. package/src/components/editor/renderers/plugins.ts +1 -1
  101. package/src/components/editor/renderers/slides-layout/types.ts +2 -2
  102. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +2 -2
  103. package/src/components/editor/renderers/vertical-layout/__tests__/vertical-layout.test.ts +1 -1
  104. package/src/components/find-replace/find-replace.tsx +3 -1
  105. package/src/components/forms/form.tsx +1 -1
  106. package/src/components/forms/options.ts +1 -1
  107. package/src/components/static-html/static-banner.tsx +2 -2
  108. package/src/components/terminal/terminal.tsx +4 -4
  109. package/src/components/ui/button.tsx +1 -1
  110. package/src/components/ui/command.tsx +1 -1
  111. package/src/core/ai/context/providers/__tests__/datasource.test.ts +1 -1
  112. package/src/core/ai/context/providers/__tests__/error.test.ts +1 -1
  113. package/src/core/ai/context/providers/__tests__/variable.test.ts +1 -1
  114. package/src/core/ai/context/registry.ts +2 -2
  115. package/src/core/ai/tools/registry.ts +1 -1
  116. package/src/core/cells/__tests__/cells.test.ts +2 -2
  117. package/src/core/cells/__tests__/scrollCellIntoView.test.ts +1 -1
  118. package/src/core/cells/__tests__/session.test.ts +1 -1
  119. package/src/core/cells/__tests__/utils.test.ts +1 -1
  120. package/src/core/cells/cells.ts +1 -1
  121. package/src/core/cells/ids.ts +1 -1
  122. package/src/core/codemirror/ai/request.ts +1 -1
  123. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +1 -1
  124. package/src/core/codemirror/copilot/__tests__/transport.test.ts +1 -1
  125. package/src/core/codemirror/copilot/language-server.ts +1 -1
  126. package/src/core/codemirror/copilot/types.ts +1 -1
  127. package/src/core/codemirror/facet.ts +1 -1
  128. package/src/core/codemirror/language/__tests__/sql.test.ts +4 -4
  129. package/src/core/codemirror/language/languages/sql/completion-builder.ts +1 -1
  130. package/src/core/codemirror/language/metadata.ts +1 -1
  131. package/src/core/codemirror/language/types.ts +1 -1
  132. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -1
  133. package/src/core/codemirror/lsp/notebook-lsp.ts +1 -1
  134. package/src/core/codemirror/misc/__tests__/dnd.test.ts +1 -1
  135. package/src/core/codemirror/rtc/loro/awareness.ts +1 -1
  136. package/src/core/config/feature-flag.tsx +1 -1
  137. package/src/core/dom/outline.ts +1 -1
  138. package/src/core/export/__tests__/hooks.test.ts +1 -1
  139. package/src/core/hotkeys/__tests__/hotkeys.test.ts +1 -1
  140. package/src/core/hotkeys/shortcuts.ts +1 -1
  141. package/src/core/islands/__tests__/bridge.test.ts +2 -2
  142. package/src/core/islands/bridge.ts +2 -2
  143. package/src/core/islands/components/output-wrapper.tsx +1 -1
  144. package/src/core/islands/parse.ts +1 -1
  145. package/src/core/lsp/__tests__/transport.test.ts +1 -1
  146. package/src/core/network/DeferredRequestRegistry.ts +1 -1
  147. package/src/core/network/__tests__/requests-network.test.ts +1 -1
  148. package/src/core/network/api.ts +2 -2
  149. package/src/core/network/requests-lazy.ts +1 -1
  150. package/src/core/network/requests-toasting.tsx +1 -1
  151. package/src/core/static/files.ts +1 -1
  152. package/src/core/vscode/vscode-bindings.ts +1 -1
  153. package/src/core/wasm/bridge.ts +3 -3
  154. package/src/core/wasm/worker/tracer.ts +1 -1
  155. package/src/core/websocket/useWebSocket.tsx +2 -2
  156. package/src/css/globals.css +37 -61
  157. package/src/custom.d.ts +1 -1
  158. package/src/hooks/__tests__/useDuplicateShortcuts.test.ts +2 -2
  159. package/src/hooks/debug.ts +3 -3
  160. package/src/hooks/useDebounce.ts +1 -1
  161. package/src/hooks/useEventListener.ts +1 -1
  162. package/src/hooks/useHotkey.ts +1 -1
  163. package/src/hooks/useLifecycle.ts +2 -2
  164. package/src/hooks/useNonce.ts +1 -1
  165. package/src/hooks/useResizeObserver.ts +2 -2
  166. package/src/main.tsx +1 -1
  167. package/src/plugins/core/RenderHTML.tsx +3 -3
  168. package/src/plugins/core/__test__/registerReactComponent.test.ts +1 -1
  169. package/src/plugins/core/registerReactComponent.tsx +4 -4
  170. package/src/plugins/core/rpc.ts +1 -1
  171. package/src/plugins/impl/DataTablePlugin.tsx +1 -1
  172. package/src/plugins/impl/FileBrowserPlugin.tsx +1 -1
  173. package/src/plugins/impl/FormPlugin.tsx +1 -1
  174. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
  175. package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +1 -1
  176. package/src/plugins/impl/anywidget/model.ts +1 -1
  177. package/src/plugins/impl/anywidget/types.ts +2 -2
  178. package/src/plugins/impl/anywidget/widget-binding.ts +1 -1
  179. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  180. package/src/plugins/impl/chat/chat-ui.tsx +1 -1
  181. package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -1
  182. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +2 -2
  183. package/src/plugins/impl/data-explorer/components/query-form.tsx +1 -1
  184. package/src/plugins/impl/data-explorer/functions/function.ts +1 -1
  185. package/src/plugins/impl/data-explorer/queries/types.ts +1 -1
  186. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
  187. package/src/plugins/impl/data-frames/forms/renderers.tsx +1 -1
  188. package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
  189. package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +1 -1
  190. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +1 -1
  191. package/src/plugins/impl/panel/PanelPlugin.tsx +2 -2
  192. package/src/plugins/impl/plotly/Plot.tsx +3 -3
  193. package/src/plugins/impl/vega/batched.ts +1 -1
  194. package/src/plugins/impl/vega/make-selectable.ts +1 -1
  195. package/src/plugins/impl/vega/types.ts +1 -1
  196. package/src/plugins/layout/DownloadPlugin.tsx +1 -1
  197. package/src/plugins/layout/LazyPlugin.tsx +1 -1
  198. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  199. package/src/plugins/layout/mermaid/mermaid.tsx +1 -1
  200. package/src/plugins/plugins.ts +1 -1
  201. package/src/stories/data-explorer.stories.tsx +1 -1
  202. package/src/stories/dataframe.stories.tsx +1 -1
  203. package/src/stories/editor.stories.tsx +1 -1
  204. package/src/stories/select.stories.tsx +1 -1
  205. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  206. package/src/utils/Logger.ts +1 -1
  207. package/src/utils/__tests__/arrays.test.ts +1 -1
  208. package/src/utils/__tests__/blob.test.ts +1 -1
  209. package/src/utils/__tests__/dates.test.ts +1 -1
  210. package/src/utils/__tests__/errors.test.ts +1 -1
  211. package/src/utils/__tests__/objects.test.ts +3 -3
  212. package/src/utils/__tests__/waitForWs.test.ts +1 -1
  213. package/src/utils/arrays.ts +1 -1
  214. package/src/utils/assertNever.ts +1 -1
  215. package/src/utils/batch-requests.ts +2 -2
  216. package/src/utils/createReducer.ts +2 -2
  217. package/src/utils/id-tree.tsx +2 -2
  218. package/src/utils/idle.ts +1 -1
  219. package/src/utils/invariant.ts +1 -2
  220. package/src/utils/maps.ts +1 -1
  221. package/src/utils/math.ts +0 -1
  222. package/src/utils/multi-map.ts +1 -1
  223. package/src/utils/objects.ts +1 -1
  224. package/src/utils/once.ts +2 -2
  225. package/src/utils/staticImplements.ts +1 -1
  226. package/src/utils/storage/jotai.ts +1 -1
  227. package/src/utils/tracer.ts +2 -2
  228. package/dist/assets/glide-data-editor-CDqunAkw.js +0 -132
  229. package/dist/assets/useLifecycle-D202VvPd.js +0 -1
@@ -73,7 +73,7 @@ function areKeysPressed(keys: string[], e: IKeyboardEvent): boolean {
73
73
  // - US keyboards: "&"
74
74
  // - Some layouts: "7"
75
75
  // Using e.code (physical key) instead of e.key (produced character)
76
- // eslint-disable-next-line unicorn/prefer-ternary
76
+ // oxlint-disable-next-line unicorn/prefer-ternary
77
77
  if (/^\d$/.test(key) && e.shiftKey) {
78
78
  satisfied &&= e.code === `Digit${key}`;
79
79
  } else {
@@ -84,7 +84,7 @@ describe("IslandsPyodideBridge", () => {
84
84
  beforeEach(() => {
85
85
  vi.clearAllMocks();
86
86
  // Reset the singleton by clearing the window property
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ // oxlint-disable-next-line typescript/no-explicit-any
88
88
  delete (window as any)._marimo_private_IslandsPyodideBridge;
89
89
  // Access the singleton - creates a fresh instance
90
90
  bridge = IslandsPyodideBridge.INSTANCE;
@@ -92,7 +92,7 @@ describe("IslandsPyodideBridge", () => {
92
92
 
93
93
  afterEach(() => {
94
94
  // Clean up singleton
95
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ // oxlint-disable-next-line typescript/no-explicit-any
96
96
  delete (window as any)._marimo_private_IslandsPyodideBridge;
97
97
  });
98
98
 
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import { getWorkerRPC } from "@/core/wasm/rpc";
5
5
  import { Deferred } from "@/utils/Deferred";
@@ -47,7 +47,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
47
47
  const blob = new Blob([js], { type: "application/javascript" });
48
48
  const objURL = URL.createObjectURL(blob);
49
49
  const worker = new Worker(
50
- // eslint-disable-next-line unicorn/relative-url-style
50
+ // oxlint-disable-next-line unicorn/relative-url-style
51
51
  objURL,
52
52
  {
53
53
  type: "module",
@@ -65,7 +65,7 @@ export const MarimoOutputWrapper: React.FC<Props> = ({
65
65
  // Lint still wants use to have the same event listeners per instance (which
66
66
  // makes sense), so noop is used.
67
67
  const maybeNoop = (fn: (e: KeyboardEvent) => void) =>
68
- // eslint-disable-next-line @typescript-eslint/no-empty-function
68
+ // oxlint-disable-next-line typescript/no-empty-function
69
69
  alwaysShowRun ? () => {} : fn;
70
70
 
71
71
  useEventListener(
@@ -72,7 +72,7 @@ export function parseMarimoIslandApps(): MarimoIslandApp[] {
72
72
  if (!apps.has(id)) {
73
73
  apps.set(id, { id, cells: [] });
74
74
  }
75
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
+ // oxlint-disable-next-line typescript/no-non-null-assertion
76
76
  const app = apps.get(id)!;
77
77
  const idx = app.cells.length;
78
78
  app.cells.push({
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import { WebSocketTransport } from "@open-rpc/client-js";
5
5
  import { beforeEach, describe, expect, it, vi } from "vitest";
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-redeclare */
2
+ /* oxlint-disable typescript/no-redeclare */
3
3
  import type { components } from "@marimo-team/marimo-api";
4
4
  import { Deferred } from "@/utils/Deferred";
5
5
  import { generateUUID } from "@/utils/uuid";
@@ -1,6 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /* oxlint-disable typescript/no-explicit-any */
4
4
 
5
5
  import { beforeEach, describe, expect, it, vi } from "vitest";
6
6
  import * as apiModule from "../api";
@@ -108,7 +108,7 @@ export const API = {
108
108
  response: Response;
109
109
  }): Promise<T> => {
110
110
  if (response.error) {
111
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
111
+ // oxlint-disable-next-line typescript/prefer-promise-reject-errors
112
112
  return Promise.reject(response.error);
113
113
  }
114
114
  return Promise.resolve(response.data as T);
@@ -118,7 +118,7 @@ export const API = {
118
118
  response: Response;
119
119
  }): Promise<null> => {
120
120
  if (response.error) {
121
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
121
+ // oxlint-disable-next-line typescript/prefer-promise-reject-errors
122
122
  return Promise.reject(response.error);
123
123
  }
124
124
  return Promise.resolve(null);
@@ -138,7 +138,7 @@ export function createLazyRequests(
138
138
  await runtimeManager.init();
139
139
  });
140
140
 
141
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
141
+ // oxlint-disable-next-line typescript/no-explicit-any
142
142
  function wrapRequest<T extends (...args: any[]) => Promise<any>>(
143
143
  request: T,
144
144
  key: keyof AllRequests,
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import { useAtomValue } from "jotai";
5
5
  import { Spinner } from "@/components/icons/spinner";
@@ -18,7 +18,7 @@ export function patchFetch(
18
18
 
19
19
  // Override the global fetch so when /@file/ is used, it returns the blob data
20
20
  window.fetch = async (input, init) => {
21
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
21
+ // oxlint-disable-next-line typescript/no-base-to-string
22
22
  const urlString = input instanceof Request ? input.url : input.toString();
23
23
 
24
24
  if (urlString.startsWith("data:")) {
@@ -6,7 +6,7 @@ import { isPlatformMac } from "../hotkeys/shortcuts";
6
6
  import { isWasm } from "../wasm/utils";
7
7
 
8
8
  export const isEmbedded =
9
- // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
9
+ // oxlint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
10
10
  typeof window !== "undefined" && window.parent !== window;
11
11
 
12
12
  // To enable keyboard shortcuts of VS Code when the iframe is focused,
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import { toast } from "@/components/ui/use-toast";
5
5
  import { userConfigAtom } from "@/core/config/config";
@@ -76,7 +76,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
76
76
 
77
77
  // Create save worker
78
78
  const saveWorker = new Worker(
79
- // eslint-disable-next-line unicorn/relative-url-style
79
+ // oxlint-disable-next-line unicorn/relative-url-style
80
80
  new URL("./worker/save-worker.ts", import.meta.url),
81
81
  {
82
82
  type: "module",
@@ -96,7 +96,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
96
96
 
97
97
  // Create a worker
98
98
  const worker = new Worker(
99
- // eslint-disable-next-line unicorn/relative-url-style
99
+ // oxlint-disable-next-line unicorn/relative-url-style
100
100
  new URL("./worker/worker.ts", import.meta.url),
101
101
  {
102
102
  type: "module",
@@ -3,5 +3,5 @@ import { Tracer } from "@/utils/tracer";
3
3
 
4
4
  export const t = new Tracer();
5
5
 
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ // oxlint-disable-next-line typescript/no-explicit-any
7
7
  (globalThis as any).t = t;
@@ -49,7 +49,7 @@ function createConnectionTransport(
49
49
  export function useConnectionTransport(options: UseConnectionTransportOptions) {
50
50
  const { onOpen, onMessage, onClose, onError, waitToConnect } = options;
51
51
 
52
- // eslint-disable-next-line react/hook-use-state
52
+ // oxlint-disable-next-line react/hook-use-state
53
53
  const [transport] = useState<IConnectionTransport>(() => {
54
54
  const socket = createConnectionTransport(options);
55
55
 
@@ -83,7 +83,7 @@ export function useConnectionTransport(options: UseConnectionTransportOptions) {
83
83
  transport.removeEventListener("error", onError);
84
84
  transport.removeEventListener("message", onMessage);
85
85
  };
86
- // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
87
87
  }, [transport]);
88
88
 
89
89
  return transport;
@@ -147,73 +147,49 @@
147
147
  --shadow-none: none;
148
148
  --shadow-xxs: 0px 0px 2px 0px var(--base-shadow-darker);
149
149
 
150
- /* biome-ignore format: definition needs to be oneline or breaks variants */
151
- --shadow-xs:
152
- 1px 1px 2px 0px var(--base-shadow),
153
- 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
154
-
155
- /* biome-ignore format: definition needs to be oneline or breaks variants */
156
- --shadow-sm:
157
- 2px 2px 2px 0px var(--base-shadow),
158
- 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
159
-
160
- /* biome-ignore format: definition needs to be oneline or breaks variants */
161
- --shadow-md:
162
- 4px 4px 4px 0px var(--base-shadow),
163
- 0 0px 4px 0px hsl(0deg 0% 60% / var(--base-shadow-opacity));
164
-
165
- /* biome-ignore format: definition needs to be oneline or breaks variants */
166
- --shadow-lg:
167
- 5px 6px 4px 0px var(--base-shadow),
168
- 0 0px 4px 0px hsl(0deg 0% 75% / var(--base-shadow-opacity));
169
-
170
- /* biome-ignore format: definition needs to be oneline or breaks variants */
171
- --shadow-xl:
172
- 8px 9px 4px 0px var(--base-shadow),
173
- 0 0px 6px 0px hsl(0deg 0% 85% / var(--base-shadow-opacity));
174
-
175
- /* biome-ignore format: definition needs to be oneline or breaks variants */
176
- --shadow-2xl:
177
- 10px 12px 10px 0px var(--base-shadow),
178
- 0 0px 8px 0px hsl(0deg 0% 90% / var(--base-shadow-opacity));
179
-
180
- /* biome-ignore format: definition needs to be oneline or breaks variants */
181
- --shadow-xs-solid:
182
- 1px 1px 0px 0px var(--base-shadow-darker),
183
- 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
184
-
185
- /* biome-ignore format: definition needs to be oneline or breaks variants */
186
- --shadow-sm-solid:
187
- 2px 2px 0px 0px var(--base-shadow-darker),
188
- 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
189
-
190
- /* biome-ignore format: definition needs to be oneline or breaks variants */
191
- --shadow-md-solid:
192
- 4px 4px 0px 0px var(--base-shadow-darker),
193
- 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
194
-
195
- /* biome-ignore format: definition needs to be oneline or breaks variants */
196
- --shadow-lg-solid:
197
- 5px 6px 0px 0px var(--base-shadow-darker),
198
- 0 0px 4px 0px hsl(0deg 0% 75% / 50%);
199
-
200
- /* biome-ignore format: definition needs to be oneline or breaks variants */
201
- --shadow-xl-solid:
202
- 7px 8px 0px 0px var(--base-shadow-darker),
203
- 0 0px 4px 0px hsl(0deg 0% 85% / 50%);
204
-
205
- /* biome-ignore format: definition needs to be oneline or breaks variants */
206
- --shadow-2xl-solid:
207
- 10px 12px 0px 0px var(--base-shadow-darker),
208
- 0 0px 8px 0px hsl(0deg 0% 90% / 50%);
150
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
151
+ --shadow-xs: 1px 1px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
152
+
153
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
154
+ --shadow-sm: 2px 2px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
155
+
156
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
157
+ --shadow-md: 4px 4px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 60% / var(--base-shadow-opacity));
158
+
159
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
160
+ --shadow-lg: 5px 6px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 75% / var(--base-shadow-opacity));
161
+
162
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
163
+ --shadow-xl: 8px 9px 4px 0px var(--base-shadow), 0 0px 6px 0px hsl(0deg 0% 85% / var(--base-shadow-opacity));
164
+
165
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
166
+ --shadow-2xl: 10px 12px 10px 0px var(--base-shadow), 0 0px 8px 0px hsl(0deg 0% 90% / var(--base-shadow-opacity));
167
+
168
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
169
+ --shadow-xs-solid: 1px 1px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
170
+
171
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
172
+ --shadow-sm-solid: 2px 2px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
173
+
174
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
175
+ --shadow-md-solid: 4px 4px 0px 0px var(--base-shadow-darker), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
176
+
177
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
178
+ --shadow-lg-solid: 5px 6px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 75% / 50%);
179
+
180
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
181
+ --shadow-xl-solid: 7px 8px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 85% / 50%);
182
+
183
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
184
+ --shadow-2xl-solid: 10px 12px 0px 0px var(--base-shadow-darker), 0 0px 8px 0px hsl(0deg 0% 90% / 50%);
209
185
 
210
186
  /* Solid shadows with lighter shade color */
211
187
 
212
- /* biome-ignore format: definition needs to be oneline or breaks variants */
188
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
213
189
  --shadow-sm-solid-shade:
214
190
  2px 2px 0px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
215
191
 
216
- /* biome-ignore format: definition needs to be oneline or breaks variants */
192
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
217
193
  --shadow-md-solid-shade:
218
194
  4px 4px 0px 0px var(--base-shadow), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
219
195
  }
package/src/custom.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
  declare module "*.svg" {
4
4
  const content: string | undefined;
5
5
  export default content;
@@ -17,7 +17,7 @@ function createHotkeys(
17
17
  keys: Partial<Record<HotkeyAction, Hotkey>>,
18
18
  ): Record<HotkeyAction, Hotkey> {
19
19
  return new Proxy(keys as Record<HotkeyAction, Hotkey>, {
20
- // biome-ignore lint: ok to have three arguments here (It's a web API)
20
+ // oxlint-ignore-next-line -- ok to have three arguments here (It's a web API)
21
21
  get(target, p, receiver) {
22
22
  const key = Reflect.get(target, p, receiver);
23
23
  if (key === "undefined") {
@@ -402,7 +402,7 @@ describe("findDuplicateShortcuts", () => {
402
402
  });
403
403
 
404
404
  const provider = new HotkeyProvider(hotkeys, { platform: "mac" });
405
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
405
+ // oxlint-disable-next-line typescript/no-explicit-any
406
406
  const result = findDuplicateShortcuts(provider, "NonExistent" as any);
407
407
 
408
408
  // Should still work normally and detect the duplicate
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable react-hooks/rules-of-hooks */
2
+ /* oxlint-disable react-hooks/rules-of-hooks */
3
3
 
4
4
  import { dequal } from "dequal";
5
5
  import { useEffect, useMemo, useRef } from "react";
@@ -21,7 +21,7 @@ export function useDebugMounting(name: string) {
21
21
  return () => {
22
22
  Logger.debug(`🐛 [${name}] unmounted. Renders: ${renders.current}`);
23
23
  };
24
- // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
25
25
  }, []);
26
26
 
27
27
  useEffect(() => {
@@ -111,6 +111,6 @@ export function useMemoDebugChanges<T>(
111
111
  previousDeps.current = deps;
112
112
 
113
113
  return fn();
114
- // eslint-disable-next-line react-hooks/exhaustive-deps
114
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
115
115
  }, deps);
116
116
  }
@@ -78,7 +78,7 @@ export function useDebounceControlledState<T>(opts: {
78
78
  };
79
79
  }
80
80
 
81
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
+ // oxlint-disable-next-line typescript/no-explicit-any
82
82
  export function useDebouncedCallback<T extends (...args: any[]) => unknown>(
83
83
  callback: T,
84
84
  delay: number,
@@ -57,7 +57,7 @@ export function useEventListener(
57
57
  return;
58
58
  }
59
59
 
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ // oxlint-disable-next-line typescript/no-explicit-any
61
61
  const eventListener = (event: any) => savedListener.current(event);
62
62
  target.addEventListener(type, eventListener, options);
63
63
 
@@ -14,7 +14,7 @@ import { useEventListener } from "./useEventListener";
14
14
 
15
15
  type HotkeyHandler = (
16
16
  evt?: KeyboardEvent,
17
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
17
+ // oxlint-disable-next-line typescript/no-invalid-void-type
18
18
  ) => boolean | void | undefined | Promise<void>;
19
19
 
20
20
  /**
@@ -5,7 +5,7 @@ import { type EffectCallback, useEffect } from "react";
5
5
  * Wrapper around useEffect that makes it clearer that the effect is run, just on mount.
6
6
  */
7
7
  export function useOnMount(effect: EffectCallback) {
8
- // eslint-disable-next-line react-hooks/exhaustive-deps
8
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
9
9
  useEffect(effect, []);
10
10
  }
11
11
 
@@ -13,7 +13,7 @@ export function useOnMount(effect: EffectCallback) {
13
13
  * Wrapper around useEffect that makes it clearer that the effect is run, just on unmount.
14
14
  */
15
15
  export function useOnUnmount(effect: EffectCallback) {
16
- // eslint-disable-next-line react-hooks/exhaustive-deps
16
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
17
17
  useEffect(() => {
18
18
  return effect();
19
19
  }, []);
@@ -2,7 +2,7 @@
2
2
  import { useCallback, useState } from "react";
3
3
 
4
4
  export function useNonce() {
5
- // eslint-disable-next-line react/hook-use-state
5
+ // oxlint-disable-next-line react/hook-use-state
6
6
  const [, setNonce] = useState(0);
7
7
  return useCallback(() => {
8
8
  setNonce((n) => n + 1);
@@ -28,10 +28,10 @@ export function useResizeObserver<T extends HTMLElement = HTMLElement>(
28
28
  options: UseResizeObserverOptions<T>,
29
29
  ): void {
30
30
  const { ref, box = "content-box", skip } = options;
31
- // eslint-disable-next-line react/hook-use-state
31
+ // oxlint-disable-next-line react/hook-use-state
32
32
  const previousSize = useRef<Size>({ ...initialSize });
33
33
  const onResize = useRef<((size: Size) => void) | undefined>(undefined);
34
- // eslint-disable-next-line react-hooks/react-compiler
34
+ // oxlint-disable-next-line react-hooks/react-compiler
35
35
  onResize.current = options.onResize;
36
36
 
37
37
  useEffect(() => {
package/src/main.tsx CHANGED
@@ -8,7 +8,7 @@ declare global {
8
8
  }
9
9
  }
10
10
 
11
- // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
11
+ // oxlint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
12
12
  const el = document.getElementById("root");
13
13
  if (el) {
14
14
  if (!window.__MARIMO_MOUNT_CONFIG__) {
@@ -47,7 +47,7 @@ const removeWrappingBodyTags: TransformFn = (
47
47
  if (isValidElement(reactNode) && "props" in reactNode) {
48
48
  const props = reactNode.props as { children?: ReactNode };
49
49
  const children = props.children;
50
- return <>{children}</>; // eslint-disable-line react/jsx-no-useless-fragment
50
+ return <>{children}</>; // oxlint-disable-line react/jsx-no-useless-fragment
51
51
  }
52
52
  return;
53
53
  }
@@ -62,7 +62,7 @@ const removeWrappingHtmlTags: TransformFn = (
62
62
  if (isValidElement(reactNode) && "props" in reactNode) {
63
63
  const props = reactNode.props as { children?: ReactNode };
64
64
  const children = props.children;
65
- return <>{children}</>; // eslint-disable-line react/jsx-no-useless-fragment
65
+ return <>{children}</>; // oxlint-disable-line react/jsx-no-useless-fragment
66
66
  }
67
67
  return;
68
68
  }
@@ -104,7 +104,7 @@ const replaceSrcScripts = (domNode: DOMNode): JSX.Element | undefined => {
104
104
  script.src = src;
105
105
  document.head.append(script);
106
106
  }
107
- // biome-ignore lint/complexity/noUselessFragments: this is intentional
107
+ // oxlint-disable-next-line react/jsx-no-useless-fragment
108
108
  return <></>;
109
109
  }
110
110
  };
@@ -58,7 +58,7 @@ describe("isCustomMarimoElement", () => {
58
58
  });
59
59
 
60
60
  describe("connectedCallback - light DOM nesting detection", () => {
61
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ // oxlint-disable-next-line typescript/no-explicit-any
62
62
  let createRootSpy: any;
63
63
  const mockRoot = {
64
64
  render: vi.fn(),
@@ -1,6 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- /* eslint-disable unicorn/prefer-spread */
3
+ /* oxlint-disable unicorn/prefer-spread */
4
4
  /**
5
5
  * WebComponent Factory for React Components
6
6
  *
@@ -88,7 +88,7 @@ interface PluginSlotProps<T> {
88
88
 
89
89
  /* Handles synchronization of value on behalf of the component */
90
90
 
91
- // eslint-disable-next-line react/function-component-definition
91
+ // oxlint-disable-next-line react/function-component-definition
92
92
  function PluginSlotInternal<T>(
93
93
  { hostElement, plugin, children, getInitialValue }: PluginSlotProps<T>,
94
94
  ref: React.Ref<PluginSlotHandle>,
@@ -231,7 +231,7 @@ function PluginSlotInternal<T>(
231
231
  }
232
232
 
233
233
  return methods;
234
- // eslint-disable-next-line react-hooks/exhaustive-deps
234
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
235
235
  }, [plugin.functions, hostElement, resetNonce]);
236
236
 
237
237
  // If we failed to parse the initial value, render an error
@@ -265,7 +265,7 @@ function PluginSlotInternal<T>(
265
265
  }
266
266
 
267
267
  const PluginSlot: React.ForwardRefExoticComponent<
268
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
268
+ // oxlint-disable-next-line typescript/no-explicit-any
269
269
  PluginSlotProps<any> & React.RefAttributes<PluginSlotHandle>
270
270
  > = React.forwardRef(PluginSlotInternal);
271
271
 
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import type { ZodType } from "zod";
5
5
 
@@ -205,7 +205,7 @@ interface Data<T> {
205
205
  cellHoverTexts?: Record<string, Record<string, string | null>> | null;
206
206
  }
207
207
 
208
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
208
+ // oxlint-disable-next-line typescript/consistent-type-definitions
209
209
  type DataTableFunctions = {
210
210
  download_as: DownloadAsArgs;
211
211
  get_column_summaries: <T>(opts: {}) => Promise<ColumnSummaries<T>>;
@@ -62,7 +62,7 @@ interface FileInfo {
62
62
  is_directory: boolean;
63
63
  }
64
64
 
65
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
65
+ // oxlint-disable-next-line typescript/consistent-type-definitions
66
66
  type PluginFunctions = {
67
67
  list_directory: (req: { path: string }) => Promise<{
68
68
  files: FileInfo[];
@@ -44,7 +44,7 @@ interface Data {
44
44
  * is clicked, this plugin assumes the value of the associated plugin.
45
45
  */
46
46
 
47
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
47
+ // oxlint-disable-next-line typescript/consistent-type-definitions
48
48
  type Functions = {
49
49
  validate: (req: { value?: unknown }) => Promise<string | undefined | null>;
50
50
  };
@@ -52,7 +52,7 @@ beforeEach(() => {
52
52
 
53
53
  // jsdom's PointerEvent doesn't properly inherit MouseEvent properties
54
54
  // like clientX. Polyfill it so fireEvent.pointerDown/Move/Up work.
55
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ // oxlint-disable-next-line typescript/no-explicit-any
56
56
  (globalThis as any).PointerEvent = class PointerEvent extends MouseEvent {
57
57
  readonly pointerId: number;
58
58
  constructor(type: string, init: PointerEventInit = {}) {
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import type { AnyWidget } from "@anywidget/types";
5
5
  import { useEffect, useRef } from "react";
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import type { AnyModel } from "@anywidget/types";
5
5
  import { debounce } from "lodash-es";
@@ -2,7 +2,7 @@
2
2
  import type { Base64String } from "@/utils/json/base64";
3
3
  import type { TypedString } from "@/utils/typed";
4
4
 
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ // oxlint-disable-next-line typescript/no-explicit-any
6
6
  export type EventHandler = (...args: any[]) => void;
7
7
 
8
8
  /**
@@ -13,7 +13,7 @@ export type WidgetModelId = TypedString<"WidgetModelId">;
13
13
  /**
14
14
  * AnyWidget model state with buffers.
15
15
  */
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ // oxlint-disable-next-line typescript/no-explicit-any
17
17
  export type ModelState = Record<string | number, any>;
18
18
 
19
19
  /**
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* oxlint-disable typescript/no-explicit-any */
3
3
 
4
4
  import type { AnyWidget, Experimental } from "@anywidget/types";
5
5
  import { asRemoteURL } from "@/core/runtime/config";
@@ -13,7 +13,7 @@ const LazyChatbot = React.lazy(() =>
13
13
  import("./chat-ui").then((m) => ({ default: m.Chatbot })),
14
14
  );
15
15
 
16
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
16
+ // oxlint-disable-next-line typescript/consistent-type-definitions
17
17
  export type PluginFunctions = {
18
18
  get_chat_history: (req: {}) => Promise<{ messages: UIMessage[] }>;
19
19
  delete_chat_history: (req: {}) => Promise<null>;