fix(js): dalLoadLanguage tree-shaking — przywróć polskie i18n DAL (2.6) - #649
Merged
Conversation
Vendored dal/i18n/pl.js deklaruje `var dalLoadLanguage` w zasięgu globalnym, ale esbuild bundluje każdy plik w osobnym scope. Binding jest nieużywany w module i wolny od side-effectów, więc tree-shaking go wycina (zostaje tylko dispatch eventu). autocomplete_light.js odwołuje się do `dalLoadLanguage` jako do globala → cichy ReferenceError, DAL select2 traci polskie i18n. To inny mechanizm niż łata shell:patchBundle (#627, aliasowanie zmangowanego `yl` na window.yl), więc tamta łata tego nie obejmuje. Naprawa: lokalny wrapper dal-i18n-pl.js eksportuje dalLoadLanguage na window (odporny na tree-shaking, wzorzec jak select2-pl.js) i odtwarza side-effect (rejestracja select2/i18n/pl + event dal-language-loaded). bundle-entry.js importuje wrapper zamiast vendored i18n/pl.js. Dowód (grep w zbudowanym bundlu): przed 0 deklaracji, po 1 deklaracja (window.dalLoadLanguage=function). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019GmViAsaif9MXeuDMA5NHX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
dalLoadLanguagebył w produkcyjnym bundlu JS odwoływany, ale niezadeklarowany— esbuild tree-shakował
dal/i18n/pl.jsjako side-effect-free. Efekt: DAL select2tracił polskie i18n i rzucał
ReferenceError. Problem zastany, inny mechanizmniż mangling naprawiony w #627 (poz. 2.6 audytu).
Zmiana
Nowy wrapper
src/bpp/static/bpp/js/dal-i18n-pl.jsustawiawindow.dalLoadLanguage = function(...)i odtwarza side-effect (dispatch eventudal-language-loaded);bundle-entry.jsimportuje wrapper zamiast vendoredpl.js. Wzorzec 1:1 z istniejącymselect2-pl.js. Bundle gitignored → commitzawiera tylko źródło.
Odrzucone warianty:
--inject(więcej magii),sideEffectsw package.json(red herring — moduł ma side-effect, wycinany jest tylko wewnętrzny
var).Dowód
Realny build esbuild: 0 deklaracji → 1 deklaracja
window.dalLoadLanguage.Review potwierdziło empirycznie (build PRE/POST), że gołe wywołanie
dalLoadLanguage(...)zautocomplete_light.jsrozwiązuje się dowindow.dalLoadLanguage— brak przesłaniającego leksykalnego bindingu, więcklasa błędu #627 tu nie zachodzi. Kolejność wykonania potwierdzona bajtowo,
i18n kompletne (8 komunikatów), JS 46/46.
Weryfikacji w przeglądarce (brak ReferenceError w konsoli) nie odtwarzano —
dowód oparty na deklaracji w bundlu + analizie scope. Zalecany szybki smoke po
merge: otworzyć widżet DAL i sprawdzić polskie komunikaty + czystą konsolę.
Poz. 2.6 audytu.
🤖 Generated with Claude Code
https://claude.ai/code/session_019GmViAsaif9MXeuDMA5NHX