@deessejs/cli 0.6.22 → 0.6.24
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.
- package/dist/commands/admin/create.d.ts.map +1 -1
- package/dist/commands/admin/create.js +27 -64
- package/dist/commands/admin/create.js.map +1 -1
- package/dist/commands/db/generate.d.ts.map +1 -1
- package/dist/commands/db/generate.js +16 -2
- package/dist/commands/db/generate.js.map +1 -1
- package/dist/lib/config/loader.d.ts +22 -0
- package/dist/lib/config/loader.d.ts.map +1 -1
- package/dist/lib/config/loader.js +43 -0
- package/dist/lib/config/loader.js.map +1 -1
- package/dist/lib/db/auth-schema.d.ts +15 -1
- package/dist/lib/db/auth-schema.d.ts.map +1 -1
- package/dist/lib/db/auth-schema.js +6 -2
- package/dist/lib/db/auth-schema.js.map +1 -1
- package/package.json +2 -1
- package/dist/commands/admin-create.d.ts +0 -16
- package/dist/commands/admin-create.d.ts.map +0 -1
- package/dist/commands/admin-create.js +0 -264
- package/dist/commands/admin-create.js.map +0 -1
- package/dist/commands/db-generate.d.ts +0 -14
- package/dist/commands/db-generate.d.ts.map +0 -1
- package/dist/commands/db-generate.js +0 -56
- package/dist/commands/db-generate.js.map +0 -1
- package/dist/commands/db-introspect.d.ts +0 -14
- package/dist/commands/db-introspect.d.ts.map +0 -1
- package/dist/commands/db-introspect.js +0 -34
- package/dist/commands/db-introspect.js.map +0 -1
- package/dist/commands/db-migrate.d.ts +0 -16
- package/dist/commands/db-migrate.d.ts.map +0 -1
- package/dist/commands/db-migrate.js +0 -75
- package/dist/commands/db-migrate.js.map +0 -1
- package/dist/commands/db-push.d.ts +0 -16
- package/dist/commands/db-push.d.ts.map +0 -1
- package/dist/commands/db-push.js +0 -67
- package/dist/commands/db-push.js.map +0 -1
- package/dist/commands/db-studio.d.ts +0 -15
- package/dist/commands/db-studio.d.ts.map +0 -1
- package/dist/commands/db-studio.js +0 -49
- package/dist/commands/db-studio.js.map +0 -1
- package/dist/commands/db.d.ts +0 -15
- package/dist/commands/db.d.ts.map +0 -1
- package/dist/commands/db.js +0 -100
- package/dist/commands/db.js.map +0 -1
- package/dist/utils/config.d.ts +0 -15
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -47
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/dialect.d.ts +0 -23
- package/dist/utils/dialect.d.ts.map +0 -1
- package/dist/utils/dialect.js +0 -82
- package/dist/utils/dialect.js.map +0 -1
- package/dist/utils/schema-generator.d.ts +0 -25
- package/dist/utils/schema-generator.d.ts.map +0 -1
- package/dist/utils/schema-generator.js +0 -157
- package/dist/utils/schema-generator.js.map +0 -1
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Admin user creation command
|
|
3
|
-
*
|
|
4
|
-
* Implements the `deesse admin create` command for creating admin users
|
|
5
|
-
* via better-auth's admin plugin.
|
|
6
|
-
*/
|
|
7
|
-
import * as p from '@clack/prompts';
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
import * as path from 'node:path';
|
|
10
|
-
import { pathToFileURL } from 'node:url';
|
|
11
|
-
import { createRequire } from 'module';
|
|
12
|
-
// Load environment variables
|
|
13
|
-
import 'dotenv/config';
|
|
14
|
-
const AdminSchema = z.object({
|
|
15
|
-
email: z.string().email('Invalid email format'),
|
|
16
|
-
password: z.string().min(8, 'Password must be at least 8 characters'),
|
|
17
|
-
name: z.string().min(1, 'Name is required').default('Admin'),
|
|
18
|
-
});
|
|
19
|
-
// Public email domains that should warn users
|
|
20
|
-
const PUBLIC_EMAIL_DOMAINS = [
|
|
21
|
-
'gmail.com',
|
|
22
|
-
'yahoo.com',
|
|
23
|
-
'hotmail.com',
|
|
24
|
-
'outlook.com',
|
|
25
|
-
'icloud.com',
|
|
26
|
-
'mail.com',
|
|
27
|
-
'aol.com',
|
|
28
|
-
];
|
|
29
|
-
function isPublicEmailDomain(email) {
|
|
30
|
-
const domain = email.split('@')[1]?.toLowerCase();
|
|
31
|
-
return PUBLIC_EMAIL_DOMAINS.includes(domain);
|
|
32
|
-
}
|
|
33
|
-
function warnPublicEmail(email) {
|
|
34
|
-
p.log.warn(`Warning: ${email} is a public email domain.\n` +
|
|
35
|
-
' Admin accounts should use organizational email addresses.');
|
|
36
|
-
}
|
|
37
|
-
const ERROR_MAP = {
|
|
38
|
-
USER_ALREADY_EXISTS: {
|
|
39
|
-
message: 'A user with this email already exists',
|
|
40
|
-
suggestion: 'Use a different email or check if an admin already exists',
|
|
41
|
-
},
|
|
42
|
-
DATABASE_ERROR: {
|
|
43
|
-
message: 'Cannot connect to database',
|
|
44
|
-
suggestion: 'Check DATABASE_URL in your .env file and ensure PostgreSQL is running',
|
|
45
|
-
},
|
|
46
|
-
INVALID_PASSWORD: {
|
|
47
|
-
message: 'Password must be at least 8 characters',
|
|
48
|
-
suggestion: 'Choose a longer password',
|
|
49
|
-
},
|
|
50
|
-
CONNECTION_REFUSED: {
|
|
51
|
-
message: 'Database connection refused',
|
|
52
|
-
suggestion: 'Ensure PostgreSQL is running and DATABASE_URL is correct',
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
function handleError(error) {
|
|
56
|
-
const err = error;
|
|
57
|
-
const code = err.code || '';
|
|
58
|
-
const mapped = ERROR_MAP[code];
|
|
59
|
-
if (mapped) {
|
|
60
|
-
p.log.error(mapped.message);
|
|
61
|
-
p.log.info(mapped.suggestion);
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
// Fallback for unknown errors
|
|
65
|
-
p.log.error('Unexpected error: ' + (error instanceof Error ? error.message : String(error)));
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
function validateEmail(value) {
|
|
69
|
-
if (!value)
|
|
70
|
-
return 'Email is required';
|
|
71
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
72
|
-
if (!emailRegex.test(value))
|
|
73
|
-
return 'Invalid email format';
|
|
74
|
-
return undefined;
|
|
75
|
-
}
|
|
76
|
-
function validatePassword(value) {
|
|
77
|
-
if (value.length < 8)
|
|
78
|
-
return 'Password must be at least 8 characters';
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
async function promptForAdminDetails() {
|
|
82
|
-
p.intro('Creating admin user');
|
|
83
|
-
const emailResult = await p.text({
|
|
84
|
-
message: 'Admin email:',
|
|
85
|
-
validate: validateEmail,
|
|
86
|
-
});
|
|
87
|
-
if (p.isCancel(emailResult)) {
|
|
88
|
-
p.cancel('Operation cancelled.');
|
|
89
|
-
process.exit(0);
|
|
90
|
-
}
|
|
91
|
-
if (isPublicEmailDomain(emailResult)) {
|
|
92
|
-
p.log.warn(`Warning: ${emailResult} is a public email domain.\n` +
|
|
93
|
-
' Admin accounts should use organizational email addresses.');
|
|
94
|
-
}
|
|
95
|
-
const passwordResult = await p.password({
|
|
96
|
-
message: 'Admin password:',
|
|
97
|
-
mask: true,
|
|
98
|
-
validate: validatePassword,
|
|
99
|
-
});
|
|
100
|
-
if (p.isCancel(passwordResult)) {
|
|
101
|
-
p.cancel('Operation cancelled.');
|
|
102
|
-
process.exit(0);
|
|
103
|
-
}
|
|
104
|
-
const nameResult = await p.text({
|
|
105
|
-
message: 'Admin display name:',
|
|
106
|
-
defaultValue: 'Admin',
|
|
107
|
-
});
|
|
108
|
-
if (p.isCancel(nameResult)) {
|
|
109
|
-
p.cancel('Operation cancelled.');
|
|
110
|
-
process.exit(0);
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
email: emailResult,
|
|
114
|
-
password: passwordResult,
|
|
115
|
-
name: nameResult || 'Admin',
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
function validateInput(options) {
|
|
119
|
-
const result = AdminSchema.safeParse(options);
|
|
120
|
-
if (!result.success) {
|
|
121
|
-
const error = result.error.errors[0];
|
|
122
|
-
throw new Error(`${error.path.join('.')}: ${error.message}`);
|
|
123
|
-
}
|
|
124
|
-
return result.data;
|
|
125
|
-
}
|
|
126
|
-
async function loadConfig(cwd) {
|
|
127
|
-
const CONFIG_PATHS = ['src/deesse.config.ts', 'deesse.config.ts', 'config/deesse.ts'];
|
|
128
|
-
let configModule = null;
|
|
129
|
-
let configPath = '';
|
|
130
|
-
for (const configFile of CONFIG_PATHS) {
|
|
131
|
-
configPath = path.resolve(cwd, configFile);
|
|
132
|
-
try {
|
|
133
|
-
// Windows ESM compatibility: use file:// URL
|
|
134
|
-
const url = pathToFileURL(configPath).toString();
|
|
135
|
-
configModule = await import(url);
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
const err = error;
|
|
140
|
-
if (err.code !== 'ENOENT') {
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if (!configModule) {
|
|
146
|
-
throw new Error(`Config file not found. Searched paths:\n` +
|
|
147
|
-
CONFIG_PATHS.map((p) => ` - ${p}`).join('\n') +
|
|
148
|
-
`\nRun 'deesse init' to create a new project.`);
|
|
149
|
-
}
|
|
150
|
-
const rawConfig = configModule.default ||
|
|
151
|
-
configModule.config;
|
|
152
|
-
if (!rawConfig) {
|
|
153
|
-
throw new Error(`No config found in ${configPath}`);
|
|
154
|
-
}
|
|
155
|
-
return rawConfig;
|
|
156
|
-
}
|
|
157
|
-
async function createAdminUser(options) {
|
|
158
|
-
const { email, password, name, cwd = process.cwd() } = options;
|
|
159
|
-
// Load the deesse config
|
|
160
|
-
const rawConfig = await loadConfig(cwd);
|
|
161
|
-
// Dynamically import defineConfig to process the config
|
|
162
|
-
const require = createRequire(import.meta.url);
|
|
163
|
-
let defineConfig = null;
|
|
164
|
-
try {
|
|
165
|
-
// Use require for CJS module
|
|
166
|
-
const deesse = require('deesse');
|
|
167
|
-
defineConfig = deesse.defineConfig;
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
// defineConfig not available, we'll do basic checks
|
|
171
|
-
}
|
|
172
|
-
let config = null;
|
|
173
|
-
if (defineConfig) {
|
|
174
|
-
config = defineConfig(rawConfig);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// If we can't load defineConfig, assume rawConfig is already processed or use it directly
|
|
178
|
-
config = rawConfig;
|
|
179
|
-
}
|
|
180
|
-
// Check if admin plugin is configured
|
|
181
|
-
const hasAdminPlugin = config?.auth?.plugins?.some((p) => {
|
|
182
|
-
const pluginStr = String(p);
|
|
183
|
-
return pluginStr.includes('admin') || pluginStr.includes('Admin');
|
|
184
|
-
}) ?? false;
|
|
185
|
-
if (!hasAdminPlugin) {
|
|
186
|
-
throw new Error('Admin plugin not configured. Add admin() to your auth.plugins in deesse.config.ts:\n\n' +
|
|
187
|
-
' import { admin } from "better-auth/plugins";\n\n' +
|
|
188
|
-
' export const config = defineConfig({\n' +
|
|
189
|
-
' auth: {\n' +
|
|
190
|
-
' plugins: [admin()],\n' +
|
|
191
|
-
' },\n' +
|
|
192
|
-
' });');
|
|
193
|
-
}
|
|
194
|
-
// Get better-auth instance - using require for better module resolution
|
|
195
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
196
|
-
const betterAuth = require('better-auth');
|
|
197
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
198
|
-
const betterAuthDrizzleAdapter = require('@better-auth/drizzle-adapter');
|
|
199
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
200
|
-
const drizzleOrm = require('drizzle-orm');
|
|
201
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
202
|
-
const pg = require('pg');
|
|
203
|
-
const Pool = pg.Pool;
|
|
204
|
-
// Create database client
|
|
205
|
-
const databaseUrl = process.env['DATABASE_URL'];
|
|
206
|
-
if (!databaseUrl) {
|
|
207
|
-
throw new Error('DATABASE_URL not found in environment. Check your .env file.');
|
|
208
|
-
}
|
|
209
|
-
// Create better-auth instance with admin plugin
|
|
210
|
-
const pool = new Pool({ connectionString: databaseUrl });
|
|
211
|
-
const auth = betterAuth.betterAuth({
|
|
212
|
-
database: betterAuthDrizzleAdapter.drizzleAdapter(drizzleOrm.drizzle(pool)),
|
|
213
|
-
plugins: [betterAuth.admin()],
|
|
214
|
-
});
|
|
215
|
-
// Create admin user via better-auth API
|
|
216
|
-
const result = await auth.api.createUser({
|
|
217
|
-
body: {
|
|
218
|
-
email,
|
|
219
|
-
password,
|
|
220
|
-
name,
|
|
221
|
-
role: 'admin',
|
|
222
|
-
},
|
|
223
|
-
});
|
|
224
|
-
await pool.end();
|
|
225
|
-
return result;
|
|
226
|
-
}
|
|
227
|
-
function printSuccess(result) {
|
|
228
|
-
p.log.success('Admin user created successfully!');
|
|
229
|
-
p.log.info(`Email: ${result.user.email}`);
|
|
230
|
-
p.log.info(`Name: ${result.user.name}`);
|
|
231
|
-
p.log.info(`ID: ${result.user.id.slice(0, 8)}...`);
|
|
232
|
-
}
|
|
233
|
-
export async function adminCreate(options) {
|
|
234
|
-
try {
|
|
235
|
-
// Normalize options
|
|
236
|
-
const opts = {
|
|
237
|
-
name: options.name || 'Admin',
|
|
238
|
-
cwd: options.cwd || process.cwd(),
|
|
239
|
-
};
|
|
240
|
-
// If email and password provided via CLI args, use them directly
|
|
241
|
-
// Otherwise prompt interactively
|
|
242
|
-
let adminInput;
|
|
243
|
-
if (options.email && options.password) {
|
|
244
|
-
opts['email'] = options.email;
|
|
245
|
-
opts['password'] = options.password;
|
|
246
|
-
p.log.info('Creating admin user with provided credentials...');
|
|
247
|
-
adminInput = validateInput(opts);
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
adminInput = await promptForAdminDetails();
|
|
251
|
-
}
|
|
252
|
-
// Validate email domain
|
|
253
|
-
if (isPublicEmailDomain(adminInput.email)) {
|
|
254
|
-
warnPublicEmail(adminInput.email);
|
|
255
|
-
}
|
|
256
|
-
// Create the admin user
|
|
257
|
-
const result = await createAdminUser({ ...adminInput, cwd: opts['cwd'] });
|
|
258
|
-
printSuccess(result);
|
|
259
|
-
}
|
|
260
|
-
catch (error) {
|
|
261
|
-
handleError(error);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=admin-create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-create.js","sourceRoot":"","sources":["../../src/commands/admin-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:generate 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 out settings
|
|
9
|
-
*/
|
|
10
|
-
export interface DbGenerateOptions {
|
|
11
|
-
cwd?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function dbGenerate(options?: DbGenerateOptions): Promise<void>;
|
|
14
|
-
//# sourceMappingURL=db-generate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-generate.d.ts","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C/E"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:generate 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 out settings
|
|
9
|
-
*/
|
|
10
|
-
import { execSync } from 'node:child_process';
|
|
11
|
-
import { verifySchemaPath, DEFAULT_SCHEMA_PATH } from '../lib/db/schema.js';
|
|
12
|
-
import * as fs from 'node:fs/promises';
|
|
13
|
-
import * as path from 'node:path';
|
|
14
|
-
const SCHEMA_PATH = DEFAULT_SCHEMA_PATH;
|
|
15
|
-
const DRIZZLE_CONFIG_PATH = './drizzle.config.ts';
|
|
16
|
-
export async function dbGenerate(options = {}) {
|
|
17
|
-
const cwd = options.cwd ?? process.cwd();
|
|
18
|
-
// Verify schema file exists
|
|
19
|
-
try {
|
|
20
|
-
await verifySchemaPath();
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
throw new Error(`db:generate requires ${SCHEMA_PATH} to exist.\n` +
|
|
24
|
-
`Please create this file and export your Drizzle tables.`);
|
|
25
|
-
}
|
|
26
|
-
// Verify drizzle.config.ts exists
|
|
27
|
-
const drizzleConfigPath = path.join(cwd, DRIZZLE_CONFIG_PATH);
|
|
28
|
-
try {
|
|
29
|
-
await fs.access(drizzleConfigPath);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
throw new Error(`db:generate requires ${DRIZZLE_CONFIG_PATH} to exist.\n` +
|
|
33
|
-
`Please create this file with your drizzle-kit configuration.\n\n` +
|
|
34
|
-
`Example:\n` +
|
|
35
|
-
`import { defineConfig } from 'drizzle-kit';\n` +
|
|
36
|
-
`export default defineConfig({\n` +
|
|
37
|
-
` schema: './src/db/schema.ts',\n` +
|
|
38
|
-
` out: './src/db/migrations',\n` +
|
|
39
|
-
` dialect: 'postgresql',\n` +
|
|
40
|
-
`});`);
|
|
41
|
-
}
|
|
42
|
-
console.warn('Generating migrations with drizzle-kit...');
|
|
43
|
-
try {
|
|
44
|
-
execSync('npx drizzle-kit generate', {
|
|
45
|
-
cwd,
|
|
46
|
-
stdio: 'inherit',
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
if (error.code === 'ENOENT') {
|
|
51
|
-
throw new Error('drizzle-kit not found. Please install it: npm install drizzle-kit');
|
|
52
|
-
}
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=db-generate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-generate.js","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAA6B,EAAE;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,cAAc;YACjD,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,wBAAwB,mBAAmB,cAAc;YACzD,kEAAkE;YAClE,YAAY;YACZ,+CAA+C;YAC/C,iCAAiC;YACjC,mCAAmC;YACnC,iCAAiC;YACjC,4BAA4B;YAC5B,KAAK,CACN,CAAC;IACJ,CAAC;IAED,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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:introspect command
|
|
3
|
-
*
|
|
4
|
-
* Verifies schema setup and provides instructions for introspecting database.
|
|
5
|
-
*
|
|
6
|
-
* For Drizzle, run:
|
|
7
|
-
* npx drizzle-kit introspect
|
|
8
|
-
*/
|
|
9
|
-
export interface DbIntrospectOptions {
|
|
10
|
-
cwd?: string;
|
|
11
|
-
force?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare function dbIntrospect(_options?: DbIntrospectOptions): Promise<void>;
|
|
14
|
-
//# sourceMappingURL=db-introspect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-introspect.d.ts","sourceRoot":"","sources":["../../src/commands/db-introspect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,QAAQ,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBpF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:introspect command
|
|
3
|
-
*
|
|
4
|
-
* Verifies schema setup and provides instructions for introspecting database.
|
|
5
|
-
*
|
|
6
|
-
* For Drizzle, run:
|
|
7
|
-
* npx drizzle-kit introspect
|
|
8
|
-
*/
|
|
9
|
-
import { loadConfig } from '../utils/config.js';
|
|
10
|
-
import { detectDialect } from '../utils/dialect.js';
|
|
11
|
-
export async function dbIntrospect(_options = {}) {
|
|
12
|
-
// Load config to verify database is configured
|
|
13
|
-
const { config } = await loadConfig();
|
|
14
|
-
const db = config.database;
|
|
15
|
-
if (!db) {
|
|
16
|
-
throw new Error('Config does not have a database instance');
|
|
17
|
-
}
|
|
18
|
-
// Detect dialect
|
|
19
|
-
const dialect = detectDialect(db);
|
|
20
|
-
console.warn(`
|
|
21
|
-
Database Config OK
|
|
22
|
-
|
|
23
|
-
Detected dialect: ${dialect}
|
|
24
|
-
|
|
25
|
-
To introspect your database and generate a schema file, run:
|
|
26
|
-
|
|
27
|
-
npx drizzle-kit introspect
|
|
28
|
-
|
|
29
|
-
This will generate/update a schema file based on your database tables.
|
|
30
|
-
|
|
31
|
-
Note: This command requires a drizzle.config.ts file. See 'deesse db:generate' for setup.
|
|
32
|
-
`);
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=db-introspect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-introspect.js","sourceRoot":"","sources":["../../src/commands/db-introspect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAgC,EAAE;IACnE,+CAA+C;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE3B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,iBAAiB;IACjB,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAElC,OAAO,CAAC,IAAI,CAAC;;;oBAGK,OAAO;;;;;;;;;CAS1B,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
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=db-migrate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-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"}
|
|
@@ -1,75 +0,0 @@
|
|
|
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=db-migrate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-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,qBAAqB,CAAC;AAC5E,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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:push 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 (loaded automatically)
|
|
10
|
-
*/
|
|
11
|
-
export interface DbPushOptions {
|
|
12
|
-
force?: boolean;
|
|
13
|
-
cwd?: string;
|
|
14
|
-
}
|
|
15
|
-
export declare function dbPush(options?: DbPushOptions): Promise<void>;
|
|
16
|
-
//# sourceMappingURL=db-push.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-push.d.ts","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,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,CAuDvE"}
|
package/dist/commands/db-push.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:push 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 (loaded automatically)
|
|
10
|
-
*/
|
|
11
|
-
import { execSync } 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 dbPush(options = {}) {
|
|
19
|
-
const { force = false, cwd = process.cwd() } = options;
|
|
20
|
-
// Verify schema file exists
|
|
21
|
-
try {
|
|
22
|
-
await verifySchemaPath(cwd);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
throw new Error(`db:push 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:push 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
|
-
` dialect: 'postgresql',\n` +
|
|
41
|
-
` dbCredentials: {\n` +
|
|
42
|
-
` url: process.env.DATABASE_URL,\n` +
|
|
43
|
-
` },\n` +
|
|
44
|
-
`});`);
|
|
45
|
-
}
|
|
46
|
-
console.warn('Pushing schema to database with drizzle-kit...');
|
|
47
|
-
// Load .env file if it exists
|
|
48
|
-
dotenv.config();
|
|
49
|
-
const args = ['npx drizzle-kit', 'push'];
|
|
50
|
-
if (force) {
|
|
51
|
-
args.push('--force');
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
execSync(args.join(' '), {
|
|
55
|
-
cwd,
|
|
56
|
-
stdio: 'inherit',
|
|
57
|
-
env: process.env,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
if (error.code === 'ENOENT') {
|
|
62
|
-
throw new Error('drizzle-kit not found. Please install it: npm install drizzle-kit');
|
|
63
|
-
}
|
|
64
|
-
throw error;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=db-push.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-push.js","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,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,MAAM,CAAC,UAAyB,EAAE;IACtD,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEvD,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,oBAAoB,WAAW,cAAc;YAC7C,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,oBAAoB,mBAAmB,cAAc;YACrD,kEAAkE;YAClE,YAAY;YACZ,+CAA+C;YAC/C,iCAAiC;YACjC,mCAAmC;YACnC,4BAA4B;YAC5B,sBAAsB;YACtB,sCAAsC;YACtC,QAAQ;YACR,KAAK,CACN,CAAC;IACJ,CAAC;IAED,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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* db:studio command
|
|
3
|
-
*
|
|
4
|
-
* Verifies schema setup and provides instructions for opening Drizzle Studio.
|
|
5
|
-
*
|
|
6
|
-
* For Drizzle, run:
|
|
7
|
-
* npx drizzle-kit studio
|
|
8
|
-
*/
|
|
9
|
-
export interface DbStudioOptions {
|
|
10
|
-
port?: number;
|
|
11
|
-
host?: string;
|
|
12
|
-
cwd?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function dbStudio(options?: DbStudioOptions): Promise<void>;
|
|
15
|
-
//# sourceMappingURL=db-studio.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-studio.d.ts","sourceRoot":"","sources":["../../src/commands/db-studio.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C3E"}
|