mirror of https://github.com/webpack/webpack.git
				
				
				
			Revert "Improve performance of hashRegExp lookup"
This commit is contained in:
		
							parent
							
								
									c989143379
								
							
						
					
					
						commit
						52b1b0e4ad
					
				|  | @ -178,43 +178,10 @@ class RealContentHashPlugin { | |||
| 						} | ||||
| 					} | ||||
| 					if (hashToAssets.size === 0) return; | ||||
| 					const hashRegExps = Array.from(hashToAssets.keys(), quoteMeta).map( | ||||
| 						hash => new RegExp(hash, "g") | ||||
| 					const hashRegExp = new RegExp( | ||||
| 						Array.from(hashToAssets.keys(), quoteMeta).join("|"), | ||||
| 						"g" | ||||
| 					); | ||||
| 
 | ||||
| 					/** | ||||
| 					 * @param {string} str string to be matched against all hashRegExps | ||||
| 					 * @returns {string[] | null} matches found | ||||
| 					 */ | ||||
| 					const hashMatch = str => { | ||||
| 						/** @type {string[]} */ | ||||
| 						const results = []; | ||||
| 						for (const hashRegExp of hashRegExps) { | ||||
| 							const matches = str.match(hashRegExp); | ||||
| 							if (matches) { | ||||
| 								matches.forEach(match => results.push(match)); | ||||
| 							} | ||||
| 						} | ||||
| 						if (results.length) { | ||||
| 							return results; | ||||
| 						} else { | ||||
| 							return null; | ||||
| 						} | ||||
| 					}; | ||||
| 
 | ||||
| 					/** | ||||
| 					 * @param {string} str string to be replaced with all hashRegExps | ||||
| 					 * @param {function(string): string} fn replacement function to use when a hash is found | ||||
| 					 * @returns {string} replaced content | ||||
| 					 */ | ||||
| 					const hashReplace = (str, fn) => { | ||||
| 						let result = str; | ||||
| 						for (const hashRegExp of hashRegExps) { | ||||
| 							result = result.replace(hashRegExp, fn); | ||||
| 						} | ||||
| 						return result; | ||||
| 					}; | ||||
| 
 | ||||
| 					await Promise.all( | ||||
| 						assetsWithInfo.map(async asset => { | ||||
| 							const { name, source, content, hashes } = asset; | ||||
|  | @ -231,7 +198,7 @@ class RealContentHashPlugin { | |||
| 								await cacheAnalyse.providePromise(name, etag, () => { | ||||
| 									const referencedHashes = new Set(); | ||||
| 									let ownHashes = new Set(); | ||||
| 									const inContent = hashMatch(content); | ||||
| 									const inContent = content.match(hashRegExp); | ||||
| 									if (inContent) { | ||||
| 										for (const hash of inContent) { | ||||
| 											if (hashes.has(hash)) { | ||||
|  | @ -331,7 +298,7 @@ ${referencingAssets | |||
| 									identifier, | ||||
| 									etag, | ||||
| 									() => { | ||||
| 										const newContent = hashReplace(asset.content, hash => | ||||
| 										const newContent = asset.content.replace(hashRegExp, hash => | ||||
| 											hashToNewHash.get(hash) | ||||
| 										); | ||||
| 										return new RawSource(newContent); | ||||
|  | @ -356,12 +323,15 @@ ${referencingAssets | |||
| 									identifier, | ||||
| 									etag, | ||||
| 									() => { | ||||
| 										const newContent = hashReplace(asset.content, hash => { | ||||
| 											if (asset.ownHashes.has(hash)) { | ||||
| 												return ""; | ||||
| 										const newContent = asset.content.replace( | ||||
| 											hashRegExp, | ||||
| 											hash => { | ||||
| 												if (asset.ownHashes.has(hash)) { | ||||
| 													return ""; | ||||
| 												} | ||||
| 												return hashToNewHash.get(hash); | ||||
| 											} | ||||
| 											return hashToNewHash.get(hash); | ||||
| 										}); | ||||
| 										); | ||||
| 										return new RawSource(newContent); | ||||
| 									} | ||||
| 								); | ||||
|  | @ -407,7 +377,7 @@ ${referencingAssets | |||
| 					await Promise.all( | ||||
| 						assetsWithInfo.map(async asset => { | ||||
| 							await computeNewContent(asset); | ||||
| 							const newName = hashReplace(asset.name, hash => | ||||
| 							const newName = asset.name.replace(hashRegExp, hash => | ||||
| 								hashToNewHash.get(hash) | ||||
| 							); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue