@deessejs/cli 0.6.23 → 0.6.25
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 +14 -23
- package/dist/commands/admin/create.js.map +1 -1
- package/package.json +2 -1
- package/dist/commands/admin/create.d.ts +0 -14
- 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/admin.d.ts +0 -29
- package/dist/commands/admin.d.ts.map +0 -1
- package/dist/commands/admin.js +0 -22
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/db/generate.d.ts +0 -11
- package/dist/commands/db/generate.d.ts.map +0 -1
- package/dist/commands/db/generate.js +0 -31
- package/dist/commands/db/generate.js.map +0 -1
- package/dist/commands/db/index.d.ts +0 -15
- package/dist/commands/db/index.d.ts.map +0 -1
- package/dist/commands/db/index.js +0 -100
- package/dist/commands/db/index.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 -12
- package/dist/commands/db/push.d.ts.map +0 -1
- package/dist/commands/db/push.js +0 -39
- package/dist/commands/db/push.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/index.d.ts +0 -3
- package/dist/index.js +0 -167
- package/dist/index.js.map +0 -1
- package/dist/lib/admin/create.d.ts +0 -33
- package/dist/lib/admin/create.d.ts.map +0 -1
- package/dist/lib/admin/create.js +0 -46
- package/dist/lib/admin/create.js.map +0 -1
- package/dist/lib/config/loader.d.ts +0 -77
- package/dist/lib/config/loader.d.ts.map +0 -1
- package/dist/lib/config/loader.js +0 -199
- package/dist/lib/config/loader.js.map +0 -1
- package/dist/lib/db/auth-schema.d.ts +0 -25
- package/dist/lib/db/auth-schema.d.ts.map +0 -1
- package/dist/lib/db/auth-schema.js +0 -111
- package/dist/lib/db/auth-schema.js.map +0 -1
- package/dist/lib/db/schema.d.ts +0 -43
- package/dist/lib/db/schema.d.ts.map +0 -1
- package/dist/lib/db/schema.js +0 -144
- package/dist/lib/db/schema.js.map +0 -1
- package/dist/lib/index.d.ts +0 -5
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -6
- package/dist/lib/index.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
- package/dist/utils/schema-loader.d.ts +0 -16
- package/dist/utils/schema-loader.d.ts.map +0 -1
- package/dist/utils/schema-loader.js +0 -46
- package/dist/utils/schema-loader.js.map +0 -1
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration loader for Deesse projects
|
|
3
|
-
*
|
|
4
|
-
* Handles loading and processing of deesse.config.ts files.
|
|
5
|
-
* Uses tsx to support TypeScript imports natively.
|
|
6
|
-
*/
|
|
7
|
-
import * as path from 'node:path';
|
|
8
|
-
import { createRequire } from 'node:module';
|
|
9
|
-
import { execSync } from 'node:child_process';
|
|
10
|
-
const CONFIG_PATHS = ['src/deesse.config.ts', 'deesse.config.ts', 'config/deesse.ts'];
|
|
11
|
-
export class ConfigLoaderError extends Error {
|
|
12
|
-
code;
|
|
13
|
-
constructor(message, code) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.code = code;
|
|
16
|
-
this.name = 'ConfigLoaderError';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Load the raw config from a deesse.config.ts file using tsx
|
|
21
|
-
*
|
|
22
|
-
* Uses tsx to execute the config file directly and export the config object.
|
|
23
|
-
* This properly handles TypeScript imports and module context.
|
|
24
|
-
*/
|
|
25
|
-
export async function loadRawConfig(cwd) {
|
|
26
|
-
let configPath = '';
|
|
27
|
-
for (const configFile of CONFIG_PATHS) {
|
|
28
|
-
configPath = path.resolve(cwd, configFile);
|
|
29
|
-
try {
|
|
30
|
-
// Try to access the file
|
|
31
|
-
const { access } = await import('node:fs/promises');
|
|
32
|
-
await access(configPath);
|
|
33
|
-
// File exists, break out of loop
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Try next path
|
|
38
|
-
configPath = '';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (!configPath) {
|
|
42
|
-
throw new ConfigLoaderError(`Config file not found. Searched paths:\n${CONFIG_PATHS.map((p) => ` - ${p}`).join('\n')}\nRun 'deesse init' to create a new project.`);
|
|
43
|
-
}
|
|
44
|
-
// Use tsx to load and execute the TypeScript config file directly
|
|
45
|
-
// The config file is run as a module, and we export the config to stdout
|
|
46
|
-
const loaderScript = `
|
|
47
|
-
import { pathToFileURL } from 'node:url';
|
|
48
|
-
const configPath = pathToFileURL(${JSON.stringify(configPath)}).href;
|
|
49
|
-
const mod = await import(configPath);
|
|
50
|
-
const config = mod.config || mod.default;
|
|
51
|
-
if (!config) {
|
|
52
|
-
console.error('No config export found');
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
// Serialize to JSON (handles plain data, not functions)
|
|
56
|
-
console.log(JSON.stringify(config));
|
|
57
|
-
`;
|
|
58
|
-
try {
|
|
59
|
-
// Execute with tsx, preserving the current environment
|
|
60
|
-
const result = execSync(`node --import tsx -e ${JSON.stringify(loaderScript)}`, {
|
|
61
|
-
cwd,
|
|
62
|
-
encoding: 'utf-8',
|
|
63
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
64
|
-
env: { ...process.env },
|
|
65
|
-
});
|
|
66
|
-
const rawConfig = JSON.parse(result.trim());
|
|
67
|
-
if (!rawConfig) {
|
|
68
|
-
throw new ConfigLoaderError(`No config found in ${configPath}`);
|
|
69
|
-
}
|
|
70
|
-
return { config: rawConfig, configPath };
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
const err = error;
|
|
74
|
-
throw new ConfigLoaderError(`Failed to load config from ${configPath}: ${err.stderr || err.message || String(error)}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Process raw config via defineConfig to get InternalConfig
|
|
79
|
-
*/
|
|
80
|
-
export function processConfig(rawConfig) {
|
|
81
|
-
const require = createRequire(import.meta.url);
|
|
82
|
-
try {
|
|
83
|
-
const deesse = require('deesse');
|
|
84
|
-
if (typeof deesse.defineConfig !== 'function') {
|
|
85
|
-
throw new ConfigLoaderError('deesse package does not export defineConfig');
|
|
86
|
-
}
|
|
87
|
-
return deesse.defineConfig(rawConfig);
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
if (error instanceof ConfigLoaderError) {
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
throw new ConfigLoaderError(`Failed to process config: ${error instanceof Error ? error.message : String(error)}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Load and process a deesse config
|
|
98
|
-
*/
|
|
99
|
-
export async function loadConfig(cwd) {
|
|
100
|
-
const { config: rawConfig, configPath } = await loadRawConfig(cwd);
|
|
101
|
-
const processedConfig = processConfig(rawConfig);
|
|
102
|
-
return { rawConfig, processedConfig, configPath };
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Load minimal config without executing the config file
|
|
106
|
-
*
|
|
107
|
-
* Extracts only secret and auth.baseURL via regex to avoid loading
|
|
108
|
-
* pages and other runtime-only config that would fail during CLI use.
|
|
109
|
-
*/
|
|
110
|
-
export async function loadMinimalConfig(cwd) {
|
|
111
|
-
const { configPath } = await findConfigPath(cwd);
|
|
112
|
-
// Read file content directly
|
|
113
|
-
const { readFile } = await import('node:fs/promises');
|
|
114
|
-
const content = await readFile(configPath, 'utf-8');
|
|
115
|
-
const config = { secret: '' };
|
|
116
|
-
// Extract secret: matches `secret: process.env.DEESSE_SECRET!` or similar patterns
|
|
117
|
-
const secretMatch = content.match(/secret\s*:\s*process\.env\.(\w+)!/);
|
|
118
|
-
if (secretMatch) {
|
|
119
|
-
const envVar = secretMatch[1];
|
|
120
|
-
const value = process.env[envVar];
|
|
121
|
-
if (!value) {
|
|
122
|
-
throw new ConfigLoaderError(`Environment variable ${envVar} is not set. Make sure your .env file contains ${envVar}`);
|
|
123
|
-
}
|
|
124
|
-
config.secret = value;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// Try matching `secret: 'value'` or `secret: "value"`
|
|
128
|
-
const secretLiteralMatch = content.match(/secret\s*:\s*['"]([^'"]+)['"]/);
|
|
129
|
-
if (secretLiteralMatch) {
|
|
130
|
-
config.secret = secretLiteralMatch[1];
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (!config.secret) {
|
|
134
|
-
throw new ConfigLoaderError(`Could not extract 'secret' from ${configPath}. ` +
|
|
135
|
-
'Make sure your config has: secret: process.env.DEESSE_SECRET!');
|
|
136
|
-
}
|
|
137
|
-
// Extract auth.baseURL: matches `baseURL: process.env.VAR || 'default'` or `baseURL: 'https://...'`
|
|
138
|
-
const baseURLMatch = content.match(/baseURL\s*:\s*(?:process\.env\.(\w+)\s*\|\|\s*)?['"]([^'"]+)['"]/);
|
|
139
|
-
if (baseURLMatch) {
|
|
140
|
-
const envVar = baseURLMatch[1];
|
|
141
|
-
const defaultValue = baseURLMatch[2];
|
|
142
|
-
config.auth = {
|
|
143
|
-
baseURL: envVar && process.env[envVar] ? process.env[envVar] : defaultValue,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return { config, configPath };
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Find the config file path without loading content
|
|
150
|
-
*/
|
|
151
|
-
async function findConfigPath(cwd) {
|
|
152
|
-
for (const configFile of CONFIG_PATHS) {
|
|
153
|
-
const configPath = path.resolve(cwd, configFile);
|
|
154
|
-
try {
|
|
155
|
-
const { access } = await import('node:fs/promises');
|
|
156
|
-
await access(configPath);
|
|
157
|
-
return { configPath };
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
// Try next path
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
throw new ConfigLoaderError(`Config file not found. Searched paths:\n${CONFIG_PATHS.map((p) => ` - ${p}`).join('\n')}\nRun 'deesse init' to create a new project.`);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Check if the admin plugin is configured in the config
|
|
167
|
-
*/
|
|
168
|
-
export function hasAdminPlugin(config) {
|
|
169
|
-
if (!config.auth?.plugins) {
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
return config.auth.plugins.some((plugin) => {
|
|
173
|
-
// Check if plugin has a name property indicating it's the admin plugin
|
|
174
|
-
if (plugin && typeof plugin === 'object' && 'name' in plugin) {
|
|
175
|
-
const name = plugin.name;
|
|
176
|
-
return name === 'admin' || String(name).includes('admin');
|
|
177
|
-
}
|
|
178
|
-
// Fallback to string representation check
|
|
179
|
-
const pluginStr = String(plugin);
|
|
180
|
-
return pluginStr.includes('admin') || pluginStr.includes('Admin');
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Verify admin plugin is configured, throw if not
|
|
185
|
-
*/
|
|
186
|
-
export function verifyAdminPlugin(config) {
|
|
187
|
-
if (!hasAdminPlugin(config)) {
|
|
188
|
-
throw new ConfigLoaderError('Admin plugin not configured. The admin plugin is automatically included by defineConfig,\n' +
|
|
189
|
-
'but your config must have an auth section configured.\n\n' +
|
|
190
|
-
'Example deesse.config.ts:\n' +
|
|
191
|
-
' export const config = defineConfig({\n' +
|
|
192
|
-
' auth: {\n' +
|
|
193
|
-
' baseURL: process.env.NEXT_PUBLIC_BASE_URL,\n' +
|
|
194
|
-
' },\n' +
|
|
195
|
-
' // ... other config\n' +
|
|
196
|
-
' });');
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/lib/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Better-Auth schema generation for db commands
|
|
3
|
-
*
|
|
4
|
-
* Since auth is mandatory in DeesseJS, db:generate and db:push
|
|
5
|
-
* must also generate the auth schema tables.
|
|
6
|
-
*
|
|
7
|
-
* Uses the programmatic API (generateDrizzleSchema from auth/api)
|
|
8
|
-
* instead of spawning npx auth@latest generate.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Generate the better-auth schema using the programmatic API
|
|
12
|
-
*
|
|
13
|
-
* This calls generateDrizzleSchema() directly to generate the auth tables
|
|
14
|
-
* (user, session, account, verification) without needing a config file.
|
|
15
|
-
*/
|
|
16
|
-
export declare function generateAuthSchema(cwd?: string): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Check if auth schema file exists
|
|
19
|
-
*/
|
|
20
|
-
export declare function authSchemaExists(cwd?: string): Promise<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* Get the path to the auth schema file
|
|
23
|
-
*/
|
|
24
|
-
export declare function getAuthSchemaPath(cwd?: string): string;
|
|
25
|
-
//# sourceMappingURL=auth-schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/db/auth-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8DH;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDnF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAErE"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Better-Auth schema generation for db commands
|
|
3
|
-
*
|
|
4
|
-
* Since auth is mandatory in DeesseJS, db:generate and db:push
|
|
5
|
-
* must also generate the auth schema tables.
|
|
6
|
-
*
|
|
7
|
-
* Uses the programmatic API (generateDrizzleSchema from auth/api)
|
|
8
|
-
* instead of spawning npx auth@latest generate.
|
|
9
|
-
*/
|
|
10
|
-
import { writeFile, access, mkdir } from 'node:fs/promises';
|
|
11
|
-
import { existsSync } from 'node:fs';
|
|
12
|
-
import * as path from 'node:path';
|
|
13
|
-
const AUTH_SCHEMA_OUTPUT = './src/db/auth-schema.ts';
|
|
14
|
-
async function generateDrizzleSchemaInternal(
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
-
opts) {
|
|
17
|
-
// Dynamic import to get the generator
|
|
18
|
-
const { generateDrizzleSchema } = await import('auth/api');
|
|
19
|
-
return generateDrizzleSchema(opts);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Create a mock adapter for schema generation
|
|
23
|
-
*/
|
|
24
|
-
function createMockAdapter(dialect) {
|
|
25
|
-
// Map postgresql to pg for drizzle
|
|
26
|
-
const provider = dialect === 'postgresql' ? 'pg' : dialect;
|
|
27
|
-
return {
|
|
28
|
-
id: 'drizzle',
|
|
29
|
-
options: {
|
|
30
|
-
adapterConfig: {
|
|
31
|
-
adapterId: 'drizzle',
|
|
32
|
-
},
|
|
33
|
-
provider,
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Ensure a directory exists
|
|
39
|
-
*/
|
|
40
|
-
async function ensureDir(dirPath) {
|
|
41
|
-
if (!existsSync(dirPath)) {
|
|
42
|
-
await mkdir(dirPath, { recursive: true });
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Generate the better-auth schema using the programmatic API
|
|
47
|
-
*
|
|
48
|
-
* This calls generateDrizzleSchema() directly to generate the auth tables
|
|
49
|
-
* (user, session, account, verification) without needing a config file.
|
|
50
|
-
*/
|
|
51
|
-
export async function generateAuthSchema(cwd = process.cwd()) {
|
|
52
|
-
const outputPath = path.resolve(cwd, AUTH_SCHEMA_OUTPUT);
|
|
53
|
-
console.warn('Generating better-auth schema...');
|
|
54
|
-
try {
|
|
55
|
-
// Create mock adapter for drizzle with postgresql dialect
|
|
56
|
-
const adapter = createMockAdapter('postgresql');
|
|
57
|
-
// Generate the schema using the programmatic API
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
-
const schema = await generateDrizzleSchemaInternal({
|
|
60
|
-
file: outputPath,
|
|
61
|
-
adapter,
|
|
62
|
-
options: {
|
|
63
|
-
database: {},
|
|
64
|
-
plugins: [],
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
if (!schema.code) {
|
|
68
|
-
console.warn('Auth schema is already up to date.');
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
// Ensure parent directory exists
|
|
72
|
-
const parentDir = path.dirname(outputPath);
|
|
73
|
-
await ensureDir(parentDir);
|
|
74
|
-
// Write the generated schema to file
|
|
75
|
-
await writeFile(outputPath, schema.code, 'utf-8');
|
|
76
|
-
// Append schema export (combined object of all auth tables)
|
|
77
|
-
// This is needed because generateDrizzleSchema exports named tables,
|
|
78
|
-
// but drizzle expects a schema object with all tables
|
|
79
|
-
// Named 'schema' to match drizzle-kit's expectation
|
|
80
|
-
const schemaExport = `\nexport const schema = { user, session, account, verification };\n`;
|
|
81
|
-
await writeFile(outputPath, schemaExport, { flag: 'a' });
|
|
82
|
-
console.warn(`Auth schema generated: ${outputPath}`);
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
if (error.code === 'ENOENT') {
|
|
86
|
-
throw new Error('better-auth schema generation failed. Please ensure better-auth is installed:\n' +
|
|
87
|
-
' npm install better-auth');
|
|
88
|
-
}
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if auth schema file exists
|
|
94
|
-
*/
|
|
95
|
-
export async function authSchemaExists(cwd = process.cwd()) {
|
|
96
|
-
const outputPath = path.resolve(cwd, AUTH_SCHEMA_OUTPUT);
|
|
97
|
-
try {
|
|
98
|
-
await access(outputPath);
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get the path to the auth schema file
|
|
107
|
-
*/
|
|
108
|
-
export function getAuthSchemaPath(cwd = process.cwd()) {
|
|
109
|
-
return path.resolve(cwd, AUTH_SCHEMA_OUTPUT);
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=auth-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-schema.js","sourceRoot":"","sources":["../../../src/lib/db/auth-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/db/schema.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Drizzle schema loader
|
|
3
|
-
*
|
|
4
|
-
* Dynamically imports the user's schema from ./src/db/schema.ts
|
|
5
|
-
* This is required because drizzle-kit's programmatic API takes schema objects,
|
|
6
|
-
* not file paths.
|
|
7
|
-
*/
|
|
8
|
-
declare const DEFAULT_SCHEMA_PATH = "./src/db/schema.ts";
|
|
9
|
-
declare const DEFAULT_DRIZZLE_CONFIG_PATH = "./drizzle.config.ts";
|
|
10
|
-
export { DEFAULT_SCHEMA_PATH, DEFAULT_DRIZZLE_CONFIG_PATH };
|
|
11
|
-
export interface SchemaLoaderResult {
|
|
12
|
-
schema: Record<string, unknown>;
|
|
13
|
-
schemaPath: string;
|
|
14
|
-
}
|
|
15
|
-
export declare class SchemaLoaderError extends Error {
|
|
16
|
-
readonly code?: string | undefined;
|
|
17
|
-
constructor(message: string, code?: string | undefined);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Load Drizzle schema objects from the user's schema file
|
|
21
|
-
*/
|
|
22
|
-
export declare function loadSchema(cwd?: string): Promise<SchemaLoaderResult>;
|
|
23
|
-
/**
|
|
24
|
-
* Verify the schema file exists
|
|
25
|
-
*/
|
|
26
|
-
export declare function verifySchemaPath(cwd?: string): Promise<string>;
|
|
27
|
-
/**
|
|
28
|
-
* Check if schema file exists
|
|
29
|
-
*/
|
|
30
|
-
export declare function schemaExists(cwd?: string): Promise<boolean>;
|
|
31
|
-
/**
|
|
32
|
-
* Check if drizzle config exists
|
|
33
|
-
*/
|
|
34
|
-
export declare function drizzleConfigExists(cwd?: string): Promise<boolean>;
|
|
35
|
-
/**
|
|
36
|
-
* Create the default schema file with auth schema import
|
|
37
|
-
*/
|
|
38
|
-
export declare function createDefaultSchema(cwd?: string): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Create the default drizzle config file
|
|
41
|
-
*/
|
|
42
|
-
export declare function createDrizzleConfig(cwd?: string): Promise<void>;
|
|
43
|
-
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/lib/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,QAAA,MAAM,mBAAmB,uBAAuB,CAAC;AACjD,QAAA,MAAM,2BAA2B,wBAAwB,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aACG,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAI3D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwCzF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAanF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF"}
|
package/dist/lib/db/schema.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Drizzle schema loader
|
|
3
|
-
*
|
|
4
|
-
* Dynamically imports the user's schema from ./src/db/schema.ts
|
|
5
|
-
* This is required because drizzle-kit's programmatic API takes schema objects,
|
|
6
|
-
* not file paths.
|
|
7
|
-
*/
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
import { createRequire } from 'node:module';
|
|
10
|
-
import { writeFile, access, mkdir } from 'node:fs/promises';
|
|
11
|
-
import { existsSync } from 'node:fs';
|
|
12
|
-
const DEFAULT_SCHEMA_PATH = './src/db/schema.ts';
|
|
13
|
-
const DEFAULT_DRIZZLE_CONFIG_PATH = './drizzle.config.ts';
|
|
14
|
-
const DEFAULT_SCHEMA_DIR = './src/db';
|
|
15
|
-
export { DEFAULT_SCHEMA_PATH, DEFAULT_DRIZZLE_CONFIG_PATH };
|
|
16
|
-
export class SchemaLoaderError extends Error {
|
|
17
|
-
code;
|
|
18
|
-
constructor(message, code) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.code = code;
|
|
21
|
-
this.name = 'SchemaLoaderError';
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Load Drizzle schema objects from the user's schema file
|
|
26
|
-
*/
|
|
27
|
-
export async function loadSchema(cwd = process.cwd()) {
|
|
28
|
-
const schemaPath = path.resolve(cwd, DEFAULT_SCHEMA_PATH);
|
|
29
|
-
const require = createRequire(import.meta.url);
|
|
30
|
-
try {
|
|
31
|
-
const schemaModule = require(schemaPath);
|
|
32
|
-
// Extract all exports that are schema objects (tables, etc.)
|
|
33
|
-
const schema = {};
|
|
34
|
-
for (const [key, value] of Object.entries(schemaModule)) {
|
|
35
|
-
// Skip non-schema exports (like imports, types, etc.)
|
|
36
|
-
if (key === '__esModule' || key === 'default')
|
|
37
|
-
continue;
|
|
38
|
-
if (typeof value !== 'object' && typeof value !== 'function')
|
|
39
|
-
continue;
|
|
40
|
-
schema[key] = value;
|
|
41
|
-
}
|
|
42
|
-
if (Object.keys(schema).length === 0) {
|
|
43
|
-
throw new SchemaLoaderError(`No schema objects found in ${DEFAULT_SCHEMA_PATH}.\n` +
|
|
44
|
-
`Please export your Drizzle tables from this file.`);
|
|
45
|
-
}
|
|
46
|
-
return { schema, schemaPath };
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
if (error instanceof SchemaLoaderError) {
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
const err = error;
|
|
53
|
-
if (err.code === 'ENOENT') {
|
|
54
|
-
throw new SchemaLoaderError(`Schema file not found: ${DEFAULT_SCHEMA_PATH}\n` +
|
|
55
|
-
`Please create this file and export your Drizzle tables.`);
|
|
56
|
-
}
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Verify the schema file exists
|
|
62
|
-
*/
|
|
63
|
-
export async function verifySchemaPath(cwd = process.cwd()) {
|
|
64
|
-
const { stat } = await import('node:fs/promises');
|
|
65
|
-
const schemaPath = path.resolve(cwd, DEFAULT_SCHEMA_PATH);
|
|
66
|
-
try {
|
|
67
|
-
await stat(schemaPath);
|
|
68
|
-
return schemaPath;
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
throw new SchemaLoaderError(`Schema file not found: ${DEFAULT_SCHEMA_PATH}\n` +
|
|
72
|
-
`Please create this file and export your Drizzle tables.`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Check if schema file exists
|
|
77
|
-
*/
|
|
78
|
-
export async function schemaExists(cwd = process.cwd()) {
|
|
79
|
-
const schemaPath = path.resolve(cwd, DEFAULT_SCHEMA_PATH);
|
|
80
|
-
try {
|
|
81
|
-
await access(schemaPath);
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Check if drizzle config exists
|
|
90
|
-
*/
|
|
91
|
-
export async function drizzleConfigExists(cwd = process.cwd()) {
|
|
92
|
-
const configPath = path.resolve(cwd, DEFAULT_DRIZZLE_CONFIG_PATH);
|
|
93
|
-
try {
|
|
94
|
-
await access(configPath);
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Create the default schema file with auth schema import
|
|
103
|
-
*/
|
|
104
|
-
export async function createDefaultSchema(cwd = process.cwd()) {
|
|
105
|
-
const schemaDir = path.resolve(cwd, DEFAULT_SCHEMA_DIR);
|
|
106
|
-
const schemaPath = path.resolve(cwd, DEFAULT_SCHEMA_PATH);
|
|
107
|
-
// Ensure src/db directory exists
|
|
108
|
-
if (!existsSync(schemaDir)) {
|
|
109
|
-
await mkdir(schemaDir, { recursive: true });
|
|
110
|
-
}
|
|
111
|
-
// Auth schema is in src/db/ next to schema.ts, so same directory import
|
|
112
|
-
const schemaContent = `import { authSchema } from './auth-schema';
|
|
113
|
-
|
|
114
|
-
export const schema = {
|
|
115
|
-
...authSchema,
|
|
116
|
-
// your tables here
|
|
117
|
-
};
|
|
118
|
-
`;
|
|
119
|
-
await writeFile(schemaPath, schemaContent, 'utf-8');
|
|
120
|
-
console.warn(`Created default schema: ${schemaPath}`);
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Create the default drizzle config file
|
|
124
|
-
*/
|
|
125
|
-
export async function createDrizzleConfig(cwd = process.cwd()) {
|
|
126
|
-
const configPath = path.resolve(cwd, DEFAULT_DRIZZLE_CONFIG_PATH);
|
|
127
|
-
// Point directly to auth-schema.ts which now exports 'schema'
|
|
128
|
-
const configContent = `import 'dotenv/config';
|
|
129
|
-
import { defineConfig } from 'drizzle-kit';
|
|
130
|
-
|
|
131
|
-
export default defineConfig({
|
|
132
|
-
out: './drizzle',
|
|
133
|
-
schema: './src/db/auth-schema.ts',
|
|
134
|
-
dialect: 'postgresql',
|
|
135
|
-
dbCredentials: {
|
|
136
|
-
url: process.env.DATABASE_URL!,
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
`;
|
|
140
|
-
// Always overwrite - drizzle-kit requires the correct schema path
|
|
141
|
-
await writeFile(configPath, configContent, 'utf-8');
|
|
142
|
-
console.warn(`Created/Updated drizzle config: ${configPath}`);
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/lib/db/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
DELETED
package/dist/lib/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/lib/index.js
DELETED
package/dist/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/utils/config.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config loader utility
|
|
3
|
-
*
|
|
4
|
-
* Dynamically imports the user's deesse.config.ts to get the database instance.
|
|
5
|
-
*/
|
|
6
|
-
export interface DeesseConfig {
|
|
7
|
-
database: unknown;
|
|
8
|
-
}
|
|
9
|
-
export interface LoadedConfig {
|
|
10
|
-
config: DeesseConfig;
|
|
11
|
-
configPath: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function loadConfig(): Promise<LoadedConfig>;
|
|
14
|
-
export declare function verifyConfigPath(): Promise<string>;
|
|
15
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAoCxD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAaxD"}
|
package/dist/utils/config.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config loader utility
|
|
3
|
-
*
|
|
4
|
-
* Dynamically imports the user's deesse.config.ts to get the database instance.
|
|
5
|
-
*/
|
|
6
|
-
import * as path from 'node:path';
|
|
7
|
-
import * as url from 'node:url';
|
|
8
|
-
const CONFIG_PATH = './src/deesse.config.ts';
|
|
9
|
-
export async function loadConfig() {
|
|
10
|
-
const configPath = path.resolve(process.cwd(), CONFIG_PATH);
|
|
11
|
-
// Try to load the config file
|
|
12
|
-
let configModule;
|
|
13
|
-
try {
|
|
14
|
-
configModule = await import(url.pathToFileURL(configPath).href);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
if (error.code === 'ENOENT') {
|
|
18
|
-
throw new Error(`Config file not found: ${CONFIG_PATH}\n` +
|
|
19
|
-
`Please create this file with your database configuration.`);
|
|
20
|
-
}
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
// Handle both named export and default export patterns
|
|
24
|
-
const config = configModule.config ?? configModule.default?.config;
|
|
25
|
-
if (!config) {
|
|
26
|
-
throw new Error(`Config file ${CONFIG_PATH} does not export a 'config' object.\n` +
|
|
27
|
-
`Please ensure your config file contains: export const config = defineConfig({ ... })`);
|
|
28
|
-
}
|
|
29
|
-
if (!config.database) {
|
|
30
|
-
throw new Error(`Config does not have a 'database' property.\n` +
|
|
31
|
-
`Please add a database configuration using drizzle().`);
|
|
32
|
-
}
|
|
33
|
-
return { config, configPath };
|
|
34
|
-
}
|
|
35
|
-
export async function verifyConfigPath() {
|
|
36
|
-
const { stat } = await import('node:fs/promises');
|
|
37
|
-
const configPath = path.resolve(process.cwd(), CONFIG_PATH);
|
|
38
|
-
try {
|
|
39
|
-
await stat(configPath);
|
|
40
|
-
return configPath;
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
throw new Error(`Config file not found: ${CONFIG_PATH}\n` +
|
|
44
|
-
`Please create this file with your database configuration.`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAWhC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE5D,8BAA8B;IAC9B,IAAI,YAA4E,CAAC;IAEjF,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,IAAI;gBACzC,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uCAAuC;YACjE,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,IAAI;YACzC,2DAA2D,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC"}
|