@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.
- package/LICENSE +396 -0
- package/README.md +114 -0
- package/dist/assets/favicon.svg +17 -0
- package/dist/components/CLAUDE.md +44 -0
- package/dist/components/browser/Breadcrumb.svelte +50 -0
- package/dist/components/browser/Breadcrumb.svelte.d.ts +7 -0
- package/dist/components/browser/CreateFolderDialog.svelte +98 -0
- package/dist/components/browser/CreateFolderDialog.svelte.d.ts +6 -0
- package/dist/components/browser/DeleteConfirmDialog.svelte +90 -0
- package/dist/components/browser/DeleteConfirmDialog.svelte.d.ts +8 -0
- package/dist/components/browser/DropZone.svelte +83 -0
- package/dist/components/browser/DropZone.svelte.d.ts +7 -0
- package/dist/components/browser/FileBrowser.svelte +229 -0
- package/dist/components/browser/FileBrowser.svelte.d.ts +3 -0
- package/dist/components/browser/FileRow.svelte +112 -0
- package/dist/components/browser/FileRow.svelte.d.ts +9 -0
- package/dist/components/browser/FileTreeSidebar.svelte +559 -0
- package/dist/components/browser/FileTreeSidebar.svelte.d.ts +8 -0
- package/dist/components/browser/RenameDialog.svelte +101 -0
- package/dist/components/browser/RenameDialog.svelte.d.ts +8 -0
- package/dist/components/browser/SearchBar.svelte +40 -0
- package/dist/components/browser/SearchBar.svelte.d.ts +6 -0
- package/dist/components/browser/UploadButton.svelte +65 -0
- package/dist/components/browser/UploadButton.svelte.d.ts +3 -0
- package/dist/components/editor/CodeMirrorEditor.svelte +404 -0
- package/dist/components/editor/CodeMirrorEditor.svelte.d.ts +12 -0
- package/dist/components/editor/MilkdownEditor.svelte +98 -0
- package/dist/components/editor/MilkdownEditor.svelte.d.ts +9 -0
- package/dist/components/editor/SqlEditor.svelte +173 -0
- package/dist/components/editor/SqlEditor.svelte.d.ts +7 -0
- package/dist/components/editor/SqlResultBlock.svelte +199 -0
- package/dist/components/editor/SqlResultBlock.svelte.d.ts +9 -0
- package/dist/components/layout/ConnectionDialog.svelte +439 -0
- package/dist/components/layout/ConnectionDialog.svelte.d.ts +9 -0
- package/dist/components/layout/LocaleToggle.svelte +32 -0
- package/dist/components/layout/LocaleToggle.svelte.d.ts +3 -0
- package/dist/components/layout/SafeLockToggle.svelte +37 -0
- package/dist/components/layout/SafeLockToggle.svelte.d.ts +18 -0
- package/dist/components/layout/Sidebar.svelte +314 -0
- package/dist/components/layout/Sidebar.svelte.d.ts +3 -0
- package/dist/components/layout/StatusBar.svelte +73 -0
- package/dist/components/layout/StatusBar.svelte.d.ts +3 -0
- package/dist/components/layout/TabBar.svelte +102 -0
- package/dist/components/layout/TabBar.svelte.d.ts +7 -0
- package/dist/components/layout/ThemeToggle.svelte +52 -0
- package/dist/components/layout/ThemeToggle.svelte.d.ts +3 -0
- package/dist/components/ui/badge/badge.svelte +49 -0
- package/dist/components/ui/badge/badge.svelte.d.ts +32 -0
- package/dist/components/ui/badge/index.d.ts +1 -0
- package/dist/components/ui/badge/index.js +1 -0
- package/dist/components/ui/button/button.svelte +82 -0
- package/dist/components/ui/button/button.svelte.d.ts +64 -0
- package/dist/components/ui/button/index.d.ts +2 -0
- package/dist/components/ui/button/index.js +4 -0
- package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +40 -0
- package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +9 -0
- package/dist/components/ui/context-menu/context-menu-content.svelte +28 -0
- package/dist/components/ui/context-menu/context-menu-content.svelte.d.ts +10 -0
- package/dist/components/ui/context-menu/context-menu-group-heading.svelte +21 -0
- package/dist/components/ui/context-menu/context-menu-group-heading.svelte.d.ts +7 -0
- package/dist/components/ui/context-menu/context-menu-group.svelte +7 -0
- package/dist/components/ui/context-menu/context-menu-group.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu-item.svelte +27 -0
- package/dist/components/ui/context-menu/context-menu-item.svelte.d.ts +8 -0
- package/dist/components/ui/context-menu/context-menu-label.svelte +24 -0
- package/dist/components/ui/context-menu/context-menu-label.svelte.d.ts +8 -0
- package/dist/components/ui/context-menu/context-menu-portal.svelte +7 -0
- package/dist/components/ui/context-menu/context-menu-portal.svelte.d.ts +3 -0
- package/dist/components/ui/context-menu/context-menu-radio-group.svelte +16 -0
- package/dist/components/ui/context-menu/context-menu-radio-group.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu-radio-item.svelte +33 -0
- package/dist/components/ui/context-menu/context-menu-radio-item.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu-separator.svelte +17 -0
- package/dist/components/ui/context-menu/context-menu-separator.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu-shortcut.svelte +20 -0
- package/dist/components/ui/context-menu/context-menu-shortcut.svelte.d.ts +5 -0
- package/dist/components/ui/context-menu/context-menu-sub-content.svelte +20 -0
- package/dist/components/ui/context-menu/context-menu-sub-content.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +29 -0
- package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte.d.ts +8 -0
- package/dist/components/ui/context-menu/context-menu-sub.svelte +7 -0
- package/dist/components/ui/context-menu/context-menu-sub.svelte.d.ts +3 -0
- package/dist/components/ui/context-menu/context-menu-trigger.svelte +7 -0
- package/dist/components/ui/context-menu/context-menu-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/context-menu/context-menu.svelte +7 -0
- package/dist/components/ui/context-menu/context-menu.svelte.d.ts +3 -0
- package/dist/components/ui/context-menu/index.d.ts +17 -0
- package/dist/components/ui/context-menu/index.js +19 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +43 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +29 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +33 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +20 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +18 -0
- package/dist/components/ui/dropdown-menu/index.js +18 -0
- package/dist/components/ui/input/index.d.ts +2 -0
- package/dist/components/ui/input/index.js +4 -0
- package/dist/components/ui/input/input.svelte +52 -0
- package/dist/components/ui/input/input.svelte.d.ts +13 -0
- package/dist/components/ui/resizable/index.d.ts +4 -0
- package/dist/components/ui/resizable/index.js +6 -0
- package/dist/components/ui/resizable/resizable-handle.svelte +30 -0
- package/dist/components/ui/resizable/resizable-handle.svelte.d.ts +8 -0
- package/dist/components/ui/resizable/resizable-pane-group.svelte +20 -0
- package/dist/components/ui/resizable/resizable-pane-group.svelte.d.ts +7 -0
- package/dist/components/ui/scroll-area/index.d.ts +3 -0
- package/dist/components/ui/scroll-area/index.js +5 -0
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
- package/dist/components/ui/scroll-area/scroll-area.svelte +47 -0
- package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +11 -0
- package/dist/components/ui/separator/index.d.ts +2 -0
- package/dist/components/ui/separator/index.js +4 -0
- package/dist/components/ui/separator/separator.svelte +21 -0
- package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/index.d.ts +11 -0
- package/dist/components/ui/sheet/index.js +13 -0
- package/dist/components/ui/sheet/sheet-close.svelte +7 -0
- package/dist/components/ui/sheet/sheet-close.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/sheet-content.svelte +62 -0
- package/dist/components/ui/sheet/sheet-content.svelte.d.ts +37 -0
- package/dist/components/ui/sheet/sheet-description.svelte +17 -0
- package/dist/components/ui/sheet/sheet-description.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/sheet-footer.svelte +20 -0
- package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +5 -0
- package/dist/components/ui/sheet/sheet-header.svelte +20 -0
- package/dist/components/ui/sheet/sheet-header.svelte.d.ts +5 -0
- package/dist/components/ui/sheet/sheet-overlay.svelte +20 -0
- package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/sheet-portal.svelte +7 -0
- package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +3 -0
- package/dist/components/ui/sheet/sheet-title.svelte +13 -0
- package/dist/components/ui/sheet/sheet-title.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/sheet-trigger.svelte +7 -0
- package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/sheet/sheet.svelte +7 -0
- package/dist/components/ui/sheet/sheet.svelte.d.ts +3 -0
- package/dist/components/ui/switch/index.d.ts +2 -0
- package/dist/components/ui/switch/index.js +4 -0
- package/dist/components/ui/switch/switch.svelte +28 -0
- package/dist/components/ui/switch/switch.svelte.d.ts +8 -0
- package/dist/components/ui/tabs/index.d.ts +5 -0
- package/dist/components/ui/tabs/index.js +7 -0
- package/dist/components/ui/tabs/tabs-content.svelte +17 -0
- package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
- package/dist/components/ui/tabs/tabs-list.svelte +16 -0
- package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
- package/dist/components/ui/tabs/tabs-trigger.svelte +20 -0
- package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/tabs/tabs.svelte +19 -0
- package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
- package/dist/components/ui/tooltip/index.d.ts +6 -0
- package/dist/components/ui/tooltip/index.js +8 -0
- package/dist/components/ui/tooltip/tooltip-content.svelte +52 -0
- package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +11 -0
- package/dist/components/ui/tooltip/tooltip-portal.svelte +7 -0
- package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +4 -0
- package/dist/components/ui/tooltip/tooltip-provider.svelte +7 -0
- package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +4 -0
- package/dist/components/ui/tooltip/tooltip-trigger.svelte +7 -0
- package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
- package/dist/components/ui/tooltip/tooltip.svelte +7 -0
- package/dist/components/ui/tooltip/tooltip.svelte.d.ts +4 -0
- package/dist/components/viewers/ArchiveViewer.svelte +586 -0
- package/dist/components/viewers/ArchiveViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/CLAUDE.md +60 -0
- package/dist/components/viewers/CodeViewer.svelte +553 -0
- package/dist/components/viewers/CodeViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/CogViewer.svelte +1345 -0
- package/dist/components/viewers/CogViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/CopcViewer.svelte +25 -0
- package/dist/components/viewers/CopcViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/DatabaseViewer.svelte +169 -0
- package/dist/components/viewers/DatabaseViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/FileInfo.svelte +174 -0
- package/dist/components/viewers/FileInfo.svelte.d.ts +10 -0
- package/dist/components/viewers/FlatGeobufViewer.svelte +755 -0
- package/dist/components/viewers/FlatGeobufViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/GeoParquetMapViewer.svelte +278 -0
- package/dist/components/viewers/GeoParquetMapViewer.svelte.d.ts +17 -0
- package/dist/components/viewers/ImageViewer.svelte +233 -0
- package/dist/components/viewers/ImageViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/LoadProgress.svelte +93 -0
- package/dist/components/viewers/LoadProgress.svelte.d.ts +15 -0
- package/dist/components/viewers/MapViewer.svelte +234 -0
- package/dist/components/viewers/MapViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/MarkdownViewer.svelte +478 -0
- package/dist/components/viewers/MarkdownViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/MediaViewer.svelte +121 -0
- package/dist/components/viewers/MediaViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/ModelViewer.svelte +164 -0
- package/dist/components/viewers/ModelViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/NotebookViewer.svelte +389 -0
- package/dist/components/viewers/NotebookViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/PdfViewer.svelte +278 -0
- package/dist/components/viewers/PdfViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/PmtilesViewer.svelte +191 -0
- package/dist/components/viewers/PmtilesViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/QueryHistoryPanel.svelte +159 -0
- package/dist/components/viewers/QueryHistoryPanel.svelte.d.ts +8 -0
- package/dist/components/viewers/RawViewer.svelte +117 -0
- package/dist/components/viewers/RawViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/StacMapViewer.svelte +20 -0
- package/dist/components/viewers/StacMapViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/StyleEditorOverlay.svelte +27 -0
- package/dist/components/viewers/StyleEditorOverlay.svelte.d.ts +7 -0
- package/dist/components/viewers/TableGrid.svelte +355 -0
- package/dist/components/viewers/TableGrid.svelte.d.ts +12 -0
- package/dist/components/viewers/TableStatusBar.svelte +92 -0
- package/dist/components/viewers/TableStatusBar.svelte.d.ts +11 -0
- package/dist/components/viewers/TableToolbar.svelte +382 -0
- package/dist/components/viewers/TableToolbar.svelte.d.ts +25 -0
- package/dist/components/viewers/TableViewer.svelte +923 -0
- package/dist/components/viewers/TableViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/ViewerRouter.svelte +70 -0
- package/dist/components/viewers/ViewerRouter.svelte.d.ts +7 -0
- package/dist/components/viewers/ZarrMapViewer.svelte +288 -0
- package/dist/components/viewers/ZarrMapViewer.svelte.d.ts +17 -0
- package/dist/components/viewers/ZarrViewer.svelte +256 -0
- package/dist/components/viewers/ZarrViewer.svelte.d.ts +7 -0
- package/dist/components/viewers/map/AttributeTable.svelte +52 -0
- package/dist/components/viewers/map/AttributeTable.svelte.d.ts +8 -0
- package/dist/components/viewers/map/MapContainer.svelte +158 -0
- package/dist/components/viewers/map/MapContainer.svelte.d.ts +12 -0
- package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte +389 -0
- package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte.d.ts +10 -0
- package/dist/components/viewers/pmtiles/PmtilesMapView.svelte +332 -0
- package/dist/components/viewers/pmtiles/PmtilesMapView.svelte.d.ts +11 -0
- package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte +373 -0
- package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte.d.ts +12 -0
- package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte +112 -0
- package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte.d.ts +10 -0
- package/dist/file-icons/CLAUDE.md +21 -0
- package/dist/file-icons/FileTypeIcon.svelte +74 -0
- package/dist/file-icons/FileTypeIcon.svelte.d.ts +9 -0
- package/dist/file-icons/index.d.ts +56 -0
- package/dist/file-icons/index.js +1070 -0
- package/dist/i18n/CLAUDE.md +19 -0
- package/dist/i18n/ar.d.ts +1 -0
- package/dist/i18n/ar.js +404 -0
- package/dist/i18n/en.d.ts +1 -0
- package/dist/i18n/en.js +404 -0
- package/dist/i18n/index.svelte.d.ts +9 -0
- package/dist/i18n/index.svelte.js +27 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +13 -0
- package/dist/query/CLAUDE.md +22 -0
- package/dist/query/engine.d.ts +56 -0
- package/dist/query/engine.js +6 -0
- package/dist/query/index.d.ts +4 -0
- package/dist/query/index.js +19 -0
- package/dist/query/wasm.d.ts +20 -0
- package/dist/query/wasm.js +890 -0
- package/dist/storage/CLAUDE.md +23 -0
- package/dist/storage/adapter.d.ts +21 -0
- package/dist/storage/adapter.js +1 -0
- package/dist/storage/browser-azure.d.ts +25 -0
- package/dist/storage/browser-azure.js +271 -0
- package/dist/storage/browser-cloud.d.ts +32 -0
- package/dist/storage/browser-cloud.js +293 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/storage/index.js +37 -0
- package/dist/storage/url-adapter.d.ts +19 -0
- package/dist/storage/url-adapter.js +51 -0
- package/dist/stores/CLAUDE.md +29 -0
- package/dist/stores/browser.svelte.d.ts +28 -0
- package/dist/stores/browser.svelte.js +160 -0
- package/dist/stores/connections.svelte.d.ts +56 -0
- package/dist/stores/connections.svelte.js +272 -0
- package/dist/stores/credentials.svelte.d.ts +56 -0
- package/dist/stores/credentials.svelte.js +79 -0
- package/dist/stores/files.svelte.d.ts +20 -0
- package/dist/stores/files.svelte.js +76 -0
- package/dist/stores/query-history.svelte.d.ts +16 -0
- package/dist/stores/query-history.svelte.js +57 -0
- package/dist/stores/safelock.svelte.d.ts +8 -0
- package/dist/stores/safelock.svelte.js +52 -0
- package/dist/stores/settings.svelte.d.ts +11 -0
- package/dist/stores/settings.svelte.js +101 -0
- package/dist/stores/tab-resources.svelte.d.ts +25 -0
- package/dist/stores/tab-resources.svelte.js +61 -0
- package/dist/stores/tabs.svelte.d.ts +17 -0
- package/dist/stores/tabs.svelte.js +110 -0
- package/dist/types/notebookjs.d.ts +14 -0
- package/dist/types.d.ts +47 -0
- package/dist/types.js +1 -0
- package/dist/utils/CLAUDE.md +54 -0
- package/dist/utils/analytics.d.ts +10 -0
- package/dist/utils/analytics.js +38 -0
- package/dist/utils/archive.d.ts +70 -0
- package/dist/utils/archive.js +333 -0
- package/dist/utils/column-types.d.ts +5 -0
- package/dist/utils/column-types.js +137 -0
- package/dist/utils/deck.d.ts +98 -0
- package/dist/utils/deck.js +208 -0
- package/dist/utils/evidence-context.d.ts +22 -0
- package/dist/utils/evidence-context.js +56 -0
- package/dist/utils/export.d.ts +2 -0
- package/dist/utils/export.js +51 -0
- package/dist/utils/format.d.ts +14 -0
- package/dist/utils/format.js +56 -0
- package/dist/utils/geoarrow.d.ts +32 -0
- package/dist/utils/geoarrow.js +672 -0
- package/dist/utils/hex.d.ts +10 -0
- package/dist/utils/hex.js +27 -0
- package/dist/utils/host-detection.d.ts +23 -0
- package/dist/utils/host-detection.js +289 -0
- package/dist/utils/map-selection.d.ts +12 -0
- package/dist/utils/map-selection.js +45 -0
- package/dist/utils/markdown-sql.d.ts +30 -0
- package/dist/utils/markdown-sql.js +73 -0
- package/dist/utils/markdown.d.ts +18 -0
- package/dist/utils/markdown.js +146 -0
- package/dist/utils/model3d.d.ts +13 -0
- package/dist/utils/model3d.js +62 -0
- package/dist/utils/parquet-metadata.d.ts +58 -0
- package/dist/utils/parquet-metadata.js +228 -0
- package/dist/utils/pdf.d.ts +8 -0
- package/dist/utils/pdf.js +28 -0
- package/dist/utils/pmtiles-tile.d.ts +38 -0
- package/dist/utils/pmtiles-tile.js +64 -0
- package/dist/utils/pmtiles.d.ts +46 -0
- package/dist/utils/pmtiles.js +135 -0
- package/dist/utils/shiki.d.ts +8 -0
- package/dist/utils/shiki.js +98 -0
- package/dist/utils/storage-url.d.ts +64 -0
- package/dist/utils/storage-url.js +374 -0
- package/dist/utils/url-state.d.ts +40 -0
- package/dist/utils/url-state.js +113 -0
- package/dist/utils/url.d.ts +27 -0
- package/dist/utils/url.js +115 -0
- package/dist/utils/wkb.d.ts +43 -0
- package/dist/utils/wkb.js +345 -0
- package/dist/utils/zarr.d.ts +39 -0
- package/dist/utils/zarr.js +204 -0
- package/dist/utils.d.ts +12 -0
- package/dist/utils.js +5 -0
- package/package.json +203 -0
package/dist/i18n/en.js
ADDED
|
@@ -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
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -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,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
|
+
}
|