sqlite-hub 0.12.0 → 0.17.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 +118 -23
- package/bin/sqlite-hub.js +1041 -224
- package/frontend/index.html +1 -0
- package/frontend/js/api.js +32 -2
- package/frontend/js/app.js +989 -13
- package/frontend/js/components/modal.js +644 -15
- package/frontend/js/components/pageHeader.js +14 -16
- package/frontend/js/components/queryEditor.js +9 -1
- package/frontend/js/components/queryHistoryPanel.js +126 -131
- package/frontend/js/components/queryResults.js +79 -17
- package/frontend/js/components/rowEditorPanel.js +204 -10
- package/frontend/js/components/sidebar.js +102 -18
- package/frontend/js/components/tableDesignerEditor.js +69 -11
- package/frontend/js/router.js +8 -0
- package/frontend/js/store.js +868 -9
- package/frontend/js/utils/copyColumnExport.js +117 -0
- package/frontend/js/utils/exportFilenames.js +32 -0
- package/frontend/js/utils/filePathPreview.js +315 -0
- package/frontend/js/utils/format.js +1 -1
- package/frontend/js/utils/markdownDocuments.js +248 -0
- package/frontend/js/utils/rowEditorJson.js +65 -0
- package/frontend/js/utils/sqlFormatter.js +691 -0
- package/frontend/js/utils/tableDesigner.js +178 -6
- package/frontend/js/utils/textCellStats.js +20 -0
- package/frontend/js/utils/timestampPreview.js +264 -0
- package/frontend/js/views/charts.js +3 -1
- package/frontend/js/views/data.js +34 -2
- package/frontend/js/views/documents.js +300 -0
- package/frontend/js/views/editor.js +48 -1
- package/frontend/js/views/settings.js +39 -6
- package/frontend/js/views/structure.js +154 -212
- package/frontend/styles/base.css +6 -0
- package/frontend/styles/components.css +476 -2
- package/frontend/styles/structure-graph.css +0 -3
- package/frontend/styles/tailwind.generated.css +1 -1
- package/frontend/styles/tokens.css +1 -1
- package/frontend/styles/views.css +422 -0
- package/package.json +3 -3
- package/server/routes/documents.js +163 -0
- package/server/routes/settings.js +22 -6
- package/server/server.js +6 -0
- package/server/services/sqlite/introspection.js +10 -0
- package/server/services/sqlite/sqlExecutor.js +29 -0
- package/server/services/sqlite/tableDesigner/changeAnalysis.js +25 -1
- package/server/services/sqlite/tableDesigner/schemaMapping.js +105 -10
- package/server/services/sqlite/tableDesigner/validation.js +60 -2
- package/server/services/sqlite/tableDesignerService.js +1 -1
- package/server/services/storage/appStateStore.js +313 -0
- package/tests/check-constraint-options.test.js +14 -0
- package/tests/cli-args.test.js +100 -0
- package/tests/copy-column-modal.test.js +83 -0
- package/tests/database-documents.test.js +85 -0
- package/tests/export-filenames.test.js +34 -0
- package/tests/file-path-preview.test.js +165 -0
- package/tests/markdown-documents.test.js +79 -0
- package/tests/row-editor-json.test.js +82 -0
- package/tests/row-editor-timestamp-preview.test.js +192 -0
- package/tests/settings-metadata.test.js +16 -0
- package/tests/settings-view.test.js +32 -0
- package/tests/sql-formatter.test.js +173 -0
- package/tests/sql-highlight.test.js +38 -0
- package/tests/table-designer-v2-unique-constraints.test.js +78 -0
- package/tests/text-cell-stats.test.js +38 -0
- package/fill.js +0 -526
package/frontend/index.html
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
<script src="/vendor/echarts/dist/echarts.min.js"></script>
|
|
24
24
|
<script src="/vendor/elkjs/lib/elk.bundled.js"></script>
|
|
25
25
|
<script src="/vendor/cytoscape-elk/dist/cytoscape-elk.js"></script>
|
|
26
|
+
<script src="/vendor/marked/lib/marked.umd.js"></script>
|
|
26
27
|
<script src="js/app.js" type="module"></script>
|
|
27
28
|
</body>
|
|
28
29
|
</html>
|
package/frontend/js/api.js
CHANGED
|
@@ -46,7 +46,7 @@ async function download(path, options = {}) {
|
|
|
46
46
|
const blob = await response.blob();
|
|
47
47
|
const disposition = response.headers.get("content-disposition") ?? "";
|
|
48
48
|
const match = disposition.match(/filename="([^"]+)"/i);
|
|
49
|
-
const filename = match?.[1]
|
|
49
|
+
const filename = String(options.filename ?? "").trim() || match?.[1] || options.fallbackFilename || "export.csv";
|
|
50
50
|
const url = URL.createObjectURL(blob);
|
|
51
51
|
const link = document.createElement("a");
|
|
52
52
|
|
|
@@ -440,7 +440,7 @@ export function getQueryExport(sql, format = "csv") {
|
|
|
440
440
|
});
|
|
441
441
|
}
|
|
442
442
|
|
|
443
|
-
export function downloadQueryExport(sql, format = "csv") {
|
|
443
|
+
export function downloadQueryExport(sql, format = "csv", options = {}) {
|
|
444
444
|
const normalizedFormat = normalizeTextExportFormat(format);
|
|
445
445
|
const extension = TEXT_EXPORT_EXTENSIONS[normalizedFormat];
|
|
446
446
|
|
|
@@ -448,6 +448,7 @@ export function downloadQueryExport(sql, format = "csv") {
|
|
|
448
448
|
method: "POST",
|
|
449
449
|
body: { sql },
|
|
450
450
|
fallbackFilename: `query-results.${extension}`,
|
|
451
|
+
filename: options.filename,
|
|
451
452
|
});
|
|
452
453
|
}
|
|
453
454
|
|
|
@@ -482,9 +483,38 @@ export function downloadTableExport(tableName, options = {}) {
|
|
|
482
483
|
method: "POST",
|
|
483
484
|
body: buildTableExportBody(tableName, { ...options, format: normalizedFormat }),
|
|
484
485
|
fallbackFilename: `${tableName || "table"}.${extension}`,
|
|
486
|
+
filename: options.filename,
|
|
485
487
|
});
|
|
486
488
|
}
|
|
487
489
|
|
|
488
490
|
export function downloadTableCsv(tableName, options = {}) {
|
|
489
491
|
return downloadTableExport(tableName, { ...options, format: "csv" });
|
|
490
492
|
}
|
|
493
|
+
|
|
494
|
+
export function getDocuments() {
|
|
495
|
+
return request("/api/documents");
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
export function createDocument(payload = {}) {
|
|
499
|
+
return request("/api/documents", {
|
|
500
|
+
method: "POST",
|
|
501
|
+
body: payload,
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
export function getDocument(documentId) {
|
|
506
|
+
return request(`/api/documents/${encodeURIComponent(documentId)}`);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
export function updateDocument(documentId, payload = {}) {
|
|
510
|
+
return request(`/api/documents/${encodeURIComponent(documentId)}`, {
|
|
511
|
+
method: "PATCH",
|
|
512
|
+
body: payload,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
export function deleteDocument(documentId) {
|
|
517
|
+
return request(`/api/documents/${encodeURIComponent(documentId)}`, {
|
|
518
|
+
method: "DELETE",
|
|
519
|
+
});
|
|
520
|
+
}
|