Wire stream/Blob/WebSocket APIs to js.node.web types - #232
Merged
kevinresol merged 21 commits intoJul 14, 2026
Merged
Conversation
Add missing Node 24 fs/zlib APIs (openAsBlob, mkdtempDisposable*, Zstd), drop Haxe 3 conditionals in this section, and tighten Dynamic where possible. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop remaining Haxe 3 conditionals, prefer js.node.web.AbortSignal, and add core node:trace_events, node:sqlite, and node:sea surfaces. Co-authored-by: Cursor <cursoragent@cursor.com>
Add StatWatcher/Utf8Stream, Fs.promises, F_OK deprecations, glob URL cwd, FSWatcher ref/unref, Zlib options polish, and PathModule.toNamespacedPath. Co-authored-by: Cursor <cursoragent@cursor.com>
Fill net/http/https/http2/tls/dgram/dns/tty API gaps against Node 24, replace Haxe 3 conditionals with Haxe 4 types, and tighten Dynamics where practical. Co-authored-by: Cursor <cursoragent@cursor.com>
Align child_process, cluster, readline, repl, vm, v8, and domain with Node 24 APIs, drop Haxe 3 conditionals, and add core async_hooks, worker_threads, and wasi stubs. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop Haxe 3 conditionals across events, stream, buffer, timers, process, module, and globals; add missing Node 24 public APIs; tighten Dynamics where types exist; leave cross-section TODOs for web streams and IPC/loader types. Co-authored-by: Cursor <cursoragent@cursor.com>
Fix registerStorage options shape, expose DatabaseSync open/txn/limits, tighten Network headers typing, and clean MockTracker formatting. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop Haxe 3 conditionals, add missing Node 24 APIs (KeyObject, X509, MIMEType, CallTracker, URLPattern, argon2/KEM, parseArgs, etc.), and narrow avoidable Dynamic usage with remaining gaps marked TODO(section-4). Co-authored-by: Cursor <cursoragent@cursor.com>
Drop Haxe 3 import gates, tighten Dynamic/Any typing for fetch/abort/events, and add missing Node 24 web-platform externs (streams, messaging, WebSocket, EventSource, Navigator/locks, Storage, encoding globals). Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…cross-wiring-web-streams
…ross-wiring-web-streams
…s-wiring-web-streams
…s-wiring-web-streams
…re/cross-wiring-web-streams
…-wiring-web-streams
…-wiring-web-streams
Connect Readable/Writable/Duplex fromWeb/toWeb, Buffer.resolveObjectURL, FileHandle.readableWebStream, and http.WebSocket to the section 6 web externs and drop the resolved TODO(section-6) placeholders. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Priority A1 cross-section wiring: connects consumers to the §6
js.node.web.*externs added by the audit PRs, replacing theDynamic/Anyplaceholders left asTODO(section-6)markers. Depends on the type surface merged in audit PRs #224–#230 (already merged intomaster).stream/Readable.hx,stream/Writable.hx,stream/Duplex.hx: typefromWeb/toWeb(andDuplex.fromWeb/toWebpair) againstjs.node.web.ReadableStream/WritableStream(Duplex reuses the existingReadableStream.ReadableWritablePairtypedef)buffer/Buffer.hx:resolveObjectURLreturnsjs.node.web.Blobfs/FileHandle.hx:readableWebStreamreturnsjs.node.web.ReadableStreamHttp.hx:http.WebSocketnow typed asClass<js.node.web.WebSocket>instead ofClass<Any>Removes the now-resolved
TODO(section-6)markers in these files. OtherTODO(section-6)markers outside this wiring scope (e.g. undici dispatcher options inweb/WebSocket.hx/web/EventSource.hx/web/Request.hx) are left untouched.Files changed for wiring:
src/js/node/stream/Readable.hxsrc/js/node/stream/Writable.hxsrc/js/node/stream/Duplex.hxsrc/js/node/buffer/Buffer.hxsrc/js/node/fs/FileHandle.hxsrc/js/node/Http.hxTest plan
haxe build.hxml(passes; only pre-existing, unrelated deprecation/init warnings)Made with Cursor