@kyro-cms/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +241 -0
  2. package/dist/base-CQkFzqQl.d.ts +62 -0
  3. package/dist/base-DlhVlwnN.d.cts +62 -0
  4. package/dist/chunk-3Q3FS5J4.cjs +273 -0
  5. package/dist/chunk-3Q3FS5J4.cjs.map +1 -0
  6. package/dist/chunk-3TPQ2BU6.js +423 -0
  7. package/dist/chunk-3TPQ2BU6.js.map +1 -0
  8. package/dist/chunk-3VZCX4DF.cjs +384 -0
  9. package/dist/chunk-3VZCX4DF.cjs.map +1 -0
  10. package/dist/chunk-BXMWDUED.js +115 -0
  11. package/dist/chunk-BXMWDUED.js.map +1 -0
  12. package/dist/chunk-DIC236EW.js +290 -0
  13. package/dist/chunk-DIC236EW.js.map +1 -0
  14. package/dist/chunk-DKSMFC3L.js +268 -0
  15. package/dist/chunk-DKSMFC3L.js.map +1 -0
  16. package/dist/chunk-DVD5P72E.cjs +428 -0
  17. package/dist/chunk-DVD5P72E.cjs.map +1 -0
  18. package/dist/chunk-HT6VE4NW.cjs +293 -0
  19. package/dist/chunk-HT6VE4NW.cjs.map +1 -0
  20. package/dist/chunk-K7QF2QCM.cjs +311 -0
  21. package/dist/chunk-K7QF2QCM.cjs.map +1 -0
  22. package/dist/chunk-OG3KX56O.js +308 -0
  23. package/dist/chunk-OG3KX56O.js.map +1 -0
  24. package/dist/chunk-R3XIBBAW.cjs +34 -0
  25. package/dist/chunk-R3XIBBAW.cjs.map +1 -0
  26. package/dist/chunk-RLTG4YZM.cjs +117 -0
  27. package/dist/chunk-RLTG4YZM.cjs.map +1 -0
  28. package/dist/chunk-SDMNUYVU.js +30 -0
  29. package/dist/chunk-SDMNUYVU.js.map +1 -0
  30. package/dist/chunk-UEG7KMKC.cjs +228 -0
  31. package/dist/chunk-UEG7KMKC.cjs.map +1 -0
  32. package/dist/chunk-UEYC46RL.js +374 -0
  33. package/dist/chunk-UEYC46RL.js.map +1 -0
  34. package/dist/chunk-YPAFJ7EV.js +225 -0
  35. package/dist/chunk-YPAFJ7EV.js.map +1 -0
  36. package/dist/cli/index.cjs +306 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +1 -0
  39. package/dist/cli/index.d.ts +1 -0
  40. package/dist/cli/index.js +303 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/drizzle/index.cjs +25 -0
  43. package/dist/drizzle/index.cjs.map +1 -0
  44. package/dist/drizzle/index.d.cts +49 -0
  45. package/dist/drizzle/index.d.ts +49 -0
  46. package/dist/drizzle/index.js +4 -0
  47. package/dist/drizzle/index.js.map +1 -0
  48. package/dist/graphql/index.cjs +16 -0
  49. package/dist/graphql/index.cjs.map +1 -0
  50. package/dist/graphql/index.d.cts +20 -0
  51. package/dist/graphql/index.d.ts +20 -0
  52. package/dist/graphql/index.js +3 -0
  53. package/dist/graphql/index.js.map +1 -0
  54. package/dist/index-4fJKLFK2.d.ts +63 -0
  55. package/dist/index-DI0DRPNv.d.cts +63 -0
  56. package/dist/index.cjs +2506 -0
  57. package/dist/index.cjs.map +1 -0
  58. package/dist/index.d.cts +525 -0
  59. package/dist/index.d.ts +525 -0
  60. package/dist/index.js +2334 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/mongodb/index.cjs +17 -0
  63. package/dist/mongodb/index.cjs.map +1 -0
  64. package/dist/mongodb/index.d.cts +49 -0
  65. package/dist/mongodb/index.d.ts +49 -0
  66. package/dist/mongodb/index.js +4 -0
  67. package/dist/mongodb/index.js.map +1 -0
  68. package/dist/rest/index.cjs +17 -0
  69. package/dist/rest/index.cjs.map +1 -0
  70. package/dist/rest/index.d.cts +28 -0
  71. package/dist/rest/index.d.ts +28 -0
  72. package/dist/rest/index.js +4 -0
  73. package/dist/rest/index.js.map +1 -0
  74. package/dist/trpc/index.cjs +45 -0
  75. package/dist/trpc/index.cjs.map +1 -0
  76. package/dist/trpc/index.d.cts +130 -0
  77. package/dist/trpc/index.d.ts +130 -0
  78. package/dist/trpc/index.js +4 -0
  79. package/dist/trpc/index.js.map +1 -0
  80. package/dist/types-BGM5MV_K.d.cts +589 -0
  81. package/dist/types-BGM5MV_K.d.ts +589 -0
  82. package/dist/ws/index.cjs +24 -0
  83. package/dist/ws/index.cjs.map +1 -0
  84. package/dist/ws/index.d.cts +88 -0
  85. package/dist/ws/index.d.ts +88 -0
  86. package/dist/ws/index.js +3 -0
  87. package/dist/ws/index.js.map +1 -0
  88. package/package.json +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/generate.ts","../../src/cli/index.ts"],"names":["Command","resolve","glob","join","existsSync","mkdirSync","writeFileSync","__filename","fileURLToPath","__dirname","dirname","readFileSync"],"mappings":"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","file":"index.cjs","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"]}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,303 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
