@@ -18,8 +18,6 @@ import { logging } from '@angular-devkit/core';
1818import { BuildOptions } from '../../../../utils/build-options' ;
1919import { normalizeSourceMaps } from '../../../../utils/index' ;
2020
21- const KARMA_APPLICATION_PATH = '_karma_webpack_' ;
22-
2321let webpackMiddleware : webpackDevMiddleware . API < IncomingMessage , ServerResponse > ;
2422
2523const init : any = ( config : any , emitter : any ) => {
@@ -65,7 +63,6 @@ const init: any = (config: any, emitter: any) => {
6563 const webpackMiddlewareConfig = {
6664 // Hide webpack output because its noisy.
6765 stats : false ,
68- publicPath : `/${ KARMA_APPLICATION_PATH } /` ,
6966 } ;
7067
7168 config . webpackMiddleware = { ...webpackMiddlewareConfig , ...config . webpackMiddleware } ;
@@ -147,7 +144,7 @@ const sourceMapReporter: any = function (this: any, baseReporterDecorator: any,
147144 baseReporterDecorator ( this ) ;
148145 muteDuplicateReporterLogging ( this , config ) ;
149146
150- const urlRegexp = / h t t p : \/ \/ l o c a l h o s t : \d + \/ _ k a r m a _ w e b p a c k _ \/ ( w e b p a c k : \/ ) ? / gi;
147+ const urlRegexp = / h t t p : \/ \/ l o c a l h o s t : \d + \/ ( w e b p a c k : \/ ) ? / gi;
151148
152149 this . onSpecComplete = function ( _browser : any , result : any ) {
153150 if ( ! result . success ) {
@@ -164,35 +161,37 @@ const sourceMapReporter: any = function (this: any, baseReporterDecorator: any,
164161
165162sourceMapReporter . $inject = [ 'baseReporterDecorator' , 'config' ] ;
166163
164+ /**
165+ * List of files that are always served by the webpack server.
166+ */
167+ const alwaysServe : ReadonlySet < string > = new Set ( [
168+ '/runtime.js' ,
169+ '/polyfills.js' ,
170+ '/scripts.js' ,
171+ '/styles.css' ,
172+ '/vendor.js' ,
173+ ] ) ;
174+
167175// When a request is not found in the karma server, try looking for it from the webpack server root.
168176function fallbackMiddleware ( ) {
169177 return function (
170178 request : IncomingMessage ,
171179 response : ServerResponse ,
172180 next : ( err ?: unknown ) => void ,
173181 ) {
174- if ( webpackMiddleware ) {
175- if ( request . url && ! new RegExp ( `\\/${ KARMA_APPLICATION_PATH } \\/.*` ) . test ( request . url ) ) {
176- request . url = '/' + KARMA_APPLICATION_PATH + request . url ;
177- }
178- webpackMiddleware ( request , response , ( ) => {
179- const alwaysServe = [
180- `/${ KARMA_APPLICATION_PATH } /runtime.js` ,
181- `/${ KARMA_APPLICATION_PATH } /polyfills.js` ,
182- `/${ KARMA_APPLICATION_PATH } /scripts.js` ,
183- `/${ KARMA_APPLICATION_PATH } /styles.css` ,
184- `/${ KARMA_APPLICATION_PATH } /vendor.js` ,
185- ] ;
186- if ( request . url && alwaysServe . includes ( request . url ) ) {
187- response . statusCode = 200 ;
188- response . end ( ) ;
189- } else {
190- next ( ) ;
191- }
192- } ) ;
193- } else {
182+ if ( ! webpackMiddleware ) {
194183 next ( ) ;
184+ return ;
195185 }
186+
187+ webpackMiddleware ( request , response , ( ) => {
188+ if ( request . url && alwaysServe . has ( request . url ) ) {
189+ response . statusCode = 200 ;
190+ response . end ( ) ;
191+ } else {
192+ next ( ) ;
193+ }
194+ } ) ;
196195 } ;
197196}
198197
0 commit comments