@deessejs/cli 0.6.25 → 0.6.27

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 (49) hide show
  1. package/dist/commands/admin/create.d.ts +14 -0
  2. package/dist/commands/admin.d.ts +29 -0
  3. package/dist/commands/admin.d.ts.map +1 -0
  4. package/dist/commands/admin.js +22 -0
  5. package/dist/commands/admin.js.map +1 -0
  6. package/dist/commands/db/generate.d.ts +11 -0
  7. package/dist/commands/db/generate.d.ts.map +1 -0
  8. package/dist/commands/db/generate.js +45 -0
  9. package/dist/commands/db/generate.js.map +1 -0
  10. package/dist/commands/db/index.d.ts +15 -0
  11. package/dist/commands/db/index.d.ts.map +1 -0
  12. package/dist/commands/db/index.js +100 -0
  13. package/dist/commands/db/index.js.map +1 -0
  14. package/dist/commands/db/migrate.d.ts +16 -0
  15. package/dist/commands/db/migrate.d.ts.map +1 -0
  16. package/dist/commands/db/migrate.js +75 -0
  17. package/dist/commands/db/migrate.js.map +1 -0
  18. package/dist/commands/db/push.d.ts +12 -0
  19. package/dist/commands/db/push.d.ts.map +1 -0
  20. package/dist/commands/db/push.js +39 -0
  21. package/dist/commands/db/push.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.js +167 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/lib/admin/create.d.ts +33 -0
  26. package/dist/lib/admin/create.d.ts.map +1 -0
  27. package/dist/lib/admin/create.js +46 -0
  28. package/dist/lib/admin/create.js.map +1 -0
  29. package/dist/lib/config/loader.d.ts +99 -0
  30. package/dist/lib/config/loader.d.ts.map +1 -0
  31. package/dist/lib/config/loader.js +242 -0
  32. package/dist/lib/config/loader.js.map +1 -0
  33. package/dist/lib/db/auth-schema.d.ts +39 -0
  34. package/dist/lib/db/auth-schema.d.ts.map +1 -0
  35. package/dist/lib/db/auth-schema.js +115 -0
  36. package/dist/lib/db/auth-schema.js.map +1 -0
  37. package/dist/lib/db/schema.d.ts +43 -0
  38. package/dist/lib/db/schema.d.ts.map +1 -0
  39. package/dist/lib/db/schema.js +144 -0
  40. package/dist/lib/db/schema.js.map +1 -0
  41. package/dist/lib/index.d.ts +5 -0
  42. package/dist/lib/index.d.ts.map +1 -0
  43. package/dist/lib/index.js +6 -0
  44. package/dist/lib/index.js.map +1 -0
  45. package/dist/utils/schema-loader.d.ts +16 -0
  46. package/dist/utils/schema-loader.d.ts.map +1 -0
  47. package/dist/utils/schema-loader.js +46 -0
  48. package/dist/utils/schema-loader.js.map +1 -0
  49. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Admin create command - CLI interface
