1# Global objects 2 3<!--introduced_in=v0.10.0--> 4 5<!-- type=misc --> 6 7These objects are available in all modules. The following variables may appear 8to be global but are not. They exist only in the scope of modules, see the 9[module system documentation][]: 10 11* [`__dirname`][] 12* [`__filename`][] 13* [`exports`][] 14* [`module`][] 15* [`require()`][] 16 17The objects listed here are specific to Node.js. There are [built-in objects][] 18that are part of the JavaScript language itself, which are also globally 19accessible. 20 21## Class: `AbortController` 22 23<!-- YAML 24added: 25 - v15.0.0 26 - v14.17.0 27changes: 28 - version: v15.4.0 29 pr-url: https://github.com/nodejs/node/pull/35949 30 description: No longer experimental. 31--> 32 33<!-- type=global --> 34 35A utility class used to signal cancelation in selected `Promise`-based APIs. 36The API is based on the Web API [`AbortController`][]. 37 38```js 39const ac = new AbortController(); 40 41ac.signal.addEventListener('abort', () => console.log('Aborted!'), 42 { once: true }); 43 44ac.abort(); 45 46console.log(ac.signal.aborted); // Prints true 47``` 48 49### `abortController.abort([reason])` 50 51<!-- YAML 52added: 53 - v15.0.0 54 - v14.17.0 55changes: 56 - version: 57 - v17.2.0 58 - v16.14.0 59 pr-url: https://github.com/nodejs/node/pull/40807 60 description: Added the new optional reason argument. 61--> 62 63* `reason` {any} An optional reason, retrievable on the `AbortSignal`'s 64 `reason` property. 65 66Triggers the abort signal, causing the `abortController.signal` to emit 67the `'abort'` event. 68 69### `abortController.signal` 70 71<!-- YAML 72added: 73 - v15.0.0 74 - v14.17.0 75--> 76 77* Type: {AbortSignal} 78 79### Class: `AbortSignal` 80 81<!-- YAML 82added: 83 - v15.0.0 84 - v14.17.0 85--> 86 87* Extends: {EventTarget} 88 89The `AbortSignal` is used to notify observers when the 90`abortController.abort()` method is called. 91 92#### Static method: `AbortSignal.abort([reason])` 93 94<!-- YAML 95added: 96 - v15.12.0 97 - v14.17.0 98changes: 99 - version: 100 - v17.2.0 101 - v16.14.0 102 pr-url: https://github.com/nodejs/node/pull/40807 103 description: Added the new optional reason argument. 104--> 105 106* `reason`: {any} 107* Returns: {AbortSignal} 108 109Returns a new already aborted `AbortSignal`. 110 111#### Static method: `AbortSignal.timeout(delay)` 112 113<!-- YAML 114added: 115 - v17.3.0 116 - v16.14.0 117--> 118 119* `delay` {number} The number of milliseconds to wait before triggering 120 the AbortSignal. 121 122Returns a new `AbortSignal` which will be aborted in `delay` milliseconds. 123 124#### Static method: `AbortSignal.any(signals)` 125 126<!-- YAML 127added: v18.17.0 128--> 129 130* `signals` {AbortSignal\[]} The `AbortSignal`s of which to compose a new `AbortSignal`. 131 132Returns a new `AbortSignal` which will be aborted if any of the provided 133signals are aborted. Its [`abortSignal.reason`][] will be set to whichever 134one of the `signals` caused it to be aborted. 135 136#### Event: `'abort'` 137 138<!-- YAML 139added: 140 - v15.0.0 141 - v14.17.0 142--> 143 144The `'abort'` event is emitted when the `abortController.abort()` method 145is called. The callback is invoked with a single object argument with a 146single `type` property set to `'abort'`: 147 148```js 149const ac = new AbortController(); 150 151// Use either the onabort property... 152ac.signal.onabort = () => console.log('aborted!'); 153 154// Or the EventTarget API... 155ac.signal.addEventListener('abort', (event) => { 156 console.log(event.type); // Prints 'abort' 157}, { once: true }); 158 159ac.abort(); 160``` 161 162The `AbortController` with which the `AbortSignal` is associated will only 163ever trigger the `'abort'` event once. We recommended that code check 164that the `abortSignal.aborted` attribute is `false` before adding an `'abort'` 165event listener. 166 167Any event listeners attached to the `AbortSignal` should use the 168`{ once: true }` option (or, if using the `EventEmitter` APIs to attach a 169listener, use the `once()` method) to ensure that the event listener is 170removed as soon as the `'abort'` event is handled. Failure to do so may 171result in memory leaks. 172 173#### `abortSignal.aborted` 174 175<!-- YAML 176added: 177 - v15.0.0 178 - v14.17.0 179--> 180 181* Type: {boolean} True after the `AbortController` has been aborted. 182 183#### `abortSignal.onabort` 184 185<!-- YAML 186added: 187 - v15.0.0 188 - v14.17.0 189--> 190 191* Type: {Function} 192 193An optional callback function that may be set by user code to be notified 194when the `abortController.abort()` function has been called. 195 196#### `abortSignal.reason` 197 198<!-- YAML 199added: 200 - v17.2.0 201 - v16.14.0 202--> 203 204* Type: {any} 205 206An optional reason specified when the `AbortSignal` was triggered. 207 208```js 209const ac = new AbortController(); 210ac.abort(new Error('boom!')); 211console.log(ac.signal.reason); // Error: boom! 212``` 213 214#### `abortSignal.throwIfAborted()` 215 216<!-- YAML 217added: v17.3.0 218--> 219 220If `abortSignal.aborted` is `true`, throws `abortSignal.reason`. 221 222## Class: `Blob` 223 224<!-- YAML 225added: v18.0.0 226--> 227 228<!-- type=global --> 229 230See {Blob}. 231 232## Class: `Buffer` 233 234<!-- YAML 235added: v0.1.103 236--> 237 238<!-- type=global --> 239 240* {Function} 241 242Used to handle binary data. See the [buffer section][]. 243 244## Class: `ByteLengthQueuingStrategy` 245 246<!-- YAML 247added: v18.0.0 248--> 249 250> Stability: 1 - Experimental. 251 252A browser-compatible implementation of [`ByteLengthQueuingStrategy`][]. 253 254## `__dirname` 255 256This variable may appear to be global but is not. See [`__dirname`][]. 257 258## `__filename` 259 260This variable may appear to be global but is not. See [`__filename`][]. 261 262## `atob(data)` 263 264<!-- YAML 265added: v16.0.0 266--> 267 268> Stability: 3 - Legacy. Use `Buffer.from(data, 'base64')` instead. 269 270Global alias for [`buffer.atob()`][]. 271 272## `BroadcastChannel` 273 274<!-- YAML 275added: v18.0.0 276--> 277 278See {BroadcastChannel}. 279 280## `btoa(data)` 281 282<!-- YAML 283added: v16.0.0 284--> 285 286> Stability: 3 - Legacy. Use `buf.toString('base64')` instead. 287 288Global alias for [`buffer.btoa()`][]. 289 290## `clearImmediate(immediateObject)` 291 292<!-- YAML 293added: v0.9.1 294--> 295 296<!--type=global--> 297 298[`clearImmediate`][] is described in the [timers][] section. 299 300## `clearInterval(intervalObject)` 301 302<!-- YAML 303added: v0.0.1 304--> 305 306<!--type=global--> 307 308[`clearInterval`][] is described in the [timers][] section. 309 310## `clearTimeout(timeoutObject)` 311 312<!-- YAML 313added: v0.0.1 314--> 315 316<!--type=global--> 317 318[`clearTimeout`][] is described in the [timers][] section. 319 320## Class: `CompressionStream` 321 322<!-- YAML 323added: v18.0.0 324--> 325 326> Stability: 1 - Experimental. 327 328A browser-compatible implementation of [`CompressionStream`][]. 329 330## `console` 331 332<!-- YAML 333added: v0.1.100 334--> 335 336<!-- type=global --> 337 338* {Object} 339 340Used to print to stdout and stderr. See the [`console`][] section. 341 342## Class: `CountQueuingStrategy` 343 344<!-- YAML 345added: v18.0.0 346--> 347 348> Stability: 1 - Experimental. 349 350A browser-compatible implementation of [`CountQueuingStrategy`][]. 351 352## `Crypto` 353 354<!-- YAML 355added: v17.6.0 356--> 357 358> Stability: 1 - Experimental. Enable this API with the 359> [`--experimental-global-webcrypto`][] CLI flag. 360 361A browser-compatible implementation of {Crypto}. This global is available 362only if the Node.js binary was compiled with including support for the 363`node:crypto` module. 364 365## `crypto` 366 367<!-- YAML 368added: v17.6.0 369--> 370 371> Stability: 1 - Experimental. Enable this API with the 372> [`--experimental-global-webcrypto`][] CLI flag. 373 374A browser-compatible implementation of the [Web Crypto API][]. 375 376## `CryptoKey` 377 378<!-- YAML 379added: v17.6.0 380--> 381 382> Stability: 1 - Experimental. Enable this API with the 383> [`--experimental-global-webcrypto`][] CLI flag. 384 385A browser-compatible implementation of {CryptoKey}. This global is available 386only if the Node.js binary was compiled with including support for the 387`node:crypto` module. 388 389## `CustomEvent` 390 391<!-- YAML 392added: v18.7.0 393--> 394 395> Stability: 1 - Experimental. Enable this API with the 396> [`--experimental-global-customevent`][] CLI flag. 397 398<!-- type=global --> 399 400A browser-compatible implementation of the [`CustomEvent` Web API][]. 401 402## Class: `DecompressionStream` 403 404<!-- YAML 405added: v18.0.0 406--> 407 408> Stability: 1 - Experimental. 409 410A browser-compatible implementation of [`DecompressionStream`][]. 411 412## `Event` 413 414<!-- YAML 415added: v15.0.0 416changes: 417 - version: v15.4.0 418 pr-url: https://github.com/nodejs/node/pull/35949 419 description: No longer experimental. 420--> 421 422<!-- type=global --> 423 424A browser-compatible implementation of the `Event` class. See 425[`EventTarget` and `Event` API][] for more details. 426 427## `EventTarget` 428 429<!-- YAML 430added: v15.0.0 431changes: 432 - version: v15.4.0 433 pr-url: https://github.com/nodejs/node/pull/35949 434 description: No longer experimental. 435--> 436 437<!-- type=global --> 438 439A browser-compatible implementation of the `EventTarget` class. See 440[`EventTarget` and `Event` API][] for more details. 441 442## `exports` 443 444This variable may appear to be global but is not. See [`exports`][]. 445 446## `fetch` 447 448<!-- YAML 449added: v17.5.0 450changes: 451 - version: v18.0.0 452 pr-url: https://github.com/nodejs/node/pull/41811 453 description: No longer behind `--experimental-global-fetch` CLI flag. 454--> 455 456> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][] 457> CLI flag. 458 459A browser-compatible implementation of the [`fetch()`][] function. 460 461## Class `FormData` 462 463<!-- YAML 464added: v17.6.0 465changes: 466 - version: v18.0.0 467 pr-url: https://github.com/nodejs/node/pull/41811 468 description: No longer behind `--experimental-global-fetch` CLI flag. 469--> 470 471> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][] 472> CLI flag. 473 474A browser-compatible implementation of {FormData}. 475 476## `global` 477 478<!-- YAML 479added: v0.1.27 480--> 481 482<!-- type=global --> 483 484> Stability: 3 - Legacy. Use [`globalThis`][] instead. 485 486* {Object} The global namespace object. 487 488In browsers, the top-level scope has traditionally been the global scope. This 489means that `var something` will define a new global variable, except within 490ECMAScript modules. In Node.js, this is different. The top-level scope is not 491the global scope; `var something` inside a Node.js module will be local to that 492module, regardless of whether it is a [CommonJS module][] or an 493[ECMAScript module][]. 494 495## Class `Headers` 496 497<!-- YAML 498added: v17.5.0 499changes: 500 - version: v18.0.0 501 pr-url: https://github.com/nodejs/node/pull/41811 502 description: No longer behind `--experimental-global-fetch` CLI flag. 503--> 504 505> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][] 506> CLI flag. 507 508A browser-compatible implementation of {Headers}. 509 510## `MessageChannel` 511 512<!-- YAML 513added: v15.0.0 514--> 515 516<!-- type=global --> 517 518The `MessageChannel` class. See [`MessageChannel`][] for more details. 519 520## `MessageEvent` 521 522<!-- YAML 523added: v15.0.0 524--> 525 526<!-- type=global --> 527 528The `MessageEvent` class. See [`MessageEvent`][] for more details. 529 530## `MessagePort` 531 532<!-- YAML 533added: v15.0.0 534--> 535 536<!-- type=global --> 537 538The `MessagePort` class. See [`MessagePort`][] for more details. 539 540## `module` 541 542This variable may appear to be global but is not. See [`module`][]. 543 544## `performance` 545 546<!-- YAML 547added: v16.0.0 548--> 549 550The [`perf_hooks.performance`][] object. 551 552## `process` 553 554<!-- YAML 555added: v0.1.7 556--> 557 558<!-- type=global --> 559 560* {Object} 561 562The process object. See the [`process` object][] section. 563 564## `queueMicrotask(callback)` 565 566<!-- YAML 567added: v11.0.0 568--> 569 570<!-- type=global --> 571 572* `callback` {Function} Function to be queued. 573 574The `queueMicrotask()` method queues a microtask to invoke `callback`. If 575`callback` throws an exception, the [`process` object][] `'uncaughtException'` 576event will be emitted. 577 578The microtask queue is managed by V8 and may be used in a similar manner to 579the [`process.nextTick()`][] queue, which is managed by Node.js. The 580`process.nextTick()` queue is always processed before the microtask queue 581within each turn of the Node.js event loop. 582 583```js 584// Here, `queueMicrotask()` is used to ensure the 'load' event is always 585// emitted asynchronously, and therefore consistently. Using 586// `process.nextTick()` here would result in the 'load' event always emitting 587// before any other promise jobs. 588 589DataHandler.prototype.load = async function load(key) { 590 const hit = this._cache.get(key); 591 if (hit !== undefined) { 592 queueMicrotask(() => { 593 this.emit('load', hit); 594 }); 595 return; 596 } 597 598 const data = await fetchData(key); 599 this._cache.set(key, data); 600 this.emit('load', data); 601}; 602``` 603 604## Class: `ReadableByteStreamController` 605 606<!-- YAML 607added: v18.0.0 608--> 609 610> Stability: 1 - Experimental. 611 612A browser-compatible implementation of [`ReadableByteStreamController`][]. 613 614## Class: `ReadableStream` 615 616<!-- YAML 617added: v18.0.0 618--> 619 620> Stability: 1 - Experimental. 621 622A browser-compatible implementation of [`ReadableStream`][]. 623 624## Class: `ReadableStreamBYOBReader` 625 626<!-- YAML 627added: v18.0.0 628--> 629 630> Stability: 1 - Experimental. 631 632A browser-compatible implementation of [`ReadableStreamBYOBReader`][]. 633 634## Class: `ReadableStreamBYOBRequest` 635 636<!-- YAML 637added: v18.0.0 638--> 639 640> Stability: 1 - Experimental. 641 642A browser-compatible implementation of [`ReadableStreamBYOBRequest`][]. 643 644## Class: `ReadableStreamDefaultController` 645 646<!-- YAML 647added: v18.0.0 648--> 649 650> Stability: 1 - Experimental. 651 652A browser-compatible implementation of [`ReadableStreamDefaultController`][]. 653 654## Class: `ReadableStreamDefaultReader` 655 656<!-- YAML 657added: v18.0.0 658--> 659 660> Stability: 1 - Experimental. 661 662A browser-compatible implementation of [`ReadableStreamDefaultReader`][]. 663 664## `require()` 665 666This variable may appear to be global but is not. See [`require()`][]. 667 668## `Response` 669 670<!-- YAML 671added: v17.5.0 672changes: 673 - version: v18.0.0 674 pr-url: https://github.com/nodejs/node/pull/41811 675 description: No longer behind `--experimental-global-fetch` CLI flag. 676--> 677 678> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][] 679> CLI flag. 680 681A browser-compatible implementation of {Response}. 682 683## `Request` 684 685<!-- YAML 686added: v17.5.0 687changes: 688 - version: v18.0.0 689 pr-url: https://github.com/nodejs/node/pull/41811 690 description: No longer behind `--experimental-global-fetch` CLI flag. 691--> 692 693> Stability: 1 - Experimental. Disable this API with the [`--no-experimental-fetch`][] 694> CLI flag. 695 696A browser-compatible implementation of {Request}. 697 698## `setImmediate(callback[, ...args])` 699 700<!-- YAML 701added: v0.9.1 702--> 703 704<!-- type=global --> 705 706[`setImmediate`][] is described in the [timers][] section. 707 708## `setInterval(callback, delay[, ...args])` 709 710<!-- YAML 711added: v0.0.1 712--> 713 714<!-- type=global --> 715 716[`setInterval`][] is described in the [timers][] section. 717 718## `setTimeout(callback, delay[, ...args])` 719 720<!-- YAML 721added: v0.0.1 722--> 723 724<!-- type=global --> 725 726[`setTimeout`][] is described in the [timers][] section. 727 728## `structuredClone(value[, options])` 729 730<!-- YAML 731added: v17.0.0 732--> 733 734<!-- type=global --> 735 736The WHATWG [`structuredClone`][] method. 737 738## `SubtleCrypto` 739 740<!-- YAML 741added: v17.6.0 742--> 743 744> Stability: 1 - Experimental. Enable this API with the 745> [`--experimental-global-webcrypto`][] CLI flag. 746 747A browser-compatible implementation of {SubtleCrypto}. This global is available 748only if the Node.js binary was compiled with including support for the 749`node:crypto` module. 750 751## `DOMException` 752 753<!-- YAML 754added: v17.0.0 755--> 756 757<!-- type=global --> 758 759The WHATWG `DOMException` class. See [`DOMException`][] for more details. 760 761## `TextDecoder` 762 763<!-- YAML 764added: v11.0.0 765--> 766 767<!-- type=global --> 768 769The WHATWG `TextDecoder` class. See the [`TextDecoder`][] section. 770 771## Class: `TextDecoderStream` 772 773<!-- YAML 774added: v18.0.0 775--> 776 777> Stability: 1 - Experimental. 778 779A browser-compatible implementation of [`TextDecoderStream`][]. 780 781## `TextEncoder` 782 783<!-- YAML 784added: v11.0.0 785--> 786 787<!-- type=global --> 788 789The WHATWG `TextEncoder` class. See the [`TextEncoder`][] section. 790 791## Class: `TextEncoderStream` 792 793<!-- YAML 794added: v18.0.0 795--> 796 797> Stability: 1 - Experimental. 798 799A browser-compatible implementation of [`TextEncoderStream`][]. 800 801## Class: `TransformStream` 802 803<!-- YAML 804added: v18.0.0 805--> 806 807> Stability: 1 - Experimental. 808 809A browser-compatible implementation of [`TransformStream`][]. 810 811## Class: `TransformStreamDefaultController` 812 813<!-- YAML 814added: v18.0.0 815--> 816 817> Stability: 1 - Experimental. 818 819A browser-compatible implementation of [`TransformStreamDefaultController`][]. 820 821## `URL` 822 823<!-- YAML 824added: v10.0.0 825--> 826 827<!-- type=global --> 828 829The WHATWG `URL` class. See the [`URL`][] section. 830 831## `URLSearchParams` 832 833<!-- YAML 834added: v10.0.0 835--> 836 837<!-- type=global --> 838 839The WHATWG `URLSearchParams` class. See the [`URLSearchParams`][] section. 840 841## `WebAssembly` 842 843<!-- YAML 844added: v8.0.0 845--> 846 847<!-- type=global --> 848 849* {Object} 850 851The object that acts as the namespace for all W3C 852[WebAssembly][webassembly-org] related functionality. See the 853[Mozilla Developer Network][webassembly-mdn] for usage and compatibility. 854 855## Class: `WritableStream` 856 857<!-- YAML 858added: v18.0.0 859--> 860 861> Stability: 1 - Experimental. 862 863A browser-compatible implementation of [`WritableStream`][]. 864 865## Class: `WritableStreamDefaultController` 866 867<!-- YAML 868added: v18.0.0 869--> 870 871> Stability: 1 - Experimental. 872 873A browser-compatible implementation of [`WritableStreamDefaultController`][]. 874 875## Class: `WritableStreamDefaultWriter` 876 877<!-- YAML 878added: v18.0.0 879--> 880 881> Stability: 1 - Experimental. 882 883A browser-compatible implementation of [`WritableStreamDefaultWriter`][]. 884 885[CommonJS module]: modules.md 886[ECMAScript module]: esm.md 887[Web Crypto API]: webcrypto.md 888[`--experimental-global-customevent`]: cli.md#--experimental-global-customevent 889[`--experimental-global-webcrypto`]: cli.md#--experimental-global-webcrypto 890[`--no-experimental-fetch`]: cli.md#--no-experimental-fetch 891[`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController 892[`ByteLengthQueuingStrategy`]: webstreams.md#class-bytelengthqueuingstrategy 893[`CompressionStream`]: webstreams.md#class-compressionstream 894[`CountQueuingStrategy`]: webstreams.md#class-countqueuingstrategy 895[`CustomEvent` Web API]: https://dom.spec.whatwg.org/#customevent 896[`DOMException`]: https://developer.mozilla.org/en-US/docs/Web/API/DOMException 897[`DecompressionStream`]: webstreams.md#class-decompressionstream 898[`EventTarget` and `Event` API]: events.md#eventtarget-and-event-api 899[`MessageChannel`]: worker_threads.md#class-messagechannel 900[`MessageEvent`]: https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/MessageEvent 901[`MessagePort`]: worker_threads.md#class-messageport 902[`ReadableByteStreamController`]: webstreams.md#class-readablebytestreamcontroller 903[`ReadableStreamBYOBReader`]: webstreams.md#class-readablestreambyobreader 904[`ReadableStreamBYOBRequest`]: webstreams.md#class-readablestreambyobrequest 905[`ReadableStreamDefaultController`]: webstreams.md#class-readablestreamdefaultcontroller 906[`ReadableStreamDefaultReader`]: webstreams.md#class-readablestreamdefaultreader 907[`ReadableStream`]: webstreams.md#class-readablestream 908[`TextDecoderStream`]: webstreams.md#class-textdecoderstream 909[`TextDecoder`]: util.md#class-utiltextdecoder 910[`TextEncoderStream`]: webstreams.md#class-textencoderstream 911[`TextEncoder`]: util.md#class-utiltextencoder 912[`TransformStreamDefaultController`]: webstreams.md#class-transformstreamdefaultcontroller 913[`TransformStream`]: webstreams.md#class-transformstream 914[`URLSearchParams`]: url.md#class-urlsearchparams 915[`URL`]: url.md#class-url 916[`WritableStreamDefaultController`]: webstreams.md#class-writablestreamdefaultcontroller 917[`WritableStreamDefaultWriter`]: webstreams.md#class-writablestreamdefaultwriter 918[`WritableStream`]: webstreams.md#class-writablestream 919[`__dirname`]: modules.md#__dirname 920[`__filename`]: modules.md#__filename 921[`abortSignal.reason`]: #abortsignalreason 922[`buffer.atob()`]: buffer.md#bufferatobdata 923[`buffer.btoa()`]: buffer.md#bufferbtoadata 924[`clearImmediate`]: timers.md#clearimmediateimmediate 925[`clearInterval`]: timers.md#clearintervaltimeout 926[`clearTimeout`]: timers.md#cleartimeouttimeout 927[`console`]: console.md 928[`exports`]: modules.md#exports 929[`fetch()`]: https://developer.mozilla.org/en-US/docs/Web/API/fetch 930[`globalThis`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis 931[`module`]: modules.md#module 932[`perf_hooks.performance`]: perf_hooks.md#perf_hooksperformance 933[`process.nextTick()`]: process.md#processnexttickcallback-args 934[`process` object]: process.md#process 935[`require()`]: modules.md#requireid 936[`setImmediate`]: timers.md#setimmediatecallback-args 937[`setInterval`]: timers.md#setintervalcallback-delay-args 938[`setTimeout`]: timers.md#settimeoutcallback-delay-args 939[`structuredClone`]: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone 940[buffer section]: buffer.md 941[built-in objects]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects 942[module system documentation]: modules.md 943[timers]: timers.md 944[webassembly-mdn]: https://developer.mozilla.org/en-US/docs/WebAssembly 945[webassembly-org]: https://webassembly.org 946