admindb 1.2.0 → 2.0.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 (202) hide show
  1. package/README.md +250 -352
  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 -142
  56. package/dist/db/database.js +209 -435
  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 +83 -13
  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 +40 -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 +170 -52
  96. package/dist/public/js/seed.js +1090 -0
  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 +163 -54
  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 +4 -3
  131. package/dist/sql/generator.js +103 -6
  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 +33 -11
  159. package/dist/views/pages/databases.hbs +182 -74
  160. package/dist/views/pages/designer.hbs +9 -6
  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 +10 -8
  166. package/dist/views/pages/schema.hbs +41 -13
  167. package/dist/views/pages/seed.hbs +232 -0
  168. package/dist/views/pages/table.hbs +155 -70
  169. package/dist/views/partials/icon.hbs +2 -0
  170. package/dist/views/partials/navbar.hbs +70 -31
  171. package/dist/views/partials/sidebar.hbs +108 -99
  172. package/package.json +12 -5
  173. package/dist/args.d.ts +0 -28
  174. package/dist/args.js +0 -187
  175. package/dist/args.js.map +0 -1
  176. package/dist/config.d.ts +0 -17
  177. package/dist/config.js +0 -23
  178. package/dist/config.js.map +0 -1
  179. package/dist/csv.js.map +0 -1
  180. package/dist/logger.js +0 -25
  181. package/dist/logger.js.map +0 -1
  182. package/dist/routes/api.d.ts +0 -9
  183. package/dist/routes/api.js +0 -786
  184. package/dist/routes/api.js.map +0 -1
  185. package/dist/test/classifier.test.d.ts +0 -1
  186. package/dist/test/classifier.test.js +0 -44
  187. package/dist/test/classifier.test.js.map +0 -1
  188. package/dist/test/csv.test.d.ts +0 -1
  189. package/dist/test/csv.test.js +0 -64
  190. package/dist/test/csv.test.js.map +0 -1
  191. package/dist/test/database.test.d.ts +0 -1
  192. package/dist/test/database.test.js +0 -402
  193. package/dist/test/database.test.js.map +0 -1
  194. package/dist/test/generator.test.d.ts +0 -1
  195. package/dist/test/generator.test.js +0 -132
  196. package/dist/test/generator.test.js.map +0 -1
  197. package/dist/test/manager.test.d.ts +0 -1
  198. package/dist/test/manager.test.js +0 -146
  199. package/dist/test/manager.test.js.map +0 -1
  200. package/dist/util.js.map +0 -1
  201. /package/dist/{csv.d.ts → utils/csv.d.ts} +0 -0
  202. /package/dist/{csv.js → utils/csv.js} +0 -0
@@ -3,16 +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
- function buildDisplayRows(rawRows, info) {
8
- const pkCols = info.primaryKey;
9
- return rawRows.map((row) => ({
10
- cells: info.columns.map((c) => {
11
- const v = (0, util_1.normalizeCell)(row[c.name]);
12
- return { name: c.name, value: v, isNull: v === null || v === undefined, display: v == null ? '' : String(v) };
13
- }),
14
- pkEncoded: pkCols.length ? (0, util_1.encodePk)(pkCols.map((c) => row[c])) : null,
15
- }));
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
+ });
16
85
  }
