77const Generator = require ( "../Generator" ) ;
88const { RawSource } = require ( "webpack-sources" ) ;
99
10- const { edit , add } = require ( "@webassemblyjs/wasm-edit" ) ;
10+ const { editWithAST , addWithAST } = require ( "@webassemblyjs/wasm-edit" ) ;
1111const { decode } = require ( "@webassemblyjs/wasm-parser" ) ;
1212const t = require ( "@webassemblyjs/ast" ) ;
1313
@@ -18,9 +18,19 @@ function compose(...fns) {
1818}
1919
2020// Utility functions
21- const isGlobalImport = moduleImport => moduleImport . descr . type === "GlobalType" ;
22- const isFuncImport = moduleImport =>
23- moduleImport . descr . type === "FuncImportDescr" ;
21+
22+ /**
23+ * @param {t.ModuleImport } n the import
24+ * @returns {boolean } true, if a global was imported
25+ */
26+ const isGlobalImport = n => n . descr . type === "GlobalType" ;
27+
28+ /**
29+ * @param {t.ModuleImport } n the import
30+ * @returns {boolean } true, if a func was imported
31+ */
32+ const isFuncImport = n => n . descr . type === "FuncImportDescr" ;
33+
2434const initFuncId = t . identifier ( "__webpack_init__" ) ;
2535
2636// TODO replace with @callback
@@ -35,7 +45,7 @@ const initFuncId = t.identifier("__webpack_init__");
3545 * @returns {ArrayBufferTransform } transform
3646 */
3747const removeStartFunc = state => bin => {
38- return edit ( bin , {
48+ return editWithAST ( state . ast , bin , {
3949 Start ( path ) {
4050 path . remove ( ) ;
4151 }
@@ -149,7 +159,7 @@ function getNextFuncIndex(ast, countImportedFunc) {
149159const rewriteImportedGlobals = state => bin => {
150160 const newGlobals = [ ] ;
151161
152- bin = edit ( bin , {
162+ bin = editWithAST ( state . ast , bin , {
153163 ModuleImport ( path ) {
154164 if ( isGlobalImport ( path . node ) === true ) {
155165 const globalType = path . node . descr ;
@@ -168,7 +178,7 @@ const rewriteImportedGlobals = state => bin => {
168178 } ) ;
169179
170180 // Add global declaration instructions
171- return add ( bin , newGlobals ) ;
181+ return addWithAST ( state . ast , bin , newGlobals ) ;
172182} ;
173183
174184/**
@@ -177,17 +187,17 @@ const rewriteImportedGlobals = state => bin => {
177187 * The init function fills the globals given input arguments.
178188 *
179189 * @param {Object } state transformation state
190+ * @param {Object } state.ast - Module's ast
180191 * @param {t.IndexLiteral } state.startAtFuncIndex index of the start function
181192 * @param {t.ModuleImport[] } state.importedGlobals list of imported globals
182- * @param {TODO } state.funcSectionMetadata ??
183193 * @param {t.IndexLiteral } state.nextFuncIndex index of the next function
184194 * @param {t.IndexLiteral } state.nextTypeIndex index of the next type
185195 * @returns {ArrayBufferTransform } transform
186196 */
187197const addInitFunction = ( {
198+ ast,
188199 startAtFuncIndex,
189200 importedGlobals,
190- funcSectionMetadata,
191201 nextFuncIndex,
192202 nextTypeIndex
193203} ) => bin => {
@@ -229,7 +239,7 @@ const addInitFunction = ({
229239 // Export section
230240 const moduleExport = t . moduleExport ( initFuncId . value , "Func" , nextFuncIndex ) ;
231241
232- return add ( bin , [ func , moduleExport , funcindex , functype ] ) ;
242+ return addWithAST ( ast , bin , [ func , moduleExport , funcindex , functype ] ) ;
233243} ;
234244
235245class WebAssemblyGenerator extends Generator {
@@ -244,20 +254,19 @@ class WebAssemblyGenerator extends Generator {
244254 } ) ;
245255
246256 const importedGlobals = getImportedGlobals ( ast ) ;
247- const funcSectionMetadata = t . getSectionMetadata ( ast , "func" ) ;
248257 const countImportedFunc = getCountImportedFunc ( ast ) ;
249258 const startAtFuncIndex = getStartFuncIndex ( ast ) ;
250259 const nextFuncIndex = getNextFuncIndex ( ast , countImportedFunc ) ;
251260 const nextTypeIndex = getNextTypeIndex ( ast ) ;
252261
253262 const transform = compose (
254- removeStartFunc ( { } ) ,
263+ removeStartFunc ( { ast } ) ,
255264
256- rewriteImportedGlobals ( { } ) ,
265+ rewriteImportedGlobals ( { ast } ) ,
257266
258267 addInitFunction ( {
268+ ast,
259269 importedGlobals,
260- funcSectionMetadata,
261270 startAtFuncIndex,
262271 nextFuncIndex,
263272 nextTypeIndex
0 commit comments