deno_web extension provides foundational web platform APIs that other extensions build upon. It implements standards like Streams, TextEncoder/TextDecoder, Blob, File, and more.
Location
ext/web/
What It Provides
Text Encoding
- TextEncoder - Encodes strings to UTF-8 bytes
- TextDecoder - Decodes bytes to strings with various encodings
- Base64 encoding and decoding (atob/btoa)
Streams API
Implements the WHATWG Streams standard:ReadableStream- For reading dataWritableStream- For writing dataTransformStream- For transforming data
Blob and File
Binary data handling:Events
Event- Base event classCustomEvent- Custom events with detailEventTarget- Event dispatchingAbortSignal/AbortController- Cancellation
Timers
Standard timer functions:setTimeout/clearTimeoutsetInterval/clearIntervalqueueMicrotaskperformance.now()- High-resolution timestamps
Compression
Compression and decompression streams:CompressionStream- gzip, deflateDecompressionStream- gzip, deflate
URL Processing
- URL parsing and manipulation
- URLSearchParams
- URLPattern (for URL pattern matching)
Message Ports
Cross-context communication:Key Operations
The extension exposes these Rust operations to JavaScript:Encoding Operations
Blob Operations
Stream Operations
Implementation Details
Extension Definition
Blob Storage
Blobs are stored in a sharedBlobStore for efficient memory management:
Performance Optimizations
- Fast paths for UTF-8 encoding/decoding
- SIMD-accelerated base64 operations
- Zero-copy buffer handling where possible
- Efficient streaming with backpressure
Dependencies
deno_webidl- WebIDL type conversions- External crates:
encoding_rs- Character encodingbase64-simd- Fast base64url- URL parsing
File Structure
Testing
The extension is tested through:- Unit tests in Rust code
- Integration tests in
cli/tests/ - Web Platform Tests (WPT) in
tests/wpt/
Standards Compliance
Implements these web standards:See Also
- Fetch Extension - Builds on web APIs
- WebSocket Extension - Uses streams and events