@@ -51,13 +51,12 @@ module.exports = {
51
51
var overwrite = this . readConfig ( 'overwrite' ) ;
52
52
var includeAppVersion = this . readConfig ( 'includeAppVersion' ) ;
53
53
var promises = [ ] ;
54
- var jsFilePaths = fetchFilePaths ( distFiles , publicUrl , 'js' ) ;
55
- var mapFilePaths = fetchFilePaths ( distFiles , distDir , 'map' ) ;
54
+ var jsMapPairs = fetchJSMapPairs ( distFiles , publicUrl , distDir ) ;
56
55
log ( 'Uploading sourcemaps to bugsnag' , { verbose : true } ) ;
57
56
58
- for ( var i = 0 ; i < mapFilePaths . length ; i ++ ) {
59
- var mapFilePath = mapFilePaths [ i ] ;
60
- var jsFilePath = jsFilePaths [ i ] ;
57
+ for ( var i = 0 ; i < jsMapPairs . length ; i ++ ) {
58
+ var mapFilePath = jsMapPairs [ i ] . mapFile ;
59
+ var jsFilePath = jsMapPairs [ i ] . jsFile ;
61
60
var formData = {
62
61
apiKey : apiKey ,
63
62
overwrite : overwrite ,
@@ -124,6 +123,27 @@ module.exports = {
124
123
}
125
124
} ;
126
125
126
+ function fetchJSMapPairs ( distFiles , publicUrl , distUrl ) {
127
+ var jsFiles = indexByBaseFilename ( fetchFilePaths ( distFiles , '' , 'js' ) ) ;
128
+ return fetchFilePaths ( distFiles , '' , 'map' ) . map ( function ( mapFile ) {
129
+ return {
130
+ mapFile : distUrl + mapFile ,
131
+ jsFile : publicUrl + jsFiles [ getBaseFilename ( mapFile ) ]
132
+ } ;
133
+ } ) ;
134
+ }
135
+
136
+ function indexByBaseFilename ( files ) {
137
+ return files . reduce ( function ( result , file ) {
138
+ result [ getBaseFilename ( file ) ] = file ;
139
+ return result ;
140
+ } , { } ) ;
141
+ }
142
+
143
+ function getBaseFilename ( file ) {
144
+ return file . replace ( / - [ 0 - 9 a - f ] + \. ( j s | m a p ) $ / , '' ) ;
145
+ }
146
+
127
147
function fetchFilePaths ( distFiles , basePath , type ) {
128
148
return distFiles . filter ( function ( filePath ) {
129
149
return new RegExp ( 'assets\/.*\\.' + type + '$' ) . test ( filePath ) ;
0 commit comments