lib: add --no-experimental-global-navigator
CLI flag
PR-URL: https://github.com/nodejs/node/pull/50562 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
This commit is contained in:
parent
3607b92134
commit
309c71ae38
@ -1196,6 +1196,16 @@ added: v19.0.0
|
|||||||
|
|
||||||
Disable exposition of [CustomEvent Web API][] on the global scope.
|
Disable exposition of [CustomEvent Web API][] on the global scope.
|
||||||
|
|
||||||
|
### `--no-experimental-global-navigator`
|
||||||
|
|
||||||
|
<!-- YAML
|
||||||
|
added: REPLACEME
|
||||||
|
-->
|
||||||
|
|
||||||
|
> Stability: 1 - Experimental
|
||||||
|
|
||||||
|
Disable exposition of [Navigator API][] on the global scope.
|
||||||
|
|
||||||
### `--no-experimental-global-webcrypto`
|
### `--no-experimental-global-webcrypto`
|
||||||
|
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -2359,6 +2369,7 @@ Node.js options that are allowed are:
|
|||||||
* `--no-deprecation`
|
* `--no-deprecation`
|
||||||
* `--no-experimental-fetch`
|
* `--no-experimental-fetch`
|
||||||
* `--no-experimental-global-customevent`
|
* `--no-experimental-global-customevent`
|
||||||
|
* `--no-experimental-global-navigator`
|
||||||
* `--no-experimental-global-webcrypto`
|
* `--no-experimental-global-webcrypto`
|
||||||
* `--no-experimental-repl-await`
|
* `--no-experimental-repl-await`
|
||||||
* `--no-extra-info-on-fatal-exception`
|
* `--no-extra-info-on-fatal-exception`
|
||||||
@ -2774,6 +2785,7 @@ done
|
|||||||
[Module customization hooks]: module.md#customization-hooks
|
[Module customization hooks]: module.md#customization-hooks
|
||||||
[Module customization hooks: enabling]: module.md#enabling
|
[Module customization hooks: enabling]: module.md#enabling
|
||||||
[Modules loaders]: packages.md#modules-loaders
|
[Modules loaders]: packages.md#modules-loaders
|
||||||
|
[Navigator API]: globals.md#navigator
|
||||||
[Node.js issue tracker]: https://github.com/nodejs/node/issues
|
[Node.js issue tracker]: https://github.com/nodejs/node/issues
|
||||||
[OSSL_PROVIDER-legacy]: https://www.openssl.org/docs/man3.0/man7/OSSL_PROVIDER-legacy.html
|
[OSSL_PROVIDER-legacy]: https://www.openssl.org/docs/man3.0/man7/OSSL_PROVIDER-legacy.html
|
||||||
[Permission Model]: permissions.md#permission-model
|
[Permission Model]: permissions.md#permission-model
|
||||||
|
@ -600,7 +600,8 @@ This variable may appear to be global but is not. See [`module`][].
|
|||||||
added: v21.0.0
|
added: v21.0.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
> Stability: 1.1 - Active development
|
> Stability: 1.1 - Active development. Disable this API with the
|
||||||
|
> [`--no-experimental-global-navigator`][] CLI flag.
|
||||||
|
|
||||||
A partial implementation of the [Navigator API][].
|
A partial implementation of the [Navigator API][].
|
||||||
|
|
||||||
@ -610,18 +611,11 @@ A partial implementation of the [Navigator API][].
|
|||||||
added: v21.0.0
|
added: v21.0.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
> Stability: 1.1 - Active development
|
> Stability: 1.1 - Active development. Disable this API with the
|
||||||
|
> [`--no-experimental-global-navigator`][] CLI flag.
|
||||||
|
|
||||||
A partial implementation of [`window.navigator`][].
|
A partial implementation of [`window.navigator`][].
|
||||||
|
|
||||||
If your app or a dependency uses a check for `navigator` to determine whether it
|
|
||||||
is running in a browser, the following can be used to delete the `navigator`
|
|
||||||
global before app code runs:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
node --import 'data:text/javascript,delete globalThis.navigator' app.js
|
|
||||||
```
|
|
||||||
|
|
||||||
### `navigator.hardwareConcurrency`
|
### `navigator.hardwareConcurrency`
|
||||||
|
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -1145,6 +1139,7 @@ A browser-compatible implementation of [`WritableStreamDefaultWriter`][].
|
|||||||
[Web Crypto API]: webcrypto.md
|
[Web Crypto API]: webcrypto.md
|
||||||
[`--experimental-websocket`]: cli.md#--experimental-websocket
|
[`--experimental-websocket`]: cli.md#--experimental-websocket
|
||||||
[`--no-experimental-global-customevent`]: cli.md#--no-experimental-global-customevent
|
[`--no-experimental-global-customevent`]: cli.md#--no-experimental-global-customevent
|
||||||
|
[`--no-experimental-global-navigator`]: cli.md#--no-experimental-global-navigator
|
||||||
[`--no-experimental-global-webcrypto`]: cli.md#--no-experimental-global-webcrypto
|
[`--no-experimental-global-webcrypto`]: cli.md#--no-experimental-global-webcrypto
|
||||||
[`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController
|
[`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController
|
||||||
[`ByteLengthQueuingStrategy`]: webstreams.md#class-bytelengthqueuingstrategy
|
[`ByteLengthQueuingStrategy`]: webstreams.md#class-bytelengthqueuingstrategy
|
||||||
|
@ -52,10 +52,6 @@ exposeLazyInterfaces(globalThis, 'perf_hooks', [
|
|||||||
|
|
||||||
defineReplaceableLazyAttribute(globalThis, 'perf_hooks', ['performance']);
|
defineReplaceableLazyAttribute(globalThis, 'perf_hooks', ['performance']);
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/system-state.html#the-navigator-object
|
|
||||||
exposeLazyInterfaces(globalThis, 'internal/navigator', ['Navigator']);
|
|
||||||
defineReplaceableLazyAttribute(globalThis, 'internal/navigator', ['navigator'], false);
|
|
||||||
|
|
||||||
// https://w3c.github.io/FileAPI/#creating-revoking
|
// https://w3c.github.io/FileAPI/#creating-revoking
|
||||||
const { installObjectURLMethods } = require('internal/url');
|
const { installObjectURLMethods } = require('internal/url');
|
||||||
installObjectURLMethods();
|
installObjectURLMethods();
|
||||||
|
@ -77,6 +77,7 @@ function prepareExecution(options) {
|
|||||||
const mainEntry = patchProcessObject(expandArgv1);
|
const mainEntry = patchProcessObject(expandArgv1);
|
||||||
setupTraceCategoryState();
|
setupTraceCategoryState();
|
||||||
setupInspectorHooks();
|
setupInspectorHooks();
|
||||||
|
setupNavigator();
|
||||||
setupWarningHandler();
|
setupWarningHandler();
|
||||||
setupUndici();
|
setupUndici();
|
||||||
setupWebCrypto();
|
setupWebCrypto();
|
||||||
@ -336,6 +337,19 @@ function setupUndici() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(aduh95): move this to internal/bootstrap/web/* when the CLI flag is
|
||||||
|
// removed.
|
||||||
|
function setupNavigator() {
|
||||||
|
if (getEmbedderOptions().noBrowserGlobals ||
|
||||||
|
getOptionValue('--no-experimental-global-navigator')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/system-state.html#the-navigator-object
|
||||||
|
exposeLazyInterfaces(globalThis, 'internal/navigator', ['Navigator']);
|
||||||
|
defineReplaceableLazyAttribute(globalThis, 'internal/navigator', ['navigator'], false);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(aduh95): move this to internal/bootstrap/web/* when the CLI flag is
|
// TODO(aduh95): move this to internal/bootstrap/web/* when the CLI flag is
|
||||||
// removed.
|
// removed.
|
||||||
function setupWebCrypto() {
|
function setupWebCrypto() {
|
||||||
|
@ -391,6 +391,11 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
|
|||||||
&EnvironmentOptions::experimental_global_customevent,
|
&EnvironmentOptions::experimental_global_customevent,
|
||||||
kAllowedInEnvvar,
|
kAllowedInEnvvar,
|
||||||
true);
|
true);
|
||||||
|
AddOption("--experimental-global-navigator",
|
||||||
|
"expose experimental Navigator API on the global scope",
|
||||||
|
&EnvironmentOptions::experimental_global_navigator,
|
||||||
|
kAllowedInEnvvar,
|
||||||
|
true);
|
||||||
AddOption("--experimental-global-webcrypto",
|
AddOption("--experimental-global-webcrypto",
|
||||||
"expose experimental Web Crypto API on the global scope",
|
"expose experimental Web Crypto API on the global scope",
|
||||||
&EnvironmentOptions::experimental_global_web_crypto,
|
&EnvironmentOptions::experimental_global_web_crypto,
|
||||||
|
@ -110,6 +110,7 @@ class EnvironmentOptions : public Options {
|
|||||||
bool experimental_fetch = true;
|
bool experimental_fetch = true;
|
||||||
bool experimental_websocket = false;
|
bool experimental_websocket = false;
|
||||||
bool experimental_global_customevent = true;
|
bool experimental_global_customevent = true;
|
||||||
|
bool experimental_global_navigator = true;
|
||||||
bool experimental_global_web_crypto = true;
|
bool experimental_global_web_crypto = true;
|
||||||
bool experimental_https_modules = false;
|
bool experimental_https_modules = false;
|
||||||
bool experimental_wasm_modules = false;
|
bool experimental_wasm_modules = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user