(schemaPath: string)
| 729 | } |
| 730 | |
| 731 | async function generateSessionEvents(schemaPath: string): Promise<void> { |
| 732 | console.log("\n📋 Generating session event classes..."); |
| 733 | const schemaContent = await fs.readFile(schemaPath, "utf-8"); |
| 734 | const schema = normalizeSchemaBrandCasing(JSON.parse(schemaContent) as JSONSchema7); |
| 735 | |
| 736 | // Set module-level definitions for $ref resolution |
| 737 | currentDefinitions = (schema.definitions ?? {}) as Record<string, JSONSchema7>; |
| 738 | pendingStandaloneTypes.clear(); |
| 739 | |
| 740 | const variants = extractEventVariants(schema); |
| 741 | const packageName = "com.github.copilot.generated"; |
| 742 | const packageDir = `src/generated/java/com/github/copilot/generated`; |
| 743 | |
| 744 | // Generate base SessionEvent class |
| 745 | await generateSessionEventBaseClass(variants, packageName, packageDir); |
| 746 | |
| 747 | // Generate one class file per event variant |
| 748 | for (const variant of variants) { |
| 749 | await generateEventVariantClass(variant, packageName, packageDir); |
| 750 | } |
| 751 | |
| 752 | // Generate standalone types discovered via $ref resolution |
| 753 | await generatePendingStandaloneTypes(packageName, packageDir, GENERATED_FROM_SESSION_EVENTS); |
| 754 | |
| 755 | console.log(`✅ Generated ${variants.length + 1} session event files`); |
| 756 | } |
| 757 | |
| 758 | async function generateSessionEventBaseClass( |
| 759 | variants: EventVariant[], |
no test coverage detected
searching dependent graphs…