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
package/dist/app.d.ts CHANGED
@@ -1,20 +1,41 @@
1
1
  import express from 'express';
2
- import { SqliteDatabase } from './db/database';
2
+ import type { IDatabase, PostgresOptions } from './db/types';
3
3
  import { DbManager } from './db/manager';
4
- import { type Logger, type LogLevel } from './logger';
4
+ import { type Logger, type LogLevel } from './utils/logger';
5
+ import { type AuthConfig } from './auth';
5
6
  export interface AppOptions {
6
- /** Path to the SQLite file (single-db mode). Defaults to `admindb.db`. */
7
+ /** Path to the SQLite file (single-db mode) or connection string. Defaults to `admindb.db`. */
7
8
  dbPath?: string;
9
+ /** PostgreSQL or database connection string (e.g. `postgresql://user:pass@host:5432/db`). */
10
+ connection?: string;
11
+ /** Explicit PostgreSQL connection options. */
12
+ pgOptions?: PostgresOptions;
8
13
  /** URL prefix used by templates/static assets (e.g. `/admin`). Defaults to `''`. */
9
14
  basePath?: string;
10
15
  logger?: Logger;
11
16
  logLevel?: LogLevel;
12
17
  /** Provide an existing database instance (single-db embedding). */
13
- db?: SqliteDatabase;
18
+ db?: IDatabase;
14
19
  /** Enable multi-database mode with a manager over a directory of `.db` files. */
15
20
  manager?: DbManager;
16
21
  /** Open the database read-only — all write routes are rejected with 403. */
17
22
  readonly?: boolean;
23
+ /**
24
+ * Serverless mode flag.
25
+ * When enabled (or auto-detected in Vercel/AWS Lambda/Netlify/etc.),
26
+ * all write operations, mutations, schema alterations, and seeder generators
27
+ * are disabled, enforcing strict read-only safety for ephemeral environments.
28
+ *
29
+ * Defaults to `undefined` (auto-detected via environment).
30
+ */
31
+ serverless?: boolean;
32
+ /**
33
+ * Authentication configuration.
34
+ * - `true` (default): authentication enabled with default or env credentials.
35
+ * - `false`: completely disables authentication (no protection / developer's own auth).
36
+ * - `{ username, password, secret, ... }`: custom credentials and options.
37
+ */
38
+ auth?: boolean | AuthConfig;
18
39
  /**
19
40
  * Manager mode: show the filesystem file-browser on the databases landing
20
41
  * page. Defaults to `true`. Set to `false` to disable browsing (e.g. when the
package/dist/app.js CHANGED
@@ -8,12 +8,16 @@ const express_1 = __importDefault(require("express"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const express_handlebars_1 = require("express-handlebars");
10
10
  const database_1 = require("./db/database");
11
- const logger_1 = require("./logger");
11
+ const postgres_1 = require("./db/postgres");
12
+ const logger_1 = require("./utils/logger");
12
13
  const pages_1 = require("./routes/pages");
13
- const api_1 = require("./routes/api");
14
+ const index_1 = require("./routes/api/index");
14
15
  const databases_1 = require("./routes/databases");
15
- const args_1 = require("./args");
16
- const util_1 = require("./util");
16
+ const args_1 = require("./cli/args");
17
+ const common_1 = require("./utils/common");
18
+ const icons_1 = require("./utils/icons");
19
+ const serverless_1 = require("./serverless");
20
+ const auth_1 = require("./auth");
17
21
  /** Installed package version, exposed to every template as `{{version}}`. */
18
22
  const APP_VERSION = (0, args_1.getPackageVersion)();
19
23
  /**
@@ -32,7 +36,7 @@ const APP_VERSION = (0, args_1.getPackageVersion)();
32
36
  function createRouter(options = {}) {
33
37
  return options.manager ? createManagerApp(options) : createSingleDbApp(options);
34
38
  }
35
- function setupViewEngine(app, logger) {
39
+ function setupViewEngine(app, _logger) {
36
40
  app.engine('hbs', (0, express_handlebars_1.engine)({
37
41
  extname: '.hbs',
38
42
  defaultLayout: 'main',
@@ -46,12 +50,16 @@ function setupViewEngine(app, logger) {
46
50
  const s = v == null ? '' : String(v);
47
51
  return s.length > n ? `${s.slice(0, n)}…` : s;
48
52
  },
49
- json: (v) => JSON.stringify(v).replace(/</g, '\\u003c'),
53
+ json: (v) => (JSON.stringify(v ?? null) ?? 'null').replace(/</g, '\\u003c'),
50
54
  add: (a, b) => Number(a) + Number(b),
51
55
  sub: (a, b) => Number(a) - Number(b),
52
56
  gt: (a, b) => Number(a) > Number(b),
53
57
  lt: (a, b) => Number(a) < Number(b),
54
58
  join: (arr, sep) => (Array.isArray(arr) ? arr.join(String(sep ?? ',')) : String(arr ?? '')),
59
+ icon: (name, options) => {
60
+ const customClass = (options && options.hash && options.hash.class) || undefined;
61
+ return (0, icons_1.renderIcon)(String(name ?? ''), customClass);
62
+ },
55
63
  },
56
64
  }));
57
65
  app.set('view engine', 'hbs');
@@ -69,23 +77,51 @@ function addErrorHandlers(app, logger) {
69
77
  app.use((err, req, res, _next) => {
70
78
  logger.error('Unhandled error', err);
71
79
  if (req.path.startsWith('/api/')) {
72
- return res.status(500).json({ success: false, error: (0, util_1.errorMessage)(err) });
80
+ return res.status(500).json({ success: false, error: (0, common_1.errorMessage)(err) });
73
81
  }
74
- res.status(500).render('pages/error', { title: 'Error', status: 500, error: (0, util_1.errorMessage)(err) });
82
+ res.status(500).render('pages/error', { title: 'Error', status: 500, error: (0, common_1.errorMessage)(err) });
75
83
  });
76
84
  }
77
85
  /** Single-database app (also used as the per-database app in multi-db mode). */
78
86
  function createSingleDbApp(options) {
87
+ const isServerless = options.serverless !== undefined ? options.serverless : (0, serverless_1.isServerlessEnvironment)();
88
+ const rawTarget = options.connection || options.dbPath || '';
89
+ const isPg = Boolean(options.pgOptions) ||
90
+ (typeof rawTarget === 'string' && (rawTarget.startsWith('postgres://') || rawTarget.startsWith('postgresql://'))) ||
91
+ options.db?.dialect === 'postgres';
92
+ // In serverless environments, SQLite local files are ephemeral/read-only,
93
+ // whereas PostgreSQL connects to a remote networked database and is fully editable.
94
+ const readonly = options.readonly !== undefined
95
+ ? Boolean(options.readonly)
96
+ : (isServerless && !isPg);
79
97
  const basePath = (options.basePath ?? '').replace(/\/+$/, '');
80
98
  const logger = options.logger ?? (0, logger_1.createLogger)(options.logLevel ?? 'info', 'admindb');
81
- const db = options.db ?? new database_1.SqliteDatabase(options.dbPath ?? 'admindb.db', logger, { readonly: options.readonly });
99
+ let db;
100
+ if (options.db) {
101
+ db = options.db;
102
+ }
103
+ else {
104
+ if (isPg) {
105
+ const conn = options.pgOptions || rawTarget;
106
+ db = new postgres_1.PostgresDatabase(conn, logger, { readonly });
107
+ }
108
+ else {
109
+ db = new database_1.SqliteDatabase(options.dbPath ?? 'admindb.db', logger, { readonly });
110
+ }
111
+ }
82
112
  const databasesUrl = options.databasesUrl;
113
+ const authConfig = (0, auth_1.resolveAuthConfig)(options.auth);
83
114
  const router = (0, express_1.default)();
84
115
  router.disable('x-powered-by');
85
116
  // Static assets (relative to the mount point, so a prefix "just works").
86
117
  router.use(express_1.default.static(node_path_1.default.join(__dirname, 'public')));
87
118
  setupViewEngine(router, logger);
88
119
  router.use(express_1.default.json({ limit: '10mb' }));
120
+ router.use(express_1.default.urlencoded({ extended: false }));
121
+ // Register authentication endpoints (/login, /logout)
122
+ (0, auth_1.registerAuthRoutes)(router, authConfig, basePath, logger);
123
+ // Authentication gatekeeper middleware
124
+ router.use((0, auth_1.createAuthMiddleware)(authConfig, basePath, logger));
89
125
  // Page locals (skipped for API + static paths).
90
126
  router.use(async (req, res, next) => {
91
127
  try {
@@ -93,11 +129,18 @@ function createSingleDbApp(options) {
93
129
  res.locals.currentPath = req.path;
94
130
  res.locals.currentTable = null;
95
131
  res.locals.dbPath = db.path;
96
- res.locals.dbId = options.dbId ?? null;
132
+ res.locals.dbId = options.dbId ?? (db.dialect === 'postgres' ? 'PostgreSQL' : (node_path_1.default.basename(db.path) || 'SQLite'));
133
+ res.locals.dialect = db.dialect;
134
+ res.locals.isPostgres = db.dialect === 'postgres';
135
+ res.locals.isSqlite = db.dialect === 'sqlite';
136
+ res.locals.dialectName = db.dialect === 'postgres' ? 'PostgreSQL' : 'SQLite';
97
137
  res.locals.databasesUrl = databasesUrl ?? null;
98
138
  res.locals.databasesMode = false;
99
139
  res.locals.readonly = db.isReadOnly;
140
+ res.locals.serverless = isServerless;
100
141
  res.locals.version = APP_VERSION;
142
+ res.locals.authEnabled = authConfig.enabled;
143
+ res.locals.isDefaultPassword = authConfig.isDefaultPassword;
101
144
  if (!req.path.startsWith('/api/')) {
102
145
  const all = await db.listTables();
103
146
  const names = (all.data ?? []).map((t) => t.name);
@@ -111,21 +154,28 @@ function createSingleDbApp(options) {
111
154
  }
112
155
  });
113
156
  (0, pages_1.registerPages)(router, { db, logger });
114
- (0, api_1.registerApi)(router, { db, logger });
157
+ (0, index_1.registerApi)(router, { db, logger });
115
158
  addErrorHandlers(router, logger);
116
159
  return router;
117
160
  }
118
161
  /** Multi-database app: databases landing page + a per-database sub-app per file. */
119
162
  function createManagerApp(options) {
163
+ const isServerless = options.serverless !== undefined ? options.serverless : (0, serverless_1.isServerlessEnvironment)();
164
+ const readonly = isServerless || Boolean(options.readonly);
120
165
  const manager = options.manager;
121
166
  const basePath = (options.basePath ?? '').replace(/\/+$/, '');
122
167
  const logger = options.logger ?? (0, logger_1.createLogger)(options.logLevel ?? 'info', 'admindb');
123
- const readonly = !!options.readonly;
168
+ const authConfig = (0, auth_1.resolveAuthConfig)(options.auth);
124
169
  const app = (0, express_1.default)();
125
170
  app.disable('x-powered-by');
126
171
  app.use(express_1.default.static(node_path_1.default.join(__dirname, 'public')));
127
172
  setupViewEngine(app, logger);
128
173
  app.use(express_1.default.json({ limit: '10mb' }));
174
+ app.use(express_1.default.urlencoded({ extended: false }));
175
+ // Register authentication endpoints (/login, /logout)
176
+ (0, auth_1.registerAuthRoutes)(app, authConfig, basePath, logger);
177
+ // Authentication gatekeeper middleware
178
+ app.use((0, auth_1.createAuthMiddleware)(authConfig, basePath, logger));
129
179
  // Locals for the databases landing page.
130
180
  app.use(async (req, res, next) => {
131
181
  try {
@@ -137,7 +187,10 @@ function createManagerApp(options) {
137
187
  res.locals.databasesUrl = null;
138
188
  res.locals.databasesMode = true;
139
189
  res.locals.readonly = readonly;
190
+ res.locals.serverless = isServerless;
140
191
  res.locals.version = APP_VERSION;
192
+ res.locals.authEnabled = authConfig.enabled;
193
+ res.locals.isDefaultPassword = authConfig.isDefaultPassword;
141
194
  if (!req.path.startsWith('/api/')) {
142
195
  res.locals.tables = [];
143
196
  res.locals.internalTables = [];
@@ -155,7 +208,7 @@ function createManagerApp(options) {
155
208
  logger,
156
209
  basePath,
157
210
  readonly,
158
- allowBrowse: options.allowBrowse,
211
+ allowBrowse: isServerless ? false : options.allowBrowse,
159
212
  browseRoot: options.browseRoot,
160
213
  invalidate: (id) => subApps.delete(id),
161
214
  });
@@ -171,17 +224,28 @@ function createManagerApp(options) {
171
224
  error: `Database "${dbId}" does not exist.`,
172
225
  });
173
226
  }
227
+ const rawRo = req.query.readonly;
228
+ if (rawRo !== undefined) {
229
+ const explicitRo = rawRo === '1' || rawRo === 'true';
230
+ if (!readonly || explicitRo) {
231
+ manager.setReadonly(dbId, explicitRo);
232
+ subApps.delete(dbId);
233
+ }
234
+ }
174
235
  let sub = subApps.get(dbId);
175
236
  if (!sub) {
176
237
  const subBase = `${basePath ? basePath : ''}/${encodeURIComponent(dbId)}`;
238
+ const effectiveRo = readonly || manager.isDbReadOnly(dbId);
177
239
  sub = createSingleDbApp({
178
- db: manager.open(dbId),
240
+ db: manager.open(dbId, effectiveRo),
179
241
  basePath: subBase,
180
242
  logger,
181
243
  logLevel: options.logLevel,
182
244
  dbId,
183
245
  databasesUrl: `${basePath ? basePath : ''}/`,
184
- readonly,
246
+ readonly: effectiveRo,
247
+ serverless: isServerless,
248
+ auth: authConfig,
185
249
  });
186
250
  subApps.set(dbId, sub);
187
251
  }
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type AuthConfig, type ResolvedAuthConfig } from './types';
2
+ /**
3
+ * Clears the in-memory fallback secret cache (primarily for testing).
4
+ */
5
+ export declare function resetPersistentSecretCache(): void;
6
+ /**
7
+ * Returns a persistent secret key for signing session cookies.
8
+ *
9
+ * Priority order:
10
+ * 1. `ADMINDB_SECRET` or `SESSION_SECRET` environment variables.
11
+ * 2. `ADMINDB_SECRET_FILE` path if specified in environment.
12
+ * 3. User home directory `.admindb-secret` (or temp directory if home is not writable).
13
+ * 4. In-memory random fallback if filesystem is completely read-only.
14
+ */
15
+ export declare function getOrCreatePersistentSecret(env?: NodeJS.ProcessEnv): string;
16
+ /**
17
+ * Resolves the authentication options against environment variables.
18
+ */
19
+ export declare function resolveAuthConfig(optionsAuth?: boolean | AuthConfig, env?: NodeJS.ProcessEnv): ResolvedAuthConfig;
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resetPersistentSecretCache = resetPersistentSecretCache;
7
+ exports.getOrCreatePersistentSecret = getOrCreatePersistentSecret;
8
+ exports.resolveAuthConfig = resolveAuthConfig;
9
+ const node_crypto_1 = require("node:crypto");
10
+ const node_fs_1 = require("node:fs");
11
+ const node_os_1 = __importDefault(require("node:os"));
12
+ const node_path_1 = __importDefault(require("node:path"));
13
+ const types_1 = require("./types");
14
+ // In-memory cache of resolved secret to avoid repeated disk reads per process
15
+ let cachedFallbackSecret = null;
16
+ /**
17
+ * Clears the in-memory fallback secret cache (primarily for testing).
18
+ */
19
+ function resetPersistentSecretCache() {
20
+ cachedFallbackSecret = null;
21
+ }
22
+ /**
23
+ * Returns a persistent secret key for signing session cookies.
24
+ *
25
+ * Priority order:
26
+ * 1. `ADMINDB_SECRET` or `SESSION_SECRET` environment variables.
27
+ * 2. `ADMINDB_SECRET_FILE` path if specified in environment.
28
+ * 3. User home directory `.admindb-secret` (or temp directory if home is not writable).
29
+ * 4. In-memory random fallback if filesystem is completely read-only.
30
+ */
31
+ function getOrCreatePersistentSecret(env = process.env) {
32
+ const envSecret = env.ADMINDB_SECRET ?? env.SESSION_SECRET;
33
+ if (envSecret && String(envSecret).trim()) {
34
+ return String(envSecret).trim();
35
+ }
36
+ // If a custom secret file is specified, don't use default home cache
37
+ const customSecretFile = env.ADMINDB_SECRET_FILE ? String(env.ADMINDB_SECRET_FILE).trim() : undefined;
38
+ if (!customSecretFile && cachedFallbackSecret) {
39
+ return cachedFallbackSecret;
40
+ }
41
+ const candidatePaths = [];
42
+ if (customSecretFile) {
43
+ candidatePaths.push(node_path_1.default.resolve(customSecretFile));
44
+ }
45
+ else {
46
+ try {
47
+ const home = node_os_1.default.homedir();
48
+ if (home) {
49
+ candidatePaths.push(node_path_1.default.join(home, '.admindb-secret'));
50
+ }
51
+ }
52
+ catch {
53
+ /* ignore */
54
+ }
55
+ try {
56
+ const tmp = node_os_1.default.tmpdir();
57
+ if (tmp) {
58
+ candidatePaths.push(node_path_1.default.join(tmp, '.admindb-secret'));
59
+ }
60
+ }
61
+ catch {
62
+ /* ignore */
63
+ }
64
+ }
65
+ // 1. Try reading existing secret from candidate paths
66
+ for (const filePath of candidatePaths) {
67
+ try {
68
+ if ((0, node_fs_1.existsSync)(filePath)) {
69
+ const content = (0, node_fs_1.readFileSync)(filePath, 'utf8').trim();
70
+ if (content.length >= 16) {
71
+ if (!customSecretFile) {
72
+ cachedFallbackSecret = content;
73
+ }
74
+ return content;
75
+ }
76
+ }
77
+ }
78
+ catch {
79
+ // Continue to next candidate or write attempt
80
+ }
81
+ }
82
+ // 2. Generate new secret and attempt writing to the first writable candidate path
83
+ const newSecret = (0, node_crypto_1.randomBytes)(32).toString('hex');
84
+ for (const filePath of candidatePaths) {
85
+ try {
86
+ const dir = node_path_1.default.dirname(filePath);
87
+ if (!(0, node_fs_1.existsSync)(dir)) {
88
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
89
+ }
90
+ (0, node_fs_1.writeFileSync)(filePath, newSecret, { encoding: 'utf8', mode: 0o600 });
91
+ if (!customSecretFile) {
92
+ cachedFallbackSecret = newSecret;
93
+ }
94
+ return newSecret;
95
+ }
96
+ catch {
97
+ // Continue to next candidate if write fails
98
+ }
99
+ }
100
+ // 3. Last-resort fallback to in-memory secret if disk is not writable
101
+ if (!customSecretFile) {
102
+ cachedFallbackSecret = newSecret;
103
+ }
104
+ return newSecret;
105
+ }
106
+ /**
107
+ * Resolves the authentication options against environment variables.
108
+ */
109
+ function resolveAuthConfig(optionsAuth, env = process.env) {
110
+ // Check if explicitly disabled via options or environment variable
111
+ const envDisabled = ['0', 'false', 'no', 'off'].includes(String(env.ADMINDB_AUTH ?? '').trim().toLowerCase()) ||
112
+ ['1', 'true', 'yes'].includes(String(env.ADMINDB_NO_AUTH ?? env.ADMINDB_DISABLE_AUTH ?? '').trim().toLowerCase());
113
+ let enabled = true;
114
+ let username = (env.ADMINDB_USERNAME ?? env.ADMINDB_USER) ? String(env.ADMINDB_USERNAME ?? env.ADMINDB_USER).trim() : types_1.DEFAULT_USERNAME;
115
+ let password = (env.ADMINDB_PASSWORD ?? env.ADMINDB_PASS) ? String(env.ADMINDB_PASSWORD ?? env.ADMINDB_PASS).trim() : types_1.DEFAULT_PASSWORD_HASH;
116
+ let secret = (env.ADMINDB_SECRET ?? env.SESSION_SECRET)
117
+ ? String(env.ADMINDB_SECRET ?? env.SESSION_SECRET).trim()
118
+ : getOrCreatePersistentSecret(env);
119
+ let sessionDurationMs = types_1.DEFAULT_SESSION_DURATION_MS;
120
+ if (optionsAuth === false || envDisabled) {
121
+ enabled = false;
122
+ }
123
+ else if (typeof optionsAuth === 'object' && optionsAuth !== null) {
124
+ if (optionsAuth.enabled === false)
125
+ enabled = false;
126
+ if (optionsAuth.username !== undefined)
127
+ username = String(optionsAuth.username).trim();
128
+ if (optionsAuth.password !== undefined)
129
+ password = String(optionsAuth.password).trim();
130
+ if (optionsAuth.secret !== undefined && String(optionsAuth.secret).trim()) {
131
+ secret = String(optionsAuth.secret).trim();
132
+ }
133
+ if (optionsAuth.sessionDurationMs !== undefined)
134
+ sessionDurationMs = optionsAuth.sessionDurationMs;
135
+ }
136
+ const isDefaultPassword = username === types_1.DEFAULT_USERNAME &&
137
+ (password === types_1.DEFAULT_PASSWORD_HASH || password === 'admin');
138
+ return {
139
+ enabled,
140
+ username,
141
+ password,
142
+ secret,
143
+ sessionDurationMs,
144
+ isDefaultPassword,
145
+ };
146
+ }
147
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/auth/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Generates a secure scrypt password hash with a random or provided salt.
3
+ * Format: `scrypt:<saltHex>:<derivedKeyHex>`
4
+ */
5
+ export declare function hashPassword(password: string, salt?: string): string;
6
+ /**
7
+ * Constant-time comparison between two strings to prevent timing attacks.
8
+ */
9
+ export declare function constantTimeCompare(a: string, b: string): boolean;
10
+ /**
11
+ * Verifies a candidate plaintext password against a stored password or scrypt hash.
12
+ */
13
+ export declare function verifyPassword(candidatePassword: string, storedPasswordOrHash: string): boolean;
14
+ /**
15
+ * Parses raw Cookie header string into key-value map.
16
+ */
17
+ export declare function parseCookies(cookieHeader?: string): Record<string, string>;
18
+ /**
19
+ * Creates a tamper-proof signed session token using HMAC-SHA256.
20
+ * Format: `<base64url(username)>.<expiresAtTimestamp>.<hmacSignature>`
21
+ */
22
+ export declare function createSessionToken(username: string, secret: string, durationMs?: number): string;
23
+ /**
24
+ * Verifies a signed session token in constant time.
25
+ * Returns the authenticated username if valid and non-expired, or null otherwise.
26
+ */
27
+ export declare function verifySessionToken(token: string, secret: string, expectedUser?: string): string | null;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashPassword = hashPassword;
4
+ exports.constantTimeCompare = constantTimeCompare;
5
+ exports.verifyPassword = verifyPassword;
6
+ exports.parseCookies = parseCookies;
7
+ exports.createSessionToken = createSessionToken;
8
+ exports.verifySessionToken = verifySessionToken;
9
+ const node_crypto_1 = require("node:crypto");
10
+ const types_1 = require("./types");
11
+ /**
12
+ * Generates a secure scrypt password hash with a random or provided salt.
13
+ * Format: `scrypt:<saltHex>:<derivedKeyHex>`
14
+ */
15
+ function hashPassword(password, salt) {
16
+ const saltHex = salt || (0, node_crypto_1.randomBytes)(16).toString('hex');
17
+ const derivedKey = (0, node_crypto_1.scryptSync)(password, saltHex, 64).toString('hex');
18
+ return `scrypt:${saltHex}:${derivedKey}`;
19
+ }
20
+ /**
21
+ * Constant-time comparison between two strings to prevent timing attacks.
22
+ */
23
+ function constantTimeCompare(a, b) {
24
+ try {
25
+ const bufA = Buffer.from(String(a), 'utf8');
26
+ const bufB = Buffer.from(String(b), 'utf8');
27
+ if (bufA.length !== bufB.length) {
28
+ // Dummy comparison to prevent timing leak on length mismatch
29
+ (0, node_crypto_1.timingSafeEqual)(bufA, bufA);
30
+ return false;
31
+ }
32
+ return (0, node_crypto_1.timingSafeEqual)(bufA, bufB);
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Verifies a candidate plaintext password against a stored password or scrypt hash.
40
+ */
41
+ function verifyPassword(candidatePassword, storedPasswordOrHash) {
42
+ if (typeof candidatePassword !== 'string' || typeof storedPasswordOrHash !== 'string') {
43
+ return false;
44
+ }
45
+ // Handle scrypt formatted hash: `scrypt:<salt>:<hash>`
46
+ if (storedPasswordOrHash.startsWith('scrypt:')) {
47
+ const parts = storedPasswordOrHash.split(':');
48
+ if (parts.length === 3 && parts[1] && parts[2]) {
49
+ const salt = parts[1];
50
+ const expectedKeyHex = parts[2];
51
+ try {
52
+ const derivedKey = (0, node_crypto_1.scryptSync)(candidatePassword, salt, 64).toString('hex');
53
+ return constantTimeCompare(derivedKey, expectedKeyHex);
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ }
60
+ // Fallback for plaintext passwords (legacy or plain string configs)
61
+ return constantTimeCompare(candidatePassword, storedPasswordOrHash);
62
+ }
63
+ /**
64
+ * Parses raw Cookie header string into key-value map.
65
+ */
66
+ function parseCookies(cookieHeader) {
67
+ const cookies = {};
68
+ if (!cookieHeader)
69
+ return cookies;
70
+ for (const pair of cookieHeader.split(';')) {
71
+ const idx = pair.indexOf('=');
72
+ if (idx === -1)
73
+ continue;
74
+ const key = pair.slice(0, idx).trim();
75
+ let val = pair.slice(idx + 1).trim();
76
+ if (val.startsWith('"') && val.endsWith('"') && val.length >= 2) {
77
+ val = val.slice(1, -1);
78
+ }
79
+ if (key) {
80
+ try {
81
+ cookies[key] = decodeURIComponent(val);
82
+ }
83
+ catch {
84
+ cookies[key] = val;
85
+ }
86
+ }
87
+ }
88
+ return cookies;
89
+ }
90
+ /**
91
+ * Creates a tamper-proof signed session token using HMAC-SHA256.
92
+ * Format: `<base64url(username)>.<expiresAtTimestamp>.<hmacSignature>`
93
+ */
94
+ function createSessionToken(username, secret, durationMs = types_1.DEFAULT_SESSION_DURATION_MS) {
95
+ const expiresAt = Date.now() + durationMs;
96
+ const userPayload = Buffer.from(username, 'utf8').toString('base64url');
97
+ const data = `${userPayload}.${expiresAt}`;
98
+ const signature = (0, node_crypto_1.createHmac)('sha256', secret).update(data).digest('base64url');
99
+ return `${data}.${signature}`;
100
+ }
101
+ /**
102
+ * Verifies a signed session token in constant time.
103
+ * Returns the authenticated username if valid and non-expired, or null otherwise.
104
+ */
105
+ function verifySessionToken(token, secret, expectedUser) {
106
+ if (!token || typeof token !== 'string')
107
+ return null;
108
+ const parts = token.split('.');
109
+ if (parts.length !== 3)
110
+ return null;
111
+ const [userPayload, expiresStr, providedSignature] = parts;
112
+ const data = `${userPayload}.${expiresStr}`;
113
+ const expectedSignature = (0, node_crypto_1.createHmac)('sha256', secret).update(data).digest('base64url');
114
+ if (!constantTimeCompare(providedSignature, expectedSignature)) {
115
+ return null;
116
+ }
117
+ const expiresAt = Number.parseInt(expiresStr, 10);
118
+ if (!Number.isFinite(expiresAt) || Date.now() > expiresAt) {
119
+ return null; // Expired
120
+ }
121
+ let username;
122
+ try {
123
+ username = Buffer.from(userPayload, 'base64url').toString('utf8');
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ if (expectedUser && !constantTimeCompare(username, expectedUser)) {
129
+ return null;
130
+ }
131
+ return username;
132
+ }
133
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/auth/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './types';
2
+ export * from './crypto';
3
+ export * from './config';
4
+ export * from './middleware';
5
+ export * from './routes';