sprockets icon indicating copy to clipboard operation
sprockets copied to clipboard

esbuild fingerprint detection broken

Open jarednorman opened this issue 3 years ago • 4 comments

Expected behavior

According to its description, #718 was meant to make it so that esbuild's chunk hashing could be detected by sprockets to avoid adding a second fingerprint. All that should be required by the user is to add .digested to the chunk name to make it more detectable and avoid false positives.

Actual behavior

The assets are refingerprinted.

The pattern does not match the current fingerprinting used by esbuild. It changed from SHA1 to xxHash in this PR. The hashes that esbuild now generates are base32, uppercase, exactly 8 chars.

The pattern than detects the fingerprinting is /-([0-9a-f]{7,128})\.digested/. (link)

Here's an example of a build with a line highlighting showing a hashed asset receiving a fingerprint from Sprockets:

CleanShot 2021-12-13 at 14 08 35

System configuration

  • Sprockets version: master
  • Ruby version: 2.7.4p191
  • Rails version: 6.1.4.1

Example App (Reproduction)

Sorry, no reproduction app, but I'm totally happy to make a PR to fix this.

jarednorman avatar Dec 13 '21 22:12 jarednorman

I can whip up a PR to change the fingerprint detection from /-([0-9a-f]{7,128})\.digested/ to something like /-([0-9a-zA-Z]{7,128})\.digested/ if that's not too permissive. I know the original intent was to avoid false positives, but with the \.digested that shouldn't be an issue.

jarednorman avatar Dec 13 '21 22:12 jarednorman

👍 Given that some systems are case-insensitive treating A-Z the same as a-z seems like a good idea

jhawthorn avatar Dec 13 '21 22:12 jhawthorn

Hi, i think there is a pull request for this issue by @dhh, that will address this issue on the way you have both described.

The exact same change, has been recently merged into the main branch of the propshaft gem.

thanosbellos avatar Dec 26 '21 11:12 thanosbellos

Yep, that should resolve this!

jarednorman avatar Dec 27 '21 19:12 jarednorman