Global identifiers from different JavaScript environments
npx @tessl/cli install tessl/npm-globals@16.3.0Global identifiers from different JavaScript environments. This package provides a comprehensive collection of global variables and their read/write permissions for 47 JavaScript execution environments, serving as the data foundation for static analysis tools like ESLint.
npm install globalsconst globals = require('globals');For ES modules:
import globals from 'globals';import globals from 'globals';
// Access browser globals
const browserGlobals = globals.browser;
console.log(browserGlobals.window); // false (read-only)
console.log(browserGlobals.document); // false (read-only)
console.log(browserGlobals.onload); // true (writable event handler)
// Access Node.js globals
const nodeGlobals = globals.node;
console.log(nodeGlobals.process); // false (read-only)
console.log(nodeGlobals.Buffer); // false (read-only)
console.log(nodeGlobals.exports); // true (writable in CommonJS)
// Combine environments for ESLint
const eslintGlobals = {
...globals.browser,
...globals.es2022,
...globals.jest
};The globals package is structured as a single JSON data file containing:
false indicates read-only, true indicates writableAccess global variable definitions for any supported JavaScript environment.
/**
* Main globals export - object containing all environment definitions
*/
declare const globals: {
readonly [environment: string]: {
readonly [globalName: string]: boolean;
};
};
/**
* Available environments include:
* - Web: browser, worker, serviceworker, webextensions
* - Node.js: node, nodeBuiltin, commonjs, shared-node-browser
* - ECMAScript: builtin, es3, es5, es2015-es2026
* - Testing: jest, mocha, jasmine, qunit, vitest, chai
* - Libraries: jquery, meteor, prototypejs, shelljs
* - Specialized: amd, applescript, couch, devtools, greasemonkey, mongo, etc.
*/Browser global variables for web development (1000+ globals).
interface BrowserGlobals {
// DOM Core
readonly 'window': false;
readonly 'document': false;
readonly 'globalThis': false;
// DOM Elements
readonly 'HTMLElement': false;
readonly 'Element': false;
readonly 'Node': false;
// Web APIs
readonly 'fetch': false;
readonly 'XMLHttpRequest': false;
readonly 'WebSocket': false;
readonly 'localStorage': false;
readonly 'sessionStorage': false;
// Browser Objects
readonly 'navigator': false;
readonly 'location': true; // writable
readonly 'history': false;
readonly 'screen': false;
// Timing APIs
readonly 'setTimeout': false;
readonly 'setInterval': false;
readonly 'requestAnimationFrame': false;
// Event Handlers (writable)
readonly 'onload': true;
readonly 'onclick': true;
readonly 'onerror': true;
readonly 'onunload': true;
// Modern APIs
readonly 'IntersectionObserver': false;
readonly 'MutationObserver': false;
readonly 'PerformanceObserver': false;
readonly 'ResizeObserver': false;
// And 1000+ more browser globals...
}Node.js global variables and CommonJS scope.
interface NodeGlobals {
// Node.js Built-ins
readonly 'process': false;
readonly 'Buffer': false;
readonly 'global': false;
readonly 'console': false;
// CommonJS Module System
readonly 'require': false;
readonly 'module': false;
readonly 'exports': true; // writable
readonly '__dirname': false;
readonly '__filename': false;
// Node.js Timers
readonly 'setTimeout': false;
readonly 'setInterval': false;
readonly 'setImmediate': false;
readonly 'clearTimeout': false;
readonly 'clearInterval': false;
readonly 'clearImmediate': false;
// Modern Node.js APIs
readonly 'fetch': false;
readonly 'AbortController': false;
readonly 'URL': false;
readonly 'URLSearchParams': false;
readonly 'TextEncoder': false;
readonly 'TextDecoder': false;
readonly 'WebAssembly': false;
// And more Node.js globals...
}
interface NodeBuiltinGlobals {
// Node.js globals excluding CommonJS scope
// (Same as NodeGlobals but without require, module, exports, __dirname, __filename)
}Built-in JavaScript globals for different ECMAScript versions.
interface BuiltinGlobals {
// Core JavaScript
readonly 'Object': false;
readonly 'Array': false;
readonly 'Function': false;
readonly 'String': false;
readonly 'Number': false;
readonly 'Boolean': false;
readonly 'Date': false;
readonly 'RegExp': false;
readonly 'Math': false;
readonly 'JSON': false;
// Error Types
readonly 'Error': false;
readonly 'TypeError': false;
readonly 'ReferenceError': false;
readonly 'SyntaxError': false;
readonly 'RangeError': false;
readonly 'URIError': false;
readonly 'EvalError': false;
// Global Functions
readonly 'parseInt': false;
readonly 'parseFloat': false;
readonly 'isNaN': false;
readonly 'isFinite': false;
readonly 'encodeURI': false;
readonly 'decodeURI': false;
readonly 'encodeURIComponent': false;
readonly 'decodeURIComponent': false;
// ES2015+ Features
readonly 'Map': false;
readonly 'Set': false;
readonly 'WeakMap': false;
readonly 'WeakSet': false;
readonly 'Symbol': false;
readonly 'Promise': false;
readonly 'Proxy': false;
readonly 'Reflect': false;
readonly 'BigInt': false; // ES2020+
readonly 'globalThis': false; // ES2020+
// And more ECMAScript globals...
}Global variables provided by popular testing frameworks.
interface JestGlobals {
readonly 'describe': false;
readonly 'it': false;
readonly 'test': false;
readonly 'expect': false;
readonly 'beforeAll': false;
readonly 'beforeEach': false;
readonly 'afterAll': false;
readonly 'afterEach': false;
readonly 'jest': false;
readonly 'fit': false;
readonly 'xit': false;
readonly 'xdescribe': false;
readonly 'xtest': false;
}
interface MochaGlobals {
readonly 'describe': false;
readonly 'context': false;
readonly 'it': false;
readonly 'specify': false;
readonly 'before': false;
readonly 'beforeEach': false;
readonly 'after': false;
readonly 'afterEach': false;
readonly 'suite': false;
readonly 'test': false;
readonly 'suiteSetup': false;
readonly 'suiteTeardown': false;
readonly 'setup': false;
readonly 'teardown': false;
readonly 'mocha': false;
readonly 'run': false;
}
interface VitestGlobals {
readonly 'describe': false;
readonly 'it': false;
readonly 'test': false;
readonly 'suite': false;
readonly 'expect': false;
readonly 'assert': false;
readonly 'chai': false;
readonly 'vi': false;
readonly 'vitest': false;
readonly 'beforeAll': false;
readonly 'beforeEach': false;
readonly 'afterAll': false;
readonly 'afterEach': false;
readonly 'assertType': false;
readonly 'expectTypeOf': false;
readonly 'onTestFailed': false;
readonly 'onTestFinished': false;
}Global variables from popular JavaScript libraries and frameworks.
interface JQueryGlobals {
readonly '$': false;
readonly 'jQuery': false;
}
interface MeteorGlobals {
readonly 'Meteor': false;
readonly 'Mongo': false;
readonly 'Session': false;
readonly 'Template': false;
readonly 'Blaze': false;
readonly 'Tracker': false;
readonly 'Deps': false;
readonly 'EJSON': false;
readonly 'Match': false;
readonly 'check': false;
readonly 'Random': false;
readonly 'ReactiveVar': false;
readonly 'ReactiveDict': false;
// And more Meteor globals...
}
interface ShellJSGlobals {
readonly 'cd': false;
readonly 'ls': false;
readonly 'pwd': false;
readonly 'mkdir': false;
readonly 'rm': false;
readonly 'cp': false;
readonly 'mv': false;
readonly 'cat': false;
readonly 'head': false;
readonly 'tail': false;
readonly 'grep': false;
readonly 'find': false;
readonly 'which': false;
readonly 'echo': false;
readonly 'exit': false;
readonly 'exec': false;
// And more ShellJS command globals...
}Special globals for particular JavaScript execution environments.
interface WorkerGlobals {
readonly 'self': false;
readonly 'importScripts': false;
readonly 'postMessage': false;
readonly 'close': false;
readonly 'WorkerGlobalScope': false;
readonly 'DedicatedWorkerGlobalScope': false;
readonly 'onmessage': true; // writable event handler
readonly 'onerror': true; // writable event handler
// Plus all shared web APIs available in workers...
}
interface ServiceWorkerGlobals {
readonly 'self': false;
readonly 'caches': false;
readonly 'clients': false;
readonly 'registration': false;
readonly 'skipWaiting': false;
readonly 'importScripts': false;
readonly 'ServiceWorkerGlobalScope': false;
readonly 'ExtendableEvent': false;
readonly 'FetchEvent': false;
readonly 'InstallEvent': false;
readonly 'NotificationEvent': false;
readonly 'PushEvent': false;
readonly 'SyncEvent': false;
// Plus service worker event handlers...
}
interface WebExtensionGlobals {
readonly 'browser': false; // WebExtensions API
readonly 'chrome': false; // Chrome Extension API
readonly 'opr': false; // Opera Extension API
}
interface GreasemonkeyGlobals {
readonly 'GM': false;
readonly 'GM_info': false;
readonly 'GM_getValue': false;
readonly 'GM_setValue': false;
readonly 'GM_deleteValue': false;
readonly 'GM_listValues': false;
readonly 'GM_xmlhttpRequest': false;
readonly 'GM_openInTab': false;
readonly 'GM_notification': false;
readonly 'unsafeWindow': false;
// And more Greasemonkey/Tampermonkey APIs...
}/**
* Main globals object containing all environment definitions
*/
type Globals = {
// Web Environments
readonly 'browser': BrowserGlobals;
readonly 'worker': WorkerGlobals;
readonly 'serviceworker': ServiceWorkerGlobals;
readonly 'webextensions': WebExtensionGlobals;
readonly 'shared-node-browser': SharedNodeBrowserGlobals;
// Node.js Environments
readonly 'node': NodeGlobals;
readonly 'nodeBuiltin': NodeBuiltinGlobals;
readonly 'commonjs': CommonJSGlobals;
// ECMAScript Versions
readonly 'builtin': BuiltinGlobals;
readonly 'es3': ES3Globals;
readonly 'es5': ES5Globals;
readonly 'es2015': ES2015Globals;
readonly 'es2016': ES2016Globals;
readonly 'es2017': ES2017Globals;
readonly 'es2018': ES2018Globals;
readonly 'es2019': ES2019Globals;
readonly 'es2020': ES2020Globals;
readonly 'es2021': ES2021Globals;
readonly 'es2022': ES2022Globals;
readonly 'es2023': ES2023Globals;
readonly 'es2024': ES2024Globals;
readonly 'es2025': ES2025Globals;
readonly 'es2026': ES2026Globals;
// Testing Frameworks
readonly 'jest': JestGlobals;
readonly 'mocha': MochaGlobals;
readonly 'jasmine': JasmineGlobals;
readonly 'qunit': QUnitGlobals;
readonly 'vitest': VitestGlobals;
readonly 'chai': ChaiGlobals;
readonly 'atomtest': AtomTestGlobals;
readonly 'embertest': EmberTestGlobals;
readonly 'protractor': ProtractorGlobals;
// Libraries and Frameworks
readonly 'jquery': JQueryGlobals;
readonly 'meteor': MeteorGlobals;
readonly 'prototypejs': PrototypeJSGlobals;
readonly 'yui': YUIGlobals;
readonly 'shelljs': ShellJSGlobals;
// Module Systems
readonly 'amd': AMDGlobals;
// Specialized Environments
readonly 'applescript': AppleScriptGlobals;
readonly 'couch': CouchDBGlobals;
readonly 'devtools': DevToolsGlobals;
readonly 'greasemonkey': GreasemonkeyGlobals;
readonly 'mongo': MongoDBGlobals;
readonly 'nashorn': NashornGlobals;
readonly 'phantomjs': PhantomJSGlobals;
readonly 'rhino': RhinoGlobals;
readonly 'wsh': WindowsScriptHostGlobals;
};
/**
* Individual environment type - maps global names to read/write permissions
*/
type EnvironmentGlobals = {
readonly [globalName: string]: boolean;
};
/**
* Global variable permissions
* - false: Read-only global (cannot be reassigned)
* - true: Writable global (can be reassigned)
*/
type GlobalPermission = boolean;ESLint Configuration:
const globals = require('globals');
module.exports = {
env: {
browser: true,
node: true,
es2022: true,
jest: true
},
globals: {
...globals.browser,
...globals.node,
...globals.es2022,
...globals.jest,
// Custom globals
myCustomGlobal: 'readonly',
myWritableGlobal: 'writable'
}
};Combining Multiple Environments:
const globals = require('globals');
// For a React app with testing
const reactAppGlobals = {
...globals.browser,
...globals.es2022,
...globals.jest
};
// For a Node.js CLI tool
const nodeToolGlobals = {
...globals.node,
...globals.es2022
};
// For a universal/isomorphic app
const universalAppGlobals = {
...globals.shared-node-browser,
...globals.es2022
};Custom Environment Detection:
const globals = require('globals');
function getGlobalsForEnvironment(env) {
const baseGlobals = { ...globals.builtin };
switch (env) {
case 'browser':
return { ...baseGlobals, ...globals.browser };
case 'node':
return { ...baseGlobals, ...globals.node };
case 'worker':
return { ...baseGlobals, ...globals.worker };
default:
return baseGlobals;
}
}