@trokky/client 2.0.3

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 (86) hide show
  1. package/README.md +833 -0
  2. package/dist/cache/manager.d.ts +47 -0
  3. package/dist/cache/manager.d.ts.map +1 -0
  4. package/dist/cache/manager.js +100 -0
  5. package/dist/cache/manager.js.map +1 -0
  6. package/dist/cli/index.d.ts +7 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +159 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/client.d.ts +221 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +310 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/document/client.d.ts +57 -0
  15. package/dist/document/client.d.ts.map +1 -0
  16. package/dist/document/client.js +176 -0
  17. package/dist/document/client.js.map +1 -0
  18. package/dist/generator/document-generator.d.ts +50 -0
  19. package/dist/generator/document-generator.d.ts.map +1 -0
  20. package/dist/generator/document-generator.js +329 -0
  21. package/dist/generator/document-generator.js.map +1 -0
  22. package/dist/generator/index.d.ts +121 -0
  23. package/dist/generator/index.d.ts.map +1 -0
  24. package/dist/generator/index.js +559 -0
  25. package/dist/generator/index.js.map +1 -0
  26. package/dist/http/client.d.ts +117 -0
  27. package/dist/http/client.d.ts.map +1 -0
  28. package/dist/http/client.js +411 -0
  29. package/dist/http/client.js.map +1 -0
  30. package/dist/index.d.ts +22 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +21 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/media/helper.d.ts +89 -0
  35. package/dist/media/helper.d.ts.map +1 -0
  36. package/dist/media/helper.js +197 -0
  37. package/dist/media/helper.js.map +1 -0
  38. package/dist/media/url-builder.d.ts +142 -0
  39. package/dist/media/url-builder.d.ts.map +1 -0
  40. package/dist/media/url-builder.js +280 -0
  41. package/dist/media/url-builder.js.map +1 -0
  42. package/dist/query/builder.d.ts +270 -0
  43. package/dist/query/builder.d.ts.map +1 -0
  44. package/dist/query/builder.js +731 -0
  45. package/dist/query/builder.js.map +1 -0
  46. package/dist/query/index.d.ts +6 -0
  47. package/dist/query/index.d.ts.map +1 -0
  48. package/dist/query/index.js +5 -0
  49. package/dist/query/index.js.map +1 -0
  50. package/dist/react/hooks.d.ts +42 -0
  51. package/dist/react/hooks.d.ts.map +1 -0
  52. package/dist/react/hooks.js +59 -0
  53. package/dist/react/hooks.js.map +1 -0
  54. package/dist/react/index.d.ts +6 -0
  55. package/dist/react/index.d.ts.map +1 -0
  56. package/dist/react/index.js +6 -0
  57. package/dist/react/index.js.map +1 -0
  58. package/dist/server/index.d.ts +9 -0
  59. package/dist/server/index.d.ts.map +1 -0
  60. package/dist/server/index.js +8 -0
  61. package/dist/server/index.js.map +1 -0
  62. package/dist/server/media-proxy.d.ts +102 -0
  63. package/dist/server/media-proxy.d.ts.map +1 -0
  64. package/dist/server/media-proxy.js +160 -0
  65. package/dist/server/media-proxy.js.map +1 -0
  66. package/dist/shortcodes/index.d.ts +11 -0
  67. package/dist/shortcodes/index.d.ts.map +1 -0
  68. package/dist/shortcodes/index.js +10 -0
  69. package/dist/shortcodes/index.js.map +1 -0
  70. package/dist/shortcodes/parser.d.ts +32 -0
  71. package/dist/shortcodes/parser.d.ts.map +1 -0
  72. package/dist/shortcodes/parser.js +88 -0
  73. package/dist/shortcodes/parser.js.map +1 -0
  74. package/dist/shortcodes/resolver.d.ts +57 -0
  75. package/dist/shortcodes/resolver.d.ts.map +1 -0
  76. package/dist/shortcodes/resolver.js +97 -0
  77. package/dist/shortcodes/resolver.js.map +1 -0
  78. package/dist/shortcodes/types.d.ts +17 -0
  79. package/dist/shortcodes/types.d.ts.map +1 -0
  80. package/dist/shortcodes/types.js +6 -0
  81. package/dist/shortcodes/types.js.map +1 -0
  82. package/dist/types/index.d.ts +134 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +6 -0
  85. package/dist/types/index.js.map +1 -0
  86. package/package.json +101 -0
