Node API
Which parts of Node's built-in modules a compiled program can use. For each module, an export is what require("node:…") gives under Node v24.21.0: implemented, stubbed (it exists but throws when called), or missing. Measured by compiling a program that imports every provided module and lists its exports.
Reading this page
- One level deep:
http.createServercounts, the methods of the server it returns don't. Whether every option works is what the differential tests check. - A stub lets code that only mentions an export compile and run; calling it throws
ERR_VISALJS_UNSUPPORTED. - Generated by
node tests/compat/node.tsinto node/compat.json; the notes come from node/compat.notes.json.
Provided (56)
Importing these works. Expand a module to see its exports.
▸node:assert22 / 22complete
Node's, ported: every assertion, deep equality (loose, strict, partial), AssertionError with Node's messages and diffs, Assert and CallTracker. Diffs are never colored. assert.ok(value) without a message says false == true: Node quotes the call's source text, which it reads from the file at run time, and a compiled program has none.
Implemented (22)
- Assert
- AssertionError
- CallTracker
- deepEqual
- deepStrictEqual
- doesNotMatch
- doesNotReject
- doesNotThrow
- equal
- fail
- ifError
- match
- notDeepEqual
- notDeepStrictEqual
- notEqual
- notStrictEqual
- ok
- partialDeepStrictEqual
- rejects
- strict
- strictEqual
- throws
▸node:assert/strict22 / 22complete
node:assert's strict variant (see assert).
Implemented (22)
- Assert
- AssertionError
- CallTracker
- deepEqual
- deepStrictEqual
- doesNotMatch
- doesNotReject
- doesNotThrow
- equal
- fail
- ifError
- match
- notDeepEqual
- notDeepStrictEqual
- notEqual
- notStrictEqual
- ok
- partialDeepStrictEqual
- rejects
- strict
- strictEqual
- throws
▸node:async_hooks7 / 7complete
AsyncLocalStorage keeps its stores in the async context the runtime carries through promises, jobs, timers and I/O callbacks, as Node's AsyncContextFrame does; AsyncResource keeps the context it was created in. Hooks never fire, and async ids are counters.
Implemented (7)
- AsyncLocalStorage
- AsyncResource
- asyncWrapProviders
- createHook
- executionAsyncId
- executionAsyncResource
- triggerAsyncId
▸node:buffer14 / 14complete
Implemented (14)
- Blob
- Buffer
- File
- INSPECT_MAX_BYTES
- SlowBuffer
- atob
- btoa
- constants
- isAscii
- isUtf8
- kMaxLength
- kStringMaxLength
- resolveObjectURL
- transcode
▸node:console25 / 25complete
Implemented (25)
- Console
- assert
- clear
- context
- count
- countReset
- createTask
- debug
- dir
- dirxml
- error
- group
- groupCollapsed
- groupEnd
- info
- log
- profile
- profileEnd
- table
- time
- timeEnd
- timeLog
- timeStamp
- trace
- warn
▸node:diagnostics_channel6 / 6complete
Channels and TracingChannel as Node has them, bindStore and runStores with AsyncLocalStorage.
Implemented (6)
- Channel
- channel
- hasSubscribers
- subscribe
- tracingChannel
- unsubscribe
▸node:domain4 / 4complete
Implemented (4)
- Domain
- active
- create
- createDomain
▸node:events15 / 15complete
Implemented (15)
- EventEmitter
- EventEmitterAsyncResource
- addAbortListener
- captureRejectionSymbol
- captureRejections
- defaultMaxListeners
- errorMonitor
- getEventListeners
- getMaxListeners
- init
- listenerCount
- on
- once
- setMaxListeners
- usingDomains
▸node:fs/promises33 / 33complete
node:fs's calls as promises, and open's FileHandle (read, write, readv, writev, readFile, writeFile, stat, truncate, sync, utimes, chmod, chown, streams, readLines, close, Symbol.asyncDispose, 'close'); glob and watch as async iterators. lchmod is ERR_METHOD_NOT_IMPLEMENTED, as on Node outside macOS. Not yet: FileHandle.readableWebStream.
Implemented (33)
- access
- appendFile
- chmod
- chown
- constants
- copyFile
- cp
- glob
- lchmod
- lchown
- link
- lstat
- lutimes
- mkdir
- mkdtemp
- mkdtempDisposable
- open
- opendir
- readFile
- readdir
- readlink
- realpath
- rename
- rm
- rmdir
- stat
- statfs
- symlink
- truncate
- unlink
- utimes
- watch
- writeFile
▸node:https6 / 6complete
HTTP over node:tls, as Node's: Server is a tls.Server whose secure connections get http.Server's requests (the C parser fed the decrypted bytes), Agent connects with tls.connect and reuses TLS sessions by origin, request and get are http's with port 443. SNI comes from the Host header, as in Node.
Implemented (6)
- Agent
- Server
- createServer
- get
- globalAgent
- request
▸node:net16 / 16complete
TCP and Unix domain socket servers and sockets (Socket is a Duplex with backpressure, half-close and timeouts); host names through dns.lookup, with happy eyeballs. Not yet: passing handles to child processes (no child_process or cluster).
Implemented (16)
- BlockList
- BoundSocket
- Server
- Socket
- SocketAddress
- Stream
- connect
- createConnection
- createServer
- getDefaultAutoSelectFamily
- getDefaultAutoSelectFamilyAttemptTimeout
- isIP
- isIPv4
- isIPv6
- setDefaultAutoSelectFamily
- setDefaultAutoSelectFamilyAttemptTimeout
▸node:os23 / 23complete
Implemented (23)
- EOL
- arch
- availableParallelism
- constants
- cpus
- devNull
- endianness
- freemem
- getPriority
- homedir
- hostname
- loadavg
- machine
- networkInterfaces
- platform
- release
- setPriority
- tmpdir
- totalmem
- type
- uptime
- userInfo
- version
▸node:path16 / 16complete
Implemented (16)
- basename
- delimiter
- dirname
- extname
- format
- isAbsolute
- join
- matchesGlob
- normalize
- parse
- posix
- relative
- resolve
- sep
- toNamespacedPath
- win32
▸node:path/posix16 / 16complete
Implemented (16)
- basename
- delimiter
- dirname
- extname
- format
- isAbsolute
- join
- matchesGlob
- normalize
- parse
- posix
- relative
- resolve
- sep
- toNamespacedPath
- win32
▸node:path/win3216 / 16complete
Implemented (16)
- basename
- delimiter
- dirname
- extname
- format
- isAbsolute
- join
- matchesGlob
- normalize
- parse
- posix
- relative
- resolve
- sep
- toNamespacedPath
- win32
▸node:punycode6 / 6complete
Implemented (6)
- decode
- encode
- toASCII
- toUnicode
- ucs2
- version
▸node:querystring7 / 7complete
Implemented (7)
- decode
- encode
- escape
- parse
- stringify
- unescape
- unescapeBuffer
▸node:readline/promises3 / 3complete
node:readline's Interface with question() as a promise (an AbortSignal rejects it with an AbortError), and Readline's queued cursor moves.
Implemented (3)
- Interface
- Readline
- createInterface
▸node:sea5 / 5complete
Implemented (5)
- getAsset
- getAssetAsBlob
- getAssetKeys
- getRawAsset
- isSea
▸node:stream20 / 20complete
Implemented (20)
- Duplex
- PassThrough
- Readable
- Stream
- Transform
- Writable
- addAbortSignal
- compose
- destroy
- duplexPair
- finished
- getDefaultHighWaterMark
- isDestroyed
- isDisturbed
- isErrored
- isReadable
- isWritable
- pipeline
- promises
- setDefaultHighWaterMark
▸node:stream/promises2 / 2complete
Implemented (2)
- finished
- pipeline
▸node:string_decoder1 / 1complete
Implemented (1)
- StringDecoder
▸node:sys31 / 31complete
Implemented (31)
- MIMEParams
- MIMEType
- TextDecoder
- TextEncoder
- aborted
- callbackify
- convertProcessSignalToExitCode
- debug
- debuglog
- deprecate
- diff
- format
- formatWithOptions
- getCallSites
- getSystemErrorMap
- getSystemErrorMessage
- getSystemErrorName
- inherits
- inspect
- isArray
- isDeepStrictEqual
- parseArgs
- parseEnv
- promisify
- setTraceSigInt
- stripVTControlCharacters
- styleText
- toUSVString
- transferableAbortController
- transferableAbortSignal
- types
▸node:test/reporters5 / 5complete
Implemented (5)
- dot
- junit
- lcov
- spec
- tap
▸node:timers7 / 7complete
The globals are node:timers' functions, returning Timeout and Immediate objects, in programs that may use them (a Timeout's unref, hasRef or refresh, or node:timers itself; not with --no-bundle or --script); elsewhere they return numbers. A Timeout's primitive is its timer's id, not an async_hooks id.
Implemented (7)
- clearImmediate
- clearInterval
- clearTimeout
- promises
- setImmediate
- setInterval
- setTimeout
▸node:timers/promises4 / 4complete
Implemented (4)
- scheduler
- setImmediate
- setInterval
- setTimeout
▸node:trace_events2 / 2complete
Implemented (2)
- createTracing
- getEnabledCategories
▸node:util31 / 31complete
Implemented (31)
- MIMEParams
- MIMEType
- TextDecoder
- TextEncoder
- aborted
- callbackify
- convertProcessSignalToExitCode
- debug
- debuglog
- deprecate
- diff
- format
- formatWithOptions
- getCallSites
- getSystemErrorMap
- getSystemErrorMessage
- getSystemErrorName
- inherits
- inspect
- isArray
- isDeepStrictEqual
- parseArgs
- parseEnv
- promisify
- setTraceSigInt
- stripVTControlCharacters
- styleText
- toUSVString
- transferableAbortController
- transferableAbortSignal
- types
▸node:util/types43 / 43complete
Implemented (43)
- isAnyArrayBuffer
- isArgumentsObject
- isArrayBuffer
- isArrayBufferView
- isAsyncFunction
- isBigInt64Array
- isBigIntObject
- isBigUint64Array
- isBooleanObject
- isBoxedPrimitive
- isCryptoKey
- isDataView
- isDate
- isExternal
- isFloat16Array
- isFloat32Array
- isFloat64Array
- isGeneratorFunction
- isGeneratorObject
- isInt16Array
- isInt32Array
- isInt8Array
- isKeyObject
- isMap
- isMapIterator
- isModuleNamespaceObject
- isNativeError
- isNumberObject
- isPromise
- isProxy
- isRegExp
- isSet
- isSetIterator
- isSharedArrayBuffer
- isStringObject
- isSymbolObject
- isTypedArray
- isUint16Array
- isUint32Array
- isUint8Array
- isUint8ClampedArray
- isWeakMap
- isWeakSet
▸node:zlib47 / 47complete
Deflate, gzip and raw deflate with their inverses and Unzip, as streams, with callbacks and synchronous, on Chromium's zlib as Node vendors it: the same compressed bytes. A write's callback runs on a later turn, but the work happens when it is called (no thread pool). Brotli and zstd too, each linked into programs whose code names it (a name only computed at run time throws ERR_VISALJS_UNSUPPORTED).
Implemented (47)
- BrotliCompress
- BrotliDecompress
- Deflate
- DeflateRaw
- Gunzip
- Gzip
- Inflate
- InflateRaw
- Unzip
- ZstdCompress
- ZstdDecompress
- brotliCompress
- brotliCompressSync
- brotliDecompress
- brotliDecompressSync
- codes
- constants
- crc32
- createBrotliCompress
- createBrotliDecompress
- createDeflate
- createDeflateRaw
- createGunzip
- createGzip
- createInflate
- createInflateRaw
- createUnzip
- createZstdCompress
- createZstdDecompress
- deflate
- deflateRaw
- deflateRawSync
- deflateSync
- gunzip
- gunzipSync
- gzip
- gzipSync
- inflate
- inflateRaw
- inflateRawSync
- inflateSync
- unzip
- unzipSync
- zstdCompress
- zstdCompressSync
- zstdDecompress
- zstdDecompressSync
▸node:fs100 / 101partial
The synchronous calls, and the callback and promise forms over them (the I/O happens when called, not on a thread pool). readdir (recursive too), opendir and Dir, cp (Node's checks and messages), glob (minimatch's patterns: braces, classes, extglobs, **), statfs, readv and writev, openAsBlob, and watch (inotify, kqueue, … through libuv) and watchFile (a stat poller): the larger ones are linked into programs that name them. Not yet: the bigint option of watchFile, and Buffer paths in places.
Implemented (100)
- Dir
- Dirent
- FileReadStream
- FileWriteStream
- ReadStream
- Stats
- WriteStream
- access
- accessSync
- appendFile
- appendFileSync
- chmod
- chmodSync
- chown
- chownSync
- close
- closeSync
- constants
- copyFile
- copyFileSync
- cp
- cpSync
- createReadStream
- createWriteStream
- exists
- existsSync
- fchmod
- fchmodSync
- fchown
- fchownSync
- fdatasync
- fdatasyncSync
- fstat
- fstatSync
- fsync
- fsyncSync
- ftruncate
- ftruncateSync
- futimes
- futimesSync
- glob
- globSync
- lchown
- lchownSync
- link
- linkSync
- lstat
- lstatSync
- lutimes
- lutimesSync
- mkdir
- mkdirSync
- mkdtemp
- mkdtempDisposableSync
- mkdtempSync
- open
- openAsBlob
- openSync
- opendir
- opendirSync
- promises
- read
- readFile
- readFileSync
- readSync
- readdir
- readdirSync
- readlink
- readlinkSync
- readv
- readvSync
- realpath
- realpathSync
- rename
- renameSync
- rm
- rmSync
- rmdir
- rmdirSync
- stat
- statSync
- statfs
- statfsSync
- symlink
- symlinkSync
- truncate
- truncateSync
- unlink
- unlinkSync
- unwatchFile
- utimes
- utimesSync
- watch
- watchFile
- write
- writeFile
- writeFileSync
- writeSync
- writev
- writevSync
Missing (1)
- Utf8Stream
▸node:constants235 / 240partial
Deprecated in Node, still loaded by graceful-fs: os.constants' dlopen, errno, priority and signals, fs.constants and crypto.constants in one frozen object, as Node builds it. Has only the crypto constants node:crypto provides.
Implemented (235)
- COPYFILE_EXCL
- COPYFILE_FICLONE
- COPYFILE_FICLONE_FORCE
- DH_CHECK_P_NOT_PRIME
- DH_CHECK_P_NOT_SAFE_PRIME
- DH_NOT_SUITABLE_GENERATOR
- DH_UNABLE_TO_CHECK_GENERATOR
- E2BIG
- EACCES
- EADDRINUSE
- EADDRNOTAVAIL
- EAFNOSUPPORT
- EAGAIN
- EALREADY
- EBADF
- EBADMSG
- EBUSY
- ECANCELED
- ECHILD
- ECONNABORTED
- ECONNREFUSED
- ECONNRESET
- EDEADLK
- EDESTADDRREQ
- EDOM
- EDQUOT
- EEXIST
- EFAULT
- EFBIG
- EHOSTUNREACH
- EIDRM
- EILSEQ
- EINPROGRESS
- EINTR
- EINVAL
- EIO
- EISCONN
- EISDIR
- ELOOP
- EMFILE
- EMLINK
- EMSGSIZE
- EMULTIHOP
- ENAMETOOLONG
- ENETDOWN
- ENETRESET
- ENETUNREACH
- ENFILE
- ENGINE_METHOD_ALL
- ENGINE_METHOD_CIPHERS
- ENGINE_METHOD_DH
- ENGINE_METHOD_DIGESTS
- ENGINE_METHOD_DSA
- ENGINE_METHOD_EC
- ENGINE_METHOD_NONE
- ENGINE_METHOD_PKEY_ASN1_METHS
- ENGINE_METHOD_PKEY_METHS
- ENGINE_METHOD_RAND
- ENGINE_METHOD_RSA
- ENOBUFS
- ENODATA
- ENODEV
- ENOENT
- ENOEXEC
- ENOLCK
- ENOLINK
- ENOMEM
- ENOMSG
- ENOPROTOOPT
- ENOSPC
- ENOSR
- ENOSTR
- ENOSYS
- ENOTCONN
- ENOTDIR
- ENOTEMPTY
- ENOTSOCK
- ENOTSUP
- ENOTTY
- ENXIO
- EOPNOTSUPP
- EOVERFLOW
- EPERM
- EPIPE
- EPROTO
- EPROTONOSUPPORT
- EPROTOTYPE
- ERANGE
- EROFS
- ESPIPE
- ESRCH
- ESTALE
- ETIME
- ETIMEDOUT
- ETXTBSY
- EWOULDBLOCK
- EXDEV
- F_OK
- OPENSSL_VERSION_NUMBER
- O_APPEND
- O_CREAT
- O_DIRECT
- O_DIRECTORY
- O_DSYNC
- O_EXCL
- O_NOATIME
- O_NOCTTY
- O_NOFOLLOW
- O_NONBLOCK
- O_RDONLY
- O_RDWR
- O_SYNC
- O_TRUNC
- O_WRONLY
- POINT_CONVERSION_COMPRESSED
- POINT_CONVERSION_HYBRID
- POINT_CONVERSION_UNCOMPRESSED
- PRIORITY_ABOVE_NORMAL
- PRIORITY_BELOW_NORMAL
- PRIORITY_HIGH
- PRIORITY_HIGHEST
- PRIORITY_LOW
- PRIORITY_NORMAL
- RSA_NO_PADDING
- RSA_PKCS1_OAEP_PADDING
- RSA_PKCS1_PADDING
- RSA_PKCS1_PSS_PADDING
- RSA_PSS_SALTLEN_AUTO
- RSA_PSS_SALTLEN_DIGEST
- RSA_PSS_SALTLEN_MAX_SIGN
- RSA_X931_PADDING
- RTLD_DEEPBIND
- RTLD_GLOBAL
- RTLD_LAZY
- RTLD_LOCAL
- RTLD_NOW
- R_OK
- SIGABRT
- SIGALRM
- SIGBUS
- SIGCHLD
- SIGCONT
- SIGFPE
- SIGHUP
- SIGILL
- SIGINT
- SIGIO
- SIGIOT
- SIGKILL
- SIGPIPE
- SIGPOLL
- SIGPROF
- SIGPWR
- SIGQUIT
- SIGSEGV
- SIGSTKFLT
- SIGSTOP
- SIGSYS
- SIGTERM
- SIGTRAP
- SIGTSTP
- SIGTTIN
- SIGTTOU
- SIGURG
- SIGUSR1
- SIGUSR2
- SIGVTALRM
- SIGWINCH
- SIGXCPU
- SIGXFSZ
- SSL_OP_ALL
- SSL_OP_ALLOW_NO_DHE_KEX
- SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
- SSL_OP_CIPHER_SERVER_PREFERENCE
- SSL_OP_CISCO_ANYCONNECT
- SSL_OP_COOKIE_EXCHANGE
- SSL_OP_CRYPTOPRO_TLSEXT_BUG
- SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
- SSL_OP_LEGACY_SERVER_CONNECT
- SSL_OP_NO_COMPRESSION
- SSL_OP_NO_ENCRYPT_THEN_MAC
- SSL_OP_NO_QUERY_MTU
- SSL_OP_NO_RENEGOTIATION
- SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
- SSL_OP_NO_SSLv2
- SSL_OP_NO_SSLv3
- SSL_OP_NO_TICKET
- SSL_OP_NO_TLSv1
- SSL_OP_NO_TLSv1_1
- SSL_OP_NO_TLSv1_2
- SSL_OP_NO_TLSv1_3
- SSL_OP_PRIORITIZE_CHACHA
- SSL_OP_TLS_ROLLBACK_BUG
- S_IFBLK
- S_IFCHR
- S_IFDIR
- S_IFIFO
- S_IFLNK
- S_IFMT
- S_IFREG
- S_IFSOCK
- S_IRGRP
- S_IROTH
- S_IRUSR
- S_IRWXG
- S_IRWXO
- S_IRWXU
- S_IWGRP
- S_IWOTH
- S_IWUSR
- S_IXGRP
- S_IXOTH
- S_IXUSR
- TLS1_1_VERSION
- TLS1_2_VERSION
- TLS1_3_VERSION
- TLS1_VERSION
- UV_DIRENT_BLOCK
- UV_DIRENT_CHAR
- UV_DIRENT_DIR
- UV_DIRENT_FIFO
- UV_DIRENT_FILE
- UV_DIRENT_LINK
- UV_DIRENT_SOCKET
- UV_DIRENT_UNKNOWN
- UV_FS_COPYFILE_EXCL
- UV_FS_COPYFILE_FICLONE
- UV_FS_COPYFILE_FICLONE_FORCE
- UV_FS_O_FILEMAP
- UV_FS_SYMLINK_DIR
- UV_FS_SYMLINK_JUNCTION
- W_OK
- X_OK
- defaultCipherList
- defaultCoreCipherList
Missing (5)
- RSA_SSLV23_PADDING
- UV_FS_O_RANDOM
- UV_FS_O_SEQUENTIAL
- UV_FS_O_SHORT_LIVED
- UV_FS_O_TEMPORARY
▸node:tls18 / 19partial
TLS 1.0–1.3 on BoringSSL: clients and servers, verification as Node's, SNI, ALPN, client certificates, sessions and tickets, half-close. Not yet: PSK, pfx, encrypted keys, CRLs, OCSP, DH suites, starting a renegotiation, getPeerX509Certificate (needs crypto.X509Certificate); getFinished is undefined with TLS 1.3.
Implemented (18)
- CLIENT_RENEG_LIMIT
- CLIENT_RENEG_WINDOW
- DEFAULT_CIPHERS
- DEFAULT_ECDH_CURVE
- DEFAULT_MAX_VERSION
- DEFAULT_MIN_VERSION
- SecureContext
- Server
- TLSSocket
- checkServerIdentity
- connect
- convertALPNProtocols
- createSecureContext
- createServer
- getCACertificates
- getCiphers
- rootCertificates
- setDefaultCACertificates
Missing (1)
- getCertificateCompressionAlgorithms
Not in Node (1)
- createSecurePair
▸node:url13 / 14partial
Implemented (13)
- URL
- URLSearchParams
- Url
- domainToASCII
- domainToUnicode
- fileURLToPath
- fileURLToPathBuffer
- format
- parse
- pathToFileURL
- resolve
- resolveObject
- urlToHttpOptions
Missing (1)
- URLPattern
▸node:crypto62 / 70partial
Implemented (62)
- Cipheriv
- Decipheriv
- DiffieHellman
- DiffieHellmanGroup
- ECDH
- Hash
- Hmac
- KeyObject
- Sign
- Verify
- checkPrime
- checkPrimeSync
- constants
- createCipheriv
- createDecipheriv
- createDiffieHellman
- createDiffieHellmanGroup
- createECDH
- createHash
- createHmac
- createPrivateKey
- createPublicKey
- createSecretKey
- createSign
- createVerify
- diffieHellman
- generateKey
- generateKeyPair
- generateKeyPairSync
- generateKeySync
- generatePrime
- generatePrimeSync
- getCipherInfo
- getCiphers
- getCurves
- getDiffieHellman
- getFips
- getHashes
- getRandomValues
- hash
- hkdf
- hkdfSync
- pbkdf2
- pbkdf2Sync
- privateDecrypt
- privateEncrypt
- publicDecrypt
- publicEncrypt
- randomBytes
- randomFill
- randomFillSync
- randomInt
- randomUUID
- scrypt
- scryptSync
- secureHeapUsed
- setFips
- sign
- subtle
- timingSafeEqual
- verify
- webcrypto
Stubbed (3)
- Certificate
- X509Certificate
- setEngine
Missing (5)
- argon2
- argon2Sync
- decapsulate
- encapsulate
- randomUUIDv7
Not in Node (2)
- Cipher
- Decipher
▸node:test15 / 17partial
Node's runner: test / it, describe / suite, the hooks, test contexts (subtests, plan, skip, todo, diagnostic, t.mock, t.assert, waitFor), mocks, and the tap and spec reporters. The current test is carried in an AsyncLocalStorage (Node maps async ids). Reports have no test locations or stack frames: a compiled program knows neither. Not yet: run(), snapshots, mock.timers, mock.module.
Implemented (15)
- after
- afterEach
- assert
- before
- beforeEach
- describe
- it
- mock
- only
- run
- skip
- snapshot
- suite
- test
- todo
Missing (2)
- expectFailure
- getTestContext
▸node:child_process7 / 8partial
spawn, exec, execFile and their synchronous forms on libuv, with Node's options (shell, env, cwd, stdio, detached, uid / gid, timeout, maxBuffer, killSignal, signal) and ChildProcess's events; a child's pipes are net.Sockets. fork() and the 'ipc' stdio throw ERR_VISALJS_UNSUPPORTED: they start a Node, which a compiled program doesn't have.
Implemented (7)
- ChildProcess
- exec
- execFile
- execFileSync
- execSync
- spawn
- spawnSync
Stubbed (1)
- fork
▸node:readline7 / 8partial
Interface reads its input a line at a time as Node's does when the input isn't a terminal: lines, question (also promisified), prompt, pause and resume, the async iterator, and the cursor functions. A terminal is read in its normal mode, the terminal editing and echoing the line: Node's own editor in raw mode (keys, history, tab completion) isn't provided, nor is emitKeypressEvents.
Implemented (7)
- Interface
- clearLine
- clearScreenDown
- createInterface
- cursorTo
- moveCursor
- promises
Stubbed (1)
- emitKeypressEvents
▸node:cluster11 / 13partial
Implemented (11)
- SCHED_NONE
- SCHED_RR
- disconnect
- isMaster
- isPrimary
- isWorker
- schedulingPolicy
- settings
- setupMaster
- setupPrimary
- workers
Stubbed (2)
- Worker
- fork
▸node:perf_hooks11 / 13partial
performance: now(), timeOrigin, marks and measures, from process.hrtime. Not yet: PerformanceObserver, PerformanceResourceTiming, monitorEventLoopDelay, createHistogram, eventLoopUtilization.
Implemented (11)
- Performance
- PerformanceEntry
- PerformanceMark
- PerformanceMeasure
- PerformanceObserver
- PerformanceObserverEntryList
- PerformanceResourceTiming
- constants
- createHistogram
- monitorEventLoopDelay
- performance
Missing (2)
- eventLoopUtilization
- timerify
▸node:stream/consumers5 / 6partial
Implemented (5)
- arrayBuffer
- blob
- buffer
- json
- text
Missing (1)
- bytes
▸node:v819 / 23partial
Implemented (19)
- DefaultDeserializer
- DefaultSerializer
- Deserializer
- GCProfiler
- Serializer
- cachedDataVersionTag
- deserialize
- getCppHeapStatistics
- getHeapCodeStatistics
- getHeapSpaceStatistics
- getHeapStatistics
- isStringOneByteRepresentation
- promiseHooks
- serialize
- setFlagsFromString
- setHeapSnapshotNearHeapLimit
- startupSnapshot
- stopCoverage
- takeCoverage
Stubbed (3)
- getHeapSnapshot
- queryObjects
- writeHeapSnapshot
Missing (1)
- startCpuProfile
▸node:process54 / 66partial
An EventEmitter in programs that call its emitter methods (not with --no-bundle or --script): 'beforeExit', 'exit', 'uncaughtException', 'unhandledRejection', 'rejectionHandled' and signals ('SIGINT', …). Its other members are added in programs that name them, as process's or by a distinctive name, so the probe (which names none) lists the properties among them as missing: stdin (a terminal, a file, a pipe or a socket, as Node makes it), memoryUsage, title, ppid, release, config, report, finalization, debugPort, domain, sourceMapsEnabled, moduleLoadList, allowedNodeEnvironmentFlags. chdir, umask, uptime, cpuUsage, resourceUsage, the memory figures, the uid/gid setters (POSIX), execve, loadEnvFile and the uncaught exception capture callback work as Node's; getBuiltinModule gives the built-ins the program names with a literal string. A compiled program has no internal bindings or native addons (binding and dlopen throw ERR_VISALJS_UNSUPPORTED), no NODE_OPTIONS flags (allowedNodeEnvironmentFlags is empty), and getActiveResourcesInfo is an empty list. Not yet: 'warning'.
Implemented (54)
- abort
- arch
- argv
- argv0
- availableMemory
- binding
- chdir
- constrainedMemory
- cpuUsage
- cwd
- dlopen
- emit
- emitWarning
- env
- execArgv
- execPath
- execve
- exit
- features
- getActiveResourcesInfo
- getBuiltinModule
- getegid
- geteuid
- getgid
- getgroups
- getuid
- hasUncaughtExceptionCaptureCallback
- hrtime
- initgroups
- kill
- loadEnvFile
- memoryUsage
- nextTick
- openStdin
- pid
- platform
- reallyExit
- ref
- resourceUsage
- setSourceMapsEnabled
- setUncaughtExceptionCaptureCallback
- setegid
- seteuid
- setgid
- setgroups
- setuid
- stderr
- stdout
- threadCpuUsage
- umask
- unref
- uptime
- version
- versions
Missing (12)
- allowedNodeEnvironmentFlags
- config
- debugPort
- domain
- finalization
- moduleLoadList
- ppid
- release
- report
- sourceMapsEnabled
- stdin
- title
Not in Node (1)
- assert
▸node:http16 / 20partial
Server and client over net.Socket, with llhttp parsing in C both ways: keep-alive (Agent pooling), chunked bodies and trailers, upgrades and CONNECT, timeouts. Not yet: the WebSocket client (WebSocket, CloseEvent, MessageEvent), insecureHTTPParser's leniency.
Implemented (16)
- Agent
- ClientRequest
- IncomingMessage
- METHODS
- OutgoingMessage
- STATUS_CODES
- Server
- ServerResponse
- createServer
- get
- globalAgent
- maxHeaderSize
- request
- setMaxIdleHTTPParsers
- validateHeaderName
- validateHeaderValue
Missing (4)
- CloseEvent
- MessageEvent
- WebSocket
- setGlobalProxyFromEnv
▸node:module15 / 19partial
createRequire's require gives the packages the bundler found the program may require at run time (bundled), else throws MODULE_NOT_FOUND: a compiled program loads no code at run time. A JSON file (a path ending in .json) is data: it is read and parsed when required, and cached. register is a stub.
Implemented (15)
- Module
- SourceMap
- builtinModules
- constants
- createRequire
- enableCompileCache
- findPackageJSON
- findSourceMap
- flushCompileCache
- getCompileCacheDir
- getSourceMapsSupport
- globalPaths
- isBuiltin
- setSourceMapsSupport
- syncBuiltinESMExports
Stubbed (4)
- register
- registerHooks
- runMain
- stripTypeScriptTypes
Not in Node (2)
- wrap
- wrapper
▸node:tty2 / 3partial
isatty, and ReadStream on libuv's terminal handle, with setRawMode (process.stdin in a terminal). Not yet: WriteStream: process.stdout and process.stderr have isTTY.
Implemented (2)
- ReadStream
- isatty
Stubbed (1)
- WriteStream
▸node:worker_threads13 / 21partial
A compiled program is one thread, the main one: isMainThread, threadId 0, no parentPort or workerData; environment data and the untransferable marks work. Worker, MessageChannel, MessagePort, BroadcastChannel and the port functions throw ERR_VISALJS_UNSUPPORTED, so a library that loads it for a parallel mode it isn't asked for (mocha) runs.
Implemented (13)
- SHARE_ENV
- getEnvironmentData
- isInternalThread
- isMainThread
- isMarkedAsUntransferable
- markAsUncloneable
- markAsUntransferable
- parentPort
- resourceLimits
- setEnvironmentData
- threadId
- threadName
- workerData
Stubbed (7)
- BroadcastChannel
- MessageChannel
- MessagePort
- Worker
- moveMessagePortToContext
- postMessageToThread
- receiveMessageOnPort
Missing (1)
- locks
▸node:vm6 / 10partial
Implemented (6)
- Script
- constants
- createContext
- createScript
- isContext
- measureMemory
Stubbed (4)
- compileFunction
- runInContext
- runInNewContext
- runInThisContext
▸node:dns29 / 50partial
lookup only (getaddrinfo) and the constants. Not yet: the resolve* queries, lookupService and Resolver.
Implemented (29)
- ADDRCONFIG
- ADDRGETNETWORKPARAMS
- ALL
- BADFAMILY
- BADFLAGS
- BADHINTS
- BADNAME
- BADQUERY
- BADRESP
- BADSTR
- CANCELLED
- CONNREFUSED
- DESTRUCTION
- EOF
- FILE
- FORMERR
- LOADIPHLPAPI
- NODATA
- NOMEM
- NONAME
- NOTFOUND
- NOTIMP
- NOTINITIALIZED
- REFUSED
- SERVFAIL
- TIMEOUT
- V4MAPPED
- lookup
- promises
Missing (21)
- Resolver
- getDefaultResultOrder
- getServers
- lookupService
- resolve
- resolve4
- resolve6
- resolveAny
- resolveCaa
- resolveCname
- resolveMx
- resolveNaptr
- resolveNs
- resolvePtr
- resolveSoa
- resolveSrv
- resolveTlsa
- resolveTxt
- reverse
- setDefaultResultOrder
- setServers
▸node:repl4 / 7partial
Implemented (4)
- REPL_MODE_SLOPPY
- REPL_MODE_STRICT
- Recoverable
- writer
Stubbed (3)
- REPLServer
- isValidSyntax
- start
▸node:inspector5 / 9partial
A compiled program has no V8 inspector to connect to: it loads as in a process no debugger is attached to (url() is undefined, close() does nothing), and open, waitForDebugger and a Session throw.
Implemented (5)
- Network
- NetworkResources
- close
- console
- url
Stubbed (3)
- Session
- open
- waitForDebugger
Missing (1)
- DOMStorage
▸node:inspector/promises5 / 9partial
Implemented (5)
- Network
- NetworkResources
- close
- console
- url
Stubbed (3)
- Session
- open
- waitForDebugger
Missing (1)
- DOMStorage
▸node:stream/web10 / 18partial
Implemented (10)
- CompressionStream
- DecompressionStream
- ReadableStream
- ReadableStreamDefaultController
- ReadableStreamDefaultReader
- TransformStream
- TransformStreamDefaultController
- WritableStream
- WritableStreamDefaultController
- WritableStreamDefaultWriter
Missing (8)
- ByteLengthQueuingStrategy
- CountQueuingStrategy
- ReadableByteStreamController
- ReadableStreamBYOBReader
- ReadableStreamBYOBRequest
- ReadableStreamTee
- TextDecoderStream
- TextEncoderStream
▸node:dns/promises25 / 46partial
Implemented (25)
- ADDRGETNETWORKPARAMS
- BADFAMILY
- BADFLAGS
- BADHINTS
- BADNAME
- BADQUERY
- BADRESP
- BADSTR
- CANCELLED
- CONNREFUSED
- DESTRUCTION
- EOF
- FILE
- FORMERR
- LOADIPHLPAPI
- NODATA
- NOMEM
- NONAME
- NOTFOUND
- NOTIMP
- NOTINITIALIZED
- REFUSED
- SERVFAIL
- TIMEOUT
- lookup
Missing (21)
- Resolver
- getDefaultResultOrder
- getServers
- lookupService
- resolve
- resolve4
- resolve6
- resolveAny
- resolveCaa
- resolveCname
- resolveMx
- resolveNaptr
- resolveNs
- resolvePtr
- resolveSoa
- resolveSrv
- resolveTlsa
- resolveTxt
- reverse
- setDefaultResultOrder
- setServers
▸node:http23 / 11partial
Implemented (3)
- Http2ServerRequest
- Http2ServerResponse
- constants
Stubbed (3)
- connect
- createSecureServer
- createServer
Missing (5)
- getDefaultSettings
- getPackedSettings
- getUnpackedSettings
- performServerHandshake
- sensitiveHeaders
▸node:wasi0 / 1stubs only
Stubbed (1)
- WASI
Not provided (2)
Importing these is a compile error: node:dns is not provided by visaljs.
▸node:dgram0 / 2not provided
Missing (2)
- Socket
- createSocket
▸node:sqlite0 / 5not provided
Missing (5)
- DatabaseSync
- Session
- StatementSync
- backup
- constants