-
-
Notifications
You must be signed in to change notification settings - Fork 33.5k
util,console: colorize regexp groups, character classes, etc #59710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
util,console: colorize regexp groups, character classes, etc #59710
Conversation
This adds a parser to parse the regular expression and to highlight different parts of a regular expression in case colors are active. It is a one time pass algorithm and should therefore not cause too much overhead during parsing. As side effect, it is now possible to create individual styles to colorize inspected values values as a user likes. This might for example be expanded to numbers with numeric separators, highlighting the separators or decimal points different. It would in theory also be possible to return a changed string. That is however not the intention for this API as it is only triggered in case colors are active.
I marked this as semver major, no matter that we normally do not treat util.inspect changes as breaking. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #59710 +/- ##
==========================================
+ Coverage 89.88% 89.95% +0.07%
==========================================
Files 656 667 +11
Lines 192947 197065 +4118
Branches 37841 38483 +642
==========================================
+ Hits 173427 177274 +3847
- Misses 12054 12198 +144
- Partials 7466 7593 +127
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned in private it would probably be less code to use the ast parser on the regexp instead of parsing it on our own - but since this is coloring and this provides nice and helpful ux for inspect users (pretty much everyone) I'm fine with my current concerns and still a strong +1 on this
@nodejs/tsc PTAL due to this being a semver major in my opinion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
I could not see any related failures in CITGM |
@mcollina @benjamingr @RafaelGSS @marco-ippolito PTAL. I need a reconfirmation for the latest changes (I hope the changes work for without-Intl builds. I didn't test it locally). |
Landed in fdef072 |
assert: * (SEMVER-MAJOR) move assert.fail with multiple arguments to eol (James M Snell) #58532 * (SEMVER-MAJOR) move CallTracker to EOL (James M Snell) #58006 assert,util: * (SEMVER-MAJOR) fail promise comparison in deep equal checks (Ruben Bridgewater) #59448 * (SEMVER-MAJOR) handle invalid dates as equal in deep comparison (Ruben Bridgewater) #57627 async_hooks: * (SEMVER-MAJOR) move `asyncResource` property on bound function to EOL (James M Snell) #58618 buffer: * (SEMVER-MAJOR) move SlowBuffer to EOL (Filip Skokan) #58220 build: * (SEMVER-MAJOR) bump minimum Clang version to 19 (Michaël Zasso) #59048 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #58064 * (SEMVER-MAJOR) stop distributing Corepack (Antoine du Hamel) #57617 child_process: * (SEMVER-MAJOR) move _channel to end-of-life (James M Snell) #58527 crypto: * (SEMVER-MAJOR) runtime-deprecate default shake128/256 output lengths (Filip Skokan) #59008 * (SEMVER-MAJOR) move deprecated hash and mgf1Hash options to EOL (James M Snell) #58706 * (SEMVER-MAJOR) runtime deprecate ECDH.setPublicKey() (James M Snell) #58620 deps: * (SEMVER-MAJOR) V8: backport 1d3362c55396 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 4f38995c8295 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 044b9b6f589d (Rezvan Mahdavi Hezaveh) #58064 * (SEMVER-MAJOR) V8: cherry-pick d2ad518a0b57 (Joyee Cheung) #58064 * (SEMVER-MAJOR) V8: revert 6d6c1e680c7b (Michaël Zasso) #58064 * (SEMVER-MAJOR) V8: revert e3cddbedb205 (Michaël Zasso) #58064 * (SEMVER-MAJOR) use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58064 * (SEMVER-MAJOR) patch V8 for illumos (Dan McDonald) #58064 * (SEMVER-MAJOR) remove problematic comment from v8-internal (Michaël Zasso) #58064 * (SEMVER-MAJOR) define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #58064 * (SEMVER-MAJOR) update V8 to 13.7.152.9 (Michaël Zasso) #58064 dgram: * (SEMVER-MAJOR) move deprecated APIs to EOL (James M Snell) #58474 dns: * (SEMVER-MAJOR) move falsy hostname in lookup to end-of-life (James M Snell) #58619 fs: * (SEMVER-MAJOR) move FileHandle close on GC to EOL (James M Snell) #58536 * (SEMVER-MAJOR) move rmdir recursive option to end-of-life (James M Snell) #58616 * (SEMVER-MAJOR) make `processReadResult()` and `readSyncRecursive()` private (Livia Medeiros) #58672 * (SEMVER-MAJOR) move fs stream open method to eol (James M Snell) #58529 * (SEMVER-MAJOR) remove `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) #55862 http: * (SEMVER-MAJOR) deprecate writeHeader (Sebastian Beltran) #59060 lib: * (SEMVER-MAJOR) expose global ErrorEvent (Richie Bendall) #58920 * (SEMVER-MAJOR) deprecate `_stream_*` modules (Dario Piotrowicz) #58337 * (SEMVER-MAJOR) deprecate _tls_common and _tls_wrap (Dario Piotrowicz) #57643 module: * (SEMVER-MAJOR) move Module._debug to end-of-life (James M Snell) #58473 node-api: * (SEMVER-MAJOR) add warning for NAPI_EXPERIMENTAL (Miguel Marcondes Filho) #58280 perf_hooks: * (SEMVER-MAJOR) move deprecated accessors to EOF (James M Snell) #58531 process: * (SEMVER-MAJOR) move multipleResolves event to EOL (James M Snell) #58707 repl: * (SEMVER-MAJOR) eol deprecate instantiating without new (Aviv Keller) #59495 src: * (SEMVER-MAJOR) store `Local` for `CallbackScope` on stack (Anna Henningsen) #59705 * (SEMVER-MAJOR) remove node.h APIs to make callback without an async context (Chengzhong Wu) #58471 * (SEMVER-MAJOR) remove deprecated node::EmitBeforeExit and node::EmitExit (Chengzhong Wu) #58469 * (SEMVER-MAJOR) remove deprecated node::CreatePlatform and node::FreePlatform (Chengzhong Wu) #58470 * (SEMVER-MAJOR) remove deprecated node::InitializeNodeWithArgs (Chengzhong Wu) #58470 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 138 (Michaël Zasso) #58064 src,permission: * (SEMVER-MAJOR) add --allow-net permission (Rafael Gonzaga) #58517 tls: * (SEMVER-MAJOR) move IP-address servername deprecation to eol (James M Snell) #58533 tools: * (SEMVER-MAJOR) update V8 gypfiles for 13.7 (Michaël Zasso) #58064 url: * (SEMVER-MAJOR) move bad port deprecation in legacy url to end-of-life (James M Snell) #58617 util,console: * (SEMVER-MAJOR) colorize regexp groups, character classes, etc (Ruben Bridgewater) #59710 worker: * (SEMVER-MAJOR) move terminate callback to end-of-life (James M Snell) #58528 PR-URL: #59896
assert: * (SEMVER-MAJOR) move assert.fail with multiple arguments to eol (James M Snell) #58532 * (SEMVER-MAJOR) move CallTracker to EOL (James M Snell) #58006 assert,util: * (SEMVER-MAJOR) fail promise comparison in deep equal checks (Ruben Bridgewater) #59448 * (SEMVER-MAJOR) handle invalid dates as equal in deep comparison (Ruben Bridgewater) #57627 async_hooks: * (SEMVER-MAJOR) move `asyncResource` property on bound function to EOL (James M Snell) #58618 buffer: * (SEMVER-MAJOR) move SlowBuffer to EOL (Filip Skokan) #58220 build: * (SEMVER-MAJOR) bump minimum Clang version to 19 (Michaël Zasso) #59048 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #58064 * (SEMVER-MAJOR) stop distributing Corepack (Antoine du Hamel) #57617 child_process: * (SEMVER-MAJOR) move _channel to end-of-life (James M Snell) #58527 crypto: * (SEMVER-MAJOR) runtime-deprecate default shake128/256 output lengths (Filip Skokan) #59008 * (SEMVER-MAJOR) move deprecated hash and mgf1Hash options to EOL (James M Snell) #58706 * (SEMVER-MAJOR) runtime deprecate ECDH.setPublicKey() (James M Snell) #58620 deps: * (SEMVER-MAJOR) V8: backport 1d3362c55396 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 4f38995c8295 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 044b9b6f589d (Rezvan Mahdavi Hezaveh) #58064 * (SEMVER-MAJOR) V8: cherry-pick d2ad518a0b57 (Joyee Cheung) #58064 * (SEMVER-MAJOR) V8: revert 6d6c1e680c7b (Michaël Zasso) #58064 * (SEMVER-MAJOR) V8: revert e3cddbedb205 (Michaël Zasso) #58064 * (SEMVER-MAJOR) use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58064 * (SEMVER-MAJOR) patch V8 for illumos (Dan McDonald) #58064 * (SEMVER-MAJOR) remove problematic comment from v8-internal (Michaël Zasso) #58064 * (SEMVER-MAJOR) define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #58064 * (SEMVER-MAJOR) update V8 to 13.7.152.9 (Michaël Zasso) #58064 dgram: * (SEMVER-MAJOR) move deprecated APIs to EOL (James M Snell) #58474 dns: * (SEMVER-MAJOR) move falsy hostname in lookup to end-of-life (James M Snell) #58619 fs: * (SEMVER-MAJOR) move FileHandle close on GC to EOL (James M Snell) #58536 * (SEMVER-MAJOR) move rmdir recursive option to end-of-life (James M Snell) #58616 * (SEMVER-MAJOR) make `processReadResult()` and `readSyncRecursive()` private (Livia Medeiros) #58672 * (SEMVER-MAJOR) move fs stream open method to eol (James M Snell) #58529 * (SEMVER-MAJOR) remove `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) #55862 http: * (SEMVER-MAJOR) deprecate writeHeader (Sebastian Beltran) #59060 lib: * (SEMVER-MAJOR) expose global ErrorEvent (Richie Bendall) #58920 * (SEMVER-MAJOR) deprecate `_stream_*` modules (Dario Piotrowicz) #58337 * (SEMVER-MAJOR) deprecate _tls_common and _tls_wrap (Dario Piotrowicz) #57643 module: * (SEMVER-MAJOR) move Module._debug to end-of-life (James M Snell) #58473 node-api: * (SEMVER-MAJOR) add warning for NAPI_EXPERIMENTAL (Miguel Marcondes Filho) #58280 perf_hooks: * (SEMVER-MAJOR) move deprecated accessors to EOF (James M Snell) #58531 process: * (SEMVER-MAJOR) move multipleResolves event to EOL (James M Snell) #58707 repl: * (SEMVER-MAJOR) eol deprecate instantiating without new (Aviv Keller) #59495 src: * (SEMVER-MAJOR) store `Local` for `CallbackScope` on stack (Anna Henningsen) #59705 * (SEMVER-MAJOR) remove node.h APIs to make callback without an async context (Chengzhong Wu) #58471 * (SEMVER-MAJOR) remove deprecated node::EmitBeforeExit and node::EmitExit (Chengzhong Wu) #58469 * (SEMVER-MAJOR) remove deprecated node::CreatePlatform and node::FreePlatform (Chengzhong Wu) #58470 * (SEMVER-MAJOR) remove deprecated node::InitializeNodeWithArgs (Chengzhong Wu) #58470 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 138 (Michaël Zasso) #58064 src,permission: * (SEMVER-MAJOR) add --allow-net permission (Rafael Gonzaga) #58517 tls: * (SEMVER-MAJOR) move IP-address servername deprecation to eol (James M Snell) #58533 tools: * (SEMVER-MAJOR) update V8 gypfiles for 13.7 (Michaël Zasso) #58064 url: * (SEMVER-MAJOR) move bad port deprecation in legacy url to end-of-life (James M Snell) #58617 util,console: * (SEMVER-MAJOR) colorize regexp groups, character classes, etc (Ruben Bridgewater) #59710 worker: * (SEMVER-MAJOR) move terminate callback to end-of-life (James M Snell) #58528 PR-URL: #59896
assert: * (SEMVER-MAJOR) move assert.fail with multiple arguments to eol (James M Snell) #58532 * (SEMVER-MAJOR) move CallTracker to EOL (James M Snell) #58006 assert,util: * (SEMVER-MAJOR) fail promise comparison in deep equal checks (Ruben Bridgewater) #59448 * (SEMVER-MAJOR) handle invalid dates as equal in deep comparison (Ruben Bridgewater) #57627 async_hooks: * (SEMVER-MAJOR) move `asyncResource` property on bound function to EOL (James M Snell) #58618 buffer: * (SEMVER-MAJOR) move SlowBuffer to EOL (Filip Skokan) #58220 build: * (SEMVER-MAJOR) bump minimum Clang version to 19 (Michaël Zasso) #59048 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #58064 * (SEMVER-MAJOR) stop distributing Corepack (Antoine du Hamel) #57617 child_process: * (SEMVER-MAJOR) move _channel to end-of-life (James M Snell) #58527 crypto: * (SEMVER-MAJOR) runtime-deprecate default shake128/256 output lengths (Filip Skokan) #59008 * (SEMVER-MAJOR) move deprecated hash and mgf1Hash options to EOL (James M Snell) #58706 * (SEMVER-MAJOR) runtime deprecate ECDH.setPublicKey() (James M Snell) #58620 deps: * (SEMVER-MAJOR) V8: backport 1d3362c55396 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 4f38995c8295 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 044b9b6f589d (Rezvan Mahdavi Hezaveh) #58064 * (SEMVER-MAJOR) V8: cherry-pick d2ad518a0b57 (Joyee Cheung) #58064 * (SEMVER-MAJOR) V8: revert 6d6c1e680c7b (Michaël Zasso) #58064 * (SEMVER-MAJOR) V8: revert e3cddbedb205 (Michaël Zasso) #58064 * (SEMVER-MAJOR) use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58064 * (SEMVER-MAJOR) patch V8 for illumos (Dan McDonald) #58064 * (SEMVER-MAJOR) remove problematic comment from v8-internal (Michaël Zasso) #58064 * (SEMVER-MAJOR) define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #58064 * (SEMVER-MAJOR) update V8 to 13.7.152.9 (Michaël Zasso) #58064 dgram: * (SEMVER-MAJOR) move deprecated APIs to EOL (James M Snell) #58474 dns: * (SEMVER-MAJOR) move falsy hostname in lookup to end-of-life (James M Snell) #58619 fs: * (SEMVER-MAJOR) move FileHandle close on GC to EOL (James M Snell) #58536 * (SEMVER-MAJOR) move rmdir recursive option to end-of-life (James M Snell) #58616 * (SEMVER-MAJOR) make `processReadResult()` and `readSyncRecursive()` private (Livia Medeiros) #58672 * (SEMVER-MAJOR) move fs stream open method to eol (James M Snell) #58529 * (SEMVER-MAJOR) remove `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) #55862 http: * (SEMVER-MAJOR) deprecate writeHeader (Sebastian Beltran) #59060 lib: * (SEMVER-MAJOR) expose global ErrorEvent (Richie Bendall) #58920 * (SEMVER-MAJOR) deprecate `_stream_*` modules (Dario Piotrowicz) #58337 * (SEMVER-MAJOR) deprecate _tls_common and _tls_wrap (Dario Piotrowicz) #57643 module: * (SEMVER-MAJOR) move Module._debug to end-of-life (James M Snell) #58473 node-api: * (SEMVER-MAJOR) add warning for NAPI_EXPERIMENTAL (Miguel Marcondes Filho) #58280 perf_hooks: * (SEMVER-MAJOR) move deprecated accessors to EOF (James M Snell) #58531 process: * (SEMVER-MAJOR) move multipleResolves event to EOL (James M Snell) #58707 repl: * (SEMVER-MAJOR) eol deprecate instantiating without new (Aviv Keller) #59495 src: * (SEMVER-MAJOR) store `Local` for `CallbackScope` on stack (Anna Henningsen) #59705 * (SEMVER-MAJOR) remove node.h APIs to make callback without an async context (Chengzhong Wu) #58471 * (SEMVER-MAJOR) remove deprecated node::EmitBeforeExit and node::EmitExit (Chengzhong Wu) #58469 * (SEMVER-MAJOR) remove deprecated node::CreatePlatform and node::FreePlatform (Chengzhong Wu) #58470 * (SEMVER-MAJOR) remove deprecated node::InitializeNodeWithArgs (Chengzhong Wu) #58470 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 138 (Michaël Zasso) #58064 src,permission: * (SEMVER-MAJOR) add --allow-net permission (Rafael Gonzaga) #58517 tls: * (SEMVER-MAJOR) move IP-address servername deprecation to eol (James M Snell) #58533 tools: * (SEMVER-MAJOR) update V8 gypfiles for 13.7 (Michaël Zasso) #58064 url: * (SEMVER-MAJOR) move bad port deprecation in legacy url to end-of-life (James M Snell) #58617 util,console: * (SEMVER-MAJOR) colorize regexp groups, character classes, etc (Ruben Bridgewater) #59710 worker: * (SEMVER-MAJOR) move terminate callback to end-of-life (James M Snell) #58528 PR-URL: #59896 Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
assert: * (SEMVER-MAJOR) move assert.fail with multiple arguments to eol (James M Snell) #58532 * (SEMVER-MAJOR) move CallTracker to EOL (James M Snell) #58006 assert,util: * (SEMVER-MAJOR) fail promise comparison in deep equal checks (Ruben Bridgewater) #59448 * (SEMVER-MAJOR) handle invalid dates as equal in deep comparison (Ruben Bridgewater) #57627 async_hooks: * (SEMVER-MAJOR) move `asyncResource` property on bound function to EOL (James M Snell) #58618 buffer: * (SEMVER-MAJOR) move SlowBuffer to EOL (Filip Skokan) #58220 build: * (SEMVER-MAJOR) bump minimum Clang version to 19 (Michaël Zasso) #59048 * (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #58064 * (SEMVER-MAJOR) stop distributing Corepack (Antoine du Hamel) #57617 child_process: * (SEMVER-MAJOR) move _channel to end-of-life (James M Snell) #58527 crypto: * (SEMVER-MAJOR) runtime-deprecate default shake128/256 output lengths (Filip Skokan) #59008 * (SEMVER-MAJOR) move deprecated hash and mgf1Hash options to EOL (James M Snell) #58706 * (SEMVER-MAJOR) runtime deprecate ECDH.setPublicKey() (James M Snell) #58620 deps: * (SEMVER-MAJOR) V8: backport 1d3362c55396 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 4f38995c8295 (Shu-yu Guo) #58064 * (SEMVER-MAJOR) V8: cherry-pick 044b9b6f589d (Rezvan Mahdavi Hezaveh) #58064 * (SEMVER-MAJOR) V8: cherry-pick d2ad518a0b57 (Joyee Cheung) #58064 * (SEMVER-MAJOR) V8: revert 6d6c1e680c7b (Michaël Zasso) #58064 * (SEMVER-MAJOR) V8: revert e3cddbedb205 (Michaël Zasso) #58064 * (SEMVER-MAJOR) use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58064 * (SEMVER-MAJOR) patch V8 for illumos (Dan McDonald) #58064 * (SEMVER-MAJOR) remove problematic comment from v8-internal (Michaël Zasso) #58064 * (SEMVER-MAJOR) define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) fix FP16 bitcasts.h (Stefan Stojanovic) #58064 * (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #58064 * (SEMVER-MAJOR) update V8 to 13.7.152.9 (Michaël Zasso) #58064 dgram: * (SEMVER-MAJOR) move deprecated APIs to EOL (James M Snell) #58474 dns: * (SEMVER-MAJOR) move falsy hostname in lookup to end-of-life (James M Snell) #58619 fs: * (SEMVER-MAJOR) move FileHandle close on GC to EOL (James M Snell) #58536 * (SEMVER-MAJOR) move rmdir recursive option to end-of-life (James M Snell) #58616 * (SEMVER-MAJOR) make `processReadResult()` and `readSyncRecursive()` private (Livia Medeiros) #58672 * (SEMVER-MAJOR) move fs stream open method to eol (James M Snell) #58529 * (SEMVER-MAJOR) remove `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) #55862 http: * (SEMVER-MAJOR) deprecate writeHeader (Sebastian Beltran) #59060 lib: * (SEMVER-MAJOR) expose global ErrorEvent (Richie Bendall) #58920 * (SEMVER-MAJOR) deprecate `_stream_*` modules (Dario Piotrowicz) #58337 * (SEMVER-MAJOR) deprecate _tls_common and _tls_wrap (Dario Piotrowicz) #57643 module: * (SEMVER-MAJOR) move Module._debug to end-of-life (James M Snell) #58473 node-api: * (SEMVER-MAJOR) add warning for NAPI_EXPERIMENTAL (Miguel Marcondes Filho) #58280 perf_hooks: * (SEMVER-MAJOR) move deprecated accessors to EOF (James M Snell) #58531 process: * (SEMVER-MAJOR) move multipleResolves event to EOL (James M Snell) #58707 repl: * (SEMVER-MAJOR) eol deprecate instantiating without new (Aviv Keller) #59495 src: * (SEMVER-MAJOR) store `Local` for `CallbackScope` on stack (Anna Henningsen) #59705 * (SEMVER-MAJOR) remove node.h APIs to make callback without an async context (Chengzhong Wu) #58471 * (SEMVER-MAJOR) remove deprecated node::EmitBeforeExit and node::EmitExit (Chengzhong Wu) #58469 * (SEMVER-MAJOR) remove deprecated node::CreatePlatform and node::FreePlatform (Chengzhong Wu) #58470 * (SEMVER-MAJOR) remove deprecated node::InitializeNodeWithArgs (Chengzhong Wu) #58470 * (SEMVER-MAJOR) update NODE_MODULE_VERSION to 138 (Michaël Zasso) #58064 src,permission: * (SEMVER-MAJOR) add --allow-net permission (Rafael Gonzaga) #58517 tls: * (SEMVER-MAJOR) move IP-address servername deprecation to eol (James M Snell) #58533 tools: * (SEMVER-MAJOR) update V8 gypfiles for 13.7 (Michaël Zasso) #58064 url: * (SEMVER-MAJOR) move bad port deprecation in legacy url to end-of-life (James M Snell) #58617 util,console: * (SEMVER-MAJOR) colorize regexp groups, character classes, etc (Ruben Bridgewater) #59710 worker: * (SEMVER-MAJOR) move terminate callback to end-of-life (James M Snell) #58528 PR-URL: #59896 Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
This adds a parser to parse the regular expression and to highlight different parts of a regular expression in case colors are active.
It is a one time pass algorithm and should therefore not cause too much overhead during parsing.
As side effect, it is now possible to create individual styles to colorize inspected values values as a user likes. This might for example be expanded to numbers with numeric separators, highlighting the separators or decimal points different.
It would in theory also be possible to return a changed string. That is however not the intention for this API as it is only triggered in case colors are active.
I used a very fine granular differentiation to highlight all differences and to make sure key characters are visible fast.
I decided to handle it with a depth instead of fixed groups that define the color for the group. I think this is an improvement over the current implementation either way and we could still change it later, if it is deemed better to have fixed colors instead.
I know of one case that this is not showing correct: if a unicode property is seemingly started, while not being one without the u or v flag and it also containing a seemingly legitimate ending.