UNPKG

@alwatr/platform-info

Version:

This module provides a way to detect the current platform where the script is running. It defines a constant `platformInfo` which holds the information about the current platform.

8 lines (7 loc) 3.9 kB
{ "version": 3, "sources": ["../src/main.ts"], "sourcesContent": ["import {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\n/**\n * Represents information about the current platform.\n */\ninterface PlatformInfo {\n /**\n * Whether the NODE_ENV environment variable is not `production` or in browser location.hostname is `localhost`.\n */\n readonly development: boolean;\n\n /**\n * Whether the current platform is node.js.\n */\n readonly isNode: boolean;\n\n /**\n * Whether the current platform is a browser.\n */\n readonly isBrowser: boolean;\n\n /**\n * Whether the current platform is a not a browser.\n */\n readonly isCli: boolean;\n\n /**\n * Whether the current platform is a web worker.\n */\n readonly isWebWorker: boolean;\n\n /**\n * Whether the current platform is deno.\n */\n readonly isDeno: boolean;\n\n /**\n * Whether the current platform is bun.\n */\n readonly isBun: boolean;\n\n /**\n * Whether the current platform is nw.js.\n */\n readonly isNw: boolean;\n\n /**\n * Whether the current platform is electron.\n */\n readonly isElectron: boolean;\n}\n\nexport const platformInfo: PlatformInfo = /* #__PURE__ */ (() => {\n /**\n * Represents information about the current platform.\n */\n const platformInfo_: Mutable<PlatformInfo> = {\n development: false,\n isNode: false,\n isBrowser: false,\n isWebWorker: false,\n isDeno: false,\n isBun: false,\n isCli: false,\n isNw: false,\n isElectron: false,\n };\n\n if (typeof window === 'object' && typeof document === 'object' && document.nodeType === Node.DOCUMENT_NODE) {\n platformInfo_.isBrowser = true;\n // @ts-expect-error - Cannot find name 'WorkerGlobalScope'\n platformInfo_.isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n }\n else if (typeof process === 'object') {\n platformInfo_.isCli = true;\n\n if (process.versions?.node != null) {\n platformInfo_.isNode = true;\n }\n\n // @ts-expect-error - Cannot find name 'Bun'\n if (typeof Bun !== 'undefined') {\n platformInfo_.isBun = true;\n }\n else if (process.versions?.electron != null) {\n platformInfo_.isElectron = true;\n }\n // @ts-expect-error - Cannot find name 'nw'\n else if (typeof nw !== 'undefined') {\n platformInfo_.isNw = true;\n }\n }\n\n // other platforms\n // @ts-expect-error - Cannot find name 'Deno'\n if (typeof Deno !== 'undefined') {\n platformInfo_.isCli = true;\n platformInfo_.isDeno = true;\n }\n\n // development\n if (platformInfo_.isBrowser === true) {\n platformInfo_.development = location.hostname === 'localhost' || location.hostname.indexOf('127.') === 0;\n }\n else if (platformInfo_.isCli === true) {\n platformInfo_.development = process.env.NODE_ENV !== 'production';\n }\n\n return platformInfo_;\n})();\n"], "mappings": ";;;AAAA,SAAQ,qBAAoB;AAE5B,aAAc,eAAc,IAAI,yBAAkB,OAAmB;AAoD9D,IAAM,eAA8C,uBAAM;AAI/D,QAAM,gBAAuC;AAAA,IAC3C,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,EACd;AAEA,MAAI,OAAO,WAAW,YAAY,OAAO,aAAa,YAAY,SAAS,aAAa,KAAK,eAAe;AAC1G,kBAAc,YAAY;AAE1B,kBAAc,cAAc,OAAO,sBAAsB,eAAe,gBAAgB;AAAA,EAC1F,WACS,OAAO,YAAY,UAAU;AACpC,kBAAc,QAAQ;AAEtB,QAAI,QAAQ,UAAU,QAAQ,MAAM;AAClC,oBAAc,SAAS;AAAA,IACzB;AAGA,QAAI,OAAO,QAAQ,aAAa;AAC9B,oBAAc,QAAQ;AAAA,IACxB,WACS,QAAQ,UAAU,YAAY,MAAM;AAC3C,oBAAc,aAAa;AAAA,IAC7B,WAES,OAAO,OAAO,aAAa;AAClC,oBAAc,OAAO;AAAA,IACvB;AAAA,EACF;AAIA,MAAI,OAAO,SAAS,aAAa;AAC/B,kBAAc,QAAQ;AACtB,kBAAc,SAAS;AAAA,EACzB;AAGA,MAAI,cAAc,cAAc,MAAM;AACpC,kBAAc,cAAc,SAAS,aAAa,eAAe,SAAS,SAAS,QAAQ,MAAM,MAAM;AAAA,EACzG,WACS,cAAc,UAAU,MAAM;AACrC,kBAAc,cAAc,QAAQ,IAAI,aAAa;AAAA,EACvD;AAEA,SAAO;AACT,GAAG;", "names": [] }