Sprint 22: NameTooLong — ES Module base64 data URL Limit für große Bundles #84
Labels
No labels
bug
docs
feature
housekeeping
html-spec
performance
react-compat
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
glow-all/true-headless-browser#84
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problembeschreibung
Große ES Module Bundles (> ~50KB) können nicht via data: URL mit base64-Encoding geladen werden. Bun wirft
NameTooLongbeim Resolving der data: URL.Betroffene Sites:
vuejs.org— 62KB DOM statt ~180KB (NameTooLong aufapp.B-L3wdP1.js)solidjs.com— 2.4KB DOM statt ~100KB (NameTooLong aufindex-DSQFfTO_.js)Crawl-Output:
Aktuelle Architektur
Sprint 15 (Issue #71): Basis-Implementierung mit Bun Plugin, der URL-Auflösung und data: URL für Module-Inhalte.
Sprint 16 (Issue #74): Verbesserte URL-Auflösung mit CDN-Fetch + data: URL Fallback.
Option A: Temp-Datei auf Disk (empfohlen)
Statt base64 in data: URL zu packen, den Modul-Code in eine temporäre
.mjsDatei auf Disk schreiben undimport()auf den file:// Pfad routen.Vorteile:
Nachteile:
Implementierung:
Option B: Bun Plugin mit Blob URL
Bun unterstützt Blob URLs für Module? In älteren Versionen mit Einschränkungen.
Option C: Chunked data: URL
Base64 encoding in Häppchen aufteilen und via
import()verkettet laden.Abgelehnt — zu komplex, browserinkompatibel.
Akzeptanzkriterien
NameTooLongFehler mehrBetroffene Dateien
src/js/execution-realm.tssrc/js/script-loader.tssrc/pages/page.tsbunfig.tomlTestplan
✅ Memory-Only Fix — Issue #84 Geschlossen
Commit:
34796bbWas geändert wurde
_loadFromFileschrieb Tempfiles nach/tmp/thb-modules/{hash}.mjs_loadFromBlobURLnutztURL.createObjectURL(new Blob(...))_ensureModuleDir()+mkdir -pWarum Blob-URLs?
Bun 1.3.14 wirft
NameTooLongfürdata:text/javascript;base64,...URLs >~500KB (der Base64-kodierte Sourcecode überschreitet interne Pfad-Limits).blob:URLs haben kurze, feste Längen (z.B.blob:http://localhost/42) — das Source-Content-Encoding liegt im Blob, nicht in der URL.Getestet und bestätigt:
data:URL kleinblob:URL kleindata:URL ~600KBblob:URL ~600KBblob:URL 2MB0 Regression
1519 pass / 4 pre-existing fail — alle bestehenden Tests weiterhin grün.
Bereinigt (-22 Zeilen)
_moduleDirEnsuredentfernt_ensureModuleDir()entfernt_loadFromFile()entfernt/tmp/thb-modules/wird nicht mehr benötigt