@@ -189,6 +189,28 @@ var excludedExtensions = [
189189 'ms-vscode.node-debug2' ,
190190] ;
191191var builtInExtensions = require ( '../builtInExtensions.json' ) ;
192+ /**
193+ * We're doing way too much stuff at once, with webpack et al. So much stuff
194+ * that while downloading extensions from the marketplace, node js doesn't get enough
195+ * stack frames to complete the download in under 2 minutes, at which point the
196+ * marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
197+ */
198+ function sequence ( streamProviders ) {
199+ var result = es . through ( ) ;
200+ function pop ( ) {
201+ if ( streamProviders . length === 0 ) {
202+ result . emit ( 'end' ) ;
203+ }
204+ else {
205+ var fn = streamProviders . shift ( ) ;
206+ fn ( )
207+ . on ( 'end' , function ( ) { setTimeout ( pop , 0 ) ; } )
208+ . pipe ( result , { end : false } ) ;
209+ }
210+ }
211+ pop ( ) ;
212+ return result ;
213+ }
192214function packageExtensionsStream ( opts ) {
193215 opts = opts || { } ;
194216 var localExtensionDescriptions = glob . sync ( 'extensions/*/package.json' )
@@ -209,21 +231,21 @@ function packageExtensionsStream(opts) {
209231 var name = _a . name ;
210232 return builtInExtensions . every ( function ( b ) { return b . name !== name ; } ) ;
211233 } ) ;
212- var localExtensions = es . merge . apply ( es , localExtensionDescriptions . map ( function ( extension ) {
234+ var localExtensions = function ( ) { return es . merge . apply ( es , localExtensionDescriptions . map ( function ( extension ) {
213235 return fromLocal ( extension . path , opts . sourceMappingURLBase )
214236 . pipe ( rename ( function ( p ) { return p . dirname = "extensions/" + extension . name + "/" + p . dirname ; } ) ) ;
215- } ) ) ;
216- var localExtensionDependencies = gulp . src ( 'extensions/node_modules/**' , { base : '.' } ) ;
217- var marketplaceExtensions = es . merge . apply ( es , builtInExtensions
237+ } ) ) ; } ;
238+ var localExtensionDependencies = function ( ) { return gulp . src ( 'extensions/node_modules/**' , { base : '.' } ) ; } ;
239+ var marketplaceExtensions = function ( ) { return es . merge . apply ( es , builtInExtensions
218240 . filter ( function ( _a ) {
219241 var name = _a . name ;
220242 return opts . desiredExtensions ? opts . desiredExtensions . indexOf ( name ) >= 0 : true ;
221243 } )
222244 . map ( function ( extension ) {
223245 return fromMarketplace ( extension . name , extension . version , extension . metadata )
224246 . pipe ( rename ( function ( p ) { return p . dirname = "extensions/" + extension . name + "/" + p . dirname ; } ) ) ;
225- } ) ) ;
226- return es . merge ( localExtensions , localExtensionDependencies , marketplaceExtensions )
247+ } ) ) ; } ;
248+ return sequence ( [ localExtensions , localExtensionDependencies , marketplaceExtensions ] )
227249 . pipe ( util2 . setExecutableBit ( [ '**/*.sh' ] ) )
228250 . pipe ( filter ( [ '**' , '!**/*.js.map' ] ) ) ;
229251}
0 commit comments