Commit Graph
31327 Commits
Author SHA1 Message Date
Rich Trott e692adf3cf doc: use _Class Method_ in async_hooks.md
We use _Class Method_ rather than _static_ in documentation headers in
buffer.md and crypto.md.  We use _static_ in one place in
async_hooks.md. Change to _Class Method_ for consistency.

PR-URL: https://github.com/nodejs/node/pull/34626
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
2020-08-06 16:45:48 -07:00
Anna Henningsen 22cbbcf9d9 n-api,src: provide asynchronous cleanup hooks
Sometimes addons need to perform cleanup actions, for example
closing libuv handles or waiting for requests to finish, that
cannot be performed synchronously.

Add C++ API and N-API functions that allow providing such
asynchronous cleanup hooks.

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

PR-URL: https://github.com/nodejs/node/pull/34572
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com>
2020-08-07 00:02:02 +02:00
Gerhard Stoebich a4e1755df2 async_hooks: don't read resource if ALS is disabled
Only call executionAsyncResource() in getStore() if the ALS instance is
enabled because the resource is not needed otherwise.

PR-URL: https://github.com/nodejs/node/pull/34617
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-08-06 23:31:16 +02:00
Gerhard Stoebich 48249889b6 async_hooks: avoid unneeded AsyncResource creation
Inspired by the callstack at https://github.com/nodejs/node/issues/34556#issuecomment-666743528

If the wanted store is equal to the active store it's not needed to
create an AsyncResource.

Refs: https://github.com/nodejs/node/issues/34556#issuecomment-666743528

PR-URL: https://github.com/nodejs/node/pull/34616
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
2020-08-06 23:26:13 +02:00
Shelley Vohr e43bb2f101 build: run CI on release branches
PR-URL: https://github.com/nodejs/node/pull/34649
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Mary Marchini <oss@mmarchini.me>
2020-08-06 10:43:46 -07:00
gengjiawen df17fcdc71 build: enable build for node-v8 push
PR-URL: https://github.com/nodejs/node/pull/34634
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Mary Marchini <oss@mmarchini.me>
2020-08-06 01:56:58 +00:00
Gabriel Schulhof 734327280d test: convert most N-API tests from C++ to C
* Prefix functions with `static` to make them local
* Remove anonymous namespaces
* `nullptr` -> `NULL`
* .cc -> .c and update binding.gyp
* `static_cast<x>()` -> `(x)()`
* Replace `new`/`delete` with `malloc()`/`free()`
  (only in test_callback_scope)
* Move lambda out and convert to local function
  (only in test_callback_scope)
* Remove superfluous `#include <vector>`
  (only in test_callback_scope_recurse)

Some tests are best left as C++.

```bash
ls -l test/{node-api,js-native-api}/*/*.cc
```

for those remaining as C++ tests.

Signed-off-by: Gabriel Schulhof <gabriel.schulhof@intel.com>
PR-URL: https://github.com/nodejs/node/pull/34615
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-05 14:21:51 -07:00
Bradley Farias b04f2b6618 policy: increase tests via permutation matrix
PR-URL: https://github.com/nodejs/node/pull/34404
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-08-05 13:48:59 -05:00
Mary Marchini e0d181cf2b build: increase startCI verbosity and fix job name
Ref: https://github.com/nodejs/node/issues/34594#issuecomment-669245839

PR-URL: https://github.com/nodejs/node/pull/34635
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-08-05 10:18:36 -07:00
Myles Borins 861a54c0e1 repl: improve static import error message in repl
Currently the error is rather ambiguous and does not inform folks that
static import is not supported in the repl. This overrides the default
error message with one that is more informative.

Closes: https://github.com/nodejs/node/issues/33576

PR-URL: https://github.com/nodejs/node/pull/33588
Fixes: https://github.com/nodejs/node/issues/33576
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
2020-08-05 09:56:15 -04:00
Ruy Adorno 96fd6810b6 doc: add release key for Ruy Adorno
Add Ruy Adorno and his Release key.

Refs: https://github.com/nodejs/Release/pull/597

