@@ -61,7 +61,7 @@ function addKarmaFiles(files: any[], newFiles: any[], prepend = false) {
61
61
}
62
62
}
63
63
64
- const init : any = ( config : any , emitter : any , customFileHandlers : any ) => {
64
+ const init : any = ( config : any , emitter : any ) => {
65
65
if ( ! config . buildWebpack ) {
66
66
throw new Error ( `The '@angular-devkit/build-angular/plugins/karma' karma plugin is meant to` +
67
67
` be used from within Angular CLI and will not work correctly outside of it.`
@@ -219,39 +219,13 @@ const init: any = (config: any, emitter: any, customFileHandlers: any) => {
219
219
220
220
webpackMiddleware = new webpackDevMiddleware ( compiler , webpackMiddlewareConfig ) ;
221
221
222
- // Forward requests to webpack server.
223
- customFileHandlers . push ( {
224
- urlRegex : new RegExp ( `\\/${ KARMA_APPLICATION_PATH } \\/.*` ) ,
225
- handler : function handler ( req : any , res : any ) {
226
- webpackMiddleware ( req , res , function ( ) {
227
- // Ensure script and style bundles are served.
228
- // They are mentioned in the custom karma context page and we don't want them to 404.
229
- const alwaysServe = [
230
- `/${ KARMA_APPLICATION_PATH } /runtime.js` ,
231
- `/${ KARMA_APPLICATION_PATH } /polyfills.js` ,
232
- `/${ KARMA_APPLICATION_PATH } /polyfills-es5.js` ,
233
- `/${ KARMA_APPLICATION_PATH } /scripts.js` ,
234
- `/${ KARMA_APPLICATION_PATH } /styles.js` ,
235
- `/${ KARMA_APPLICATION_PATH } /vendor.js` ,
236
- ] ;
237
- if ( alwaysServe . indexOf ( req . url ) != - 1 ) {
238
- res . statusCode = 200 ;
239
- res . end ( ) ;
240
- } else {
241
- res . statusCode = 404 ;
242
- res . end ( 'Not found' ) ;
243
- }
244
- } ) ;
245
- }
246
- } ) ;
247
-
248
222
emitter . on ( 'exit' , ( done : any ) => {
249
223
webpackMiddleware . close ( ) ;
250
224
done ( ) ;
251
225
} ) ;
252
226
} ;
253
227
254
- init . $inject = [ 'config' , 'emitter' , 'customFileHandlers' ] ;
228
+ init . $inject = [ 'config' , 'emitter' ] ;
255
229
256
230
// Block requests until the Webpack compilation is done.
257
231
function requestBlocker ( ) {
@@ -327,8 +301,25 @@ sourceMapReporter.$inject = ['baseReporterDecorator', 'config'];
327
301
function fallbackMiddleware ( ) {
328
302
return function ( request : http . IncomingMessage , response : http . ServerResponse , next : ( ) => void ) {
329
303
if ( webpackMiddleware ) {
330
- request . url = '/' + KARMA_APPLICATION_PATH + request . url ;
331
- webpackMiddleware ( request , response , next ) ;
304
+ if ( request . url && ! new RegExp ( `\\/${ KARMA_APPLICATION_PATH } \\/.*` ) . test ( request . url ) ) {
305
+ request . url = '/' + KARMA_APPLICATION_PATH + request . url ;
306
+ }
307
+ webpackMiddleware ( request , response , ( ) => {
308
+ const alwaysServe = [
309
+ `/${ KARMA_APPLICATION_PATH } /runtime.js` ,
310
+ `/${ KARMA_APPLICATION_PATH } /polyfills.js` ,
311
+ `/${ KARMA_APPLICATION_PATH } /polyfills-es5.js` ,
312
+ `/${ KARMA_APPLICATION_PATH } /scripts.js` ,
313
+ `/${ KARMA_APPLICATION_PATH } /styles.js` ,
314
+ `/${ KARMA_APPLICATION_PATH } /vendor.js` ,
315
+ ] ;
316
+ if ( request . url && alwaysServe . includes ( request . url ) ) {
317
+ response . statusCode = 200 ;
318
+ response . end ( ) ;
319
+ } else {
320
+ next ( ) ;
321
+ }
322
+ } ) ;
332
323
} else {
333
324
next ( ) ;
334
325
}
0 commit comments