@deessejs/cli 0.6.44 → 0.6.46

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 (52) hide show
  1. package/bin/deesse.js +3 -2
  2. package/dist/commands/db/generate.d.ts +5 -18
  3. package/dist/commands/db/generate.d.ts.map +1 -1
  4. package/dist/commands/db/generate.js +9 -58
  5. package/dist/commands/db/generate.js.map +1 -1
  6. package/dist/commands/db/index.d.ts +6 -0
  7. package/dist/commands/db/index.d.ts.map +1 -1
  8. package/dist/commands/db/index.js +9 -142
  9. package/dist/commands/db/index.js.map +1 -1
  10. package/dist/commands/db/migrate.d.ts +5 -22
  11. package/dist/commands/db/migrate.d.ts.map +1 -1
  12. package/dist/commands/db/migrate.js +9 -69
  13. package/dist/commands/db/migrate.js.map +1 -1
  14. package/dist/commands/db/push.d.ts +10 -0
  15. package/dist/commands/db/push.d.ts.map +1 -1
  16. package/dist/commands/db/push.js +21 -38
  17. package/dist/commands/db/push.js.map +1 -1
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.js +18 -164
  20. package/dist/index.js.map +1 -1
  21. package/dist/utils/config.d.ts +8 -0
  22. package/dist/utils/config.d.ts.map +1 -0
  23. package/dist/utils/config.js +10 -0
  24. package/dist/utils/config.js.map +1 -0
  25. package/package.json +54 -53
  26. package/dist/commands/admin/create.d.ts.map +0 -1
  27. package/dist/commands/admin/create.js +0 -166
  28. package/dist/commands/admin/create.js.map +0 -1
  29. package/dist/commands/admin.d.ts.map +0 -1
  30. package/dist/commands/admin.js +0 -22
  31. package/dist/commands/admin.js.map +0 -1
  32. package/dist/lib/admin/create.d.ts +0 -29
  33. package/dist/lib/admin/create.d.ts.map +0 -1
  34. package/dist/lib/admin/create.js +0 -54
  35. package/dist/lib/admin/create.js.map +0 -1
  36. package/dist/lib/config/loader.d.ts +0 -77
  37. package/dist/lib/config/loader.d.ts.map +0 -1
  38. package/dist/lib/config/loader.js +0 -199
  39. package/dist/lib/config/loader.js.map +0 -1
  40. package/dist/lib/db/auth-schema.d.ts +0 -28
  41. package/dist/lib/db/auth-schema.d.ts.map +0 -1
  42. package/dist/lib/db/auth-schema.js +0 -116
  43. package/dist/lib/db/auth-schema.js.map +0 -1
  44. package/dist/lib/db/schema.d.ts.map +0 -1
  45. package/dist/lib/db/schema.js +0 -144
  46. package/dist/lib/db/schema.js.map +0 -1
  47. package/dist/lib/index.d.ts.map +0 -1
  48. package/dist/lib/index.js +0 -6
  49. package/dist/lib/index.js.map +0 -1
  50. package/dist/utils/schema-loader.d.ts.map +0 -1
  51. package/dist/utils/schema-loader.js +0 -46
  52. package/dist/utils/schema-loader.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,167 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import * as p from '@clack/prompts';
