mirror of
https://github.com/morluto/rea.git
synced 2026-11-15 19:23:24 +00:00
refactor(domain): give strict UTF-8 decoding one owner with an explicit BOM policy (#10728)
* refactor(domain): give strict UTF-8 decoding one owner with an explicit BOM policy * fix(domain): keep the leading-BOM behaviour every migrated UTF-8 decoder had * refactor(domain): read the domain layer's strict UTF-8 through the BOM-policy owner (#10803) Twelve domain decoders built their own fatal TextDecoder with ignoreBOM: true. They now use strictUtf8Decoder("preserve"), which keeps that behaviour: each reads bytes where a leading U+FEFF is content (binary-format names and fields, JSON and XML read byte-for-byte, recorded bodies, registry seeds whose kept bytes are re-emitted). The counted baseline drops from 74 to 62. * refactor(artifacts): read artifact readers' strict UTF-8 through the BOM-policy owner (#10871) Fourteen artifact reader modules (17 sites) built their own fatal TextDecoder. They now take it from strictUtf8Decoder with the policy each had: every one kept a leading BOM (ignoreBOM: true), so they use "preserve"; JavaScriptArtifactFiles keeps it for JavaScript and HTML entries and strips it otherwise, as before. The strict-utf8-decoder baseline drops those 17 sites. * refactor(domain): drop TextDecoder imports left by the strict UTF-8 migration * refactor(application): read MCP registration metadata through the strict UTF-8 owner * refactor(formats): read binary-format readers' strict UTF-8 through the BOM-policy owner (#10903) * refactor(formats): read binary-format readers' strict UTF-8 through the BOM-policy owner * refactor(formats): drop the model readers' unused TextDecoder imports * refactor(browser): read browser capture and fetch strict UTF-8 through the BOM-policy owner (#10935) * refactor(browser): read browser capture and fetch strict UTF-8 through the BOM-policy owner * refactor(native): read LLDB and Mach-O name strict UTF-8 through the BOM-policy owner (#10936) * refactor(native): read LLDB and Mach-O name strict UTF-8 through the BOM-policy owner * refactor(process): read MCP and NDJSON transport frames' strict UTF-8 through the BOM-policy owner (#10937) * refactor(process): read MCP and NDJSON transport frames' strict UTF-8 through the BOM-policy owner * refactor(application): read JSON and file inputs' strict UTF-8 through the BOM-policy owner (#10938) * refactor(application): read JSON and file inputs' strict UTF-8 through the BOM-policy owner * refactor(providers): read IDA, Electron, Ghidra and reference strict UTF-8 through the BOM-policy owner (#10939) * refactor(providers): read IDA, Electron, Ghidra and reference strict UTF-8 through the BOM-policy owner * refactor(evm): read the hex bytecode carrier's strict UTF-8 through the owner and refuse new local decoders (#10940) * refactor(evm): read the hex bytecode carrier's strict UTF-8 through the BOM-policy owner * chore(architecture): match local strict UTF-8 decoders in any option order
This commit is contained in:
1 parent
abd36dd250
commit
cabd56ea71
103 files changed
+322
-251
No files matched your search
@@ -301,6 +301,9 @@
|
||||
"src/sqlite/SqliteDatabaseWorkerExecution.ts": 2,
|
||||
"src/wasm/WabtArtifactProvider.ts": 1
|
||||
},
|
||||
"strict-utf8-decoder": {
|
||||
"src/browser/PlaywrightScenarioRequest.ts": 1
|
||||
},
|
||||
"path-search-split": {
|
||||
"src/process/capture/ProcessScenarioRuntimeValidation.ts": 1
|
||||
},
|
||||
|
||||
@@ -330,6 +330,19 @@ checkCounted(
|
||||
["src/pcap/TsharkJsonPackets.ts"],
|
||||
);
|
||||
|
||||
// Strict UTF-8 decoding has one owner, src/domain/strictUtf8.ts, which makes
|
||||
// each site state its byte-order-mark policy. A local fatal decoder silently
|
||||
// strips a leading BOM unless it remembers ignoreBOM. The pattern matches the
|
||||
// options in any order and an omitted label. The remaining copy runs inside a
|
||||
// browser page through page.evaluate, which cannot import the owner.
|
||||
checkCounted(
|
||||
"local strict UTF-8 TextDecoder (use strictUtf8Decoder, decodeStrictUtf8 or isStrictUtf8 from src/domain/strictUtf8)",
|
||||
"strict-utf8-decoder",
|
||||
files,
|
||||
/new TextDecoder\(\s*(?:(?:["'`]utf-?8["'`]|undefined)\s*,\s*)?\{[^}]*\bfatal:\s*true/giu,
|
||||
["src/domain/strictUtf8.ts"],
|
||||
);
|
||||
|
||||
// Turning a completed result into a cancellation after cleanup is the
|
||||
// finalization precedence that runOwned owns (src/providers/runOwned.ts).
|
||||
checkCounted(
|
||||
|
||||
Reference in new issue
Block a user