PR-URL: https://github.com/nodejs/node/pull/34628
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-08-05 09:54:19 -04:00
Corey Butler 84b35b2867 doc: clarify process.title inconsistencies
Many users assume the act of assigning a value to `process.title` will
update the name of their application in apps like macOS Activity Monitor
or Windows Services Manager. This has worked in the past, but fails in
some versions of Node.js. Ultimately developers are left confused,
especially when it works in one version of Node.js and not another.
Given the recurring nature and complexity of the underlying problem, it
does not seem like a resolvable problem. This note clarifies the source
of the problem, sets developer expectations.

Refs: https://github.com/nodejs/node/issues/28945
PR-URL: https://github.com/nodejs/node/pull/34557
Fixes: https://github.com/nodejs/node/issues/34280
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
2020-08-04 16:54:44 -07:00
Rich Trott d5c7aec3cb doc: use _can_ to describe actions in quic.md
Per Microsoft style guide:

> When ability is what you need to express, it's OK to use _can_ to
> describe actions or tasks that the reader or program is able to do.
> Use _might_ to express possibility. Don't use _may_, which might be
> interpreted as providing permission.

Refs: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/can-may
Refs: https://github.com/nodejs/node/pull/34353#issuecomment-659169228

PR-URL: https://github.com/nodejs/node/pull/34613
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-04 16:27:22 -07:00
Rich Trott 319c275b26 doc: use _can_ to describe actions in quic.md
Per Microsoft style guide:

> When ability is what you need to express, it's OK to use _can_ to
> describe actions or tasks that the reader or program is able to do.
> Use _might_ to express possibility. Don't use _may_, which might be
> interpreted as providing permission.

Refs: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/c/can-may
Refs: https://github.com/nodejs/node/pull/34353#issuecomment-659169228

PR-URL: https://github.com/nodejs/node/pull/34613
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-04 16:27:20 -07:00
Gerhard Stoebich 3ea94ec845 async_hooks: improve property descriptors in als.bind
The length property should be non enumerable to match behavior of
normal functions.

The asyncResource property is enumerable and therefore it should be
also writable to avoid issues like there:
https://github.com/nodejs/node/pull/30932#discussion_r379679982

Both properties should be configurable.

Refs: https://github.com/nodejs/node/pull/34574

PR-URL: https://github.com/nodejs/node/pull/34620
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-08-04 18:05:01 +02:00
Anna Henningsen 0bb70b0a02 test: replace flaky pummel regression tests
These tests were written a long time ago, and use the allocation of
large amounts of unused memory as a way to detect use-after-free
problems with Buffers. As a result, the tests are resource-intensive
and may crash because of that.

Replace them with a more modern test. We don’t explicitly try to
*detect* use-after-free conditions, and instead rely on e.g. ASAN
(or the process just crashing hard) to do that for us.

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

PR-URL: https://github.com/nodejs/node/pull/34530
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
2020-08-04 08:43:18 +00:00
James M Snell 74df7496ff async_hooks: add AsyncResource.bind utility
Creates an internal AsyncResource and binds a function to it,
ensuring that the function is invoked within execution context
in which bind was called.

PR-URL: https://github.com/nodejs/node/pull/34574
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-03 18:40:16 -07:00
James M Snell 744a284ccc stream: support async for stream impl functions
PR-URL: https://github.com/nodejs/node/pull/34416
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
2020-08-03 17:54:08 -07:00
Bradley Farias ca26eae966 repl: give repl entries unique names
This is a workaround for the REPL for a problem when multiple of the
entries have the same source text

Fixes: https://github.com/nodejs/node/issues/1337
Refs: https://bugs.chromium.org/p/v8/issues/detail?id=10284

PR-URL: https://github.com/nodejs/node/pull/34372
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
2020-08-03 17:38:55 -05:00
Myles Borins 54746bb763 module: unflag Top-Level Await
This unflags Top-Level await so it can be used by default in the module
goal. This is accomplished by manually setting the
--harmony-top-level-await flag. We are allowing this as a one of
approval based on circumstances. It is not a precedent that future
harmony features will be manually enabled.

Refs: https://github.com/nodejs/node/issues/34551

PR-URL: https://github.com/nodejs/node/pull/34558
Reviewed-By: Mary Marchini <oss@mmarchini.me>
Reviewed-By: Zeyu Yang <himself65@outlook.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
2020-08-03 14:27:28 -04:00
Robert Nagy 8d8090b9bb test: fix flaky http-parser-timeout-reset
Refs: https://github.com/nodejs/node/pull/34578#issuecomment-667941698

PR-URL: https://github.com/nodejs/node/pull/34609
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
2020-08-03 13:47:33 -04:00
cjihrig a6a3684984 tools: update ESLint to 7.6.0
Update ESLint to 7.6.0

PR-URL: https://github.com/nodejs/node/pull/34589
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-08-03 08:48:57 -04:00
cjihrig ee0b44fd93 tools: add meta.fixable to fixable lint rules
This commit adds the meta.fixable property to all fixable ESLint
rules. This is required as of ESLint 7.6.0.

PR-URL: https://github.com/nodejs/node/pull/34589
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-08-03 08:48:32 -04:00
James M Snell 6e65f26b73 quic: use QuicCallbackScope consistently for QuicSession
PR-URL: https://github.com/nodejs/node/pull/34541
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
2020-08-03 12:03:06 +00:00
James M Snell d96083bad5 quic: introduce QuicCallbackScope
Alternative to `CallbackScope` that handles destroying the
`QuicSession` in the try_catch cleanup.

PR-URL: https://github.com/nodejs/node/pull/34541
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
2020-08-03 12:03:03 +00:00
James M Snell 4b0275ab87 quic: refactor clientHello
Refactor the `'clientHello'` event into a `clientHelloHandler`
configuration option and async function. Remove the addContext
API as it's not needed.

PR-URL: https://github.com/nodejs/node/pull/34541
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
2020-08-03 12:03:00 +00:00
Tim Perry e5dacc2f85 doc: document the connection event for HTTP2 & TLS servers
PR-URL: https://github.com/nodejs/node/pull/34531
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-08-03 11:59:58 +02:00
Andrey Pechkurov b7a23295e8 async_hooks: fix id assignment in fast-path promise hook
Native side of fast-path promise hook was not calling JS
fastPromiseHook function when there were no async ids
previously assigned to the promise. Because of that already
created promises could not get id assigned in situations
when an async hook without a before listener function is
enabled after their creation. As the result executionAsyncId
could return wrong id when called within promise's .then().

Refs: https://github.com/nodejs/node/pull/34512

PR-URL: https://github.com/nodejs/node/pull/34548
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-03 10:36:25 +03:00
Anna Henningsen 2ba93e1db4 async_hooks: fix resource stack for deep stacks
460c81dc0e introduced a bug where the execution resource was not
stored properly if we needed to call into C++ to extend the stack size.
Fix that bug by always storing the resource.

Refs: https://github.com/nodejs/node/pull/34319
Fixes: https://github.com/nodejs/node/issues/34556

PR-URL: https://github.com/nodejs/node/pull/34573
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Gus Caplan <me@gus.host>
2020-08-03 10:27:15 +03:00
Rich Trott a9c5b873ca test: move buffer-as-path symlink test to its own test file
The buffer-as-path test for fs.symlinkSync() is a bit unusual and
potentially error-prone embedded in the general fs.symlink() test. Move
it to its own test file.

Refs: https://github.com/nodejs/node/pull/34540/files#r463168354

PR-URL: https://github.com/nodejs/node/pull/34569
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
2020-08-02 17:38:05 -07:00
Gerhard Stoebich cb142d1341 async_hooks: execute destroy hooks earlier
Use a microtask to call destroy hooks in case there are a lot queued
as immediate may be scheduled late in case of long running
promise chains.

Queuing a mircrotasks in GC context is not allowed therefore an
interrupt is triggered to do this in JS context as fast as possible.

fixes: https://github.com/nodejs/node/issues/34328
refs: https://github.com/nodejs/node/issues/33896

PR-URL: https://github.com/nodejs/node/pull/34342
Fixes: https://github.com/nodejs/node/issues/34328
Refs: https://github.com/nodejs/node/issues/33896
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-08-02 23:13:42 +02:00
Renée Kooi 64481c2b13 doc: mention null special-case for napi_typeof
The documentation said `napi_typeof` is similar to the `typeof`
operator, but the `typeof null` detects `'object'` while
`napi_typeof(a_null_value)` detects `napi_null`.

PR-URL: https://github.com/nodejs/node/pull/34577
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
2020-08-02 11:57:47 -07:00
Derek Lewis 0be93eeb33 doc: add DerekNonGeneric to collaborators
Fixes: https://github.com/nodejs/node/issues/34369

PR-URL: https://github.com/nodejs/node/pull/34602
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
2020-08-02 12:56:04 -04:00
Robert Nagy da4d8de9d0 http: reset headers timeout on headers complete
headers timeout should not occur *after* headers have been
received.

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

PR-URL: https://github.com/nodejs/node/pull/34578
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com>
2020-08-02 09:35:18 +02:00
Rich Trott 73d713b16e test: change Fixes: to Refs:
Tests don't fix things generally, so use "Refs:" to refer people to
GitHub issues.

PR-URL: https://github.com/nodejs/node/pull/34568
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-08-01 17:08:01 -07:00
Rich Trott aeaf16194b doc: revise N-API versions matrix text
Revise text for clarity, brevity, and conformance with our style guide.

PR-URL: https://github.com/nodejs/node/pull/34566
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-08-01 17:04:41 -07:00
Derek Lewis 45fa216ee5 esm: fix hook mistypes and links to types
Prior to this commit, the custom loader hooks were:
* missing the Node.js API ref docs types
* missing the function signature from their sections
* linking directly to the specification (not customary)
* had an inconsistent non-nullable JSDoc promise return
* had JSDoc object properties that weren't alpha-sorted
* designated set of non-nullable types when single was fine