3
+ *
4
+ * Handles user interaction and delegates to backend logic.
5
+ */
6
+ import 'dotenv/config';
7
+ export interface AdminCreateOptions {
8
+ email?: string;
9
+ password?: string;
10
+ name?: string;
11
+ cwd?: string;
12
+ }
13
+ export declare function adminCreate(options: AdminCreateOptions): Promise<void>;
14
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Admin command for managing admin users
3
+ *
4
+ * Usage: deesse admin create [options]
5
+ */
6
+ export interface AdminCreateOptions {
7
+ email?: string;
8
+ password?: string;
9
+ name?: string;
10
+ cwd?: string;
11
+ }
12
+ export declare const adminCommand: {
13
+ name: "admin";
14
+ description: string;
15
+ subcommands: {
16
+ name: "create";
17
+ description: string;
18
+ options: ({
19
+ name: string;
20
+ description: string;
21
+ default?: undefined;
22
+ } | {
23
+ name: string;
24
+ description: string;
25
+ default: string;
26
+ })[];
27
+ }[];
28
+ };
29
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,22 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * db:generate command
3
+ *
4
+ * Generates auth schema and user migrations with drizzle-kit.
5
+ * Always recreates drizzle config to ensure correct schema path.
6
+ */
7
+ export interface DbGenerateOptions {
8
+ cwd?: string;
9
+ }
10
+ export declare function dbGenerate(options?: DbGenerateOptions): Promise<void>;
11
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/db/generate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC/E"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * db:generate command
3
+ *
4
+ * Generates auth schema and user migrations with drizzle-kit.
5
+ * Always recreates drizzle config to ensure correct schema path.
6
+ */
7
+ import { execSync } from 'node:child_process';
8
+ import { createDrizzleConfig } from '../../lib/db/schema.js';
9
+ import { generateAuthSchema } from '../../lib/db/auth-schema.js';
10
+ import { loadMinimalConfigWithPlugins } from '../../lib/config/loader.js';
11
+ export async function dbGenerate(options = {}) {
12
+ const cwd = options.cwd ?? process.cwd();
13
+ // Load plugins from config for schema generation
14
+ // This ensures plugin-injected fields (e.g., admin plugin adds role, banned, etc.)
15
+ // are included in the generated schema
16
+ let plugins = [];
17
+ try {
18
+ const { plugins: loadedPlugins } = await loadMinimalConfigWithPlugins(cwd);
19
+ plugins = loadedPlugins;
20
+ }
21
+ catch (error) {
22
+ // If we fail to load plugins, continue with empty plugins array
23
+ // The schema will still be generated but without plugin fields
24
+ console.warn(`Warning: Could not load plugins from config: ${error instanceof Error ? error.message : String(error)}`);
25
+ }
26
+ // Generate auth schema (mandatory in DeesseJS) with plugins for proper field generation
27
+ await generateAuthSchema(cwd, plugins);
28
+ // Always recreate drizzle config to ensure correct schema path
29
+ console.warn('Setting up drizzle.config.ts...');
30
+ await createDrizzleConfig(cwd);
31
+ console.warn('Generating migrations with drizzle-kit...');
32
+ try {
33
+ execSync('npx drizzle-kit generate', {
34
+ cwd,
35
+ stdio: 'inherit',
36
+ });
37
+ }
38
+ catch (error) {
39
+ if (error.code === 'ENOENT') {
40
+ throw new Error('drizzle-kit not found. Please install it: npm install drizzle-kit');
41
+ }
42
+ throw error;
43
+ }
44
+ }
45
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/db/generate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAM1E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAA6B,EAAE;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,iDAAiD;IACjD,mFAAmF;IACnF,uCAAuC;IACvC,IAAI,OAAO,GAAc,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,GAAG,aAAa,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;QAChE,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,gDAAgD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,wFAAwF;IACxF,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAmD,CAAC,CAAC;IAEnF,+DAA+D;IAC/D,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,QAAQ,CAAC,0BAA0B,EAAE;YACnC,GAAG;YACH,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * db command dispatcher
3
+ *
4
+ * Handles all db:* subcommands:
5
+ * - db:generate Generate migrations from schema changes
6
+ * - db:push Push schema changes directly (dev only)
7
+ * - db:migrate Apply pending migrations to database
8
+ */
9
+ export interface DbCommandOptions {
10
+ subcommand: string;
11
+ args: string[];
12
+ }
13
+ export declare function runDbCommand(options: DbCommandOptions): Promise<void>;
14
+ export declare function showDbHelp(): void;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E;AA0CD,wBAAgB,UAAU,IAAI,IAAI,CA+BjC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * db command dispatcher
3
+ *
4
+ * Handles all db:* subcommands:
5
+ * - db:generate Generate migrations from schema changes
6
+ * - db:push Push schema changes directly (dev only)
7
+ * - db:migrate Apply pending migrations to database
8
+ */
9
+ import { dbGenerate } from './generate.js';
10
+ import { dbPush } from './push.js';
11
+ import { dbMigrate } from './migrate.js';
12
+ export async function runDbCommand(options) {
13
+ const { subcommand, args } = options;
14
+ switch (subcommand) {
15
+ case 'generate': {
16
+ const opts = parseDbGenerateArgs(args);
17
+ await dbGenerate(opts);
18
+ break;
19
+ }
20
+ case 'push': {
21
+ const opts = parseDbPushArgs(args);
22
+ await dbPush(opts);
23
+ break;
24
+ }
25
+ case 'migrate': {
26
+ const opts = parseDbMigrateArgs(args);
27
+ await dbMigrate(opts);
28
+ break;
29
+ }
30
+ default:
31
+ throw new Error(`Unknown db command: ${subcommand}\n` +
32
+ `Valid commands: generate, push, migrate`);
33
+ }
34
+ }
35
+ function parseDbGenerateArgs(args) {
36
+ const opts = {};
37
+ for (let i = 0; i < args.length; i++) {
38
+ if (args[i] === '--cwd' && i + 1 < args.length) {
39
+ opts.cwd = args[++i];
40
+ }
41
+ }
42
+ return opts;
43
+ }
44
+ function parseDbPushArgs(args) {
45
+ const opts = {};
46
+ for (let i = 0; i < args.length; i++) {
47
+ if (args[i] === '--cwd' && i + 1 < args.length) {
48
+ opts.cwd = args[++i];
49
+ }
50
+ else if (args[i] === '--force' || args[i] === '-f') {
51
+ opts.force = true;
52
+ }
53
+ }
54
+ return opts;
55
+ }
56
+ function parseDbMigrateArgs(args) {
57
+ const opts = {};
58
+ for (let i = 0; i < args.length; i++) {
59
+ if (args[i] === '--cwd' && i + 1 < args.length) {
60
+ opts.cwd = args[++i];
61
+ }
62
+ else if (args[i] === '--dry-run') {
63
+ opts.dryRun = true;
64
+ }
65
+ }
66
+ return opts;
67
+ }
68
+ export function showDbHelp() {
69
+ console.warn(`
70
+ Deesse DB Commands
71
+
72
+ Usage: npx deesse db:<command> [options]
73
+
74
+ Commands:
75
+ db:generate Generate migrations from schema changes
76
+ db:push Push schema changes directly to database
77
+ db:migrate Apply pending migrations to database
78
+
79
+ Options:
80
+
81
+ db:generate
82
+ --cwd <path> Set working directory
83
+
84
+ db:push
85
+ --cwd <path> Set working directory
86
+ --force, -f Force push without confirmation
87
+
88
+ db:migrate
89
+ --cwd <path> Set working directory
90
+ --dry-run Show what would be migrated without executing
91
+
92
+ Examples:
93
+ npx deesse db:generate
94
+ npx deesse db:push
95
+ npx deesse db:push --force
96
+ npx deesse db:migrate
97
+ npx deesse db:migrate --dry-run
98
+ `);
99
+ }
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/db/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * db:migrate command
3
+ *
4
+ * Verifies schema and config exist, then delegates to drizzle-kit CLI.
5
+ *
6
+ * Requirements:
7
+ * - src/db/schema.ts: Your Drizzle tables
8
+ * - drizzle.config.ts: Standard drizzle-kit config with schema and dbCredentials
9
+ * - .env: Should contain DATABASE_URL
10
+ */
11
+ export interface DbMigrateOptions {
12
+ cwd?: string;
13
+ dryRun?: boolean;
14
+ }
15
+ export declare function dbMigrate(options?: DbMigrateOptions): Promise<void>;
16
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/commands/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE7E"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * db:migrate command
3
+ *
4
+ * Verifies schema and config exist, then delegates to drizzle-kit CLI.
5
+ *
6
+ * Requirements:
7
+ * - src/db/schema.ts: Your Drizzle tables
8
+ * - drizzle.config.ts: Standard drizzle-kit config with schema and dbCredentials
9
+ * - .env: Should contain DATABASE_URL
10
+ */
11
+ import { spawn } from 'node:child_process';
12
+ import { verifySchemaPath, DEFAULT_SCHEMA_PATH } from '../../lib/db/schema.js';
13
+ import * as fs from 'node:fs/promises';
14
+ import * as path from 'node:path';
15
+ import * as dotenv from 'dotenv';
16
+ const DRIZZLE_CONFIG_PATH = './drizzle.config.ts';
17
+ const SCHEMA_PATH = DEFAULT_SCHEMA_PATH;
18
+ export async function dbMigrate(options = {}) {
19
+ const { cwd = process.cwd(), dryRun = false } = options;
20
+ // Verify schema file exists
21
+ try {
22
+ await verifySchemaPath(cwd);
23
+ }
24
+ catch {
25
+ throw new Error(`db:migrate requires ${SCHEMA_PATH} to exist.\n` +
26
+ `Please create this file and export your Drizzle tables.`);
27
+ }
28
+ // Verify drizzle.config.ts exists
29
+ const drizzleConfigPath = path.join(cwd, DRIZZLE_CONFIG_PATH);
30
+ try {
31
+ await fs.access(drizzleConfigPath);
32
+ }
33
+ catch {
34
+ throw new Error(`db:migrate requires ${DRIZZLE_CONFIG_PATH} to exist.\n` +
35
+ `Please create this file with your drizzle-kit configuration.\n\n` +
36
+ `Example:\n` +
37
+ `import { defineConfig } from 'drizzle-kit';\n` +
38
+ `export default defineConfig({\n` +
39
+ ` schema: './src/db/schema.ts',\n` +
40
+ ` out: './src/db/migrations',\n` +
41
+ ` dialect: 'postgresql',\n` +
42
+ ` dbCredentials: {\n` +
43
+ ` url: process.env.DATABASE_URL!,\n` +
44
+ ` },\n` +
45
+ `});`);
46
+ }
47
+ console.warn('Applying migrations with drizzle-kit...');
48
+ // Load .env file
49
+ dotenv.config();
50
+ // Build command
51
+ const cmd = dryRun ? 'npx drizzle-kit migrate --dry' : 'npx drizzle-kit migrate';
52
+ // Use spawn with shell:true so .env is inherited
53
+ return new Promise((resolve, reject) => {
54
+ const child = spawn(cmd, {
55
+ cwd,
56
+ stdio: 'inherit',
57
+ shell: true,
58
+ });
59
+ child.on('close', (code) => {
60
+ if (code === 0) {
61
+ resolve();
62
+ }
63
+ else {
64
+ reject(new Error(`Command failed: npx drizzle-kit migrate${dryRun ? ' --dry' : ''}`));
65
+ }
66
+ });
67
+ child.on('error', (error) => {
68
+ if (error.code === 'ENOENT') {
69
+ reject(new Error('drizzle-kit not found. Please install it: npm install drizzle-kit'));
70
+ }
71
+ reject(error);
72
+ });
73
+ });
74
+ }
75
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/commands/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAClD,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAOxC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAExD,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uBAAuB,WAAW,cAAc;YAChD,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uBAAuB,mBAAmB,cAAc;YACxD,kEAAkE;YAClE,YAAY;YACZ,+CAA+C;YAC/C,iCAAiC;YACjC,mCAAmC;YACnC,iCAAiC;YACjC,4BAA4B;YAC5B,sBAAsB;YACtB,uCAAuC;YACvC,QAAQ;YACR,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAExD,iBAAiB;IACjB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAEjF,iDAAiD;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;YACvB,GAAG;YACH,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * db:push command
3
+ *
4
+ * Generates auth schema and pushes to database with drizzle-kit.
5
+ * Always recreates drizzle config to ensure correct schema path.
6
+ */
7
+ export interface DbPushOptions {
8
+ force?: boolean;
9
+ cwd?: string;
10
+ }
11
+ export declare function dbPush(options?: DbPushOptions): Promise<void>;
12
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/db/push.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCvE"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * db:push command
3
+ *
4
+ * Generates auth schema and pushes to database with drizzle-kit.
5
+ * Always recreates drizzle config to ensure correct schema path.
6
+ */
7
+ import { execSync } from 'node:child_process';
8
+ import { createDrizzleConfig } from '../../lib/db/schema.js';
9
+ import { generateAuthSchema } from '../../lib/db/auth-schema.js';
10
+ import * as dotenv from 'dotenv';
11
+ export async function dbPush(options = {}) {
12
+ const { force = false, cwd = process.cwd() } = options;
13
+ // Generate auth schema (mandatory in DeesseJS)
14
+ await generateAuthSchema(cwd);
15
+ // Always recreate drizzle config to ensure correct schema path
16
+ console.warn('Setting up drizzle.config.ts...');
17
+ await createDrizzleConfig(cwd);
18
+ console.warn('Pushing schema to database with drizzle-kit...');
19
+ // Load .env file if it exists
20
+ dotenv.config();
21
+ const args = ['npx drizzle-kit', 'push'];
22
+ if (force) {
23
+ args.push('--force');
24
+ }
25
+ try {
26
+ execSync(args.join(' '), {
27
+ cwd,
28
+ stdio: 'inherit',
29
+ env: process.env,
30
+ });
31
+ }
32
+ catch (error) {
33
+ if (error.code === 'ENOENT') {
34
+ throw new Error('drizzle-kit not found. Please install it: npm install drizzle-kit');
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/db/push.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAOjC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAyB,EAAE;IACtD,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEvD,+CAA+C;IAC/C,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9B,+DAA+D;IAC/D,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAE/D,8BAA8B;IAC9B,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG;YACH,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,167 @@
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);
166
+ });
167
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
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
+ import type { BetterAuthPlugin } from "better-auth";
8
+ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
9
+ export type AuthSchema = Record<string, any>;
10
+ export interface CreateAdminOptions {
11
+ email: string;
12
+ password: string;
13
+ name: string;
14
+ database: PostgresJsDatabase;
15
+ secret: string;
16
+ baseURL?: string;
17
+ plugins?: BetterAuthPlugin[];
18
+ schema?: AuthSchema;
19
+ }
20
+ export interface CreateAdminResult {
21
+ user: {
22
+ id: string;
23
+ email: string;
24
+ name: string;
25
+ };
26
+ }
27
+ export declare class AdminCreationError extends Error {
28
+ readonly code?: string | undefined;
29
+ readonly suggestion?: string | undefined;
30
+ constructor(message: string, code?: string | undefined, suggestion?: string | undefined);
31
+ }
32
+ export declare function createAdminUser(options: CreateAdminOptions): Promise<CreateAdminResult>;
33
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/lib/admin/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOlE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,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,CA+B7F"}