fs: make FSWatcher.start private#29905
Conversation
* This is a semver-major change to rename the FSWatcher.start function to FSWatcher._start to make it private The motivation here is that it serves no purpose to the end user. An instance of FSWatcher is returned when a user calls fs.watch, which will call the start method. A user can't create an instance of a FSWatcher directly. If the start method is called by a user it is a noop since the watcher has already started. Calling start after a watcher has closed is also a noop
addaleax
left a comment
There was a problem hiding this comment.
I think you can also use a symbol instead of an underscore prefix (we’ve been doing that a lot more since symbols became available), and the tests for .start() can also be dropped completely imo
|
@addaleax good to know about the symbols. I don't suppose you have a link to that usage handy :) |
|
@lholmquist There is some info in https://github.com/nodejs/node/blob/master/doc/guides/using-symbols.md – a basic usage example would be: const kStart = Symbol('kStart');
FSWatcher.prototype[kStart] = function() { ... };
const watcher = new FSWatcher();
watcher[kStart](); |
cjihrig
left a comment
There was a problem hiding this comment.
LGTM with the suggested switch to a symbol.
|
I like the idea of using the Symbols, but i don't think it can be done in this case. The function that we are making private and the place where the call to start is made are in separate files. I did try moving that call to the start function to be inside the FSWatcher function, so when |
|
@lholmquist You could add the symbol to the exports of |
|
@addaleax ok, i'll do that. wasn't sure if it was ok to add another export, but like you said, it is an internal module |
|
I added a commit that is using a Symbol. The reason for naming it the way i did was becuase i think something similar will probably happen with the I also removed the tests for FSWatcher.start |
|
What's the semverness here? |
|
@BridgeAR semver-major because it is removing a public non-documented api #29872 (comment) |
|
Added to the 13.0.0 milestone, but if CITGM reveals issues, we can take it off. |
Results look good. |
|
Landed in 7eacb74 |
* This is a semver-major change to rename the FSWatcher.start function to FSWatcher._start to make it private The motivation here is that it serves no purpose to the end user. An instance of FSWatcher is returned when a user calls fs.watch, which will call the start method. A user can't create an instance of a FSWatcher directly. If the start method is called by a user it is a noop since the watcher has already started. Calling start after a watcher has closed is also a noop PR-URL: nodejs#29905 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
|
This really should have been a deprecation for the existing API |
|
A new pr that adds a deprecated alias is good.... |
Notable changes:
- **assert**:
- do not repeat .throws() code (Ruben Bridgewater)
[#28263](#28263)
- wrap validation function errors (Ruben Bridgewater)
[#28263](#28263)
- fix generatedMessage property (Ruben Bridgewater)
[#28263](#28263)
- improve class instance errors (Ruben Bridgewater)
[#28263](#28263)
- **benchmark**:
- use test/common/tmpdir consistently (João Reis)
[#28858](#28858)
- **build**:
- make full-icu the default for releases (Richard Lau)
[#29887](#29887)
- update minimum Xcode version for macOS (Michael Dawson)
[#29622](#29622)
- **child_process**:
- runtime deprecate \_channel (cjihrig)
[#27949](#27949)
- simplify spawn argument parsing (cjihrig)
[#27854](#27854)
- **console**:
- display timeEnd with suitable time unit (Xavier Stouder)
[#29251](#29251)
- **deps**:
- patch V8 to 7.8.279.14 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.12 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.10 (Myles Borins)
[#29694](#29694)
- update V8's postmortem script (cjihrig)
[#29694](#29694)
- V8: cherry-pick 716875d (Myles Borins)
[#29694](#29694)
- update V8 to 7.8.279.9 (Myles Borins)
[#29694](#29694)
- V8: cherry-pick b33af60 (Michaël Zasso)
[#28016](#28016)
- update V8 to 7.6.303.28 (Michaël Zasso)
[#28016](#28016)
- **domain**:
- error handler runs outside of its domain (Julien Gilli)
[#26211](#26211)
- **fs**:
- make FSWatcher.start private (Lucas Holmquist)
[#29905](#29905)
- add runtime deprecate for file stream open() (Robert Nagy)
[#29061](#29061)
- allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
[#26572](#26572)
- use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
[#26572](#26572)
- allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
[#26572](#26572)
- close file descriptor of promisified truncate (João Reis)
[#28858](#28858)
- **http**:
- do not emit end after aborted (Robert Nagy)
[#27984](#27984)
- don't emit 'data' after 'error' (Robert Nagy)
[#28711](#28711)
- remove legacy parser (Anna Henningsen)
[#29589](#29589)
- throw if 'host' agent header is not a string value
(Giorgos Ntemiris)
[#29568](#29568)
- replace superfluous connection property with getter/setter
(Robert Nagy)
[#29015](#29015)
- fix test where aborted should not be emitted (Robert Nagy)
[#20077](#20077)
- remove default 'timeout' listener on upgrade (Luigi Pinca)
[#26030](#26030)
- **http, http2**:
- remove default server timeout (Ali Ijaz Sheikh)
[#27558](#27558)
- **http2**:
- remove security revert flags (Anna Henningsen)
[#29141](#29141)
- remove callback-based padding (Anna Henningsen)
[#29144](#29144)
- **lib**:
- rename validateInteger to validateSafeInteger (Zach Bjornson)
[#26572](#26572)
- correct error.errno to always be numeric (Joyee Cheung)
[#28140](#28140)
- no need to strip BOM or shebang for scripts (Refael Ackermann)
[#27375](#27375)
- rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
[#27768](#27768)
- **module**:
- runtime deprecate createRequireFromPath() (cjihrig)
[#27951](#27951)
- **readline**:
- error on falsy values for callback (Sam Roberts)
[#28109](#28109)
- **repl**:
- close file descriptor of history file (João Reis)
[#28858](#28858)
- **src**:
- bring 425 status code name into accordance with RFC 8470
(Sergei Osipov)
[#29880](#29880)
- update NODE\_MODULE\_VERSION to 79 (Myles Borins)
[#29694](#29694)
- update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
[#28918](#28918)
- add error codes to errors thrown in C++ (Yaniv Friedensohn)
[#27700](#27700)
- use non-deprecated overload of V8::SetFlagsFromString
(Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
[#27375](#27375)
- make process.env.TZ setter clear tz cache (Ben Noordhuis)
[#20026](#20026)
- enable V8's WASM trap handlers (Gus Caplan)
[#27246](#27246)
- **stream**:
- throw unhandled error for readable with autoDestroy (Robert Nagy)
[#29806](#29806)
- always invoke callback before emitting error (Robert Nagy)
[#29293](#29293)
- invoke callback before emitting error always (Robert Nagy)
[#29293](#29293)
- do not flush destroyed writable (Robert Nagy)
[#29028](#29028)
- don't emit finish on error (Robert Nagy)
[#28979](#28979)
- disallow stream methods on finished stream (Robert Nagy)
[#28687](#28687)
- do not emit after 'error' (Robert Nagy)
[#28708](#28708)
- fix destroy() behavior (Robert Nagy)
[#29058](#29058)
- simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
[#28583](#28583)
- **tools**:
- patch V8 to run on older XCode versions (Ujjwal Sharma)
[#29694](#29694)
- update V8 gypfiles (Michaël Zasso)
[#29694](#29694)
- support full-icu by default (Steven R. Loomis)
[#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
(Ruben Bridgewater)
[#29824](#29824)
PR-URL: #29504
Notable changes:
- **assert**:
- do not repeat .throws() code (Ruben Bridgewater)
[#28263](#28263)
- wrap validation function errors (Ruben Bridgewater)
[#28263](#28263)
- fix generatedMessage property (Ruben Bridgewater)
[#28263](#28263)
- improve class instance errors (Ruben Bridgewater)
[#28263](#28263)
- **benchmark**:
- use test/common/tmpdir consistently (João Reis)
[#28858](#28858)
- **build**:
- make full-icu the default for releases (Richard Lau)
[#29887](#29887)
- update minimum Xcode version for macOS (Michael Dawson)
[#29622](#29622)
- **child_process**:
- runtime deprecate \_channel (cjihrig)
[#27949](#27949)
- simplify spawn argument parsing (cjihrig)
[#27854](#27854)
- **console**:
- display timeEnd with suitable time unit (Xavier Stouder)
[#29251](#29251)
- **deps**:
- patch V8 to 7.8.279.14 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.12 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.10 (Myles Borins)
[#29694](#29694)
- update V8's postmortem script (cjihrig)
[#29694](#29694)
- V8: cherry-pick 716875d (Myles Borins)
[#29694](#29694)
- update V8 to 7.8.279.9 (Myles Borins)
[#29694](#29694)
- V8: cherry-pick b33af60 (Michaël Zasso)
[#28016](#28016)
- update V8 to 7.6.303.28 (Michaël Zasso)
[#28016](#28016)
- **domain**:
- error handler runs outside of its domain (Julien Gilli)
[#26211](#26211)
- **fs**:
- make FSWatcher.start private (Lucas Holmquist)
[#29905](#29905)
- add runtime deprecate for file stream open() (Robert Nagy)
[#29061](#29061)
- allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
[#26572](#26572)
- use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
[#26572](#26572)
- allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
[#26572](#26572)
- close file descriptor of promisified truncate (João Reis)
[#28858](#28858)
- **http**:
- do not emit end after aborted (Robert Nagy)
[#27984](#27984)
- don't emit 'data' after 'error' (Robert Nagy)
[#28711](#28711)
- remove legacy parser (Anna Henningsen)
[#29589](#29589)
- throw if 'host' agent header is not a string value
(Giorgos Ntemiris)
[#29568](#29568)
- replace superfluous connection property with getter/setter
(Robert Nagy)
[#29015](#29015)
- fix test where aborted should not be emitted (Robert Nagy)
[#20077](#20077)
- remove default 'timeout' listener on upgrade (Luigi Pinca)
[#26030](#26030)
- **http, http2**:
- remove default server timeout (Ali Ijaz Sheikh)
[#27558](#27558)
- **http2**:
- remove security revert flags (Anna Henningsen)
[#29141](#29141)
- remove callback-based padding (Anna Henningsen)
[#29144](#29144)
- **lib**:
- rename validateInteger to validateSafeInteger (Zach Bjornson)
[#26572](#26572)
- correct error.errno to always be numeric (Joyee Cheung)
[#28140](#28140)
- no need to strip BOM or shebang for scripts (Refael Ackermann)
[#27375](#27375)
- rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
[#27768](#27768)
- **module**:
- runtime deprecate createRequireFromPath() (cjihrig)
[#27951](#27951)
- **readline**:
- error on falsy values for callback (Sam Roberts)
[#28109](#28109)
- **repl**:
- close file descriptor of history file (João Reis)
[#28858](#28858)
- **src**:
- bring 425 status code name into accordance with RFC 8470
(Sergei Osipov)
[#29880](#29880)
- update NODE\_MODULE\_VERSION to 79 (Myles Borins)
[#29694](#29694)
- update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
[#28918](#28918)
- add error codes to errors thrown in C++ (Yaniv Friedensohn)
[#27700](#27700)
- use non-deprecated overload of V8::SetFlagsFromString
(Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
[#27375](#27375)
- make process.env.TZ setter clear tz cache (Ben Noordhuis)
[#20026](#20026)
- enable V8's WASM trap handlers (Gus Caplan)
[#27246](#27246)
- **stream**:
- throw unhandled error for readable with autoDestroy (Robert Nagy)
[#29806](#29806)
- always invoke callback before emitting error (Robert Nagy)
[#29293](#29293)
- invoke callback before emitting error always (Robert Nagy)
[#29293](#29293)
- do not flush destroyed writable (Robert Nagy)
[#29028](#29028)
- don't emit finish on error (Robert Nagy)
[#28979](#28979)
- disallow stream methods on finished stream (Robert Nagy)
[#28687](#28687)
- do not emit after 'error' (Robert Nagy)
[#28708](#28708)
- fix destroy() behavior (Robert Nagy)
[#29058](#29058)
- simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
[#28583](#28583)
- **tools**:
- patch V8 to run on older XCode versions (Ujjwal Sharma)
[#29694](#29694)
- update V8 gypfiles (Michaël Zasso)
[#29694](#29694)
- support full-icu by default (Steven R. Loomis)
[#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
(Ruben Bridgewater)
[#29824](#29824)
PR-URL: #29504
Notable changes:
- **assert**:
- do not repeat .throws() code (Ruben Bridgewater)
[#28263](#28263)
- wrap validation function errors (Ruben Bridgewater)
[#28263](#28263)
- fix generatedMessage property (Ruben Bridgewater)
[#28263](#28263)
- improve class instance errors (Ruben Bridgewater)
[#28263](#28263)
- **benchmark**:
- use test/common/tmpdir consistently (João Reis)
[#28858](#28858)
- **build**:
- make full-icu the default for releases (Richard Lau)
[#29887](#29887)
- update minimum Xcode version for macOS (Michael Dawson)
[#29622](#29622)
- **child_process**:
- runtime deprecate \_channel (cjihrig)
[#27949](#27949)
- simplify spawn argument parsing (cjihrig)
[#27854](#27854)
- **console**:
- display timeEnd with suitable time unit (Xavier Stouder)
[#29251](#29251)
- **deps**:
- patch V8 to 7.8.279.14 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.12 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.10 (Myles Borins)
[#29694](#29694)
- update V8's postmortem script (cjihrig)
[#29694](#29694)
- V8: cherry-pick 716875d (Myles Borins)
[#29694](#29694)
- update V8 to 7.8.279.9 (Myles Borins)
[#29694](#29694)
- V8: cherry-pick b33af60 (Michaël Zasso)
[#28016](#28016)
- update V8 to 7.6.303.28 (Michaël Zasso)
[#28016](#28016)
- **domain**:
- error handler runs outside of its domain (Julien Gilli)
[#26211](#26211)
- **fs**:
- make FSWatcher.start private (Lucas Holmquist)
[#29905](#29905)
- add runtime deprecate for file stream open() (Robert Nagy)
[#29061](#29061)
- allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
[#26572](#26572)
- use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
[#26572](#26572)
- allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
[#26572](#26572)
- close file descriptor of promisified truncate (João Reis)
[#28858](#28858)
- **http**:
- do not emit end after aborted (Robert Nagy)
[#27984](#27984)
- don't emit 'data' after 'error' (Robert Nagy)
[#28711](#28711)
- remove legacy parser (Anna Henningsen)
[#29589](#29589)
- throw if 'host' agent header is not a string value
(Giorgos Ntemiris)
[#29568](#29568)
- replace superfluous connection property with getter/setter
(Robert Nagy)
[#29015](#29015)
- fix test where aborted should not be emitted (Robert Nagy)
[#20077](#20077)
- remove default 'timeout' listener on upgrade (Luigi Pinca)
[#26030](#26030)
- **http, http2**:
- remove default server timeout (Ali Ijaz Sheikh)
[#27558](#27558)
- **http2**:
- remove security revert flags (Anna Henningsen)
[#29141](#29141)
- remove callback-based padding (Anna Henningsen)
[#29144](#29144)
- **lib**:
- rename validateInteger to validateSafeInteger (Zach Bjornson)
[#26572](#26572)
- correct error.errno to always be numeric (Joyee Cheung)
[#28140](#28140)
- no need to strip BOM or shebang for scripts (Refael Ackermann)
[#27375](#27375)
- rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
[#27768](#27768)
- **module**:
- runtime deprecate createRequireFromPath() (cjihrig)
[#27951](#27951)
- **readline**:
- error on falsy values for callback (Sam Roberts)
[#28109](#28109)
- **repl**:
- close file descriptor of history file (João Reis)
[#28858](#28858)
- **src**:
- bring 425 status code name into accordance with RFC 8470
(Sergei Osipov)
[#29880](#29880)
- update NODE\_MODULE\_VERSION to 79 (Myles Borins)
[#29694](#29694)
- update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
[#28918](#28918)
- add error codes to errors thrown in C++ (Yaniv Friedensohn)
[#27700](#27700)
- use non-deprecated overload of V8::SetFlagsFromString
(Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
[#27375](#27375)
- make process.env.TZ setter clear tz cache (Ben Noordhuis)
[#20026](#20026)
- enable V8's WASM trap handlers (Gus Caplan)
[#27246](#27246)
- **stream**:
- throw unhandled error for readable with autoDestroy (Robert Nagy)
[#29806](#29806)
- always invoke callback before emitting error (Robert Nagy)
[#29293](#29293)
- invoke callback before emitting error always (Robert Nagy)
[#29293](#29293)
- do not flush destroyed writable (Robert Nagy)
[#29028](#29028)
- don't emit finish on error (Robert Nagy)
[#28979](#28979)
- disallow stream methods on finished stream (Robert Nagy)
[#28687](#28687)
- do not emit after 'error' (Robert Nagy)
[#28708](#28708)
- fix destroy() behavior (Robert Nagy)
[#29058](#29058)
- simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
[#28583](#28583)
- **tools**:
- patch V8 to run on older XCode versions (Ujjwal Sharma)
[#29694](#29694)
- update V8 gypfiles (Michaël Zasso)
[#29694](#29694)
- support full-icu by default (Steven R. Loomis)
[#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
(Ruben Bridgewater)
[#29824](#29824)
PR-URL: #29504
Notable changes:
- **assert**:
- do not repeat .throws() code (Ruben Bridgewater)
[#28263](#28263)
- wrap validation function errors (Ruben Bridgewater)
[#28263](#28263)
- fix generatedMessage property (Ruben Bridgewater)
[#28263](#28263)
- improve class instance errors (Ruben Bridgewater)
[#28263](#28263)
- **benchmark**:
- use test/common/tmpdir consistently (João Reis)
[#28858](#28858)
- **build**:
- make full-icu the default for releases (Richard Lau)
[#29887](#29887)
- update minimum Xcode version for macOS (Michael Dawson)
[#29622](#29622)
- **child_process**:
- runtime deprecate \_channel (cjihrig)
[#27949](#27949)
- simplify spawn argument parsing (cjihrig)
[#27854](#27854)
- **console**:
- display timeEnd with suitable time unit (Xavier Stouder)
[#29251](#29251)
- **deps**:
- patch V8 to 7.8.279.14 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.12 (Myles Borins)
[#29694](#29694)
- patch V8 to 7.8.279.10 (Myles Borins)
[#29694](#29694)
- update V8's postmortem script (cjihrig)
[#29694](#29694)
- V8: cherry-pick 716875d (Myles Borins)
[#29694](#29694)
- update V8 to 7.8.279.9 (Myles Borins)
[#29694](#29694)
- V8: cherry-pick b33af60 (Michaël Zasso)
[#28016](#28016)
- update V8 to 7.6.303.28 (Michaël Zasso)
[#28016](#28016)
- **domain**:
- error handler runs outside of its domain (Julien Gilli)
[#26211](#26211)
- **fs**:
- make FSWatcher.start private (Lucas Holmquist)
[#29905](#29905)
- add runtime deprecate for file stream open() (Robert Nagy)
[#29061](#29061)
- allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
[#26572](#26572)
- use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
[#26572](#26572)
- allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
[#26572](#26572)
- close file descriptor of promisified truncate (João Reis)
[#28858](#28858)
- **http**:
- do not emit end after aborted (Robert Nagy)
[#27984](#27984)
- don't emit 'data' after 'error' (Robert Nagy)
[#28711](#28711)
- remove legacy parser (Anna Henningsen)
[#29589](#29589)
- throw if 'host' agent header is not a string value
(Giorgos Ntemiris)
[#29568](#29568)
- replace superfluous connection property with getter/setter
(Robert Nagy)
[#29015](#29015)
- fix test where aborted should not be emitted (Robert Nagy)
[#20077](#20077)
- remove default 'timeout' listener on upgrade (Luigi Pinca)
[#26030](#26030)
- **http, http2**:
- remove default server timeout (Ali Ijaz Sheikh)
[#27558](#27558)
- **http2**:
- remove security revert flags (Anna Henningsen)
[#29141](#29141)
- remove callback-based padding (Anna Henningsen)
[#29144](#29144)
- **lib**:
- rename validateInteger to validateSafeInteger (Zach Bjornson)
[#26572](#26572)
- correct error.errno to always be numeric (Joyee Cheung)
[#28140](#28140)
- no need to strip BOM or shebang for scripts (Refael Ackermann)
[#27375](#27375)
- rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
[#27768](#27768)
- **module**:
- runtime deprecate createRequireFromPath() (cjihrig)
[#27951](#27951)
- **readline**:
- error on falsy values for callback (Sam Roberts)
[#28109](#28109)
- **repl**:
- close file descriptor of history file (João Reis)
[#28858](#28858)
- **src**:
- bring 425 status code name into accordance with RFC 8470
(Sergei Osipov)
[#29880](#29880)
- update NODE\_MODULE\_VERSION to 79 (Myles Borins)
[#29694](#29694)
- update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
[#28918](#28918)
- add error codes to errors thrown in C++ (Yaniv Friedensohn)
[#27700](#27700)
- use non-deprecated overload of V8::SetFlagsFromString
(Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
[#28016](#28016)
- update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
[#27375](#27375)
- make process.env.TZ setter clear tz cache (Ben Noordhuis)
[#20026](#20026)
- enable V8's WASM trap handlers (Gus Caplan)
[#27246](#27246)
- **stream**:
- throw unhandled error for readable with autoDestroy (Robert Nagy)
[#29806](#29806)
- always invoke callback before emitting error (Robert Nagy)
[#29293](#29293)
- invoke callback before emitting error always (Robert Nagy)
[#29293](#29293)
- do not flush destroyed writable (Robert Nagy)
[#29028](#29028)
- don't emit finish on error (Robert Nagy)
[#28979](#28979)
- disallow stream methods on finished stream (Robert Nagy)
[#28687](#28687)
- do not emit after 'error' (Robert Nagy)
[#28708](#28708)
- fix destroy() behavior (Robert Nagy)
[#29058](#29058)
- simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
[#28583](#28583)
- **tools**:
- patch V8 to run on older XCode versions (Ujjwal Sharma)
[#29694](#29694)
- update V8 gypfiles (Michaël Zasso)
[#29694](#29694)
- support full-icu by default (Steven R. Loomis)
[#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
(Ruben Bridgewater)
[#29824](#29824)
PR-URL: #29504
Notable changes:
* assert:
* If the validation function passed to `assert.throws()` or
`assert.rejects()` returns a value other than `true`, an assertion
error will be thrown instead of the original error to highlight the
programming mistake (Ruben Bridgewater).
#28263
* If a constructor function is passed to validate the instance of
errors thrown in `assert.throws()` or `assert.reject()`, an
assertion error will be thrown instead of the original error
(Ruben Bridgewater).
#28263
* build:
* Node.js releases are now built with default full-icu support. This
means that all locales supported by ICU are now included and
Intl-related APIs may return different values than before
(Richard Lau).
#29887
* The minimum Xcode version supported for macOS was increased to 10.
It is still possible to build Node.js with Xcode 8 but this may no
longer be the case in a future v13.x release (Michael Dawson).
#29622
* child_process:
* `ChildProcess._channel` (DEP0129) is now a Runtime deprecation
(cjihrig).
#27949
* console:
* The output `console.timeEnd()` and `console.timeLog()` will now
automatically select a suitable time unit instead of always using
milliseconds (Xavier Stouder).
#29251
* deps:
* The V8 engine was updated to version 7.8. This includes performance
improvements to object destructuring, memory usage and WebAssembly
startup time (Myles Borins).
#29694)
* domain:
* The domain's error handler is now executed with the active domain
set to the domain's parent to prevent inner recursion
(Julien Gilli).
#26211
* fs:
* The undocumented method `FSWatcher.prototype.start()` was removed
(Lucas Holmquist).
#29905
* Calling the `open()` method on a `ReadStream` or `WriteStream` now
emits a runtime deprecation warning. The methods are supposed to be
internal and should not be called by user code (Robert Nagy).
#29061
* `fs.read/write`, `fs.readSync/writeSync` and `fd.read/write` now
accept any safe integer as their `offset` parameter. The value of
`offset` is also no longer coerced, so a valid type must be passed
to the functions (Zach Bjornson).
#26572
* http:
* Aborted requests no longer emit the `end` or `error` events after
`aborted` (Robert Nagy).
#27984
#20077
* Data will no longer be emitted after a socket error (Robert Nagy).
#28711
* The legacy HTTP parser (previously available under the
`--http-parser=legacy` flag) was removed (Anna Henningsen).
#29589
* The `host` option for HTTP requests is now validated to be a string
value (Giorgos Ntemiris).
#29568
* The `request.connection` and `response.connection` properties are now
runtime deprecated. The equivalent `request.socket` and `response.socket`
should be used instead (Robert Nagy).
#29015
* http, http2:
* The default server timeout was removed (Ali Ijaz Sheikh).
#27558
* Brought 425 status code name into accordance with RFC 8470. The name
changed from "Unordered Collection" to "Too Early" (Sergei Osipov).
#29880
* lib:
* The `error.errno` property will now always be a number. To get the
string value, use `error.code` instead (Joyee Cheung).
#28140
* module:
* `module.createRequireFromPath()` is deprecated. Use
`module.createRequire()` instead (cjihrig).
#27951
* src:
* Changing the value of `process.env.TZ` will now clear the tz cache.
This affects the default time zone used by methods such as
`Date.prototype.toString` (Ben Noordhuis).
#20026
* stream:
* The timing and behavior of streams was consolidated for a number of
edge cases. Please look at the individual commits below for more
information.
PR-URL: #29504
Notable changes:
* assert:
* If the validation function passed to `assert.throws()` or
`assert.rejects()` returns a value other than `true`, an assertion
error will be thrown instead of the original error to highlight the
programming mistake (Ruben Bridgewater).
#28263
* If a constructor function is passed to validate the instance of
errors thrown in `assert.throws()` or `assert.reject()`, an
assertion error will be thrown instead of the original error
(Ruben Bridgewater).
#28263
* build:
* Node.js releases are now built with default full-icu support. This
means that all locales supported by ICU are now included and
Intl-related APIs may return different values than before
(Richard Lau).
#29887
* The minimum Xcode version supported for macOS was increased to 10.
It is still possible to build Node.js with Xcode 8 but this may no
longer be the case in a future v13.x release (Michael Dawson).
#29622
* child_process:
* `ChildProcess._channel` (DEP0129) is now a Runtime deprecation
(cjihrig).
#27949
* console:
* The output `console.timeEnd()` and `console.timeLog()` will now
automatically select a suitable time unit instead of always using
milliseconds (Xavier Stouder).
#29251
* deps:
* The V8 engine was updated to version 7.8. This includes performance
improvements to object destructuring, memory usage and WebAssembly
startup time (Myles Borins).
#29694)
* domain:
* The domain's error handler is now executed with the active domain
set to the domain's parent to prevent inner recursion
(Julien Gilli).
#26211
* fs:
* The undocumented method `FSWatcher.prototype.start()` was removed
(Lucas Holmquist).
#29905
* Calling the `open()` method on a `ReadStream` or `WriteStream` now
emits a runtime deprecation warning. The methods are supposed to be
internal and should not be called by user code (Robert Nagy).
#29061
* `fs.read/write`, `fs.readSync/writeSync` and `fd.read/write` now
accept any safe integer as their `offset` parameter. The value of
`offset` is also no longer coerced, so a valid type must be passed
to the functions (Zach Bjornson).
#26572
* http:
* Aborted requests no longer emit the `end` or `error` events after
`aborted` (Robert Nagy).
#27984
#20077
* Data will no longer be emitted after a socket error (Robert Nagy).
#28711
* The legacy HTTP parser (previously available under the
`--http-parser=legacy` flag) was removed (Anna Henningsen).
#29589
* The `host` option for HTTP requests is now validated to be a string
value (Giorgos Ntemiris).
#29568
* The `request.connection` and `response.connection` properties are now
runtime deprecated. The equivalent `request.socket` and `response.socket`
should be used instead (Robert Nagy).
#29015
* http, http2:
* The default server timeout was removed (Ali Ijaz Sheikh).
#27558
* Brought 425 status code name into accordance with RFC 8470. The name
changed from "Unordered Collection" to "Too Early" (Sergei Osipov).
#29880
* lib:
* The `error.errno` property will now always be a number. To get the
string value, use `error.code` instead (Joyee Cheung).
#28140
* module:
* `module.createRequireFromPath()` is deprecated. Use
`module.createRequire()` instead (cjihrig).
#27951
* src:
* Changing the value of `process.env.TZ` will now clear the tz cache.
This affects the default time zone used by methods such as
`Date.prototype.toString` (Ben Noordhuis).
#20026
* stream:
* The timing and behavior of streams was consolidated for a number of
edge cases. Please look at the individual commits below for more
information.
PR-URL: #29504
* Motivation: In a previous PR, nodejs#29905, I made this method a private method since it had no value to the user. There was discussion that maybe it should have been a runtime deprecation first, but was ultimatley decided that for this type of method, a noop stub was a better option. This Adds back in the method, but as a noop stub, while also keeping the real implementation private
* Motivation: In a previous PR, #29905, I made this method a private method since it had no value to the user. There was discussion that maybe it should have been a runtime deprecation first, but was ultimatley decided that for this type of method, a noop stub was a better option. This Adds back in the method, but as a noop stub, while also keeping the real implementation private PR-URL: #30160 Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
* Motivation: In a previous PR, #29905, I made this method a private method since it had no value to the user. There was discussion that maybe it should have been a runtime deprecation first, but was ultimatley decided that for this type of method, a noop stub was a better option. This Adds back in the method, but as a noop stub, while also keeping the real implementation private PR-URL: #30160 Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
function to FSWatcher._start to make it private
Also see #29872
The motivation here is that it serves no purpose to the end user.
An instance of FSWatcher is returned when a user calls fs.watch,
which will call the start method. A user can't create an instance
of a FSWatcher directly. If the start method is called by a user
it is a noop since the watcher has already started. Calling start
after a watcher has closed is also a noop
@addaleax @cjihrig I went straight for changing the function to private, do we need an entry or anything in the deprecations.md?
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes