| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
There was a problem hiding this comment.
Perhaps a defaultOptions setter/getter would be better here? Something like...
util.inspect.defaultOptions = options;
// or even...
util.inspect.defaultOptions.maxArrayLength = 1000;
Sorry, something went wrong.
There was a problem hiding this comment.
Right, seems cleaner.
Sorry, something went wrong.
There was a problem hiding this comment.
Hmm, I think it might be possible to make them plain properties. Would save some time having to compute the getter/setter names at least.
Sorry, something went wrong.
|
I'm generally +1 on having this, but prefer making it a getter/setter rather than a method. |
Sorry, something went wrong.
There was a problem hiding this comment.
Shouldn't this check for null?
Sorry, something went wrong.
There was a problem hiding this comment.
Right, null is an issue. How about a strict object check instead?
if (Object.prototype.toString.call(options) === '[object Object]') {
Sorry, something went wrong.
There was a problem hiding this comment.
In other places in core, I believe we've just been doing options === null || typeof options !== 'object'
Sorry, something went wrong.
|
Thanks for review. What's the general consensus on util._extend vs Object.assign? Shall we use the former in performance-critical paths, otherwise the latter? |
Sorry, something went wrong.
|
Last I heard, we were still preferring util._extend() for performance reasons. However, I believe Object.assign() is more flexible, so it might be preferable in cases that would require multiple calls to util._extend(). |
Sorry, something went wrong.
|
Windows fail looks unrelated (Jenkins -- connection aborted) |
Sorry, something went wrong.
|
Also, not sure what's up with the linter on CI: + gmake lint-ci
./node tools/jslint.js -j 1 -f tap -o test-eslint.tap \
benchmark lib src test tools
gmake: *** [Makefile:677: jslint-ci] Error 1
Definitely passes locally. |
Sorry, something went wrong.
|
Nevermind, there's some lint errors. Fixing them. |
Sorry, something went wrong.
|
Updated to use the util.inspect.defaultOptions property instead of a function.
|
Sorry, something went wrong.
|
Using a getter/setter would help protect against things like defaultOptions = null, just have the setter function check to see if the input is valid and ignore it if it is not. I'm not convinced that sealing the object is necessary but it's likely harmless. |
Sorry, something went wrong.
|
@jasnell Sealing for example prevents delete defaultOptions.depth for of the current solution without accessors. Supporting both defaultOptions = {} and defaultOptions.property = true through getters/setters would introduce quite a big amount of code. I'm not sure if it's really that common to set all properties at once. In my case, I'd only like to change depth and maxArrayLength. |
Sorry, something went wrong.
|
@jasnell I've switched to accessors now. The solution turned out shorter than I thought and should satisfy all cases. I'd like to keep the properties sealed to prevent some misuse like deleting, and so I can Object.assign without checking for property existance in the setter. |
Sorry, something went wrong.
Sorry, something went wrong.
There was a problem hiding this comment.
s/options/default options
Sorry, something went wrong.
|
LGTM with a nit if CI is green. |
Sorry, something went wrong.
There was a problem hiding this comment.
Tiny nit, but could you capitalize "set" here and in the comment below.
Sorry, something went wrong.
|
LGTM pending CI. |
Sorry, something went wrong.
|
CI is green except a hanging Windows box. Giving this PR a bit of time for others to weight in. |
Sorry, something went wrong.
There was a problem hiding this comment.
Since this is a property and not a function, it doesn't really "return" anything, right? It just is a value. I'd be inclined to delete the line entirely. I don't think it actually adds any information. (I also think it's misleading. If you don't set it, it's undefined and not an object.)
Sorry, something went wrong.
There was a problem hiding this comment.
(Whoops, the parenthetical is wrong, ignore it. Also, uh, yeah, looks like I'm commenting on an out-of-date diff. SMH. Sorry.)
Sorry, something went wrong.
|
LGTM with Trott's nit fixed |
Sorry, something went wrong.
|
Nit addressed. One more CI: https://ci.nodejs.org/job/node-test-pull-request/3589/ |
Sorry, something went wrong.
|
still LGTM :-) |
Sorry, something went wrong.
|
Noticed a bug where the REPL module called to inspect using the legacy form with undefined properties: util.inspect(obj, undefined, undefined, true)The undefined properties were overriding the defaults in the Object.assign call. I fixed the issue by not adding undefined props to ctx and added a test for it. Also made it copy opts last, so it matches previous behaviour. One last CI: https://ci.nodejs.org/job/node-test-pull-request/3598/ |
Sorry, something went wrong.
Adds util.inspect.defaultOptions which allows customization of the default util.inspect options, which is useful for functions like console.log or util.format which implicitly call into util.inspect. PR-URL: nodejs#8013 Fixes: nodejs#7566 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
Adds util.inspect.defaultOptions which allows customization of the default util.inspect options, which is useful for functions like console.log or util.format which implicitly call into util.inspect. PR-URL: #8013 Fixes: #7566 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
Sorry, something went wrong.
Adds util.inspect.defaultOptions which allows customization of the default util.inspect options, which is useful for functions like console.log or util.format which implicitly call into util.inspect. PR-URL: #8013 Fixes: #7566 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
|
There was a silly typo in the error message. I --force-with-lease pushed 1a6a69a to correct it. |
Sorry, something went wrong.
Adds util.inspect.defaultOptions which allows customization of the default util.inspect options, which is useful for functions like console.log or util.format which implicitly call into util.inspect. PR-URL: #8013 Fixes: #7566 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
Notable changes: * build: zlib symbols and additional OpenSSL symbols are now exposed on Windows platforms. (Alex Hultman) #7983 and #7576 * child_process, cluster: Forked child processes and cluster workers now support stdio configuration. (Colin Ihrig) #7811 and #7838 * fs: fs.ReadStream now exposes the number of bytes it has read so far. (Linus Unnebäck) #7942 * repl: The REPL now supports editor mode. (Prince J Wesley) #7275 * util: inspect() can now be configured globally using util.inspect.defaultOptions. (Roman Reiss) #8013 Refs: #8020 PR-URL: #8070
Notable changes: * build: zlib symbols and additional OpenSSL symbols are now exposed on Windows platforms. (Alex Hultman) #7983 and #7576 * child_process, cluster: Forked child processes and cluster workers now support stdio configuration. (Colin Ihrig) #7811 and #7838 * child_process: argv[0] can now be set to arbitrary values in spawned processes. (Pat Pannuto) #7696 * fs: fs.ReadStream now exposes the number of bytes it has read so far. (Linus Unnebäck) #7942 * repl: The REPL now supports editor mode. (Prince J Wesley) #7275 * util: inspect() can now be configured globally using util.inspect.defaultOptions. (Roman Reiss) #8013 Refs: #8020 PR-URL: #8070
Notable changes: * build: zlib symbols and additional OpenSSL symbols are now exposed on Windows platforms. (Alex Hultman) #7983 and #7576 * child_process, cluster: Forked child processes and cluster workers now support stdio configuration. (Colin Ihrig) #7811 and #7838 * child_process: argv[0] can now be set to arbitrary values in spawned processes. (Pat Pannuto) #7696 * fs: fs.ReadStream now exposes the number of bytes it has read so far. (Linus Unnebäck) #7942 * repl: The REPL now supports editor mode. (Prince J Wesley) #7275 * util: inspect() can now be configured globally using util.inspect.defaultOptions. (Roman Reiss) #8013 Refs: #8020 PR-URL: #8070
Notable changes: * build: zlib symbols and additional OpenSSL symbols are now exposed on Windows platforms. (Alex Hultman) nodejs#7983 and nodejs#7576 * child_process, cluster: Forked child processes and cluster workers now support stdio configuration. (Colin Ihrig) nodejs#7811 and nodejs#7838 * child_process: argv[0] can now be set to arbitrary values in spawned processes. (Pat Pannuto) nodejs#7696 * fs: fs.ReadStream now exposes the number of bytes it has read so far. (Linus Unnebäck) nodejs#7942 * repl: The REPL now supports editor mode. (Prince J Wesley) nodejs#7275 * util: inspect() can now be configured globally using util.inspect.defaultOptions. (Roman Reiss) nodejs#8013 Refs: nodejs#8020 PR-URL: nodejs#8070
| Back | FazBrowse Home | New Git URL |
Checklist
Affected core subsystem(s)
util
Description of change
Adds the util.inspect.config() method to allow customization of inspect options in cases where util.inspect() is implicitly called by core like in console or util.format.
Fixes: #7566