1.3 KiB
.NET regex engine
This is a fixed [JSExport] bridge over .NET 10.0.10
System.Text.RegularExpressions, built with SDK 10.0.302 for browser-wasm.
It always applies RegexOptions.CultureInvariant for deterministic local
results. Native match positions are UTF-16 offsets. The project uses
WebAssembly library mode because its [JSExport] methods are hosted directly
inside a module worker and do not require an executable entry point.
The bridge receives one JSON value and never evaluates user input as managed or
JavaScript source. A nine-second native regex timeout complements the app's
shorter killable-worker deadline. Match, capture-row, pattern, subject and
replacement-output limits are enforced in managed code as a second boundary.
Replacement templates are parsed once by a fixed streaming implementation of
.NET's $$, numbered/named-group, whole-match, left/right-context, last-group
and whole-input tokens. Engine startup compares that implementation with
native Match.Result on a parity corpus. Successful output crosses the JS
export as bounded UTF-8 bytes in canonical base64, avoiding unbounded
intermediate replacement strings and JSON escaping amplification.
Build from the pinned SDK plus wasm-tools workload:
/absolute/path/to/dotnet publish engines/dotnet/RegexTools.DotNet.csproj \
--configuration Release