admindb 2.1.0 → 2.1.1

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 (178) hide show
  1. package/README.md +1 -1
  2. package/dist/app.d.ts +1 -69
  3. package/dist/app.js +1 -257
  4. package/dist/auth/config.d.ts +1 -19
  5. package/dist/auth/config.js +1 -147
  6. package/dist/auth/crypto.d.ts +1 -27
  7. package/dist/auth/crypto.js +1 -133
  8. package/dist/auth/index.d.ts +1 -5
  9. package/dist/auth/index.js +1 -22
  10. package/dist/auth/middleware.d.ts +1 -14
  11. package/dist/auth/middleware.js +1 -100
  12. package/dist/auth/routes.d.ts +1 -7
  13. package/dist/auth/routes.js +1 -78
  14. package/dist/auth/types.d.ts +1 -35
  15. package/dist/auth/types.js +1 -11
  16. package/dist/cli/args.d.ts +1 -45
  17. package/dist/cli/args.js +1 -328
  18. package/dist/cli/config.d.ts +1 -56
  19. package/dist/cli/config.js +1 -133
  20. package/dist/cli/index.d.ts +1 -4
  21. package/dist/cli/index.js +1 -21
  22. package/dist/cli/runner.d.ts +1 -1
  23. package/dist/cli/runner.js +1 -222
  24. package/dist/cli.d.ts +1 -2
  25. package/dist/cli.js +1 -5
  26. package/dist/data/datasets.d.ts +1 -17
  27. package/dist/data/datasets.js +1 -133
  28. package/dist/data/detector.d.ts +1 -30
  29. package/dist/data/detector.js +1 -472
  30. package/dist/data/engine.d.ts +1 -10
  31. package/dist/data/engine.js +1 -211
  32. package/dist/data/index.d.ts +1 -5
  33. package/dist/data/index.js +1 -22
  34. package/dist/data/strategies.d.ts +1 -30
  35. package/dist/data/strategies.js +1 -343
  36. package/dist/data/types.d.ts +1 -73
  37. package/dist/data/types.js +1 -8
  38. package/dist/db/database.d.ts +1 -119
  39. package/dist/db/database.js +1 -471
  40. package/dist/db/export.d.ts +1 -12
  41. package/dist/db/export.js +1 -42
  42. package/dist/db/filters.d.ts +1 -22
  43. package/dist/db/filters.js +1 -158
  44. package/dist/db/index.d.ts +1 -8
  45. package/dist/db/index.js +1 -25
  46. package/dist/db/introspection.d.ts +1 -6
  47. package/dist/db/introspection.js +1 -172
  48. package/dist/db/manager.d.ts +1 -81
  49. package/dist/db/manager.js +1 -397
  50. package/dist/db/migrations.d.ts +1 -5
  51. package/dist/db/migrations.js +1 -110
  52. package/dist/db/postgres.d.ts +1 -85
  53. package/dist/db/postgres.js +1 -745
  54. package/dist/db/types.d.ts +1 -206
  55. package/dist/db/types.js +1 -7
  56. package/dist/index.d.ts +1 -23
  57. package/dist/index.js +1 -66
  58. package/dist/public/js/api.js +1 -47
  59. package/dist/public/js/app.js +1 -262
  60. package/dist/public/js/browse.js +1 -1371
  61. package/dist/public/js/databases.js +1 -235
  62. package/dist/public/js/designer.js +1 -258
  63. package/dist/public/js/forms.js +1 -826
  64. package/dist/public/js/icons.js +1 -51
  65. package/dist/public/js/inspector.js +1 -638
  66. package/dist/public/js/query.js +1 -322
  67. package/dist/public/js/schema.js +1 -447
  68. package/dist/public/js/seed.js +1 -1090
  69. package/dist/routes/api/helpers.d.ts +1 -42
  70. package/dist/routes/api/helpers.js +1 -133
  71. package/dist/routes/api/import-export.d.ts +1 -3
  72. package/dist/routes/api/import-export.js +1 -85
  73. package/dist/routes/api/index.d.ts +1 -4
  74. package/dist/routes/api/index.js +1 -37
  75. package/dist/routes/api/query.d.ts +1 -3
  76. package/dist/routes/api/query.js +1 -76
  77. package/dist/routes/api/rows.d.ts +1 -3
  78. package/dist/routes/api/rows.js +1 -373
  79. package/dist/routes/api/seed.d.ts +1 -3
  80. package/dist/routes/api/seed.js +1 -82
  81. package/dist/routes/api/tables.d.ts +1 -3
  82. package/dist/routes/api/tables.js +1 -160
  83. package/dist/routes/databases.d.ts +1 -26
  84. package/dist/routes/databases.js +1 -230
  85. package/dist/routes/index.d.ts +1 -3
  86. package/dist/routes/index.js +1 -20
  87. package/dist/routes/pages.d.ts +1 -9
  88. package/dist/routes/pages.js +1 -390
  89. package/dist/serverless.d.ts +1 -40
  90. package/dist/serverless.js +1 -210
  91. package/dist/sql/classifier.d.ts +1 -19
  92. package/dist/sql/classifier.js +1 -37
  93. package/dist/sql/generator.d.ts +1 -81
  94. package/dist/sql/generator.js +1 -348
  95. package/dist/sql/index.d.ts +1 -2
  96. package/dist/sql/index.js +1 -19
  97. package/dist/types/api.d.ts +1 -412
  98. package/dist/types/api.js +1 -9
  99. package/dist/utils/colors.d.ts +1 -40
  100. package/dist/utils/colors.js +1 -64
  101. package/dist/utils/common.d.ts +1 -50
  102. package/dist/utils/common.js +1 -229
  103. package/dist/utils/csv.d.ts +1 -15
  104. package/dist/utils/csv.js +1 -80
  105. package/dist/utils/datatype.d.ts +1 -49
  106. package/dist/utils/datatype.js +1 -222
  107. package/dist/utils/icons.d.ts +1 -11
  108. package/dist/utils/icons.js +1 -72
  109. package/dist/utils/index.d.ts +1 -4
  110. package/dist/utils/index.js +1 -21
  111. package/dist/utils/logger.d.ts +1 -10
  112. package/dist/utils/logger.js +1 -40
  113. package/dist/views/layouts/main.hbs +0 -4
  114. package/dist/views/pages/databases.hbs +0 -18
  115. package/dist/views/pages/designer.hbs +0 -10
  116. package/dist/views/pages/error.hbs +0 -2
  117. package/dist/views/pages/form.hbs +0 -5
  118. package/dist/views/pages/home.hbs +0 -8
  119. package/dist/views/pages/login.hbs +0 -13
  120. package/dist/views/pages/query.hbs +0 -9
  121. package/dist/views/pages/schema.hbs +0 -20
  122. package/dist/views/pages/seed.hbs +0 -31
  123. package/dist/views/pages/table.hbs +0 -14
  124. package/dist/views/partials/icon.hbs +0 -1
  125. package/dist/views/partials/navbar.hbs +0 -6
  126. package/dist/views/partials/sidebar.hbs +0 -8
  127. package/package.json +3 -2
  128. package/dist/app.js.map +0 -1
  129. package/dist/auth/config.js.map +0 -1
  130. package/dist/auth/crypto.js.map +0 -1
  131. package/dist/auth/index.js.map +0 -1
  132. package/dist/auth/middleware.js.map +0 -1
  133. package/dist/auth/routes.js.map +0 -1
  134. package/dist/auth/types.js.map +0 -1
  135. package/dist/cli/args.js.map +0 -1
  136. package/dist/cli/config.js.map +0 -1
  137. package/dist/cli/index.js.map +0 -1
  138. package/dist/cli/runner.js.map +0 -1
  139. package/dist/cli.js.map +0 -1
  140. package/dist/data/datasets.js.map +0 -1
  141. package/dist/data/detector.js.map +0 -1
  142. package/dist/data/engine.js.map +0 -1
  143. package/dist/data/index.js.map +0 -1
  144. package/dist/data/strategies.js.map +0 -1
  145. package/dist/data/types.js.map +0 -1
  146. package/dist/db/database.js.map +0 -1
  147. package/dist/db/export.js.map +0 -1
  148. package/dist/db/filters.js.map +0 -1
  149. package/dist/db/index.js.map +0 -1
  150. package/dist/db/introspection.js.map +0 -1
  151. package/dist/db/manager.js.map +0 -1
  152. package/dist/db/migrations.js.map +0 -1
  153. package/dist/db/postgres.js.map +0 -1
  154. package/dist/db/types.js.map +0 -1
  155. package/dist/index.js.map +0 -1
  156. package/dist/public/css/input.css +0 -302
  157. package/dist/routes/api/helpers.js.map +0 -1
  158. package/dist/routes/api/import-export.js.map +0 -1
  159. package/dist/routes/api/index.js.map +0 -1
  160. package/dist/routes/api/query.js.map +0 -1
  161. package/dist/routes/api/rows.js.map +0 -1
  162. package/dist/routes/api/seed.js.map +0 -1
  163. package/dist/routes/api/tables.js.map +0 -1
  164. package/dist/routes/databases.js.map +0 -1
  165. package/dist/routes/index.js.map +0 -1
  166. package/dist/routes/pages.js.map +0 -1
  167. package/dist/serverless.js.map +0 -1
  168. package/dist/sql/classifier.js.map +0 -1
  169. package/dist/sql/generator.js.map +0 -1
  170. package/dist/sql/index.js.map +0 -1
  171. package/dist/types/api.js.map +0 -1
  172. package/dist/utils/colors.js.map +0 -1
  173. package/dist/utils/common.js.map +0 -1
  174. package/dist/utils/csv.js.map +0 -1
  175. package/dist/utils/datatype.js.map +0 -1
  176. package/dist/utils/icons.js.map +0 -1
  177. package/dist/utils/index.js.map +0 -1
  178. package/dist/utils/logger.js.map +0 -1
