@@ -32,18 +32,26 @@ class ModuleSource {
3232 fileName : string ;
3333 compiledCode : string ;
3434 sourceMap : ?SourceMap ;
35+ sourceEqualsCompiled : boolean ;
3536
36- constructor ( fileName : string , compiledCode : string , sourceMap : ?SourceMap ) {
37+ constructor (
38+ fileName : string ,
39+ compiledCode : string ,
40+ sourceMap : ?SourceMap ,
41+ sourceEqualsCompiled = false
42+ ) {
3743 this . fileName = fileName ;
3844 this . compiledCode = compiledCode ;
3945 this . sourceMap = sourceMap ;
46+ this . sourceEqualsCompiled = sourceEqualsCompiled ;
4047 }
4148}
4249
4350export type SerializedTranspiledModule = {
4451 module : Module ,
4552 query : string ,
4653 source : ?ModuleSource ,
54+ sourceEqualsCompiled : boolean ,
4755 assets : {
4856 [ name : string ] : ModuleSource ,
4957 } ,
@@ -594,13 +602,21 @@ export default class TranspiledModule {
594602 }
595603 }
596604
597- // Add the source of the file by default, this is important for source mapping
598- // errors back to their origin
599- code = `${ code } \n//# sourceURL=${ location . origin } ${ this . module . path } ${
605+ const sourceEqualsCompiled = code === this . module . code ;
606+ const sourceURL = `//# sourceURL=${ location . origin } ${ this . module . path } ${
600607 this . query ? `?${ this . hash } ` : ''
601608 } `;
602609
603- this . source = new ModuleSource ( this . module . path , code , finalSourceMap ) ;
610+ // Add the source of the file by default, this is important for source mapping
611+ // errors back to their origin
612+ code = `${ code } \n${ sourceURL } ` ;
613+
614+ this . source = new ModuleSource (
615+ this . module . path ,
616+ code ,
617+ finalSourceMap ,
618+ sourceEqualsCompiled
619+ ) ;
604620
605621 if (
606622 this . previousSource &&
@@ -902,13 +918,19 @@ export default class TranspiledModule {
902918 serialize ( ) : SerializedTranspiledModule {
903919 const serializableObject = { } ;
904920
921+ const sourceEqualsCompiled =
922+ this . source && this . source . sourceEqualsCompiled ;
923+
905924 serializableObject . query = this . query ;
906925 serializableObject . assets = this . assets ;
907926 serializableObject . module = this . module ;
908927 serializableObject . emittedAssets = this . emittedAssets ;
909928 serializableObject . isEntry = this . isEntry ;
910929 serializableObject . isTestFile = this . isTestFile ;
911- serializableObject . source = this . source ;
930+ if ( ! sourceEqualsCompiled ) {
931+ serializableObject . source = this . source ;
932+ }
933+ serializableObject . sourceEqualsCompiled = sourceEqualsCompiled ;
912934 serializableObject . childModules = this . childModules . map ( m => m . getId ( ) ) ;
913935 serializableObject . dependencies = Array . from ( this . dependencies ) . map ( m =>
914936 m . getId ( )
@@ -946,7 +968,17 @@ export default class TranspiledModule {
946968 this . emittedAssets = data . emittedAssets ;
947969 this . isEntry = data . isEntry ;
948970 this . isTestFile = data . isTestFile ;
949- this . source = data . source ;
971+
972+ if ( data . sourceEqualsCompiled ) {
973+ this . source = new ModuleSource (
974+ this . module . path ,
975+ this . module . code ,
976+ null ,
977+ true
978+ ) ;
979+ } else {
980+ this . source = data . source ;
981+ }
950982
951983 const loadModule = (
952984 depId : string ,
0 commit comments