sqlite-hub 1.2.0 → 1.4.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/README.md +106 -73
- package/bin/sqlite-hub.js +176 -2
- package/docs/API.md +122 -0
- package/docs/CLI.md +227 -0
- package/docs/DESIGN_GUIDELINES.md +45 -0
- package/docs/changelog.md +141 -0
- package/docs/shortkeys.md +27 -0
- package/docs/todo.md +16 -0
- package/examples/api/generate-types.js +52 -0
- package/frontend/assets/mockups/backups_1_1920.webp +0 -0
- package/frontend/assets/mockups/backups_2_create_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_3_edit_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_4_restore_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_5_delete_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_1_1920.webp +0 -0
- package/frontend/assets/mockups/charts_2_query_detail_1920.webp +0 -0
- package/frontend/assets/mockups/charts_3_create_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_4_edit_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_5_delete_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_6_copy_column_modal_1920.webp +0 -0
- package/frontend/assets/mockups/connections_1_1920.webp +0 -0
- package/frontend/assets/mockups/connections_2_create_connection_modal_1920.webp +0 -0
- package/frontend/assets/mockups/connections_3_open_connection_modal_1920.webp +0 -0
- package/frontend/assets/mockups/data_1_1920.webp +0 -0
- package/frontend/assets/mockups/data_2_roweditor_1920.webp +0 -0
- package/frontend/assets/mockups/data_3_data_export_modal_1920.webp +0 -0
- package/frontend/assets/mockups/documents_1_1920.webp +0 -0
- package/frontend/assets/mockups/documents_2_document_insert_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/documents_3_document_insert_note_modal_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_queue_1_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_1_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_2_create_media_tagging_tag_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_3_create_media_tagging_mapping_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/overview_1_1920.webp +0 -0
- package/frontend/assets/mockups/settings_1_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_1_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_2_query_detail_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_3_query_export_modal_1920.webp +0 -0
- package/frontend/assets/mockups/structure_1_1920.webp +0 -0
- package/frontend/assets/mockups/structure_2_generate_types_modal_1920.webp +0 -0
- package/frontend/assets/mockups/structure_3_generate_types_modal_1920.webp +0 -0
- package/frontend/assets/mockups/table_designer_1_1920.webp +0 -0
- package/frontend/assets/mockups/table_designer_2_table_designer_constraints_modal_1920.webp +0 -0
- package/frontend/js/api.js +18 -0
- package/frontend/js/app.js +118 -8
- package/frontend/js/components/connectionCard.js +1 -1
- package/frontend/js/components/emptyState.js +4 -4
- package/frontend/js/components/generateTypesDropdown.js +33 -0
- package/frontend/js/components/metricCard.js +1 -1
- package/frontend/js/components/modal.js +211 -18
- package/frontend/js/components/pageHeader.js +1 -1
- package/frontend/js/components/queryHistoryDetail.js +3 -3
- package/frontend/js/components/queryHistoryHeader.js +1 -1
- package/frontend/js/components/queryHistoryPanel.js +1 -1
- package/frontend/js/components/rowEditorPanel.js +13 -3
- package/frontend/js/router.js +28 -6
- package/frontend/js/store.js +422 -8
- package/frontend/js/views/backups.js +529 -37
- package/frontend/js/views/charts.js +9 -9
- package/frontend/js/views/connections.js +2 -2
- package/frontend/js/views/data.js +1 -1
- package/frontend/js/views/documents.js +3 -3
- package/frontend/js/views/editor.js +6 -6
- package/frontend/js/views/mediaTagging.js +7 -5
- package/frontend/js/views/overview.js +3 -3
- package/frontend/js/views/settings.js +3 -3
- package/frontend/js/views/structure.js +6 -1
- package/frontend/styles/base.css +1 -40
- package/frontend/styles/components.css +109 -232
- package/frontend/styles/structure-graph.css +32 -68
- package/frontend/styles/tailwind.css +8 -4
- package/frontend/styles/tailwind.generated.css +1 -1
- package/frontend/styles/tokens.css +28 -21
- package/frontend/styles/views.css +94 -261
- package/package.json +18 -2
- package/server/routes/backups.js +18 -2
- package/server/routes/externalApi.js +36 -0
- package/server/routes/structure.js +22 -0
- package/server/services/databaseCommandService.js +14 -0
- package/server/services/sqlite/backupDiff.js +914 -0
- package/server/services/sqlite/backupService.js +77 -1
- package/server/services/sqlite/structureService.js +7 -0
- package/server/services/typeGenerationService.js +663 -0
- package/tailwind.config.cjs +0 -1
- package/.github/funding.yml +0 -2
- package/.github/workflows/ci.yml +0 -36
- package/database.sqlite +0 -0
- package/frontend/assets/mockups/charts_1_bars_1200.webp +0 -0
- package/frontend/assets/mockups/charts_2_pie_1200.webp +0 -0
- package/frontend/assets/mockups/charts_3_scatter_plot_1200.webp +0 -0
- package/frontend/assets/mockups/connections_1200.webp +0 -0
- package/frontend/assets/mockups/data_1_1200.webp +0 -0
- package/frontend/assets/mockups/data_2_row_editor_1200.webp +0 -0
- package/frontend/assets/mockups/documents_1200.webp +0 -0
- package/frontend/assets/mockups/media_tagging_1_setup_1200.webp +0 -0
- package/frontend/assets/mockups/media_tagging_2_tagging_queue_1200.webp +0 -0
- package/frontend/assets/mockups/media_tagging_3_media_viewer_1200.webp +0 -0
- package/frontend/assets/mockups/overview_1200.webp +0 -0
- package/frontend/assets/mockups/settings_1200.webp +0 -0
- package/frontend/assets/mockups/sql_editor_1_1200.webp +0 -0
- package/frontend/assets/mockups/sql_editor_2_query_details_1200.webp +0 -0
- package/frontend/assets/mockups/sql_editor_3_export_column_1200.webp +0 -0
- package/frontend/assets/mockups/sql_editor_4_export_column_as_markdown_1200.webp +0 -0
- package/frontend/assets/mockups/sql_editor_5_export_query_result_1200.webp +0 -0
- package/frontend/assets/mockups/structure_1_1200.webp +0 -0
- package/frontend/assets/mockups/structure_2_inspector_1200.webp +0 -0
- package/frontend/assets/mockups/table_designer_1_1200.webp +0 -0
- package/frontend/assets/mockups/table_designer_2_checks_1200.webp +0 -0
- package/tests/api-token-auth.test.js +0 -279
- package/tests/backup-manager.test.js +0 -140
- package/tests/backups-view.test.js +0 -70
- package/tests/charts-height-preset-storage.test.js +0 -60
- package/tests/charts-route-state.test.js +0 -144
- package/tests/check-constraint-options.test.js +0 -90
- package/tests/cli-args.test.js +0 -113
- package/tests/cli-service-delegation.test.js +0 -140
- package/tests/connection-removal.test.js +0 -52
- package/tests/connections-file-dialog-route.test.js +0 -89
- package/tests/copy-column-modal.test.js +0 -131
- package/tests/database-command-service.test.js +0 -174
- package/tests/database-documents.test.js +0 -85
- package/tests/documents-view.test.js +0 -132
- package/tests/dropdown-button.test.js +0 -101
- package/tests/email-preview.test.js +0 -89
- package/tests/export-blob.test.js +0 -99
- package/tests/export-filenames.test.js +0 -38
- package/tests/file-path-preview.test.js +0 -165
- package/tests/form-controls.test.js +0 -34
- package/tests/json-preview.test.js +0 -49
- package/tests/local-request-security.test.js +0 -85
- package/tests/markdown-documents.test.js +0 -103
- package/tests/native-file-dialog.test.js +0 -105
- package/tests/query-editor.test.js +0 -28
- package/tests/query-history-detail.test.js +0 -37
- package/tests/query-history-header.test.js +0 -30
- package/tests/query-results-truncation.test.js +0 -20
- package/tests/risky-sql.test.js +0 -30
- package/tests/row-editor-json.test.js +0 -82
- package/tests/row-editor-null-values.test.js +0 -184
- package/tests/row-editor-timestamp-preview.test.js +0 -192
- package/tests/security-paths.test.js +0 -84
- package/tests/settings-api-tokens-route.test.js +0 -97
- package/tests/settings-metadata.test.js +0 -114
- package/tests/settings-view.test.js +0 -108
- package/tests/sql-formatter.test.js +0 -173
- package/tests/sql-highlight.test.js +0 -38
- package/tests/sql-identifier-safety.test.js +0 -171
- package/tests/sql-result-limit.test.js +0 -66
- package/tests/structure-view.test.js +0 -60
- package/tests/table-designer-v2-unique-constraints.test.js +0 -78
- package/tests/table-scroll-state.test.js +0 -70
- package/tests/text-cell-stats.test.js +0 -38
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
:root {
|
|
2
|
+
/* Color tokens */
|
|
2
3
|
--rgb-primary: 252 227 0;
|
|
3
4
|
--rgb-outline: 75 71 50;
|
|
4
5
|
--rgb-on-surface: 229 226 225;
|
|
@@ -23,30 +24,27 @@
|
|
|
23
24
|
--color-surface-container-low: var(--color-surface-low);
|
|
24
25
|
--color-surface-container: #201f1f;
|
|
25
26
|
--color-surface-high: #2a2a2a;
|
|
26
|
-
--color-surface-container-high: var(--color-surface-high);
|
|
27
27
|
--color-surface-highest: #353534;
|
|
28
28
|
--color-surface-container-highest: var(--color-surface-highest);
|
|
29
29
|
--color-surface-bright: #3a3939;
|
|
30
30
|
--color-primary-container: #fce300;
|
|
31
|
-
--color-primary-fixed: #fde403;
|
|
32
31
|
--color-on-primary: #373100;
|
|
33
32
|
--color-on-surface: #e5e2e1;
|
|
34
33
|
--color-on-surface-variant: #cdc7ab;
|
|
35
34
|
--color-outline-variant: #4b4732;
|
|
36
35
|
--color-error: #ffb4ab;
|
|
37
|
-
--color-error-container: #93000a;
|
|
38
36
|
--color-tertiary-dim: #00dce1;
|
|
39
37
|
--color-grid-dot: rgb(var(--rgb-primary) / 0.03);
|
|
40
38
|
--color-success: #22c55e;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
--border-strong: rgb(var(--rgb-outline) / 0.24);
|
|
39
|
+
|
|
40
|
+
/* Text color tokens */
|
|
44
41
|
--text-muted: rgb(var(--rgb-on-surface) / 0.6);
|
|
45
42
|
--text-subtle: rgb(var(--rgb-on-surface) / 0.45);
|
|
46
43
|
--text-faint: rgb(var(--rgb-on-surface) / 0.35);
|
|
47
44
|
--text-variant-muted: rgb(var(--rgb-on-surface-variant) / 0.55);
|
|
48
45
|
--text-variant-subtle: rgb(var(--rgb-on-surface-variant) / 0.45);
|
|
49
|
-
|
|
46
|
+
|
|
47
|
+
/* Color alpha tokens */
|
|
50
48
|
--primary-alpha-05: rgb(var(--rgb-primary) / 0.05);
|
|
51
49
|
--primary-alpha-06: rgb(var(--rgb-primary) / 0.06);
|
|
52
50
|
--primary-alpha-08: rgb(var(--rgb-primary) / 0.08);
|
|
@@ -59,42 +57,51 @@
|
|
|
59
57
|
--primary-alpha-24: rgb(var(--rgb-primary) / 0.24);
|
|
60
58
|
--primary-alpha-30: rgb(var(--rgb-primary) / 0.3);
|
|
61
59
|
--primary-alpha-35: rgb(var(--rgb-primary) / 0.35);
|
|
60
|
+
|
|
61
|
+
/* Border color tokens */
|
|
62
|
+
--border-subtle: rgb(var(--rgb-outline) / 0.12);
|
|
63
|
+
--border-medium: rgb(var(--rgb-outline) / 0.18);
|
|
64
|
+
|
|
65
|
+
/* Focus color tokens */
|
|
62
66
|
--focus-ring: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--primary-alpha-30);
|
|
63
67
|
--focus-ring-inset: inset 0 0 0 1px var(--primary-alpha-30), 0 0 0 2px var(--primary-alpha-12);
|
|
64
|
-
|
|
68
|
+
|
|
69
|
+
/* Font tokens */
|
|
65
70
|
--font-family-body: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
66
71
|
--font-family-mono: ui-monospace, 'SFMono-Regular', 'SF Mono', Consolas, 'Liberation Mono', monospace;
|
|
67
72
|
--font-size-status: 10px;
|
|
68
73
|
--font-size-micro: 9px;
|
|
69
|
-
--font-size-label: 11px;
|
|
70
74
|
--font-size-icon: 18px;
|
|
75
|
+
|
|
76
|
+
/* Size tokens, not spacing */
|
|
71
77
|
--data-table-icon-size: 12px;
|
|
72
78
|
--control-height: 36px;
|
|
73
79
|
--control-padding-inline: 12px;
|
|
74
80
|
--button-height: 32px;
|
|
75
81
|
--button-padding-inline: 10px;
|
|
76
82
|
--button-corner-size: 10px;
|
|
77
|
-
--spacing-1: 4px;
|
|
78
|
-
--spacing-2: 8px;
|
|
79
|
-
--spacing-3: 12px;
|
|
80
|
-
--spacing-4: 16px;
|
|
81
|
-
--spacing-5: 20px;
|
|
82
|
-
--spacing-6: 24px;
|
|
83
|
-
--spacing-8: 32px;
|
|
84
|
-
--spacing-10: 40px;
|
|
85
|
-
--radius-none: 0;
|
|
86
83
|
--top-nav-height: 56px;
|
|
87
84
|
--status-bar-height: 24px;
|
|
88
85
|
--sidebar-width: 256px;
|
|
89
86
|
--subnavi-width: 290px;
|
|
90
87
|
--subnavi-item-width: 265px;
|
|
91
88
|
--panel-width: 680px;
|
|
89
|
+
--scrollbar-size: 4px;
|
|
90
|
+
|
|
91
|
+
/* Shadow sizes */
|
|
92
92
|
--shadow-sidebar: 4px 0 0 0 #131313;
|
|
93
93
|
--shadow-panel: -20px 0 60px rgb(0 0 0 / 0.8);
|
|
94
94
|
--shadow-subtle-glow: 0 0 15px var(--primary-alpha-30);
|
|
95
|
-
|
|
95
|
+
|
|
96
|
+
/* Spacing rules, only use these */
|
|
97
|
+
--spacing-1: 4px;
|
|
98
|
+
--spacing-2: 8px;
|
|
99
|
+
--spacing-4: 16px;
|
|
100
|
+
--spacing-6: 24px;
|
|
101
|
+
--spacing-8: 32px;
|
|
102
|
+
--spacing-10: 40px;
|
|
103
|
+
|
|
104
|
+
/* Motion tokens */
|
|
96
105
|
--transition-fast: 150ms ease;
|
|
97
106
|
--transition-standard: 300ms ease;
|
|
98
|
-
--duration-cursor-blink: 1s;
|
|
99
|
-
--scrollbar-size: 4px;
|
|
100
107
|
}
|