@@ -426,11 +426,17 @@ const Assert: NodeType = {
426426 required : [ 'subject' , 'assertions' ] ,
427427} ;
428428
429- export function createConfigTypes ( extraSchemas : JSONSchema , config ?: Config ) {
430- const nodeNames = specVersions . flatMap ( ( version ) => {
431- const types = config ? config . extendTypes ( getTypes ( version ) , version ) : getTypes ( version ) ;
432- return Object . keys ( types ) ;
433- } ) ;
429+ export async function createConfigTypes ( extraSchemas : JSONSchema , config ?: Config ) {
430+ const nodeNames = (
431+ await Promise . all (
432+ specVersions . map ( async ( version ) => {
433+ const types = config
434+ ? config . extendTypes ( await getTypes ( version ) , version )
435+ : await getTypes ( version ) ;
436+ return Object . keys ( types ) ;
437+ } )
438+ )
439+ ) . flat ( ) ;
434440 // Create types based on external schemas
435441 const nodeTypes = getNodeTypesFromJSONSchema ( 'rootRedoclyConfigSchema' , extraSchemas ) ;
436442
@@ -460,5 +466,37 @@ const CoreConfigTypes: Record<string, NodeType> = {
460466// @ts -ignore FIXME: remove this once we remove `theme` from the schema
461467delete rootRedoclyConfigSchema . properties . theme ;
462468
463- export const ConfigTypes : Record < string , NodeType > = createConfigTypes ( rootRedoclyConfigSchema ) ;
469+ // Lazy-loaded config types to support dynamic imports
470+ let _configTypesPromise : Promise < Record < string , NodeType > > | null = null ;
471+ let _normalizedConfigTypes : ReturnType < typeof normalizeTypes > | null = null ;
472+
473+ export function getConfigTypes ( ) : Promise < Record < string , NodeType > > {
474+ if ( ! _configTypesPromise ) {
475+ _configTypesPromise = createConfigTypes ( rootRedoclyConfigSchema ) ;
476+ }
477+ return _configTypesPromise ;
478+ }
479+
480+ export async function getNormalizedConfigTypes ( ) {
481+ if ( ! _normalizedConfigTypes ) {
482+ const configTypes = await getConfigTypes ( ) ;
483+ _normalizedConfigTypes = normalizeTypes ( configTypes ) ;
484+ }
485+ return _normalizedConfigTypes ;
486+ }
487+
488+ // Synchronous exports for backwards compatibility (minimal set for sync initialization)
489+ // Note: This only includes core config types without spec-specific node names
490+ // For full type support with all specs, use getConfigTypes() or getNormalizedConfigTypes()
491+ const nodeTypes = getNodeTypesFromJSONSchema ( 'rootRedoclyConfigSchema' , rootRedoclyConfigSchema ) ;
492+
493+ export const ConfigTypes : Record < string , NodeType > = {
494+ ...CoreConfigTypes ,
495+ ConfigRoot : createConfigRoot ( nodeTypes ) ,
496+ ConfigApisProperties : createConfigApisProperties ( nodeTypes ) ,
497+ AssertionDefinitionSubject : createAssertionDefinitionSubject ( [ ] ) , // Empty for sync version
498+ ...nodeTypes ,
499+ 'rootRedoclyConfigSchema.scorecard.levels_items' : createScorecardLevelsItems ( nodeTypes ) ,
500+ } ;
501+
464502export const NormalizedConfigTypes = normalizeTypes ( ConfigTypes ) ;
0 commit comments