globals

A single JSON file of global identifiers for every JavaScript environment, used by ESLint and other static analysis tools.

Library
npm
v17.13.0
614 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
72 /100 Good
Development Activity 68
Maintenance 64
Community 76
Maturity 60
Momentum 20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
68 /100 Good
Architecture 78
Code Quality 90
Innovation 65
Learning Curve 40

globals is a small, dependency-free npm package that ships one thing: a JSON map of global identifiers for dozens of JavaScript environments — browsers, Node.js, Deno, Bun, web workers, service workers, and test frameworks like Jest and Vitest. Each environment key maps to an object of global names, where the value indicates whether static-analysis tools should treat that global as writable (true) or read-only (false).

The package is best known as the data source behind ESLint’s built-in environment configs (for ESLint 8 and earlier), letting linters know that window or process are legitimate globals rather than undefined variables. Its accuracy comes from an automated pipeline: rather than hand-maintaining lists from documentation, scripts/update.mjs and a monthly scheduled GitHub Action actually launch real browsers via Puppeteer and real Deno/Bun runtimes to enumerate live globals, then regenerate globals.json and its accompanying TypeScript types from that ground truth.

What You Get

  • A globals.json data file covering 50+ environments, from browser and node to specific ECMAScript editions, test frameworks, and worker types
  • Read-only vs. writable flags on every global, so tools can distinguish overridable identifiers (like event in some browser contexts) from strictly read-only ones
  • Separate nodeBuiltin and node environments, letting consumers detect accidental CommonJS-only references in ESM code
  • Generated TypeScript type definitions (index.d.ts) verified with tsd, giving typed, autocompletable access to every environment object
  • A reproducible update pipeline (scripts/update.mjs) that regenerates the data by querying real browser, Deno, and Bun runtimes rather than transcribing documentation by hand

Common Use Cases

  • Populating a linter’s or custom static-analysis tool’s list of predefined globals for a given runtime
  • Detecting undeclared-variable false positives in codebases that mix multiple JavaScript environments
  • Auditing whether code relies on CommonJS-only globals (require, module) inside a project meant to run as pure ESM
  • Feeding bundler or transform tooling a canonical list of identifiers that should not be treated as free variables to resolve or polyfill

Under The Hood

Architecture

The package cleanly separates build-time data generation from runtime consumption. Sixty-odd source modules under data/ (browser.mjs, node.mjs, jest.mjs, es2015.mjs through es2024.mjs, and more) each describe one environment’s globals; scripts/generate-data.mjs reads every file in data/, assembles them into a single globals.json, and scripts/generate-types.mjs derives index.d.ts from that same aggregate. The published package itself is deliberately minimal — index.js is a one-line re-export of the JSON file — so the real architectural surface lives in the scripts and data directories that produce it, and changing the shape of a per-environment entry means updating both the data-generation and type-generation scripts in lockstep, plus every downstream linter config that dereferences a specific environment key.

Tech Stack

Everything runs on plain Node.js ESM scripts with zero runtime dependencies for the published package; devDependencies carry the real machinery — Puppeteer to launch actual browsers and scrape live window globals, nano-spawn to shell out to Deno and Bun for their builtin globals, Cheerio for parsing reference HTML, ava for tests, xo (ESLint-based) for linting, tsd with type-fest for type testing, and npm-run-all2 to sequence the build:data and build:types steps. The deployment target is simply the npm registry, publishing index.js, index.d.ts, and globals.json as static files.

Code Quality

Testing goes beyond static assertions: test.mjs (run via ava) launches real browser, Deno, Bun, Jest, and Vitest environments and diffs the package’s data against what those runtimes actually expose, catching drift that a hand-maintained list would miss. Type correctness is checked with tsd against index.test-d.ts. CI (main.yml) runs the full test suite across Node 18 and 20 on every push and PR, and a separate scheduled update.yml workflow does a dry-run of the update script monthly across Ubuntu, macOS, and Windows to catch platform-specific drift before it reaches a release. Linting is enforced via xo, which is itself an ESLint config, giving the project a dogfooding relationship with the exact static-analysis ecosystem it serves.

What Makes It Unique

Most lists of environment globals are hand-transcribed from documentation and go stale as runtimes evolve. This package’s distinguishing choice is verification by execution: its update pipeline doesn’t trust written docs, it spins up the actual browser/Deno/Bun/test-framework environments and reads their real global scope, then regenerates the data from that ground truth on a recurring schedule. That turns a seemingly static reference file into a continuously self-correcting one.

Used by 126 apps in this directory

TypeScript
95%
AGPL 3.0

ConvertX

Developer Tools · File Storage

19,197

Self-hosted file converter that wraps 20+ specialized tools to convert over a thousand formats — no cloud, no limits.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
TypeScript 95%
Updated 1 weeks ago
TypeScript
45%
Other

Convex Backend

Databases · Developer Tools

12,754

Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.

View details
88
Repo Health
82
Technical
65
Dependency
Built with
TypeScript 45%
Rust 43%
Updated 6 days ago
Go
88%
AGPL 3.0

Cozy Stack

File Storage · Productivity

1,268

Self-hosted personal cloud platform that unifies your files, apps, and devices in one private space you fully control.

View details
95
Repo Health
77
Technical
67
Dependency
Built with
Go 88%
Updated 1 weeks ago
TypeScript
100%
MIT

deer-workflow

AI Agents · AI Development

552

An open-source TypeScript runtime that treats coding agents as replaceable workers inside code-defined, observable Workflow graphs.

View details
64
Repo Health
81
Technical
0
Dependency
Built with
TypeScript 100%
Updated 2 months ago
Rust
67%
Other

DefGuard

Authentication · Networking · Security

2,882

Self-hosted secure remote access that unifies WireGuard VPN, identity management, and connection-level MFA in one open-source platform.

View details
86
Repo Health
82
Technical
71
Dependency
Built with
Rust 67%
TypeScript 30%
Updated 1 weeks ago
C++
67%
MPL 2.0

Zen Browser

Browser

45,208

A Firefox-based browser that puts focus, privacy, and workflow front-and-centre without sacrificing compatibility

View details
87
Repo Health
81
Technical
83
Dependency
Built with
C++ 67%
JavaScript 15%
Fluent 13%
Updated 1 weeks ago
TypeScript
80%
Other

Directus

CMS · Low Code Platforms

38,629

Connect any SQL database and get instant REST and GraphQL APIs, a visual management Studio, and a native MCP server for AI agents — free for most organizations.

View details
93
Repo Health
82
Technical
76
Dependency
Built with
TypeScript 80%
Vue 19%
Updated 1 weeks ago
Python
58%
MIT

Docglow

Data Engineering

151

A next-generation documentation site generator for dbt Core projects — lineage explorer, health scoring, and full-text search for teams without access to dbt Cloud's built-in docs features.

View details
69
Repo Health
65
Technical
79
Dependency
Built with
Python 58%
TypeScript 41%
Updated 6 days ago
TypeScript
95%
AGPL 3.0

Docmost

CMS · Collaboration · Note Taking

22,079

Self-hosted collaborative wiki and knowledge base with real-time editing, diagrams, AI assistance, and enterprise access controls — a modern alternative to Confluence and Notion.

View details
89
Repo Health
70
Technical
66
Dependency
Built with
TypeScript 95%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers