@@ -14,6 +14,8 @@ import {
1414 defaultPolywrapManifestFiles ,
1515 parseLogFileOption ,
1616 parseWrapperEnvsOption ,
17+ WasmEmbed ,
18+ getWasmEmbeds ,
1719} from "../lib" ;
1820import { ScriptCodegenerator } from "../lib/codegen/ScriptCodeGenerator" ;
1921import { DEFAULT_CODEGEN_DIR } from "../lib/defaults" ;
@@ -29,6 +31,7 @@ export interface CodegenCommandOptions extends BaseCommandOptions {
2931 manifestFile : string ;
3032 codegenDir : string | false ;
3133 bindgen : string | false ;
34+ embed : boolean | false ;
3235 script : string | false ;
3336 clientConfig : string | false ;
3437 wrapperEnvs : string | false ;
@@ -54,6 +57,7 @@ export const codegen: Command = {
5457 } ) } `
5558 )
5659 . option ( `-b, --bindgen <URI>` , `${ intlMsg . commands_codegen_options_b ( ) } ` )
60+ . option ( `-e, --embed` , `${ intlMsg . commands_codegen_options_e ( ) } ` )
5761 . option (
5862 `-s, --script <${ pathStr } >` ,
5963 `${ intlMsg . commands_codegen_options_s ( ) } `
@@ -81,6 +85,7 @@ export const codegen: Command = {
8185 ) ,
8286 codegenDir : parseDirOptionNoDefault ( options . codegenDir ) ,
8387 bindgen : options . bindgen || false ,
88+ embed : options . embed || false ,
8489 script : parseCodegenScriptOption ( options . script ) ,
8590 clientConfig : options . clientConfig || false ,
8691 wrapperEnvs : options . wrapperEnvs || false ,
@@ -100,6 +105,7 @@ async function run(options: Required<CodegenCommandOptions>) {
100105 wrapperEnvs,
101106 codegenDir,
102107 bindgen,
108+ embed,
103109 script,
104110 verbose,
105111 quiet,
@@ -133,21 +139,34 @@ async function run(options: Required<CodegenCommandOptions>) {
133139 project,
134140 client,
135141 } ) ;
142+ const abi = await schemaComposer . getComposedAbis ( ) ;
143+
144+ const projectLang = await project . getManifestLanguage ( ) ;
145+ if ( embed && ! projectLang . startsWith ( "app" ) ) {
146+ logger . error ( intlMsg . commands_codegen_error_embedAppOnly ( ) ) ;
147+ process . exit ( 1 ) ;
148+ }
149+
150+ const embeds : WasmEmbed [ ] | undefined =
151+ embed && abi . importedModuleTypes
152+ ? await getWasmEmbeds ( abi . importedModuleTypes , client , logger )
153+ : undefined ;
136154
137155 const codeGenerator = script
138156 ? new ScriptCodegenerator ( {
139157 codegenDirAbs : codegenDir || undefined ,
140158 script,
141- schemaComposer ,
159+ abi ,
142160 project,
143161 omitHeader : false ,
144162 mustacheView : undefined ,
145163 } )
146164 : new CodeGenerator ( {
147165 codegenDirAbs : codegenDir || undefined ,
148- schemaComposer ,
166+ abi ,
149167 project,
150168 bindgenUri,
169+ embeds,
151170 } ) ;
152171
153172 const execute = async ( ) : Promise < boolean > => {
0 commit comments