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.
Files changed (64) hide show
  1. package/README.md +118 -23
  2. package/bin/sqlite-hub.js +1041 -224
  3. package/frontend/index.html +1 -0
  4. package/frontend/js/api.js +32 -2
  5. package/frontend/js/app.js +989 -13
  6. package/frontend/js/components/modal.js +644 -15
  7. package/frontend/js/components/pageHeader.js +14 -16
  8. package/frontend/js/components/queryEditor.js +9 -1
  9. package/frontend/js/components/queryHistoryPanel.js +126 -131
  10. package/frontend/js/components/queryResults.js +79 -17
  11. package/frontend/js/components/rowEditorPanel.js +204 -10
  12. package/frontend/js/components/sidebar.js +102 -18
  13. package/frontend/js/components/tableDesignerEditor.js +69 -11
  14. package/frontend/js/router.js +8 -0
  15. package/frontend/js/store.js +868 -9
  16. package/frontend/js/utils/copyColumnExport.js +117 -0
  17. package/frontend/js/utils/exportFilenames.js +32 -0
  18. package/frontend/js/utils/filePathPreview.js +315 -0
  19. package/frontend/js/utils/format.js +1 -1
  20. package/frontend/js/utils/markdownDocuments.js +248 -0
  21. package/frontend/js/utils/rowEditorJson.js +65 -0
  22. package/frontend/js/utils/sqlFormatter.js +691 -0
  23. package/frontend/js/utils/tableDesigner.js +178 -6
  24. package/frontend/js/utils/textCellStats.js +20 -0
  25. package/frontend/js/utils/timestampPreview.js +264 -0
  26. package/frontend/js/views/charts.js +3 -1
  27. package/frontend/js/views/data.js +34 -2
  28. package/frontend/js/views/documents.js +300 -0
  29. package/frontend/js/views/editor.js +48 -1
  30. package/frontend/js/views/settings.js +39 -6
  31. package/frontend/js/views/structure.js +154 -212
  32. package/frontend/styles/base.css +6 -0
  33. package/frontend/styles/components.css +476 -2
  34. package/frontend/styles/structure-graph.css +0 -3
  35. package/frontend/styles/tailwind.generated.css +1 -1
  36. package/frontend/styles/tokens.css +1 -1
  37. package/frontend/styles/views.css +422 -0
  38. package/package.json +3 -3
  39. package/server/routes/documents.js +163 -0
  40. package/server/routes/settings.js +22 -6
  41. package/server/server.js +6 -0
  42. package/server/services/sqlite/introspection.js +10 -0
  43. package/server/services/sqlite/sqlExecutor.js +29 -0
  44. package/server/services/sqlite/tableDesigner/changeAnalysis.js +25 -1
  45. package/server/services/sqlite/tableDesigner/schemaMapping.js +105 -10
  46. package/server/services/sqlite/tableDesigner/validation.js +60 -2
  47. package/server/services/sqlite/tableDesignerService.js +1 -1
  48. package/server/services/storage/appStateStore.js +313 -0
  49. package/tests/check-constraint-options.test.js +14 -0
  50. package/tests/cli-args.test.js +100 -0
  51. package/tests/copy-column-modal.test.js +83 -0
  52. package/tests/database-documents.test.js +85 -0
  53. package/tests/export-filenames.test.js +34 -0
  54. package/tests/file-path-preview.test.js +165 -0
  55. package/tests/markdown-documents.test.js +79 -0
  56. package/tests/row-editor-json.test.js +82 -0
  57. package/tests/row-editor-timestamp-preview.test.js +192 -0
  58. package/tests/settings-metadata.test.js +16 -0
  59. package/tests/settings-view.test.js +32 -0
  60. package/tests/sql-formatter.test.js +173 -0
  61. package/tests/sql-highlight.test.js +38 -0
  62. package/tests/table-designer-v2-unique-constraints.test.js +78 -0
  63. package/tests/text-cell-stats.test.js +38 -0
  64. package/fill.js +0 -526
@@ -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>
@@ -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] ?? options.fallbackFilename ?? "export.csv";
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
+ }