| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 1795202 commit eb97076
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -20,7 +20,7 @@ | |||
| 20 | 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
| 21 | 21 | ||
| 22 | 22 | 'use strict'; | |
| 23 | - const process = global.process; // Some tests tamper with the process global. | ||
| 23 | + const process = globalThis.process; // Some tests tamper with the process globalThis. | ||
| 24 | 24 | ||
| 25 | 25 | const assert = require('assert'); | |
| 26 | 26 | const { exec, execSync, spawn, spawnSync } = require('child_process'); | |
@@ -266,7 +266,7 @@ function platformTimeout(ms) { | |||
| 266 | 266 | return ms; | |
| 267 | 267 | } | |
| 268 | 268 | ||
| 269 | - let knownGlobals = [ | ||
| 269 | + const knownGlobals = new Set([ | ||
| 270 | 270 | AbortController, | |
| 271 | 271 | atob, | |
| 272 | 272 | btoa, | |
@@ -278,88 +278,59 @@ let knownGlobals = [ | |||
| 278 | 278 | setInterval, | |
| 279 | 279 | setTimeout, | |
| 280 | 280 | queueMicrotask, | |
| 281 | - ]; | ||
| 282 | - | ||
| 283 | - if (global.gc) { | ||
| 284 | - knownGlobals.push(global.gc); | ||
| 285 | - } | ||
| 286 | - | ||
| 287 | - if (global.navigator) { | ||
| 288 | - knownGlobals.push(global.navigator); | ||
| 289 | - } | ||
| 290 | - | ||
| 291 | - if (global.Navigator) { | ||
| 292 | - knownGlobals.push(global.Navigator); | ||
| 293 | - } | ||
| 294 | - | ||
| 295 | - if (global.Performance) { | ||
| 296 | - knownGlobals.push(global.Performance); | ||
| 297 | - } | ||
| 298 | - if (global.performance) { | ||
| 299 | - knownGlobals.push(global.performance); | ||
| 300 | - } | ||
| 301 | - if (global.PerformanceMark) { | ||
| 302 | - knownGlobals.push(global.PerformanceMark); | ||
| 303 | - } | ||
| 304 | - if (global.PerformanceMeasure) { | ||
| 305 | - knownGlobals.push(global.PerformanceMeasure); | ||
| 306 | - } | ||
| 307 | - | ||
| 308 | - // TODO(@ethan-arrowood): Similar to previous checks, this can be temporary | ||
| 309 | - // until v16.x is EOL. Once all supported versions have structuredClone we | ||
| 310 | - // can add this to the list above instead. | ||
| 311 | - if (global.structuredClone) { | ||
| 312 | - knownGlobals.push(global.structuredClone); | ||
| 313 | - } | ||
| 314 | - | ||
| 315 | - if (global.EventSource) { | ||
| 316 | - knownGlobals.push(EventSource); | ||
| 317 | - } | ||
| 318 | - | ||
| 319 | - if (global.fetch) { | ||
| 320 | - knownGlobals.push(fetch); | ||
| 321 | - } | ||
| 322 | - if (hasCrypto && global.crypto) { | ||
| 323 | - knownGlobals.push(global.crypto); | ||
| 324 | - knownGlobals.push(global.Crypto); | ||
| 325 | - knownGlobals.push(global.CryptoKey); | ||
| 326 | - knownGlobals.push(global.SubtleCrypto); | ||
| 327 | - } | ||
| 328 | - if (global.CustomEvent) { | ||
| 329 | - knownGlobals.push(global.CustomEvent); | ||
| 330 | - } | ||
| 331 | - if (global.ReadableStream) { | ||
| 332 | - knownGlobals.push( | ||
| 333 | - global.ReadableStream, | ||
| 334 | - global.ReadableStreamDefaultReader, | ||
| 335 | - global.ReadableStreamBYOBReader, | ||
| 336 | - global.ReadableStreamBYOBRequest, | ||
| 337 | - global.ReadableByteStreamController, | ||
| 338 | - global.ReadableStreamDefaultController, | ||
| 339 | - global.TransformStream, | ||
| 340 | - global.TransformStreamDefaultController, | ||
| 341 | - global.WritableStream, | ||
| 342 | - global.WritableStreamDefaultWriter, | ||
| 343 | - global.WritableStreamDefaultController, | ||
| 344 | - global.ByteLengthQueuingStrategy, | ||
| 345 | - global.CountQueuingStrategy, | ||
| 346 | - global.TextEncoderStream, | ||
| 347 | - global.TextDecoderStream, | ||
| 348 | - global.CompressionStream, | ||
| 349 | - global.DecompressionStream, | ||
| 350 | - ); | ||
| 351 | - } | ||
| 281 | + structuredClone, | ||
| 282 | + ]); | ||
| 283 | + | ||
| 284 | + ['gc', | ||
| 285 | + // The following are assumed to be conditionally available in the | ||
| 286 | + // global object currently. They can likely be added to the fixed | ||
| 287 | + // set of known globals, however. | ||
| 288 | + 'fetch', | ||
| 289 | + 'navigator', | ||
| 290 | + 'Navigator', | ||
| 291 | + 'performance', | ||
| 292 | + 'Performance', | ||
| 293 | + 'PerformanceMark', | ||
| 294 | + 'PerformanceMeasure', | ||
| 295 | + 'EventSource', | ||
| 296 | + 'CustomEvent', | ||
| 297 | + 'ReadableStream', | ||
| 298 | + 'ReadableStreamDefaultReader', | ||
| 299 | + 'ReadableStreamBYOBReader', | ||
| 300 | + 'ReadableStreamBYOBRequest', | ||
| 301 | + 'ReadableByteStreamController', | ||
| 302 | + 'ReadableStreamDefaultController', | ||
| 303 | + 'TransformStream', | ||
| 304 | + 'TransformStreamDefaultController', | ||
| 305 | + 'WritableStream', | ||
| 306 | + 'WritableStreamDefaultWriter', | ||
| 307 | + 'WritableStreamDefaultController', | ||
| 308 | + 'ByteLengthQueuingStrategy', | ||
| 309 | + 'CountQueuingStrategy', | ||
| 310 | + 'TextEncoderStream', | ||
| 311 | + 'TextDecoderStream', | ||
| 312 | + 'CompressionStream', | ||
| 313 | + 'DecompressionStream', | ||
| 314 | + 'Storage', | ||
| 315 | + 'localStorage', | ||
| 316 | + 'sessionStorage', | ||
| 317 | + ].forEach((i) => { | ||
| 318 | + if (globalThis[i] !== undefined) { | ||
| 319 | + knownGlobals.add(globalThis[i]); | ||
| 320 | + } | ||
| 321 | + }); | ||
| 352 | 322 | ||
| 353 | - if (global.Storage) { | ||
| 354 | - knownGlobals.push( | ||
| 355 | - global.localStorage, | ||
| 356 | - global.sessionStorage, | ||
| 357 | - global.Storage, | ||
| 358 | - ); | ||
| 323 | + if (hasCrypto) { | ||
| 324 | + knownGlobals.add(globalThis.crypto); | ||
| 325 | + knownGlobals.add(globalThis.Crypto); | ||
| 326 | + knownGlobals.add(globalThis.CryptoKey); | ||
| 327 | + knownGlobals.add(globalThis.SubtleCrypto); | ||
| 359 | 328 | } | |
| 360 | 329 | ||
| 361 | 330 | function allowGlobals(...allowlist) { | |
| 362 | - knownGlobals = knownGlobals.concat(allowlist); | ||
| 331 | + for (const val of allowlist) { | ||
| 332 | + knownGlobals.add(val); | ||
| 333 | + } | ||
| 363 | 334 | } | |
| 364 | 335 | ||
| 365 | 336 | if (process.env.NODE_TEST_KNOWN_GLOBALS !== '0') { | |
@@ -371,10 +342,13 @@ if (process.env.NODE_TEST_KNOWN_GLOBALS !== '0') { | |||
| 371 | 342 | function leakedGlobals() { | |
| 372 | 343 | const leaked = []; | |
| 373 | 344 | ||
| 374 | - for (const val in global) { | ||
| 345 | + for (const val in globalThis) { | ||
| 375 | 346 | // globalThis.crypto is a getter that throws if Node.js was compiled | |
| 376 | - // without OpenSSL. | ||
| 377 | - if (val !== 'crypto' && !knownGlobals.includes(global[val])) { | ||
| 347 | + // without OpenSSL so we'll skip it if it is not available. | ||
| 348 | + if (val === 'crypto' && !hasCrypto) { | ||
| 349 | + continue; | ||
| 350 | + } | ||
| 351 | + if (!knownGlobals.has(globalThis[val])) { | ||
| 378 | 352 | leaked.push(val); | |
| 379 | 353 | } | |
| 380 | 354 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments