@walkthru-earth/objex 0.1.0

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 (367) hide show
  1. package/LICENSE +396 -0
  2. package/README.md +114 -0
  3. package/dist/assets/favicon.svg +17 -0
  4. package/dist/components/CLAUDE.md +44 -0
  5. package/dist/components/browser/Breadcrumb.svelte +50 -0
  6. package/dist/components/browser/Breadcrumb.svelte.d.ts +7 -0
  7. package/dist/components/browser/CreateFolderDialog.svelte +98 -0
  8. package/dist/components/browser/CreateFolderDialog.svelte.d.ts +6 -0
  9. package/dist/components/browser/DeleteConfirmDialog.svelte +90 -0
  10. package/dist/components/browser/DeleteConfirmDialog.svelte.d.ts +8 -0
  11. package/dist/components/browser/DropZone.svelte +83 -0
  12. package/dist/components/browser/DropZone.svelte.d.ts +7 -0
  13. package/dist/components/browser/FileBrowser.svelte +229 -0
  14. package/dist/components/browser/FileBrowser.svelte.d.ts +3 -0
  15. package/dist/components/browser/FileRow.svelte +112 -0
  16. package/dist/components/browser/FileRow.svelte.d.ts +9 -0
  17. package/dist/components/browser/FileTreeSidebar.svelte +559 -0
  18. package/dist/components/browser/FileTreeSidebar.svelte.d.ts +8 -0
  19. package/dist/components/browser/RenameDialog.svelte +101 -0
  20. package/dist/components/browser/RenameDialog.svelte.d.ts +8 -0
  21. package/dist/components/browser/SearchBar.svelte +40 -0
  22. package/dist/components/browser/SearchBar.svelte.d.ts +6 -0
  23. package/dist/components/browser/UploadButton.svelte +65 -0
  24. package/dist/components/browser/UploadButton.svelte.d.ts +3 -0
  25. package/dist/components/editor/CodeMirrorEditor.svelte +404 -0
  26. package/dist/components/editor/CodeMirrorEditor.svelte.d.ts +12 -0
  27. package/dist/components/editor/MilkdownEditor.svelte +98 -0
  28. package/dist/components/editor/MilkdownEditor.svelte.d.ts +9 -0
  29. package/dist/components/editor/SqlEditor.svelte +173 -0
  30. package/dist/components/editor/SqlEditor.svelte.d.ts +7 -0
  31. package/dist/components/editor/SqlResultBlock.svelte +199 -0
  32. package/dist/components/editor/SqlResultBlock.svelte.d.ts +9 -0
  33. package/dist/components/layout/ConnectionDialog.svelte +439 -0
  34. package/dist/components/layout/ConnectionDialog.svelte.d.ts +9 -0
  35. package/dist/components/layout/LocaleToggle.svelte +32 -0
  36. package/dist/components/layout/LocaleToggle.svelte.d.ts +3 -0
  37. package/dist/components/layout/SafeLockToggle.svelte +37 -0
  38. package/dist/components/layout/SafeLockToggle.svelte.d.ts +18 -0
  39. package/dist/components/layout/Sidebar.svelte +314 -0
  40. package/dist/components/layout/Sidebar.svelte.d.ts +3 -0
  41. package/dist/components/layout/StatusBar.svelte +73 -0
  42. package/dist/components/layout/StatusBar.svelte.d.ts +3 -0
  43. package/dist/components/layout/TabBar.svelte +102 -0
  44. package/dist/components/layout/TabBar.svelte.d.ts +7 -0
  45. package/dist/components/layout/ThemeToggle.svelte +52 -0
  46. package/dist/components/layout/ThemeToggle.svelte.d.ts +3 -0
  47. package/dist/components/ui/badge/badge.svelte +49 -0
  48. package/dist/components/ui/badge/badge.svelte.d.ts +32 -0
  49. package/dist/components/ui/badge/index.d.ts +1 -0
  50. package/dist/components/ui/badge/index.js +1 -0
  51. package/dist/components/ui/button/button.svelte +82 -0
  52. package/dist/components/ui/button/button.svelte.d.ts +64 -0
  53. package/dist/components/ui/button/index.d.ts +2 -0
  54. package/dist/components/ui/button/index.js +4 -0
  55. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +40 -0
  56. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +9 -0
  57. package/dist/components/ui/context-menu/context-menu-content.svelte +28 -0
  58. package/dist/components/ui/context-menu/context-menu-content.svelte.d.ts +10 -0
  59. package/dist/components/ui/context-menu/context-menu-group-heading.svelte +21 -0
  60. package/dist/components/ui/context-menu/context-menu-group-heading.svelte.d.ts +7 -0
  61. package/dist/components/ui/context-menu/context-menu-group.svelte +7 -0
  62. package/dist/components/ui/context-menu/context-menu-group.svelte.d.ts +4 -0
  63. package/dist/components/ui/context-menu/context-menu-item.svelte +27 -0
  64. package/dist/components/ui/context-menu/context-menu-item.svelte.d.ts +8 -0
  65. package/dist/components/ui/context-menu/context-menu-label.svelte +24 -0
  66. package/dist/components/ui/context-menu/context-menu-label.svelte.d.ts +8 -0
  67. package/dist/components/ui/context-menu/context-menu-portal.svelte +7 -0
  68. package/dist/components/ui/context-menu/context-menu-portal.svelte.d.ts +3 -0
  69. package/dist/components/ui/context-menu/context-menu-radio-group.svelte +16 -0
  70. package/dist/components/ui/context-menu/context-menu-radio-group.svelte.d.ts +4 -0
  71. package/dist/components/ui/context-menu/context-menu-radio-item.svelte +33 -0
  72. package/dist/components/ui/context-menu/context-menu-radio-item.svelte.d.ts +4 -0
  73. package/dist/components/ui/context-menu/context-menu-separator.svelte +17 -0
  74. package/dist/components/ui/context-menu/context-menu-separator.svelte.d.ts +4 -0
  75. package/dist/components/ui/context-menu/context-menu-shortcut.svelte +20 -0
  76. package/dist/components/ui/context-menu/context-menu-shortcut.svelte.d.ts +5 -0
  77. package/dist/components/ui/context-menu/context-menu-sub-content.svelte +20 -0
  78. package/dist/components/ui/context-menu/context-menu-sub-content.svelte.d.ts +4 -0
  79. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +29 -0
  80. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte.d.ts +8 -0
  81. package/dist/components/ui/context-menu/context-menu-sub.svelte +7 -0
  82. package/dist/components/ui/context-menu/context-menu-sub.svelte.d.ts +3 -0
  83. package/dist/components/ui/context-menu/context-menu-trigger.svelte +7 -0
  84. package/dist/components/ui/context-menu/context-menu-trigger.svelte.d.ts +4 -0
  85. package/dist/components/ui/context-menu/context-menu.svelte +7 -0
  86. package/dist/components/ui/context-menu/context-menu.svelte.d.ts +3 -0
  87. package/dist/components/ui/context-menu/index.d.ts +17 -0
  88. package/dist/components/ui/context-menu/index.js +19 -0
  89. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +43 -0
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +29 -0
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +33 -0
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +20 -0
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
  121. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
  123. package/dist/components/ui/dropdown-menu/index.d.ts +18 -0
  124. package/dist/components/ui/dropdown-menu/index.js +18 -0
  125. package/dist/components/ui/input/index.d.ts +2 -0
  126. package/dist/components/ui/input/index.js +4 -0
  127. package/dist/components/ui/input/input.svelte +52 -0
  128. package/dist/components/ui/input/input.svelte.d.ts +13 -0
  129. package/dist/components/ui/resizable/index.d.ts +4 -0
  130. package/dist/components/ui/resizable/index.js +6 -0
  131. package/dist/components/ui/resizable/resizable-handle.svelte +30 -0
  132. package/dist/components/ui/resizable/resizable-handle.svelte.d.ts +8 -0
  133. package/dist/components/ui/resizable/resizable-pane-group.svelte +20 -0
  134. package/dist/components/ui/resizable/resizable-pane-group.svelte.d.ts +7 -0
  135. package/dist/components/ui/scroll-area/index.d.ts +3 -0
  136. package/dist/components/ui/scroll-area/index.js +5 -0
  137. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  138. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  139. package/dist/components/ui/scroll-area/scroll-area.svelte +47 -0
  140. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +11 -0
  141. package/dist/components/ui/separator/index.d.ts +2 -0
  142. package/dist/components/ui/separator/index.js +4 -0
  143. package/dist/components/ui/separator/separator.svelte +21 -0
  144. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  145. package/dist/components/ui/sheet/index.d.ts +11 -0
  146. package/dist/components/ui/sheet/index.js +13 -0
  147. package/dist/components/ui/sheet/sheet-close.svelte +7 -0
  148. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +4 -0
  149. package/dist/components/ui/sheet/sheet-content.svelte +62 -0
  150. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +37 -0
  151. package/dist/components/ui/sheet/sheet-description.svelte +17 -0
  152. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +4 -0
  153. package/dist/components/ui/sheet/sheet-footer.svelte +20 -0
  154. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +5 -0
  155. package/dist/components/ui/sheet/sheet-header.svelte +20 -0
  156. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +5 -0
  157. package/dist/components/ui/sheet/sheet-overlay.svelte +20 -0
  158. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +4 -0
  159. package/dist/components/ui/sheet/sheet-portal.svelte +7 -0
  160. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +3 -0
  161. package/dist/components/ui/sheet/sheet-title.svelte +13 -0
  162. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +4 -0
  163. package/dist/components/ui/sheet/sheet-trigger.svelte +7 -0
  164. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +4 -0
  165. package/dist/components/ui/sheet/sheet.svelte +7 -0
  166. package/dist/components/ui/sheet/sheet.svelte.d.ts +3 -0
  167. package/dist/components/ui/switch/index.d.ts +2 -0
  168. package/dist/components/ui/switch/index.js +4 -0
  169. package/dist/components/ui/switch/switch.svelte +28 -0
  170. package/dist/components/ui/switch/switch.svelte.d.ts +8 -0
  171. package/dist/components/ui/tabs/index.d.ts +5 -0
  172. package/dist/components/ui/tabs/index.js +7 -0
  173. package/dist/components/ui/tabs/tabs-content.svelte +17 -0
  174. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  175. package/dist/components/ui/tabs/tabs-list.svelte +16 -0
  176. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  177. package/dist/components/ui/tabs/tabs-trigger.svelte +20 -0
  178. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  179. package/dist/components/ui/tabs/tabs.svelte +19 -0
  180. package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
  181. package/dist/components/ui/tooltip/index.d.ts +6 -0
  182. package/dist/components/ui/tooltip/index.js +8 -0
  183. package/dist/components/ui/tooltip/tooltip-content.svelte +52 -0
  184. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +11 -0
  185. package/dist/components/ui/tooltip/tooltip-portal.svelte +7 -0
  186. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +4 -0
  187. package/dist/components/ui/tooltip/tooltip-provider.svelte +7 -0
  188. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +4 -0
  189. package/dist/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  190. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  191. package/dist/components/ui/tooltip/tooltip.svelte +7 -0
  192. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +4 -0
  193. package/dist/components/viewers/ArchiveViewer.svelte +586 -0
  194. package/dist/components/viewers/ArchiveViewer.svelte.d.ts +7 -0
  195. package/dist/components/viewers/CLAUDE.md +60 -0
  196. package/dist/components/viewers/CodeViewer.svelte +553 -0
  197. package/dist/components/viewers/CodeViewer.svelte.d.ts +7 -0
  198. package/dist/components/viewers/CogViewer.svelte +1345 -0
  199. package/dist/components/viewers/CogViewer.svelte.d.ts +7 -0
  200. package/dist/components/viewers/CopcViewer.svelte +25 -0
  201. package/dist/components/viewers/CopcViewer.svelte.d.ts +7 -0
  202. package/dist/components/viewers/DatabaseViewer.svelte +169 -0
  203. package/dist/components/viewers/DatabaseViewer.svelte.d.ts +7 -0
  204. package/dist/components/viewers/FileInfo.svelte +174 -0
  205. package/dist/components/viewers/FileInfo.svelte.d.ts +10 -0
  206. package/dist/components/viewers/FlatGeobufViewer.svelte +755 -0
  207. package/dist/components/viewers/FlatGeobufViewer.svelte.d.ts +7 -0
  208. package/dist/components/viewers/GeoParquetMapViewer.svelte +278 -0
  209. package/dist/components/viewers/GeoParquetMapViewer.svelte.d.ts +17 -0
  210. package/dist/components/viewers/ImageViewer.svelte +233 -0
  211. package/dist/components/viewers/ImageViewer.svelte.d.ts +7 -0
  212. package/dist/components/viewers/LoadProgress.svelte +93 -0
  213. package/dist/components/viewers/LoadProgress.svelte.d.ts +15 -0
  214. package/dist/components/viewers/MapViewer.svelte +234 -0
  215. package/dist/components/viewers/MapViewer.svelte.d.ts +7 -0
  216. package/dist/components/viewers/MarkdownViewer.svelte +478 -0
  217. package/dist/components/viewers/MarkdownViewer.svelte.d.ts +7 -0
  218. package/dist/components/viewers/MediaViewer.svelte +121 -0
  219. package/dist/components/viewers/MediaViewer.svelte.d.ts +7 -0
  220. package/dist/components/viewers/ModelViewer.svelte +164 -0
  221. package/dist/components/viewers/ModelViewer.svelte.d.ts +7 -0
  222. package/dist/components/viewers/NotebookViewer.svelte +389 -0
  223. package/dist/components/viewers/NotebookViewer.svelte.d.ts +7 -0
  224. package/dist/components/viewers/PdfViewer.svelte +278 -0
  225. package/dist/components/viewers/PdfViewer.svelte.d.ts +7 -0
  226. package/dist/components/viewers/PmtilesViewer.svelte +191 -0
  227. package/dist/components/viewers/PmtilesViewer.svelte.d.ts +7 -0
  228. package/dist/components/viewers/QueryHistoryPanel.svelte +159 -0
  229. package/dist/components/viewers/QueryHistoryPanel.svelte.d.ts +8 -0
  230. package/dist/components/viewers/RawViewer.svelte +117 -0
  231. package/dist/components/viewers/RawViewer.svelte.d.ts +7 -0
  232. package/dist/components/viewers/StacMapViewer.svelte +20 -0
  233. package/dist/components/viewers/StacMapViewer.svelte.d.ts +7 -0
  234. package/dist/components/viewers/StyleEditorOverlay.svelte +27 -0
  235. package/dist/components/viewers/StyleEditorOverlay.svelte.d.ts +7 -0
  236. package/dist/components/viewers/TableGrid.svelte +355 -0
  237. package/dist/components/viewers/TableGrid.svelte.d.ts +12 -0
  238. package/dist/components/viewers/TableStatusBar.svelte +92 -0
  239. package/dist/components/viewers/TableStatusBar.svelte.d.ts +11 -0
  240. package/dist/components/viewers/TableToolbar.svelte +382 -0
  241. package/dist/components/viewers/TableToolbar.svelte.d.ts +25 -0
  242. package/dist/components/viewers/TableViewer.svelte +923 -0
  243. package/dist/components/viewers/TableViewer.svelte.d.ts +7 -0
  244. package/dist/components/viewers/ViewerRouter.svelte +70 -0
  245. package/dist/components/viewers/ViewerRouter.svelte.d.ts +7 -0
  246. package/dist/components/viewers/ZarrMapViewer.svelte +288 -0
  247. package/dist/components/viewers/ZarrMapViewer.svelte.d.ts +17 -0
  248. package/dist/components/viewers/ZarrViewer.svelte +256 -0
  249. package/dist/components/viewers/ZarrViewer.svelte.d.ts +7 -0
  250. package/dist/components/viewers/map/AttributeTable.svelte +52 -0
  251. package/dist/components/viewers/map/AttributeTable.svelte.d.ts +8 -0
  252. package/dist/components/viewers/map/MapContainer.svelte +158 -0
  253. package/dist/components/viewers/map/MapContainer.svelte.d.ts +12 -0
  254. package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte +389 -0
  255. package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte.d.ts +10 -0
  256. package/dist/components/viewers/pmtiles/PmtilesMapView.svelte +332 -0
  257. package/dist/components/viewers/pmtiles/PmtilesMapView.svelte.d.ts +11 -0
  258. package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte +373 -0
  259. package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte.d.ts +12 -0
  260. package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte +112 -0
  261. package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte.d.ts +10 -0
  262. package/dist/file-icons/CLAUDE.md +21 -0
  263. package/dist/file-icons/FileTypeIcon.svelte +74 -0
  264. package/dist/file-icons/FileTypeIcon.svelte.d.ts +9 -0
  265. package/dist/file-icons/index.d.ts +56 -0
  266. package/dist/file-icons/index.js +1070 -0
  267. package/dist/i18n/CLAUDE.md +19 -0
  268. package/dist/i18n/ar.d.ts +1 -0
  269. package/dist/i18n/ar.js +404 -0
  270. package/dist/i18n/en.d.ts +1 -0
  271. package/dist/i18n/en.js +404 -0
  272. package/dist/i18n/index.svelte.d.ts +9 -0
  273. package/dist/i18n/index.svelte.js +27 -0
  274. package/dist/index.d.ts +20 -0
  275. package/dist/index.js +13 -0
  276. package/dist/query/CLAUDE.md +22 -0
  277. package/dist/query/engine.d.ts +56 -0
  278. package/dist/query/engine.js +6 -0
  279. package/dist/query/index.d.ts +4 -0
  280. package/dist/query/index.js +19 -0
  281. package/dist/query/wasm.d.ts +20 -0
  282. package/dist/query/wasm.js +890 -0
  283. package/dist/storage/CLAUDE.md +23 -0
  284. package/dist/storage/adapter.d.ts +21 -0
  285. package/dist/storage/adapter.js +1 -0
  286. package/dist/storage/browser-azure.d.ts +25 -0
  287. package/dist/storage/browser-azure.js +271 -0
  288. package/dist/storage/browser-cloud.d.ts +32 -0
  289. package/dist/storage/browser-cloud.js +293 -0
  290. package/dist/storage/index.d.ts +11 -0
  291. package/dist/storage/index.js +37 -0
  292. package/dist/storage/url-adapter.d.ts +19 -0
  293. package/dist/storage/url-adapter.js +51 -0
  294. package/dist/stores/CLAUDE.md +29 -0
  295. package/dist/stores/browser.svelte.d.ts +28 -0
  296. package/dist/stores/browser.svelte.js +160 -0
  297. package/dist/stores/connections.svelte.d.ts +56 -0
  298. package/dist/stores/connections.svelte.js +272 -0
  299. package/dist/stores/credentials.svelte.d.ts +56 -0
  300. package/dist/stores/credentials.svelte.js +79 -0
  301. package/dist/stores/files.svelte.d.ts +20 -0
  302. package/dist/stores/files.svelte.js +76 -0
  303. package/dist/stores/query-history.svelte.d.ts +16 -0
  304. package/dist/stores/query-history.svelte.js +57 -0
  305. package/dist/stores/safelock.svelte.d.ts +8 -0
  306. package/dist/stores/safelock.svelte.js +52 -0
  307. package/dist/stores/settings.svelte.d.ts +11 -0
  308. package/dist/stores/settings.svelte.js +101 -0
  309. package/dist/stores/tab-resources.svelte.d.ts +25 -0
  310. package/dist/stores/tab-resources.svelte.js +61 -0
  311. package/dist/stores/tabs.svelte.d.ts +17 -0
  312. package/dist/stores/tabs.svelte.js +110 -0
  313. package/dist/types/notebookjs.d.ts +14 -0
  314. package/dist/types.d.ts +47 -0
  315. package/dist/types.js +1 -0
  316. package/dist/utils/CLAUDE.md +54 -0
  317. package/dist/utils/analytics.d.ts +10 -0
  318. package/dist/utils/analytics.js +38 -0
  319. package/dist/utils/archive.d.ts +70 -0
  320. package/dist/utils/archive.js +333 -0
  321. package/dist/utils/column-types.d.ts +5 -0
  322. package/dist/utils/column-types.js +137 -0
  323. package/dist/utils/deck.d.ts +98 -0
  324. package/dist/utils/deck.js +208 -0
  325. package/dist/utils/evidence-context.d.ts +22 -0
  326. package/dist/utils/evidence-context.js +56 -0
  327. package/dist/utils/export.d.ts +2 -0
  328. package/dist/utils/export.js +51 -0
  329. package/dist/utils/format.d.ts +14 -0
  330. package/dist/utils/format.js +56 -0
  331. package/dist/utils/geoarrow.d.ts +32 -0
  332. package/dist/utils/geoarrow.js +672 -0
  333. package/dist/utils/hex.d.ts +10 -0
  334. package/dist/utils/hex.js +27 -0
  335. package/dist/utils/host-detection.d.ts +23 -0
  336. package/dist/utils/host-detection.js +289 -0
  337. package/dist/utils/map-selection.d.ts +12 -0
  338. package/dist/utils/map-selection.js +45 -0
  339. package/dist/utils/markdown-sql.d.ts +30 -0
  340. package/dist/utils/markdown-sql.js +73 -0
  341. package/dist/utils/markdown.d.ts +18 -0
  342. package/dist/utils/markdown.js +146 -0
  343. package/dist/utils/model3d.d.ts +13 -0
  344. package/dist/utils/model3d.js +62 -0
  345. package/dist/utils/parquet-metadata.d.ts +58 -0
  346. package/dist/utils/parquet-metadata.js +228 -0
  347. package/dist/utils/pdf.d.ts +8 -0
  348. package/dist/utils/pdf.js +28 -0
  349. package/dist/utils/pmtiles-tile.d.ts +38 -0
  350. package/dist/utils/pmtiles-tile.js +64 -0
  351. package/dist/utils/pmtiles.d.ts +46 -0
  352. package/dist/utils/pmtiles.js +135 -0
  353. package/dist/utils/shiki.d.ts +8 -0
  354. package/dist/utils/shiki.js +98 -0
  355. package/dist/utils/storage-url.d.ts +64 -0
  356. package/dist/utils/storage-url.js +374 -0
  357. package/dist/utils/url-state.d.ts +40 -0
  358. package/dist/utils/url-state.js +113 -0
  359. package/dist/utils/url.d.ts +27 -0
  360. package/dist/utils/url.js +115 -0
  361. package/dist/utils/wkb.d.ts +43 -0
  362. package/dist/utils/wkb.js +345 -0
  363. package/dist/utils/zarr.d.ts +39 -0
  364. package/dist/utils/zarr.js +204 -0
  365. package/dist/utils.d.ts +12 -0
  366. package/dist/utils.js +5 -0
  367. package/package.json +203 -0
@@ -0,0 +1,404 @@
1
+ export const en = {
2
+ // Sidebar
3
+ 'sidebar.deleteConfirm': 'Delete connection "{name}"?',
4
+ 'sidebar.browseDetected': 'Browse detected bucket: {name}',
5
+ 'sidebar.addConnection': 'Add connection',
6
+ 'sidebar.edit': 'Edit',
7
+ 'sidebar.delete': 'Delete',
8
+ // Connection Dialog
9
+ 'connection.editTitle': 'Edit Connection',
10
+ 'connection.newTitle': 'New Connection',
11
+ 'connection.editDescription': 'Update the connection settings below.',
12
+ 'connection.newDescription': 'Configure a new cloud storage connection.',
13
+ 'connection.name': 'Name',
14
+ 'connection.provider': 'Provider',
15
+ 'connection.bucket': 'Bucket',
16
+ 'connection.container': 'Container',
17
+ 'connection.bucketPlaceholder': 'my-bucket or s3://bucket or https://endpoint/bucket',
18
+ 'connection.containerPlaceholder': 'my-container',
19
+ 'connection.clickToApply': '— click to apply',
20
+ 'connection.azureBucketHelper': 'Azure Blob container name.',
21
+ 'connection.s3BucketHelper': 'Paste an S3 URL or bucket name. URLs are auto-detected.',
22
+ 'connection.region': 'Region',
23
+ 'connection.endpoint': 'Endpoint',
24
+ 'connection.azureEndpointHelper': 'Azure Blob Storage endpoint, e.g. https://myaccount.blob.core.windows.net',
25
+ 'connection.storjEndpointHelper': 'Storj S3 gateway. Use gateway.us1/eu1/ap1.storjshare.io for a specific region.',
26
+ 'connection.endpointHelper': 'Leave empty for default AWS endpoint. Required for MinIO, R2, and other S3-compatible services.',
27
+ 'connection.anonymous': 'Anonymous Access',
28
+ 'connection.sasToken': 'SAS Token',
29
+ 'connection.sasTokenHelper': 'Shared Access Signature token for Azure Blob Storage.',
30
+ 'connection.accessKey': 'Access Key',
31
+ 'connection.secretKey': 'Secret Key',
32
+ 'connection.credentialNotice': "Your credentials are stored only in your browser's password manager if you choose to save them. They are never sent to any external server or stored in local storage.",
33
+ 'connection.testSuccess': 'Connection successful',
34
+ 'connection.testFail': 'Connection failed. Check your settings and try again.',
35
+ 'connection.testButton': 'Test Connection',
36
+ 'connection.testing': 'Testing...',
37
+ 'connection.cancel': 'Cancel',
38
+ 'connection.update': 'Update',
39
+ 'connection.create': 'Create',
40
+ 'connection.saving': 'Saving...',
41
+ // Theme
42
+ 'theme.light': 'Light',
43
+ 'theme.dark': 'Dark',
44
+ 'theme.system': 'System',
45
+ 'theme.tooltip': '{mode} mode',
46
+ // Safe Lock
47
+ 'safeLock.enabledAria': 'Safe lock enabled (read-only)',
48
+ 'safeLock.disabledAria': 'Safe lock disabled (writes allowed)',
49
+ 'safeLock.enabledTooltip': 'Safe lock ON — write operations disabled',
50
+ 'safeLock.disabledTooltip': 'Safe lock OFF — write operations enabled',
51
+ // Status Bar
52
+ 'statusBar.item': 'item',
53
+ 'statusBar.items': 'items',
54
+ 'statusBar.web': 'Web',
55
+ // Tab Bar
56
+ 'tabBar.closeTab': 'Close tab {name}',
57
+ 'tabBar.copyHttps': 'Copy HTTPS link',
58
+ 'tabBar.copyStorage': 'Copy S3 link',
59
+ 'tabBar.copied': 'Copied!',
60
+ 'tabBar.closeOtherTabs': 'Close other tabs',
61
+ // File Tree Sidebar
62
+ 'fileTree.refresh': 'Refresh',
63
+ 'fileTree.filterPlaceholder': 'Filter files...',
64
+ 'fileTree.noMatch': 'No matching files',
65
+ 'fileTree.emptyBucket': 'Empty bucket',
66
+ 'fileTree.expandDir': 'Expand directory',
67
+ 'fileTree.copyHttpUrl': 'Copy HTTPS URL',
68
+ 'fileTree.copyNativeUri': 'Copy {scheme} URI',
69
+ 'fileTree.copyPath': 'Copy path',
70
+ 'fileTree.copyName': 'Copy name',
71
+ 'fileTree.open': 'Open',
72
+ 'fileTree.copied': 'Copied!',
73
+ // File Row
74
+ 'fileRow.rename': 'Rename {name}',
75
+ 'fileRow.delete': 'Delete {name}',
76
+ // Upload
77
+ 'upload.uploading': 'Uploading',
78
+ 'upload.upload': 'Upload',
79
+ // Create Folder
80
+ 'createFolder.title': 'New Folder',
81
+ 'createFolder.description': 'Create a new folder in the current directory.',
82
+ 'createFolder.placeholder': 'Folder name',
83
+ 'createFolder.cancel': 'Cancel',
84
+ 'createFolder.creating': 'Creating...',
85
+ 'createFolder.create': 'Create',
86
+ // Breadcrumb
87
+ 'breadcrumb.root': 'Navigate to root',
88
+ // Drop Zone
89
+ 'dropZone.message': 'Drop files to upload',
90
+ // File Browser
91
+ 'fileBrowser.newFolder': 'New Folder',
92
+ 'fileBrowser.name': 'Name',
93
+ 'fileBrowser.size': 'Size',
94
+ 'fileBrowser.modified': 'Modified',
95
+ 'fileBrowser.noMatch': 'No files matching "{query}"',
96
+ 'fileBrowser.empty': 'This folder is empty',
97
+ // Search Bar
98
+ 'searchBar.label': 'Filter files',
99
+ 'searchBar.placeholder': 'Filter files...',
100
+ 'searchBar.clear': 'Clear search',
101
+ // Delete Confirm
102
+ 'deleteConfirm.title': 'Confirm Delete',
103
+ 'deleteConfirm.description': 'This action cannot be undone.',
104
+ 'deleteConfirm.message': 'Are you sure you want to delete',
105
+ 'deleteConfirm.andContents': 'and all its contents',
106
+ 'deleteConfirm.cancel': 'Cancel',
107
+ 'deleteConfirm.delete': 'Delete',
108
+ 'deleteConfirm.deleting': 'Deleting...',
109
+ // Rename Dialog
110
+ 'rename.title': 'Rename',
111
+ 'rename.description': 'Enter a new name for',
112
+ 'rename.placeholder': 'New name',
113
+ 'rename.cancel': 'Cancel',
114
+ 'rename.rename': 'Rename',
115
+ 'rename.renaming': 'Renaming...',
116
+ // Table Viewer
117
+ 'table.queryCancelled': 'Query cancelled',
118
+ 'table.preparingQuery': 'Preparing query...',
119
+ 'table.initEngine': 'Initializing query engine...',
120
+ 'table.loadingSchema': 'Loading schema...',
121
+ 'table.runningQuery': 'Running query...',
122
+ 'table.runningCustomQuery': 'Running custom query...',
123
+ 'table.countingRows': 'Counting total rows...',
124
+ 'table.run': 'Run',
125
+ 'table.running': 'Running...',
126
+ 'table.format': 'Format',
127
+ 'table.loading': 'Loading...',
128
+ 'table.cancel': 'Cancel',
129
+ 'table.readingMetadata': 'Reading file metadata...',
130
+ 'table.bootingEngine': 'Booting DuckDB-WASM...',
131
+ 'table.enterSql': 'Enter SQL query... (Cmd+Enter to run)',
132
+ 'table.copyCell': 'Copy Cell',
133
+ 'table.copyRow': 'Copy Row (JSON)',
134
+ 'table.copyColumn': 'Copy Column',
135
+ 'table.forceStop': 'Force Stop',
136
+ 'table.forceStopWarning': 'Terminates the database worker. Use as a last resort.',
137
+ 'table.cancellingQuery': 'Cancelling query...',
138
+ 'sql.cancel': 'Cancel',
139
+ // Load Progress labels
140
+ 'progress.format': 'Format',
141
+ 'progress.source': 'Source',
142
+ 'progress.columns': 'Columns',
143
+ 'progress.rows': 'Rows',
144
+ 'progress.geometry': 'Geometry',
145
+ 'progress.crs': 'CRS',
146
+ 'progress.bounds': 'Bounds',
147
+ 'progress.encoding': 'Encoding',
148
+ 'progress.compression': 'Compress.',
149
+ 'progress.rowGroups': 'Row Groups',
150
+ 'progress.createdBy': 'Created By',
151
+ 'progress.rangeRequest': 'Range request (hyparquet)',
152
+ 'progress.duckdbFallback': 'DuckDB-WASM',
153
+ 'progress.stacDetected': 'STAC catalog detected',
154
+ // File Info view
155
+ 'fileInfo.fileMetadata': 'File Metadata',
156
+ 'fileInfo.geometry': 'Geometry',
157
+ 'fileInfo.schema': 'Schema',
158
+ 'fileInfo.column': 'Column',
159
+ 'fileInfo.type': 'Type',
160
+ 'fileInfo.noMetadata': 'No metadata available',
161
+ 'fileInfo.parquetExplorer': 'Parquet Table Explorer',
162
+ // Table Toolbar
163
+ 'toolbar.copied': 'Copied!',
164
+ 'toolbar.https': 'HTTPS',
165
+ 'toolbar.s3': 'S3',
166
+ 'toolbar.copyHttps': 'Copy HTTPS link',
167
+ 'toolbar.copyS3': 'Copy S3 link',
168
+ 'toolbar.copyUrl': 'Copy URL',
169
+ 'toolbar.copyHttpsLink': 'HTTPS link',
170
+ 'toolbar.copyProviderLink': '{provider} link',
171
+ 'toolbar.map': 'Map',
172
+ 'toolbar.table': 'Table',
173
+ 'toolbar.stacMap': 'STAC Map',
174
+ 'toolbar.switchToMap': 'Switch to Map',
175
+ 'toolbar.switchToTable': 'Switch to Table',
176
+ 'toolbar.history': 'History',
177
+ 'toolbar.showHistory': 'Show History',
178
+ 'toolbar.hideHistory': 'Hide History',
179
+ 'toolbar.info': 'Info',
180
+ 'toolbar.pageSize': 'Page size',
181
+ 'toolbar.rows': 'rows',
182
+ 'toolbar.firstPage': 'First page',
183
+ 'toolbar.prev': 'Prev',
184
+ 'toolbar.next': 'Next',
185
+ 'toolbar.lastPage': 'Last page',
186
+ 'toolbar.jumpToPage': 'Click to jump to page',
187
+ // Database Viewer
188
+ 'database.badge': 'Database',
189
+ 'database.tables': 'tables',
190
+ 'database.sql': 'SQL',
191
+ 'database.loading': 'Loading database...',
192
+ 'database.tablesHeader': 'Tables',
193
+ 'database.loadingTable': 'Loading table...',
194
+ 'database.selectTable': 'Select a table to browse',
195
+ // PDF Viewer
196
+ 'pdf.badge': 'PDF',
197
+ 'pdf.loading': 'Loading PDF...',
198
+ 'pdf.prev': 'Prev',
199
+ 'pdf.next': 'Next',
200
+ 'pdf.zoomIn': 'Zoom in',
201
+ 'pdf.zoomOut': 'Zoom out',
202
+ 'pdf.zoom': 'Zoom',
203
+ // Image Viewer
204
+ 'image.loading': 'Loading image...',
205
+ 'image.zoomIn': 'Zoom in',
206
+ 'image.zoomOut': 'Zoom out',
207
+ 'image.fit': 'Fit',
208
+ 'image.rotate': 'Rotate',
209
+ 'image.fullscreen': 'Fullscreen',
210
+ // 3D Model Viewer
211
+ 'model.badge': '3D',
212
+ 'model.meshes': 'meshes',
213
+ 'model.vertices': 'vertices',
214
+ 'model.wireframe': 'Wireframe',
215
+ 'model.reset': 'Reset',
216
+ 'model.fullscreen': 'Fullscreen',
217
+ 'model.loading': 'Loading 3D model...',
218
+ // Markdown Viewer
219
+ 'markdown.badge': 'Markdown',
220
+ 'markdown.evidence': 'Evidence',
221
+ 'markdown.edit': 'Edit',
222
+ 'markdown.view': 'View',
223
+ // Zarr Viewer
224
+ 'zarr.badge': 'Zarr',
225
+ 'zarr.variables': 'variables',
226
+ 'zarr.inspect': 'Inspect',
227
+ 'zarr.map': 'Map',
228
+ 'zarr.loading': 'Loading Zarr metadata...',
229
+ // Archive Viewer
230
+ 'archive.badge': 'Archive',
231
+ 'archive.entries': 'entries',
232
+ 'archive.streamed': 'Streamed',
233
+ 'archive.fullDownload': 'Full Download',
234
+ 'archive.loading': 'Loading archive...',
235
+ 'archive.scanning': 'Scanning...',
236
+ 'archive.scanningProgress': 'Scanning archive... {count} entries found',
237
+ 'archive.empty': 'Empty directory',
238
+ 'archive.unsupported': 'Unsupported archive format',
239
+ 'archive.contents': 'Contents',
240
+ 'archive.fileDetails': 'File Details',
241
+ 'archive.fileName': 'Name',
242
+ 'archive.path': 'Path',
243
+ 'archive.size': 'Size',
244
+ 'archive.compressed': 'Compressed',
245
+ 'archive.modified': 'Modified',
246
+ 'archive.download': 'Download',
247
+ 'archive.selectFolder': 'Select a folder',
248
+ 'archive.selectFile': 'Select a file',
249
+ // Raw Viewer
250
+ 'raw.loading': 'Loading hex dump...',
251
+ 'raw.showingFirst': 'showing first {size}',
252
+ // Code Viewer
253
+ 'code.maplibreStyle': 'MapLibre Style',
254
+ 'code.editStyle': 'Edit Style',
255
+ 'code.tileJson': 'TileJSON',
256
+ 'code.noWrap': 'No Wrap',
257
+ 'code.wrap': 'Wrap',
258
+ 'code.copied': 'Copied!',
259
+ 'code.copy': 'Copy',
260
+ 'code.format': 'Format',
261
+ 'code.raw': 'Raw',
262
+ 'code.loading': 'Loading...',
263
+ 'code.stacCatalog': 'STAC Catalog',
264
+ 'code.stacCollection': 'STAC Collection',
265
+ 'code.stacItem': 'STAC Item',
266
+ 'code.browseStac': 'Browse',
267
+ 'code.keplerGl': 'Kepler.gl',
268
+ 'code.openKepler': 'Open Map',
269
+ 'code.code': 'Code',
270
+ 'code.marimoNotebook': 'marimo Notebook',
271
+ 'code.openPlayground': 'Playground',
272
+ 'code.preview': 'Preview',
273
+ 'code.viewSource': 'View Source',
274
+ // Table Status Bar
275
+ 'statusBar.runningQuery': 'Running query...',
276
+ 'statusBar.rowsLabel': 'rows',
277
+ 'statusBar.inTime': 'in {time}ms',
278
+ 'statusBar.noResults': 'No results',
279
+ 'statusBar.export': 'Export',
280
+ 'statusBar.exportCsv': 'Export as CSV',
281
+ 'statusBar.exportJson': 'Export as JSON',
282
+ // Query History
283
+ 'queryHistory.title': 'Query History',
284
+ 'queryHistory.clearAll': 'Clear all',
285
+ 'queryHistory.searchPlaceholder': 'Search queries...',
286
+ 'queryHistory.justNow': 'just now',
287
+ 'queryHistory.minsAgo': '{n}m ago',
288
+ 'queryHistory.hoursAgo': '{n}h ago',
289
+ 'queryHistory.daysAgo': '{n}d ago',
290
+ // Map Viewers
291
+ 'map.loadingData': 'Loading map data...',
292
+ 'map.loadingGeometry': 'Loading geometry data...',
293
+ 'map.loadingPmtiles': 'Loading PMTiles...',
294
+ 'map.loadingFgb': 'Loading FlatGeobuf...',
295
+ 'map.loadingCog': 'Loading COG...',
296
+ 'map.loadingZarr': 'Loading Zarr data...',
297
+ 'map.features': 'features',
298
+ 'map.limit': '(limit)',
299
+ 'map.of': 'of',
300
+ 'map.attributes': 'Attributes',
301
+ 'map.flyToFirst': 'Fly to first feature',
302
+ 'map.info': 'Info',
303
+ 'map.archiveInfo': 'Archive Info',
304
+ 'map.flatgeobufInfo': 'FlatGeobuf Info',
305
+ 'map.cogInfo': 'COG Info',
306
+ 'map.cogCorsError': 'Cannot load COG: the server does not allow cross-origin requests (CORS). The file must be hosted with CORS headers enabled.',
307
+ 'map.cogUnsupportedFormat': 'This COG uses {{type}} format which is not supported for map rendering. Only RGB COGs can be displayed.',
308
+ 'map.noGeoColumn': 'No geometry column detected in schema',
309
+ 'map.noData': 'No data available for map view',
310
+ 'map.webglLost': 'WebGL context lost',
311
+ 'map.retry': 'Retry',
312
+ 'map.noFeatures': 'No features found in FlatGeobuf file',
313
+ 'map.layers': 'layer',
314
+ 'map.layersPlural': 'layers',
315
+ 'map.tiles': 'tiles',
316
+ 'map.variable': 'Variable:',
317
+ // Map info panel labels
318
+ 'mapInfo.name': 'Name',
319
+ 'mapInfo.description': 'Description',
320
+ 'mapInfo.specVersion': 'Spec Version',
321
+ 'mapInfo.tileFormat': 'Tile Format',
322
+ 'mapInfo.zoomRange': 'Zoom Range',
323
+ 'mapInfo.tileCompression': 'Tile Compression',
324
+ 'mapInfo.internalCompression': 'Internal Compression',
325
+ 'mapInfo.clustered': 'Clustered',
326
+ 'mapInfo.yes': 'Yes',
327
+ 'mapInfo.no': 'No',
328
+ 'mapInfo.addressedTiles': 'Addressed Tiles',
329
+ 'mapInfo.tileEntries': 'Tile Entries',
330
+ 'mapInfo.uniqueContents': 'Unique Contents',
331
+ 'mapInfo.bounds': 'Bounds',
332
+ 'mapInfo.center': 'Center',
333
+ 'mapInfo.layers': 'Layers',
334
+ 'mapInfo.attribution': 'Attribution',
335
+ 'mapInfo.dataVersion': 'Data Version',
336
+ 'mapInfo.title': 'Title',
337
+ 'mapInfo.geometryType': 'Geometry Type',
338
+ 'mapInfo.totalFeatures': 'Total Features',
339
+ 'mapInfo.spatialIndex': 'Spatial Index',
340
+ 'mapInfo.yesRTree': 'Yes (packed R-tree)',
341
+ 'mapInfo.crs': 'CRS',
342
+ 'mapInfo.columns': 'Columns',
343
+ 'mapInfo.size': 'Size',
344
+ 'mapInfo.bands': 'Bands',
345
+ // PMTiles Viewer
346
+ 'pmtiles.mapView': 'Map',
347
+ 'pmtiles.archiveView': 'Archive',
348
+ 'pmtiles.inspectorView': 'Inspector',
349
+ 'pmtiles.layers': 'Layers',
350
+ 'pmtiles.allLayers': 'All layers',
351
+ 'pmtiles.showTileBounds': 'Tile grid',
352
+ 'pmtiles.inspectFeatures': 'Inspect',
353
+ 'pmtiles.fitBounds': 'Fit to bounds',
354
+ // PMTiles Archive
355
+ 'pmtiles.archiveStats': 'Archive Statistics',
356
+ 'pmtiles.directoryBrowser': 'Directory Browser',
357
+ 'pmtiles.zoomLevels': 'Zoom Levels',
358
+ 'pmtiles.tilesAtZoom': 'Tiles at z{zoom}',
359
+ 'pmtiles.entryDetails': 'Entry Details',
360
+ 'pmtiles.openInInspector': 'Open in Inspector',
361
+ 'pmtiles.noEntries': 'No entries at this zoom',
362
+ 'pmtiles.jsonMetadata': 'JSON Metadata',
363
+ 'pmtiles.headerLayout': 'Header Layout',
364
+ 'pmtiles.rootDirectory': 'Root Directory',
365
+ 'pmtiles.leafDirectories': 'Leaf Directories',
366
+ 'pmtiles.tileData': 'Tile Data',
367
+ 'pmtiles.metadata': 'Metadata',
368
+ 'pmtiles.offset': 'Offset',
369
+ 'pmtiles.length': 'Length',
370
+ 'pmtiles.dedupRatio': 'Dedup Ratio',
371
+ 'pmtiles.totalSize': 'Total Size',
372
+ // PMTiles Tile Inspector
373
+ 'pmtiles.fetchTile': 'Fetch',
374
+ 'pmtiles.tileNotFound': 'Tile not found',
375
+ 'pmtiles.tileSize': 'Size',
376
+ 'pmtiles.featureProperties': 'Feature Properties',
377
+ 'pmtiles.selectFeature': 'Click a feature to inspect',
378
+ 'pmtiles.rasterPreview': 'Raster preview',
379
+ 'pmtiles.noTileLoaded': 'Enter Z/X/Y and fetch a tile',
380
+ 'pmtiles.parent': 'Parent',
381
+ 'pmtiles.featureCount': 'features',
382
+ 'pmtiles.layerName': 'Layer',
383
+ 'pmtiles.featureType': 'Type',
384
+ 'pmtiles.featureId': 'ID',
385
+ // Page
386
+ 'page.selectFile': 'Pick something',
387
+ 'page.selectFileDescription': 'Browse the file tree and click a file to peek inside.',
388
+ 'page.noFileOpen': 'Nothing here yet',
389
+ 'page.noFileDescription': 'Add a bucket from the sidebar to start exploring.',
390
+ 'page.supportsFormats': 'Parquet · Cloud Optimized GeoTIFF · FlatGeobuf · PMTiles · CSV · PDF · 3D and more',
391
+ 'page.addConnection': 'Add connection',
392
+ 'page.tryExample': 'Try an example',
393
+ // Mobile
394
+ 'mobile.openSidebar': 'Open file browser',
395
+ 'mobile.fileExplorer': 'File Explorer',
396
+ // Notebook Viewer
397
+ 'notebook.badge': 'Jupyter Notebook',
398
+ 'notebook.cells': 'cells',
399
+ 'notebook.loading': 'Loading notebook...',
400
+ 'notebook.hideCode': 'Hide Code',
401
+ 'notebook.showCode': 'Show Code',
402
+ // Locale
403
+ 'locale.toggle': 'Language'
404
+ };
@@ -0,0 +1,9 @@
1
+ export type Locale = 'en' | 'ar';
2
+ export declare function getLocale(): Locale;
3
+ export declare function setLocale(l: Locale): void;
4
+ export declare function getDir(): 'ltr' | 'rtl';
5
+ /**
6
+ * Translate a key, interpolating `{param}` placeholders.
7
+ * Falls back to English, then to the raw key.
8
+ */
9
+ export declare function t(key: string, params?: Record<string, string | number>): string;
@@ -0,0 +1,27 @@
1
+ import { ar } from './ar.js';
2
+ import { en } from './en.js';
3
+ const translations = { en, ar };
4
+ const RTL_LOCALES = new Set(['ar']);
5
+ let currentLocale = $state('en');
6
+ export function getLocale() {
7
+ return currentLocale;
8
+ }
9
+ export function setLocale(l) {
10
+ currentLocale = l;
11
+ }
12
+ export function getDir() {
13
+ return RTL_LOCALES.has(currentLocale) ? 'rtl' : 'ltr';
14
+ }
15
+ /**
16
+ * Translate a key, interpolating `{param}` placeholders.
17
+ * Falls back to English, then to the raw key.
18
+ */
19
+ export function t(key, params) {
20
+ let text = translations[currentLocale]?.[key] ?? translations.en[key] ?? key;
21
+ if (params) {
22
+ for (const [k, v] of Object.entries(params)) {
23
+ text = text.replaceAll(`{${k}}`, String(v));
24
+ }
25
+ }
26
+ return text;
27
+ }
@@ -0,0 +1,20 @@
1
+ export type { DuckDbReadFn, FileCategory, FileTypeInfo, ViewerKind } from './file-icons/index.js';
2
+ export { buildDuckDbSource, getDuckDbReadFn, getFileTypeInfo, getMimeType, getViewerKind, isCloudNativeFormat, isQueryable } from './file-icons/index.js';
3
+ export type { MapQueryHandle, MapQueryResult, QueryEngine, QueryHandle, QueryResult, SchemaField } from './query/engine.js';
4
+ export { QueryCancelledError } from './query/engine.js';
5
+ export type { ListPage, StorageAdapter } from './storage/adapter.js';
6
+ export { UrlAdapter } from './storage/url-adapter.js';
7
+ export type { Connection, ConnectionConfig, FileEntry, Tab, Theme, WriteResult } from './types.js';
8
+ export type { TypeCategory } from './utils/column-types.js';
9
+ export { classifyType, typeBadgeClass, typeColor, typeLabel } from './utils/column-types.js';
10
+ export { formatDate, formatFileSize, getFileExtension } from './utils/format.js';
11
+ export type { GeoArrowGeomType, GeoArrowResult } from './utils/geoarrow.js';
12
+ export { buildGeoArrowTables, normalizeGeomType } from './utils/geoarrow.js';
13
+ export type { HexRow } from './utils/hex.js';
14
+ export { generateHexDump } from './utils/hex.js';
15
+ export type { GeoColumnMeta, GeoParquetMeta, ParquetFileMetadata } from './utils/parquet-metadata.js';
16
+ export { extractBounds, extractEpsgFromGeoMeta, extractGeometryTypes, readParquetMetadata } from './utils/parquet-metadata.js';
17
+ export type { Defaults, ParsedStorageUrl, StorageProvider } from './utils/storage-url.js';
18
+ export { describeParseResult, looksLikeUrl, parseStorageUrl } from './utils/storage-url.js';
19
+ export type { GeoType, ParsedGeometry } from './utils/wkb.js';
20
+ export { findGeoColumn, findGeoColumnFromRows, parseWKB, toBinary } from './utils/wkb.js';
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // Core types
2
+ // File icons registry
3
+ export { buildDuckDbSource, getDuckDbReadFn, getFileTypeInfo, getMimeType, getViewerKind, isCloudNativeFormat, isQueryable } from './file-icons/index.js';
4
+ export { QueryCancelledError } from './query/engine.js';
5
+ export { UrlAdapter } from './storage/url-adapter.js';
6
+ export { classifyType, typeBadgeClass, typeColor, typeLabel } from './utils/column-types.js';
7
+ export { formatDate, formatFileSize, getFileExtension } from './utils/format.js';
8
+ export { buildGeoArrowTables, normalizeGeomType } from './utils/geoarrow.js';
9
+ export { generateHexDump } from './utils/hex.js';
10
+ export { extractBounds, extractEpsgFromGeoMeta, extractGeometryTypes, readParquetMetadata } from './utils/parquet-metadata.js';
11
+ export { describeParseResult, looksLikeUrl, parseStorageUrl } from './utils/storage-url.js';
12
+ // Utilities
13
+ export { findGeoColumn, findGeoColumnFromRows, parseWKB, toBinary } from './utils/wkb.js';
@@ -0,0 +1,22 @@
1
+ # query/
2
+
3
+ DuckDB-WASM query engine. Single worker, cancellable queries.
4
+
5
+ ```mermaid
6
+ graph TD
7
+ A[index.ts<br/>getQueryEngine] -->|lazy init| B[wasm.ts<br/>WasmQueryEngine]
8
+ B -->|conn.send| C[DuckDB Worker]
9
+ B -->|conn.cancelSent| C
10
+ B -->|db.terminate| C
11
+ D[engine.ts] -->|types| A
12
+ ```
13
+
14
+ | File | Exports | Used by |
15
+ |------|---------|---------|
16
+ | `engine.ts` | `QueryEngine`, `QueryResult`, `MapQueryResult`, `SchemaField`, `QueryHandle`, `MapQueryHandle`, `QueryCancelledError` | TableViewer, GeoParquetMapViewer, FileInfo, evidence-context, lib/index.ts |
17
+ | `wasm.ts` | `WasmQueryEngine` | index.ts (lazy import) |
18
+ | `index.ts` | `getQueryEngine()`, re-exports all types | TableViewer, DatabaseViewer, SqlEditor, evidence-context |
19
+
20
+ - `conn.send()` for data queries (non-blocking, cancellable)
21
+ - `conn.query()` only for fast metadata queries
22
+ - `enable_geoparquet_conversion = false` set at DB init
@@ -0,0 +1,56 @@
1
+ export declare class QueryCancelledError extends Error {
2
+ constructor();
3
+ }
4
+ export interface QueryHandle {
5
+ result: Promise<QueryResult>;
6
+ cancel: () => Promise<boolean>;
7
+ }
8
+ export interface MapQueryHandle {
9
+ result: Promise<MapQueryResult>;
10
+ cancel: () => Promise<boolean>;
11
+ }
12
+ export interface QueryResult {
13
+ columns: string[];
14
+ types: string[];
15
+ rowCount: number;
16
+ /** Pre-parsed rows — avoids Arrow version mismatch in WASM engine */
17
+ rows: Record<string, any>[];
18
+ }
19
+ /** Raw column data for map rendering (bypasses toJSON serialization). */
20
+ export interface MapQueryResult {
21
+ /** Geometry column as raw WKB binary arrays */
22
+ wkbArrays: Uint8Array[];
23
+ /** Geometry type from ST_GeometryType (e.g., 'POLYGON') */
24
+ geometryType: string;
25
+ /** Non-geometry attribute columns: name → JS values */
26
+ attributes: Map<string, {
27
+ values: any[];
28
+ type: string;
29
+ }>;
30
+ /** Number of rows */
31
+ rowCount: number;
32
+ }
33
+ export interface SchemaField {
34
+ name: string;
35
+ type: string;
36
+ nullable: boolean;
37
+ }
38
+ export interface QueryEngine {
39
+ query(connId: string, sql: string): Promise<QueryResult>;
40
+ queryForMap(connId: string, sql: string, geomCol: string, geomColType: string, sourceCrs?: string | null): Promise<MapQueryResult>;
41
+ getSchema(connId: string, path: string): Promise<SchemaField[]>;
42
+ getRowCount(connId: string, path: string): Promise<number>;
43
+ /** Detect CRS from GeoParquet metadata. Returns e.g. 'EPSG:27700' or null if WGS84/unknown. */
44
+ detectCrs(connId: string, path: string, geomCol: string): Promise<string | null>;
45
+ /** Combined schema + CRS detection in a single connection (fewer web worker round-trips). */
46
+ getSchemaAndCrs?(connId: string, path: string, findGeoCol: (schema: SchemaField[]) => string | null): Promise<{
47
+ schema: SchemaField[];
48
+ geomCol: string | null;
49
+ crs: string | null;
50
+ }>;
51
+ queryCancellable?(connId: string, sql: string): QueryHandle;
52
+ queryForMapCancellable?(connId: string, sql: string, geomCol: string, geomColType: string, sourceCrs?: string | null): MapQueryHandle;
53
+ forceCancel?(): Promise<void>;
54
+ releaseMemory(): Promise<void>;
55
+ dispose(): Promise<void>;
56
+ }
@@ -0,0 +1,6 @@
1
+ export class QueryCancelledError extends Error {
2
+ constructor() {
3
+ super('Query cancelled');
4
+ this.name = 'QueryCancelledError';
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ import type { QueryEngine } from './engine';
2
+ export declare function getQueryEngine(): Promise<QueryEngine>;
3
+ export type { MapQueryHandle, MapQueryResult, QueryEngine, QueryHandle, QueryResult, SchemaField } from './engine';
4
+ export { QueryCancelledError } from './engine';
@@ -0,0 +1,19 @@
1
+ // Cache the promise (not the resolved value) to prevent race conditions.
2
+ // Multiple concurrent callers before the first resolves would otherwise
3
+ // each create a separate WasmQueryEngine instance.
4
+ let enginePromise = null;
5
+ export async function getQueryEngine() {
6
+ if (!enginePromise) {
7
+ enginePromise = (async () => {
8
+ console.log('[query] Using WASM DuckDB engine (browser)');
9
+ const { WasmQueryEngine } = await import('./wasm');
10
+ return new WasmQueryEngine();
11
+ })();
12
+ // If init fails, clear the promise so it can be retried
13
+ enginePromise.catch(() => {
14
+ enginePromise = null;
15
+ });
16
+ }
17
+ return enginePromise;
18
+ }
19
+ export { QueryCancelledError } from './engine';
@@ -0,0 +1,20 @@
1
+ import { type MapQueryHandle, type MapQueryResult, type QueryEngine, type QueryHandle, type QueryResult, type SchemaField } from './engine';
2
+ export declare class WasmQueryEngine implements QueryEngine {
3
+ query(connId: string, sql: string): Promise<QueryResult>;
4
+ queryForMap(connId: string, sql: string, geomCol: string, geomColType: string, sourceCrs?: string | null): Promise<MapQueryResult>;
5
+ getSchema(connId: string, path: string): Promise<SchemaField[]>;
6
+ getRowCount(connId: string, path: string): Promise<number>;
7
+ getSchemaAndCrs(connId: string, path: string, findGeoCol: (schema: SchemaField[]) => string | null): Promise<{
8
+ schema: SchemaField[];
9
+ geomCol: string | null;
10
+ crs: string | null;
11
+ }>;
12
+ private configureStorage;
13
+ detectCrs(connId: string, path: string, geomCol: string): Promise<string | null>;
14
+ private detectCrsWithConn;
15
+ queryCancellable(connId: string, sql: string): QueryHandle;
16
+ queryForMapCancellable(connId: string, sql: string, geomCol: string, geomColType: string, sourceCrs?: string | null): MapQueryHandle;
17
+ forceCancel(): Promise<void>;
18
+ releaseMemory(): Promise<void>;
19
+ dispose(): Promise<void>;
20
+ }