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

1.1.16 • 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.

Dependencies (0)

    Dev Dependencies (5)

    Package Sidebar

    Install

    npm i @alwatr/global-scope

    Weekly Downloads

    78

    Version

    1.1.16

    License

    MIT

    Unpacked Size

    15.8 kB

    Total Files

    11

    Last publish

    Collaborators

    • njfamirm
    • alimd