lisn.js
Version:
Simply handle user gestures and actions. Includes widgets.
1 lines • 11.4 kB
Source Map (JSON)
{"version":3,"file":"remote-console.cjs","names":["MH","_interopRequireWildcard","require","_text","_xMap","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","RemoteConsole","constructor","url","connectTimeout","DEFAULT_TIMEOUT","hasFailed","isClosed","tmpQueue","sendLog","level","args","push","destroy","debug","log","info","warn","error","cleanup","_instances$get","level__ignored","args__ignored","instance","instances","deleteKey","prune","socket","moduleName","e__ignored","ioClient","io","disconnectTimer","setTimer","on","clearTimer","emit","joinAsString","disconnect","entry","shift","reuse","_instances$get2","rConsole","sGet","exports","newXMap","newMap"],"sources":["../../../src/ts/debug/remote-console.ts"],"sourcesContent":["/**\n * @module Debugging\n */\n\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { LogFunction } from \"@lisn/globals/types\";\n\nimport { joinAsString } from \"@lisn/utils/text\";\n\nimport { newXMap } from \"@lisn/modules/x-map\";\n\nimport { ConsoleInterface } from \"@lisn/debug/types\";\n\n/* ******************************\n * Remote console\n * *******************************/\n\n/**\n * Connects to a remote {@link https://socket.io/ | socket.io} server and logs\n * messages to it.\n *\n * In the root of the Git repository, there is a simple example server that\n * listens for these messages and logs them to the local console.\n *\n * @category Logging\n */\nexport class RemoteConsole implements ConsoleInterface {\n /**\n * Emits a message with ID `console.debug`.\n */\n readonly debug: LogFunction;\n\n /**\n * Emits a message with ID `console.log`.\n */\n readonly log: LogFunction;\n\n /**\n * Emits a message with ID `console.info`.\n */\n readonly info: LogFunction;\n\n /**\n * Emits a message with ID `console.warn`.\n */\n readonly warn: LogFunction;\n\n /**\n * Emits a message with ID `console.error`.\n */\n readonly error: LogFunction;\n\n /**\n * Disconnects and destroys the {@link RemoteConsole}. Cannot be undone.\n */\n readonly destroy: () => void;\n\n /**\n * Returns true if the client has been disconnected for more than\n * the connect timeout.\n */\n readonly hasFailed: () => boolean;\n\n /**\n * Creates a new {@link RemoteConsole} and attempts to connect to the logger\n * at the given URL.\n *\n * @param url The URL of the remote logger.\n * @param [connectTimeout = 1500] The timeout in ms for a connection\n * to be considered failed.\n */\n constructor(url: string, connectTimeout = DEFAULT_TIMEOUT) {\n let hasFailed = false; // initially\n let isClosed = false;\n\n // Because socket.io module is optional we need to import it dynamically,\n // which is always async. So to avoid Console and Logger also needing to be\n // async, we queue messages sent to a RemoteConsole here and try to import\n // socket.io here.\n let tmpQueue: Array<[string, unknown[]]> = [];\n let sendLog = (level: string, args: unknown[]) => {\n tmpQueue.push([level, args]);\n };\n let destroy = () => {};\n\n this.hasFailed = () => hasFailed;\n this.debug = (...args) => sendLog(\"debug\", args);\n this.log = (...args) => sendLog(\"log\", args);\n this.info = (...args) => sendLog(\"info\", args);\n this.warn = (...args) => sendLog(\"warn\", args);\n this.error = (...args) => sendLog(\"error\", args);\n this.destroy = () => destroy();\n\n const cleanup = () => {\n hasFailed = true;\n sendLog = (level__ignored: string, args__ignored: unknown[]) => {};\n tmpQueue = [];\n\n const instance = instances.get(url)?.get(connectTimeout);\n if (instance === this) {\n MH.deleteKey(instances.get(url), connectTimeout);\n instances.prune(url);\n }\n };\n\n (async () => {\n let socket: typeof import(\"socket.io-client\");\n const moduleName = \"socket.io-client\"; // suppress Vite static analysis\n try {\n socket = await import(/* webpackIgnore: true */ moduleName);\n } catch (e__ignored) {\n // module doesn't exist\n cleanup();\n return;\n }\n\n const ioClient = socket.io(url);\n\n // if not connected within connectTimeout initially, set as failed\n let disconnectTimer = MH.setTimer(() => {\n hasFailed = true;\n }, connectTimeout);\n\n ioClient.on(\"disconnect\", () => {\n // if not re-connected within connectTimeout, set as failed\n MH.clearTimer(disconnectTimer);\n if (!isClosed) {\n disconnectTimer = MH.setTimer(() => {\n hasFailed = true;\n }, connectTimeout);\n }\n });\n\n ioClient.on(\"connect\", () => {\n MH.clearTimer(disconnectTimer);\n hasFailed = false;\n });\n\n // Now we can send directly to the client\n sendLog = (level: string, args: unknown[]) => {\n if (!hasFailed) {\n ioClient.emit(`console.${level}`, joinAsString(\" \", ...args));\n }\n };\n\n destroy = () => {\n isClosed = true; // do not wait for re-connect\n ioClient.disconnect();\n cleanup();\n };\n\n // Flush the queue\n let entry: [string, unknown[]] | undefined;\n while ((entry = tmpQueue.shift())) {\n sendLog(entry[0], entry[1]);\n }\n })();\n }\n\n /**\n * Returns an existing {@link RemoteConsole} for the given URL and timeout or\n * creates a new one.\n *\n * If a new one is created, it will be saved for later reuse.\n *\n * @param url The URL of the remote logger.\n * @param [connectTimeout] The timeout in ms for a remote connection to\n * be considered failed. Default is 1500.\n */\n static reuse(url: string, connectTimeout = DEFAULT_TIMEOUT) {\n let rConsole = instances.get(url)?.get(connectTimeout);\n if (!rConsole) {\n rConsole = new RemoteConsole(url, connectTimeout);\n instances.sGet(url).set(connectTimeout, rConsole);\n }\n\n return rConsole;\n }\n}\n\nconst instances = newXMap<string, Map<number, RemoteConsole>>(() =>\n MH.newMap(),\n);\n\nconst DEFAULT_TIMEOUT = 1500;\n"],"mappings":"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","ignoreList":[]}