UNPKG

@socketsupply/socket

Version:

A Cross-Platform, Native Runtime for Desktop and Mobile Apps — Create apps using HTML, CSS, and JavaScript. Written from the ground up to be small and maintainable.

47 lines (38 loc) 930 B
import Promise from './promise.js' /** * Symbolic global registry * @ignore */ export class GlobalsRegistry { get global () { return globalThis ?? this } symbol (name) { return Symbol.for(`socket.runtime.global.${name}`) } register (name, value) { this.global[this.symbol(name)] = value return value } get (name) { return this.global[this.symbol(name)] ?? null } } const registry = ( globalThis.top?.__globals ?? globalThis.__globals ?? new GlobalsRegistry() ) const RuntimeReadyPromiseResolvers = Promise.withResolvers() registry.register('RuntimeReadyPromiseResolvers', RuntimeReadyPromiseResolvers) registry.register('RuntimeReadyPromise', RuntimeReadyPromiseResolvers.promise) /** * Gets a runtime global value by name. * @ignore * @param {string} name * @return {any|null} */ export function get (name) { return registry.get(name) ?? null } export default registry