admindb 2.1.1 → 2.3.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 (119) hide show
  1. package/README.md +368 -335
  2. package/dist/app.js +227 -1
  3. package/dist/auth/config.d.ts +1 -1
  4. package/dist/auth/config.js +109 -1
  5. package/dist/auth/crypto.js +98 -1
  6. package/dist/auth/index.js +21 -1
  7. package/dist/auth/middleware.js +78 -1
  8. package/dist/auth/routes.js +64 -1
  9. package/dist/auth/types.js +7 -1
  10. package/dist/cli/args.d.ts +1 -1
  11. package/dist/cli/args.js +309 -1
  12. package/dist/cli/config.js +118 -1
  13. package/dist/cli/index.js +20 -1
  14. package/dist/cli/runner.js +208 -1
  15. package/dist/cli.js +4 -1
  16. package/dist/data/chain.d.ts +1 -0
  17. package/dist/data/chain.js +130 -0
  18. package/dist/data/datasets.d.ts +1 -1
  19. package/dist/data/datasets.js +171 -1
  20. package/dist/data/detector.d.ts +1 -1
  21. package/dist/data/detector.js +535 -1
  22. package/dist/data/engine.d.ts +1 -1
  23. package/dist/data/engine.js +586 -1
  24. package/dist/data/index.d.ts +1 -1
  25. package/dist/data/index.js +30 -1
  26. package/dist/data/prng.d.ts +1 -0
  27. package/dist/data/prng.js +73 -0
  28. package/dist/data/registry.d.ts +1 -0
  29. package/dist/data/registry.js +805 -0
  30. package/dist/data/schema-graph.d.ts +1 -0
  31. package/dist/data/schema-graph.js +210 -0
  32. package/dist/data/strategies.d.ts +1 -1
  33. package/dist/data/strategies.js +100 -1
  34. package/dist/data/templates.d.ts +1 -0
  35. package/dist/data/templates.js +134 -0
  36. package/dist/data/types.d.ts +1 -1
  37. package/dist/data/types.js +5 -1
  38. package/dist/data/validator.d.ts +1 -0
  39. package/dist/data/validator.js +160 -0
  40. package/dist/db/database.d.ts +1 -1
  41. package/dist/db/database.js +472 -1
  42. package/dist/db/export.d.ts +1 -1
  43. package/dist/db/export.js +67 -1
  44. package/dist/db/filters.d.ts +1 -1
  45. package/dist/db/filters.js +119 -1
  46. package/dist/db/index.js +24 -1
  47. package/dist/db/introspection.js +164 -1
  48. package/dist/db/manager.js +327 -1
  49. package/dist/db/migrations.js +100 -1
  50. package/dist/db/postgres.d.ts +1 -1
  51. package/dist/db/postgres.js +687 -1
  52. package/dist/db/types.d.ts +1 -1
  53. package/dist/db/types.js +6 -1
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.js +52 -1
  56. package/dist/public/css/app.css +1 -1
  57. package/dist/public/js/api.js +1 -1
  58. package/dist/public/js/browse.js +1 -1
  59. package/dist/public/js/common.js +1 -0
  60. package/dist/public/js/databases.js +1 -1
  61. package/dist/public/js/designer.js +1 -1
  62. package/dist/public/js/forms.js +1 -1
  63. package/dist/public/js/home.js +1 -0
  64. package/dist/public/js/inspector.js +1 -1
  65. package/dist/public/js/query.js +1 -1
  66. package/dist/public/js/schema.js +1 -1
  67. package/dist/public/js/seed.js +1 -1
  68. package/dist/routes/api/erd.d.ts +1 -0
  69. package/dist/routes/api/erd.js +45 -0
  70. package/dist/routes/api/helpers.d.ts +1 -1
  71. package/dist/routes/api/helpers.js +213 -1
  72. package/dist/routes/api/import-export.js +82 -1
  73. package/dist/routes/api/index.js +48 -1
  74. package/dist/routes/api/query.js +74 -1
  75. package/dist/routes/api/rows.js +358 -1
  76. package/dist/routes/api/seed.js +167 -1
  77. package/dist/routes/api/tables.js +216 -1
  78. package/dist/routes/databases.js +210 -1
  79. package/dist/routes/index.js +19 -1
  80. package/dist/routes/pages.js +446 -1
  81. package/dist/serverless.js +149 -1
  82. package/dist/sql/classifier.js +24 -1
  83. package/dist/sql/error-analyzer.d.ts +1 -0
  84. package/dist/sql/error-analyzer.js +550 -0
  85. package/dist/sql/generator.d.ts +1 -1
  86. package/dist/sql/generator.js +245 -1
  87. package/dist/sql/index.js +18 -1
  88. package/dist/types/api.d.ts +1 -1
  89. package/dist/types/api.js +2 -1
  90. package/dist/utils/colors.js +54 -1
  91. package/dist/utils/common.d.ts +1 -1
  92. package/dist/utils/common.js +185 -1
  93. package/dist/utils/csv.d.ts +1 -1
  94. package/dist/utils/csv.js +61 -1
  95. package/dist/utils/datatype.js +167 -1
  96. package/dist/utils/icons.js +81 -1
  97. package/dist/utils/index.js +20 -1
  98. package/dist/utils/logger.js +36 -1
  99. package/dist/views/layouts/main.hbs +1 -74
  100. package/dist/views/pages/databases.hbs +1 -233
  101. package/dist/views/pages/designer.hbs +1 -89
  102. package/dist/views/pages/erd.hbs +1 -0
  103. package/dist/views/pages/error.hbs +1 -10
  104. package/dist/views/pages/form.hbs +1 -59
  105. package/dist/views/pages/home.hbs +1 -124
  106. package/dist/views/pages/info.hbs +1 -0
  107. package/dist/views/pages/login.hbs +1 -98
  108. package/dist/views/pages/query.hbs +1 -87
  109. package/dist/views/pages/schema.hbs +1 -298
  110. package/dist/views/pages/seed-select.hbs +251 -0
  111. package/dist/views/pages/seed.hbs +273 -167
  112. package/dist/views/pages/table.hbs +1 -327
  113. package/dist/views/partials/navbar.hbs +1 -83
  114. package/dist/views/partials/sidebar.hbs +1 -117
  115. package/docs/API.md +149 -144
  116. package/docs/EXAMPLES.md +579 -576
  117. package/docs/SECURITY.md +265 -265
  118. package/package.json +79 -78
  119. package/dist/public/js/icons.js +0 -1