Notes:
    https://www.typescriptlang.org/play/index.html?strictNullChecks=true&useJavaScript=true#code/PQKhCgAIUgBAHAhgJ0QW0gbwM4BdkCWAdgOYC+k28ApgMYEBmB1yUMCK6WmbkftAeyIATArgJDsALkgBCAILJUATwA8eQqQB8AGl58kyakVwBVAEoAZGbIAUG4iUgAfSAFcR1JkWrCAlHrQkGQUgibUAB64vByoGJgAYh604kIUwl6IbgA2uObU2ALZAG7UMUa4bshE2FgACsgCaATY1KqY7sjZMg6kwVpkbMDgkfACyLiQiNjKRLSQDMmpRJBGhSXU9jT0TCw6kGG4kbj7GQxZufnrpX5YUAeSkx2GxmZWkAC8kEQ52cGfD3CUQA3PdGJBbABZRC4AAWADpUCImrZblpIAAGeEAVluHWAwEgAGUmtRAaJlvD7nwCZAEuNKKTIAzENk-lQ6IxmMhsKcBIy0GTaG48E1INkBCQCPMGAy1kVio4qXwaYT5NkAO6IZS1CpVFaIFYCABGACs6JMBAxIHCybLkPEqt1IOp8I4BsqVXrqncVSqnTIXiYLJZIAB+al+77UDWQENbTm7ZD7INvSx+eGwozWqSRv0+WPxjk7bkZrNeQIqsigviDPjgqEwhFI4Qo26qTE4vGQWnyIgCW3IcliCRET2qyAAdVhxgOrOyjkgAAMzhc8gUFdQl-tbVNkCQ3IKTLVaIbIMayWgBKJdsJ4ZAAJIrOEtSO00+tSBiADktUQwlEPpDQHGch2KVk3DtBk0BhWhYUXMIKVHVlIFGcZcGwcdVmoSofVXHJ12uTZiy5PZfSjeFKMOY5Kz9RCR0kGQAG1KPhaiojYoQkMkfZv2AwcAFp6OWb8AF1aOCPwa2Ce5aQAES8FgbX5AA5a9qHhU1antKY2WZQdKG2UieU9b0Vnwy4Nw2BMSzI9iTkgCzCM3KTwDIIA
    https://closure-compiler.appspot.com/home#code%3D%252F%252F%2520%253D%253DClosureCompiler%253D%253D%250A%252F%252F%2520%2540compilation_level%2520ADVANCED_OPTIMIZATIONS%250A%252F%252F%2520%2540warning_level%2520VERBOSE%250A%252F%252F%2520%2540jscomp_error%2520strictCheckTypes%250A%252F%252F%2520%2540language_out%2520ECMASCRIPT_NEXT%250A%252F%252F%2520%2540checks_only%250A%252F%252F%2520%253D%253D%252FClosureCompiler%253D%253D%250A%250A%252F**%250A%2520*%2520%2540param%2520%257Bstring%257D%2520specifier%250A%2520*%2520%2540param%2520%257B%257B%250A%2520*%2520%2520%2520conditions%253A%2520!Array%253Cstring%253E%252C%250A%2520*%2520%2520%2520parentURL%253A%2520!(string%2520%257C%2520undefined)%252C%250A%2520*%2520%257D%257D%2520context%250A%2520*%2520%2540param%2520%257BFunction%257D%2520defaultResolve%250A%2520*%2520%2540returns%2520%257BPromise%253C%257B%2520url%253A%2520string%2520%257D%253E%257D%250A%2520*%252F%250Aexport%2520async%2520function%2520resolve(specifier%252C%2520context%252C%2520defaultResolve)%2520%257B%250A%2520%2520const%2520%257B%2520parentURL%2520%253D%2520null%2520%257D%2520%253D%2520context%253B%250A%2520%2520if%2520(Math.random()%2520%253E%25200.5)%2520%257B%2520%252F%252F%2520Some%2520condition.%250A%2520%2520%2520%2520%252F%252F%2520For%2520some%2520or%2520all%2520specifiers%252C%2520do%2520some%2520custom%2520logic%2520for%2520resolving.%250A%2520%2520%2520%2520%252F%252F%2520Always%2520return%2520an%2520object%2520of%2520the%2520form%2520%257Burl%253A%2520%253Cstring%253E%257D.%250A%2520%2520%2520%2520return%2520%257B%250A%2520%2520%2520%2520%2520%2520url%253A%2520parentURL%2520%253F%250A%2520%2520%2520%2520%2520%2520%2520%2520new%2520URL(specifier%252C%2520parentURL).href%2520%253A%250A%2520%2520%2520%2520%2520%2520%2520%2520new%2520URL(specifier).href%252C%250A%2520%2520%2520%2520%257D%253B%250A%2520%2520%257D%250A%2520%2520if%2520(Math.random()%2520%253C%25200.5)%2520%257B%2520%252F%252F%2520Another%2520condition.%250A%2520%2520%2520%2520%252F%252F%2520When%2520calling%2520%2560defaultResolve%2560%252C%2520the%2520arguments%2520can%2520be%2520modified.%2520In%2520this%250A%2520%2520%2520%2520%252F%252F%2520case%2520it's%2520adding%2520another%2520value%2520for%2520matching%2520conditional%2520exports.%250A%2520%2520%2520%2520return%2520defaultResolve(specifier%252C%2520%257B%250A%2520%2520%2520%2520%2520%2520...context%252C%250A%2520%2520%2520%2520%2520%2520conditions%253A%2520%255B...context.conditions%252C%2520'another-condition'%255D%252C%250A%2520%2520%2520%2520%257D)%253B%250A%2520%2520%257D%250A%2520%2520%252F%252F%2520Defer%2520to%2520Node.js%2520for%2520all%2520other%2520specifiers.%250A%2520%2520return%2520defaultResolve(specifier%252C%2520context%252C%2520defaultResolve)%253B%250A%257D

PR-URL: https://github.com/nodejs/node/pull/34240
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
2020-08-01 15:51:25 -07:00
Mary Marchini 9b6c16c5ac build: don't run auto-start-ci on push
PR-URL: https://github.com/nodejs/node/pull/34588
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-08-01 10:19:19 -07:00
Mary Marchini 4268c6112f build: fix auto-start-ci script path
PR-URL: https://github.com/nodejs/node/pull/34588
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-08-01 10:19:16 -07:00
Robert Nagy 849d9e7b90 http: provide keep-alive timeout response header
In http 1.1 persistent connection protocol there is a
timing race where the client sends the request and then
the server kills the connection (due to inactivity)
before receiving the client's request.

By providing a keep-alive header it is possible to provide
the client a hint of when idle timeout would occur and
avoid the race.

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

PR-URL: https://github.com/nodejs/node/pull/34561
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Zeyu Yang <himself65@outlook.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com>
2020-08-01 15:04:35 +02:00
Rich Trott 770a02d3c8 doc: use consistent spelling for "falsy"
We use "falsy" in multiple places in our docs, but only use "false-y" in
one place in url.md. Replace it with "falsy".

PR-URL: https://github.com/nodejs/node/pull/34545
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com>
Reviewed-By: Ron Korving <ron@ronkorving.nl>
Reviewed-By: Yuta Hiroto <hello@hiroppy.me>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2020-07-31 23:39:01 -07:00
Rich Trott 3b9a252dcc doc: simplify and clarify console.assert() documentation
PR-URL: https://github.com/nodejs/node/pull/34544
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2020-07-31 23:37:13 -07:00
Rich Trott 3e9caaf505 doc: use consistent capitalization for addons
Sometimes _addon_ is capitalized and sometimes not. Capitalizing it
seems peculiar and hard to justify. Standardize on treating it like
other common nouns.

PR-URL: https://github.com/nodejs/node/pull/34536
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
2020-07-31 23:35:56 -07:00
Gabriel SchulhofandAnna Henningsen cc7ec889e8 n-api: support type-tagging objects
`napi_instanceof()` is insufficient for reliably establishing the data
type to which a pointer stored with `napi_wrap()` or
`napi_create_external()` inside a JavaScript object points. Thus, we
need a way to "mark" an object with a value that, when later retrieved,
can unambiguously tell us whether it is safe to cast the pointer stored
inside it to a certain structure.

Such a check must survive loading/unloading/multiple instances of an
addon, so we use UUIDs chosen *a priori*.

Fixes: https://github.com/nodejs/node/issues/28164
Co-authored-by: Anna Henningsen <github@addaleax.net>
PR-URL: https://github.com/nodejs/node/pull/28237
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Signed-off-by: Gabriel Schulhof <gabriel.schulhof@intel.com>
2020-07-31 18:30:30 -07:00
Mary Marchini 8b3ad75b03 doc: add mmarchini pronouns
PR-URL: https://github.com/nodejs/node/pull/34586
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-07-31 16:19:34 -07:00
Mary Marchini f5df3c2582 doc: update mmarchini contact info
PR-URL: https://github.com/nodejs/node/pull/34586
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-07-31 16:19:27 -07:00
Mary Marchini c8c2f4d0ae doc: update .mailmap for mmarchini
PR-URL: https://github.com/nodejs/node/pull/34586
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-07-31 16:19:16 -07:00
Mary Marchini 6cab3b0e26 build: auto start Jenkins CI via PR labels
Add an Action that will find every PR with the `request-ci` label and
will start a Jenkins CI for each of these Pull Requests. The scheduler
event is used to circumvent GitHub Actions limitations on Pull Requests
from forks (where secrets are not accessible and the GITHUB_TOKEN is
read-only).

If the Action fails to start a CI, it will add a `request-ci-failed`
label and will leave a comment with the error message from NCU.

Fixes: https://github.com/nodejs/github-bot/issues/234

PR-URL: https://github.com/nodejs/node/pull/34089
Reviewed-By: Christian Clauss <cclauss@me.com>
2020-07-31 16:09:41 -07:00
Gabriel Schulhof 0cc2a54a53 n-api: simplify bigint-from-word creation
Macro `CHECK_MAYBE_EMPTY_WITH_PREAMBLE()` does the work of checking
the `TryCatch` and returning `napi_pending_exception` so this change
reuses it for `napi_create_bigint_words()`.

Signed-off-by: Gabriel Schulhof <gabriel.schulhof@intel.com>
PR-URL: https://github.com/nodejs/node/pull/34554
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
2020-07-31 13:45:25 -07:00
James M Snell a97b5f9c6a quic: use OpenSSL built-in cert and hostname validation
PR-URL: https://github.com/nodejs/node/pull/34533
Reviewed-By: Anna Henningsen <anna@addaleax.net>
2020-07-31 11:06:16 -07:00