3
- import { readFileSync } from 'node:fs';
4
- import { execSync } from 'node:child_process';
5
- import { runDbCommand, showDbHelp } from './commands/db/index.js';
6
- import { adminCreate } from './commands/admin/create.js';
7
- const getVersion = () => {
8
- try {
9
- const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
10
- return packageJson.version;
11
- }
12
- catch {
13
- return '0.0.1';
14
- }
15
- };
16
- const showHelp = () => {
17
- console.warn(`
18
- DeesseJS CLI v${getVersion()}
19
-
20
- Usage: npx deesse <command>
21
-
22
- Commands:
23
- help Show this help message
24
- init Initialize a new DeesseJS project in current directory
25
- db Database management commands (db:generate, db:push, etc.)
26
- admin Admin user management (admin create)
27
-
28
- Examples:
29
- npx deesse help
30
- npx deesse init
31
- npx deesse db:generate
32
- npx deesse db:push --force
33
- npx deesse admin create
34
-
35
- For more information, visit: https://github.com/nesalia-inc/deessejs
36
- `);
37
- };
38
- const runInit = async () => {
39
- try {
40
- p.intro(`DeesseJS CLI v${getVersion()}`);
41
- const confirm = await p.confirm({
42
- message: 'Initialize a new DeesseJS project in the current directory?',
43
- });
44
- if (p.isCancel(confirm) || !confirm) {
45
- p.cancel('Initialization cancelled.');
46
- process.exit(0);
47
- }
48
- // Use create-deesse-app with current directory
49
- p.log.info('Running create-deesse-app in current directory...');
50
- execSync('npx create-deesse-app@latest .', { stdio: 'inherit' });
51
- p.outro('Project initialized successfully!');
52
- }
53
- catch (error) {
54
- p.cancel('Failed to initialize project');
55
- if (error instanceof Error) {
56
- console.error(error.message);
57
- }
58
- process.exit(1);
59
- }
60
- };
61
- function parseAdminCreateArgs(args) {
62
- const opts = {};
63
- for (let i = 0; i < args.length; i++) {
64
- if (args[i] === '--email' && i + 1 < args.length) {
65
- opts.email = args[++i];
66
- }
67
- else if (args[i] === '--password' && i + 1 < args.length) {
68
- opts.password = args[++i];
69
- }
70
- else if (args[i] === '--name' && i + 1 < args.length) {
71
- opts.name = args[++i];
72
- }
73
- else if (args[i] === '--cwd' && i + 1 < args.length) {
74
- opts.cwd = args[++i];
75
- }
76
- }
77
- return opts;
78
- }
79
- async function main() {
80
- const args = process.argv.slice(2);
81
- const command = args[0] || 'help';
82
- // Handle db:* commands
83
- if (command.startsWith('db:')) {
84
- const subcommand = command.slice(3); // Remove 'db:' prefix
85
- if (!subcommand) {
86
- showDbHelp();
87
- return;
88
- }
89
- // Special case: 'db help' or 'db --help'
90
- if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
91
- showDbHelp();
92
- return;
93
- }
94
- try {
95
- await runDbCommand({
96
- subcommand,
97
- args: args.slice(1), // Pass all args including the subcommand
98
- });
99
- }
100
- catch (error) {
101
- console.error(`Error: ${error.message}`);
102
- process.exit(1);
103
- }
104
- return;
105
- }
106
- // Handle admin commands
107
- if (command === 'admin') {
108
- const subcommand = args[1];
109
- const subArgs = args.slice(2);
110
- if (!subcommand || subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
111
- console.warn(`
112
- DeesseJS Admin Commands
113
-
114
- Usage: npx deesse admin <command>
115
-
116
- Commands:
117
- admin create Create an admin user
118
-
119
- Options:
120
- --email <email> Admin email address
121
- --password <password> Admin password (min 8 characters)
122
- --name <name> Admin display name (default: Admin)
123
- --cwd <path> Working directory
124
-
125
- Examples:
126
- npx deesse admin create
127
- npx deesse admin create --email admin@example.com --password Secur3P@ss!
128
- `);
129
- return;
130
- }
131
- if (subcommand === 'create') {
132
- const opts = parseAdminCreateArgs(subArgs);
133
- try {
134
- await adminCreate(opts);
135
- }
136
- catch (error) {
137
- console.error(`Error: ${error.message}`);
138
- process.exit(1);
139
- }
140
- return;
141
- }
142
- console.error(`Unknown admin command: ${subcommand}`);
143
- console.error('Run "npx deesse admin help" for usage information.');
144
- process.exit(1);
145
- return;
146
- }
147
- switch (command) {
148
- case 'help':
149
- case '--help':
150
- case '-h':
151
- showHelp();
152
- break;
153
- case 'init':
154
- await runInit();
155
- break;
156
- default:
157
- console.error(`Unknown command: ${command}`);
158
- console.error('Run "npx deesse help" for usage information.');
159
- process.exit(1);
160
- }
161
- }
162
- main().catch((error) => {
163
- console.error('An error occurred:');
164
- console.error(error);
165
- process.exit(1);
2
+ import { run } from '@drizzle-team/brocli';
3
+ import { dbCommand } from './commands/db/index.js';
4
+ const version = '0.6.45';
5
+ run([dbCommand], {
6
+ name: 'deesse',
7
+ version,
8
+ help: () => {
9
+ console.log(`
10
+ @deessejs/cli v${version}
11
+
12
+ Usage: deesse <command>
13
+
14
+ Available commands:
15
+ db Database commands (generate, migrate, push)
16
+
17
+ Run 'deesse <command> --help' for more information on a command.
18
+ `.trim());
19
+ },
166
20
  });
167
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEzB,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE;IACf,IAAI,EAAE,QAAQ;IACd,OAAO;IACP,IAAI,EAAE,GAAG,EAAE;QACT,OAAO,CAAC,GAAG,CAAC;iBACC,OAAO;;;;;;;;KAQnB,CAAC,IAAI,EAAE,CAAC,CAAC;IACZ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stub for loading project configuration (e.g., drizzle.config.ts).
3
+ *
4
+ * Currently not implemented. Will be implemented when db commands
5
+ * (generate, migrate, push) are added.
6
+ */
7
+ export declare function loadConfig(): Promise<unknown>;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAEnD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Stub for loading project configuration (e.g., drizzle.config.ts).
3
+ *
4
+ * Currently not implemented. Will be implemented when db commands
5
+ * (generate, migrate, push) are added.
6
+ */
7
+ export async function loadConfig() {
8
+ throw new Error('Config loader not implemented yet');
9
+ }
10
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,53 +1,54 @@
1
- {
2
- "name": "@deessejs/cli",
3
- "version": "0.6.44",
4
- "description": "DeesseJS CLI for managing DeesseJS projects",
5
- "type": "module",
6
- "bin": {
7
- "deesse": "./bin/deesse.js"
8
- },
9
- "exports": {
10
- ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
- }
14
- },
15
- "files": [
16
- "bin",
17
- "dist"
18
- ],
19
- "keywords": [
20
- "cli",
21
- "deessejs",
22
- "deesse"
23
- ],
24
- "author": "DeesseJS",
25
- "license": "MIT",
26
- "dependencies": {
27
- "@better-auth/drizzle-adapter": "^1.0.0",
28
- "@clack/prompts": "^0.8.2",
29
- "auth": "^1.6.0",
30
- "better-auth": "^1.0.0",
31
- "deesse": "^0.2.11",
32
- "dotenv": "^17.3.1",
33
- "drizzle-orm": "^0.38.0",
34
- "pg": "^8.13.0",
35
- "tsx": "^4.21.0",
36
- "zod": "^3.23.0"
37
- },
38
- "devDependencies": {
39
- "@types/node": "^22.10.6",
40
- "typescript": "^5.7.2"
41
- },
42
- "engines": {
43
- "node": ">=18.0.0"
44
- },
45
- "scripts": {
46
- "dev": "tsc --watch",
47
- "build": "tsc",
48
- "type-check": "tsc --noEmit",
49
- "lint": "eslint src",
50
- "lint:fix": "eslint src --fix",
51
- "clean": "rm -rf dist"
52
- }
53
- }
1
+ {
2
+ "name": "@deessejs/cli",
3
+ "version": "0.6.46",
4
+ "description": "DeesseJS CLI for managing DeesseJS projects",
5
+ "type": "module",
6
+ "bin": {
7
+ "deesse": "./bin/deesse.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "bin",
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "dev": "tsc --watch",
21
+ "build": "tsc",
22
+ "type-check": "tsc --noEmit",
23
+ "lint": "eslint src",
24
+ "lint:fix": "eslint src --fix",
25
+ "clean": "rm -rf dist"
26
+ },
27
+ "keywords": [
28
+ "cli",
29
+ "deessejs",
30
+ "deesse"
31
+ ],
32
+ "author": "DeesseJS",
33
+ "license": "MIT",
34
+ "dependencies": {
35
+ "@drizzle-team/brocli": "^0.12.0",
36
+ "@better-auth/drizzle-adapter": "^1.0.0",
37
+ "@clack/prompts": "^0.8.2",
38
+ "auth": "^1.6.0",
39
+ "better-auth": "^1.0.0",
40
+ "deesse": "^0.2.11",
41
+ "dotenv": "^17.3.1",
42
+ "drizzle-orm": "^0.38.0",
43
+ "pg": "^8.13.0",
44
+ "tsx": "^4.21.0",
45
+ "zod": "^3.23.0"
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^22.10.6",
49
+ "typescript": "^5.7.2"
50
+ },
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ }
54
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,eAAe,CAAC;AAUvB,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAmHD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D5E"}
@@ -1,166 +0,0 @@
1
- /**
2
- * Admin create command - CLI interface
3
- *
4
- * Handles user interaction and delegates to backend logic.
5
- */
6
- import * as p from '@clack/prompts';
7
- import { z } from 'zod';
8
- import { loadMinimalConfig, ConfigLoaderError } from '../../lib/config/loader.js';
9
- import { createAdminUser, AdminCreationError } from '../../lib/admin/create.js';
10
- import { drizzle } from 'drizzle-orm/node-postgres';
11
- // Load environment variables
12
- import 'dotenv/config';
13
- const AdminSchema = z.object({
14
- email: z.string().email('Invalid email format'),
15
- password: z.string().min(8, 'Password must be at least 8 characters'),
16
- name: z.string().min(1, 'Name is required').default('Admin'),
17
- });
18
- // Public email domains that should warn users
19
- const PUBLIC_EMAIL_DOMAINS = [
20
- 'gmail.com',
21
- 'yahoo.com',
22
- 'hotmail.com',
23
- 'outlook.com',
24
- 'icloud.com',
25
- 'mail.com',
26
- 'aol.com',
27
- ];
28
- function isPublicEmailDomain(email) {
29
- const domain = email.split('@')[1]?.toLowerCase();
30
- return PUBLIC_EMAIL_DOMAINS.includes(domain);
31
- }
32
- function validateEmail(value) {
33
- if (!value)
34
- return 'Email is required';
35
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
36
- if (!emailRegex.test(value))
37
- return 'Invalid email format';
38
- return undefined;
39
- }
40
- function validatePassword(value) {
41
- if (value.length < 8)
42
- return 'Password must be at least 8 characters';
43
- return undefined;
44
- }
45
- async function promptForAdminDetails() {
46
- p.intro('Creating admin user');
47
- const emailResult = await p.text({
48
- message: 'Admin email:',
49
- validate: validateEmail,
50
- });
51
- if (p.isCancel(emailResult)) {
52
- p.cancel('Operation cancelled.');
53
- process.exit(0);
54
- }
55
- if (isPublicEmailDomain(emailResult)) {
56
- p.log.warn(`Warning: ${emailResult} is a public email domain.\n` +
57
- ' Admin accounts should use organizational email addresses.');
58
- }
59
- const passwordResult = await p.password({
60
- message: 'Admin password:',
61
- mask: true,
62
- validate: validatePassword,
63
- });
64
- if (p.isCancel(passwordResult)) {
65
- p.cancel('Operation cancelled.');
66
- process.exit(0);
67
- }
68
- const nameResult = await p.text({
69
- message: 'Admin display name:',
70
- defaultValue: 'Admin',
71
- });
72
- if (p.isCancel(nameResult)) {
73
- p.cancel('Operation cancelled.');
74
- process.exit(0);
75
- }
76
- return {
77
- email: emailResult,
78
- password: passwordResult,
79
- name: nameResult || 'Admin',
80
- };
81
- }
82
- function validateInput(options) {
83
- const result = AdminSchema.safeParse(options);
84
- if (!result.success) {
85
- const error = result.error.errors[0];
86
- throw new Error(`${error.path.join('.')}: ${error.message}`);
87
- }
88
- return result.data;
89
- }
90
- function handleError(error) {
91
- if (error instanceof AdminCreationError) {
92
- p.log.error(error.message);
93
- if (error.suggestion) {
94
- p.log.info(error.suggestion);
95
- }
96
- process.exit(1);
97
- }
98
- if (error instanceof ConfigLoaderError) {
99
- p.log.error(error.message);
100
- process.exit(1);
101
- }
102
- // Fallback for unknown errors
103
- p.log.error('Unexpected error: ' + (error instanceof Error ? error.message : String(error)));
104
- process.exit(1);
105
- }
106
- function printSuccess(result) {
107
- p.log.success('Admin user created successfully!');
108
- p.log.info(`Email: ${result.user.email}`);
109
- p.log.info(`Name: ${result.user.name}`);
110
- p.log.info(`ID: ${result.user.id.slice(0, 8)}...`);
111
- }
112
- export async function adminCreate(options) {
113
- try {
114
- const cwd = options.cwd || process.cwd();
115
- // Load minimal config (does not execute config, only extracts secret and auth.baseURL)
116
- p.log.info('Loading config...');
117
- const { config } = await loadMinimalConfig(cwd);
118
- // Validate DATABASE_URL
119
- if (!process.env['DATABASE_URL']) {
120
- p.log.error('DATABASE_URL not found in environment. Check your .env file.');
121
- process.exit(1);
122
- }
123
- // Create database directly from env
124
- // @ts-expect-error - pg module does not have TypeScript declarations
125
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
- const pg = await import('pg');
127
- const database = drizzle({
128
- client: new pg.Pool({
129
- connectionString: process.env['DATABASE_URL'],
130
- }),
131
- });
132
- // Get admin input
133
- let adminInput;
134
- if (options.email && options.password) {
135
- p.log.info('Creating admin user with provided credentials...');
136
- adminInput = validateInput({
137
- email: options.email,
138
- password: options.password,
139
- name: options.name || 'Admin',
140
- });
141
- }
142
- else {
143
- adminInput = await promptForAdminDetails();
144
- }
145
- // Warn about public email
146
- if (isPublicEmailDomain(adminInput.email)) {
147
- p.log.warn(`Warning: ${adminInput.email} is a public email domain.\n` +
148
- ' Admin accounts should use organizational email addresses.');
149
- }
150
- // Create admin user via backend logic
151
- const result = await createAdminUser({
152
- email: adminInput.email,
153
- password: adminInput.password,
154
- name: adminInput.name,
155
- database,
156
- secret: config.secret,
157
- baseURL: config.auth?.baseURL,
158
- plugins: config.auth?.plugins || [],
159
- });
160
- printSuccess(result);
161
- }
162
- catch (error) {
163
- handleError(error);
164
- }
165
- }
166
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/admin/create.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAexB,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Admin command for managing admin users
3
- *
4
- * Usage: deesse admin create [options]
5
- */
6
- export const adminCommand = {
7
- name: 'admin',
8
- description: 'Manage admin users',
9
- subcommands: [
10
- {
11
- name: 'create',
12
- description: 'Create an admin user',
13
- options: [
14
- { name: '--email <email>', description: 'Admin email address' },
15
- { name: '--password <password>', description: 'Admin password (min 8 characters)' },
16
- { name: '--name <name>', description: 'Admin display name', default: 'Admin' },
17
- { name: '--cwd <path>', description: 'Working directory', default: process.cwd() },
18
- ],
19
- },
20
- ],
21
- };
22
- //# sourceMappingURL=admin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,OAAgB;IACtB,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE;QACX;YACE,IAAI,EAAE,QAAiB;YACvB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBAC/D,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBACnF,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;gBAC9E,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;aACnF;SACF;KACF;CACF,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Backend logic for creating admin users
3
- *
4
- * This module contains the pure business logic for creating an admin user
5
- * via better-auth. It has no CLI dependencies (@clack/prompts, etc.).
6
- */
7
- export interface CreateAdminOptions {
8
- email: string;
9
- password: string;
10
- name: string;
11
- database: unknown;
12
- secret: string;
13
- baseURL?: string;
14
- plugins?: unknown[];
15
- }
16
- export interface CreateAdminResult {
17
- user: {
18
- id: string;
19
- email: string;
20
- name: string;
21
- };
22
- }
23
- export declare class AdminCreationError extends Error {
24
- readonly code?: string | undefined;
25
- readonly suggestion?: string | undefined;
26
- constructor(message: string, code?: string | undefined, suggestion?: string | undefined);
27
- }
28
- export declare function createAdminUser(options: CreateAdminOptions): Promise<CreateAdminResult>;
29
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/lib/admin/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,CAAC,EAAE,MAAM;aACb,UAAU,CAAC,EAAE,MAAM;gBAFnC,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyC7F"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Backend logic for creating admin users
3
- *
4
- * This module contains the pure business logic for creating an admin user
5
- * via better-auth. It has no CLI dependencies (@clack/prompts, etc.).
6
- */
7
- export class AdminCreationError extends Error {
8
- code;
9
- suggestion;
10
- constructor(message, code, suggestion) {
11
- super(message);
12
- this.code = code;
13
- this.suggestion = suggestion;
14
- this.name = 'AdminCreationError';
15
- }
16
- }
17
- export async function createAdminUser(options) {
18
- const { email, password, name, database, secret, baseURL, plugins } = options;
19
- // Require better-auth packages
20
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
21
- const betterAuth = require('better-auth');
22
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
23
- const betterAuthDrizzleAdapter = require('@better-auth/drizzle-adapter');
24
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
25
- const pg = require('pg');
26
- const Pool = pg.Pool;
27
- // Create database client
28
- const pool = new Pool({
29
- connectionString: process.env['DATABASE_URL'],
30
- });
31
- try {
32
- // Create better-auth instance with the config's database and auth settings
33
- const auth = betterAuth.betterAuth({
34
- database: betterAuthDrizzleAdapter.drizzleAdapter(database),
35
- baseURL,
36
- secret,
37
- plugins: plugins || [],
38
- });
39
- // Create admin user via better-auth API
40
- const result = await auth.api.createUser({
41
- body: {
42
- email,
43
- password,
44
- name,
45
- role: 'admin',
46
- },
47
- });
48
- return result;
49
- }
50
- finally {
51
- await pool.end();
52
- }
53
- }
54
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/lib/admin/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IACA;IAHlB,YACE,OAAe,EACC,IAAa,EACb,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAS;QACb,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA2B;IAC/D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE9E,+BAA+B;IAC/B,qGAAqG;IACrG,MAAM,UAAU,GAAQ,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,qGAAqG;IACrG,MAAM,wBAAwB,GAAQ,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC9E,qGAAqG;IACrG,MAAM,EAAE,GAAQ,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IAErB,yBAAyB;IACzB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;KAC9C,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,2EAA2E;QAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;YACjC,QAAQ,EAAE,wBAAwB,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC3D,OAAO;YACP,MAAM;YACN,OAAO,EAAE,OAAO,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACvC,IAAI,EAAE;gBACJ,KAAK;gBACL,QAAQ;gBACR,IAAI;gBACJ,IAAI,EAAE,OAAO;aACd;SACF,CAAC,CAAC;QAEH,OAAO,MAA2B,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}