Skip to content

Update uglify-js to 3.19.3 - #14

Merged
erseco merged 1 commit into
mainfrom
chore/update-uglify-js
Sep 19, 2026
Merged

erseco merged 1 commit into
mainfrom
chore/update-uglify-js

Conversation

@erseco

@erseco erseco commented Sep 19, 2026

Copy link
Copy Markdown

The minifier — so unlike the http-server and Jake updates, this one is expected to change the generated bytes, and it does.

3.3.27   ff9f393782d4b3f395b409f20afed1f0e1f855f1fc1a02dbdd4b1ec449d715e0   111,220 bytes
3.19.3   a3a26210ce5e662136417e436b5e75ba36a80e68bcd0e90f34602d378faedd26   110,307 bytes

913 bytes smaller across the same 126 lines — the file's structure is unchanged and 32 lines simply compress differently.

Why the new hash is not a regression

A different hash is the point of the upgrade, so it was checked rather than assumed:

Check Result
Marker counts — _("Add"), _("Central Idea"), _r(, saveAs, minicolors, mousewheel, dragscrollable, tmpl, hotkeys identical on both sides
Set of distinct translated strings identical
Two clean builds byte-identical (a3a26210ce5e…)
eXeLearning Playwright suite 25 passed

The string set is the assertion that matters: a minifier that dropped or rewrote something reachable would show up there before it showed up as a bug.

No compress or mangle flags were added to imitate the old output. The new deterministic bytes are canonical from here.

Pinned exactly, like the other two tool updates.

The minifier, so unlike the other two tool updates this one is expected to
change the generated bytes, and it does:

  3.3.27   ff9f393782d4b3f395b409f20afed1f0e1f855f1fc1a02dbdd4b1ec449d715e0   111,220
  3.19.3   a3a26210ce5e662136417e436b5e75ba36a80e68bcd0e90f34602d378faedd26   110,307

913 bytes smaller across the same 126 lines: the file's structure is
unchanged and 32 lines compress differently. A different hash is the point
of the upgrade rather than a regression, so it was checked rather than
assumed. Every marker survives in the same count -- the translation hooks,
saveAs, and each bundled plugin -- and the set of distinct translated strings
is identical, which is what would change if the minifier had dropped or
rewritten something reachable.

No compress or mangle flags were added to imitate the old output. The new
deterministic bytes are canonical from here.

Two clean builds agree, and eXeLearning's browser suite passes all 25 tests
against this bundle.

Pinned exactly, like the other two.
@erseco
erseco merged commit 54af663 into main Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant