@@ -21,7 +21,7 @@ import {
2121 structTypeNodeFromInstructionArgumentNodes ,
2222 VALUE_NODES ,
2323} from '@codama/nodes' ;
24- import { RenderMap } from '@codama/renderers-core' ;
24+ import { addToRenderMap , mergeRenderMaps , RenderMap , renderMap } from '@codama/renderers-core' ;
2525import {
2626 extendVisitor ,
2727 getByteSizeVisitor ,
@@ -128,7 +128,7 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
128128 }
129129
130130 return pipe (
131- staticVisitor ( ( ) => new RenderMap ( ) ) ,
131+ staticVisitor ( ( ) => renderMap ( ) ) ,
132132 v =>
133133 extendVisitor ( v , {
134134 visitAccount ( node ) {
@@ -229,7 +229,8 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
229229 }
230230 const hasVariableSeeds = pdaSeeds . filter ( isNodeFilter ( 'variablePdaSeedNode' ) ) . length > 0 ;
231231
232- return new RenderMap ( ) . add (
232+ return addToRenderMap (
233+ renderMap ( ) ,
233234 `accounts/${ camelCase ( node . name ) } .ts` ,
234235 render ( 'accountsPage.njk' , {
235236 account : node ,
@@ -257,7 +258,8 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
257258 `get${ pascalCaseName } Serializer` ,
258259 ] ) ;
259260
260- return new RenderMap ( ) . add (
261+ return addToRenderMap (
262+ renderMap ( ) ,
261263 `types/${ camelCase ( node . name ) } .ts` ,
262264 render ( 'definedTypesPage.njk' , {
263265 definedType : node ,
@@ -418,7 +420,8 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
418420 imports . add ( getImportFrom ( remainingAccounts . value ) , camelCase ( remainingAccounts . value . name ) ) ;
419421 }
420422
421- return new RenderMap ( ) . add (
423+ return addToRenderMap (
424+ renderMap ( ) ,
422425 `instructions/${ camelCase ( node . name ) } .ts` ,
423426 render ( 'instructionsPage.njk' , {
424427 accounts,
@@ -458,40 +461,45 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
458461 ...getDefinedTypeNodesToExtract ( node . accounts , customAccountData ) ,
459462 ...getDefinedTypeNodesToExtract ( node . instructions , customInstructionData ) ,
460463 ] ;
461- const renderMap = new RenderMap ( )
462- . mergeWith ( ... node . accounts . map ( a => visit ( a , self ) ) )
463- . mergeWith ( ... node . definedTypes . map ( t => visit ( t , self ) ) )
464- . mergeWith ( ... customDataDefinedType . map ( t => visit ( t , self ) ) )
465- . mergeWith (
464+ const renders = pipe (
465+ mergeRenderMaps ( [
466+ ... node . accounts . map ( a => visit ( a , self ) ) ,
467+ ... node . definedTypes . map ( t => visit ( t , self ) ) ,
468+ ... customDataDefinedType . map ( t => visit ( t , self ) ) ,
466469 ...getAllInstructionsWithSubs ( node , {
467470 leavesOnly : ! renderParentInstructions ,
468471 } ) . map ( ix => visit ( ix , self ) ) ,
469- )
470- . add (
471- `errors/${ camelCase ( node . name ) } .ts` ,
472- render ( 'errorsPage.njk' , {
473- errors : node . errors ,
474- imports : new ImportMap ( )
475- . add ( 'umi' , [ 'ProgramError' , 'Program' ] )
476- . toString ( dependencyMap ) ,
477- program : node ,
478- } ) ,
479- )
480- . add (
481- `programs/${ camelCase ( node . name ) } .ts` ,
482- render ( 'programsPage.njk' , {
483- imports : new ImportMap ( )
484- . add ( 'umi' , [ 'ClusterFilter' , 'Context' , 'Program' , 'PublicKey' ] )
485- . add ( 'errors' , [
486- `get${ pascalCaseName } ErrorFromCode` ,
487- `get${ pascalCaseName } ErrorFromName` ,
488- ] )
489- . toString ( dependencyMap ) ,
490- program : node ,
491- } ) ,
492- ) ;
472+ ] ) ,
473+ r =>
474+ addToRenderMap (
475+ r ,
476+ `errors/${ camelCase ( node . name ) } .ts` ,
477+ render ( 'errorsPage.njk' , {
478+ errors : node . errors ,
479+ imports : new ImportMap ( )
480+ . add ( 'umi' , [ 'ProgramError' , 'Program' ] )
481+ . toString ( dependencyMap ) ,
482+ program : node ,
483+ } ) ,
484+ ) ,
485+ r =>
486+ addToRenderMap (
487+ r ,
488+ `programs/${ camelCase ( node . name ) } .ts` ,
489+ render ( 'programsPage.njk' , {
490+ imports : new ImportMap ( )
491+ . add ( 'umi' , [ 'ClusterFilter' , 'Context' , 'Program' , 'PublicKey' ] )
492+ . add ( 'errors' , [
493+ `get${ pascalCaseName } ErrorFromCode` ,
494+ `get${ pascalCaseName } ErrorFromName` ,
495+ ] )
496+ . toString ( dependencyMap ) ,
497+ program : node ,
498+ } ) ,
499+ ) ,
500+ ) ;
493501 program = null ;
494- return renderMap ;
502+ return renders ;
495503 } ,
496504
497505 visitRoot ( node , { self } ) {
@@ -517,29 +525,36 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
517525 root : node ,
518526 } ;
519527
520- const map = new RenderMap ( ) ;
528+ let renders = renderMap ( ) ;
521529 if ( hasAnythingToExport ) {
522- map . add ( 'shared/index.ts' , render ( 'sharedPage.njk' , ctx ) ) ;
530+ renders = addToRenderMap ( renders , 'shared/index.ts' , render ( 'sharedPage.njk' , ctx ) ) ;
523531 }
524532 if ( programsToExport . length > 0 ) {
525- map . add ( 'programs/index.ts' , render ( 'programsIndex.njk' , ctx ) ) . add (
526- 'errors/index.ts' ,
527- render ( 'errorsIndex.njk' , ctx ) ,
533+ renders = pipe (
534+ renders ,
535+ r => addToRenderMap ( r , 'programs/index.ts' , render ( 'programsIndex.njk' , ctx ) ) ,
536+ r => addToRenderMap ( r , 'errors/index.ts' , render ( 'errorsIndex.njk' , ctx ) ) ,
528537 ) ;
529538 }
530539 if ( accountsToExport . length > 0 ) {
531- map . add ( 'accounts/index.ts' , render ( 'accountsIndex.njk' , ctx ) ) ;
540+ renders = addToRenderMap ( renders , 'accounts/index.ts' , render ( 'accountsIndex.njk' , ctx ) ) ;
532541 }
533542 if ( instructionsToExport . length > 0 ) {
534- map . add ( 'instructions/index.ts' , render ( 'instructionsIndex.njk' , ctx ) ) ;
543+ renders = addToRenderMap (
544+ renders ,
545+ 'instructions/index.ts' ,
546+ render ( 'instructionsIndex.njk' , ctx ) ,
547+ ) ;
535548 }
536549 if ( definedTypesToExport . length > 0 ) {
537- map . add ( 'types/index.ts' , render ( 'definedTypesIndex.njk' , ctx ) ) ;
550+ renders = addToRenderMap ( renders , 'types/index.ts' , render ( 'definedTypesIndex.njk' , ctx ) ) ;
538551 }
539552
540- return map
541- . add ( 'index.ts' , render ( 'rootIndex.njk' , ctx ) )
542- . mergeWith ( ...getAllPrograms ( node ) . map ( p => visit ( p , self ) ) ) ;
553+ return pipe (
554+ renders ,
555+ r => addToRenderMap ( r , 'index.ts' , render ( 'rootIndex.njk' , ctx ) ) ,
556+ r => mergeRenderMaps ( [ r , ...getAllPrograms ( node ) . map ( p => visit ( p , self ) ) ] ) ,
557+ ) ;
543558 } ,
544559 } ) ,
545560 v => recordNodeStackVisitor ( v , stack ) ,
0 commit comments