@@ -1,89 +1 @@
1
- <div class="space-y-6">
2
- <div>
3
- <p class="text-sm font-semibold uppercase tracking-wider text-primary">Designer</p>
4
- <h1 class="mt-1 text-3xl font-extrabold tracking-tight">Create table</h1>
5
- <p class="mt-1.5 text-sm text-base-content/55">Define columns visually — the SQL preview updates live as you type.</p>
6
- </div>
7
- <div class="grid gap-6 lg:grid-cols-[1fr_380px]">
8
- <div class="space-y-5">
9
- <div class="app-card p-5">
10
- <label class="field-label">
11
- Table name
12
- <span class="chip chip-type">required</span>
13
- </label>
14
- <input id="table-name" type="text" class="field-input font-mono" placeholder="e.g. users" autocomplete="off" spellcheck="false" />
15
- </div>
16
- <div class="app-card">
17
- <div class="flex flex-wrap items-center justify-between gap-2 border-b border-base-200 px-5 py-4">
18
- <h2 class="text-sm font-semibold uppercase tracking-wide text-base-content/45">Columns</h2>
19
- <button id="add-column" type="button" class="btn btn-outline btn-sm gap-1.5">
20
- {{{icon "plus" class="h-4 w-4"}}}
21
- Add column
22
- </button>
23
- </div>
24
- <div id="columns" class="space-y-3 p-4"></div>
25
- <div id="designer-error" class="hidden px-4 pb-4"></div>
26
- <div class="flex flex-wrap gap-2 border-t border-base-200 px-5 py-4">
27
- {{#unless readonly}}
28
- <button id="create-table" type="button" class="btn btn-primary gap-1.5">
29
- {{{icon "check" class="h-4 w-4"}}}
30
- Create table
31
- </button>
32
- {{else}}
33
- <span class="text-sm font-medium text-warning">Read-only — table creation is disabled.</span>
34
- {{/unless}}
35
- <button id="copy-sql" type="button" class="btn btn-outline gap-1.5" title="Copy the preview SQL">
36
- {{{icon "copy" class="h-4 w-4"}}}
37
- Copy SQL
38
- </button>
39
- </div>
40
- </div>
41
- </div>
42
- <aside class="space-y-4 self-start lg:sticky lg:top-24">
43
- <div class="app-card overflow-hidden">
44
- <div class="flex items-center justify-between border-b border-base-200 bg-base-200/40 px-4 py-3">
45
- <h2 class="flex items-center gap-2 text-sm font-semibold text-base-content/60">
46
- <span class="grid h-5 w-5 place-items-center rounded-md bg-primary/10 text-primary">
47
- {{{icon "query" class="h-3.5 w-3.5"}}}
48
- </span>
49
- SQL preview
50
- </h2>
51
- <span id="preview-status" class="text-[11px] font-medium text-base-content/40">waiting…</span>
52
- </div>
53
- <div class="p-4">
54
- <pre id="sql-preview" class="code-panel hidden"><code id="preview-code"></code></pre>
55
- <div id="preview-placeholder" class="rounded-xl border border-dashed border-base-300 px-4 py-8 text-center text-sm text-base-content/35">
56
- Your <code class="font-mono">CREATE TABLE</code> statement will appear here as you build it.
57
- </div>
58
- </div>
59
- </div>
60
- <div class="rounded-2xl border border-base-300/70 bg-base-100 p-4">
61
- <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wider text-base-content/45">
62
- {{#if isPostgres}}PostgreSQL Type Guide{{else}}SQLite Type Guide{{/if}}
63
- </h3>
64
- <ul class="space-y-1.5 text-[13px] text-base-content/60">
65
- {{#if isPostgres}}
66
- <li class="flex items-center justify-between gap-2"><span class="font-mono">TEXT / VARCHAR</span><span class="text-base-content/40">Free-form string</span></li>
67
- <li class="flex items-center justify-between gap-2"><span class="font-mono">INTEGER / BIGINT</span><span class="text-base-content/40">Whole numbers</span></li>
68
- <li class="flex items-center justify-between gap-2"><span class="font-mono">SERIAL / BIGSERIAL</span><span class="text-base-content/40">Auto-incrementing PK</span></li>
69
- <li class="flex items-center justify-between gap-2"><span class="font-mono">REAL / NUMERIC</span><span class="text-base-content/40">Decimal numbers</span></li>
70
- <li class="flex items-center justify-between gap-2"><span class="font-mono">BYTEA</span><span class="text-base-content/40">Binary byte data</span></li>
71
- <li class="flex items-center justify-between gap-2"><span class="font-mono">BOOLEAN</span><span class="text-base-content/40">true / false</span></li>
72
- <li class="flex items-center justify-between gap-2"><span class="font-mono">TIMESTAMPTZ</span><span class="text-base-content/40">Timestamp with TZ</span></li>
73
- <li class="flex items-center justify-between gap-2"><span class="font-mono">JSON / JSONB</span><span class="text-base-content/40">Structured JSON</span></li>
74
- <li class="flex items-center justify-between gap-2"><span class="font-mono">UUID</span><span class="text-base-content/40">UUID generator</span></li>
75
- {{else}}
76
- <li class="flex items-center justify-between gap-2"><span class="font-mono">TEXT</span><span class="text-base-content/40">Free-form text</span></li>
77
- <li class="flex items-center justify-between gap-2"><span class="font-mono">INTEGER</span><span class="text-base-content/40">Whole numbers / PK</span></li>
78
- <li class="flex items-center justify-between gap-2"><span class="font-mono">REAL</span><span class="text-base-content/40">Decimal numbers</span></li>
79
- <li class="flex items-center justify-between gap-2"><span class="font-mono">BLOB</span><span class="text-base-content/40">Binary data</span></li>
80
- <li class="flex items-center justify-between gap-2"><span class="font-mono">BOOLEAN</span><span class="text-base-content/40">Stored as 0/1</span></li>
81
- <li class="flex items-center justify-between gap-2"><span class="font-mono">DATETIME</span><span class="text-base-content/40">ISO-8601 timestamps</span></li>
82
- <li class="flex items-center justify-between gap-2"><span class="font-mono">JSON</span><span class="text-base-content/40">JSON string/functions</span></li>
83
- {{/if}}
84
- </ul>
85
- </div>
86
- </aside>
87
- </div>
88
- </div>
89
- <script src="{{basePath}}/js/designer.js" defer></script>
1
+ <div class="space-y-6">
90
2
  <div class="page-header">
91
3
  <div class="page-header-row">
92
4
  <div>
93
5
  <div class="page-pretitle">Designer</div>
94
6
  <h1 class="page-title">Create table</h1>
95
7
  <p class="mt-0.5 text-xs text-base-content/60">Define columns visually — the SQL preview updates live as you type.</p>
96
8
  </div>
97
9
  </div>
98
10
  </div>
99
11
  <div class="grid gap-6 lg:grid-cols-[1fr_380px]">
100
12
  <div class="space-y-5">
101
13
  <div class="app-card p-5">
102
14
  <label class="field-label">
103
15
  Table name
104
16
  <span class="chip chip-type">required</span>
105
17
  </label>
106
18
  <input id="table-name" type="text" class="field-input font-mono" placeholder="e.g. users" autocomplete="off" spellcheck="false" />
107
19
  </div>
108
20
  <div class="app-card">
109
21
  <div class="flex flex-wrap items-center justify-between gap-2 border-b border-base-200 px-5 py-4">
110
22
  <h2 class="text-sm font-semibold uppercase tracking-wide text-base-content/45">Columns</h2>
111
23
  <button id="add-column" type="button" class="btn btn-outline btn-sm gap-1.5">
112
24
  {{{icon "plus" class="h-4 w-4"}}}
113
25
  Add column
114
26
  </button>
115
27
  </div>
116
28
  <div id="columns" class="space-y-3 p-4"></div>
117
29
  <div id="designer-error" class="hidden px-4 pb-4"></div>
118
30
  <div class="flex flex-wrap gap-2 border-t border-base-200 px-5 py-4">
119
31
  {{#unless readonly}}
120
32
  <button id="create-table" type="button" class="btn btn-primary gap-1.5">
121
33
  {{{icon "check" class="h-4 w-4"}}}
122
34
  Create table
123
35
  </button>
124
36
  {{else}}
125
37
  <span class="text-sm font-medium text-warning">Read-only — table creation is disabled.</span>
126
38
  {{/unless}}
127
39
  <button id="copy-sql" type="button" class="btn btn-outline gap-1.5" title="Copy the preview SQL">
128
40
  {{{icon "copy" class="h-4 w-4"}}}
129
41
  Copy SQL
130
42
  </button>
131
43
  </div>
132
44
  </div>
133
45
  </div>
134
46
  <aside class="space-y-4 self-start lg:sticky lg:top-24">
135
47
  <div class="app-card overflow-hidden">
136
48
  <div class="flex items-center justify-between border-b border-base-200 bg-base-200/40 px-4 py-3">
137
49
  <h2 class="flex items-center gap-2 text-sm font-semibold text-base-content/60">
138
50
  <span class="grid h-5 w-5 place-items-center rounded-md bg-primary/10 text-primary">
139
51
  {{{icon "query" class="h-3.5 w-3.5"}}}
140
52
  </span>
141
53
  SQL preview
142
54
  </h2>
143
55
  <span id="preview-status" class="text-[11px] font-medium text-base-content/40">waiting…</span>
144
56
  </div>
145
57
  <div class="p-4">
146
58
  <pre id="sql-preview" class="code-panel hidden"><code id="preview-code"></code></pre>
147
59
  <div id="preview-placeholder" class="rounded-xl border border-dashed border-base-300 px-4 py-8 text-center text-sm text-base-content/35">
148
60
  Your <code class="font-mono">CREATE TABLE</code> statement will appear here as you build it.
149
61
  </div>
150
62
  </div>
151
63
  </div>
152
64
  <div class="rounded-2xl border border-base-300/70 bg-base-100 p-4">
153
65
  <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wider text-base-content/45">
154
66
  {{#if isPostgres}}PostgreSQL Type Guide{{else}}SQLite Type Guide{{/if}}
155
67
  </h3>
156
68
  <ul class="space-y-1.5 text-[13px] text-base-content/60">
157
69
  {{#if isPostgres}}
158
70
  <li class="flex items-center justify-between gap-2"><span class="font-mono">TEXT / VARCHAR</span><span class="text-base-content/40">Free-form string</span></li>
159
71
  <li class="flex items-center justify-between gap-2"><span class="font-mono">INTEGER / BIGINT</span><span class="text-base-content/40">Whole numbers</span></li>
160
72
  <li class="flex items-center justify-between gap-2"><span class="font-mono">SERIAL / BIGSERIAL</span><span class="text-base-content/40">Auto-incrementing PK</span></li>
161
73
  <li class="flex items-center justify-between gap-2"><span class="font-mono">REAL / NUMERIC</span><span class="text-base-content/40">Decimal numbers</span></li>
162
74
  <li class="flex items-center justify-between gap-2"><span class="font-mono">BYTEA</span><span class="text-base-content/40">Binary byte data</span></li>
163
75
  <li class="flex items-center justify-between gap-2"><span class="font-mono">BOOLEAN</span><span class="text-base-content/40">true / false</span></li>
164
76
  <li class="flex items-center justify-between gap-2"><span class="font-mono">TIMESTAMPTZ</span><span class="text-base-content/40">Timestamp with TZ</span></li>
165
77
  <li class="flex items-center justify-between gap-2"><span class="font-mono">JSON / JSONB</span><span class="text-base-content/40">Structured JSON</span></li>
166
78
  <li class="flex items-center justify-between gap-2"><span class="font-mono">UUID</span><span class="text-base-content/40">UUID generator</span></li>
167
79
  {{else}}
168
80
  <li class="flex items-center justify-between gap-2"><span class="font-mono">TEXT</span><span class="text-base-content/40">Free-form text</span></li>
169
81
  <li class="flex items-center justify-between gap-2"><span class="font-mono">INTEGER</span><span class="text-base-content/40">Whole numbers / PK</span></li>
170
82
  <li class="flex items-center justify-between gap-2"><span class="font-mono">REAL</span><span class="text-base-content/40">Decimal numbers</span></li>
171
83
  <li class="flex items-center justify-between gap-2"><span class="font-mono">BLOB</span><span class="text-base-content/40">Binary data</span></li>
172
84
  <li class="flex items-center justify-between gap-2"><span class="font-mono">BOOLEAN</span><span class="text-base-content/40">Stored as 0/1</span></li>
173
85
  <li class="flex items-center justify-between gap-2"><span class="font-mono">DATETIME</span><span class="text-base-content/40">ISO-8601 timestamps</span></li>
174
86
  <li class="flex items-center justify-between gap-2"><span class="font-mono">JSON</span><span class="text-base-content/40">JSON string/functions</span></li>
175
87
  {{/if}}
176
88
  </ul>
177
89
  </div>
178
90
  </aside>
179
91
  </div>