@@ -0,0 +1,559 @@
1
+ /**
2
+ * TypeScript Type Generator
3
+ * Generates TypeScript types from Trokky schema definitions
4
+ */
5
+ export class TypeGenerator {
6
+ constructor(options) {
7
+ this.options = {
8
+ outputDir: options.outputDir,
9
+ schemaUrl: options.schemaUrl,
10
+ namespace: options.namespace || 'Trokky',
11
+ fileExtension: options.fileExtension || 'ts',
12
+ includeValidation: options.includeValidation ?? true,
13
+ authToken: options.authToken,
14
+ username: options.username,
15
+ password: options.password
16
+ };
17
+ }
18
+ /**
19
+ * Generate TypeScript types from schema URL
20
+ */
21
+ async generateFromUrl() {
22
+ const schema = await this.fetchSchema();
23
+ await this.generateTypes(schema);
24
+ }
25
+ /**
26
+ * Generate TypeScript types from schema object
27
+ */
28
+ async generateFromSchema(schema) {
29
+ await this.generateTypes(schema);
30
+ }
31
+ /**
32
+ * Fetch schema from remote URL
33
+ */
34
+ async fetchSchema() {
35
+ try {
36
+ // Use the schemaUrl directly, which should point to /api/collections
37
+ const apiUrl = this.options.schemaUrl;
38
+ // Handle authentication
39
+ let authToken = this.options.authToken;
40
+ // If no token but username/password provided, login first
41
+ if (!authToken && this.options.username && this.options.password) {
42
+ const loginUrl = apiUrl.replace('/api/collections', '/api/auth/login');
43
+ const loginResponse = await fetch(loginUrl, {
44
+ method: 'POST',
45
+ headers: {
46
+ 'Content-Type': 'application/json'
47
+ },
48
+ body: JSON.stringify({
49
+ credentials: {
50
+ username: this.options.username,
51
+ password: this.options.password
52
+ }
53
+ })
54
+ });
55
+ if (!loginResponse.ok) {
56
+ throw new Error(`Authentication failed: ${loginResponse.status} ${loginResponse.statusText}`);
57
+ }
58
+ const loginData = await loginResponse.json();
59
+ if (loginData.success && loginData.data?.token) {
60
+ authToken = loginData.data.token;
61
+ }
62
+ else {
63
+ throw new Error('Authentication failed: No token received');
64
+ }
65
+ }
66
+ // Prepare headers
67
+ const headers = {};
68
+ if (authToken) {
69
+ headers['Authorization'] = `Bearer ${authToken}`;
70
+ }
71
+ const response = await fetch(apiUrl, { headers });
72
+ if (!response.ok) {
73
+ throw new Error(`Failed to fetch schema: ${response.status} ${response.statusText}`);
74
+ }
75
+ const data = await response.json();
76
+ // Transform Trokky API response to ProjectSchema format
77
+ if (data.success && data.data && data.data.collections) {
78
+ const collections = data.data.collections;
79
+ return {
80
+ name: 'TrokkyProject',
81
+ version: '1.0.0',
82
+ documents: collections.map((collection) => ({
83
+ name: collection.name,
84
+ title: collection.title || collection.name,
85
+ description: collection.description,
86
+ fields: this.transformFields(collection.fields || {})
87
+ }))
88
+ };
89
+ }
90
+ // Fallback: try to parse as direct ProjectSchema format
91
+ return data;
92
+ }
93
+ catch (error) {
94
+ throw new Error(`Failed to fetch schema from ${this.options.schemaUrl}: ${error}`);
95
+ }
96
+ }
97
+ /**
98
+ * Transform Trokky field format to generator field format
99
+ */
100
+ transformFields(fields) {
101
+ // Handle array format (nested fields in objects/arrays)
102
+ if (Array.isArray(fields)) {
103
+ return fields.map(field => ({
104
+ name: field.name,
105
+ type: field.type,
106
+ title: field.title,
107
+ description: field.description,
108
+ required: field.required,
109
+ validation: field.validation,
110
+ options: field.options,
111
+ // Handle new field formats
112
+ fields: field.fields ? this.transformFields(field.fields) : undefined,
113
+ of: field.of ? this.transformSingleField(field.of) : undefined,
114
+ to: field.to
115
+ }));
116
+ }
117
+ // Handle Record format (modern ObjectField format: Record<string, NestedFieldDefinition>)
118
+ return Object.entries(fields).map(([name, field]) => ({
119
+ name,
120
+ type: field.type,
121
+ title: field.title,
122
+ description: field.description,
123
+ required: field.required,
124
+ validation: field.validation,
125
+ options: field.options,
126
+ // Handle nested fields for object types (Record format)
127
+ fields: field.fields ? this.transformFields(field.fields) : undefined,
128
+ of: field.of ? this.transformSingleField(field.of) : undefined,
129
+ to: field.to
130
+ }));
131
+ }
132
+ /**
133
+ * Transform a single field (used for array 'of' property)
134
+ */
135
+ transformSingleField(field) {
136
+ return {
137
+ name: field.name || 'item', // fallback name for array items
138
+ type: field.type,
139
+ title: field.title,
140
+ description: field.description,
141
+ required: field.required,
142
+ validation: field.validation,
143
+ options: field.options,
144
+ // Handle new field formats
145
+ fields: field.fields ? this.transformFields(field.fields) : undefined,
146
+ of: field.of ? this.transformSingleField(field.of) : undefined,
147
+ to: field.to
148
+ };
149
+ }
150
+ /**
151
+ * Generate TypeScript types from schema
152
+ */
153
+ async generateTypes(schema) {
154
+ const fs = await import('fs/promises');
155
+ const path = await import('path');
156
+ // Ensure output directory exists
157
+ await fs.mkdir(this.options.outputDir, { recursive: true });
158
+ // Generate document types
159
+ for (const document of schema.documents) {
160
+ const typeContent = this.generateDocumentType(document);
161
+ const filename = `${this.camelToKebab(document.name)}.${this.options.fileExtension}`;
162
+ const filepath = path.join(this.options.outputDir, filename);
163
+ await fs.writeFile(filepath, typeContent, 'utf8');
164
+ }
165
+ // Generate index file
166
+ const indexContent = this.generateIndex(schema.documents);
167
+ const indexFilepath = path.join(this.options.outputDir, `index.${this.options.fileExtension}`);
168
+ await fs.writeFile(indexFilepath, indexContent, 'utf8');
169
+ console.log(`Generated TypeScript types for ${schema.documents.length} documents in ${this.options.outputDir}`);
170
+ }
171
+ /**
172
+ * Generate TypeScript interface for a document
173
+ */
174
+ generateDocumentType(document) {
175
+ const imports = ['BaseDocument'];
176
+ // Check if we need MediaFieldValue import
177
+ const hasMediaFields = this.hasMediaFields(document.fields);
178
+ if (hasMediaFields) {
179
+ imports.push('MediaFieldValue');
180
+ }
181
+ const interfaceName = `${document.name}Document`;
182
+ let content = `/**\n * ${document.title || document.name}\n`;
183
+ if (document.description) {
184
+ content += ` * ${document.description}\n`;
185
+ }
186
+ content += ` * Generated from Trokky schema\n */\n\n`;
187
+ // Add imports
188
+ content += `import type { ${imports.join(', ')} } from '@trokky/trokky/types'\n\n`;
189
+ // Generate field interfaces if needed
190
+ const complexFields = document.fields.filter(field => field.type === 'object' || field.type === 'array' || field.type === 'reference');
191
+ for (const field of complexFields) {
192
+ content += this.generateFieldInterface(field, document.name);
193
+ content += '\n\n';
194
+ }
195
+ // Generate main document interface
196
+ content += `export interface ${interfaceName} extends BaseDocument {\n`;
197
+ content += ` _type: '${document.name}'\n`;
198
+ for (const field of document.fields) {
199
+ const fieldType = this.mapFieldType(field, document.name);
200
+ const optional = field.required ? '' : '?';
201
+ content += ` ${field.name}${optional}: ${fieldType}\n`;
202
+ }
203
+ content += '}\n';
204
+ // Generate validation schema if requested
205
+ if (this.options.includeValidation) {
206
+ content += '\n';
207
+ content += this.generateValidationSchema(document);
208
+ }
209
+ return content;
210
+ }
211
+ /**
212
+ * Check if document has media fields (recursively)
213
+ */
214
+ hasMediaFields(fields) {
215
+ for (const field of fields) {
216
+ // Check for all media field types
217
+ if (['media', 'image', 'audio', 'video', 'document'].includes(field.type)) {
218
+ return true;
219
+ }
220
+ // Check nested fields in objects (both array and Record formats)
221
+ if (field.type === 'object') {
222
+ const objectFields = field.fields || field.options?.fields;
223
+ if (objectFields) {
224
+ // Handle Record format
225
+ if (!Array.isArray(objectFields)) {
226
+ const fieldArray = Object.values(objectFields);
227
+ if (this.hasMediaFields(fieldArray)) {
228
+ return true;
229
+ }
230
+ }
231
+ // Handle array format
232
+ else if (this.hasMediaFields(objectFields)) {
233
+ return true;
234
+ }
235
+ }
236
+ }
237
+ // Check array item types
238
+ if (field.type === 'array') {
239
+ const arrayItemDef = field.of || field.items;
240
+ if (arrayItemDef && ['media', 'image', 'audio', 'video', 'document'].includes(arrayItemDef.type)) {
241
+ return true;
242
+ }
243
+ // Check if array contains objects with media fields
244
+ if (arrayItemDef && arrayItemDef.type === 'object') {
245
+ const arrayObjectFields = arrayItemDef.fields || arrayItemDef.options?.fields;
246
+ if (arrayObjectFields) {
247
+ // Handle Record format
248
+ if (!Array.isArray(arrayObjectFields)) {
249
+ const fieldArray = Object.values(arrayObjectFields);
250
+ if (this.hasMediaFields(fieldArray)) {
251
+ return true;
252
+ }
253
+ }
254
+ // Handle array format
255
+ else if (this.hasMediaFields(arrayObjectFields)) {
256
+ return true;
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ return false;
263
+ }
264
+ /**
265
+ * Generate TypeScript interface for complex field types
266
+ */
267
+ generateFieldInterface(field, documentName) {
268
+ const interfaceName = `${documentName}${this.capitalize(field.name)}`;
269
+ let content = `export interface ${interfaceName} {\n`;
270
+ if (field.type === 'object') {
271
+ // Handle both Record format and array format
272
+ const objectFields = field.fields || field.options?.fields;
273
+ if (objectFields) {
274
+ // Handle Record format (modern ObjectField format)
275
+ if (!Array.isArray(objectFields)) {
276
+ for (const [fieldName, subField] of Object.entries(objectFields)) {
277
+ const subFieldSchema = subField;
278
+ const fieldType = this.mapFieldType({ ...subFieldSchema, name: fieldName }, documentName);
279
+ const optional = subFieldSchema.required ? '' : '?';
280
+ content += ` ${fieldName}${optional}: ${fieldType}\n`;
281
+ }
282
+ }
283
+ // Handle array format (legacy)
284
+ else {
285
+ for (const subField of objectFields) {
286
+ const fieldType = this.mapFieldType(subField, documentName);
287
+ const optional = subField.required ? '' : '?';
288
+ content += ` ${subField.name}${optional}: ${fieldType}\n`;
289
+ }
290
+ }
291
+ }
292
+ }
293
+ else if (field.type === 'reference') {
294
+ content += ` _ref: string\n`;
295
+ // Updated to handle new reference format: field.to instead of field.options?.to
296
+ const refType = field.to || field.options?.to || 'reference';
297
+ if (Array.isArray(refType)) {
298
+ content += ` _type: ${refType.map(t => `'${t}'`).join(' | ')}\n`;
299
+ }
300
+ else {
301
+ content += ` _type: '${refType}'\n`;
302
+ }
303
+ }
304
+ content += '}';
305
+ return content;
306
+ }
307
+ /**
308
+ * Map field type to TypeScript type
309
+ */
310
+ mapFieldType(field, documentName) {
311
+ switch (field.type) {
312
+ case 'string':
313
+ case 'text':
314
+ case 'slug':
315
+ case 'email':
316
+ case 'url':
317
+ case 'password':
318
+ return 'string';
319
+ case 'number':
320
+ return 'number';
321
+ case 'boolean':
322
+ return 'boolean';
323
+ case 'date':
324
+ case 'datetime':
325
+ return 'string | Date';
326
+ case 'array':
327
+ // Support both legacy format (items) and new format (of)
328
+ const arrayItemDef = field.of || field.items;
329
+ const itemType = arrayItemDef ? this.mapFieldType(arrayItemDef, documentName) : 'any';
330
+ return `${itemType}[]`;
331
+ case 'object':
332
+ return `${documentName}${this.capitalize(field.name)}`;
333
+ case 'reference':
334
+ // Updated to handle new reference format: field.to instead of field.options?.to
335
+ const refType = field.to || field.options?.to || 'any';
336
+ // Handle multiple reference types
337
+ if (Array.isArray(refType)) {
338
+ const types = refType.map(t => `${t}Document`).join(' | ');
339
+ return `string | ${types}`;
340
+ }
341
+ return `string | ${refType}Document`;
342
+ case 'media':
343
+ case 'image':
344
+ case 'audio':
345
+ case 'video':
346
+ case 'document':
347
+ return 'MediaFieldValue | null';
348
+ case 'file':
349
+ return 'string | { _ref: string; url?: string; metadata?: Record<string, any> }';
350
+ case 'portableText':
351
+ return 'any[] // Portable Text blocks';
352
+ case 'richText':
353
+ case 'richtext':
354
+ return 'any[] // Rich text blocks';
355
+ default:
356
+ return 'any';
357
+ }
358
+ }
359
+ /**
360
+ * Generate validation schema
361
+ */
362
+ generateValidationSchema(document) {
363
+ const schemaName = `${document.name}ValidationSchema`;
364
+ let content = `export const ${schemaName} = {\n`;
365
+ content += ` type: '${document.name}',\n`;
366
+ content += ` fields: {\n`;
367
+ for (const field of document.fields) {
368
+ content += ` ${field.name}: {\n`;
369
+ content += ` type: '${field.type}',\n`;
370
+ if (field.required) {
371
+ content += ` required: true,\n`;
372
+ }
373
+ if (field.validation) {
374
+ for (const [key, value] of Object.entries(field.validation)) {
375
+ content += ` ${key}: ${JSON.stringify(value)},\n`;
376
+ }
377
+ }
378
+ content += ` },\n`;
379
+ }
380
+ content += ' }\n';
381
+ content += '}';
382
+ return content;
383
+ }
384
+ /**
385
+ * Generate index file
386
+ */
387
+ generateIndex(documents) {
388
+ let content = `/**\n * Generated TypeScript types for Trokky CMS\n * Auto-generated - do not edit manually\n */\n\n`;
389
+ // Export document types (no .js extension for better compatibility)
390
+ for (const document of documents) {
391
+ const filename = this.camelToKebab(document.name);
392
+ content += `export * from './${filename}'\n`;
393
+ }
394
+ // Export utility types
395
+ content += '\n// Utility types\n';
396
+ content += 'export type DocumentTypes = \n';
397
+ content += documents.map(doc => ` | '${doc.name}'`).join('\n');
398
+ content += '\n\n';
399
+ content += 'export type AllDocuments = \n';
400
+ content += documents.map(doc => ` | ${doc.name}Document`).join('\n');
401
+ content += '\n';
402
+ return content;
403
+ }
404
+ /**
405
+ * Utility functions
406
+ */
407
+ capitalize(str) {
408
+ return str.charAt(0).toUpperCase() + str.slice(1);
409
+ }
410
+ camelToKebab(str) {
411
+ return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
412
+ }
413
+ }
414
+ /**
415
+ * CLI function for generating types from URL
416
+ */
417
+ export async function generateTypes(options) {
418
+ const generator = new TypeGenerator(options);
419
+ await generator.generateFromUrl();
420
+ }
421
+ /**
422
+ * Generate types from local schema files
423
+ *
424
+ * @example
425
+ * ```typescript
426
+ * await generateTypesFromPath({
427
+ * schemaPath: '../cms/schemas',
428
+ * outputDir: './src/types/cms'
429
+ * })
430
+ * ```
431
+ */
432
+ export async function generateTypesFromPath(options) {
433
+ const fs = await import('fs/promises');
434
+ const path = await import('path');
435
+ const { pathToFileURL } = await import('url');
436
+ const schemaDir = path.resolve(options.schemaPath);
437
+ // Check if schemas/index.ts exists
438
+ const indexPath = path.join(schemaDir, 'index.ts');
439
+ const indexJsPath = path.join(schemaDir, 'index.js');
440
+ let schemas = [];
441
+ // Try to import from index file first
442
+ try {
443
+ // Check which file exists
444
+ let importPath;
445
+ try {
446
+ await fs.access(indexJsPath);
447
+ importPath = indexJsPath;
448
+ }
449
+ catch {
450
+ // If .js doesn't exist, try .ts via tsx or direct import
451
+ importPath = indexPath;
452
+ }
453
+ const fileUrl = pathToFileURL(importPath).href;
454
+ const module = await import(/* @vite-ignore */ fileUrl);
455
+ if (module.schemas && Array.isArray(module.schemas)) {
456
+ schemas = module.schemas;
457
+ }
458
+ else {
459
+ // Try to find all exported schemas
460
+ schemas = Object.values(module).filter((exp) => exp && typeof exp === 'object' && exp.name && exp.fields);
461
+ }
462
+ }
463
+ catch (err) {
464
+ // Fallback: read individual schema files
465
+ console.log('Could not import schemas/index, scanning individual files...');
466
+ const files = await fs.readdir(schemaDir);
467
+ const schemaFiles = files.filter(f => (f.endsWith('.ts') || f.endsWith('.js')) &&
468
+ f !== 'index.ts' &&
469
+ f !== 'index.js' &&
470
+ !f.startsWith('utils'));
471
+ for (const file of schemaFiles) {
472
+ try {
473
+ const filePath = path.join(schemaDir, file);
474
+ const fileUrl = pathToFileURL(filePath).href;
475
+ const module = await import(/* @vite-ignore */ fileUrl);
476
+ // Find schema export (usually named *Schema)
477
+ const schemaExport = Object.values(module).find((exp) => exp && typeof exp === 'object' && exp.name && exp.fields);
478
+ if (schemaExport) {
479
+ schemas.push(schemaExport);
480
+ }
481
+ }
482
+ catch (fileErr) {
483
+ console.warn(`Warning: Could not import ${file}:`, fileErr);
484
+ }
485
+ }
486
+ }
487
+ if (schemas.length === 0) {
488
+ throw new Error(`No schemas found in ${schemaDir}`);
489
+ }
490
+ console.log(`Found ${schemas.length} schemas`);
491
+ // Transform to ProjectSchema format
492
+ const projectSchema = {
493
+ name: 'TrokkyProject',
494
+ version: '1.0.0',
495
+ documents: schemas.map(schema => ({
496
+ name: schema.name,
497
+ title: schema.title || schema.name,
498
+ description: schema.description,
499
+ fields: transformSchemaFields(schema.fields)
500
+ }))
501
+ };
502
+ // Generate types using existing generator
503
+ const generator = new TypeGenerator({
504
+ schemaUrl: '', // Not used
505
+ outputDir: options.outputDir,
506
+ namespace: options.namespace || 'Trokky',
507
+ fileExtension: options.fileExtension || 'ts',
508
+ includeValidation: options.includeValidation ?? true
509
+ });
510
+ await generator.generateFromSchema(projectSchema);
511
+ }
512
+ /**
513
+ * Transform Trokky schema fields to generator format
514
+ */
515
+ function transformSchemaFields(fields) {
516
+ // Handle array format
517
+ if (Array.isArray(fields)) {
518
+ return fields.map(field => transformSingleField(field.name, field));
519
+ }
520
+ // Handle Record format (modern ObjectField format)
521
+ return Object.entries(fields).map(([name, field]) => transformSingleField(name, field));
522
+ }
523
+ function transformSingleField(name, field) {
524
+ const result = {
525
+ name,
526
+ type: field.type,
527
+ title: field.title,
528
+ description: field.description,
529
+ required: field.required,
530
+ validation: field.validation,
531
+ options: field.options
532
+ };
533
+ // Handle nested object fields
534
+ if (field.type === 'object' && field.fields) {
535
+ result.fields = transformSchemaFields(field.fields);
536
+ }
537
+ // Handle array 'of' field
538
+ if (field.type === 'array' && field.of) {
539
+ result.of = transformSingleField('item', field.of);
540
+ }
541
+ // Handle reference 'to' field
542
+ if (field.type === 'reference' && field.to) {
543
+ result.to = field.to;
544
+ }
545
+ return result;
546
+ }
547
+ /**
548
+ * Generate types from schema object
549
+ */
550
+ export async function generateTypesFromSchema(schema, options) {
551
+ const generator = new TypeGenerator({
552
+ ...options,
553
+ schemaUrl: '' // Not used when generating from schema object
554
+ });
555
+ await generator.generateFromSchema(schema);
556
+ }
557
+ // Document generation exports (development only)
558
+ export { DocumentGenerator, generateDocuments } from './document-generator.js';
559
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwCH,MAAM,OAAO,aAAa;IAGxB,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG;YACb,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ;YACxC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;YACpD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAqB;QAC5C,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC;YACH,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;YAErC,wBAAwB;YACxB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;YAEtC,0DAA0D;YAC1D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAA;gBACtE,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;oBAC1C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,WAAW,EAAE;4BACX,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;4BAC/B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;yBAChC;qBACF,CAAC;iBACH,CAAC,CAAA;gBAEF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC,CAAA;gBAC/F,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAS,CAAA;gBACnD,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC/C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBAC7D,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,MAAM,OAAO,GAA2B,EAAE,CAAA;YAC1C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,SAAS,EAAE,CAAA;YAClD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;YACtF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAA;YAEzC,wDAAwD;YACxD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;gBAEzC,OAAO;oBACL,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,OAAO;oBAChB,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC,CAAC;wBAC/C,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;wBAC1C,WAAW,EAAE,UAAU,CAAC,WAAW;wBACnC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;qBACtD,CAAC,CAAC;iBACJ,CAAA;YACH,CAAC;YAED,wDAAwD;YACxD,OAAO,IAAqB,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAmC;QACzD,wDAAwD;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,2BAA2B;gBAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC9D,EAAE,EAAE,KAAK,CAAC,EAAE;aACb,CAAC,CAAC,CAAA;QACL,CAAC;QAED,0FAA0F;QAC1F,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,wDAAwD;YACxD,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACrE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,KAAU;QACrC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,gCAAgC;YAC5D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,2BAA2B;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACrE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,EAAE,EAAE,KAAK,CAAC,EAAE;SACb,CAAA;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,MAAqB;QAC/C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;QAEjC,iCAAiC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3D,0BAA0B;QAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACvD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;YACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAE5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QACnD,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;QAC9F,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAEvD,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,SAAS,CAAC,MAAM,iBAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACjH,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAAwB;QACnD,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC,CAAA;QAEhC,0CAA0C;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,QAAQ,CAAC,IAAI,UAAU,CAAA;QAEhD,IAAI,OAAO,GAAG,WAAW,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAA;QAC5D,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,MAAM,QAAQ,CAAC,WAAW,IAAI,CAAA;QAC3C,CAAC;QACD,OAAO,IAAI,0CAA0C,CAAA;QAErD,cAAc;QACd,OAAO,IAAI,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAA;QAElF,sCAAsC;QACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnD,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAChF,CAAA;QAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5D,OAAO,IAAI,MAAM,CAAA;QACnB,CAAC;QAED,mCAAmC;QACnC,OAAO,IAAI,oBAAoB,aAAa,2BAA2B,CAAA;QACvE,OAAO,IAAI,aAAa,QAAQ,CAAC,IAAI,KAAK,CAAA;QAE1C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YAE1C,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,QAAQ,KAAK,SAAS,IAAI,CAAA;QACzD,CAAC;QAED,OAAO,IAAI,KAAK,CAAA;QAEhB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACnC,OAAO,IAAI,IAAI,CAAA;YACf,OAAO,IAAI,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAqB;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,kCAAkC;YAClC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,OAAO,IAAI,CAAA;YACb,CAAC;YAED,iEAAiE;YACjE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAI,KAAa,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAA;gBACnE,IAAI,YAAY,EAAE,CAAC;oBACjB,uBAAuB;oBACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAkB,CAAA;wBAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;4BACpC,OAAO,IAAI,CAAA;wBACb,CAAC;oBACH,CAAC;oBACD,sBAAsB;yBACjB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC3C,OAAO,IAAI,CAAA;oBACb,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAI,KAAa,CAAC,EAAE,IAAK,KAAa,CAAC,KAAK,CAAA;gBAC9D,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjG,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,oDAAoD;gBACpD,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACnD,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAA;oBAC7E,IAAI,iBAAiB,EAAE,CAAC;wBACtB,uBAAuB;wBACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BACtC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAkB,CAAA;4BACpE,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gCACpC,OAAO,IAAI,CAAA;4BACb,CAAC;wBACH,CAAC;wBACD,sBAAsB;6BACjB,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BAChD,OAAO,IAAI,CAAA;wBACb,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,KAAkB,EAAE,YAAoB;QACrE,MAAM,aAAa,GAAG,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;QAErE,IAAI,OAAO,GAAG,oBAAoB,aAAa,MAAM,CAAA;QAErD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,6CAA6C;YAC7C,MAAM,YAAY,GAAI,KAAa,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAA;YACnE,IAAI,YAAY,EAAE,CAAC;gBACjB,mDAAmD;gBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBACjC,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;wBACjE,MAAM,cAAc,GAAG,QAAuB,CAAA;wBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAA;wBACzF,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;wBACnD,OAAO,IAAI,KAAK,SAAS,GAAG,QAAQ,KAAK,SAAS,IAAI,CAAA;oBACxD,CAAC;gBACH,CAAC;gBACD,+BAA+B;qBAC1B,CAAC;oBACJ,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;wBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;wBAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;wBAC7C,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,QAAQ,KAAK,SAAS,IAAI,CAAA;oBAC5D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtC,OAAO,IAAI,kBAAkB,CAAA;YAC7B,gFAAgF;YAChF,MAAM,OAAO,GAAI,KAAa,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,WAAW,CAAA;YACrE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,aAAa,OAAO,KAAK,CAAA;YACtC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,GAAG,CAAA;QACd,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAkB,EAAE,YAAoB;QAC3D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAA;YAEjB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAA;YAEjB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAA;YAElB,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU;gBACb,OAAO,eAAe,CAAA;YAExB,KAAK,OAAO;gBACV,yDAAyD;gBACzD,MAAM,YAAY,GAAI,KAAa,CAAC,EAAE,IAAK,KAAa,CAAC,KAAK,CAAA;gBAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACrF,OAAO,GAAG,QAAQ,IAAI,CAAA;YAExB,KAAK,QAAQ;gBACX,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YAExD,KAAK,WAAW;gBACd,gFAAgF;gBAChF,MAAM,OAAO,GAAI,KAAa,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAA;gBAC/D,kCAAkC;gBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC1D,OAAO,YAAY,KAAK,EAAE,CAAA;gBAC5B,CAAC;gBACD,OAAO,YAAY,OAAO,UAAU,CAAA;YAEtC,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,UAAU;gBACb,OAAO,wBAAwB,CAAA;YAEjC,KAAK,MAAM;gBACT,OAAO,yEAAyE,CAAA;YAElF,KAAK,cAAc;gBACjB,OAAO,+BAA+B,CAAA;YAExC,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO,2BAA2B,CAAA;YAEpC;gBACE,OAAO,KAAK,CAAA;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,QAAwB;QACvD,MAAM,UAAU,GAAG,GAAG,QAAQ,CAAC,IAAI,kBAAkB,CAAA;QAErD,IAAI,OAAO,GAAG,gBAAgB,UAAU,QAAQ,CAAA;QAChD,OAAO,IAAI,YAAY,QAAQ,CAAC,IAAI,MAAM,CAAA;QAC1C,OAAO,IAAI,eAAe,CAAA;QAE1B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,CAAA;YACnC,OAAO,IAAI,gBAAgB,KAAK,CAAC,IAAI,MAAM,CAAA;YAE3C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,IAAI,yBAAyB,CAAA;YACtC,CAAC;YAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5D,OAAO,IAAI,SAAS,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAA;gBACxD,CAAC;YACH,CAAC;YAED,OAAO,IAAI,UAAU,CAAA;QACvB,CAAC;QAED,OAAO,IAAI,OAAO,CAAA;QAClB,OAAO,IAAI,GAAG,CAAA;QAEd,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAA2B;QAC/C,IAAI,OAAO,GAAG,sGAAsG,CAAA;QAEpH,oEAAoE;QACpE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACjD,OAAO,IAAI,oBAAoB,QAAQ,KAAK,CAAA;QAC9C,CAAC;QAED,uBAAuB;QACvB,OAAO,IAAI,sBAAsB,CAAA;QACjC,OAAO,IAAI,gCAAgC,CAAA;QAC3C,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,OAAO,IAAI,MAAM,CAAA;QAEjB,OAAO,IAAI,+BAA+B,CAAA;QAC1C,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrE,OAAO,IAAI,IAAI,CAAA;QAEf,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAW;QAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACjE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,SAAS,CAAC,eAAe,EAAE,CAAA;AACnC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAM3C;IACC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAElD,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAEpD,IAAI,OAAO,GAAU,EAAE,CAAA;IAEvB,sCAAsC;IACtC,IAAI,CAAC;QACH,0BAA0B;QAC1B,IAAI,UAAkB,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC5B,UAAU,GAAG,WAAW,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;YACzD,UAAU,GAAG,SAAS,CAAA;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,mCAAmC;YACnC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CACpC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CACvE,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAE3E,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,KAAK,UAAU;YAChB,CAAC,KAAK,UAAU;YAChB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CACvB,CAAA;QAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;gBAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAEvD,6CAA6C;gBAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC7C,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CACvE,CAAA;gBAED,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,6BAA6B,IAAI,GAAG,EAAE,OAAO,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,UAAU,CAAC,CAAA;IAE9C,oCAAoC;IACpC,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;YAClC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAC;KACJ,CAAA;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;QAClC,SAAS,EAAE,EAAE,EAAE,WAAW;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ;QACxC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;KACrD,CAAC,CAAA;IAEF,MAAM,SAAS,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAmC;IAChE,sBAAsB;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,mDAAmD;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACzF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAU;IACpD,MAAM,MAAM,GAAgB;QAC1B,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAA;IAED,8BAA8B;IAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;IAED,0BAA0B;IAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,EAAE,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,8BAA8B;IAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAqB,EACrB,OAAgD;IAEhD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;QAClC,GAAG,OAAO;QACV,SAAS,EAAE,EAAE,CAAC,8CAA8C;KAC7D,CAAC,CAAA;IACF,MAAM,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAC5C,CAAC;AAED,iDAAiD;AACjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA"}