@@ -7,7 +7,7 @@ import { MoveModuleBuilder } from './move-module-builder.js';
77import { existsSync , statSync } from 'node:fs' ;
88import { utilsContent } from './generate-utils.js' ;
99import { parse } from 'toml' ;
10- import type { ImportExtension , PackageConfig } from './config.js' ;
10+ import type { ImportExtension , PackageConfig , PackageInclude } from './config.js' ;
1111export { type SuiCodegenConfig } from './config.js' ;
1212
1313export async function generateFromPackageSummary ( {
@@ -108,11 +108,43 @@ export async function generateFromPackageSummary({
108108 modules . map ( ( mod ) => [ `${ mod . package } ::${ mod . module } ` , mod . builder ] ) ,
109109 ) ;
110110
111+ const include : PackageInclude | undefined = 'include' in pkg ? pkg . include : undefined ;
112+
111113 modules . forEach ( ( mod ) => {
112- if ( mod . isMainPackage || ! prune ) {
114+ if ( ! mod . isMainPackage && prune ) {
115+ return ;
116+ }
117+
118+ // If include is an array, it specifies which modules to include
119+ if ( Array . isArray ( include ) ) {
120+ if ( ! include . includes ( mod . module ) ) {
121+ return ;
122+ }
113123 mod . builder . includeAllTypes ( moduleBuilders ) ;
114124 mod . builder . includeAllFunctions ( { privateMethods } ) ;
125+ return ;
126+ }
127+
128+ // If include is a record, it specifies types/functions per module
129+ if ( include && mod . module in include ) {
130+ const moduleInclude = include [ mod . module ] ;
131+ if ( moduleInclude . types ) {
132+ mod . builder . includeTypes ( moduleInclude . types , moduleBuilders ) ;
133+ }
134+ if ( moduleInclude . functions ) {
135+ mod . builder . includeFunctions ( { names : moduleInclude . functions , privateMethods } ) ;
136+ }
137+ return ;
115138 }
139+
140+ // If include is specified but this module isn't in it, skip
141+ if ( include ) {
142+ return ;
143+ }
144+
145+ // Default: include everything
146+ mod . builder . includeAllTypes ( moduleBuilders ) ;
147+ mod . builder . includeAllFunctions ( { privateMethods } ) ;
116148 } ) ;
117149
118150 await generateUtils ( { outputDir } ) ;
0 commit comments