@alwatr/global-scope
TypeScript icon, indicating that this package has built-in type declarations

1.1.21 • Public • Published

Global Scope Module

globalScope

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;
}

Shared Scope

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'

Global Scope Duplication Check

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.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.21
    0
    • latest

Version History

Package Sidebar

Install

npm i @alwatr/global-scope

Weekly Downloads

368

Version

1.1.21

License

MIT

Unpacked Size

16.6 kB

Total Files

10

Last publish

Collaborators

  • alimd