Node.js - v19.1.0

Security

Notable changes

Support function mocking on Node.js test runner

The node:test module supports mocking during testing via a top-level mock
object.

test('spies on an object method', (t) => {
  const number = {
    value: 5,
    add(a) {
      return this.value + a;
    },
  };
  t.mock.method(number, 'add');

  assert.strictEqual(number.add(3), 8);
  assert.strictEqual(number.add.mock.calls.length, 1);
});

Contributed by Colin Ihrig in #45326

fs.watch recursive support on Linux

fs.watch supports recursive watch using the recursive: true option.

const watcher = fs.watch(testDirectory, { recursive: true });
watcher.on('change', function(event, filename) {
});

Contributed by Yagiz Nizipli in #45098

Other notable changes

  • deps
  • update ICU to 72.1 (Michaël Zasso) #45068
  • doc
  • add lukekarrys to collaborators (Luke Karrys) #45180
  • add anonrig to collaborators (Yagiz Nizipli) #45002
  • lib
  • drop fetch experimental warning (Matteo Collina) #45287
  • util
  • (SEMVER-MINOR) add MIME utilities (Bradley Farias) #21128
  • improve textdecoder decode performance (Yagiz Nizipli) #45294

Commits

  • [c9cf399ec7] - benchmark: add parameters to text-decoder benchmark (Yagiz Nizipli) #45363
  • [79f6bb061d] - benchmark: fix text-decoder benchmark (Yagiz Nizipli) #45363
  • [a27c994ced] - benchmark: add blob benchmark (Yagiz Nizipli) #44990
  • [c45b6aee78] - bootstrap: merge main thread and worker thread initializations (Joyee Cheung) #44869
  • [33691208df] - buffer: fix validation of options in Blob constructor (Antoine du Hamel) #45156
  • [7b938df296] - build: support Python 3.11 (Luigi Pinca) #45191
  • [75e0a2d109] - build: workaround for node-core-utils (Jiawen Geng) #45199
  • [f598edbdf4] - build: fix icu-small build with ICU 72.1 (Steven R. Loomis) #45195
  • [29b9f4f90c] - build: remove unused language files (Ben Noordhuis) #45138
  • [3a1ee940d1] - build: add GitHub token to auto-start-ci workflow (Richard Lau) #45185
  • [17349a2f42] - build: restore Windows resource file (Richard Lau) #45042
  • [24e24bd063] - build: add version info to timezone update PR (Darshan Sen) #45021
  • [8d7aa53e6b] - build,win: pass --debug-nghttp2 to configure (Santiago Gimeno) #45209
  • [b2e60480f3] - child_process: validate arguments for null bytes (Darshan Sen) #44782
  • [1f0edde412] - crypto: handle more webcrypto errors with OperationError (Filip Skokan) #45320
  • [13fb05e12b] - crypto: handle unsupported AES ciphers in webcrypto (Filip Skokan) #45321
  • [c168cbfbb3] - deps: V8: cherry-pick 56816d76c121 (Shi Pujin) #45353
  • [1432474abf] - deps: upgrade npm to 8.19.3 (npm team) #45322
  • [f35d56200d] - deps: update corepack to 0.15.1 (Node.js GitHub Bot) #45331
  • [44de2321aa] - deps: patch V8 to 10.7.193.20 (Michaël Zasso) #45228
  • [bfe3819f08] - deps: upgrade to libuv 1.44.2 (Luigi Pinca) #42340
  • [0d41df96b3] - deps: update corepack to 0.15.0 (Node.js GitHub Bot) #45235
  • [0d241638ca] - deps: update undici to 5.12.0 (Node.js GitHub Bot) #45236
  • [f58996188a] - Revert "deps: make V8 compilable with older glibc" (Michaël Zasso) #45162
  • [8cda730e58] - deps: update ICU to 72.1 (Michaël Zasso) #45068
  • [0a6ed6f710] - Revert "deps: V8: forward declaration of Rtl*FunctionTable" (Michaël Zasso) #45119
  • [2f7518ada2] - deps: update timezone (Node.js GitHub Bot) #44950
  • [3bfba6df79] - deps: patch V8 to 10.7.193.16 (Michaël Zasso) #45023
  • [b5baaa61b3] - dns: fix port validation (Antoine du Hamel) #45135
  • [0e9bad97cc] - doc: allow for holidays in triage response (Michael Dawson) #45267
  • [d4aabb9d3d] - doc: include last security release date (Juan José Arboleda) #45368
  • [ba45373164] - doc: fix email for Ashley (Michael Dawson) #45364
  • [d5e5c75b13] - doc: fix test runner's only tests section header (Colin Ihrig) #45343
  • [a7c5f31c47] - doc: run license-builder (github-actions[bot]) #45349
  • [3de125743e] - doc: add more info for timer.setInterval (theanarkh) #45232
  • [5a1252d9b4] - doc: use module names in stability overview table (Filip Skokan) #45312
  • [4d38bf2c5f] - doc: add node: prefix for examples (Daeyeon Jeong) #45328
  • [b4b6b95f48] - doc: update name of Node.js core Slack channel (Rich Trott) #45293
  • [7d7e7c316b] - doc: fix "task_processor.js" typo (andreysoktoev) #45257
  • [b9039a54af] - doc: add history section to fetch-related globals (Antoine du Hamel) #45198
  • [d9163f1632] - doc: clarify moderation in onboarding.md (Benjamin Gruenbaum) #41930
  • [c179c1478b] - doc: change make lint to make lint-md (RafaelGSS) #45197
  • [58bec56fab] - doc: add more lts update steps to release guide (Ruy Adorno) #45177
  • [8f8d7e76ac] - doc: add bmuenzenmeyer to triagers (Brian Muenzenmeyer) #45155
  • [de2df550f6] - doc: update process.release (Filip Skokan) #45170
  • [916e8760ba] - doc: add link to triage guide (Brian Muenzenmeyer) #45154
  • [54d806853e] - doc: mark Node.js 12 as End-of-Life (Rafael Gonzaga) #45186
  • [3a26347649] - doc: add lukekarrys to collaborators (Luke Karrys) #45180
  • [85cb4d795c] - doc: update mark release line lts on release guide (Ruy Adorno) #45101
  • [c23e023a2d] - doc: be more definite and present tense-y (Ben Noordhuis) #45120
  • [519002152b] - doc: add major version note to release guide (Ruy Adorno) #45054
  • [809e8dcbd2] - doc: fix v14.x link maintaining openssl guide (RafaelGSS) #45071
  • [9d449d389d] - doc: add note about latest GitHub release (Michaël Zasso) #45111
  • [ee34a3a1bc] - doc: mention v18.x openssl maintaining guide (Rafael Gonzaga) #45070
  • [3e4033a90d] - doc: fix display of "problematic" ASCII characters (John Gardner) #44373
  • [533e38b0b8] - doc: mark Node.js v17.x as EOL (KaKa) #45110
  • [93a34faa39] - doc: update Node.js 16 End-of-Life date (Richard Lau) #45103
  • [b4beddef79] - doc: fix typo in parseArgs default value (Tobias Nießen) #45083
  • [e8103fd33b] - doc: updated security stewards (Michael Dawson) #45005
  • [5fbccae4f0] - doc: fix http and http2 writeEarlyHints() parameter (Fabian Meyer) #45000
  • [d47f83251a] - doc: run license-builder (github-actions[bot]) #45034
  • [e6bbc5033d] - doc: improve the workflow to test release binaries (Rafael Gonzaga) #45004
  • [f0c18f04f0] - doc: fix undici version in changelog (Michael Dawson) #44982
  • [ffba3218ec] - doc: add info on fixup to security release process (Michael Dawson) #44807
  • [edb92f4510] - doc: add anonrig to collaborators (Yagiz Nizipli) #45002
  • [58334a38e8] - doc, async_hooks: improve and add migration hints (Gerhard Stöbich) #45369
  • [7225a7d46b] - doc, http: add Uint8Array as allowed type (Gerhard Stöbich) #45167
  • [40a5e22328] - esm: protect ESM loader from prototype pollution (Antoine du Hamel) #45175
  • [2e5d8e7239] - esm: protect ESM loader from prototype pollution (Antoine du Hamel) #45044
  • [c3dd696081] - events: add unique events benchmark (Yagiz Nizipli) #44657
  • [daff3b8b09] - fs: update todo message (Yagiz Nizipli) #45265
  • [670def3d6f] - fs: fix opts.filter issue in cpSync (Tho) #45143
  • [34bfef91a9] - (SEMVER-MINOR) fs: add recursive watch to linux (Yagiz Nizipli) #45098
  • [d89ca1b443] - fs: trace more fs api (theanarkh) #45095
  • [1a04881494] - http: headers(Distinct), trailers(Distinct) setters to be no-op (Madhuri) #45176
  • [8abc3f732a] - http: add priority to common http headers (James M Snell) #45045
  • [316354e3d3] - http2: improve session close/destroy procedures (Santiago Gimeno) #45115
  • [1635140952] - http2: fix crash on Http2Stream::diagnostic_name() (Santiago Gimeno) #45123
  • [94b7f5338c] - http2: fix debugStream method (Santiago Gimeno) #45129
  • [3db37e7d1b] - inspector: refactor inspector/promises to be more robust (Antoine du Hamel) #45041
  • [0478e4063f] - lib: add options to the heap snapshot APIs (Joyee Cheung) #44989
  • [a8e901555a] - lib: fix JSDoc issues (Rich Trott) #45243
  • [74352842bc] - lib: use process.nextTick() instead of setImmediate() (Luigi Pinca) #42340
  • [9f3d2f6879] - lib: drop fetch experimental warning (Matteo Collina) #45287
  • [e2181e057b] - lib: fix eslint early return (RafaelGSS) #45409
  • [d1726692ee] - lib: fix TypeError when converting a detached buffer source (Kohei Ueno) #44020
  • [d7470ad986] - lib: fix AbortSignal.timeout parameter validation (dnalborczyk) #42856
  • [c7b7f2bec2] - lib: add lint rule to protect against Object.prototype.then pollution (Antoine du Hamel) #45061
  • [9ed9aa8233] - lib: add ability to add separate event name to defineEventHandler (James M Snell) #45032
  • [8b4a41e23d] - lib: fix typo in pre_execution.js (Antoine du Hamel) #45039
  • [cc2393c9fe] - lib: promise version of streams.finished call clean up (Naor Tedgi (Abu Emma)) #44862
  • [17ef1bbc8e] - lib: make properties on Blob and URL enumerable (Khafra) #44918
  • [8199841e9c] - lib: support more attributes for early hint link (Yagiz Nizipli) #44874
  • [88c3bb609b] - meta: update AUTHORS (Node.js GitHub Bot) #45333
  • [a866e8c163] - meta: update collaborator email address in README (Rich Trott) #45251
  • [bfbfacad79] - meta: fix email address typo in README (Rich Trott) #45250
  • [0d58bb9531] - meta: remove dont-land-on-v12 auto labeling (Moshe Atlow) #45233
  • [b41b5ba658] - meta: update AUTHORS (Node.js GitHub Bot) #45238
  • [ad9a5bb61f] - meta: move a collaborator to emeritus (Rich Trott) #45160
  • [ec8683052b] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #45036
  • [7900810fb3] - meta: update AUTHORS (Node.js GitHub Bot) #45020
  • [738144c311] - module: ensure relative requires work from deleted directories (Bradley Farias) #42384
  • [36acf8a13e] - net: remove _readableState from debug statement (Rich Trott) #45063
  • [aaca54c5c0] - node-api: handle no support for external buffers (Michael Dawson) #45181
  • [2105f099ea] - node-api,test: fix test_reference_double_free crash (Vladimir Morozov) #44927
  • [2fcf851a91] - os: convert uid and gid to 32-bit signed integers (Luigi Pinca) #42340
  • [dfe4237d77] - perf_hooks: align toStringTag with other Web Performance implementations (Daeyeon Jeong) #45157
  • [9d15da3341] - report: add more memory info (theanarkh) #45254
  • [a2620acad7] - report: add rss and use/kernel cpu usage fields (theanarkh) #45043
  • [66e1dc4979] - report,doc: define report version semantics (Gireesh Punathil) #45050
  • [86e22b4e19] - src: track contexts in the Environment instead of AsyncHooks (Joyee Cheung) #45282
  • [326d19af3d] - src: resolve TODO related to inspector CVEs (Tobias Nießen) #45341
  • [4e45585ca2] - src: revert is_release to 0 (RafaelGSS) #45315
  • [5d480118fb] - src: print nghttp2 logs when using --debug-nghttp2 (Santiago Gimeno) #45209
  • [3e46ebda3c] - src: trace threadpool event (theanarkh) #44458
  • [97547bcd14] - src: lock-free init_process_flags (Jérémy Lal) #45221
  • [42db84913b] - src: call uv_library_shutdown before DisposePlatform (theanarkh) #45226
  • [aa4152a1b6] - src: fix crypto.privateEncrypt fails first time (liuxingbaoyu) #42793
  • [243c141b69] - src: clarify OptionEnvvarSettings member names (Chengzhong Wu) #45057
  • [5335e29ce7] - src: let http2 streams end after session close (Santiago Gimeno) #45153
  • [8d5682266e] - src: remap invalid file descriptors using dup2 (Obiwac) #44461
  • [4e14ed8878] - src: remove unused contextify_global_private_symbol (Daeyeon Jeong) #45128
  • [a8412f5677] - src: forbid running watch mode in REPL (Moshe Atlow) #45058
  • [162bf0ddff] - src: fix test runner coverage (Moshe Atlow) #45055
  • [e5b1179630] - src: optimize ALPN callback (Ben Noordhuis) #44875
  • [9dc21a1f86] - src: simplify ALPN code, remove indirection (Ben Noordhuis) #44875
  • [5fce8e3495] - src: iwyu in cleanup_queue.cc (Shelley Vohr) #44983
  • [824dcfc422] - src: return void in InitializeInspector() (Joyee Cheung) #44903
  • [7a31ae8ab1] - src,lib: retrieve parsed source map url from v8 (Chengzhong Wu) #44798
  • [ccb1c1e9a2] - stream: add compose operator (Raz Luvaton) #44937
  • [e60d9053bc] - stream: fix duplexify premature destroy (Robert Nagy) #45133
  • [bc0ae3e74e] - stream: fix web streams have no Symbol.toStringTag (Jithil P Ponnan) #45117
  • [1655532fd2] - stream: don't push null from closed promise #42694 (David Halls) #45026
  • [717db1d46a] - test: skip test-fs-largefile if not enough disk space (Rich Trott) #45339
  • [4a80aff16e] - test: fix catching failed assertion (Pavel Horal) #45222
  • [66e7821506] - test: defer invocation checks (Luigi Pinca) #42340
  • [43db0fbd49] - test: fix test-socket-write-after-fin-error (Luigi Pinca) #42340
  • [d5f4d98847] - test: make test-eventemitter-asyncresource.js shorter (Juan José) #45146
  • [7428651100] - test: convert test-debugger-pid to async/await (Luke Karrys) #45179
  • [f10f2c1121] - test: fix textdecoder test for small-icu builds (Richard Lau) #45225
  • [eed799bd31] - test: improve test coverage in test-event-capture-rejections.js (Juan José) #45148
  • [069747bfdd] - test: fix timeout of test-heap-prof.js in riscv devices (Yu Gu) #42674
  • [ddb7df76de] - test: deflake test-http2-empty-frame-without-eof (Santiago Gimeno) #45212
  • [02ebde39d3] - test: use common/tmpdir in watch-mode ipc test (Richard Lau) #45211
  • [f9bc40a1fc] - test: use uv_sleep() where possible (Santiago Gimeno) #45124
  • [3c7ea23b8f] - test: fix typo in test/parallel/test-fs-rm.js (Tim Shilov) #44882
  • [b39dcde056] - test: remove a snapshot blob from test-inspect-address-in-use.js (Daeyeon Jeong) #45132
  • [fabed9bdc8] - test: add test for Module._stat (Darshan Sen) #44713
  • [2b3b291c97] - test: watch mode inspect restart repeatedly (Moshe Atlow) #45060
  • [17e86e4188] - test: remove experimental-wasm-threads flag (Michaël Zasso) #45074
  • [f0480d68e9] - test: remove unnecessary noop function args to mustCall() (Antoine du Hamel) #45047
  • [82e6043118] - test: mark test-watch-mode* as flaky on all platforms (Pierrick Bouvier) #45049
  • [26a2ae2489] - test: wrap missing common.mustCall (Moshe Atlow) #45064
  • [8662399cda] - test: remove mentions of --experimental-async-stack-tagging-api flag (Simon) #45051
  • [71b8d506ed] - test: improve assertions in test-repl-unsupported-option.js (Juan José) #44953
  • [dbc696d363] - test: remove unnecessary noop function args to mustCall() (Rich Trott) #45027
  • [c1ca19fb06] - test: update WPT resources (Khaidi Chu) #44948
  • [43677e5a34] - test: skip test depending on overlapped-checker when not available (Antoine du Hamel) #45015
  • [3519d74e87] - test: improve test coverage for os package (Juan José) #44959
  • [ea0cfc9a83] - test: add test to improve coverage in http2-compat-serverresponse (Cesar Mario Diaz) #44970
  • [482578682c] - test: improve test coverage in test-child-process-spawn-argv0.js (Juan José) #44955
  • [a618dc3c3e] - test: use CHECK instead of EXPECT where necessary (Tobias Nießen) #44795
  • [c59d3b76e6] - test: refactor promises to async/await (Madhuri) #44980
  • [36c5927c60] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #45165
  • [6158d740f3] - test_runner: support function mocking (Colin Ihrig) #45326
  • [920804dc46] - test_runner: avoid swallowing of asynchronously thrown errors (MURAKAMI Masahiko) #45264
  • [8e7f9de45e] - test_runner: fix afterEach not running on test failures (Jithil P Ponnan) #45204
  • [0040030443] - test_runner: report tap subtest in order (Moshe Atlow) #45220
  • [afa8291c7c] - test_runner: call {before,after}Each() on suites (Colin Ihrig) #45161
  • [ff174b0937] - test_runner: add extra fields in AssertionError YAML (Bryan English) #44952
  • [bf868fdfab] - (SEMVER-MINOR) tls: add "ca" property to certificate object (Ben Noordhuis) #44935
  • [e8075fd1f8] - tools: add automation for updating acorn dependency (Facundo Tuesca) #45357
  • [9aa305ff3e] - tools: add documentation regarding our api tooling (Claudio Wunder) #45270
  • [76cbc07f9b] - tools: allow scripts to run from anywhere (Luigi Pinca) #45361
  • [aa875a4d6a] - tools: update eslint to 8.27.0 (Node.js GitHub Bot) #45358
  • [4b71db13ae] - tools: update eslint to 8.26.0 (Node.js GitHub Bot) #45243
  • [63267dfefb] - tools: update lint-md-dependencies to rollup\@3.2.5 (Node.js GitHub Bot) #45332
  • [e275859138] - tools: fix stability index generation (Antoine du Hamel) #45346
  • [97fe8bacb1] - tools: increase macOS cores to 3 on GitHub CI (Rich Trott) #45340
  • [eda4ae51ca] - tools: add automation for updating base64 dependency (Facundo Tuesca) #45300
  • [2ee052f794] - tools: fix request-ci-failed comment (Antoine du Hamel) #45291
  • [e118dd88fd] - tools: refactor dynamic strings creation in shell scripts (Antoine du Hamel) #45240
  • [ba89cea683] - tools: update lint-md-dependencies (Node.js GitHub Bot) #45237
  • [786f086800] - tools: use Python 3.11 in GitHub Actions workflows (Luigi Pinca) #45191
  • [0738d14fa4] - tools: fix request-ci-failed comment (Antoine du Hamel) #45218
  • [49be13ccd8] - tools: keep Emeriti lists case-insensitive alphabetic (Rich Trott) #45159
  • [6e30d2231b] - tools: update actions/setup-python to v4 (Yagiz Nizipli) #45178
  • [a4158692d7] - tools: update V8 gypfiles for RISC-V (Andreas Schwab) #45149
  • [c43bc2169f] - tools: fix create-or-update-pull-request-action hash on GHA (Antoine du Hamel) #45166
  • [2ccc03ec32] - tools: update gr2m/create-or-update-pull-request-action (Luigi Pinca) #45022
  • [a70b27629f] - tools: do not use the set-output command in workflows (Luigi Pinca) #45024
  • [025e616662] - tools: update lint-md-dependencies (Node.js GitHub Bot) #45019
  • [732f9a78d3] - trace_events: fix getCategories (theanarkh) #45092
  • [1bc84ce52c] - url: remove \t \n \r in url.parse() similar to WHATWG (Rich Trott) #45116
  • [84e7388160] - url: improve port validation (Rich Trott) #45012
  • [02cff4a3d3] - url: improve url.parse() compliance with WHATWG URL (Rich Trott) #45011
  • [89390a6be2] - util: improve text-decoder performance (Yagiz Nizipli) #45363
  • [0deed8daeb] - util: improve textdecoder decode performance (Yagiz Nizipli) #45294
  • [d41f8ffc36] - (SEMVER-MINOR) util: add MIME utilities (#21128) (Bradley Farias) #21128

Security

Security wording was detected, but no CVEs were found.

Details

date
Nov. 14, 2022, 2:41 p.m.
name
2022-11-14, Version 19.1.0 (Current), @RafaelGSS
type
Minor
👇
Register or login to:
  • 🔍View and search all Node.js releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google
or