4
+ import { dirname, join, resolve } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { glob } from 'glob';
7
+
8
+ function fieldToType(field) {
9
+ switch (field.type) {
10
+ case "text":
11
+ case "email":
12
+ case "password":
13
+ case "textarea":
14
+ case "color":
15
+ case "code":
16
+ case "markdown":
17
+ case "date":
18
+ case "richtext":
19
+ case "json":
20
+ return field.hasMany ? "string[]" : "string";
21
+ case "number":
22
+ return field.hasMany ? "number[]" : "number";
23
+ case "checkbox":
24
+ return "boolean";
25
+ case "select":
26
+ case "radio":
27
+ if (field.options) {
28
+ const values = field.options.map((o) => `'${o.value}'`).join(" | ");
29
+ return field.hasMany ? `(${values})[]` : values;
30
+ }
31
+ return field.hasMany ? "string[]" : "string";
32
+ case "relationship":
33
+ if (Array.isArray(field.relationTo)) {
34
+ const types = field.relationTo.map((r) => `${capitalize(r)} | string`).join(" | ");
35
+ return field.hasMany ? `(${types})[]` : `(${types})`;
36
+ }
37
+ const relTo = field.relationTo || "unknown";
38
+ return field.hasMany ? `(${capitalize(relTo)} | string)[]` : `${capitalize(relTo)} | string`;
39
+ case "upload":
40
+ return field.hasMany ? "(Media | string)[]" : "Media | string";
41
+ case "array":
42
+ if (field.fields && field.fields.length > 0) {
43
+ const itemFields = field.fields.filter((f) => f.name).map((f) => {
44
+ const type = fieldToType(f);
45
+ return ` ${f.name}${f.required ? "" : "?"}: ${type};`;
46
+ }).join("\n");
47
+ return `Array<{
48
+ ${itemFields}
49
+ }>`;
50
+ }
51
+ return "Record<string, any>[]";
52
+ case "group":
53
+ if (field.fields && field.fields.length > 0) {
54
+ const itemFields = field.fields.filter((f) => f.name).map((f) => {
55
+ const type = fieldToType(f);
56
+ return ` ${f.name}${f.required ? "" : "?"}: ${type};`;
57
+ }).join("\n");
58
+ return `{
59
+ ${itemFields}
60
+ }`;
61
+ }
62
+ return "Record<string, any>";
63
+ case "blocks":
64
+ return "Block[]";
65
+ default:
66
+ return "any";
67
+ }
68
+ }
69
+ function capitalize(str) {
70
+ return str.charAt(0).toUpperCase() + str.slice(1).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
71
+ }
72
+ function collectionToInterface(collection) {
73
+ const name = capitalize(collection.slug);
74
+ const fields = collection.fields.filter((f) => f.name).map((f) => {
75
+ const type = fieldToType(f);
76
+ return ` ${f.name}${f.required ? "" : "?"}: ${type};`;
77
+ });
78
+ fields.unshift(" id: string;");
79
+ fields.push(" createdAt: string;");
80
+ fields.push(" updatedAt: string;");
81
+ return `export interface ${name} {
82
+ ${fields.join("\n")}
83
+ }`;
84
+ }
85
+ function generateTypes(collections) {
86
+ const interfaces = collections.map((c) => collectionToInterface(c));
87
+ const header = `// ============================================================================
88
+ // Auto-generated by kyro generate
89
+ // ============================================================================
90
+
91
+ import type { RichTextBlock } from '@kyro-cms/core';
92
+
93
+ export interface Media {
94
+ id: string;
95
+ url: string;
96
+ filename: string;
97
+ mimeType: string;
98
+ filesize: number;
99
+ width?: number;
100
+ height?: number;
101
+ createdAt: string;
102
+ updatedAt: string;
103
+ }
104
+
105
+ export interface Block {
106
+ blockType: string;
107
+ [key: string]: any;
108
+ }
109
+
110
+ `;
111
+ const body = interfaces.join("\n\n");
112
+ const footer = `
113
+
114
+ // ============================================================================
115
+ // Query Types
116
+ // ============================================================================
117
+
118
+ export interface KyroWhereClause {
119
+ [field: string]: {
120
+ equals?: any;
121
+ not_equals?: any;
122
+ in?: any[];
123
+ not_in?: any[];
124
+ greater_than?: number;
125
+ greater_than_equal?: number;
126
+ less_than?: number;
127
+ less_than_equal?: number;
128
+ like?: string;
129
+ exists?: boolean;
130
+ };
131
+ }
132
+
133
+ export interface KyroFindArgs {
134
+ where?: KyroWhereClause;
135
+ sort?: string;
136
+ limit?: number;
137
+ page?: number;
138
+ depth?: number;
139
+ select?: string[];
140
+ }
141
+
142
+ export interface KyroFindResult<T> {
143
+ docs: T[];
144
+ totalDocs: number;
145
+ limit: number;
146
+ totalPages: number;
147
+ page: number;
148
+ pagingCounter: number;
149
+ hasPrevPage: boolean;
150
+ hasNextPage: boolean;
151
+ prevPage: number | null;
152
+ nextPage: number | null;
153
+ }
154
+
155
+ export interface KyroCreateResult<T> {
156
+ doc: T;
157
+ message?: string;
158
+ }
159
+
160
+ export interface KyroUpdateResult<T> {
161
+ doc: T;
162
+ message?: string;
163
+ }
164
+
165
+ export interface KyroDeleteResult<T> {
166
+ doc: T;
167
+ message: string;
168
+ }
169
+
170
+ // ============================================================================
171
+ // Collection Map
172
+ // ============================================================================
173
+
174
+ export interface KyroCollections {
175
+ ${collections.map((c) => ` ${c.slug}: ${capitalize(c.slug)};`).join("\n")}
176
+ }
177
+
178
+ // ============================================================================
179
+ // Typed Client
180
+ // ============================================================================
181
+
182
+ export interface KyroTypedClient<C extends keyof KyroCollections> {
183
+ find: (args?: KyroFindArgs) => Promise<KyroFindResult<KyroCollections[C]>>;
184
+ findByID: (id: string, args?: { depth?: number; select?: string[] }) => Promise<KyroCollections[C]>;
185
+ create: (data: Partial<KyroCollections[C]>) => Promise<KyroCreateResult<KyroCollections[C]>>;
186
+ update: (id: string, data: Partial<KyroCollections[C]>) => Promise<KyroUpdateResult<KyroCollections[C]>>;
187
+ delete: (id: string) => Promise<KyroDeleteResult<KyroCollections[C]>>;
188
+ count: (args?: { where?: KyroWhereClause }) => Promise<{ totalDocs: number }>;
189
+ }
190
+
191
+ export interface KyroClient {
192
+ ${collections.map((c) => ` ${c.slug}: KyroTypedClient<'${c.slug}'>;`).join("\n")}
193
+ }
194
+
195
+ export function createClient(config: { url: string; token?: string }): KyroClient {
196
+ // Client implementation would be here
197
+ throw new Error('Not implemented');
198
+ }
199
+ `;
200
+ return header + body + footer;
201
+ }
202
+ function createGenerateCommand() {
203
+ const generate = new Command("generate").description("Generate TypeScript types from collection configs").option("-c, --config <path>", "Path to config file or directory", "./src/kyro").option("-o, --output <path>", "Output file path", "./src/types/kyro.d.ts").option("-w, --watch", "Watch for changes and regenerate").action(async (options) => {
204
+ const configPath = resolve(options.config);
205
+ const outputPath = resolve(options.output);
206
+ console.log("\u{1F527} Generating types from:", configPath);
207
+ try {
208
+ const configFiles = await glob(`${configPath}/**/*.{ts,js}`);
209
+ if (configFiles.length === 0) {
210
+ console.error("\u274C No config files found at:", configPath);
211
+ process.exit(1);
212
+ }
213
+ const collections = [];
214
+ for (const file of configFiles) {
215
+ try {
216
+ const mod = await import(file);
217
+ const configs = Object.values(mod).filter((v) => v && v.slug && v.fields);
218
+ collections.push(...configs);
219
+ } catch (error) {
220
+ console.warn(`\u26A0\uFE0F Could not parse: ${file}`);
221
+ }
222
+ }
223
+ if (collections.length === 0) {
224
+ console.error("\u274C No valid collection configs found");
225
+ process.exit(1);
226
+ }
227
+ console.log(`\u{1F4E6} Found ${collections.length} collection(s):`);
228
+ collections.forEach((c) => console.log(` - ${c.slug}`));
229
+ const types = generateTypes(collections);
230
+ const outputDir = join(outputPath, "..");
231
+ if (!existsSync(outputDir)) {
232
+ mkdirSync(outputDir, { recursive: true });
233
+ }
234
+ writeFileSync(outputPath, types);
235
+ console.log(`\u2705 Types generated at: ${outputPath}`);
236
+ if (options.watch) {
237
+ console.log("\n\u{1F441}\uFE0F Watching for changes...");
238
+ const { watch } = await import('fs');
239
+ watch(configPath, { recursive: true }, async (eventType, filename) => {
240
+ console.log(`
241
+ \u{1F504} File changed: ${filename}`);
242
+ const newCollections = [];
243
+ for (const file of configFiles) {
244
+ try {
245
+ const mod = await import(file + `?t=${Date.now()}`);
246
+ const configs = Object.values(mod).filter((v) => v && v.slug && v.fields);
247
+ newCollections.push(...configs);
248
+ } catch {
249
+ }
250
+ }
251
+ const newTypes = generateTypes(newCollections);
252
+ writeFileSync(outputPath, newTypes);
253
+ console.log("\u2705 Types regenerated");
254
+ });
255
+ }
256
+ } catch (error) {
257
+ console.error("\u274C Error:", error.message);
258
+ process.exit(1);
259
+ }
260
+ });
261
+ return generate;
262
+ }
263
+
264
+ // src/cli/index.ts
265
+ var __filename$1 = fileURLToPath(import.meta.url);
266
+ var __dirname$1 = dirname(__filename$1);
267
+ var version = "0.1.0";
268
+ try {
269
+ const pkg = JSON.parse(readFileSync(join(__dirname$1, "../../package.json"), "utf-8"));
270
+ version = pkg.version;
271
+ } catch {
272
+ }
273
+ var program = new Command();
274
+ program.name("kyro").description("Kyro CMS - Astro-native headless CMS").version(version);
275
+ program.addCommand(createGenerateCommand());
276
+ program.command("dev").description("Start development server").option("-p, --port <port>", "Port number", "4321").action(async (options) => {
277
+ console.log("\u{1F680} Starting Kyro CMS development server...");
278
+ console.log(` Port: ${options.port}`);
279
+ });
280
+ program.command("build").description("Build for production").action(async () => {
281
+ console.log("\u{1F528} Building Kyro CMS for production...");
282
+ });
283
+ program.command("migrate").description("Run database migrations").option("--dry-run", "Show what would be migrated without executing").action(async (options) => {
284
+ console.log("\u{1F504} Running database migrations...");
285
+ if (options.dryRun) {
286
+ console.log(" (Dry run mode)");
287
+ }
288
+ });
289
+ program.command("seed").description("Seed the database with initial data").option("-f, --file <path>", "Seed file path").action(async (options) => {
290
+ console.log("\u{1F331} Seeding database...");
291
+ });
292
+ program.command("health").description("Check system health").action(async () => {
293
+ console.log("\u{1F3E5} System Health Check");
294
+ console.log(" \u2705 Database: Connected");
295
+ console.log(" \u2705 API: Running");
296
+ console.log(" \u2705 WebSocket: Listening");
297
+ });
298
+ program.parse();
299
+ if (!process.argv.slice(2).length) {
300
+ program.outputHelp();
301
+ }
302
+ //# sourceMappingURL=index.js.map
303
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var chunk3Q3FS5J4_cjs = require('../chunk-3Q3FS5J4.cjs');
4
+ require('../chunk-RLTG4YZM.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "DrizzleAdapter", {
9
+ enumerable: true,
10
+ get: function () { return chunk3Q3FS5J4_cjs.DrizzleAdapter; }
11
+ });
12
+ Object.defineProperty(exports, "collectionToDrizzleSchema", {
13
+ enumerable: true,
14
+ get: function () { return chunk3Q3FS5J4_cjs.collectionToDrizzleSchema; }
15
+ });
16
+ Object.defineProperty(exports, "createDrizzleAdapter", {
17
+ enumerable: true,
18
+ get: function () { return chunk3Q3FS5J4_cjs.createDrizzleAdapter; }
19
+ });
20
+ Object.defineProperty(exports, "fieldToDrizzleType", {
21
+ enumerable: true,
22
+ get: function () { return chunk3Q3FS5J4_cjs.fieldToDrizzleType; }
23
+ });
24
+ //# sourceMappingURL=index.cjs.map
25
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,49 @@
1
+ import { A as AbstractBaseAdapter } from '../base-DlhVlwnN.cjs';
2
+ import { a as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, U as UpdateArgs, D as DeleteArgs, C as CollectionConfig, F as Field } from '../types-BGM5MV_K.cjs';
3
+
4
+ declare function fieldToDrizzleType(field: Field, dialect?: 'postgres' | 'mysql' | 'sqlite'): string;
5
+ declare function collectionToDrizzleSchema(collection: CollectionConfig, dialect?: 'postgres' | 'mysql' | 'sqlite'): string;
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 };
@@ -0,0 +1,49 @@
1
+ import { A as AbstractBaseAdapter } from '../base-CQkFzqQl.js';
2
+ import { a as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, U as UpdateArgs, D as DeleteArgs, C as CollectionConfig, F as Field } from '../types-BGM5MV_K.js';
3
+
4
+ declare function fieldToDrizzleType(field: Field, dialect?: 'postgres' | 'mysql' | 'sqlite'): string;
5
+ declare function collectionToDrizzleSchema(collection: CollectionConfig, dialect?: 'postgres' | 'mysql' | 'sqlite'): string;
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 };
@@ -0,0 +1,4 @@
1
+ export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType } from '../chunk-DKSMFC3L.js';
2
+ import '../chunk-BXMWDUED.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var chunkK7QF2QCM_cjs = require('../chunk-K7QF2QCM.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "buildGraphQLSchema", {
8
+ enumerable: true,
9
+ get: function () { return chunkK7QF2QCM_cjs.buildGraphQLSchema; }
10
+ });
11
+ Object.defineProperty(exports, "createGraphQLSchema", {
12
+ enumerable: true,
13
+ get: function () { return chunkK7QF2QCM_cjs.createGraphQLSchema; }
14
+ });
15
+ //# sourceMappingURL=index.cjs.map
16
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,20 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { B as BaseAdapter, f as User, g as Request } from '../types-BGM5MV_K.cjs';
3
+ import { R as Registry } from '../index-DI0DRPNv.cjs';
4
+ import 'zod';
5
+
6
+ interface GraphQLSchemaOptions {
7
+ registry: Registry;
8
+ db: BaseAdapter;
9
+ user?: User;
10
+ req?: Request;
11
+ tenantID?: string;
12
+ }
13
+ declare function buildGraphQLSchema(options: GraphQLSchemaOptions): GraphQLSchema;
14
+ declare function createGraphQLSchema(registry: Registry, db: BaseAdapter, options?: {
15
+ user?: User;
16
+ req?: Request;
17
+ tenantID?: string;
18
+ }): GraphQLSchema;
19
+
20
+ export { type GraphQLSchemaOptions, buildGraphQLSchema, createGraphQLSchema };
@@ -0,0 +1,20 @@
1
+ import { GraphQLSchema } from 'graphql';
2
+ import { B as BaseAdapter, f as User, g as Request } from '../types-BGM5MV_K.js';
3
+ import { R as Registry } from '../index-4fJKLFK2.js';
4
+ import 'zod';
5
+
6
+ interface GraphQLSchemaOptions {
7
+ registry: Registry;
8
+ db: BaseAdapter;
9
+ user?: User;
10
+ req?: Request;
11
+ tenantID?: string;
12
+ }
13
+ declare function buildGraphQLSchema(options: GraphQLSchemaOptions): GraphQLSchema;
14
+ declare function createGraphQLSchema(registry: Registry, db: BaseAdapter, options?: {
15
+ user?: User;
16
+ req?: Request;
17
+ tenantID?: string;
18
+ }): GraphQLSchema;
19
+
20
+ export { type GraphQLSchemaOptions, buildGraphQLSchema, createGraphQLSchema };
@@ -0,0 +1,3 @@
1
+ export { buildGraphQLSchema, createGraphQLSchema } from '../chunk-OG3KX56O.js';
2
+ //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}