admindb 1.2.1 → 2.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.
Files changed (208) hide show
  1. package/README.md +262 -329
  2. package/dist/app.d.ts +25 -4
  3. package/dist/app.js +79 -15
  4. package/dist/app.js.map +1 -1
  5. package/dist/auth/config.d.ts +19 -0
  6. package/dist/auth/config.js +147 -0
  7. package/dist/auth/config.js.map +1 -0
  8. package/dist/auth/crypto.d.ts +27 -0
  9. package/dist/auth/crypto.js +133 -0
  10. package/dist/auth/crypto.js.map +1 -0
  11. package/dist/auth/index.d.ts +5 -0
  12. package/dist/auth/index.js +22 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/auth/middleware.d.ts +14 -0
  15. package/dist/auth/middleware.js +100 -0
  16. package/dist/auth/middleware.js.map +1 -0
  17. package/dist/auth/routes.d.ts +7 -0
  18. package/dist/auth/routes.js +78 -0
  19. package/dist/auth/routes.js.map +1 -0
  20. package/dist/auth/types.d.ts +35 -0
  21. package/dist/auth/types.js +11 -0
  22. package/dist/auth/types.js.map +1 -0
  23. package/dist/cli/args.d.ts +45 -0
  24. package/dist/cli/args.js +328 -0
  25. package/dist/cli/args.js.map +1 -0
  26. package/dist/cli/config.d.ts +56 -0
  27. package/dist/cli/config.js +133 -0
  28. package/dist/cli/config.js.map +1 -0
  29. package/dist/cli/index.d.ts +4 -0
  30. package/dist/cli/index.js +21 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/runner.d.ts +1 -0
  33. package/dist/cli/runner.js +222 -0
  34. package/dist/cli/runner.js.map +1 -0
  35. package/dist/cli.js +2 -127
  36. package/dist/cli.js.map +1 -1
  37. package/dist/data/datasets.d.ts +17 -0
  38. package/dist/data/datasets.js +133 -0
  39. package/dist/data/datasets.js.map +1 -0
  40. package/dist/data/detector.d.ts +30 -0
  41. package/dist/data/detector.js +472 -0
  42. package/dist/data/detector.js.map +1 -0
  43. package/dist/data/engine.d.ts +10 -0
  44. package/dist/data/engine.js +211 -0
  45. package/dist/data/engine.js.map +1 -0
  46. package/dist/data/index.d.ts +5 -0
  47. package/dist/data/index.js +22 -0
  48. package/dist/data/index.js.map +1 -0
  49. package/dist/data/strategies.d.ts +30 -0
  50. package/dist/data/strategies.js +343 -0
  51. package/dist/data/strategies.js.map +1 -0
  52. package/dist/data/types.d.ts +73 -0
  53. package/dist/data/types.js +8 -0
  54. package/dist/data/types.js.map +1 -0
  55. package/dist/db/database.d.ts +14 -146
  56. package/dist/db/database.js +208 -461
  57. package/dist/db/database.js.map +1 -1
  58. package/dist/db/export.d.ts +2 -2
  59. package/dist/db/export.js +7 -2
  60. package/dist/db/export.js.map +1 -1
  61. package/dist/db/filters.d.ts +22 -0
  62. package/dist/db/filters.js +158 -0
  63. package/dist/db/filters.js.map +1 -0
  64. package/dist/db/index.d.ts +8 -0
  65. package/dist/db/index.js +25 -0
  66. package/dist/db/index.js.map +1 -0
  67. package/dist/db/introspection.d.ts +6 -0
  68. package/dist/db/introspection.js +172 -0
  69. package/dist/db/introspection.js.map +1 -0
  70. package/dist/db/manager.d.ts +32 -19
  71. package/dist/db/manager.js +203 -44
  72. package/dist/db/manager.js.map +1 -1
  73. package/dist/db/migrations.d.ts +5 -0
  74. package/dist/db/migrations.js +110 -0
  75. package/dist/db/migrations.js.map +1 -0
  76. package/dist/db/postgres.d.ts +85 -0
  77. package/dist/db/postgres.js +745 -0
  78. package/dist/db/postgres.js.map +1 -0
  79. package/dist/db/types.d.ts +206 -0
  80. package/dist/db/types.js +7 -0
  81. package/dist/db/types.js.map +1 -0
  82. package/dist/index.d.ts +9 -2
  83. package/dist/index.js +46 -4
  84. package/dist/index.js.map +1 -1
  85. package/dist/public/css/app.css +1 -1
  86. package/dist/public/css/input.css +74 -11
  87. package/dist/public/js/app.js +142 -0
  88. package/dist/public/js/browse.js +591 -104
  89. package/dist/public/js/databases.js +105 -13
  90. package/dist/public/js/designer.js +55 -2
  91. package/dist/public/js/forms.js +610 -28
  92. package/dist/public/js/icons.js +51 -0
  93. package/dist/public/js/inspector.js +638 -0
  94. package/dist/public/js/query.js +93 -3
  95. package/dist/public/js/schema.js +185 -52
  96. package/dist/public/js/seed.js +865 -152
  97. package/dist/routes/api/helpers.d.ts +42 -0
  98. package/dist/routes/api/helpers.js +133 -0
  99. package/dist/routes/api/helpers.js.map +1 -0
  100. package/dist/routes/api/import-export.d.ts +3 -0
  101. package/dist/routes/api/import-export.js +85 -0
  102. package/dist/routes/api/import-export.js.map +1 -0
  103. package/dist/routes/api/index.d.ts +4 -0
  104. package/dist/routes/api/index.js +37 -0
  105. package/dist/routes/api/index.js.map +1 -0
  106. package/dist/routes/api/query.d.ts +3 -0
  107. package/dist/routes/api/query.js +76 -0
  108. package/dist/routes/api/query.js.map +1 -0
  109. package/dist/routes/api/rows.d.ts +3 -0
  110. package/dist/routes/api/rows.js +373 -0
  111. package/dist/routes/api/rows.js.map +1 -0
  112. package/dist/routes/api/seed.d.ts +3 -0
  113. package/dist/routes/api/seed.js +82 -0
  114. package/dist/routes/api/seed.js.map +1 -0
  115. package/dist/routes/api/tables.d.ts +3 -0
  116. package/dist/routes/api/tables.js +160 -0
  117. package/dist/routes/api/tables.js.map +1 -0
  118. package/dist/routes/databases.d.ts +8 -11
  119. package/dist/routes/databases.js +100 -66
  120. package/dist/routes/databases.js.map +1 -1
  121. package/dist/routes/index.d.ts +3 -0
  122. package/dist/routes/index.js +20 -0
  123. package/dist/routes/index.js.map +1 -0
  124. package/dist/routes/pages.d.ts +3 -3
  125. package/dist/routes/pages.js +157 -64
  126. package/dist/routes/pages.js.map +1 -1
  127. package/dist/serverless.d.ts +40 -0
  128. package/dist/serverless.js +210 -0
  129. package/dist/serverless.js.map +1 -0
  130. package/dist/sql/generator.d.ts +7 -3
  131. package/dist/sql/generator.js +144 -7
  132. package/dist/sql/generator.js.map +1 -1
  133. package/dist/sql/index.d.ts +2 -0
  134. package/dist/sql/index.js +19 -0
  135. package/dist/sql/index.js.map +1 -0
  136. package/dist/types/api.d.ts +412 -0
  137. package/dist/types/api.js +9 -0
  138. package/dist/types/api.js.map +1 -0
  139. package/dist/utils/colors.d.ts +40 -0
  140. package/dist/utils/colors.js +64 -0
  141. package/dist/utils/colors.js.map +1 -0
  142. package/dist/{util.d.ts → utils/common.d.ts} +10 -6
  143. package/dist/{util.js → utils/common.js} +80 -13
  144. package/dist/utils/common.js.map +1 -0
  145. package/dist/utils/csv.js.map +1 -0
  146. package/dist/utils/datatype.d.ts +49 -0
  147. package/dist/utils/datatype.js +222 -0
  148. package/dist/utils/datatype.js.map +1 -0
  149. package/dist/utils/icons.d.ts +11 -0
  150. package/dist/utils/icons.js +72 -0
  151. package/dist/utils/icons.js.map +1 -0
  152. package/dist/utils/index.d.ts +4 -0
  153. package/dist/utils/index.js +21 -0
  154. package/dist/utils/index.js.map +1 -0
  155. package/dist/{logger.d.ts → utils/logger.d.ts} +1 -1
  156. package/dist/utils/logger.js +40 -0
  157. package/dist/utils/logger.js.map +1 -0
  158. package/dist/views/layouts/main.hbs +40 -11
  159. package/dist/views/pages/databases.hbs +182 -74
  160. package/dist/views/pages/designer.hbs +29 -11
  161. package/dist/views/pages/error.hbs +3 -3
  162. package/dist/views/pages/form.hbs +5 -3
  163. package/dist/views/pages/home.hbs +22 -13
  164. package/dist/views/pages/login.hbs +111 -0
  165. package/dist/views/pages/query.hbs +8 -6
  166. package/dist/views/pages/schema.hbs +41 -13
  167. package/dist/views/pages/seed.hbs +200 -54
  168. package/dist/views/pages/table.hbs +152 -72
  169. package/dist/views/partials/icon.hbs +2 -0
  170. package/dist/views/partials/navbar.hbs +69 -25
  171. package/dist/views/partials/sidebar.hbs +108 -94
  172. package/docs/API.md +144 -0
  173. package/docs/EXAMPLES.md +576 -0
  174. package/docs/SECURITY.md +265 -0
  175. package/package.json +15 -4
  176. package/dist/args.d.ts +0 -28
  177. package/dist/args.js +0 -187
  178. package/dist/args.js.map +0 -1
  179. package/dist/config.d.ts +0 -17
  180. package/dist/config.js +0 -23
  181. package/dist/config.js.map +0 -1
  182. package/dist/csv.js.map +0 -1
  183. package/dist/data/generator.d.ts +0 -86
  184. package/dist/data/generator.js +0 -1031
  185. package/dist/data/generator.js.map +0 -1
  186. package/dist/logger.js +0 -25
  187. package/dist/logger.js.map +0 -1
  188. package/dist/routes/api.d.ts +0 -9
  189. package/dist/routes/api.js +0 -848
  190. package/dist/routes/api.js.map +0 -1
  191. package/dist/test/classifier.test.d.ts +0 -1
  192. package/dist/test/classifier.test.js +0 -44
  193. package/dist/test/classifier.test.js.map +0 -1
  194. package/dist/test/csv.test.d.ts +0 -1
  195. package/dist/test/csv.test.js +0 -64
  196. package/dist/test/csv.test.js.map +0 -1
  197. package/dist/test/database.test.d.ts +0 -1
  198. package/dist/test/database.test.js +0 -402
  199. package/dist/test/database.test.js.map +0 -1
  200. package/dist/test/generator.test.d.ts +0 -1
  201. package/dist/test/generator.test.js +0 -132
  202. package/dist/test/generator.test.js.map +0 -1
  203. package/dist/test/manager.test.d.ts +0 -1
  204. package/dist/test/manager.test.js +0 -146
  205. package/dist/test/manager.test.js.map +0 -1
  206. package/dist/util.js.map +0 -1
  207. /package/dist/{csv.d.ts → utils/csv.d.ts} +0 -0
  208. /package/dist/{csv.js → utils/csv.js} +0 -0
@@ -3,17 +3,85 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerPages = registerPages;
4
4
  const export_1 = require("../db/export");
5
5
  const generator_1 = require("../sql/generator");
6
- const util_1 = require("../util");
7
- const generator_2 = require("../data/generator");
8
- function buildDisplayRows(rawRows, info) {
9
- const pkCols = info.primaryKey;
10
- return rawRows.map((row) => ({
11
- cells: info.columns.map((c) => {
12
- const v = (0, util_1.normalizeCell)(row[c.name]);
13
- return { name: c.name, value: v, isNull: v === null || v === undefined, display: v == null ? '' : String(v) };
14
- }),
15
- pkEncoded: pkCols.length ? (0, util_1.encodePk)(pkCols.map((c) => row[c])) : null,
16
- }));
6
+ const common_1 = require("../utils/common");
7
+ const datatype_1 = require("../utils/datatype");
8
+ const index_1 = require("../data/index");
9
+ function buildDisplayRows(rawRows, info, table, basePath = '') {
10
+ const pkCols = info.primaryKey.length ? info.primaryKey : ['_rowid_'];
11
+ return rawRows.map((row) => {
12
+ const pkEncoded = (0, common_1.encodePk)(pkCols.map((c) => row[c]));
13
+ return {
14
+ cells: info.columns.map((c) => {
15
+ const raw = row[c.name];
16
+ const v = (0, common_1.normalizeCell)(raw);
17
+ const isNull = v == null;
18
+ const typeUpper = (c.type || '').toUpperCase();
19
+ const isBlob = typeUpper.includes('BLOB') || typeUpper.includes('BYTEA') || Buffer.isBuffer(raw) || raw instanceof Uint8Array || (typeof v === 'string' && (/^0x[0-9a-f]{8,}$/i.test(v) || /^\\x[0-9a-f]{8,}$/i.test(v)));
20
+ let isJson = false;
21
+ let isImage = false;
22
+ let isUrl = false;
23
+ let isColor = false;
24
+ let blobSize = '';
25
+ let blobMime = '';
26
+ let blobExt = '';
27
+ let blobUrl = '';
28
+ if (!isNull) {
29
+ const str = String(v);
30
+ if (isBlob) {
31
+ let buf;
32
+ if (Buffer.isBuffer(raw) || raw instanceof Uint8Array) {
33
+ buf = Buffer.isBuffer(raw) ? raw : Buffer.from(raw);
34
+ }
35
+ else if (typeof v === 'string' && /^0x[0-9a-f]*$/i.test(v)) {
36
+ buf = Buffer.from(v.slice(2), 'hex');
37
+ }
38
+ else if (typeof v === 'string' && /^\\x[0-9a-f]*$/i.test(v)) {
39
+ buf = Buffer.from(v.slice(2), 'hex');
40
+ }
41
+ else {
42
+ buf = Buffer.from(str, 'utf8');
43
+ }
44
+ const mimeInfo = (0, datatype_1.sniffMimeType)(buf);
45
+ blobSize = (0, common_1.formatBytes)(buf.length);
46
+ blobMime = mimeInfo.mime;
47
+ blobExt = mimeInfo.ext;
48
+ isImage = mimeInfo.isImage;
49
+ if (table && pkEncoded) {
50
+ blobUrl = `${basePath}/api/tables/${encodeURIComponent(table)}/row/${encodeURIComponent(pkEncoded)}/blob/${encodeURIComponent(c.name)}`;
51
+ }
52
+ }
53
+ else if ((0, datatype_1.isJsonString)(v) || typeUpper.includes('JSON')) {
54
+ isJson = (0, datatype_1.isJsonString)(v);
55
+ }
56
+ else {
57
+ if (/^https?:\/\/[^\s$.?#].[^\s]*$/i.test(str)) {
58
+ isUrl = true;
59
+ }
60
+ else if (/^#(?:[0-9a-fA-F]{3}){1,2}$|^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+/i.test(str)) {
61
+ isColor = true;
62
+ }
63
+ }
64
+ }
65
+ return {
66
+ name: c.name,
67
+ value: v,
68
+ isNull,
69
+ display: isNull ? '' : String(v),
70
+ type: c.type,
71
+ isBlob,
72
+ isJson,
73
+ isImage,
74
+ isUrl,
75
+ isColor,
76
+ blobSize,
77
+ blobMime,
78
+ blobExt,
79
+ blobUrl,
80
+ };
81
+ }),
82
+ pkEncoded,
83
+ };
84
+ });
17
85
  }
18
86
  function registerPages(router, ctx) {
19
87
  const { db } = ctx;
@@ -21,23 +89,43 @@ function registerPages(router, ctx) {
21
89
  res.status(404).render('pages/error', { title: 'Not found', status: 404, error: message });
22
90
  };
23
91
  // Home / browse overview.
24
- router.get('/', async (req, res, next) => {
92
+ router.get('/', async (_req, res, next) => {
25
93
  try {
26
- const tables = await db.listTables();
27
- const allNames = (tables.data ?? []).map((t) => t.name);
28
- const names = allNames.filter((n) => !n.startsWith('_'));
29
- const internalNames = allNames.filter((n) => n.startsWith('_'));
94
+ const names = res.locals.tables ?? [];
95
+ const internalNames = res.locals.internalTables ?? [];
96
+ let colCountsMap = {};
97
+ if (db.dialect === 'postgres') {
98
+ const colRes = await db.all(`SELECT table_name, count(*)::int AS cols FROM information_schema.columns WHERE table_schema = 'public' GROUP BY table_name;`);
99
+ if (colRes.success && colRes.data) {
100
+ for (const row of colRes.data) {
101
+ if (row && typeof row.table_name === 'string') {
102
+ colCountsMap[row.table_name] = Number(row.cols ?? 0);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ const [stats, saved] = await Promise.all([
108
+ Promise.all(names.map(async (name) => {
109
+ const countR = await db.getRowCount(name);
110
+ const cols = colCountsMap[name] !== undefined
111
+ ? colCountsMap[name]
112
+ : (await db.getTableInfo(name)).data?.columns.length ?? 0;
113
+ return {
114
+ name,
115
+ count: countR.success ? countR.data : 0,
116
+ cols,
117
+ };
118
+ })),
119
+ db.listSavedQueries(),
120
+ ]);
30
121
  const counts = {};
31
122
  const cols = {};
32
123
  let totalRows = 0;
33
- for (const name of names) {
34
- const c = await db.getRowCount(name);
35
- counts[name] = c.success ? c.data : 0;
36
- totalRows += counts[name];
37
- const info = await db.getTableInfo(name);
38
- cols[name] = info.success ? (info.data?.columns.length ?? 0) : 0;
124
+ for (const s of stats) {
125
+ counts[s.name] = s.count;
126
+ cols[s.name] = s.cols;
127
+ totalRows += s.count;
39
128
  }
40
- const saved = await db.listSavedQueries();
41
129
  res.render('pages/home', {
42
130
  title: 'Home',
43
131
  tables: names,
@@ -65,10 +153,13 @@ function registerPages(router, ctx) {
65
153
  const pageSize = Math.max(1, Number.parseInt(String(req.query.size ?? '50'), 10) || 50);
66
154
  const orderBy = req.query.orderBy ? String(req.query.orderBy) : undefined;
67
155
  const orderDir = String(req.query.orderDir ?? 'asc').toLowerCase() === 'desc' ? 'desc' : 'asc';
68
- const filters = (0, util_1.parseFilters)(req.query.f);
69
- const filterQS = (0, util_1.filtersToQS)(filters);
70
- const countR = await db.getRowCount(table, filters);
71
- const rowsR = await db.getRows(table, { page, limit: pageSize, orderBy, orderDir, filters });
156
+ const filters = (0, common_1.parseFilters)(req.query.f);
157
+ const filterQS = (0, common_1.filtersToQS)(filters);
158
+ const [countR, rowsR, refsR] = await Promise.all([
159
+ db.getRowCount(table, filters),
160
+ db.getRows(table, { page, limit: pageSize, orderBy, orderDir, filters }),
161
+ db.getReferencingTables(table),
162
+ ]);
72
163
  const count = countR.success ? countR.data : 0;
73
164
  const rawRows = (rowsR.data ?? []);
74
165
  const pages = Math.max(1, Math.ceil(count / pageSize));
@@ -87,32 +178,28 @@ function registerPages(router, ctx) {
87
178
  href: `${basePath}/tables/${encodeURIComponent(table)}?${qs}${filterQS ? '&' + filterQS : ''}`,
88
179
  };
89
180
  });
90
- // Every table with a foreign key pointing at this one gets its own column
91
- // at the end of the grid; each cell shows how many of its rows reference
92
- // that particular row (click to expand the referencing rows inline).
93
- const refsR = await db.getReferencingTables(table);
94
181
  const refColumns = (refsR.data ?? [])
95
182
  .filter((r) => !r.table.startsWith('_'))
96
183
  .map((rt) => {
97
184
  const ref = rt.refs[0];
98
185
  return { table: rt.table, from: ref?.from ?? '', to: ref?.to ?? '' };
99
186
  });
100
- // Per-row reference counts: one grouped query per referencing table.
101
- const countMap = new Map();
102
- for (const col of refColumns) {
187
+ // Per-row reference counts: parallel query per referencing table.
188
+ const countEntries = await Promise.all(refColumns.map(async (col) => {
103
189
  const values = rawRows
104
190
  .map((r) => r[col.to])
105
191
  .filter((v) => v !== null && v !== undefined);
106
192
  if (!values.length)
107
- continue;
193
+ return [col.table, new Map()];
108
194
  const placeholders = values.map(() => '?').join(', ');
109
195
  const cR = await db.all(`SELECT ${(0, generator_1.quoteIdentifier)(col.from)} AS fk, COUNT(*) AS c FROM ${(0, generator_1.quoteIdentifier)(col.table)} WHERE ${(0, generator_1.quoteIdentifier)(col.from)} IN (${placeholders}) GROUP BY ${(0, generator_1.quoteIdentifier)(col.from)}`, values);
110
196
  const map = new Map();
111
197
  for (const row of (cR.data ?? []))
112
198
  map.set(String(row.fk), Number(row.c));
113
- countMap.set(col.table, map);
114
- }
115
- const rows = buildDisplayRows(rawRows, info.data).map((dr, i) => {
199
+ return [col.table, map];
200
+ }));
201
+ const countMap = new Map(countEntries);
202
+ const rows = buildDisplayRows(rawRows, info.data, table, basePath).map((dr, i) => {
116
203
  const raw = rawRows[i];
117
204
  const refs = refColumns.map((col) => {
118
205
  const v = raw[col.to];
@@ -120,8 +207,8 @@ function registerPages(router, ctx) {
120
207
  table: col.table,
121
208
  from: col.from,
122
209
  to: col.to,
123
- value: v === null || v === undefined ? '' : String(v),
124
- count: v === null || v === undefined ? 0 : (countMap.get(col.table)?.get(String(v)) ?? 0),
210
+ value: v == null ? '' : String(v),
211
+ count: v == null ? 0 : (countMap.get(col.table)?.get(String(v)) ?? 0),
125
212
  };
126
213
  });
127
214
  return { ...dr, refs };
@@ -140,7 +227,7 @@ function registerPages(router, ctx) {
140
227
  colNames: info.data.columns.map((c) => c.name),
141
228
  colHeaders,
142
229
  refColumns,
143
- hasPk: info.data.primaryKey.length > 0,
230
+ hasPk: true,
144
231
  orderBy: orderBy ?? '',
145
232
  orderDir,
146
233
  sizes,
@@ -151,8 +238,8 @@ function registerPages(router, ctx) {
151
238
  browseConfig: {
152
239
  table,
153
240
  filters,
154
- pkCols: info.data.primaryKey,
155
- hasPk: info.data.primaryKey.length > 0,
241
+ pkCols: info.data.primaryKey.length ? info.data.primaryKey : ['_rowid_'],
242
+ hasPk: true,
156
243
  readonly: db.isReadOnly,
157
244
  },
158
245
  });
@@ -165,11 +252,10 @@ function registerPages(router, ctx) {
165
252
  router.get('/tables/:table/schema', async (req, res, next) => {
166
253
  try {
167
254
  const table = req.params.table;
168
- const info = await db.getTableInfo(table);
255
+ const [info, schema] = await Promise.all([db.getTableInfo(table), db.getSchema(table)]);
169
256
  if (!info.success || !info.data || info.data.columns.length === 0) {
170
257
  return notFound(res, `Table "${table}" does not exist.`);
171
258
  }
172
- const schema = await db.getSchema(table);
173
259
  if (!schema.success || !schema.data) {
174
260
  return notFound(res, schema.error ?? 'Failed to load schema.');
175
261
  }
@@ -179,37 +265,42 @@ function registerPages(router, ctx) {
179
265
  table,
180
266
  schema: schema.data,
181
267
  isInternal: table.startsWith('_'),
182
- config: { table, isInternal: table.startsWith('_') },
268
+ dialect: db.dialect,
269
+ isSqlite: db.dialect === 'sqlite',
270
+ isPostgres: db.dialect === 'postgres',
271
+ config: { table, isInternal: table.startsWith('_'), dialect: db.dialect },
183
272
  });
184
273
  }
185
274
  catch (err) {
186
275
  next(err);
187
276
  }
188
277
  });
189
- // Data generator / seeder: pick per-column strategies and row count, then
190
- // insert generated rows (or preview the SQL).
278
+ // Data generator / seeder.
191
279
  router.get('/tables/:table/seed', async (req, res, next) => {
192
280
  try {
193
281
  const table = req.params.table;
194
- const info = await db.getTableInfo(table);
282
+ const [info, countRes] = await Promise.all([db.getTableInfo(table), db.getRowCount(table)]);
195
283
  if (!info.success || !info.data || info.data.columns.length === 0) {
196
284
  return notFound(res, `Table "${table}" does not exist.`);
197
285
  }
198
- const columns = (0, generator_2.buildColumnConfigs)(info.data);
286
+ const rowCount = countRes.success ? countRes.data : 0;
287
+ const columns = (0, index_1.buildColumnConfigs)(info.data);
199
288
  res.locals.currentTable = table;
200
289
  res.render('pages/seed', {
201
290
  title: `Seed data · ${table}`,
202
291
  table,
203
- maxRows: generator_2.MAX_SEED_ROWS,
204
- quickCounts: [10, 100, 1000, generator_2.MAX_SEED_ROWS],
205
- seedConfig: { table, columns, maxRows: generator_2.MAX_SEED_ROWS },
292
+ rowCount,
293
+ colCount: info.data.columns.length,
294
+ maxRows: index_1.MAX_SEED_ROWS,
295
+ quickCounts: [10, 50, 100, 500, 1000, index_1.MAX_SEED_ROWS],
296
+ seedConfig: { table, columns, rowCount, maxRows: index_1.MAX_SEED_ROWS },
206
297
  });
207
298
  }
208
299
  catch (err) {
209
300
  next(err);
210
301
  }
211
302
  });
212
- // Insert form (dynamic form is built client-side from API metadata).
303
+ // Insert form.
213
304
  router.get('/tables/:table/rows/new', async (req, res, next) => {
214
305
  try {
215
306
  const table = req.params.table;
@@ -241,23 +332,20 @@ function registerPages(router, ctx) {
241
332
  if (!info.success || !info.data || info.data.columns.length === 0) {
242
333
  return notFound(res, `Table "${table}" does not exist.`);
243
334
  }
244
- const pkColumns = info.data.primaryKey;
245
- if (!pkColumns.length) {
246
- return notFound(res, `Table "${table}" has no primary key, so rows cannot be edited from the UI.`);
247
- }
248
- const pk = (0, util_1.decodePk)(req.params.id);
335
+ const pkColumns = info.data.primaryKey.length ? info.data.primaryKey : ['_rowid_'];
336
+ const pk = (0, common_1.decodePk)(req.params.id);
249
337
  if (pk.length !== pkColumns.length) {
250
- return notFound(res, 'Invalid primary key.');
338
+ return notFound(res, 'Invalid row identifier.');
251
339
  }
252
340
  res.locals.currentTable = table;
253
341
  res.render('pages/form', {
254
342
  title: `Edit row · ${table}`,
255
343
  table,
256
344
  mode: 'edit',
257
- pk,
345
+ pk: req.params.id,
258
346
  pkColumns,
259
- infoSummary: `${info.data.columns.length} column(s) · PK: ${pkColumns.join(', ')}`,
260
- config: { table, mode: 'edit', pk, pkColumns },
347
+ infoSummary: `${info.data.columns.length} column(s)` + (info.data.primaryKey.length ? ` · PK: ${info.data.primaryKey.join(', ')}` : ''),
348
+ config: { table, mode: 'edit', pk: req.params.id, pkColumns },
261
349
  });
262
350
  }
263
351
  catch (err) {
@@ -266,7 +354,12 @@ function registerPages(router, ctx) {
266
354
  });
267
355
  // Table designer.
268
356
  router.get('/designer', (_req, res) => {
269
- res.render('pages/designer', { title: 'New table' });
357
+ res.render('pages/designer', {
358
+ title: 'New table',
359
+ dialect: db.dialect,
360
+ isSqlite: db.dialect === 'sqlite',
361
+ isPostgres: db.dialect === 'postgres',
362
+ });
270
363
  });
271
364
  // Query editor.
272
365
  router.get('/query', async (_req, res, next) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/routes/pages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/routes/pages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { type AppOptions } from './app';
3
+ /**
4
+ * Detects if the current process is running in a serverless environment
5
+ * (e.g. Vercel, AWS Lambda, Netlify Functions, Google Cloud Functions/Run, Azure Functions, Cloudflare Pages).
6
+ */
7
+ export declare function isServerlessEnvironment(env?: NodeJS.ProcessEnv): boolean;
8
+ /**
9
+ * Creates an HTTP request listener for standard Node.js serverless runtimes
10
+ * (Vercel API routes, Next.js custom route handlers, Google Cloud Functions, Azure Functions, Micro).
11
+ *
12
+ * In serverless mode, all write operations and database mutations are strictly disabled.
13
+ *
14
+ * Example (Vercel `api/index.ts`):
15
+ * ```ts
16
+ * import { createServerlessHandler } from 'admindb';
17
+ * export default createServerlessHandler({ dbPath: './data.db' });
18
+ * ```
19
+ */
20
+ export declare function createServerlessHandler(options?: AppOptions): (req: IncomingMessage, res: ServerResponse) => void;
21
+ export interface LambdaProxyResult {
22
+ statusCode: number;
23
+ headers: Record<string, string>;
24
+ multiValueHeaders?: Record<string, string[]>;
25
+ body: string;
26
+ isBase64Encoded: boolean;
27
+ }
28
+ /**
29
+ * Creates an AWS Lambda handler for API Gateway (REST v1 and HTTP v2 payloads).
30
+ *
31
+ * In serverless mode, SQLite databases are read-only, while remote PostgreSQL
32
+ * connections are editable unless configured otherwise.
33
+ *
34
+ * Example (AWS Lambda `index.ts`):
35
+ * ```ts
36
+ * import { createLambdaHandler } from 'admindb';
37
+ * export const handler = createLambdaHandler({ dbPath: './data.db' });
38
+ * ```
39
+ */
40
+ export declare function createLambdaHandler(options?: AppOptions): (event: any, _context?: any) => Promise<LambdaProxyResult>;