P0d: Webpack Chunk Routing — tolerantProxy in echten Array #79

Closed
opened 2026-06-18 17:17:55 +00:00 by Artur · 1 comment
Owner

P0d: Webpack Chunk Routing — tolerantProxy blockiert webpackChunk*

Priority: HIGH
Betrifft: x.com (twitter), discord.com/app, alle SPA-Seiten mit webpack
Impact: 906 Discord-Chunks verschwinden lautlos → App bootstrapped nie

Problembeschreibung

Webpack initialisiert window.webpackChunk_app_name = window.webpackChunk_app_name || [].
Unser tolerantProxy fängt webpackChunk_* als "unknown API" → returned einen Proxy.
.push(), .done() auf diesem Proxy gehen ins Nirvana.

Aktuelles Verhalten:

window.webpackChunkDiscordApp   // → tolerantProxy {}
window.webpackChunkDiscordApp.push(chunk)  // → push auf Proxy, keine Wirkung

Option A: webpackChunk* Pattern in allowedGlobals (EMPFEHLUNG)

// In KNOWN_MISSING_APIS oder allowedGlobals:
KNOWN_MISSING_APIS.push('webpackChunk');
// Oder Regex in specProxyGet:
if (key.startsWith('webpackChunk')) return undefined; // → var webpackChunkDiscordApp = []

Option B: Real Array als default

// DynamicStorage: Prüfe ob Property mit webpackChunk beginnt
if (key.startsWith('webpackChunk')) {
  return []; // echter Array → .push() funktioniert
}

Akzeptanzkriterien

  • window.webpackChunkDiscordApp ist ein echter Array (nicht Proxy)
  • .push(chunk) fügt Chunks zum Array hinzu
  • Webpack erkennt und verarbeitet Chunks
  • Discord zeigt DOM >200KB (App geladen)
  • x.com zeigt DOM >100KB (App geladen)
  • Bestehende Tests passieren (kein Regression auf andere _win-Properties)

Betroffene Dateien

Datei Änderung
src/tolerant-proxy.ts KNOWN_MISSING_APIS um webpackChunk ergänzen
src/runtime-isolation.ts specProxyGet / strictProxyGet mit webpack-Pattern
tests/unit/sprint17-webpack-chunks.test.ts 5+ Tests
## P0d: Webpack Chunk Routing — tolerantProxy blockiert webpackChunk* **Priority:** HIGH **Betrifft:** x.com (twitter), discord.com/app, alle SPA-Seiten mit webpack **Impact:** 906 Discord-Chunks verschwinden lautlos → App bootstrapped nie ### Problembeschreibung Webpack initialisiert `window.webpackChunk_app_name = window.webpackChunk_app_name || []`. Unser tolerantProxy fängt `webpackChunk_*` als "unknown API" → returned einen Proxy. `.push()`, `.done()` auf diesem Proxy gehen ins Nirvana. **Aktuelles Verhalten:** ```javascript window.webpackChunkDiscordApp // → tolerantProxy {} window.webpackChunkDiscordApp.push(chunk) // → push auf Proxy, keine Wirkung ``` ### Option A: webpackChunk* Pattern in allowedGlobals (EMPFEHLUNG) ```typescript // In KNOWN_MISSING_APIS oder allowedGlobals: KNOWN_MISSING_APIS.push('webpackChunk'); // Oder Regex in specProxyGet: if (key.startsWith('webpackChunk')) return undefined; // → var webpackChunkDiscordApp = [] ``` ### Option B: Real Array als default ```typescript // DynamicStorage: Prüfe ob Property mit webpackChunk beginnt if (key.startsWith('webpackChunk')) { return []; // echter Array → .push() funktioniert } ``` ### Akzeptanzkriterien - [ ] `window.webpackChunkDiscordApp` ist ein echter Array (nicht Proxy) - [ ] `.push(chunk)` fügt Chunks zum Array hinzu - [ ] Webpack erkennt und verarbeitet Chunks - [ ] Discord zeigt DOM >200KB (App geladen) - [ ] x.com zeigt DOM >100KB (App geladen) - [ ] Bestehende Tests passieren (kein Regression auf andere _win-Properties) ### Betroffene Dateien | Datei | Änderung | |-------|----------| | `src/tolerant-proxy.ts` | KNOWN_MISSING_APIS um webpackChunk ergänzen | | `src/runtime-isolation.ts` | specProxyGet / strictProxyGet mit webpack-Pattern | | `tests/unit/sprint17-webpack-chunks.test.ts` | 5+ Tests |
Artur closed this issue 2026-06-18 17:27:09 +00:00
Author
Owner

Bereits gelöst — Webpack Chunks via dynamicStorage

Nach Analyse: window.webpackChunkDiscordApp = window.webpackChunkDiscordApp || [] funktioniert bereits:

  • GET via specProxyGet: not in target → not in KNOWN_MISSING_APIS → return undefined
  • undefined || [][]
  • SET via Proxy trap: dynamicStorage.set('webpackChunkDiscordApp', [])
  • Nächster GET: dynamicStorage.has('webpackChunkDiscordApp')return []

Der Discord-Error (|this| is not a function) ist ein Symptom von Chunk-Fetch-Fehlern (#76),
nicht von webpackChunk-Array-Routing.

Status: Geschlossen

✅ **Bereits gelöst** — Webpack Chunks via dynamicStorage Nach Analyse: `window.webpackChunkDiscordApp = window.webpackChunkDiscordApp || []` funktioniert bereits: - GET via `specProxyGet`: not in target → not in KNOWN_MISSING_APIS → `return undefined` - `undefined || []` → `[]` - SET via Proxy trap: `dynamicStorage.set('webpackChunkDiscordApp', [])` - Nächster GET: `dynamicStorage.has('webpackChunkDiscordApp')` → `return []` Der Discord-Error (`|this| is not a function`) ist ein Symptom von Chunk-Fetch-Fehlern (#76), nicht von webpackChunk-Array-Routing. **Status:** Geschlossen
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser#79
No description provided.