@@ -1,222 +1 @@
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.runCli = runCli;
7
- const express_1 = __importDefault(require("express"));
8
- const node_os_1 = __importDefault(require("node:os"));
9
- const node_path_1 = __importDefault(require("node:path"));
10
- const app_1 = require("../app");
11
- const config_1 = require("./config");
12
- const logger_1 = require("../utils/logger");
13
- const manager_1 = require("../db/manager");
14
- const args_1 = require("./args");
15
- const auth_1 = require("../auth");
16
- const colors_1 = require("../utils/colors");
17
- function runCli() {
18
- const env = (0, config_1.loadConfig)();
19
- const parsed = (0, args_1.parseArgs)(process.argv.slice(2));
20
- if (parsed.error) {
21
- console.error(colors_1.c.red(colors_1.c.bold(`Error: ${parsed.error}`)));
22
- console.error();
23
- console.error((0, args_1.helpText)());
24
- process.exit(1);
25
- }
26
- const args = parsed.args;
27
- if (args.help) {
28
- console.log((0, args_1.helpText)());
29
- process.exit(0);
30
- }
31
- if (args.version) {
32
- console.log((0, args_1.versionText)());
33
- process.exit(0);
34
- }
35
- // Merge CLI flags over environment variables.
36
- const authEnabled = args.auth !== undefined ? args.auth : env.auth;
37
- const authUsername = args.authUsername ?? env.authUsername ?? 'admin';
38
- const authPassword = args.authPassword ?? env.authPassword;
39
- const authSecret = args.authSecret ?? env.authSecret;
40
- const serverless = args.serverless !== undefined ? args.serverless : env.serverless;
41
- const readonly = serverless || args.readonly || env.readonly;
42
- const connections = args.connections ?? env.connections;
43
- const hasConnections = Boolean(connections && Object.keys(connections).length > 0);
44
- const config = {
45
- host: args.host ?? env.host,
46
- port: args.port ?? env.port,
47
- dbPath: args.dbPath ?? env.dbPath,
48
- connection: args.connection ?? env.connection,
49
- connections,
50
- dbDir: args.dbDir ?? env.dbDir,
51
- dbFiles: args.dbFiles ?? env.dbFiles,
52
- basePath: (args.basePath ?? env.basePath).replace(/\/+$/, ''),
53
- logLevel: args.logLevel ?? env.logLevel,
54
- readonly,
55
- serverless,
56
- auth: authEnabled
57
- ? {
58
- enabled: true,
59
- username: authUsername,
60
- password: authPassword,
61
- secret: authSecret,
62
- }
63
- : false,
64
- };
65
- const logger = (0, logger_1.createLogger)(config.logLevel, 'admindb');
66
- const app = (0, express_1.default)();
67
- app.disable('x-powered-by');
68
- // Mode selection:
69
- // - Multiple database connections from JSON config -> Manager mode.
70
- // - A specific single file / connection without multiple connections -> single-database mode.
71
- // - Otherwise -> manager mode.
72
- const hasDir = Boolean(config.dbDir);
73
- const hasFiles = Boolean(config.dbFiles && config.dbFiles.length > 0);
74
- const explicitFile = args.connection ??
75
- config.connection ??
76
- args.dbPath ??
77
- (process.env.ADMINDB_DB_PATH || process.env.ADMINDB_PATH || process.env.DB_PATH ? config.dbPath : undefined);
78
- const isPg = Boolean(explicitFile && (explicitFile.startsWith('postgres://') || explicitFile.startsWith('postgresql://')));
79
- const singleFileOnly = !hasConnections && (Boolean(explicitFile) || isPg) && !hasDir && !hasFiles;
80
- const useManager = !singleFileOnly;
81
- const managerFiles = [...(config.dbFiles ?? [])];
82
- if (useManager && explicitFile && !hasConnections)
83
- managerFiles.push(explicitFile);
84
- const managerDir = hasDir ? config.dbDir : hasFiles || explicitFile || hasConnections ? undefined : process.cwd();
85
- const allowBrowse = useManager && (hasDir || (!hasFiles && !explicitFile && !hasConnections));
86
- const browseRoot = hasDir ? node_path_1.default.resolve(config.dbDir) : undefined;
87
- const router = useManager
88
- ? (0, app_1.createRouter)({
89
- manager: new manager_1.DbManager({ dir: managerDir, files: managerFiles, connections, readonly: config.readonly }, logger),
90
- basePath: config.basePath,
91
- logger,
92
- readonly: config.readonly,
93
- serverless: config.serverless,
94
- allowBrowse,
95
- browseRoot,
96
- auth: config.auth,
97
- })
98
- : (0, app_1.createRouter)({
99
- dbPath: explicitFile,
100
- connection: explicitFile,
101
- basePath: config.basePath,
102
- logger,
103
- readonly: config.readonly,
104
- serverless: config.serverless,
105
- auth: config.auth,
106
- });
107
- app.use(config.basePath || '/', router);
108
- function getNetworkIp() {
109
- try {
110
- const nets = node_os_1.default.networkInterfaces();
111
- for (const name of Object.keys(nets)) {
112
- for (const net of nets[name] ?? []) {
113
- if (net.family === 'IPv4' && !net.internal) {
114
- return net.address;
115
- }
116
- }
117
- }
118
- }
119
- catch {
120
- /* ignore */
121
- }
122
- return undefined;
123
- }
124
- const server = app.listen(config.port, config.host, () => {
125
- const v = (0, args_1.getPackageVersion)();
126
- const versionStr = v ? ` v${v}` : '';
127
- const isAnyHost = config.host === '0.0.0.0' || config.host === '::' || config.host === '';
128
- const localHost = isAnyHost ? 'localhost' : config.host;
129
- const localUrl = `http://${localHost}:${config.port}${config.basePath}/`;
130
- console.log();
131
- console.log(` ${colors_1.c.cyan(colors_1.c.bold('⚡ AdminDB'))}${colors_1.c.dim(versionStr)}`);
132
- console.log();
133
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Local:')} ${colors_1.c.cyan(localUrl)}`);
134
- if (isAnyHost) {
135
- const netIp = getNetworkIp();
136
- if (netIp) {
137
- const netUrl = `http://${netIp}:${config.port}${config.basePath}/`;
138
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Network:')} ${colors_1.c.cyan(netUrl)}`);
139
- }
140
- }
141
- // Mode & Target Info
142
- if (useManager) {
143
- const modeDesc = config.serverless
144
- ? 'Manager [Serverless Read-Only]'
145
- : config.readonly
146
- ? 'Manager [Read-Only]'
147
- : 'Manager';
148
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Mode:')} ${modeDesc}`);
149
- if (args.configPath) {
150
- const count = Object.keys(connections ?? {}).length;
151
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Config:')} ${colors_1.c.cyan(args.configPath)}${count ? ` (${count} connection(s))` : ''}`);
152
- }
153
- if (hasConnections) {
154
- for (const [name, target] of Object.entries(connections)) {
155
- const sanitized = target.replace(/:([^@]+)@/, ':****@');
156
- const isTargetPg = target.startsWith('postgres://') || target.startsWith('postgresql://');
157
- const engine = isTargetPg ? 'PostgreSQL' : 'SQLite';
158
- console.log(` ${colors_1.c.dim('•')} ${colors_1.c.bold(name)}: ${colors_1.c.cyan(engine)} ${colors_1.c.dim(sanitized)}`);
159
- }
160
- }
161
- else if (managerDir) {
162
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Directory:')}${colors_1.c.dim(` ${managerDir}`)}`);
163
- }
164
- if (!allowBrowse) {
165
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Browse:')} ${colors_1.c.dim('Disabled (configured databases only)')}`);
166
- }
167
- else if (browseRoot) {
168
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Browse:')} ${colors_1.c.dim(`Limited to ${browseRoot}`)}`);
169
- }
170
- }
171
- else {
172
- const modeDesc = config.serverless
173
- ? 'Single DB [Serverless Read-Only]'
174
- : config.readonly
175
- ? 'Single DB [Read-Only]'
176
- : 'Single DB';
177
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Mode:')} ${modeDesc}`);
178
- if (args.configPath) {
179
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Config:')} ${colors_1.c.cyan(args.configPath)}`);
180
- }
181
- if (isPg) {
182
- const sanitized = explicitFile?.replace(/:([^@]+)@/, ':****@');
183
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Engine:')} ${colors_1.c.cyan('PostgreSQL')}`);
184
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Database:')} ${sanitized}`);
185
- }
186
- else {
187
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Engine:')} ${colors_1.c.cyan('SQLite')}`);
188
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Database:')} ${explicitFile}`);
189
- }
190
- }
191
- // Auth Status
192
- if (authEnabled) {
193
- const isDefaultPass = authUsername === 'admin' &&
194
- (!authPassword || authPassword === 'admin' || authPassword === auth_1.DEFAULT_PASSWORD_HASH);
195
- if (isDefaultPass) {
196
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Auth:')} User: ${colors_1.c.bold(authUsername)} ${colors_1.c.yellow('(default password)')}`);
197
- console.log();
198
- console.log(` ${colors_1.c.yellow('⚠')} ${colors_1.c.yellow('Default password in use (admin).')} Generate a secure hash with:`);
199
- console.log(` ${colors_1.c.dim('npm run generatehash')} and set ${colors_1.c.cyan('ADMINDB_PASSWORD')} or ${colors_1.c.cyan('-P <hash>')}`);
200
- }
201
- else {
202
- console.log(` ${colors_1.c.green('➜')} ${colors_1.c.bold('Auth:')} User: ${colors_1.c.bold(authUsername)}`);
203
- }
204
- }
205
- else {
206
- console.log(` ${colors_1.c.yellow('➜')} ${colors_1.c.bold('Auth:')} ${colors_1.c.yellow('Disabled (--no-auth)')}`);
207
- console.log(` ${colors_1.c.dim('Warning: Anyone with network access can view and modify databases.')}`);
208
- }
209
- console.log();
210
- });
211
- const shutdown = (signal) => {
212
- console.log(`\n ${colors_1.c.dim(`Received ${signal}, shutting down…`)}`);
213
- server.close(() => {
214
- console.log(` ${colors_1.c.green('✓')} ${colors_1.c.dim('AdminDB stopped.')}\n`);
215
- process.exit(0);
216
- });
217
- setTimeout(() => process.exit(0), 2000).unref();
218
- };
219
- process.on('SIGINT', () => shutdown('SIGINT'));
220
- process.on('SIGTERM', () => shutdown('SIGTERM'));
221
- }
222
- //# sourceMappingURL=runner.js.map
1
+ var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runCli=function(){const env=(0,config_1.loadConfig)(),parsed=(0,args_1.parseArgs)(process.argv.slice(2));parsed.error&&(console.error(colors_1.c.red(colors_1.c.bold(`Error: ${parsed.error}`))),console.error(),console.error((0,args_1.helpText)()),process.exit(1));const args=parsed.args;args.help&&(console.log((0,args_1.helpText)()),process.exit(0));args.version&&(console.log((0,args_1.versionText)()),process.exit(0));const authEnabled=void 0!==args.auth?args.auth:env.auth,authUsername=args.authUsername??env.authUsername??"admin",authPassword=args.authPassword??env.authPassword,authSecret=args.authSecret??env.authSecret,serverless=void 0!==args.serverless?args.serverless:env.serverless,readonly=serverless||args.readonly||env.readonly,connections=args.connections??env.connections,hasConnections=Boolean(connections&&Object.keys(connections).length>0),config={host:args.host??env.host,port:args.port??env.port,dbPath:args.dbPath??env.dbPath,connection:args.connection??env.connection,connections:connections,dbDir:args.dbDir??env.dbDir,dbFiles:args.dbFiles??env.dbFiles,basePath:(args.basePath??env.basePath).replace(/\/+$/,""),logLevel:args.logLevel??env.logLevel,readonly:readonly,serverless:serverless,auth:!!authEnabled&&{enabled:!0,username:authUsername,password:authPassword,secret:authSecret}},logger=(0,logger_1.createLogger)(config.logLevel,"admindb"),app=(0,express_1.default)();app.disable("x-powered-by");const hasDir=Boolean(config.dbDir),hasFiles=Boolean(config.dbFiles&&config.dbFiles.length>0),explicitFile=args.connection??config.connection??args.dbPath??(process.env.ADMINDB_DB_PATH||process.env.ADMINDB_PATH||process.env.DB_PATH?config.dbPath:void 0),isPg=Boolean(explicitFile&&(explicitFile.startsWith("postgres://")||explicitFile.startsWith("postgresql://"))),useManager=!(!hasConnections&&(Boolean(explicitFile)||isPg)&&!hasDir&&!hasFiles),managerFiles=[...config.dbFiles??[]];useManager&&explicitFile&&!hasConnections&&managerFiles.push(explicitFile);const managerDir=hasDir?config.dbDir:hasFiles||explicitFile||hasConnections?void 0:process.cwd(),allowBrowse=useManager&&(hasDir||!hasFiles&&!explicitFile&&!hasConnections),browseRoot=hasDir?node_path_1.default.resolve(config.dbDir):void 0,router=useManager?(0,app_1.createRouter)({manager:new manager_1.DbManager({dir:managerDir,files:managerFiles,connections:connections,readonly:config.readonly},logger),basePath:config.basePath,logger:logger,readonly:config.readonly,serverless:config.serverless,allowBrowse:allowBrowse,browseRoot:browseRoot,auth:config.auth}):(0,app_1.createRouter)({dbPath:explicitFile,connection:explicitFile,basePath:config.basePath,logger:logger,readonly:config.readonly,serverless:config.serverless,auth:config.auth});app.use(config.basePath||"/",router);const server=app.listen(config.port,config.host,()=>{const v=(0,args_1.getPackageVersion)(),versionStr=v?` v${v}`:"",isAnyHost="0.0.0.0"===config.host||"::"===config.host||""===config.host,localUrl=`http://${isAnyHost?"localhost":config.host}:${config.port}${config.basePath}/`;if(console.log(),console.log(` ${colors_1.c.cyan(colors_1.c.bold("⚡ AdminDB"))}${colors_1.c.dim(versionStr)}`),console.log(),console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Local:")} ${colors_1.c.cyan(localUrl)}`),isAnyHost){const netIp=function(){try{const nets=node_os_1.default.networkInterfaces();for(const name of Object.keys(nets))for(const net of nets[name]??[])if("IPv4"===net.family&&!net.internal)return net.address}catch{}}();if(netIp){const netUrl=`http://${netIp}:${config.port}${config.basePath}/`;console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Network:")} ${colors_1.c.cyan(netUrl)}`)}}if(useManager){const modeDesc=config.serverless?"Manager [Serverless Read-Only]":config.readonly?"Manager [Read-Only]":"Manager";if(console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Mode:")} ${modeDesc}`),args.configPath){const count=Object.keys(connections??{}).length;console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Config:")} ${colors_1.c.cyan(args.configPath)}${count?` (${count} connection(s))`:""}`)}if(hasConnections)for(const[name,target]of Object.entries(connections)){const sanitized=target.replace(/:([^@]+)@/,":****@"),engine=target.startsWith("postgres://")||target.startsWith("postgresql://")?"PostgreSQL":"SQLite";console.log(` ${colors_1.c.dim("•")} ${colors_1.c.bold(name)}: ${colors_1.c.cyan(engine)} ${colors_1.c.dim(sanitized)}`)}else managerDir&&console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Directory:")}${colors_1.c.dim(` ${managerDir}`)}`);allowBrowse?browseRoot&&console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Browse:")} ${colors_1.c.dim(`Limited to ${browseRoot}`)}`):console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Browse:")} ${colors_1.c.dim("Disabled (configured databases only)")}`)}else{const modeDesc=config.serverless?"Single DB [Serverless Read-Only]":config.readonly?"Single DB [Read-Only]":"Single DB";if(console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Mode:")} ${modeDesc}`),args.configPath&&console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Config:")} ${colors_1.c.cyan(args.configPath)}`),isPg){const sanitized=explicitFile?.replace(/:([^@]+)@/,":****@");console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Engine:")} ${colors_1.c.cyan("PostgreSQL")}`),console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Database:")} ${sanitized}`)}else console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Engine:")} ${colors_1.c.cyan("SQLite")}`),console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Database:")} ${explicitFile}`)}if(authEnabled){"admin"===authUsername&&(!authPassword||"admin"===authPassword||authPassword===auth_1.DEFAULT_PASSWORD_HASH)?(console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Auth:")} User: ${colors_1.c.bold(authUsername)} ${colors_1.c.yellow("(default password)")}`),console.log(),console.log(` ${colors_1.c.yellow("⚠")} ${colors_1.c.yellow("Default password in use (admin).")} Generate a secure hash with:`),console.log(` ${colors_1.c.dim("npm run generatehash")} and set ${colors_1.c.cyan("ADMINDB_PASSWORD")} or ${colors_1.c.cyan("-P <hash>")}`)):console.log(` ${colors_1.c.green("➜")} ${colors_1.c.bold("Auth:")} User: ${colors_1.c.bold(authUsername)}`)}else console.log(` ${colors_1.c.yellow("➜")} ${colors_1.c.bold("Auth:")} ${colors_1.c.yellow("Disabled (--no-auth)")}`),console.log(` ${colors_1.c.dim("Warning: Anyone with network access can view and modify databases.")}`);console.log()}),shutdown=signal=>{console.log(`\n ${colors_1.c.dim(`Received ${signal}, shutting down…`)}`),server.close(()=>{console.log(` ${colors_1.c.green("✓")} ${colors_1.c.dim("AdminDB stopped.")}\n`),process.exit(0)}),setTimeout(()=>process.exit(0),2e3).unref()};process.on("SIGINT",()=>shutdown("SIGINT")),process.on("SIGTERM",()=>shutdown("SIGTERM"))};const express_1=__importDefault(require("express")),node_os_1=__importDefault(require("node:os")),node_path_1=__importDefault(require("node:path")),app_1=require("../app"),config_1=require("./config"),logger_1=require("../utils/logger"),manager_1=require("../db/manager"),args_1=require("./args"),auth_1=require("../auth"),colors_1=require("../utils/colors");
package/dist/cli.d.ts CHANGED
@@ -1,2 +1 @@
1
- #!/usr/bin/env node
2
- export {};
1
+ #!/usr/bin/env node export{};
package/dist/cli.js CHANGED
@@ -1,6 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const runner_1 = require("./cli/runner");
5
- (0, runner_1.runCli)();
6
- //# sourceMappingURL=cli.js.map
2
+ Object.defineProperty(exports,"__esModule",{value:!0});(0,require("./cli/runner").runCli)();
@@ -1,17 +1 @@
1
- /**
2
- * Curated static datasets and wordlists used by the data generator.
3
- */
4
- export declare const FIRST_NAMES: string[];
5
- export declare const LAST_NAMES: string[];
6
- export declare const CITIES: string[];
7
- export declare const COUNTRIES: string[];
8
- export declare const DOMAINS: string[];
9
- export declare const LOREM_WORDS: string[];
10
- export declare const COMPANIES: string[];
11
- export declare const JOB_TITLES: string[];
12
- export declare const US_STATES: string[];
13
- export declare const CURRENCIES: string[];
14
- export declare const COUNTRY_CODES: string[];
15
- export declare const STATUSES: string[];
16
- export declare const HEX_COLORS: string[];
17
- export declare const NAMED_COLORS: string[];
1
+ export declare const FIRST_NAMES:string[];export declare const LAST_NAMES:string[];export declare const CITIES:string[];export declare const COUNTRIES:string[];export declare const DOMAINS:string[];export declare const LOREM_WORDS:string[];export declare const COMPANIES:string[];export declare const JOB_TITLES:string[];export declare const US_STATES:string[];export declare const CURRENCIES:string[];export declare const COUNTRY_CODES:string[];export declare const STATUSES:string[];export declare const HEX_COLORS:string[];export declare const NAMED_COLORS:string[];
@@ -1,133 +1 @@
1
- "use strict";
2
- /**
3
- * Curated static datasets and wordlists used by the data generator.
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.NAMED_COLORS = exports.HEX_COLORS = exports.STATUSES = exports.COUNTRY_CODES = exports.CURRENCIES = exports.US_STATES = exports.JOB_TITLES = exports.COMPANIES = exports.LOREM_WORDS = exports.DOMAINS = exports.COUNTRIES = exports.CITIES = exports.LAST_NAMES = exports.FIRST_NAMES = void 0;
7
- exports.FIRST_NAMES = [
8
- "Sombat", "Ting", "Rajan", "Minh", "Hiroshi", "William", "Made", "Ravi", "John", "Kiran",
9
- "Raj", "Wayan", "Chaiwat", "Aarav", "Sita", "Zara", "Ratna", "Ananya", "Ha-eun", "Siti",
10
- "Seo-yeon", "Mary", "Priyanka", "Xu", "Ali", "Priya", "Sakura", "Ken", "Ketut", "Soo-hyun",
11
- "Wang", "Guido", "Deepa", "Fang", "James", "Mei", "Binh", "Takeshi", "Leela", "Thuy",
12
- "Dewi", "Layla", "Vijay", "Samir", "Meera", "Jessica", "Linda", "Malee", "Qiang", "Yuna",
13
- "Richard", "Margaret", "Ming", "Vikram", "Mai", "Rahul", "Van", "Jennifer", "Suresh", "Yui",
14
- "Pan", "Barbara", "Tim", "Lu", "Liang", "Robert", "Fatima", "Imran", "Ajay", "Ren",
15
- "Liu", "Dennis", "Lin", "Kavya", "Agus", "Katherine", "Anita", "Grace", "Linus", "Jun",
16
- "Alan", "Tarun", "Omar", "Michael", "Dung", "Ahmad", "Hoa", "Hui", "Susan", "Shinji",
17
- "Zhou", "Linh", "Ngoc", "Xin", "Hassan", "Nisha", "Patricia", "Li", "Lei", "Sunita",
18
- "Chen", "Anh", "Jia", "Xiao", "Yang", "Ji-hoon", "Jing", "Hedy", "Elizabeth", "Zhang",
19
- "Arjun", "Yuki", "Ada", "Edsger", "Nong", "Lynn", "Anjali", "Nguyen", "Sora", "Mieko",
20
- "Nyoman", "Jin", "Aisha", "Bayu", "Tariq", "Daiki", "David", "Rani", "Tran", "Haruki",
21
- "Dae-hyun", "Dao", "Rama", "Aiko", "Min-jun", "Zhu", "Radia", "Wei", "Sophia", "Lucas",
22
- "Emma", "Liam", "Olivia", "Noah", "Elena", "Mateo", "Chloe", "Alexander", "Aria", "Leo"
23
- ];
24
- exports.LAST_NAMES = [
25
- "Chen", "Smith", "Thompson", "Shah", "Thai", "Perlman", "Brown", "Hsu", "Turing", "Sharma",
26
- "Purnama", "Lopez", "Williams", "Davis", "Liao", "Xu", "Martin", "Dhawan", "Yoon", "Tan",
27
- "Yamamoto", "Iyer", "Phung", "Gonzalez", "Huang", "Hu", "Vo", "Shetty", "Le", "Wijaya",
28
- "Jackson", "Ly", "Anderson", "Pratama", "Lovelace", "Martinez", "Dang", "Ma", "Hopper", "Naidu",
29
- "Goh", "Hamilton", "Duong", "Taylor", "Song", "Surya", "Singh", "Jiang", "Cho", "Zhang",
30
- "Pham", "Teo", "van Rossum", "Patel", "Lam", "Jang", "Rodriguez", "Miller", "Torvalds", "Hidayat",
31
- "Menon", "Thomas", "Hernandez", "Reddy", "Wong", "Tripathi", "Lim", "Kumar", "Bhaskar", "Rajan",
32
- "Chang", "Ong", "Vu", "Nair", "Sun", "Do", "Bhatia", "Garcia", "Mishra", "Rao",
33
- "Choi", "Phan", "Zhu", "Nguyen", "Kim", "Putra", "Malhotra", "Nakamura", "Kang", "Wilson",
34
- "Huynh", "Tanaka", "Kusuma", "Jung", "Mehta", "Perez", "Arora", "Chu", "Moore", "Li",
35
- "Yang", "Park", "Ko", "Watanabe", "Bui", "Liu", "Ninh", "Jones", "Johnson", "Guo",
36
- "Ngo", "Ito", "Takahashi", "Grover", "Shen", "Yeh", "Lee", "Gupta", "Wang", "Wu",
37
- "Verma", "Suzuki", "White", "Lu", "Pillai", "Lin", "Joshi", "Tran", "Chawla", "Zhou", "Desai"
38
- ];
39
- exports.CITIES = [
40
- "Hyderabad", "Yangon", "Medan", "Minneapolis", "Faisalabad", "Yokohama", "Nha Trang",
41
- "Hong Kong", "Phoenix", "Delhi", "Chennai", "Denver", "Guangzhou", "Davao City",
42
- "Chiang Mai", "Atlanta", "Manila", "Naypyidaw", "Sylhet", "Phuket", "Incheon",
43
- "New York", "Daejeon", "Yogyakarta", "Colombo", "Kanpur", "Portland", "Vientiane",
44
- "Dublin", "Mandalay", "Hat Yai", "Chengdu", "Lisbon", "Paris", "Bandung",
45
- "Kathmandu", "Karachi", "Qingdao", "Da Nang", "Seoul", "Hanoi", "Berlin",
46
- "Chicago", "Sydney", "Quezon City", "Mumbai", "Vizag", "Coimbatore", "Lahore",
47
- "Dhaka", "Shenzhen", "Phnom Penh", "Navi Mumbai", "Fuzhou", "Kuala Lumpur", "Taipei",
48
- "Zurich", "Bangkok", "Makati", "Chittagong", "Daegu", "Jaipur", "Oslo",
49
- "Islamabad", "Dalian", "Kolkata", "Penang", "Johor Bahru", "Singapore", "Ulsan",
50
- "Macau", "Pune", "Pattaya", "Siem Reap", "Cebu City", "Lucknow", "Rome",
51
- "Surabaya", "Stockholm", "Los Angeles", "Osaka", "Sapporo", "Fukuoka", "Rajshahi",
52
- "Tokyo", "Vancouver", "San Francisco", "Nagoya", "Busan", "Jakarta", "Guangxi",
53
- "London", "Kaohsiung", "Xiamen", "Male", "Nashville", "Warsaw", "Madrid",
54
- "Indore", "Boston", "Amsterdam", "Shanghai", "Taichung", "Raleigh", "Miami",
55
- "Jeju", "Cheongju", "Bangalore", "Ahmedabad", "Haiphong", "Ho Chi Minh City", "Gwangju",
56
- "Rawalpindi", "Toronto", "Seville", "Kyoto", "Austin", "Suwon", "Seattle",
57
- "Beijing", "Nakhon Ratchasima", "Nagpur"
58
- ];
59
- exports.COUNTRIES = [
60
- "Japan", "United States", "Bhutan", "Belgium", "Myanmar", "Kazakhstan", "Mexico",
61
- "Bangladesh", "United Kingdom", "South Africa", "Indonesia", "Vietnam", "South Korea", "Germany",
62
- "Romania", "Italy", "Spain", "China", "India", "Taiwan", "Philippines",
63
- "Singapore", "Canada", "Pakistan", "Hungary", "Maldives", "Switzerland", "Macau",
64
- "Portugal", "Sri Lanka", "Malaysia", "Netherlands", "Turkmenistan", "Brunei", "Brazil",
65
- "Greece", "Uzbekistan", "Cambodia", "France", "Australia", "Mongolia", "Poland",
66
- "Kyrgyzstan", "Tajikistan", "Norway", "Sweden", "Ireland", "Austria", "Denmark",
67
- "Laos", "Nepal", "Thailand", "Finland", "Hong Kong", "Czech Republic", "Timor-Leste", "New Zealand"
68
- ];
69
- exports.DOMAINS = [
70
- "outlook.com", "nus.edu.sg", "ust.hk", "iitb.ac.in", "acme.io", "ac.sg", "mail.ru", "163.com",
71
- "outlook.kr", "tech.asia", "startup.io", "proton.me", "sohu.com", "gmail.com", "kyoto-u.ac.jp",
72
- "example.com", "naver.com", "protonmail.com", "hanmail.net", "globex.org", "tudelft.nl", "company.com",
73
- "yahoo.com", "126.com", "daum.net", "initech.net", "hkbu.edu.hk", "yahoo.co.jp", "qq.com", "nthu.edu.tw",
74
- "sina.com", "innovate.sg", "zoho.com"
75
- ];
76
- exports.LOREM_WORDS = [
77
- "schema", "nu", "worker", "alpha", "cache", "edge", "async", "chi", "service", "packet",
78
- "scale", "upsilon", "scrum", "node", "peace", "deploy", "epsilon", "lambda", "record", "pi",
79
- "column", "module", "omicron", "query", "buffer", "persistence", "comet", "joy", "integrity", "galaxy",
80
- "token", "spirit", "socket", "devops", "harmony", "backup", "agile", "render", "await", "field",
81
- "aurora", "nature", "gamma", "cloud", "omega", "mu", "orbit", "delta", "kindness", "tau",
82
- "row", "compassion", "theta", "beta", "balance", "wisdom", "rho", "kanban", "kappa", "session",
83
- "compile", "phi", "stream", "queue", "event", "pixel", "resilience", "nebula", "iota", "index",
84
- "cluster", "xi", "eta", "signal", "zeta", "fetch", "sigma", "psi", "prism", "nexus"
85
- ];
86
- exports.COMPANIES = [
87
- "Apex Solutions", "Vortex Digital", "Nexus Systems", "Horizon Labs", "Zenith Global",
88
- "Quantum Dynamics", "Starlight Media", "Alpha Robotics", "Pinnacle Financial", "BlueWave Tech",
89
- "Elevate Innovations", "Pulse Health", "Echo Stream", "Stratum Capital", "Beacon Analytics",
90
- "Solaris Energy", "Vertex Cloud", "Catalyst Corp", "Synergy Ventures", "Omega Group",
91
- "Hyperion Logic", "Aegis Security", "Terra Industries", "Prism Data", "Spectra Works",
92
- "Novus Labs", "Orbit Software", "Forge Interactive", "Crestline Global", "Ironclad Partners",
93
- "Acme Corp", "Globex Corporation", "Initech LLC", "Soylent Industries", "Umbrella Tech"
94
- ];
95
- exports.JOB_TITLES = [
96
- "Software Engineer", "Product Manager", "UX/UI Designer", "DevOps Specialist",
97
- "Data Scientist", "Engineering Manager", "Account Executive", "Marketing Director",
98
- "Content Strategist", "Customer Success Lead", "Financial Analyst", "Operations Lead",
99
- "HR Generalist", "QA Automation Engineer", "Solutions Architect", "Security Specialist",
100
- "Chief Technology Officer", "VP of Product", "Database Administrator", "Scrum Master",
101
- "Technical Writer", "Brand Manager", "Legal Counsel", "Research Scientist", "Sales Director"
102
- ];
103
- exports.US_STATES = [
104
- "California", "New York", "Texas", "Florida", "Washington", "Illinois", "Pennsylvania",
105
- "Ohio", "Georgia", "North Carolina", "Michigan", "New Jersey", "Virginia", "Colorado",
106
- "Arizona", "Massachusetts", "Tennessee", "Indiana", "Missouri", "Maryland", "Wisconsin",
107
- "Minnesota", "Oregon", "South Carolina", "Alabama", "Louisiana", "Kentucky", "Utah"
108
- ];
109
- exports.CURRENCIES = [
110
- "USD", "EUR", "GBP", "JPY", "CAD", "AUD", "CHF", "CNY", "INR", "SGD",
111
- "NZD", "BRL", "SEK", "KRW", "MXN", "ZAR", "HKD", "NOK", "AED", "SAR"
112
- ];
113
- exports.COUNTRY_CODES = [
114
- "US", "GB", "CA", "DE", "FR", "JP", "AU", "IN", "BR", "SG",
115
- "NL", "IT", "ES", "SE", "CH", "KR", "MX", "NZ", "ZA", "AE",
116
- "SA", "NO", "DK", "FI", "IE", "PL", "PT", "BE", "AT", "ID"
117
- ];
118
- exports.STATUSES = [
119
- "active", "inactive", "pending", "completed", "cancelled",
120
- "archived", "suspended", "draft", "processing", "approved", "rejected"
121
- ];
122
- exports.HEX_COLORS = [
123
- "#3b82f6", "#10b981", "#ef4444", "#f59e0b", "#8b5cf6",
124
- "#ec4899", "#06b6d4", "#6366f1", "#14b8a6", "#f97316",
125
- "#84cc16", "#a855f7", "#0ea5e9", "#64748b", "#d946ef",
126
- "#1e293b", "#047857", "#b91c1c", "#1d4ed8", "#4338ca"
127
- ];
128
- exports.NAMED_COLORS = [
129
- "Emerald", "Indigo", "Amber", "Rose", "Cyan", "Violet",
130
- "Sky", "Slate", "Teal", "Fuchsia", "Crimson", "Navy",
131
- "Coral", "Bronze", "Charcoal", "Mint", "Lavender", "Ruby", "Cobalt"
132
- ];
133
- //# sourceMappingURL=datasets.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.NAMED_COLORS=exports.HEX_COLORS=exports.STATUSES=exports.COUNTRY_CODES=exports.CURRENCIES=exports.US_STATES=exports.JOB_TITLES=exports.COMPANIES=exports.LOREM_WORDS=exports.DOMAINS=exports.COUNTRIES=exports.CITIES=exports.LAST_NAMES=exports.FIRST_NAMES=void 0,exports.FIRST_NAMES=["Sombat","Ting","Rajan","Minh","Hiroshi","William","Made","Ravi","John","Kiran","Raj","Wayan","Chaiwat","Aarav","Sita","Zara","Ratna","Ananya","Ha-eun","Siti","Seo-yeon","Mary","Priyanka","Xu","Ali","Priya","Sakura","Ken","Ketut","Soo-hyun","Wang","Guido","Deepa","Fang","James","Mei","Binh","Takeshi","Leela","Thuy","Dewi","Layla","Vijay","Samir","Meera","Jessica","Linda","Malee","Qiang","Yuna","Richard","Margaret","Ming","Vikram","Mai","Rahul","Van","Jennifer","Suresh","Yui","Pan","Barbara","Tim","Lu","Liang","Robert","Fatima","Imran","Ajay","Ren","Liu","Dennis","Lin","Kavya","Agus","Katherine","Anita","Grace","Linus","Jun","Alan","Tarun","Omar","Michael","Dung","Ahmad","Hoa","Hui","Susan","Shinji","Zhou","Linh","Ngoc","Xin","Hassan","Nisha","Patricia","Li","Lei","Sunita","Chen","Anh","Jia","Xiao","Yang","Ji-hoon","Jing","Hedy","Elizabeth","Zhang","Arjun","Yuki","Ada","Edsger","Nong","Lynn","Anjali","Nguyen","Sora","Mieko","Nyoman","Jin","Aisha","Bayu","Tariq","Daiki","David","Rani","Tran","Haruki","Dae-hyun","Dao","Rama","Aiko","Min-jun","Zhu","Radia","Wei","Sophia","Lucas","Emma","Liam","Olivia","Noah","Elena","Mateo","Chloe","Alexander","Aria","Leo"],exports.LAST_NAMES=["Chen","Smith","Thompson","Shah","Thai","Perlman","Brown","Hsu","Turing","Sharma","Purnama","Lopez","Williams","Davis","Liao","Xu","Martin","Dhawan","Yoon","Tan","Yamamoto","Iyer","Phung","Gonzalez","Huang","Hu","Vo","Shetty","Le","Wijaya","Jackson","Ly","Anderson","Pratama","Lovelace","Martinez","Dang","Ma","Hopper","Naidu","Goh","Hamilton","Duong","Taylor","Song","Surya","Singh","Jiang","Cho","Zhang","Pham","Teo","van Rossum","Patel","Lam","Jang","Rodriguez","Miller","Torvalds","Hidayat","Menon","Thomas","Hernandez","Reddy","Wong","Tripathi","Lim","Kumar","Bhaskar","Rajan","Chang","Ong","Vu","Nair","Sun","Do","Bhatia","Garcia","Mishra","Rao","Choi","Phan","Zhu","Nguyen","Kim","Putra","Malhotra","Nakamura","Kang","Wilson","Huynh","Tanaka","Kusuma","Jung","Mehta","Perez","Arora","Chu","Moore","Li","Yang","Park","Ko","Watanabe","Bui","Liu","Ninh","Jones","Johnson","Guo","Ngo","Ito","Takahashi","Grover","Shen","Yeh","Lee","Gupta","Wang","Wu","Verma","Suzuki","White","Lu","Pillai","Lin","Joshi","Tran","Chawla","Zhou","Desai"],exports.CITIES=["Hyderabad","Yangon","Medan","Minneapolis","Faisalabad","Yokohama","Nha Trang","Hong Kong","Phoenix","Delhi","Chennai","Denver","Guangzhou","Davao City","Chiang Mai","Atlanta","Manila","Naypyidaw","Sylhet","Phuket","Incheon","New York","Daejeon","Yogyakarta","Colombo","Kanpur","Portland","Vientiane","Dublin","Mandalay","Hat Yai","Chengdu","Lisbon","Paris","Bandung","Kathmandu","Karachi","Qingdao","Da Nang","Seoul","Hanoi","Berlin","Chicago","Sydney","Quezon City","Mumbai","Vizag","Coimbatore","Lahore","Dhaka","Shenzhen","Phnom Penh","Navi Mumbai","Fuzhou","Kuala Lumpur","Taipei","Zurich","Bangkok","Makati","Chittagong","Daegu","Jaipur","Oslo","Islamabad","Dalian","Kolkata","Penang","Johor Bahru","Singapore","Ulsan","Macau","Pune","Pattaya","Siem Reap","Cebu City","Lucknow","Rome","Surabaya","Stockholm","Los Angeles","Osaka","Sapporo","Fukuoka","Rajshahi","Tokyo","Vancouver","San Francisco","Nagoya","Busan","Jakarta","Guangxi","London","Kaohsiung","Xiamen","Male","Nashville","Warsaw","Madrid","Indore","Boston","Amsterdam","Shanghai","Taichung","Raleigh","Miami","Jeju","Cheongju","Bangalore","Ahmedabad","Haiphong","Ho Chi Minh City","Gwangju","Rawalpindi","Toronto","Seville","Kyoto","Austin","Suwon","Seattle","Beijing","Nakhon Ratchasima","Nagpur"],exports.COUNTRIES=["Japan","United States","Bhutan","Belgium","Myanmar","Kazakhstan","Mexico","Bangladesh","United Kingdom","South Africa","Indonesia","Vietnam","South Korea","Germany","Romania","Italy","Spain","China","India","Taiwan","Philippines","Singapore","Canada","Pakistan","Hungary","Maldives","Switzerland","Macau","Portugal","Sri Lanka","Malaysia","Netherlands","Turkmenistan","Brunei","Brazil","Greece","Uzbekistan","Cambodia","France","Australia","Mongolia","Poland","Kyrgyzstan","Tajikistan","Norway","Sweden","Ireland","Austria","Denmark","Laos","Nepal","Thailand","Finland","Hong Kong","Czech Republic","Timor-Leste","New Zealand"],exports.DOMAINS=["outlook.com","nus.edu.sg","ust.hk","iitb.ac.in","acme.io","ac.sg","mail.ru","163.com","outlook.kr","tech.asia","startup.io","proton.me","sohu.com","gmail.com","kyoto-u.ac.jp","example.com","naver.com","protonmail.com","hanmail.net","globex.org","tudelft.nl","company.com","yahoo.com","126.com","daum.net","initech.net","hkbu.edu.hk","yahoo.co.jp","qq.com","nthu.edu.tw","sina.com","innovate.sg","zoho.com"],exports.LOREM_WORDS=["schema","nu","worker","alpha","cache","edge","async","chi","service","packet","scale","upsilon","scrum","node","peace","deploy","epsilon","lambda","record","pi","column","module","omicron","query","buffer","persistence","comet","joy","integrity","galaxy","token","spirit","socket","devops","harmony","backup","agile","render","await","field","aurora","nature","gamma","cloud","omega","mu","orbit","delta","kindness","tau","row","compassion","theta","beta","balance","wisdom","rho","kanban","kappa","session","compile","phi","stream","queue","event","pixel","resilience","nebula","iota","index","cluster","xi","eta","signal","zeta","fetch","sigma","psi","prism","nexus"],exports.COMPANIES=["Apex Solutions","Vortex Digital","Nexus Systems","Horizon Labs","Zenith Global","Quantum Dynamics","Starlight Media","Alpha Robotics","Pinnacle Financial","BlueWave Tech","Elevate Innovations","Pulse Health","Echo Stream","Stratum Capital","Beacon Analytics","Solaris Energy","Vertex Cloud","Catalyst Corp","Synergy Ventures","Omega Group","Hyperion Logic","Aegis Security","Terra Industries","Prism Data","Spectra Works","Novus Labs","Orbit Software","Forge Interactive","Crestline Global","Ironclad Partners","Acme Corp","Globex Corporation","Initech LLC","Soylent Industries","Umbrella Tech"],exports.JOB_TITLES=["Software Engineer","Product Manager","UX/UI Designer","DevOps Specialist","Data Scientist","Engineering Manager","Account Executive","Marketing Director","Content Strategist","Customer Success Lead","Financial Analyst","Operations Lead","HR Generalist","QA Automation Engineer","Solutions Architect","Security Specialist","Chief Technology Officer","VP of Product","Database Administrator","Scrum Master","Technical Writer","Brand Manager","Legal Counsel","Research Scientist","Sales Director"],exports.US_STATES=["California","New York","Texas","Florida","Washington","Illinois","Pennsylvania","Ohio","Georgia","North Carolina","Michigan","New Jersey","Virginia","Colorado","Arizona","Massachusetts","Tennessee","Indiana","Missouri","Maryland","Wisconsin","Minnesota","Oregon","South Carolina","Alabama","Louisiana","Kentucky","Utah"],exports.CURRENCIES=["USD","EUR","GBP","JPY","CAD","AUD","CHF","CNY","INR","SGD","NZD","BRL","SEK","KRW","MXN","ZAR","HKD","NOK","AED","SAR"],exports.COUNTRY_CODES=["US","GB","CA","DE","FR","JP","AU","IN","BR","SG","NL","IT","ES","SE","CH","KR","MX","NZ","ZA","AE","SA","NO","DK","FI","IE","PL","PT","BE","AT","ID"],exports.STATUSES=["active","inactive","pending","completed","cancelled","archived","suspended","draft","processing","approved","rejected"],exports.HEX_COLORS=["#3b82f6","#10b981","#ef4444","#f59e0b","#8b5cf6","#ec4899","#06b6d4","#6366f1","#14b8a6","#f97316","#84cc16","#a855f7","#0ea5e9","#64748b","#d946ef","#1e293b","#047857","#b91c1c","#1d4ed8","#4338ca"],exports.NAMED_COLORS=["Emerald","Indigo","Amber","Rose","Cyan","Violet","Sky","Slate","Teal","Fuchsia","Crimson","Navy","Coral","Bronze","Charcoal","Mint","Lavender","Ruby","Cobalt"];
@@ -1,30 +1 @@
1
- import type { ColumnInfo, ForeignKeyInfo, TableInfoData } from '../db/index';
2
- import { type ColumnGeneratorConfig, type ColumnPlan } from './types';
3
- export interface OrderingConstraint {
4
- after?: {
5
- column: string;
6
- orEqual: boolean;
7
- };
8
- before?: {
9
- column: string;
10
- orEqual: boolean;
11
- };
12
- }
13
- export interface NumericConstraint {
14
- min?: number;
15
- max?: number;
16
- }
17
- export interface CheckInfo {
18
- columnAllowed: Map<string, string[]>;
19
- columnRange: Map<string, NumericConstraint>;
20
- jsonAllowed: Map<string, Map<string, string[]>>;
21
- ordering: Map<string, OrderingConstraint>;
22
- }
23
- export declare const normName: (s: string) => string;
24
- export declare function isTimestampName(name: string): boolean;
25
- export declare function findInMap<T>(map: Map<string, T>, colName: string): T | undefined;
26
- export declare function extractCheckExprs(sql: string): string[];
27
- export declare function parseChecks(sql: string | null): CheckInfo;
28
- export declare function detectPlan(col: ColumnInfo, fk: ForeignKeyInfo | null): ColumnPlan;
29
- export declare function buildColumnConfigs(info: TableInfoData): ColumnGeneratorConfig[];
30
- export declare function sanitizeColumnPlan(raw: unknown): ColumnPlan | null;
1
+ import type {ColumnInfo,ForeignKeyInfo,TableInfoData} from '../db/index';import{type ColumnGeneratorConfig,type ColumnPlan} from './types';export interface OrderingConstraint{after?:{column:string;orEqual:boolean;};before?:{column:string;orEqual:boolean;};}export interface NumericConstraint{min?:number;max?:number;}export interface CheckInfo{columnAllowed:Map<string,string[]>;columnRange:Map<string,NumericConstraint>;jsonAllowed:Map<string,Map<string,string[]>>;ordering:Map<string,OrderingConstraint>;}export declare const normName:(s:string)=>string;export declare function isTimestampName(name:string):boolean;export declare function findInMap<T>(map:Map<string,T>,colName:string):T|undefined;export declare function extractCheckExprs(sql:string):string[];export declare function parseChecks(sql:string|null):CheckInfo;export declare function detectPlan(col:ColumnInfo,fk:ForeignKeyInfo|null):ColumnPlan;export declare function buildColumnConfigs(info:TableInfoData):ColumnGeneratorConfig[];export declare function sanitizeColumnPlan(raw:unknown):ColumnPlan|null;