sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
23 lines (19 loc) • 920 B
text/typescript
import {type GlobalErrorChannel} from '../components/globalErrorHandler'
/**
* Gets the global scope instance in a given environment.
*
* The strategy is to return the most modern, and if not, the most common:
* - The `globalThis` variable is the modern approach to accessing the global scope
* - The `window` variable is the global scope in a web browser
* - The `self` variable is the global scope in workers and others
* - The `global` variable is the global scope in Node.js
*/
function getGlobalScope(): typeof globalThis & {__sanityErrorChannel?: GlobalErrorChannel} {
if (typeof globalThis !== 'undefined') return globalThis
if (typeof window !== 'undefined') return window
if (typeof self !== 'undefined') return self
if (typeof global !== 'undefined') return global
throw new Error('@sanity/ui: could not locate global scope')
}
/** @internal */
export const globalScope = getGlobalScope()