@marimo-team/islands 0.25.1-dev4 → 0.25.1-dev40

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 (274) hide show
  1. package/dist/{ConnectedDataExplorerComponent-KVhjDMSe.js → ConnectedDataExplorerComponent-CwMXfDQR.js} +3 -3
  2. package/dist/{ErrorBoundary-pV36lYEK.js → ErrorBoundary-CAJO-M56.js} +1 -1
  3. package/dist/{ImageComparisonComponent-Dlm5aWnH.js → ImageComparisonComponent-Cpfz30OZ.js} +51 -52
  4. package/dist/{abnfDiagram-VCTEODGH-CpN0FRda.js → abnfDiagram-VCTEODGH-AFhOQTt8.js} +3 -3
  5. package/dist/{architectureDiagram-5GKGNRK7-DDyj5SRB.js → architectureDiagram-5GKGNRK7-BngksAAQ.js} +5 -5
  6. package/dist/{blockDiagram-I7D4REHJ-BbXEXJRu.js → blockDiagram-I7D4REHJ-CvBmppdy.js} +9 -9
  7. package/dist/{c4Diagram-7LVT6UL2-DcLsbQmR.js → c4Diagram-7LVT6UL2-EceL4_jH.js} +7 -7
  8. package/dist/{cells-B5-y5EY3.js → cells-Cv93oav_.js} +3 -3
  9. package/dist/{channel-B5XnTarr.js → channel-z7HZXHwv.js} +1 -1
  10. package/dist/{chat-ui-HJZsTl7o.js → chat-ui-DLSF8a04.js} +4 -4
  11. package/dist/{chunk-4HAMMTFA-D2qv8E0X.js → chunk-4HAMMTFA-BPTTOOC5.js} +5 -5
  12. package/dist/{chunk-75Z2AOVW-5_HsvXwr.js → chunk-75Z2AOVW-C4AOleKf.js} +1 -1
  13. package/dist/{chunk-DU6HZSFF-BUgAHvnM.js → chunk-DU6HZSFF-1TwWR6gh.js} +1 -1
  14. package/dist/{chunk-F27PBJKO-DHmYWZXr.js → chunk-F27PBJKO-DMI1PBe4.js} +1 -1
  15. package/dist/{chunk-GMAD6QVW-Czynz8aA.js → chunk-GMAD6QVW-vStrMz2P.js} +3 -3
  16. package/dist/{chunk-GVQU2GXP-yQEdulRS.js → chunk-GVQU2GXP-2HwWgs4u.js} +2 -2
  17. package/dist/{chunk-IMKFNOWR-BfwTebD0.js → chunk-IMKFNOWR-UOVZuZVn.js} +5 -5
  18. package/dist/{chunk-L3NEJ4N5-DwRWnDDK.js → chunk-L3NEJ4N5-RhC7i0I2.js} +5 -5
  19. package/dist/{chunk-OSK3NFVY-BBKU_Ign.js → chunk-OSK3NFVY-CZV09N-U.js} +6 -6
  20. package/dist/{chunk-P2QGCYS3-C0iGU29N.js → chunk-P2QGCYS3-0TAWai9C.js} +1 -1
  21. package/dist/{chunk-POPQ4Y6H-BCbS3Ozc.js → chunk-POPQ4Y6H-Cc3_56GX.js} +1 -1
  22. package/dist/{chunk-PWAF6VOD-CTFCL0jI.js → chunk-PWAF6VOD-lNxB9k8z.js} +1 -1
  23. package/dist/{chunk-SHT3W25Y-BspJEJ5H.js → chunk-SHT3W25Y-CrEPyWy1.js} +7 -7
  24. package/dist/{chunk-SVP7TREG-DX3rFNTe.js → chunk-SVP7TREG-uIyyySp6.js} +2 -2
  25. package/dist/{chunk-TICWLB2K-fVF7Uujg.js → chunk-TICWLB2K-DdXM3eg6.js} +5 -5
  26. package/dist/classDiagram-ZZMXUADV-BiATbBE4.js +30 -0
  27. package/dist/classDiagram-v2-VYDZK3BY-JnH97GYw.js +30 -0
  28. package/dist/{code-visibility-CgZS2a3W.js → code-visibility-XU9RAJNV.js} +2 -2
  29. package/dist/{common-DnMDPPaW.js → common-C0fbrgB8.js} +13 -13
  30. package/dist/{cynefinDiagram-5FMLGOSQ-CFQrqzSX.js → cynefinDiagram-5FMLGOSQ-zknaAsGy.js} +3 -3
  31. package/dist/{dagre-GXQ25YYZ-xHNAUTyG.js → dagre-GXQ25YYZ-BhMOoMGJ.js} +10 -10
  32. package/dist/{data-grid-overlay-editor-hHYgD_Sm.js → data-grid-overlay-editor-BnhbJgoq.js} +1 -1
  33. package/dist/{diagram-S7CK7UJ4-Bt1rPbAx.js → diagram-S7CK7UJ4-V5-Z-EDY.js} +4 -4
  34. package/dist/{diagram-UQ7AKVKN-D1sq5FoZ.js → diagram-UQ7AKVKN-qw8AjDal.js} +3 -3
  35. package/dist/{diagram-VSXAHHWV-BKpmG23x.js → diagram-VSXAHHWV-CR7BJygZ.js} +2 -2
  36. package/dist/{diagram-VX7I27RA-BMwGFVD6.js → diagram-VX7I27RA-DfuqFb1E.js} +5 -5
  37. package/dist/{diagram-Z3DM3KII--KLDR9Pl.js → diagram-Z3DM3KII-DpWwlYZB.js} +3 -3
  38. package/dist/{dist-BaHjhkpZ.js → dist-CcyKTBTF.js} +1 -1
  39. package/dist/{ebnfDiagram-PWID7BFC-WnG4cvSQ.js → ebnfDiagram-PWID7BFC-C20OnNMZ.js} +3 -3
  40. package/dist/{erDiagram-RLTQ6QDP-DhzKiYHc.js → erDiagram-RLTQ6QDP-DBXLWO9v.js} +12 -12
  41. package/dist/{error-entries-Bkbpx0T0.js → error-entries-DLl0XqoW.js} +1 -1
  42. package/dist/{feedback-button-CvKssdG_.js → feedback-button-B0QSkbSp.js} +4 -4
  43. package/dist/flowDiagram-HODETNUW-DL52nMkt.js +16 -0
  44. package/dist/{formats-C8rLgZT9.js → formats-Cl_67ghI.js} +1 -1
  45. package/dist/{ganttDiagram-EL5Y4UJY-DbzEBLbl.js → ganttDiagram-EL5Y4UJY-cRRaDt88.js} +2 -2
  46. package/dist/{gitGraphDiagram-WWUBYQGX-BMf0iKi1.js → gitGraphDiagram-WWUBYQGX-Pox5k9-Y.js} +2 -2
  47. package/dist/{glide-data-editor-Ohetlgag.js → glide-data-editor-ymIQdwrb.js} +3 -3
  48. package/dist/{globals-CPNNcOJI.js → globals-B0S3-e_D.js} +1 -1
  49. package/dist/{html-to-image-BAgJOlSW.js → html-to-image-CGVgroef.js} +2 -2
  50. package/dist/{infoDiagram-27XIBGKW-BagtCX_5.js → infoDiagram-27XIBGKW-ntpxMfrq.js} +2 -2
  51. package/dist/{ishikawaDiagram-5VMMS53U-DByDehYy.js → ishikawaDiagram-5VMMS53U-BllIlHE5.js} +3 -3
  52. package/dist/{journeyDiagram-3NMN7TZE-D2LcKDUO.js → journeyDiagram-3NMN7TZE-EPJDPlt0.js} +2 -2
  53. package/dist/{kanban-definition-UXKFOSKX-BxwkbBI_.js → kanban-definition-UXKFOSKX-GYtNMjtS.js} +9 -9
  54. package/dist/{katex-C6D4cX_N.js → katex-BNCmKUol.js} +983 -1120
  55. package/dist/{loader-D2W4oM-3.js → loader-DEZSzvma.js} +253 -248
  56. package/dist/main.js +72 -69
  57. package/dist/{mermaid-DPNuhemn.js → mermaid-Dnzoxjt1.js} +49 -49
  58. package/dist/{mhchem-DWCF06w9.js → mhchem-BEc7A1or.js} +1 -1
  59. package/dist/{mindmap-definition-YA3MSWOX-Cgvojw3y.js → mindmap-definition-YA3MSWOX-Cth76xgH.js} +11 -11
  60. package/dist/{number-overlay-editor-CHWg5gGO.js → number-overlay-editor-DB3HJDI1.js} +1 -1
  61. package/dist/{pegDiagram-XKGWAZYB-DahHhYyN.js → pegDiagram-XKGWAZYB-Cu4uOXii.js} +3 -3
  62. package/dist/{pieDiagram-E7YTZNPT-CCtX0oCK.js → pieDiagram-E7YTZNPT-Bh3eDa9s.js} +3 -3
  63. package/dist/{process-output-zDX4jbhd.js → process-output-CGfg-JmZ.js} +2 -2
  64. package/dist/{quadrantDiagram-AXDQQJYC-DftINo6g.js → quadrantDiagram-AXDQQJYC--kqzFC3w.js} +1 -1
  65. package/dist/{railroadDiagram-O6MQD6OU-Du5NsPUb.js → railroadDiagram-O6MQD6OU-DG-M6Rnc.js} +3 -3
  66. package/dist/{react-vega-5AcMW8gG.js → react-vega-ewj7q_U5.js} +1 -1
  67. package/dist/{requirementDiagram-BXWQKSXE-0pmmxL6_.js → requirementDiagram-BXWQKSXE-DCwsThh0.js} +11 -11
  68. package/dist/{reveal-component-BujcZI2B.js → reveal-component-CfTzIkA2.js} +3 -3
  69. package/dist/{sankeyDiagram-P5KCCOFB-CDKR5TJH.js → sankeyDiagram-P5KCCOFB-BdzhT0BM.js} +1 -1
  70. package/dist/{sequenceDiagram-WJ2MYXX4-DB-ChWwU.js → sequenceDiagram-WJ2MYXX4-CbXB1_PU.js} +4 -4
  71. package/dist/{stateDiagram-D77RDMKH-orN6AwMx.js → stateDiagram-D77RDMKH-A-Zf3Sb2.js} +13 -13
  72. package/dist/stateDiagram-v2-MP3YSRHH-D9YMnUGx.js +30 -0
  73. package/dist/style.css +1 -1
  74. package/dist/{swimlanes-42K2YHIH-BkSDcqDT.js → swimlanes-42K2YHIH-B_pMf0J4.js} +10 -10
  75. package/dist/swimlanesDiagram-VR7AAH4N-Ctgy-yGP.js +30 -0
  76. package/dist/{timeline-definition-24CTP7MA-BuqJUIRZ.js → timeline-definition-24CTP7MA-DTXFjTTM.js} +3 -3
  77. package/dist/{vega-component-CNf5gcrm.js → vega-component-tFOzgarw.js} +4 -4
  78. package/dist/{vega-embed-container-CbnTccZi.js → vega-embed-container-sSR5hAsy.js} +2 -2
  79. package/dist/{vega-loader.browser-D95WfUcj.js → vega-loader.browser-DNST6uVf.js} +2 -2
  80. package/dist/{vennDiagram-4TSXK5OY-CTUlJ2PK.js → vennDiagram-4TSXK5OY-BPHjZo0R.js} +3 -3
  81. package/dist/{wardleyDiagram-VM6X3IG4-3evLUb0M.js → wardleyDiagram-VM6X3IG4-6fTLYBuD.js} +3 -3
  82. package/dist/{xychartDiagram-S5SC5T6Z-DL2E3K8-.js → xychartDiagram-S5SC5T6Z-BYjwjrzE.js} +5 -5
  83. package/package.json +1 -2
  84. package/src/__mocks__/common.ts +3 -3
  85. package/src/__tests__/CellStatus.test.tsx +1 -1
  86. package/src/__tests__/setup.ts +7 -7
  87. package/src/components/app-config/ai-config.tsx +2 -0
  88. package/src/components/app-config/optional-features.tsx +1 -1
  89. package/src/components/chat/chat-panel.tsx +19 -8
  90. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +286 -0
  91. package/src/components/data-table/charts/charts.tsx +26 -13
  92. package/src/components/data-table/column-summary/chart-spec-model.tsx +4 -4
  93. package/src/components/dependency-graph/elements.ts +2 -2
  94. package/src/components/editor/__tests__/package-alert.test.tsx +140 -0
  95. package/src/components/editor/actions/__tests__/pair-with-agent.test.tsx +107 -0
  96. package/src/components/editor/actions/pair-with-agent.tsx +119 -0
  97. package/src/components/editor/actions/useNotebookActions.tsx +2 -1
  98. package/src/components/editor/ai/add-cell-with-ai.tsx +2 -0
  99. package/src/components/editor/ai/staged-cell-submission.ts +2 -2
  100. package/src/components/editor/ai/transport/chat-transport.tsx +1 -1
  101. package/src/components/editor/chrome/components/contribute-snippet-button.tsx +6 -1
  102. package/src/components/editor/connections/database/as-code.ts +44 -44
  103. package/src/components/editor/connections/storage/as-code.ts +3 -3
  104. package/src/components/editor/file-tree/requesting-tree.tsx +16 -13
  105. package/src/components/editor/navigation/clipboard.ts +2 -2
  106. package/src/components/editor/notebook-cell.tsx +2 -2
  107. package/src/components/editor/output/MarimoTracebackOutput.tsx +1 -1
  108. package/src/components/editor/output/VideoOutput.tsx +1 -1
  109. package/src/components/editor/output/ansi-reduce.ts +21 -17
  110. package/src/components/editor/output/console/ConsoleOutput.tsx +3 -3
  111. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +59 -0
  112. package/src/components/editor/output/console/text-rendering.tsx +3 -1
  113. package/src/components/editor/package-alert.tsx +20 -7
  114. package/src/components/home/components.tsx +1 -0
  115. package/src/components/pages/run-page.tsx +1 -0
  116. package/src/components/slides/__tests__/minimap-actions.test.tsx +7 -7
  117. package/src/components/slides/__tests__/minimap.test.ts +12 -12
  118. package/src/components/slides/__tests__/slide-scroll-hint.test.tsx +8 -8
  119. package/src/components/static-html/share-modal.tsx +2 -1
  120. package/src/components/static-html/static-banner.tsx +2 -2
  121. package/src/components/ui/links.tsx +6 -1
  122. package/src/components/ui/typography.tsx +16 -8
  123. package/src/core/ai/context/__tests__/registry.test.ts +31 -28
  124. package/src/core/ai/context/providers/cell-output.ts +8 -8
  125. package/src/core/ai/context/providers/datasource.ts +10 -7
  126. package/src/core/ai/context/providers/error.ts +7 -7
  127. package/src/core/ai/context/providers/file.ts +8 -8
  128. package/src/core/ai/context/providers/tables.ts +7 -7
  129. package/src/core/ai/context/providers/variable.ts +7 -7
  130. package/src/core/ai/context/registry.ts +18 -18
  131. package/src/core/ai/ids/ids.ts +5 -5
  132. package/src/core/ai/model-registry.ts +12 -9
  133. package/src/core/ai/staged-cells.ts +6 -6
  134. package/src/core/ai/tools/base.ts +6 -6
  135. package/src/core/ai/tools/edit-notebook-tool.ts +6 -6
  136. package/src/core/ai/tools/registry.ts +4 -4
  137. package/src/core/ai/tools/run-cells-tool.ts +7 -7
  138. package/src/core/ai/tools/sample-tool.ts +6 -6
  139. package/src/core/cells/__tests__/cells.test.ts +27 -0
  140. package/src/core/cells/cells.ts +2 -1
  141. package/src/core/codemirror/cells/debugger-decorations.ts +13 -7
  142. package/src/core/codemirror/cells/line-timing-decorations.ts +9 -9
  143. package/src/core/codemirror/cells/traceback-decorations.ts +7 -4
  144. package/src/core/codemirror/code-lens/extension.ts +13 -13
  145. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +6 -6
  146. package/src/core/codemirror/copilot/__tests__/transport.test.ts +12 -12
  147. package/src/core/codemirror/copilot/language-server.ts +13 -13
  148. package/src/core/codemirror/copilot/transport.ts +1 -1
  149. package/src/core/codemirror/find-replace/search-highlight.ts +5 -5
  150. package/src/core/codemirror/go-to-definition/underline.ts +3 -3
  151. package/src/core/codemirror/keymaps/vim.ts +3 -3
  152. package/src/core/codemirror/language/languages/markdown.ts +8 -8
  153. package/src/core/codemirror/language/languages/python.ts +7 -7
  154. package/src/core/codemirror/language/languages/sql/completion-builder.ts +5 -5
  155. package/src/core/codemirror/language/languages/sql/completion-store.ts +4 -4
  156. package/src/core/codemirror/language/languages/sql/sql.ts +21 -21
  157. package/src/core/codemirror/lsp/__tests__/transports.test.ts +10 -10
  158. package/src/core/codemirror/lsp/federated-lsp.ts +29 -27
  159. package/src/core/codemirror/lsp/notebook-lsp.ts +21 -21
  160. package/src/core/codemirror/misc/__tests__/dnd.test.ts +10 -10
  161. package/src/core/codemirror/misc/__tests__/paste.test.ts +7 -4
  162. package/src/core/codemirror/reactive-references/extension.ts +3 -3
  163. package/src/core/codemirror/rtc/loro/awareness.ts +12 -12
  164. package/src/core/codemirror/rtc/loro/sync.ts +5 -5
  165. package/src/core/codemirror/vim/cursor-visibility.ts +3 -3
  166. package/src/core/dom/ui-element.ts +5 -5
  167. package/src/core/dom/uiregistry.ts +10 -10
  168. package/src/core/hotkeys/hotkeys.ts +9 -9
  169. package/src/core/islands/__tests__/bridge.test.ts +4 -4
  170. package/src/core/islands/__tests__/test-utils.tsx +4 -4
  171. package/src/core/islands/bridge.ts +85 -82
  172. package/src/core/islands/components/web-components.tsx +7 -7
  173. package/src/core/islands/worker/__tests__/controller.test.ts +1 -1
  174. package/src/core/islands/worker/controller.ts +6 -3
  175. package/src/core/islands/worker-factory.ts +2 -2
  176. package/src/core/kernel/RuntimeState.ts +4 -4
  177. package/src/core/lsp/__tests__/transport.test.ts +19 -19
  178. package/src/core/lsp/transport.ts +5 -5
  179. package/src/core/network/CachingRequestRegistry.ts +2 -2
  180. package/src/core/network/DeferredRequestRegistry.ts +4 -4
  181. package/src/core/runtime/runtime.ts +25 -20
  182. package/src/core/static/virtual-file-tracker.ts +5 -5
  183. package/src/core/wasm/__tests__/bridge.test.ts +2 -2
  184. package/src/core/wasm/bridge.ts +130 -126
  185. package/src/core/wasm/router.ts +5 -5
  186. package/src/core/wasm/store.ts +4 -4
  187. package/src/core/wasm/worker/bootstrap.ts +8 -5
  188. package/src/core/wasm/worker/message-buffer.ts +3 -3
  189. package/src/core/websocket/transports/__tests__/ws.test.ts +8 -8
  190. package/src/core/websocket/transports/basic.ts +15 -8
  191. package/src/core/websocket/transports/sse.ts +7 -7
  192. package/src/core/websocket/transports/transport.ts +3 -3
  193. package/src/core/websocket/transports/ws.ts +9 -7
  194. package/src/css/globals.css +18 -21
  195. package/src/css/katex.min.css +260 -241
  196. package/src/hooks/__tests__/useOverflowDetection.test.tsx +5 -5
  197. package/src/hooks/__tests__/useResizeObserver.test.tsx +12 -12
  198. package/src/plugins/core/registerReactComponent.tsx +5 -5
  199. package/src/plugins/core/sidebar-element.tsx +2 -2
  200. package/src/plugins/impl/ButtonPlugin.tsx +3 -3
  201. package/src/plugins/impl/CheckboxPlugin.tsx +3 -3
  202. package/src/plugins/impl/CodeEditorPlugin.tsx +3 -3
  203. package/src/plugins/impl/DatePickerPlugin.tsx +3 -3
  204. package/src/plugins/impl/DateRangePlugin.tsx +3 -3
  205. package/src/plugins/impl/DateTimePickerPlugin.tsx +3 -3
  206. package/src/plugins/impl/DictPlugin.tsx +3 -3
  207. package/src/plugins/impl/DropdownPlugin.tsx +3 -3
  208. package/src/plugins/impl/FileUploadPlugin.tsx +3 -3
  209. package/src/plugins/impl/MatrixPlugin.tsx +4 -4
  210. package/src/plugins/impl/MicrophonePlugin.tsx +3 -3
  211. package/src/plugins/impl/MultiselectPlugin.tsx +3 -3
  212. package/src/plugins/impl/NumberPlugin.tsx +3 -3
  213. package/src/plugins/impl/RadioPlugin.tsx +9 -5
  214. package/src/plugins/impl/RangeSliderPlugin.tsx +3 -3
  215. package/src/plugins/impl/RefreshPlugin.tsx +3 -3
  216. package/src/plugins/impl/SliderPlugin.tsx +3 -3
  217. package/src/plugins/impl/SwitchPlugin.tsx +3 -3
  218. package/src/plugins/impl/TabsPlugin.tsx +3 -3
  219. package/src/plugins/impl/TextAreaPlugin.tsx +3 -3
  220. package/src/plugins/impl/TextInputPlugin.tsx +3 -3
  221. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +2 -2
  222. package/src/plugins/impl/anywidget/model.ts +10 -10
  223. package/src/plugins/impl/anywidget/registry.ts +12 -9
  224. package/src/plugins/impl/anywidget/runtime.ts +11 -9
  225. package/src/plugins/impl/anywidget/widget-binding.ts +6 -6
  226. package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +7 -6
  227. package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +3 -3
  228. package/src/plugins/impl/matplotlib/__tests__/matplotlib-renderer.test.ts +2 -2
  229. package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +2 -2
  230. package/src/plugins/impl/mpl-interactive/mpl-websocket-shim.ts +10 -10
  231. package/src/plugins/impl/panel/utils.ts +5 -5
  232. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +3 -3
  233. package/src/plugins/impl/vega/VegaPlugin.tsx +3 -3
  234. package/src/plugins/impl/vega/__tests__/use-vega-container-remeasure.test.ts +7 -7
  235. package/src/plugins/impl/vega/__tests__/utils.test.ts +16 -1
  236. package/src/plugins/impl/vega/__tests__/vega.test.ts +37 -0
  237. package/src/plugins/impl/vega/loader.ts +23 -1
  238. package/src/plugins/impl/vega/utils.ts +5 -4
  239. package/src/plugins/layout/AccordionPlugin.tsx +3 -3
  240. package/src/plugins/layout/CalloutPlugin.tsx +3 -3
  241. package/src/plugins/layout/ImageComparisonPlugin.tsx +5 -3
  242. package/src/plugins/layout/JsonOutputPlugin.tsx +3 -3
  243. package/src/plugins/layout/MimeRenderPlugin.tsx +3 -3
  244. package/src/plugins/layout/NavigationMenuPlugin.tsx +3 -3
  245. package/src/plugins/layout/OutlinePlugin.tsx +3 -3
  246. package/src/plugins/layout/ProgressPlugin.tsx +3 -3
  247. package/src/plugins/layout/RoutesPlugin.tsx +6 -8
  248. package/src/plugins/layout/StatPlugin.tsx +3 -3
  249. package/src/plugins/layout/TexPlugin.tsx +3 -3
  250. package/src/plugins/layout/carousel/CarouselPlugin.tsx +4 -4
  251. package/src/plugins/layout/mermaid/MermaidPlugin.tsx +3 -3
  252. package/src/utils/Deferred.ts +6 -6
  253. package/src/utils/async-capture-tracker.ts +10 -7
  254. package/src/utils/errors.ts +5 -5
  255. package/src/utils/id-tree.tsx +83 -80
  256. package/src/utils/lru.ts +1 -1
  257. package/src/utils/multi-map.ts +14 -12
  258. package/src/utils/paths.ts +6 -6
  259. package/src/utils/pluralize.ts +3 -3
  260. package/src/utils/progress.ts +6 -6
  261. package/src/utils/python-poet/poet.ts +14 -14
  262. package/src/utils/routes.ts +4 -2
  263. package/src/utils/semaphore.ts +6 -6
  264. package/src/utils/storage/storage.ts +6 -6
  265. package/src/utils/storage/typed.ts +16 -12
  266. package/src/utils/time.ts +9 -9
  267. package/src/utils/timed-cache.ts +4 -4
  268. package/src/utils/tracer.ts +9 -6
  269. package/dist/classDiagram-ZZMXUADV-Fe-V14Sc.js +0 -30
  270. package/dist/classDiagram-v2-VYDZK3BY-xTDg7lOs.js +0 -30
  271. package/dist/flowDiagram-HODETNUW-6dMdB8pR.js +0 -16
  272. package/dist/katex-DFBiSucW.js +0 -21840
  273. package/dist/stateDiagram-v2-MP3YSRHH-o05_rJN8.js +0 -30
  274. package/dist/swimlanesDiagram-VR7AAH4N-D_nFQfRc.js +0 -30
@@ -42,16 +42,16 @@ class LineTimerWidget extends WidgetType {
42
42
 
43
43
  private readonly startedAtMs: number;
44
44
 
45
- constructor(startedAtMs: number) {
45
+ public constructor(startedAtMs: number) {
46
46
  super();
47
47
  this.startedAtMs = startedAtMs;
48
48
  }
49
49
 
50
- override eq(other: LineTimerWidget): boolean {
50
+ public override eq(other: LineTimerWidget): boolean {
51
51
  return other.startedAtMs === this.startedAtMs;
52
52
  }
53
53
 
54
- override toDOM(): HTMLElement {
54
+ public override toDOM(): HTMLElement {
55
55
  const el = document.createElement("span");
56
56
  el.className = "cm-line-timer";
57
57
  el.setAttribute("aria-hidden", "true");
@@ -68,7 +68,7 @@ class LineTimerWidget extends WidgetType {
68
68
  return el;
69
69
  }
70
70
 
71
- override destroy(dom: HTMLElement): void {
71
+ public override destroy(dom: HTMLElement): void {
72
72
  const interval = LineTimerWidget.intervals.get(dom);
73
73
  if (interval !== undefined) {
74
74
  window.clearInterval(interval);
@@ -76,7 +76,7 @@ class LineTimerWidget extends WidgetType {
76
76
  }
77
77
  }
78
78
 
79
- override ignoreEvent(): boolean {
79
+ public override ignoreEvent(): boolean {
80
80
  return true;
81
81
  }
82
82
  }
@@ -112,9 +112,9 @@ function createTimingDecorations(
112
112
 
113
113
  class ActiveLineTimer implements PluginValue {
114
114
  private unsubscribe: () => void;
115
- decorations: DecorationSet;
115
+ public decorations: DecorationSet;
116
116
 
117
- constructor(
117
+ public constructor(
118
118
  view: EditorView,
119
119
  infoObservable: Observable<ActiveLineInfo | null>,
120
120
  ) {
@@ -129,11 +129,11 @@ class ActiveLineTimer implements PluginValue {
129
129
  });
130
130
  }
131
131
 
132
- update(update: ViewUpdate) {
132
+ public update(update: ViewUpdate) {
133
133
  this.decorations = this.decorations.map(update.changes);
134
134
  }
135
135
 
136
- destroy() {
136
+ public destroy() {
137
137
  this.unsubscribe();
138
138
  }
139
139
  }
@@ -91,9 +91,12 @@ function unfoldErrorLines(view: EditorView, errors: TracebackInfos) {
91
91
  */
92
92
  class ErrorHighlighter implements PluginValue {
93
93
  private unsubscribe: () => void;
94
- decorations: DecorationSet;
94
+ public decorations: DecorationSet;
95
95
 
96
- constructor(view: EditorView, errorsObservable: Observable<TracebackInfos>) {
96
+ public constructor(
97
+ view: EditorView,
98
+ errorsObservable: Observable<TracebackInfos>,
99
+ ) {
97
100
  const errors = errorsObservable.get();
98
101
  this.decorations = createErrorDecorations(view.state, errors);
99
102
  unfoldErrorLines(view, errors);
@@ -113,11 +116,11 @@ class ErrorHighlighter implements PluginValue {
113
116
  });
114
117
  }
115
118
 
116
- update(update: ViewUpdate) {
119
+ public update(update: ViewUpdate) {
117
120
  this.decorations = this.decorations.map(update.changes);
118
121
  }
119
122
 
120
- destroy() {
123
+ public destroy() {
121
124
  this.unsubscribe();
122
125
  }
123
126
  }
@@ -56,12 +56,12 @@ class LensHoverController {
56
56
  private showTimer: number | undefined;
57
57
  private hideTimer: number | undefined;
58
58
 
59
- constructor(view: EditorView) {
59
+ public constructor(view: EditorView) {
60
60
  this.view = view;
61
61
  }
62
62
 
63
63
  /** Pointer entered a lens icon */
64
- enterLens(spec: CodeLensSpec, icon: HTMLElement): void {
64
+ public enterLens(spec: CodeLensSpec, icon: HTMLElement): void {
65
65
  this.clearTimers();
66
66
  dismissEditorHoverTooltips(this.view, icon);
67
67
  const hovered = this.view.state.field(codeLensHoverField, false);
@@ -76,7 +76,7 @@ class LensHoverController {
76
76
  }
77
77
 
78
78
  /** Pointer left a lens icon or the popover */
79
- leave(): void {
79
+ public leave(): void {
80
80
  this.clearTimers();
81
81
  this.hideTimer = window.setTimeout(() => {
82
82
  this.hideTimer = undefined;
@@ -85,19 +85,19 @@ class LensHoverController {
85
85
  }
86
86
 
87
87
  /** Pointer entered the popover */
88
- enterPopover(): void {
88
+ public enterPopover(): void {
89
89
  window.clearTimeout(this.hideTimer);
90
90
  this.hideTimer = undefined;
91
91
  }
92
92
 
93
- hide(): void {
93
+ public hide(): void {
94
94
  this.clearTimers();
95
95
  if (this.view.state.field(codeLensHoverField, false)) {
96
96
  this.view.dispatch({ effects: setHoveredLens.of(null) });
97
97
  }
98
98
  }
99
99
 
100
- destroy(): void {
100
+ public destroy(): void {
101
101
  this.clearTimers();
102
102
  }
103
103
 
@@ -135,18 +135,18 @@ function dismissEditorHoverTooltips(
135
135
  class CodeLensWidget extends WidgetType {
136
136
  private readonly spec: CodeLensSpec;
137
137
 
138
- constructor(spec: CodeLensSpec) {
138
+ public constructor(spec: CodeLensSpec) {
139
139
  super();
140
140
  this.spec = spec;
141
141
  }
142
142
 
143
- override eq(other: CodeLensWidget): boolean {
143
+ public override eq(other: CodeLensWidget): boolean {
144
144
  // `pos` is captured by the DOM hover/click handlers, so a reused widget
145
145
  // whose anchor moved must not be treated as equal
146
146
  return specEquals(this.spec, other.spec);
147
147
  }
148
148
 
149
- override toDOM(view: EditorView): HTMLElement {
149
+ public override toDOM(view: EditorView): HTMLElement {
150
150
  const { spec } = this;
151
151
  const element = document.createElement("span");
152
152
  element.className = "mo-code-lens";
@@ -188,7 +188,7 @@ class CodeLensWidget extends WidgetType {
188
188
  return element;
189
189
  }
190
190
 
191
- override ignoreEvent(): boolean {
191
+ public override ignoreEvent(): boolean {
192
192
  // The widget handles its own events
193
193
  return true;
194
194
  }
@@ -281,7 +281,7 @@ class CodeLensPlugin {
281
281
  private readonly debounceMs = 300;
282
282
  private readonly scheduleUpdate: DebouncedFunc<() => void>;
283
283
 
284
- constructor(view: EditorView, cellId: CellId, includeCache: boolean) {
284
+ public constructor(view: EditorView, cellId: CellId, includeCache: boolean) {
285
285
  this.view = view;
286
286
  this.cellId = cellId;
287
287
  this.includeCache = includeCache;
@@ -297,7 +297,7 @@ class CodeLensPlugin {
297
297
  this.scheduleUpdate();
298
298
  }
299
299
 
300
- update(update: ViewUpdate) {
300
+ public update(update: ViewUpdate) {
301
301
  // Recompute on edits, and when the cell's language changes (e.g. Python ->
302
302
  // SQL) so stale Python-only icons are cleared even if the text is unchanged
303
303
  const adapterChanged =
@@ -308,7 +308,7 @@ class CodeLensPlugin {
308
308
  }
309
309
  }
310
310
 
311
- destroy() {
311
+ public destroy() {
312
312
  this.scheduleUpdate.cancel();
313
313
  for (const unsubscribe of this.unsubscribes) {
314
314
  unsubscribe();
@@ -22,11 +22,11 @@ vi.mock("../state", async (importOriginal) => {
22
22
 
23
23
  class MockTransport implements Transport {
24
24
  private readonly handlers = new Set<(message: JSONRPCMessage) => void>();
25
- readonly sent: JSONRPCMessage[] = [];
25
+ public readonly sent: JSONRPCMessage[] = [];
26
26
 
27
- connect = vi.fn().mockResolvedValue(undefined);
28
- close = vi.fn();
29
- send = vi.fn((message: JSONRPCMessage) => {
27
+ public connect = vi.fn().mockResolvedValue(undefined);
28
+ public close = vi.fn();
29
+ public send = vi.fn((message: JSONRPCMessage) => {
30
30
  this.sent.push(message);
31
31
  if (isRequest(message) && message.method === "initialize") {
32
32
  queueMicrotask(() => {
@@ -39,14 +39,14 @@ class MockTransport implements Transport {
39
39
  }
40
40
  });
41
41
 
42
- onMessage(handler: (message: JSONRPCMessage) => void): () => void {
42
+ public onMessage(handler: (message: JSONRPCMessage) => void): () => void {
43
43
  this.handlers.add(handler);
44
44
  return () => {
45
45
  this.handlers.delete(handler);
46
46
  };
47
47
  }
48
48
 
49
- emit(message: JSONRPCMessage) {
49
+ public emit(message: JSONRPCMessage) {
50
50
  for (const handler of this.handlers) {
51
51
  handler(message);
52
52
  }
@@ -8,24 +8,24 @@ vi.mock("@/utils/Logger", () => ({
8
8
  }));
9
9
 
10
10
  class FakeWebSocket {
11
- static readonly OPEN = 1;
12
- static readonly CLOSED = 3;
13
- static readonly instances: FakeWebSocket[] = [];
11
+ public static readonly OPEN = 1;
12
+ public static readonly CLOSED = 3;
13
+ public static readonly instances: FakeWebSocket[] = [];
14
14
 
15
- readonly sent: string[] = [];
16
- readyState = 0;
17
- readonly url: string;
15
+ public readonly sent: string[] = [];
16
+ public readyState = 0;
17
+ public readonly url: string;
18
18
  private readonly listeners = new Map<
19
19
  string,
20
20
  Set<(event: Record<string, never>) => void>
21
21
  >();
22
22
 
23
- constructor(url: string) {
23
+ public constructor(url: string) {
24
24
  this.url = url;
25
25
  FakeWebSocket.instances.push(this);
26
26
  }
27
27
 
28
- addEventListener(
28
+ public addEventListener(
29
29
  type: string,
30
30
  listener: (event: Record<string, never>) => void,
31
31
  ) {
@@ -34,21 +34,21 @@ class FakeWebSocket {
34
34
  this.listeners.set(type, listeners);
35
35
  }
36
36
 
37
- send(frame: string) {
37
+ public send(frame: string) {
38
38
  this.sent.push(frame);
39
39
  }
40
40
 
41
- close() {
41
+ public close() {
42
42
  this.readyState = FakeWebSocket.CLOSED;
43
43
  this.emit("close");
44
44
  }
45
45
 
46
- open() {
46
+ public open() {
47
47
  this.readyState = FakeWebSocket.OPEN;
48
48
  this.emit("open");
49
49
  }
50
50
 
51
- fail() {
51
+ public fail() {
52
52
  this.emit("error");
53
53
  }
54
54
 
@@ -117,7 +117,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
117
117
  private lastOpenedDocument: DidOpenTextDocumentParams | undefined;
118
118
  private copilotSettings: Record<string, unknown> = {};
119
119
 
120
- constructor(
120
+ public constructor(
121
121
  options: ConstructorParameters<typeof LanguageServerClient>[0] & {
122
122
  copilotSettings?: Record<string, unknown>;
123
123
  },
@@ -140,7 +140,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
140
140
  * Re-run the LSP initialize handshake and send configuration.
141
141
  * Called by the transport's onReconnect callback after reconnecting.
142
142
  */
143
- async reInitialize(): Promise<void> {
143
+ public async reInitialize(): Promise<void> {
144
144
  logger.log("#reInitialize: Re-initializing LSP connection");
145
145
  this.initializePromise = this.initialize();
146
146
  await this.initializePromise;
@@ -186,7 +186,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
186
186
  return this.notify(method, params);
187
187
  }
188
188
 
189
- override getInitializationOptions() {
189
+ public override getInitializationOptions() {
190
190
  const info = {
191
191
  name: "marimo",
192
192
  version: "0.1.0",
@@ -208,7 +208,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
208
208
  return !isCopilotEnabled();
209
209
  }
210
210
 
211
- override async textDocumentDidOpen(
211
+ public override async textDocumentDidOpen(
212
212
  params: DidOpenTextDocumentParams,
213
213
  ): Promise<boolean> {
214
214
  if (this.isDisabled()) {
@@ -223,7 +223,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
223
223
  return super.textDocumentDidOpen(params);
224
224
  }
225
225
 
226
- override async textDocumentDidClose(
226
+ public override async textDocumentDidClose(
227
227
  params: DidCloseTextDocumentParams,
228
228
  ): Promise<void> {
229
229
  if (this.openDocumentCount === 0) {
@@ -233,14 +233,14 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
233
233
  return super.textDocumentDidClose(params);
234
234
  }
235
235
 
236
- override async textDocumentCompletion(
236
+ public override async textDocumentCompletion(
237
237
  params: CompletionParams,
238
238
  ): Promise<CompletionList | CompletionItem[]> {
239
239
  // Not used in Copilot
240
240
  return [];
241
241
  }
242
242
 
243
- override async textDocumentDidChange(
243
+ public override async textDocumentDidChange(
244
244
  params: DidChangeTextDocumentParams,
245
245
  ): Promise<void> {
246
246
  if (this.isDisabled()) {
@@ -304,17 +304,17 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
304
304
  });
305
305
  }
306
306
 
307
- override textDocumentHover(params: HoverParams): Promise<Hover> {
307
+ public override textDocumentHover(params: HoverParams): Promise<Hover> {
308
308
  // Not used in Copilot
309
309
  return Promise.resolve({ contents: [] });
310
310
  }
311
311
 
312
312
  // AUTH
313
- signOut() {
313
+ public signOut() {
314
314
  return this._request("signOut", {});
315
315
  }
316
316
 
317
- async signInInitiate() {
317
+ public async signInInitiate() {
318
318
  logger.log("#signInInitiate: Starting sign-in flow");
319
319
  try {
320
320
  const result = await this._request("signIn", {});
@@ -326,7 +326,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
326
326
  }
327
327
  }
328
328
 
329
- async signInConfirm(params: GitHubCopilotSignInConfirmParams) {
329
+ public async signInConfirm(params: GitHubCopilotSignInConfirmParams) {
330
330
  logger.log("#signInConfirm: Confirming sign-in");
331
331
  try {
332
332
  const result = await this._request("signInConfirm", params);
@@ -338,7 +338,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
338
338
  }
339
339
  }
340
340
 
341
- async signedIn() {
341
+ public async signedIn() {
342
342
  try {
343
343
  const { status } = await this._request("checkStatus", {});
344
344
  logger.log("#checkStatus: Status check completed", { status });
@@ -375,7 +375,7 @@ export class CopilotLanguageServerClient extends LanguageServerClient {
375
375
  200,
376
376
  );
377
377
 
378
- async getCompletion(
378
+ public async getCompletion(
379
379
  params: InlineCompletionParams,
380
380
  ): Promise<InlineCompletionList | InlineCompletionItem[] | null> {
381
381
  if (this.isDisabled()) {
@@ -38,7 +38,7 @@ export interface LazyWebsocketTransportOptions {
38
38
  * Copilot-specific readiness checks, retries, and user-facing errors.
39
39
  */
40
40
  export class LazyWebsocketTransport extends ReconnectingWebSocketTransport {
41
- constructor(options: LazyWebsocketTransportOptions) {
41
+ public constructor(options: LazyWebsocketTransportOptions) {
42
42
  super({
43
43
  getWsUrl: options.getWsUrl,
44
44
  waitForConnection: options.waitForReady,
@@ -90,15 +90,15 @@ const HighlightMargin = 250;
90
90
 
91
91
  export const searchHighlighter = ViewPlugin.fromClass(
92
92
  class {
93
- decorations: DecorationSet;
94
- readonly view: EditorView;
93
+ public decorations: DecorationSet;
94
+ public readonly view: EditorView;
95
95
 
96
- constructor(view: EditorView) {
96
+ public constructor(view: EditorView) {
97
97
  this.view = view;
98
98
  this.decorations = this.highlight(view.state.field(searchState));
99
99
  }
100
100
 
101
- update(update: ViewUpdate) {
101
+ public update(update: ViewUpdate) {
102
102
  const state = update.state.field(searchState);
103
103
  if (
104
104
  state !== update.startState.field(searchState) ||
@@ -110,7 +110,7 @@ export const searchHighlighter = ViewPlugin.fromClass(
110
110
  }
111
111
  }
112
112
 
113
- highlight(query: QueryType) {
113
+ public highlight(query: QueryType) {
114
114
  if (!query.spec.valid) {
115
115
  return Decoration.none;
116
116
  }
@@ -57,7 +57,7 @@ class MetaUnderlineVariablePlugin {
57
57
  private hoveredRange: { from: number; to: number; position: number } | null;
58
58
  private onClick: (view: EditorView) => void;
59
59
 
60
- constructor(view: EditorView, onClick: (view: EditorView) => void) {
60
+ public constructor(view: EditorView, onClick: (view: EditorView) => void) {
61
61
  this.view = view;
62
62
  this.commandClickMode = false;
63
63
  this.hoveredRange = null;
@@ -69,13 +69,13 @@ class MetaUnderlineVariablePlugin {
69
69
  window.addEventListener("mouseleave", this.windowBlur);
70
70
  }
71
71
 
72
- update(_update: ViewUpdate) {
72
+ public update(_update: ViewUpdate) {
73
73
  // We cannot add any transactions here (e.g. clearing underlines),
74
74
  // otherwise CM fails with
75
75
  // "Calls to EditorView.update are not allowed while an update is in progress"
76
76
  }
77
77
 
78
- destroy() {
78
+ public destroy() {
79
79
  window.removeEventListener("keydown", this.keydown);
80
80
  window.removeEventListener("keyup", this.keyup);
81
81
  window.removeEventListener("blur", this.windowBlur);
@@ -346,7 +346,7 @@ class CodeMirrorVimSync {
346
346
  // noop
347
347
  }
348
348
 
349
- addInstance(instance: EditorView) {
349
+ public addInstance(instance: EditorView) {
350
350
  this.instances.add(instance);
351
351
 
352
352
  const cm = getCM(instance);
@@ -376,11 +376,11 @@ class CodeMirrorVimSync {
376
376
  });
377
377
  }
378
378
 
379
- removeInstance(instance: EditorView) {
379
+ public removeInstance(instance: EditorView) {
380
380
  this.instances.delete(instance);
381
381
  }
382
382
 
383
- broadcastModeChange(
383
+ public broadcastModeChange(
384
384
  originInstance: EditorView,
385
385
  mode: string,
386
386
  subMode?: string,
@@ -41,23 +41,23 @@ export const MARKDOWN_INITIAL_HIDE_CODE = true;
41
41
  export class MarkdownLanguageAdapter implements LanguageAdapter<MarkdownLanguageAdapterMetadata> {
42
42
  private parser = new MarkdownParser();
43
43
 
44
- readonly type = "markdown";
45
- readonly defaultCode = this.parser.defaultCode;
46
- readonly defaultMetadata: MarkdownLanguageAdapterMetadata =
44
+ public readonly type = "markdown";
45
+ public readonly defaultCode = this.parser.defaultCode;
46
+ public readonly defaultMetadata: MarkdownLanguageAdapterMetadata =
47
47
  this.parser.defaultMetadata;
48
48
 
49
- static fromMarkdown(markdown: string) {
49
+ public static fromMarkdown(markdown: string) {
50
50
  return MarkdownParser.fromMarkdown(markdown);
51
51
  }
52
52
 
53
- transformIn(
53
+ public transformIn(
54
54
  pythonCode: string,
55
55
  ): [string, number, MarkdownLanguageAdapterMetadata] {
56
56
  const result = this.parser.transformIn(pythonCode);
57
57
  return [result.code, result.offset, result.metadata];
58
58
  }
59
59
 
60
- transformOut(
60
+ public transformOut(
61
61
  code: string,
62
62
  metadata: MarkdownLanguageAdapterMetadata,
63
63
  ): [string, number] {
@@ -65,11 +65,11 @@ export class MarkdownLanguageAdapter implements LanguageAdapter<MarkdownLanguage
65
65
  return [result.code, result.offset];
66
66
  }
67
67
 
68
- isSupported(pythonCode: string): boolean {
68
+ public isSupported(pythonCode: string): boolean {
69
69
  return this.parser.isSupported(pythonCode);
70
70
  }
71
71
 
72
- getExtension(
72
+ public getExtension(
73
73
  _cellId: CellId,
74
74
  _completionConfig: CompletionConfig,
75
75
  hotkeys: HotkeyProvider,
@@ -261,25 +261,25 @@ const pyrightClient = once((_: LSPConfig) => {
261
261
  export class PythonLanguageAdapter implements LanguageAdapter<{}> {
262
262
  private parser = new PythonParser();
263
263
 
264
- readonly type = "python";
265
- readonly defaultCode = this.parser.defaultCode;
266
- readonly defaultMetadata = this.parser.defaultMetadata;
264
+ public readonly type = "python";
265
+ public readonly defaultCode = this.parser.defaultCode;
266
+ public readonly defaultMetadata = this.parser.defaultMetadata;
267
267
 
268
- transformIn(code: string): [string, number, {}] {
268
+ public transformIn(code: string): [string, number, {}] {
269
269
  const result = this.parser.transformIn(code);
270
270
  return [result.code, result.offset, result.metadata];
271
271
  }
272
272
 
273
- transformOut(code: string, metadata: {}): [string, number] {
273
+ public transformOut(code: string, metadata: {}): [string, number] {
274
274
  const result = this.parser.transformOut(code, metadata);
275
275
  return [result.code, result.offset];
276
276
  }
277
277
 
278
- isSupported(code: string): boolean {
278
+ public isSupported(code: string): boolean {
279
279
  return this.parser.isSupported(code);
280
280
  }
281
281
 
282
- getExtension(
282
+ public getExtension(
283
283
  cellId: CellId,
284
284
  completionConfig: CompletionConfig,
285
285
  hotkeys: HotkeyProvider,
@@ -25,7 +25,7 @@ export class CompletionBuilder {
25
25
  /**
26
26
  * Add a table with its columns at the specified path
27
27
  */
28
- addTable(path: string[], table: DataTable): this {
28
+ public addTable(path: string[], table: DataTable): this {
29
29
  const tableNamespace: SQLNamespace = {
30
30
  self: tableToCompletion({
31
31
  table: table,
@@ -44,7 +44,7 @@ export class CompletionBuilder {
44
44
  /**
45
45
  * Add a schema at the specified path
46
46
  */
47
- addSchema(path: string[], schema: DatabaseSchema): this {
47
+ public addSchema(path: string[], schema: DatabaseSchema): this {
48
48
  const schemaObject: SQLNamespace = {
49
49
  self: schemaToCompletion({
50
50
  namespace: schema,
@@ -60,7 +60,7 @@ export class CompletionBuilder {
60
60
  /**
61
61
  * Add a database at the specified path
62
62
  */
63
- addDatabase(path: string[], database: Database): this {
63
+ public addDatabase(path: string[], database: Database): this {
64
64
  const databaseObject: SQLNamespace = {
65
65
  self: databaseToCompletion({
66
66
  namespace: database,
@@ -90,14 +90,14 @@ export class CompletionBuilder {
90
90
  /**
91
91
  * Build the final schema
92
92
  */
93
- build(): SQLNamespace {
93
+ public build(): SQLNamespace {
94
94
  return this.schema;
95
95
  }
96
96
 
97
97
  /**
98
98
  * Reset for reuse
99
99
  */
100
- reset(): this {
100
+ public reset(): this {
101
101
  this.schema = {};
102
102
  return this;
103
103
  }
@@ -28,7 +28,7 @@ const datasetTableCompletionsAtom = atom((get) => {
28
28
  class SQLCompletionStore {
29
29
  private cache: LRUCache<DataSourceConnection, CachedSchema>;
30
30
 
31
- constructor() {
31
+ public constructor() {
32
32
  this.cache = new LRUCache(10, {
33
33
  create: (connection) => this.getConnectionSchema(connection),
34
34
  });
@@ -121,7 +121,7 @@ class SQLCompletionStore {
121
121
  * Returns the raw dialect of the connection passed from the backend,
122
122
  * or null if the connection is not found
123
123
  */
124
- getInternalDialect(connectionName: ConnectionName): string | null {
124
+ public getInternalDialect(connectionName: ConnectionName): string | null {
125
125
  const connection = this.getConnection(connectionName);
126
126
  if (!connection) {
127
127
  return null;
@@ -133,7 +133,7 @@ class SQLCompletionStore {
133
133
  * Get the inferred SQL dialect for a connection
134
134
  * If the connection is not found, return the standard SQL dialect.
135
135
  */
136
- getDialect(connectionName: ConnectionName): SQLDialect {
136
+ public getDialect(connectionName: ConnectionName): SQLDialect {
137
137
  const connection = this.getConnection(connectionName);
138
138
  if (!connection) {
139
139
  return ModifiedStandardSQL;
@@ -141,7 +141,7 @@ class SQLCompletionStore {
141
141
  return guessDialect(connection);
142
142
  }
143
143
 
144
- getCompletionSource(connectionName: ConnectionName): SQLConfig | null {
144
+ public getCompletionSource(connectionName: ConnectionName): SQLConfig | null {
145
145
  const connection = this.getConnection(connectionName);
146
146
  if (!connection) {
147
147
  return null;