@@ -19,6 +19,7 @@ module.exports = function buildDeps(context, mainModule, options, callback) {
1919 options = { } ;
2020 }
2121 if ( ! options ) options = { } ;
22+ if ( ! options . events ) options . events = { emit : function ( ) { } } ;
2223
2324 var depTree = {
2425 warnings : [ ] ,
@@ -31,6 +32,10 @@ module.exports = function buildDeps(context, mainModule, options, callback) {
3132 chunkModules : { } // used by checkObsolete
3233 }
3334 var mainModuleId ;
35+ options . events . emit ( "task" ) ;
36+ options . events . emit ( "task" ) ;
37+ options . events . emit ( "task" ) ;
38+ options . events . emit ( "task" ) ;
3439 addModule ( depTree , context , mainModule , options , { type : "main" } , function ( err , id ) {
3540 if ( err ) {
3641 callback ( err ) ;
@@ -40,13 +45,19 @@ module.exports = function buildDeps(context, mainModule, options, callback) {
4045 buildTree ( ) ;
4146 } ) ;
4247 function buildTree ( ) {
48+ options . events . emit ( "task-end" ) ;
49+
4350 addChunk ( depTree , depTree . modulesById [ mainModuleId ] , options ) ;
4451 createRealIds ( depTree , options ) ;
52+ options . events . emit ( "task-end" ) ;
53+
4554 for ( var chunkId in depTree . chunks ) {
4655 removeParentsModules ( depTree , depTree . chunks [ chunkId ] ) ;
4756 removeChunkIfEmpty ( depTree , depTree . chunks [ chunkId ] ) ;
4857 checkObsolete ( depTree , depTree . chunks [ chunkId ] ) ;
4958 }
59+ options . events . emit ( "task-end" ) ;
60+
5061 // cleanup
5162 delete depTree . chunkModules ;
5263 depTree . modulesByFile = depTree . modules ;
@@ -55,6 +66,7 @@ module.exports = function buildDeps(context, mainModule, options, callback) {
5566 delete depTree . nextModuleId ;
5667 delete depTree . nextChunkId ;
5768 // return
69+ options . events . emit ( "task-end" ) ;
5870 callback ( null , depTree ) ;
5971 }
6072}
@@ -127,7 +139,13 @@ function execLoaders(request, loaders, filenames, contents, options, callback) {
127139
128140}
129141
130- function addModule ( depTree , context , modu , options , reason , callback ) {
142+ function addModule ( depTree , context , modu , options , reason , finalCallback ) {
143+ options . events . emit ( "task" ) ;
144+ function callback ( err , result ) {
145+ options . events . emit ( "task-end" ) ;
146+ finalCallback ( err , result ) ;
147+ }
148+
131149 resolve ( context || path . dirname ( modu ) , modu , options . resolve , resolved ) ;
132150 function resolved ( err , filename ) {
133151 if ( err ) {
@@ -147,6 +165,7 @@ function addModule(depTree, context, modu, options, reason, callback) {
147165 var filenameWithLoaders = filename ;
148166 var loaders = filename . split ( / ! / g) ;
149167 filename = loaders . pop ( ) ;
168+ options . events . emit ( "module" , modu , filename ) ;
150169 fs . readFile ( filename , "utf-8" , function ( err , content ) {
151170 if ( err ) {
152171 callback ( err ) ;
@@ -265,7 +284,13 @@ function addModule(depTree, context, modu, options, reason, callback) {
265284 }
266285}
267286
268- function addContextModule ( depTree , context , contextModuleName , options , reason , callback ) {
287+ function addContextModule ( depTree , context , contextModuleName , options , reason , finalCallback ) {
288+ options . events . emit ( "task" ) ;
289+ function callback ( err , result ) {
290+ options . events . emit ( "task-end" ) ;
291+ finalCallback ( err , result ) ;
292+ }
293+
269294 resolve . context ( context , contextModuleName , options . resolve , resolved ) ;
270295 function resolved ( err , dirname ) {
271296 if ( err ) {
@@ -288,6 +313,7 @@ function addContextModule(depTree, context, contextModuleName, options, reason,
288313 var contextModuleNameWithLoaders = dirname ;
289314 var loaders = dirname . split ( / ! / g) ;
290315 dirname = loaders . pop ( ) ;
316+ options . events . emit ( "context" , contextModule , dirname ) ;
291317 var prependLoaders = loaders . length === 0 ? "" : loaders . join ( "!" ) + "!" ;
292318 var extensions = ( options . resolve && options . resolve . extensions ) || [ ".web.js" , ".js" ] ;
293319 function doDir ( dirname , moduleName , done ) {
0 commit comments