diff --git a/CHANGELOG.yaml b/CHANGELOG.yaml index 9b643ff..6450b23 100644 --- a/CHANGELOG.yaml +++ b/CHANGELOG.yaml @@ -1,3 +1,9 @@ +unreleased: + new features: + - >- + GH-676 Updated allowed globals list to include: + atob, btoa, Crypto, CryptoKey, crypto, SubtleCrypto, + TextDecoder, TextEncoder, URL, and URLSearchParams 2.2.0: date: 2024-03-13 new features: diff --git a/lib/allowed-globals.js b/lib/allowed-globals.js index 1ee459c..20c838e 100644 --- a/lib/allowed-globals.js +++ b/lib/allowed-globals.js @@ -6,22 +6,26 @@ * @type {String[]} */ module.exports = [ - 'Array', 'ArrayBuffer', 'Atomics', - 'BigInt', 'BigInt64Array', 'BigUint64Array', - 'Boolean', 'DataView', 'Date', - 'Error', 'EvalError', 'Float32Array', - 'Float64Array', 'Function', 'Infinity', - 'Int16Array', 'Int32Array', 'Int8Array', - 'JSON', 'Map', 'Math', - 'NaN', 'Number', 'Object', - 'Promise', 'Proxy', 'RangeError', - 'ReferenceError', 'Reflect', 'RegExp', - 'Set', 'SharedArrayBuffer', 'String', - 'Symbol', 'SyntaxError', 'TypeError', - 'URIError', 'Uint16Array', 'Uint32Array', - 'Uint8Array', 'Uint8ClampedArray', 'WeakMap', - 'WeakSet', 'decodeURI', 'decodeURIComponent', - 'encodeURI', 'encodeURIComponent', 'escape', - 'isFinite', 'isNaN', 'parseFloat', - 'parseInt', 'undefined', 'unescape' + 'Array', 'ArrayBuffer', 'Atomics', + 'atob', 'BigInt', 'BigInt64Array', + 'BigUint64Array', 'Boolean', 'btoa', + 'Crypto', 'CryptoKey', 'crypto', + 'DataView', 'Date', 'Error', + 'EvalError', 'Float32Array', 'Float64Array', + 'Function', 'Infinity', 'Int16Array', + 'Int32Array', 'Int8Array', 'JSON', + 'Map', 'Math', 'NaN', + 'Number', 'Object', 'Promise', + 'Proxy', 'RangeError', 'ReferenceError', + 'Reflect', 'RegExp', 'Set', + 'SharedArrayBuffer', 'String', 'SubtleCrypto', + 'Symbol', 'SyntaxError', 'TextEncoder', + 'TextDecoder', 'TypeError', 'URIError', + 'URL', 'URLSearchParams', 'Uint16Array', + 'Uint32Array', 'Uint8Array', 'Uint8ClampedArray', + 'WeakMap', 'WeakSet', 'decodeURI', + 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', + 'escape', 'isFinite', 'isNaN', + 'parseFloat', 'parseInt', 'undefined', + 'unescape' ]; diff --git a/test/unit/scope-globals.test.js b/test/unit/scope-globals.test.js index 99a785e..f0a477f 100644 --- a/test/unit/scope-globals.test.js +++ b/test/unit/scope-globals.test.js @@ -15,15 +15,15 @@ describe('scope module globals', function () { it('should be limited to a known subset in context', function (done) { scope.exec(` var availableGlobals = Object.getOwnPropertyNames(this).sort(); - expect(availableGlobals).eql(['Array', 'ArrayBuffer', 'Atomics', 'BigInt', 'BigInt64Array', - 'BigUint64Array', 'Boolean', 'DataView', 'Date', 'decodeURI', 'decodeURIComponent', 'encodeURI', - 'encodeURIComponent', 'Error', 'escape', 'EvalError', 'Float32Array', 'Float64Array', 'Function', - 'Infinity', 'Int8Array', 'Int16Array', 'Int32Array', 'isFinite', 'isNaN', 'JSON', 'Map', 'Math', 'NaN', - 'Number', 'Object', 'parseFloat', 'parseInt', 'Proxy', 'Promise', 'RangeError', 'ReferenceError', - 'Reflect', 'RegExp', 'Set', 'SharedArrayBuffer', 'String', 'Symbol', 'SyntaxError', 'TypeError', - 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'undefined', 'unescape', 'URIError', - 'WeakMap', 'WeakSet', - + expect(availableGlobals).eql(['Array', 'ArrayBuffer', 'Atomics', 'atob', 'BigInt', 'BigInt64Array', + 'BigUint64Array', 'Boolean', 'btoa', 'Crypto', 'CryptoKey', 'crypto', 'DataView', 'Date', 'decodeURI', + 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'Error', 'escape', 'EvalError', 'Float32Array', + 'Float64Array', 'Function', 'Infinity', 'Int8Array', 'Int16Array', 'Int32Array', 'isFinite', 'isNaN', + 'JSON','Map', 'Math', 'NaN', 'Number', 'Object', 'parseFloat', 'parseInt', 'Proxy', 'Promise', + 'RangeError', 'ReferenceError', 'Reflect', 'RegExp', 'Set', 'SharedArrayBuffer', 'String', + 'SubtleCrypto', 'Symbol', 'SyntaxError', 'TextDecoder', 'TextEncoder', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'undefined', 'unescape', 'URIError', 'URL', + 'URLSearchParams', 'WeakMap', 'WeakSet', 'expect' // special for test ].sort()) `, done);