Commit Graph
10531 Commits
Author SHA1 Message Date
Tobias Nießen 5a0777776d crypto: do not overwrite _writableState.defaultEncoding
This only affects the writable side of LazyTransform and should not
change the behavior of any LazyTransform streams (Cipher, Decipher,
Cipheriv, Decipheriv, Hash, Hmac).

If the user does not set defaultEncoding when creating a transform
stream, WritableState uses 'utf8' by default. Only LazyTransform
overwrites this with 'buffer' for strict backward compatibility. This
was necessary when crypto.DEFAULT_ENCODING still existed. Now that
DEFAULT_ENCODING has been removed, defaultEncoding is always 'buffer'.
The writable side of LazyTransform appears to treat 'utf8' and 'buffer'
in exactly the same way. Therefore, there seems to be no need to
overwrite _writableState.defaultEncoding at this point.

Nevertheless, because Node.js has failed to hide implementation details
such as _writableState from the ecosystem, we may want to consider this
a breaking change.

Refs: https://github.com/nodejs/node/pull/47182
Refs: https://github.com/nodejs/node/pull/8611
PR-URL: https://github.com/nodejs/node/pull/49140
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
2023-08-27 14:12:29 +00:00
Yeseul Lee 76e659a103 fs: add the options param description in openAsBlob()
PR-URL: https://github.com/nodejs/node/pull/49308
Refs: https://github.com/nodejs/node/blob/main/doc/api/fs.md#fsopenasblobpath-options
Reviewed-By: Deokjin Kim <deokjin81.kim@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-26 14:48:59 +00:00
Khafra 4ba7370650 stream: use Buffer.from when constructor is a Buffer
When using BYOB streams, it's possible for the constructor in
readableByteStreamControllerConvertPullIntoDescriptor to be a node
Buffer. If it is, use `Buffer.from` over `new ctor`.

Fixes https://github.com/nodejs/node/issues/49245

PR-URL: https://github.com/nodejs/node/pull/49250
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2023-08-26 11:43:58 +00:00
Antoine du Hamel 69f7583ee5 policy: fix path to URL conversion
PR-URL: https://github.com/nodejs/node/pull/49133
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
2023-08-26 05:45:13 +00:00
Deokjin Kim c5cad08476 fs: remove redundant code in readableWebStream()
Remove redundant code by moving it to outside of `if/else`. Plus,
make `options` optional in doc.

PR-URL: https://github.com/nodejs/node/pull/49298
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-25 15:23:15 +00:00
Raz LuvatonandRobert Nagy b0f423390f stream: add highWaterMark for the map operator
this is done so we don't wait for the first items to
finish before starting new ones

Fixes: https://github.com/nodejs/node/issues/46132

Co-authored-by: Robert Nagy <ronagy@icloud.com>
PR-URL: https://github.com/nodejs/node/pull/49249
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
2023-08-24 12:11:21 +00:00
Robert NagyandChemi Atlow feb5b0fef8 fs: make sure to write entire buffer
fs.write(v) is not guaranteed to write everything in a single
call. Make sure we don't assume so.

PR-URL: https://github.com/nodejs/node/pull/49211
Co-authored-by: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
2023-08-24 08:15:08 +03:00
Antoine du Hamel bca14f8518 worker: protect against user mutating well-known prototypes
PR-URL: https://github.com/nodejs/node/pull/49270
Fixes: https://github.com/nodejs/node/issues/49259
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Matthew Aitken <maitken033380023@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2023-08-23 09:06:51 +00:00
Antoine du Hamel 2557932db2 esm: align sync and async load implementations
Refs: https://github.com/nodejs/node/pull/48272
PR-URL: https://github.com/nodejs/node/pull/49152
Refs: https://github.com/nodejs/node/pull/47999
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
2023-08-20 05:08:22 +00:00
Hyunjin Kim cb4a6fafe6 doc: use same name in the doc as in the code
Refs: https://streams.spec.whatwg.org/#bytelengthqueuingstrategy
PR-URL: https://github.com/nodejs/node/pull/49216
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Deokjin Kim <deokjin81.kim@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-19 16:15:22 +00:00
Tobias Nießen 78842cf213 crypto: remove getDefaultEncoding()
Refs: https://github.com/nodejs/node/pull/47182
Refs: https://github.com/nodejs/node/pull/47869
Refs: https://github.com/nodejs/node/pull/47943
Refs: https://github.com/nodejs/node/pull/47998
Refs: https://github.com/nodejs/node/pull/49140
Refs: https://github.com/nodejs/node/pull/49145
Refs: https://github.com/nodejs/node/pull/49167
Refs: https://github.com/nodejs/node/pull/49169
PR-URL: https://github.com/nodejs/node/pull/49170
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-19 12:55:30 +05:30
Carlos Espa 413c16e490 src,permission: add multiple allow-fs-* flags
Support for a single comma separates list for allow-fs-* flags is
removed. Instead now multiple flags can be passed to allow multiple
paths.

Fixes: https://github.com/nodejs/security-wg/issues/1039
PR-URL: https://github.com/nodejs/node/pull/49047
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
2023-08-17 18:39:04 +00:00
Chemi Atlow a5567c2279 test_runner: expose spec reporter as newable function
Fixes: https://github.com/nodejs/node/issues/48112
Ref: https://github.com/nodejs/node/pull/48208
PR-URL: https://github.com/nodejs/node/pull/49184
Refs: https://github.com/nodejs/node/pull/48208
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
2023-08-17 18:21:14 +00:00
翠 / green 6bb400f8ec lib: add api to detect whether source-maps are enabled
Add `process.sourceMapsEnabled` to detect
whether source-maps are enabled.

Fixes: https://github.com/nodejs/node/issues/46304
PR-URL: https://github.com/nodejs/node/pull/46391
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-08-17 08:42:12 +00:00
Joyee Cheung b4a2be457c vm: store MicrotaskQueue in ContextifyContext directly
Previously the ContextifyContext holds a MicrotaskQueueWrap which in
turns holds a MicrotaskQueue in a shared pointer. The indirection is
actually unnecessary, we can directly hold the MicrotaskQueue via
a unique pointer in ContextifyContext, the lifetime would still
remain the same but the graph would be simpler, and this removes
the additional JS -> C++ to create the wrapper object.

PR-URL: https://github.com/nodejs/node/pull/48982
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
2023-08-16 20:18:46 +00:00
Joyee Cheung 8dcce52c33 lib: implement WeakReference on top of JS WeakRef
The C++ implementation can now be done entirely in JS using WeakRef.
Re-implement it in JS instead to simplify the code.

PR-URL: https://github.com/nodejs/node/pull/49053
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-08-16 18:45:07 +02:00
Tobias Nießen 72151769b8 crypto: remove default encoding from DiffieHellman
getDefaultEncoding() always returns 'buffer' in Node.js 20.

In diffiehellman.js, this value is always used as input to either
toBuf(), encode(), or getArrayBufferOrView(). All of these functions
treat any falsy encoding just like 'buffer', so we can safely remove the
calls to getDefaultEncoding().

Refs: https://github.com/nodejs/node/pull/47182
PR-URL: https://github.com/nodejs/node/pull/49169
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
2023-08-16 15:23:06 +00:00
Tobias Nießen 8ed4397985 crypto: remove default encoding from Hash/Hmac
getDefaultEncoding() always returns 'buffer' in Node.js 20. It requires
some careful justification but the default encoding can be eliminated
from hash.js entirely. The reasoning is almost identical with that in
https://github.com/nodejs/node/pull/49145 so I won't repeat it here.

Refs: https://github.com/nodejs/node/pull/47182
PR-URL: https://github.com/nodejs/node/pull/49167
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
2023-08-16 14:54:05 +00:00
Tobias Nießen 6f9d6f277b crypto: remove default encoding from sign/verify
getDefaultEncoding() always returns 'buffer' in Node.js 20. It requires
some careful justification but the default encoding can be eliminated
from sig.js entirely.

In Sign.prototype.update, we can safely remove the conditional
assignment of getDefaultEncoding() to encoding. This is because
SignUpdate() in crypto_sig.cc internally calls node::crypto::Decode,
which returns UTF8 for falsy encoding values. In other words, with the
conditional assignment, StringBytes::Write() ultimately receives the
encoding BUFFER, and without the conditional assignment, it receives the
encoding UTF8. However, StringBytes::Write() treats both encodings
identically, so there is no need to deviate from the internal default
encoding UTF8.

In Sign.prototype.sign, we can also safely remove the conditional
assignment of getDefaultEncoding() to encoding. Whether encoding is
falsy or 'buffer' makes no difference.

In Verify.prototype.verify, we can also safely remove the conditional
assignment of getDefaultEncoding() to sigEncoding. This is because the
function passes the sigEncoding to getArrayBufferOrView(), which passes
it to Buffer.from(). If sigEncoding is 'buffer', getArrayBufferOrView()
instead passes 'utf8' to Buffer.from(). Because the default encoding of
Buffer.from() is 'utf8', passing a falsy encoding to
getArrayBufferOrView() instead of 'buffer' results in the same behavior.

Refs: https://github.com/nodejs/node/pull/47182
PR-URL: https://github.com/nodejs/node/pull/49145
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-15 21:01:39 +00:00
Colin Ihrig b5740756ca test_runner: reland run global after() hook earlier
This commit reverts the revert in
bb52656fc6. It also includes the
fix for the issue that required the revert
(https://github.com/nodejs/node/pull/49059#issuecomment-1675171959)
and an additional common.mustCall() in the added test.

Refs: https://github.com/nodejs/node/pull/49059
Refs: https://github.com/nodejs/node/pull/49110
PR-URL: https://github.com/nodejs/node/pull/49116
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-08-14 14:29:29 +00:00
André Alves 71391987f7 lib: fix MIME overmatch in data URLs
This commit adds the delimiters ^ and $ to the regex that matches the
MIME types for `data:` URLs.

PR-URL: https://github.com/nodejs/node/pull/49104
Fixes: https://github.com/nodejs/node/issues/48957
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2023-08-13 23:24:22 +02:00
Antoine du Hamel b5da2f4dad esm: fix globalPreload warning
PR-URL: https://github.com/nodejs/node/pull/49069
Fixes: https://github.com/nodejs/node/issues/49026
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Jacob Smith <jacob@frende.me>
2023-08-13 14:37:32 +00:00
Raz Luvaton 9fc57006c2 stream: improve WebStreams performance
PR-URL: https://github.com/nodejs/node/pull/49089
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-08-13 08:17:34 +00:00
Guy Bedford ee8b7f1f18 esm: unflag import.meta.resolve
PR-URL: https://github.com/nodejs/node/pull/49028
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
2023-08-13 05:42:25 +00:00
Antoine du Hamel 3d20582c0f module: make CJS load from ESM loader
PR-URL: https://github.com/nodejs/node/pull/47999
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
2023-08-13 04:23:05 +00:00
Guy Bedford 569267d048 esm: import.meta.resolve exact module not found errors should return
PR-URL: https://github.com/nodejs/node/pull/49038
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jan Krems <jan.krems@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
2023-08-13 00:02:03 +00:00
Yagiz Nizipli 607a545904 url: overload canParse V8 fast api method
PR-URL: https://github.com/nodejs/node/pull/48993
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
2023-08-12 22:34:46 +00:00
Ethan Arrowood 27cadf5e93 fs: fix readdir recursive sync & callback
Refs: https://github.com/nodejs/node/issues/48640
PR-URL: https://github.com/nodejs/node/pull/48698
Fixes: https://github.com/nodejs/node/issues/48858
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2023-08-12 20:55:36 +00:00
Raz Luvaton c39f04c141 events: remove weak listener for event target
Fixes: https://github.com/nodejs/node/issues/48951
PR-URL: https://github.com/nodejs/node/pull/48952
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-08-12 18:20:54 +00:00
bellbind 32245275b5 lib: fix to add resolve() before return at Blob.stream()'s source.pull()
Add lacked calling resolve() for finish ReadableStream source.pull().

Fixes: https://github.com/nodejs/node/issues/48668
Fixes: https://github.com/nodejs/node/issues/48916
Fixes: https://github.com/nodejs/node/issues/48232
Refs: https://github.com/nodejs/node/commit/8cc14387a2e77d7a2b411e7edaed690d43ea3809
PR-URL: https://github.com/nodejs/node/pull/48935
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Matthew Aitken <maitken033380023@gmail.com>
2023-08-12 21:42:01 +05:30
Jakub Jankiewicz 87af913b66 readline: add paste bracket mode
The paste bracket mode allows REPL to have auto-indentation
that is handled differently when the user copy-pastes the code
from the clipboard and the code already has an indentation.

PR-URL: https://github.com/nodejs/node/pull/47150
Fixes: https://github.com/nodejs/node/issues/45213
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com>
2023-08-12 13:39:24 +02:00
Joyee Cheung bb52656fc6 Revert "test_runner: run global after() hook earlier"
This reverts commit 6346bdc526.

Reason for revert: breaking CI

PR-URL: https://github.com/nodejs/node/pull/49110
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-12 04:19:05 +00:00
Michael Bianco 9497665d19 doc: add description for --port flag of node inspect
PR-URL: https://github.com/nodejs/node/pull/48785
Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-11 17:31:04 +02:00
cjihrig 6346bdc526 test_runner: run global after() hook earlier
This commit moves the global after() hook execution from the
'beforeExit' event to the point where all tests have finished
running. This gives the global after() a chance to clean up
handles that would otherwise prevent the 'beforeExit' event
from being emitted.

PR-URL: https://github.com/nodejs/node/pull/49059
Fixes: https://github.com/nodejs/node/issues/49056
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-08-11 09:16:51 -04:00
cjihrig 4e61c22699 test_runner: expose location of tests
This commit adds each test's line and column number to the reporter
output. This will aid in debugging test suite failures when error
stacks are not helpful, test suites are large, or tests have the
same name. This data is also exposed on the spec reporter.

This commit also replaces the filename that was previously being
reported, with the filename where the test actually exists. These
are normally correct, but could be wrong if tests were run from
a file other than the user's entrypoint.

PR-URL: https://github.com/nodejs/node/pull/48975
Fixes: https://github.com/nodejs/node/issues/48457
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
2023-08-11 09:12:49 -04:00
Antoine du Hamel 6aafb6fbbb esm: protect ERR_UNSUPPORTED_DIR_IMPORT against prototype pollution
PR-URL: https://github.com/nodejs/node/pull/49060
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
2023-08-11 06:29:14 +00:00
RafaelGSS b68e5e7981 policy: handle Module.constructor and main.extensions bypass
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs-private/node-private/pull/417
Refs: https://hackerone.com/bugs?subject=nodejs&report_id=1960870
Refs: https://hackerone.com/bugs?subject=nodejs&report_id=2043807
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
CVE-ID: CVE-2023-32002,CVE-2023-32006
2023-08-09 14:33:55 -03:00
RafaelGSS 1f64147eb6 permission: handle buffer path on fs calls
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
Refs: https://hackerone.com/bugs?subject=nodejs&report_id=2038134
PR-URL: https://github.com/nodejs-private/node-private/pull/439
2023-08-09 14:29:12 -03:00
Tobias Nießen 4aa0eff787 policy: disable process.binding() when enabled
process.binding() can be used to trivially bypass restrictions imposed
through a policy. Since the function is deprecated already, simply
replace it with a stub when a policy is being enabled.

Fixes: https://hackerone.com/bugs?report_id=1946470
PR-URL: https://github.com/nodejs-private/node-private/pull/397
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
CVE-ID: CVE-2023-32559
2023-08-09 14:29:06 -03:00
RafaelGSS bd7443ad0a lib,permission: restrict process.binding when pm is enabled
PR-URL: https://github.com/nodejs-private/node-private/pull/438
Fixes: https://github.com/nodejs-private/node-private/issues/422
CVE-ID: CVE-2023-32558
2023-08-09 14:28:39 -03:00
LiviaMedeiros aed2b21ac0 typings: update JSDoc for cwd in child_process
PR-URL: https://github.com/nodejs/node/pull/49029
Refs: https://github.com/nodejs/node/pull/38862
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-08-08 15:32:31 +08:00
rogertyang 556b1ca900 tls: fix bugs of double TLS
Fixs two issues in `TLSWrap`, one of them is reported in
https://github.com/nodejs/node/issues/30896.

1. `TLSWrap` has exactly one `StreamListener`, however,
that `StreamListener` can be replaced. We have not been
rigorous enough here: if an active write has not been
finished before the transition, the finish callback of it
will be wrongly fired the successor `StreamListener`.

2. A `TLSWrap` does not allow more than one active write,
as checked in the assertion about current_write in
`TLSWrap::DoWrite()`.

However, when users make use of an existing `tls.TLSSocket`
to establish double TLS, by
either
  tls.connect({socket: tlssock})
or
  tlsServer.emit('connection', tlssock)
we have both of the user provided `tls.TLSSocket`, tlssock and
a brand new created `TLSWrap` writing to the `TLSWrap` bound to
tlssock, which easily violates the constranint because two writers
have no idea of each other.

The design of the fix is:
when a `TLSWrap` is created on top of a user provided socket,
do not send any data to the socket until all existing writes
of the socket are done and ensure registered callbacks of
those writes can be fired.

PR-URL: https://github.com/nodejs/node/pull/48969
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
2023-08-04 10:14:18 -04:00
Izaak Schroeder 6ad8318373 esm: add initialize hook, integrate with register
Follows @giltayar's proposed API:

> `register` can pass any data it wants to the loader, which will be
passed to the exported `initialize` function of the loader.
Additionally, if the user of `register` wants to communicate with the
loader, it can just create a `MessageChannel` and pass the port to the
loader as data.

The `register` API is now:

```ts
interface Options {
  parentUrl?: string;
  data?: any;
  transferList?: any[];
}

function register(loader: string, parentUrl?: string): any;
function register(loader: string, options?: Options): any;
```

This API is backwards compatible with the old one (new arguments are
optional and at the end) and allows for passing data into the new
`initialize` hook. If this hook returns data it is passed back to
`register`:

```ts
function initialize(data: any): Promise<any>;
```

**NOTE**: Currently there is no mechanism for a loader to exchange
ownership of something back to the caller.

Refs: https://github.com/nodejs/loaders/issues/147
PR-URL: https://github.com/nodejs/node/pull/48842
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
2023-08-03 05:10:59 +00:00
Antoine du Hamel 5c65565108 esm: fix typo parentUrl -> parentURL
PR-URL: https://github.com/nodejs/node/pull/48999
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-08-02 20:27:39 +00:00
Raz Luvaton c58e8fc31f test_runner: fix global after not failing the tests
PR-URL: https://github.com/nodejs/node/pull/48913
Fixes: https://github.com/nodejs/node/issues/48867
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-08-02 20:06:25 +00:00
Raz Luvaton 88094bba3c test_runner: fix timeout in *Each hook failing further tests
PR-URL: https://github.com/nodejs/node/pull/48925
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-07-31 22:13:02 +00:00
Gabriel Schulhof eb504c9406 diagnostics_channel: fix last subscriber removal
When iterating over diagnostics channel subscribers, assume their count
is zero if the list of subscribers becomes undefined, because there may
be only one subscriber which may unsubscribe itself as part of its
onMessage handler.

Signed-off-by: Gabriel Schulhof <gabrielschulhof@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/48933
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: theanarkh <theratliter@gmail.com>
2023-07-31 10:13:59 -07:00
Raz Luvaton 7a33f2b88d test_runner: cleanup test timeout abort listener
fix #48475

PR-URL: https://github.com/nodejs/node/pull/48915
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2023-07-31 08:10:36 +00:00
Moshe Atlow a955c534a8 test_runner: dont set exit code on todo tests
PR-URL: https://github.com/nodejs/node/pull/48929
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-07-29 20:45:16 +00:00
Moshe Atlow 040865c648 test_runner: fix todo and only in spec reporter
PR-URL: https://github.com/nodejs/node/pull/48929
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2023-07-29 20:45:16 +00:00