This TypeScript module provides a cross-platform alternative to globalThis
named globalScope
. This object works across different environments, including browsers (window
), Node.js (global
), and Web Workers (self
).
import {globalScope} from '@alwatr/global-scope';
globalScope.alwatr = {
...globalScope.alwatr,
version: '1.0.0',
};
globalScope.setTimeout(() => {
console.log(globalScope.alwatr.version); // 1.0.0
}, 1_000);
The module also includes a polyfill for globalThis
to ensure compatibility across different JavaScript environments.
if (globalScope.globalThis !== globalScope) {
globalScope.globalThis = globalScope;
}
The module exports a sharedScope_
object. This object can be used to share state across different modules without making the data publicly accessible in the global scope.
For example, one module can set a property on sharedScope_
, and another module can read that property. This allows for data sharing between different parts of your application.
// module1.ts
import {sharedScope_} from '@alwatr/global-scope';
sharedScope_.foo = 'bar';
// module2.ts
import {sharedScope_} from '@alwatr/global-scope';
console.log(sharedScope_.foo); // 'bar'
The module includes a check for duplication of the global scope definition. If the global scope has already been defined, an error is thrown.
if (globalScope.__shared_scope_defined__ !== undefined) {
throw new Error('global_scope_module_duplicated');
}
globalScope.__shared_scope_defined__ = true;
This ensures that the global scope module is not accidentally included multiple times, which could lead to unexpected behavior from shared scope.