17
86
  function registerPages(router, ctx) {
18
87
  const { db } = ctx;
@@ -20,23 +89,43 @@ function registerPages(router, ctx) {
20
89
  res.status(404).render('pages/error', { title: 'Not found', status: 404, error: message });
21
90
  };
22
91
  // Home / browse overview.
23
- router.get('/', async (req, res, next) => {
92
+ router.get('/', async (_req, res, next) => {
24
93
  try {
25
- const tables = await db.listTables();
26
- const allNames = (tables.data ?? []).map((t) => t.name);
27
- const names = allNames.filter((n) => !n.startsWith('_'));
28
- 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
+ ]);
29
121
  const counts = {};
30
122
  const cols = {};
31
123
  let totalRows = 0;
32
- for (const name of names) {
33
- const c = await db.getRowCount(name);
34
- counts[name] = c.success ? c.data : 0;
35
- totalRows += counts[name];
36
- const info = await db.getTableInfo(name);
37
- 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;
38
128
  }
39
- const saved = await db.listSavedQueries();
40
129
  res.render('pages/home', {
41
130
  title: 'Home',
42
131
  tables: names,
@@ -64,10 +153,13 @@ function registerPages(router, ctx) {
64
153
  const pageSize = Math.max(1, Number.parseInt(String(req.query.size ?? '50'), 10) || 50);
65
154
  const orderBy = req.query.orderBy ? String(req.query.orderBy) : undefined;
66
155
  const orderDir = String(req.query.orderDir ?? 'asc').toLowerCase() === 'desc' ? 'desc' : 'asc';
67
- const filters = (0, util_1.parseFilters)(req.query.f);
68
- const filterQS = (0, util_1.filtersToQS)(filters);
69
- const countR = await db.getRowCount(table, filters);
70
- 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
+ ]);
71
163
  const count = countR.success ? countR.data : 0;
72
164
  const rawRows = (rowsR.data ?? []);
73
165
  const pages = Math.max(1, Math.ceil(count / pageSize));
@@ -86,32 +178,28 @@ function registerPages(router, ctx) {
86
178
  href: `${basePath}/tables/${encodeURIComponent(table)}?${qs}${filterQS ? '&' + filterQS : ''}`,
87
179
  };
88
180
  });
89
- // Every table with a foreign key pointing at this one gets its own column
90
- // at the end of the grid; each cell shows how many of its rows reference
91
- // that particular row (click to expand the referencing rows inline).
92
- const refsR = await db.getReferencingTables(table);
93
181
  const refColumns = (refsR.data ?? [])
94
182
  .filter((r) => !r.table.startsWith('_'))
95
183
  .map((rt) => {
96
184
  const ref = rt.refs[0];
97
185
  return { table: rt.table, from: ref?.from ?? '', to: ref?.to ?? '' };
98
186
  });
99
- // Per-row reference counts: one grouped query per referencing table.
100
- const countMap = new Map();
101
- 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) => {
102
189
  const values = rawRows
103
190
  .map((r) => r[col.to])
104
191
  .filter((v) => v !== null && v !== undefined);
105
192
  if (!values.length)
106
- continue;
193
+ return [col.table, new Map()];
107
194
  const placeholders = values.map(() => '?').join(', ');
108
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);
109
196
  const map = new Map();
110
197
  for (const row of (cR.data ?? []))
111
198
  map.set(String(row.fk), Number(row.c));
112
- countMap.set(col.table, map);
113
- }
114
- 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) => {
115
203
  const raw = rawRows[i];
116
204
  const refs = refColumns.map((col) => {
117
205
  const v = raw[col.to];
@@ -119,8 +207,8 @@ function registerPages(router, ctx) {
119
207
  table: col.table,
120
208
  from: col.from,
121
209
  to: col.to,
122
- value: v === null || v === undefined ? '' : String(v),
123
- 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),
124
212
  };
125
213
  });
126
214
  return { ...dr, refs };
@@ -139,7 +227,7 @@ function registerPages(router, ctx) {
139
227
  colNames: info.data.columns.map((c) => c.name),
140
228
  colHeaders,
141
229
  refColumns,
142
- hasPk: info.data.primaryKey.length > 0,
230
+ hasPk: true,
143
231
  orderBy: orderBy ?? '',
144
232
  orderDir,
145
233
  sizes,
@@ -150,8 +238,8 @@ function registerPages(router, ctx) {
150
238
  browseConfig: {
151
239
  table,
152
240
  filters,
153
- pkCols: info.data.primaryKey,
154
- hasPk: info.data.primaryKey.length > 0,
241
+ pkCols: info.data.primaryKey.length ? info.data.primaryKey : ['_rowid_'],
242
+ hasPk: true,
155
243
  readonly: db.isReadOnly,
156
244
  },
157
245
  });
@@ -164,11 +252,10 @@ function registerPages(router, ctx) {
164
252
  router.get('/tables/:table/schema', async (req, res, next) => {
165
253
  try {
166
254
  const table = req.params.table;
167
- const info = await db.getTableInfo(table);
255
+ const [info, schema] = await Promise.all([db.getTableInfo(table), db.getSchema(table)]);
168
256
  if (!info.success || !info.data || info.data.columns.length === 0) {
169
257
  return notFound(res, `Table "${table}" does not exist.`);
170
258
  }
171
- const schema = await db.getSchema(table);
172
259
  if (!schema.success || !schema.data) {
173
260
  return notFound(res, schema.error ?? 'Failed to load schema.');
174
261
  }
@@ -185,7 +272,32 @@ function registerPages(router, ctx) {
185
272
  next(err);
186
273
  }
187
274
  });
188
- // Insert form (dynamic form is built client-side from API metadata).
275
+ // Data generator / seeder.
276
+ router.get('/tables/:table/seed', async (req, res, next) => {
277
+ try {
278
+ const table = req.params.table;
279
+ const [info, countRes] = await Promise.all([db.getTableInfo(table), db.getRowCount(table)]);
280
+ if (!info.success || !info.data || info.data.columns.length === 0) {
281
+ return notFound(res, `Table "${table}" does not exist.`);
282
+ }
283
+ const rowCount = countRes.success ? countRes.data : 0;
284
+ const columns = (0, index_1.buildColumnConfigs)(info.data);
285
+ res.locals.currentTable = table;
286
+ res.render('pages/seed', {
287
+ title: `Seed data · ${table}`,
288
+ table,
289
+ rowCount,
290
+ colCount: info.data.columns.length,
291
+ maxRows: index_1.MAX_SEED_ROWS,
292
+ quickCounts: [10, 50, 100, 500, 1000, index_1.MAX_SEED_ROWS],
293
+ seedConfig: { table, columns, rowCount, maxRows: index_1.MAX_SEED_ROWS },
294
+ });
295
+ }
296
+ catch (err) {
297
+ next(err);
298
+ }
299
+ });
300
+ // Insert form.
189
301
  router.get('/tables/:table/rows/new', async (req, res, next) => {
190
302
  try {
191
303
  const table = req.params.table;
@@ -217,23 +329,20 @@ function registerPages(router, ctx) {
217
329
  if (!info.success || !info.data || info.data.columns.length === 0) {
218
330
  return notFound(res, `Table "${table}" does not exist.`);
219
331
  }
220
- const pkColumns = info.data.primaryKey;
221
- if (!pkColumns.length) {
222
- return notFound(res, `Table "${table}" has no primary key, so rows cannot be edited from the UI.`);
223
- }
224
- const pk = (0, util_1.decodePk)(req.params.id);
332
+ const pkColumns = info.data.primaryKey.length ? info.data.primaryKey : ['_rowid_'];
333
+ const pk = (0, common_1.decodePk)(req.params.id);
225
334
  if (pk.length !== pkColumns.length) {
226
- return notFound(res, 'Invalid primary key.');
335
+ return notFound(res, 'Invalid row identifier.');
227
336
  }
228
337
  res.locals.currentTable = table;
229
338
  res.render('pages/form', {
230
339
  title: `Edit row · ${table}`,
231
340
  table,
232
341
  mode: 'edit',
233
- pk,
342
+ pk: req.params.id,
234
343
  pkColumns,
235
- infoSummary: `${info.data.columns.length} column(s) · PK: ${pkColumns.join(', ')}`,
236
- config: { table, mode: 'edit', pk, pkColumns },
344
+ infoSummary: `${info.data.columns.length} column(s)` + (info.data.primaryKey.length ? ` · PK: ${info.data.primaryKey.join(', ')}` : ''),
345
+ config: { table, mode: 'edit', pk: req.params.id, pkColumns },
237
346
  });
238
347
  }
239
348
  catch (err) {
@@ -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>;
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isServerlessEnvironment = isServerlessEnvironment;
4
+ exports.createServerlessHandler = createServerlessHandler;
5
+ exports.createLambdaHandler = createLambdaHandler;
6
+ const node_http_1 = require("node:http");
7
+ const node_net_1 = require("node:net");
8
+ const app_1 = require("./app");
9
+ /**
10
+ * Detects if the current process is running in a serverless environment
11
+ * (e.g. Vercel, AWS Lambda, Netlify Functions, Google Cloud Functions/Run, Azure Functions, Cloudflare Pages).
12
+ */
13
+ function isServerlessEnvironment(env = process.env) {
14
+ // Explicit serverless flags
15
+ if (['1', 'true', 'yes', 'on'].includes(String(env.ADMINDB_SERVERLESS ?? env.SERVERLESS ?? env.IS_SERVERLESS ?? '').trim().toLowerCase())) {
16
+ return true;
17
+ }
18
+ // Vercel Serverless Functions
19
+ if (Boolean(env.VERCEL || env.VERCEL_ENV || env.NOW_REGION)) {
20
+ return true;
21
+ }
22
+ // AWS Lambda
23
+ if (Boolean(env.AWS_LAMBDA_FUNCTION_NAME || env.LAMBDA_TASK_ROOT || env.AWS_EXECUTION_ENV)) {
24
+ return true;
25
+ }
26
+ // Netlify Functions
27
+ if (Boolean(env.NETLIFY || env.NETLIFY_LOCAL)) {
28
+ return true;
29
+ }
30
+ // Google Cloud Functions / Cloud Run
31
+ if (Boolean(env.FUNCTION_TARGET || env.FUNCTION_NAME || env.K_SERVICE)) {
32
+ return true;
33
+ }
34
+ // Azure Functions
35
+ if (Boolean(env.FUNCTIONS_WORKER_RUNTIME || env.WEBSITE_INSTANCE_ID)) {
36
+ return true;
37
+ }
38
+ // Cloudflare Pages
39
+ if (Boolean(env.CF_PAGES)) {
40
+ return true;
41
+ }
42
+ return false;
43
+ }
44
+ /**
45
+ * Creates an HTTP request listener for standard Node.js serverless runtimes
46
+ * (Vercel API routes, Next.js custom route handlers, Google Cloud Functions, Azure Functions, Micro).
47
+ *
48
+ * In serverless mode, all write operations and database mutations are strictly disabled.
49
+ *
50
+ * Example (Vercel `api/index.ts`):
51
+ * ```ts
52
+ * import { createServerlessHandler } from 'admindb';
53
+ * export default createServerlessHandler({ dbPath: './data.db' });
54
+ * ```
55
+ */
56
+ function createServerlessHandler(options = {}) {
57
+ const rawTarget = options.connection || options.dbPath || '';
58
+ const isPg = Boolean(options.pgOptions) ||
59
+ (typeof rawTarget === 'string' && (rawTarget.startsWith('postgres://') || rawTarget.startsWith('postgresql://'))) ||
60
+ options.db?.dialect === 'postgres';
61
+ const defaultReadonly = isPg ? false : true;
62
+ const app = (0, app_1.createRouter)({
63
+ ...options,
64
+ serverless: options.serverless ?? true,
65
+ readonly: options.readonly ?? defaultReadonly,
66
+ });
67
+ return (req, res) => {
68
+ app(req, res);
69
+ };
70
+ }
71
+ /**
72
+ * Creates an AWS Lambda handler for API Gateway (REST v1 and HTTP v2 payloads).
73
+ *
74
+ * In serverless mode, SQLite databases are read-only, while remote PostgreSQL
75
+ * connections are editable unless configured otherwise.
76
+ *
77
+ * Example (AWS Lambda `index.ts`):
78
+ * ```ts
79
+ * import { createLambdaHandler } from 'admindb';
80
+ * export const handler = createLambdaHandler({ dbPath: './data.db' });
81
+ * ```
82
+ */
83
+ function createLambdaHandler(options = {}) {
84
+ const rawTarget = options.connection || options.dbPath || '';
85
+ const isPg = Boolean(options.pgOptions) ||
86
+ (typeof rawTarget === 'string' && (rawTarget.startsWith('postgres://') || rawTarget.startsWith('postgresql://'))) ||
87
+ options.db?.dialect === 'postgres';
88
+ const defaultReadonly = isPg ? false : true;
89
+ const app = (0, app_1.createRouter)({
90
+ ...options,
91
+ serverless: options.serverless ?? true,
92
+ readonly: options.readonly ?? defaultReadonly,
93
+ });
94
+ return async (event, _context) => {
95
+ return new Promise((resolve) => {
96
+ try {
97
+ const isV2 = Boolean(event.version === '2.0' || event.rawPath);
98
+ const method = (isV2
99
+ ? event.requestContext?.http?.method
100
+ : event.httpMethod) || 'GET';
101
+ const rawPath = isV2 ? (event.rawPath || '/') : (event.path || '/');
102
+ const qs = isV2
103
+ ? (event.rawQueryString || '')
104
+ : (event.queryStringParameters
105
+ ? Object.entries(event.queryStringParameters)
106
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
107
+ .join('&')
108
+ : '');
109
+ const url = qs ? `${rawPath}?${qs}` : rawPath;
110
+ const rawHeaders = event.headers || {};
111
+ const headers = {};
112
+ for (const [k, v] of Object.entries(rawHeaders)) {
113
+ if (v !== undefined && v !== null) {
114
+ headers[k.toLowerCase()] = String(v);
115
+ }
116
+ }
117
+ if (event.cookies && Array.isArray(event.cookies) && !headers['cookie']) {
118
+ headers['cookie'] = event.cookies.join('; ');
119
+ }
120
+ // Prepare request body
121
+ let bodyBuffer = null;
122
+ if (event.body) {
123
+ if (event.isBase64Encoded) {
124
+ bodyBuffer = Buffer.from(event.body, 'base64');
125
+ }
126
+ else {
127
+ bodyBuffer = Buffer.from(event.body, 'utf8');
128
+ }
129
+ if (!headers['content-length']) {
130
+ headers['content-length'] = String(bodyBuffer.length);
131
+ }
132
+ }
133
+ const socket = new node_net_1.Socket();
134
+ const req = new node_http_1.IncomingMessage(socket);
135
+ req.url = url;
136
+ req.method = method;
137
+ req.headers = headers;
138
+ req.httpVersion = '1.1';
139
+ req.httpVersionMajor = 1;
140
+ req.httpVersionMinor = 1;
141
+ if (bodyBuffer) {
142
+ req.push(bodyBuffer);
143
+ }
144
+ req.push(null);
145
+ const res = new node_http_1.ServerResponse(req);
146
+ const chunks = [];
147
+ res.write = function (chunk, ...args) {
148
+ if (chunk) {
149
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
150
+ }
151
+ const cb = typeof args[0] === 'function' ? args[0] : typeof args[1] === 'function' ? args[1] : undefined;
152
+ if (cb)
153
+ cb();
154
+ return true;
155
+ };
156
+ res.end = function (chunk, ...args) {
157
+ if (chunk && typeof chunk !== 'function') {
158
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
159
+ }
160
+ const cb = typeof chunk === 'function'
161
+ ? chunk
162
+ : typeof args[0] === 'function'
163
+ ? args[0]
164
+ : typeof args[1] === 'function'
165
+ ? args[1]
166
+ : undefined;
167
+ if (cb)
168
+ cb();
169
+ const responseHeaders = {};
170
+ const multiValueHeaders = {};
171
+ const resHeaders = res.getHeaders();
172
+ for (const [k, v] of Object.entries(resHeaders)) {
173
+ if (Array.isArray(v)) {
174
+ multiValueHeaders[k] = v.map(String);
175
+ responseHeaders[k] = v.map(String).join(', ');
176
+ }
177
+ else if (v !== undefined) {
178
+ responseHeaders[k] = String(v);
179
+ }
180
+ }
181
+ const fullBody = Buffer.concat(chunks);
182
+ const contentType = String(responseHeaders['content-type'] || '');
183
+ const isBinary = !contentType.startsWith('text/') &&
184
+ !contentType.includes('application/json') &&
185
+ !contentType.includes('application/javascript') &&
186
+ !contentType.includes('application/xml') &&
187
+ !contentType.includes('image/svg+xml');
188
+ resolve({
189
+ statusCode: res.statusCode || 200,
190
+ headers: responseHeaders,
191
+ multiValueHeaders: Object.keys(multiValueHeaders).length > 0 ? multiValueHeaders : undefined,
192
+ body: isBinary ? fullBody.toString('base64') : fullBody.toString('utf8'),
193
+ isBase64Encoded: isBinary,
194
+ });
195
+ return res;
196
+ };
197
+ app(req, res);
198
+ }
199
+ catch (err) {
200
+ resolve({
201
+ statusCode: 500,
202
+ headers: { 'content-type': 'application/json' },
203
+ body: JSON.stringify({ success: false, error: err?.message || 'Server error' }),
204
+ isBase64Encoded: false,
205
+ });
206
+ }
207
+ });
208
+ };
209
+ }
210
+ //# sourceMappingURL=serverless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless.js","sourceRoot":"","sources":["../src/serverless.ts"],"names":[],"mappings":"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"}