@kyro-cms/core 0.1.1 → 0.1.2
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/README.md +196 -109
- package/dist/bootstrap-2WJK6PG7.cjs +29 -0
- package/dist/bootstrap-2WJK6PG7.cjs.map +1 -0
- package/dist/bootstrap-Q2TWUQF3.js +4 -0
- package/dist/bootstrap-Q2TWUQF3.js.map +1 -0
- package/dist/chunk-3QX6KG2S.js +2125 -0
- package/dist/chunk-3QX6KG2S.js.map +1 -0
- package/dist/chunk-5AOILNGY.cjs +212 -0
- package/dist/chunk-5AOILNGY.cjs.map +1 -0
- package/dist/{chunk-DKSMFC3L.js → chunk-EINVJPFM.js} +2 -2
- package/dist/{chunk-DKSMFC3L.js.map → chunk-EINVJPFM.js.map} +1 -1
- package/dist/chunk-F5B64H5S.cjs +2149 -0
- package/dist/chunk-F5B64H5S.cjs.map +1 -0
- package/dist/chunk-I4BORBXT.cjs +914 -0
- package/dist/chunk-I4BORBXT.cjs.map +1 -0
- package/dist/chunk-KA3UOIFC.js +206 -0
- package/dist/chunk-KA3UOIFC.js.map +1 -0
- package/dist/chunk-KWTKEBHM.cjs +176 -0
- package/dist/chunk-KWTKEBHM.cjs.map +1 -0
- package/dist/chunk-M4JFHQ5J.js +170 -0
- package/dist/chunk-M4JFHQ5J.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-Q7SFCCGT.cjs +11 -0
- package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
- package/dist/chunk-U4CHJTWX.cjs +94 -0
- package/dist/chunk-U4CHJTWX.cjs.map +1 -0
- package/dist/{chunk-3Q3FS5J4.cjs → chunk-V3B25QOK.cjs} +2 -2
- package/dist/{chunk-3Q3FS5J4.cjs.map → chunk-V3B25QOK.cjs.map} +1 -1
- package/dist/chunk-V67YXRBT.js +899 -0
- package/dist/chunk-V67YXRBT.js.map +1 -0
- package/dist/chunk-XLMVCGXA.js +86 -0
- package/dist/chunk-XLMVCGXA.js.map +1 -0
- package/dist/cli/index.cjs +106 -14
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +106 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/database-37KXWUER.js +5 -0
- package/dist/database-37KXWUER.js.map +1 -0
- package/dist/database-LJKD3HE4.cjs +22 -0
- package/dist/database-LJKD3HE4.cjs.map +1 -0
- package/dist/drizzle/index.cjs +25 -5
- package/dist/drizzle/index.d.cts +5 -49
- package/dist/drizzle/index.d.ts +5 -49
- package/dist/drizzle/index.js +5 -1
- package/dist/graphql/index.cjs +1 -0
- package/dist/graphql/index.js +1 -0
- package/dist/index-BVFlb7uU.d.ts +192 -0
- package/dist/index-CzkEHKqu.d.cts +192 -0
- package/dist/index.cjs +1203 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +382 -68
- package/dist/index.d.ts +382 -68
- package/dist/index.js +1110 -20
- package/dist/index.js.map +1 -1
- package/dist/mongodb/index.cjs +1 -0
- package/dist/mongodb/index.js +1 -0
- package/dist/postgres-auth-adapter-CYZAVPPP.cjs +14 -0
- package/dist/postgres-auth-adapter-CYZAVPPP.cjs.map +1 -0
- package/dist/postgres-auth-adapter-LTDUGBMB.js +5 -0
- package/dist/postgres-auth-adapter-LTDUGBMB.js.map +1 -0
- package/dist/rest/index.cjs +1 -0
- package/dist/rest/index.js +1 -0
- package/dist/templates/index.cjs +94 -536
- package/dist/templates/index.cjs.map +1 -1
- package/dist/templates/index.d.cts +45 -1
- package/dist/templates/index.d.ts +45 -1
- package/dist/templates/index.js +2 -535
- package/dist/templates/index.js.map +1 -1
- package/dist/trpc/index.cjs +1 -0
- package/dist/trpc/index.js +1 -0
- package/dist/ws/index.cjs +1 -0
- package/dist/ws/index.js +1 -0
- package/package.json +23 -8
package/dist/cli/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import '../chunk-PZ5AY32C.js';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
4
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
4
5
|
import { dirname, join, resolve } from 'path';
|
|
@@ -266,34 +267,125 @@ var __filename$1 = fileURLToPath(import.meta.url);
|
|
|
266
267
|
var __dirname$1 = dirname(__filename$1);
|
|
267
268
|
var version = "0.1.0";
|
|
268
269
|
try {
|
|
269
|
-
const pkg = JSON.parse(
|
|
270
|
+
const pkg = JSON.parse(
|
|
271
|
+
readFileSync(join(__dirname$1, "../../package.json"), "utf-8")
|
|
272
|
+
);
|
|
270
273
|
version = pkg.version;
|
|
271
274
|
} catch {
|
|
272
275
|
}
|
|
273
276
|
var program = new Command();
|
|
274
277
|
program.name("kyro").description("Kyro CMS - Astro-native headless CMS").version(version);
|
|
275
278
|
program.addCommand(createGenerateCommand());
|
|
276
|
-
program.command("
|
|
277
|
-
|
|
278
|
-
console.log(
|
|
279
|
+
var dbCommand = program.command("db").description("Database management commands");
|
|
280
|
+
dbCommand.command("generate").description("Generate migrations from schema").action(async () => {
|
|
281
|
+
console.log("\u{1F4DD} Generating migrations...");
|
|
282
|
+
const { exec } = await import('child_process');
|
|
283
|
+
exec("npx drizzle-kit generate", (error, stdout, stderr) => {
|
|
284
|
+
if (error) {
|
|
285
|
+
console.error("\u274C Generation failed:", error.message);
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
console.log(stdout);
|
|
289
|
+
});
|
|
279
290
|
});
|
|
280
|
-
|
|
281
|
-
console.log("\u{
|
|
291
|
+
dbCommand.command("migrate").description("Run database migrations").action(async () => {
|
|
292
|
+
console.log("\u{1F504} Running migrations...");
|
|
293
|
+
const { exec } = await import('child_process');
|
|
294
|
+
exec("npx drizzle-kit migrate", (error, stdout, stderr) => {
|
|
295
|
+
if (error) {
|
|
296
|
+
console.error("\u274C Migration failed:", error.message);
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
console.log(stdout);
|
|
300
|
+
});
|
|
282
301
|
});
|
|
283
|
-
|
|
284
|
-
console.log("\u{1F504}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
302
|
+
dbCommand.command("push").description("Push schema to database (development)").action(async () => {
|
|
303
|
+
console.log("\u{1F504} Pushing schema...");
|
|
304
|
+
const { exec } = await import('child_process');
|
|
305
|
+
exec("npx drizzle-kit push", (error, stdout, stderr) => {
|
|
306
|
+
if (error) {
|
|
307
|
+
console.error("\u274C Push failed:", error.message);
|
|
308
|
+
process.exit(1);
|
|
309
|
+
}
|
|
310
|
+
console.log(stdout);
|
|
311
|
+
});
|
|
288
312
|
});
|
|
289
|
-
|
|
313
|
+
dbCommand.command("seed").description("Seed database with initial data").action(async () => {
|
|
290
314
|
console.log("\u{1F331} Seeding database...");
|
|
315
|
+
const { exec } = await import('child_process');
|
|
316
|
+
exec("npx tsx src/database/drizzle/seed.ts", (error, stdout, stderr) => {
|
|
317
|
+
if (error) {
|
|
318
|
+
console.error("\u274C Seeding failed:", error.message);
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
console.log(stdout);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
dbCommand.command("studio").description("Open Drizzle Studio").action(async () => {
|
|
325
|
+
console.log("\u{1F513} Opening Drizzle Studio...");
|
|
326
|
+
const { exec } = await import('child_process');
|
|
327
|
+
exec("npx drizzle-kit studio", (error, stdout, stderr) => {
|
|
328
|
+
if (error) {
|
|
329
|
+
console.error("\u274C Studio failed:", error.message);
|
|
330
|
+
process.exit(1);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
var authCommand = program.command("auth").description("Authentication management commands");
|
|
335
|
+
authCommand.command("bootstrap").description("Create initial admin user").option("-e, --email <email>", "Admin email", process.env.KYRO_ADMIN_EMAIL).option(
|
|
336
|
+
"-p, --password <password>",
|
|
337
|
+
"Admin password",
|
|
338
|
+
process.env.KYRO_ADMIN_PASSWORD
|
|
339
|
+
).option(
|
|
340
|
+
"-r, --role <role>",
|
|
341
|
+
"Admin role",
|
|
342
|
+
process.env.KYRO_ADMIN_ROLE || "admin"
|
|
343
|
+
).action(async (options) => {
|
|
344
|
+
if (!options.email || !options.password) {
|
|
345
|
+
console.error(
|
|
346
|
+
"\u274C Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options."
|
|
347
|
+
);
|
|
348
|
+
process.exit(1);
|
|
349
|
+
}
|
|
350
|
+
console.log("\u{1F464} Creating admin user...");
|
|
351
|
+
console.log(` Email: ${options.email}`);
|
|
352
|
+
console.log(` Role: ${options.role}`);
|
|
353
|
+
try {
|
|
354
|
+
const { bootstrapAdmin } = await import('../bootstrap-Q2TWUQF3.js');
|
|
355
|
+
const { PostgresAuthAdapter } = await import('../postgres-auth-adapter-LTDUGBMB.js');
|
|
356
|
+
const { createDatabase } = await import('../database-37KXWUER.js');
|
|
357
|
+
const { client, db } = await createDatabase();
|
|
358
|
+
const adapter = new PostgresAuthAdapter({ db });
|
|
359
|
+
const result = await bootstrapAdmin({
|
|
360
|
+
authAdapter: adapter,
|
|
361
|
+
adminEmail: options.email,
|
|
362
|
+
adminPassword: options.password,
|
|
363
|
+
adminRole: options.role
|
|
364
|
+
});
|
|
365
|
+
await client.end();
|
|
366
|
+
if (result.success) {
|
|
367
|
+
console.log("\u2705 Admin user created successfully!");
|
|
368
|
+
} else {
|
|
369
|
+
console.error("\u274C Failed to create admin:", result.error);
|
|
370
|
+
process.exit(1);
|
|
371
|
+
}
|
|
372
|
+
} catch (error) {
|
|
373
|
+
console.error("\u274C Bootstrap failed:", error);
|
|
374
|
+
process.exit(1);
|
|
375
|
+
}
|
|
291
376
|
});
|
|
292
377
|
program.command("health").description("Check system health").action(async () => {
|
|
293
378
|
console.log("\u{1F3E5} System Health Check");
|
|
294
|
-
|
|
379
|
+
try {
|
|
380
|
+
const { createDatabase } = await import('../database-37KXWUER.js');
|
|
381
|
+
const { client } = await createDatabase();
|
|
382
|
+
await client.unsafe("SELECT 1");
|
|
383
|
+
console.log(" \u2705 Database: Connected");
|
|
384
|
+
await client.end();
|
|
385
|
+
} catch {
|
|
386
|
+
console.log(" \u274C Database: Not connected");
|
|
387
|
+
}
|
|
295
388
|
console.log(" \u2705 API: Running");
|
|
296
|
-
console.log(" \u2705 WebSocket: Listening");
|
|
297
389
|
});
|
|
298
390
|
program.parse();
|
|
299
391
|
if (!process.argv.slice(2).length) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["__filename","__dirname","readFileSync","join","Command"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createGenerateCommand } from './generate.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = '0.1.0';\ntry {\n const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name('kyro')\n .description('Kyro CMS - Astro-native headless CMS')\n .version(version);\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// Dev command\nprogram\n .command('dev')\n .description('Start development server')\n .option('-p, --port <port>', 'Port number', '4321')\n .action(async (options) => {\n console.log('🚀 Starting Kyro CMS development server...');\n console.log(` Port: ${options.port}`);\n // Import and start the dev server\n // This would typically start Astro dev server\n });\n\n// Build command\nprogram\n .command('build')\n .description('Build for production')\n .action(async () => {\n console.log('🔨 Building Kyro CMS for production...');\n // Build logic\n });\n\n// Migrate command\nprogram\n .command('migrate')\n .description('Run database migrations')\n .option('--dry-run', 'Show what would be migrated without executing')\n .action(async (options) => {\n console.log('🔄 Running database migrations...');\n if (options.dryRun) {\n console.log(' (Dry run mode)');\n }\n // Migration logic\n });\n\n// Seed command\nprogram\n .command('seed')\n .description('Seed the database with initial data')\n .option('-f, --file <path>', 'Seed file path')\n .action(async (options) => {\n console.log('🌱 Seeding database...');\n // Seed logic\n });\n\n// Health command\nprogram\n .command('health')\n .description('Check system health')\n .action(async () => {\n console.log('🏥 System Health Check');\n console.log(' ✅ Database: Connected');\n console.log(' ✅ API: Running');\n console.log(' ✅ WebSocket: Listening');\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["__filename","__dirname","readFileSync","join","Command"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { glob } from 'glob';\n\n// ============================================================================\n// Type Generator\n// ============================================================================\n\ninterface FieldConfig {\n name?: string;\n type: string;\n required?: boolean;\n fields?: FieldConfig[];\n relationTo?: string | string[];\n hasMany?: boolean;\n options?: Array<{ label: string; value: string }>;\n}\n\ninterface CollectionConfig {\n slug: string;\n label?: string;\n fields: FieldConfig[];\n}\n\nfunction fieldToType(field: FieldConfig): string {\n switch (field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'color':\n case 'code':\n case 'markdown':\n case 'date':\n case 'richtext':\n case 'json':\n return field.hasMany ? 'string[]' : 'string';\n case 'number':\n return field.hasMany ? 'number[]' : 'number';\n case 'checkbox':\n return 'boolean';\n case 'select':\n case 'radio':\n if (field.options) {\n const values = field.options.map(o => `'${o.value}'`).join(' | ');\n return field.hasMany ? `(${values})[]` : values;\n }\n return field.hasMany ? 'string[]' : 'string';\n case 'relationship':\n if (Array.isArray(field.relationTo)) {\n const types = field.relationTo.map(r => `${capitalize(r)} | string`).join(' | ');\n return field.hasMany ? `(${types})[]` : `(${types})`;\n }\n const relTo = field.relationTo || 'unknown';\n return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;\n case 'upload':\n return field.hasMany ? '(Media | string)[]' : 'Media | string';\n case 'array':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `Array<{\\n${itemFields}\\n }>`;\n }\n return 'Record<string, any>[]';\n case 'group':\n if (field.fields && field.fields.length > 0) {\n const itemFields = field.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n }).join('\\n');\n return `{\\n${itemFields}\\n}`;\n }\n return 'Record<string, any>';\n case 'blocks':\n return 'Block[]';\n default:\n return 'any';\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction collectionToInterface(collection: CollectionConfig): string {\n const name = capitalize(collection.slug);\n const fields = collection.fields.filter(f => f.name).map(f => {\n const type = fieldToType(f);\n return ` ${f.name}${f.required ? '' : '?'}: ${type};`;\n });\n\n // Add default fields\n fields.unshift(' id: string;');\n fields.push(' createdAt: string;');\n fields.push(' updatedAt: string;');\n\n return `export interface ${name} {\\n${fields.join('\\n')}\\n}`;\n}\n\nfunction generateTypes(collections: CollectionConfig[]): string {\n const interfaces = collections.map(c => collectionToInterface(c));\n \n const header = `// ============================================================================\n// Auto-generated by kyro generate\n// ============================================================================\n\nimport type { RichTextBlock } from '@kyro-cms/core';\n\nexport interface Media {\n id: string;\n url: string;\n filename: string;\n mimeType: string;\n filesize: number;\n width?: number;\n height?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Block {\n blockType: string;\n [key: string]: any;\n}\n\n`;\n\n const body = interfaces.join('\\n\\n');\n\n const footer = `\n\n// ============================================================================\n// Query Types\n// ============================================================================\n\nexport interface KyroWhereClause {\n [field: string]: {\n equals?: any;\n not_equals?: any;\n in?: any[];\n not_in?: any[];\n greater_than?: number;\n greater_than_equal?: number;\n less_than?: number;\n less_than_equal?: number;\n like?: string;\n exists?: boolean;\n };\n}\n\nexport interface KyroFindArgs {\n where?: KyroWhereClause;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n}\n\nexport interface KyroFindResult<T> {\n docs: T[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n}\n\nexport interface KyroCreateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroUpdateResult<T> {\n doc: T;\n message?: string;\n}\n\nexport interface KyroDeleteResult<T> {\n doc: T;\n message: string;\n}\n\n// ============================================================================\n// Collection Map\n// ============================================================================\n\nexport interface KyroCollections {\n${collections.map(c => ` ${c.slug}: ${capitalize(c.slug)};`).join('\\n')}\n}\n\n// ============================================================================\n// Typed Client\n// ============================================================================\n\nexport interface KyroTypedClient<C extends keyof KyroCollections> {\n find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;\n findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;\n create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;\n update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;\n delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;\n count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;\n}\n\nexport interface KyroClient {\n${collections.map(c => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join('\\n')}\n}\n\nexport function createClient(config: { url: string; token?: string }): KyroClient {\n // Client implementation would be here\n throw new Error('Not implemented');\n}\n`;\n\n return header + body + footer;\n}\n\n// ============================================================================\n// CLI Command\n// ============================================================================\n\nexport function createGenerateCommand(): Command {\n const generate = new Command('generate')\n .description('Generate TypeScript types from collection configs')\n .option('-c, --config <path>', 'Path to config file or directory', './src/kyro')\n .option('-o, --output <path>', 'Output file path', './src/types/kyro.d.ts')\n .option('-w, --watch', 'Watch for changes and regenerate')\n .action(async (options) => {\n const configPath = resolve(options.config);\n const outputPath = resolve(options.output);\n\n console.log('🔧 Generating types from:', configPath);\n\n try {\n // Find all config files\n const configFiles = await glob(`${configPath}/**/*.{ts,js}`);\n \n if (configFiles.length === 0) {\n console.error('❌ No config files found at:', configPath);\n process.exit(1);\n }\n\n // Parse configs\n const collections: CollectionConfig[] = [];\n \n for (const file of configFiles) {\n try {\n // Dynamic import of config file\n const mod = await import(file);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n collections.push(...(configs as CollectionConfig[]));\n } catch (error) {\n console.warn(`⚠️ Could not parse: ${file}`);\n }\n }\n\n if (collections.length === 0) {\n console.error('❌ No valid collection configs found');\n process.exit(1);\n }\n\n console.log(`📦 Found ${collections.length} collection(s):`);\n collections.forEach(c => console.log(` - ${c.slug}`));\n\n // Generate types\n const types = generateTypes(collections);\n\n // Write output\n const outputDir = join(outputPath, '..');\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n writeFileSync(outputPath, types);\n console.log(`✅ Types generated at: ${outputPath}`);\n\n // Watch mode\n if (options.watch) {\n console.log('\\n👁️ Watching for changes...');\n const { watch } = await import('fs');\n watch(configPath, { recursive: true }, async (eventType, filename) => {\n console.log(`\\n🔄 File changed: ${filename}`);\n // Regenerate\n const newCollections: CollectionConfig[] = [];\n for (const file of configFiles) {\n try {\n const mod = await import(file + `?t=${Date.now()}`);\n const configs = Object.values(mod).filter((v: any) => v && v.slug && v.fields);\n newCollections.push(...(configs as CollectionConfig[]));\n } catch {}\n }\n const newTypes = generateTypes(newCollections);\n writeFileSync(outputPath, newTypes);\n console.log('✅ Types regenerated');\n });\n }\n } catch (error: any) {\n console.error('❌ Error:', error.message);\n process.exit(1);\n }\n });\n\n return generate;\n}\n\nexport default createGenerateCommand;\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { join, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { createGenerateCommand } from \"./generate.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(\n readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"),\n );\n version = pkg.version;\n} catch {}\n\nconst program = new Command();\n\nprogram\n .name(\"kyro\")\n .description(\"Kyro CMS - Astro-native headless CMS\")\n .version(version);\n\n// Register commands\nprogram.addCommand(createGenerateCommand());\n\n// DB command group\nconst dbCommand = program\n .command(\"db\")\n .description(\"Database management commands\");\n\n// DB Generate\ndbCommand\n .command(\"generate\")\n .description(\"Generate migrations from schema\")\n .action(async () => {\n console.log(\"📝 Generating migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit generate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Generation failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Migrate\ndbCommand\n .command(\"migrate\")\n .description(\"Run database migrations\")\n .action(async () => {\n console.log(\"🔄 Running migrations...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit migrate\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Migration failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Push\ndbCommand\n .command(\"push\")\n .description(\"Push schema to database (development)\")\n .action(async () => {\n console.log(\"🔄 Pushing schema...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit push\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Push failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Seed\ndbCommand\n .command(\"seed\")\n .description(\"Seed database with initial data\")\n .action(async () => {\n console.log(\"🌱 Seeding database...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx tsx src/database/drizzle/seed.ts\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Seeding failed:\", error.message);\n process.exit(1);\n }\n console.log(stdout);\n });\n });\n\n// DB Studio\ndbCommand\n .command(\"studio\")\n .description(\"Open Drizzle Studio\")\n .action(async () => {\n console.log(\"🔓 Opening Drizzle Studio...\");\n const { exec } = await import(\"child_process\");\n exec(\"npx drizzle-kit studio\", (error, stdout, stderr) => {\n if (error) {\n console.error(\"❌ Studio failed:\", error.message);\n process.exit(1);\n }\n });\n });\n\n// Auth command group\nconst authCommand = program\n .command(\"auth\")\n .description(\"Authentication management commands\");\n\n// Bootstrap admin\nauthCommand\n .command(\"bootstrap\")\n .description(\"Create initial admin user\")\n .option(\"-e, --email <email>\", \"Admin email\", process.env.KYRO_ADMIN_EMAIL)\n .option(\n \"-p, --password <password>\",\n \"Admin password\",\n process.env.KYRO_ADMIN_PASSWORD,\n )\n .option(\n \"-r, --role <role>\",\n \"Admin role\",\n process.env.KYRO_ADMIN_ROLE || \"admin\",\n )\n .action(async (options) => {\n if (!options.email || !options.password) {\n console.error(\n \"❌ Email and password are required. Set KYRO_ADMIN_EMAIL and KYRO_ADMIN_PASSWORD env vars or use -e and -p options.\",\n );\n process.exit(1);\n }\n\n console.log(\"👤 Creating admin user...\");\n console.log(` Email: ${options.email}`);\n console.log(` Role: ${options.role}`);\n\n try {\n const { bootstrapAdmin } = await import(\"../auth/bootstrap.js\");\n const { PostgresAuthAdapter } =\n await import(\"../database/drizzle/postgres-auth-adapter.js\");\n const { createDatabase } =\n await import(\"../database/drizzle/database.js\");\n\n const { client, db } = await createDatabase();\n const adapter = new PostgresAuthAdapter({ db });\n\n const result = await bootstrapAdmin({\n authAdapter: adapter,\n adminEmail: options.email,\n adminPassword: options.password,\n adminRole: options.role,\n });\n\n await client.end();\n\n if (result.success) {\n console.log(\"✅ Admin user created successfully!\");\n } else {\n console.error(\"❌ Failed to create admin:\", result.error);\n process.exit(1);\n }\n } catch (error) {\n console.error(\"❌ Bootstrap failed:\", error);\n process.exit(1);\n }\n });\n\n// Health command\nprogram\n .command(\"health\")\n .description(\"Check system health\")\n .action(async () => {\n console.log(\"🏥 System Health Check\");\n\n try {\n const { createDatabase } =\n await import(\"../database/drizzle/database.js\");\n const { client } = await createDatabase();\n await client.unsafe(\"SELECT 1\");\n console.log(\" ✅ Database: Connected\");\n await client.end();\n } catch {\n console.log(\" ❌ Database: Not connected\");\n }\n\n console.log(\" ✅ API: Running\");\n });\n\n// Parse arguments\nprogram.parse();\n\n// Show help if no command\nif (!process.argv.slice(2).length) {\n program.outputHelp();\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"database-37KXWUER.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkU4CHJTWX_cjs = require('./chunk-U4CHJTWX.cjs');
|
|
4
|
+
require('./chunk-5AOILNGY.cjs');
|
|
5
|
+
require('./chunk-Q7SFCCGT.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "createDatabase", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkU4CHJTWX_cjs.createDatabase; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "runMigrations", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunkU4CHJTWX_cjs.runMigrations; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "seedDefaultRoles", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return chunkU4CHJTWX_cjs.seedDefaultRoles; }
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=database-LJKD3HE4.cjs.map
|
|
22
|
+
//# sourceMappingURL=database-LJKD3HE4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"database-LJKD3HE4.cjs"}
|
package/dist/drizzle/index.cjs
CHANGED
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkV3B25QOK_cjs = require('../chunk-V3B25QOK.cjs');
|
|
4
|
+
var chunkKWTKEBHM_cjs = require('../chunk-KWTKEBHM.cjs');
|
|
5
|
+
var chunkU4CHJTWX_cjs = require('../chunk-U4CHJTWX.cjs');
|
|
6
|
+
require('../chunk-5AOILNGY.cjs');
|
|
4
7
|
require('../chunk-RLTG4YZM.cjs');
|
|
8
|
+
require('../chunk-Q7SFCCGT.cjs');
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
|
|
8
12
|
Object.defineProperty(exports, "DrizzleAdapter", {
|
|
9
13
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkV3B25QOK_cjs.DrizzleAdapter; }
|
|
11
15
|
});
|
|
12
16
|
Object.defineProperty(exports, "collectionToDrizzleSchema", {
|
|
13
17
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkV3B25QOK_cjs.collectionToDrizzleSchema; }
|
|
15
19
|
});
|
|
16
20
|
Object.defineProperty(exports, "createDrizzleAdapter", {
|
|
17
21
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkV3B25QOK_cjs.createDrizzleAdapter; }
|
|
19
23
|
});
|
|
20
24
|
Object.defineProperty(exports, "fieldToDrizzleType", {
|
|
21
25
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkV3B25QOK_cjs.fieldToDrizzleType; }
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports, "PostgresAuthAdapter", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return chunkKWTKEBHM_cjs.PostgresAuthAdapter; }
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "createDatabase", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () { return chunkU4CHJTWX_cjs.createDatabase; }
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "runMigrations", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () { return chunkU4CHJTWX_cjs.runMigrations; }
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(exports, "seedDefaultRoles", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function () { return chunkU4CHJTWX_cjs.seedDefaultRoles; }
|
|
23
43
|
});
|
|
24
44
|
//# sourceMappingURL=index.cjs.map
|
|
25
45
|
//# sourceMappingURL=index.cjs.map
|
package/dist/drizzle/index.d.cts
CHANGED
|
@@ -1,49 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare class DrizzleAdapter extends AbstractBaseAdapter {
|
|
7
|
-
private client;
|
|
8
|
-
private schema;
|
|
9
|
-
private dialect;
|
|
10
|
-
constructor(options: {
|
|
11
|
-
type: 'postgres' | 'mysql' | 'sqlite';
|
|
12
|
-
client: any;
|
|
13
|
-
schema?: any;
|
|
14
|
-
});
|
|
15
|
-
connect(): Promise<void>;
|
|
16
|
-
disconnect(): Promise<void>;
|
|
17
|
-
find<T>(args: FindArgs): Promise<FindResult<T>>;
|
|
18
|
-
findByID<T>(args: FindByIDArgs): Promise<T | null>;
|
|
19
|
-
create<T>(args: CreateArgs): Promise<T>;
|
|
20
|
-
update<T>(args: UpdateArgs): Promise<T>;
|
|
21
|
-
delete<T>(args: DeleteArgs): Promise<T>;
|
|
22
|
-
count(args: {
|
|
23
|
-
collection: string;
|
|
24
|
-
where?: Record<string, any>;
|
|
25
|
-
tenantID?: string;
|
|
26
|
-
}): Promise<number>;
|
|
27
|
-
findOne(args: {
|
|
28
|
-
collection: string;
|
|
29
|
-
where: Record<string, any>;
|
|
30
|
-
tenantID?: string;
|
|
31
|
-
}): Promise<any>;
|
|
32
|
-
findVersions(args: FindArgs): Promise<FindResult<any>>;
|
|
33
|
-
findVersionByID(args: FindByIDArgs): Promise<any>;
|
|
34
|
-
createVersion(args: CreateArgs): Promise<any>;
|
|
35
|
-
deleteVersions(args: {
|
|
36
|
-
collection: string;
|
|
37
|
-
where: Record<string, any>;
|
|
38
|
-
}): Promise<void>;
|
|
39
|
-
private getTable;
|
|
40
|
-
private buildWhereClause;
|
|
41
|
-
private processResult;
|
|
42
|
-
}
|
|
43
|
-
declare function createDrizzleAdapter(options: {
|
|
44
|
-
type: 'postgres' | 'mysql' | 'sqlite';
|
|
45
|
-
client: any;
|
|
46
|
-
schema?: any;
|
|
47
|
-
}): DrizzleAdapter;
|
|
48
|
-
|
|
49
|
-
export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType };
|
|
1
|
+
export { D as DrizzleAdapter, P as PostgresAuthAdapter, d as collectionToDrizzleSchema, e as createDatabase, f as createDrizzleAdapter, g as fieldToDrizzleType, r as runMigrations, s as seedDefaultRoles } from '../index-CzkEHKqu.cjs';
|
|
2
|
+
import '../base-DlhVlwnN.cjs';
|
|
3
|
+
import '../types-BGM5MV_K.cjs';
|
|
4
|
+
import 'drizzle-orm/postgres-js';
|
|
5
|
+
import 'postgres';
|
package/dist/drizzle/index.d.ts
CHANGED
|
@@ -1,49 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare class DrizzleAdapter extends AbstractBaseAdapter {
|
|
7
|
-
private client;
|
|
8
|
-
private schema;
|
|
9
|
-
private dialect;
|
|
10
|
-
constructor(options: {
|
|
11
|
-
type: 'postgres' | 'mysql' | 'sqlite';
|
|
12
|
-
client: any;
|
|
13
|
-
schema?: any;
|
|
14
|
-
});
|
|
15
|
-
connect(): Promise<void>;
|
|
16
|
-
disconnect(): Promise<void>;
|
|
17
|
-
find<T>(args: FindArgs): Promise<FindResult<T>>;
|
|
18
|
-
findByID<T>(args: FindByIDArgs): Promise<T | null>;
|
|
19
|
-
create<T>(args: CreateArgs): Promise<T>;
|
|
20
|
-
update<T>(args: UpdateArgs): Promise<T>;
|
|
21
|
-
delete<T>(args: DeleteArgs): Promise<T>;
|
|
22
|
-
count(args: {
|
|
23
|
-
collection: string;
|
|
24
|
-
where?: Record<string, any>;
|
|
25
|
-
tenantID?: string;
|
|
26
|
-
}): Promise<number>;
|
|
27
|
-
findOne(args: {
|
|
28
|
-
collection: string;
|
|
29
|
-
where: Record<string, any>;
|
|
30
|
-
tenantID?: string;
|
|
31
|
-
}): Promise<any>;
|
|
32
|
-
findVersions(args: FindArgs): Promise<FindResult<any>>;
|
|
33
|
-
findVersionByID(args: FindByIDArgs): Promise<any>;
|
|
34
|
-
createVersion(args: CreateArgs): Promise<any>;
|
|
35
|
-
deleteVersions(args: {
|
|
36
|
-
collection: string;
|
|
37
|
-
where: Record<string, any>;
|
|
38
|
-
}): Promise<void>;
|
|
39
|
-
private getTable;
|
|
40
|
-
private buildWhereClause;
|
|
41
|
-
private processResult;
|
|
42
|
-
}
|
|
43
|
-
declare function createDrizzleAdapter(options: {
|
|
44
|
-
type: 'postgres' | 'mysql' | 'sqlite';
|
|
45
|
-
client: any;
|
|
46
|
-
schema?: any;
|
|
47
|
-
}): DrizzleAdapter;
|
|
48
|
-
|
|
49
|
-
export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType };
|
|
1
|
+
export { D as DrizzleAdapter, P as PostgresAuthAdapter, d as collectionToDrizzleSchema, e as createDatabase, f as createDrizzleAdapter, g as fieldToDrizzleType, r as runMigrations, s as seedDefaultRoles } from '../index-BVFlb7uU.js';
|
|
2
|
+
import '../base-CQkFzqQl.js';
|
|
3
|
+
import '../types-BGM5MV_K.js';
|
|
4
|
+
import 'drizzle-orm/postgres-js';
|
|
5
|
+
import 'postgres';
|
package/dist/drizzle/index.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType } from '../chunk-
|
|
1
|
+
export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType } from '../chunk-EINVJPFM.js';
|
|
2
|
+
export { PostgresAuthAdapter } from '../chunk-M4JFHQ5J.js';
|
|
3
|
+
export { createDatabase, runMigrations, seedDefaultRoles } from '../chunk-XLMVCGXA.js';
|
|
4
|
+
import '../chunk-KA3UOIFC.js';
|
|
2
5
|
import '../chunk-BXMWDUED.js';
|
|
6
|
+
import '../chunk-PZ5AY32C.js';
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
|
4
8
|
//# sourceMappingURL=index.js.map
|
package/dist/graphql/index.cjs
CHANGED
package/dist/graphql/index.js
CHANGED