zeed 0.7.147 → 0.7.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser/log-colors.ts","../src/browser/log-browser.ts"],"sourcesContent":["// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nconst colors = [\n \"#0000CC\",\n \"#0000FF\",\n \"#0033CC\",\n \"#0033FF\",\n \"#0066CC\",\n \"#0066FF\",\n \"#0099CC\",\n \"#0099FF\",\n \"#00CC00\",\n \"#00CC33\",\n \"#00CC66\",\n \"#00CC99\",\n \"#00CCCC\",\n \"#00CCFF\",\n \"#3300CC\",\n \"#3300FF\",\n \"#3333CC\",\n \"#3333FF\",\n \"#3366CC\",\n \"#3366FF\",\n \"#3399CC\",\n \"#3399FF\",\n \"#33CC00\",\n \"#33CC33\",\n \"#33CC66\",\n \"#33CC99\",\n \"#33CCCC\",\n \"#33CCFF\",\n \"#6600CC\",\n \"#6600FF\",\n \"#6633CC\",\n \"#6633FF\",\n \"#66CC00\",\n \"#66CC33\",\n \"#9900CC\",\n \"#9900FF\",\n \"#9933CC\",\n \"#9933FF\",\n \"#99CC00\",\n \"#99CC33\",\n \"#CC0000\",\n \"#CC0033\",\n \"#CC0066\",\n \"#CC0099\",\n \"#CC00CC\",\n \"#CC00FF\",\n \"#CC3300\",\n \"#CC3333\",\n \"#CC3366\",\n \"#CC3399\",\n \"#CC33CC\",\n \"#CC33FF\",\n \"#CC6600\",\n \"#CC6633\",\n \"#CC9900\",\n \"#CC9933\",\n \"#CCCC00\",\n \"#CCCC33\",\n \"#FF0000\",\n \"#FF0033\",\n \"#FF0066\",\n \"#FF0099\",\n \"#FF00CC\",\n \"#FF00FF\",\n \"#FF3300\",\n \"#FF3333\",\n \"#FF3366\",\n \"#FF3399\",\n \"#FF33CC\",\n \"#FF33FF\",\n \"#FF6600\",\n \"#FF6633\",\n \"#FF9900\",\n \"#FF9933\",\n \"#FFCC00\",\n \"#FFCC33\",\n]\n\nexport function supportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== \"undefined\" &&\n window.process &&\n // @ts-ignore\n (window.process.type === \"renderer\" || window.process.__nwjs)\n ) {\n return true\n }\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n ) {\n return false\n }\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== \"undefined\" &&\n document.documentElement &&\n document.documentElement.style &&\n // @ts-ignore\n document.documentElement.style.WebkitAppearance) ||\n // Is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== \"undefined\" &&\n window.console &&\n // @ts-ignore\n (window.console.firebug ||\n // @ts-ignore\n (window.console.exception && window.console.table))) ||\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) &&\n parseInt(RegExp.$1, 10) >= 31) ||\n // Double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n\nexport function selectColor(namespace: string) {\n let hash = 0\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i)\n hash |= 0 // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length]\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { deepEqual } from \"../common/data/deep\"\nimport {\n LoggerInterface,\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\nimport { formatMilliseconds, getTimestamp } from \"../common/time\"\nimport { selectColor, supportsColors } from \"./log-colors\"\n\nconst styleFont = `font-family: \"JetBrains Mono\", Menlo; font-size: 11px;`\nconst styleDefault = `${styleFont}`\nconst styleBold = `font-weight: 600; ${styleFont}`\nconst useColors = supportsColors()\n\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nexport function LoggerBrowserHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n filter = undefined,\n level = undefined,\n colors = true,\n levelHelper = false,\n nameBrackets = true,\n padding = 16,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level)) return\n if (!matchesNamespace(msg.name)) return\n\n const timeNow = getTimestamp()\n let name = msg.name || \"\"\n let ninfo = namespaces[name || \"\"]\n if (ninfo == null) {\n ninfo = {\n color: selectColor(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n const diff = formatMilliseconds(timeNow - time)\n let args: string[]\n\n if (padding > 0) {\n name = name.padEnd(16, \" \")\n }\n\n if (colors && useColors) {\n args = [`%c${name}%c \\t%s %c+${diff}`]\n args.push(`color:${ninfo.color}; ${styleBold}`)\n args.push(styleDefault)\n args.push(msg.messages?.[0] ?? \"\")\n args.push(`color:${ninfo.color};`)\n args.push(...msg.messages.slice(1))\n } else {\n args = [name, ...msg.messages, `+${diff}`]\n }\n\n // function consoleArgs(args: any[] = []): any[] {\n // return [\n // args\n // .filter((a) => typeof a === \"string\")\n // .map((a) => String(a))\n // .join(\" \"),\n // ...styles,\n // ...args.filter((a) => typeof a !== \"string\"),\n // ]\n // }\n\n switch (msg.level) {\n case LogLevel.info:\n if (opt.levelHelper) args[0] = `I|* ` + args[0]\n console.info(...args)\n break\n case LogLevel.warn:\n if (opt.levelHelper) args[0] = `W|** ` + args[0]\n console.warn(...args)\n break\n case LogLevel.error:\n if (opt.levelHelper) args[0] = `E|*** ` + args[0]\n console.error(...args)\n break\n default:\n if (opt.levelHelper) args[0] = `D| ` + args[0]\n console.debug(...args)\n break\n }\n }\n}\n\nexport function LoggerBrowserSetupDebugFactory(opt: LogHandlerOptions = {}) {\n const filter = opt.filter ?? localStorage.zeed ?? localStorage.debug\n\n /// The trick is, that console called directly provides a reference to the source code.\n /// For the regular implementation this information is lost. But this approach has other\n /// drawbacks, therefore only use it in the Browser when actively debugging.\n return function LoggerBrowserDebugFactory(\n name: string = \"\"\n ): LoggerInterface {\n let log: LoggerInterface\n\n const matches = useNamespaceFilter(filter)\n\n if (matches(name)) {\n let fixedArgs = []\n if (useColors) {\n const color = selectColor(name)\n fixedArgs.push(`%c${name.padEnd(16, \" \")}%c \\t%s`)\n fixedArgs.push(`color:${color}; ${styleBold}`)\n fixedArgs.push(styleDefault)\n } else {\n fixedArgs.push(`[${name}] \\t%s`)\n }\n\n // @ts-ignore\n // console.previous = {\n // debug: console.debug,\n // info: console.info,\n // warn: console.warn,\n // error: console.error,\n // assert: console.assert,\n // }\n\n log = console.debug.bind(console, ...fixedArgs) as LoggerInterface\n log.debug = console.debug.bind(console, ...fixedArgs)\n log.info = console.info.bind(console, ...fixedArgs)\n log.warn = console.warn.bind(console, ...fixedArgs)\n log.error = console.error.bind(console, ...fixedArgs)\n\n log.assert = console.assert.bind(console)\n\n log.assertEqual = function (value: any, expected: any, ...args: any[]) {\n let equal = deepEqual(value, expected)\n if (!equal) {\n log.assert(\n equal,\n `Assert did fail. Expected ${expected} got ${value}`,\n expected,\n value,\n ...args\n )\n }\n }\n\n log.assertNotEqual = function (\n value: any,\n expected: any,\n ...args: any[]\n ) {\n let equal = deepEqual(value, expected)\n if (equal) {\n log.assert(\n equal,\n `Assert did fail. Expected ${expected} not to be equal with ${value}`,\n expected,\n value,\n ...args\n )\n }\n }\n } else {\n const noop = () => {}\n log = noop as LoggerInterface\n log.debug = noop\n log.info = noop\n log.warn = noop\n log.error = noop\n\n log.assert = noop\n log.assertEqual = noop\n log.assertNotEqual = noop\n }\n\n log.extend = (subName: string) => {\n return LoggerBrowserDebugFactory(name ? `${name}:${subName}` : subName)\n }\n\n log.label = name\n\n return log\n }\n}\n\n/** @deprecated This output is default for initial use of Logger in browser environments. */\nexport function activateConsoleDebug(opt: LogHandlerOptions = {}) {\n console.info(\"activateConsoleDebug is activated by default in browsers\")\n // Logger.setHandlers([LoggerBrowserHandler(opt)]) // Fallback for previously registered Loggers\n // Logger.setFactory(LoggerBrowserSetupDebugFactory(opt))\n}\n\n// let klass = console\n// let debug = console.debug.bind(window.console, klass.toString() + \": \")\n\n// debug(\"test\")\n// console.debug(\"test2\")\n\n// let dd\n// if (Function.prototype.bind) {\n// dd = Function.prototype.bind.call(console.log, console)\n// } else {\n// dd = function () {\n// Function.prototype.apply.call(console.log, console, arguments)\n// }\n// }\n\n// dd(\"dd\")\n\n// let c = 1\n// Object.defineProperty(window, \"log2\", {\n// get: () => {\n// return console.log.bind(\n// window.console,\n// \"%c[log]%c %s\" + c++,\n// \"color:red\",\n// \"\"\n// )\n// },\n// })\n\n// // usage:\n// log2(\"Back to the future\")\n// log2(\"Back to the future\")\n\n// let plog = new Proxy(console.debug, {\n// apply: function (target, that, args) {\n// target.apply(that, args)\n// // base.apply(that, args);\n// },\n// })\n\n// let cons = console.debug\n// let plog = (...args) => {\n// cons.apply(window.console, [\"|\", ...args])\n// }\n\n// plog(\"xxx\")\n\n// function a() {\n// var err = new Error()\n// var caller_line = err.stack.split(\"\\n\")[2]\n// var index = caller_line.indexOf(\"at \")\n// var clean = caller_line.slice(index + 2, caller_line.length)\n// clean = clean.replace(/\\?t=\\d+/, \"\").replace(\"@fs/\", \"\")\n// console.log(clean)\n// console.log(\n// \"http://localhost:8080/Users/dirk/work/viidoo/lib/src/browser/log-browser.ts:188:1 log-browser.ts:291:10\"\n// )\n// }\n// function b() {\n// a()\n// }\n// b()\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/browser/log-colors.ts","../src/browser/log-browser.ts"],"sourcesContent":["// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nconst colors = [\n \"#0000CC\",\n \"#0000FF\",\n \"#0033CC\",\n \"#0033FF\",\n \"#0066CC\",\n \"#0066FF\",\n \"#0099CC\",\n \"#0099FF\",\n \"#00CC00\",\n \"#00CC33\",\n \"#00CC66\",\n \"#00CC99\",\n \"#00CCCC\",\n \"#00CCFF\",\n \"#3300CC\",\n \"#3300FF\",\n \"#3333CC\",\n \"#3333FF\",\n \"#3366CC\",\n \"#3366FF\",\n \"#3399CC\",\n \"#3399FF\",\n \"#33CC00\",\n \"#33CC33\",\n \"#33CC66\",\n \"#33CC99\",\n \"#33CCCC\",\n \"#33CCFF\",\n \"#6600CC\",\n \"#6600FF\",\n \"#6633CC\",\n \"#6633FF\",\n \"#66CC00\",\n \"#66CC33\",\n \"#9900CC\",\n \"#9900FF\",\n \"#9933CC\",\n \"#9933FF\",\n \"#99CC00\",\n \"#99CC33\",\n \"#CC0000\",\n \"#CC0033\",\n \"#CC0066\",\n \"#CC0099\",\n \"#CC00CC\",\n \"#CC00FF\",\n \"#CC3300\",\n \"#CC3333\",\n \"#CC3366\",\n \"#CC3399\",\n \"#CC33CC\",\n \"#CC33FF\",\n \"#CC6600\",\n \"#CC6633\",\n \"#CC9900\",\n \"#CC9933\",\n \"#CCCC00\",\n \"#CCCC33\",\n \"#FF0000\",\n \"#FF0033\",\n \"#FF0066\",\n \"#FF0099\",\n \"#FF00CC\",\n \"#FF00FF\",\n \"#FF3300\",\n \"#FF3333\",\n \"#FF3366\",\n \"#FF3399\",\n \"#FF33CC\",\n \"#FF33FF\",\n \"#FF6600\",\n \"#FF6633\",\n \"#FF9900\",\n \"#FF9933\",\n \"#FFCC00\",\n \"#FFCC33\",\n]\n\nexport function supportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== \"undefined\" &&\n window.process &&\n // @ts-ignore\n (window.process.type === \"renderer\" || window.process.__nwjs)\n ) {\n return true\n }\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n ) {\n return false\n }\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== \"undefined\" &&\n document.documentElement &&\n document.documentElement.style &&\n // @ts-ignore\n document.documentElement.style.WebkitAppearance) ||\n // Is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== \"undefined\" &&\n window.console &&\n // @ts-ignore\n (window.console.firebug ||\n // @ts-ignore\n (window.console.exception && window.console.table))) ||\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) &&\n parseInt(RegExp.$1, 10) >= 31) ||\n // Double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n\nexport function selectColor(namespace: string) {\n let hash = 0\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i)\n hash |= 0 // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length]\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { deepEqual } from \"../common/data/deep\"\nimport {\n LoggerInterface,\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\nimport { formatMilliseconds, getTimestamp } from \"../common/time\"\nimport { selectColor, supportsColors } from \"./log-colors\"\n\nconst styleFont = `font-family: \"JetBrains Mono\", Menlo; font-size: 11px;`\nconst styleDefault = `${styleFont}`\nconst styleBold = `font-weight: 600; ${styleFont}`\nconst useColors = supportsColors()\n\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nexport function LoggerBrowserHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n filter = undefined,\n level = undefined,\n colors = true,\n levelHelper = false,\n nameBrackets = true,\n padding = 16,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level)) return\n if (!matchesNamespace(msg.name)) return\n\n const timeNow = getTimestamp()\n let name = msg.name || \"\"\n let ninfo = namespaces[name || \"\"]\n if (ninfo == null) {\n ninfo = {\n color: selectColor(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n const diff = formatMilliseconds(timeNow - time)\n let args: string[]\n\n if (padding > 0) {\n name = name.padEnd(16, \" \")\n }\n\n if (colors && useColors) {\n args = [`%c${name}%c \\t%s %c+${diff}`]\n args.push(`color:${ninfo.color}; ${styleBold}`)\n args.push(styleDefault)\n args.push(msg.messages?.[0] ?? \"\")\n args.push(`color:${ninfo.color};`)\n args.push(...msg.messages.slice(1))\n } else {\n args = [name, ...msg.messages, `+${diff}`]\n }\n\n // function consoleArgs(args: any[] = []): any[] {\n // return [\n // args\n // .filter((a) => typeof a === \"string\")\n // .map((a) => String(a))\n // .join(\" \"),\n // ...styles,\n // ...args.filter((a) => typeof a !== \"string\"),\n // ]\n // }\n\n switch (msg.level) {\n case LogLevel.info:\n if (opt.levelHelper) args[0] = `I|* ` + args[0]\n console.info(...args)\n break\n case LogLevel.warn:\n if (opt.levelHelper) args[0] = `W|** ` + args[0]\n console.warn(...args)\n break\n case LogLevel.error:\n if (opt.levelHelper) args[0] = `E|*** ` + args[0]\n console.error(...args)\n break\n default:\n if (opt.levelHelper) args[0] = `D| ` + args[0]\n console.debug(...args)\n break\n }\n }\n}\n\nexport function LoggerBrowserSetupDebugFactory(opt: LogHandlerOptions = {}) {\n const filter = opt.filter ?? localStorage.zeed ?? localStorage.debug\n\n /// The trick is, that console called directly provides a reference to the source code.\n /// For the regular implementation this information is lost. But this approach has other\n /// drawbacks, therefore only use it in the Browser when actively debugging.\n return function LoggerBrowserDebugFactory(\n name: string = \"\"\n ): LoggerInterface {\n let log: LoggerInterface\n\n const matches = useNamespaceFilter(filter)\n\n if (matches(name)) {\n let fixedArgs = []\n if (useColors) {\n const color = selectColor(name)\n fixedArgs.push(`%c${name.padEnd(16, \" \")}%c \\t%s`)\n fixedArgs.push(`color:${color}; ${styleBold}`)\n fixedArgs.push(styleDefault)\n } else {\n fixedArgs.push(`[${name}] \\t%s`)\n }\n\n // @ts-ignore\n // console.previous = {\n // debug: console.debug,\n // info: console.info,\n // warn: console.warn,\n // error: console.error,\n // assert: console.assert,\n // }\n\n log = console.debug.bind(console, ...fixedArgs) as LoggerInterface\n log.debug = console.debug.bind(console, ...fixedArgs)\n log.info = console.info.bind(console, ...fixedArgs)\n log.warn = console.warn.bind(console, ...fixedArgs)\n log.error = console.error.bind(console, ...fixedArgs)\n\n log.assert = console.assert.bind(console)\n\n log.assertEqual = function (value: any, expected: any, ...args: any[]) {\n let equal = deepEqual(value, expected)\n if (!equal) {\n log.assert(\n equal,\n `Assert did fail. Expected ${expected} got ${value}`,\n expected,\n value,\n ...args\n )\n }\n }\n\n log.assertNotEqual = function (\n value: any,\n expected: any,\n ...args: any[]\n ) {\n let equal = deepEqual(value, expected)\n if (equal) {\n log.assert(\n equal,\n `Assert did fail. Expected ${expected} not to be equal with ${value}`,\n expected,\n value,\n ...args\n )\n }\n }\n } else {\n const noop = () => {}\n log = noop as LoggerInterface\n log.debug = noop\n log.info = noop\n log.warn = noop\n log.error = noop\n\n log.assert = noop\n log.assertEqual = noop\n log.assertNotEqual = noop\n }\n\n log.extend = (subName: string) => {\n return LoggerBrowserDebugFactory(name ? `${name}:${subName}` : subName)\n }\n\n log.label = name\n\n return log\n }\n}\n\n/** @deprecated This output is default for initial use of Logger in browser environments. */\nexport function activateConsoleDebug(opt: LogHandlerOptions = {}) {\n console.info(\"activateConsoleDebug is activated by default in browsers\")\n // Logger.setHandlers([LoggerBrowserHandler(opt)]) // Fallback for previously registered Loggers\n // Logger.setFactory(LoggerBrowserSetupDebugFactory(opt))\n}\n\n// let klass = console\n// let debug = console.debug.bind(window.console, klass.toString() + \": \")\n\n// debug(\"test\")\n// console.debug(\"test2\")\n\n// let dd\n// if (Function.prototype.bind) {\n// dd = Function.prototype.bind.call(console.log, console)\n// } else {\n// dd = function () {\n// Function.prototype.apply.call(console.log, console, arguments)\n// }\n// }\n\n// dd(\"dd\")\n\n// let c = 1\n// Object.defineProperty(window, \"log2\", {\n// get: () => {\n// return console.log.bind(\n// window.console,\n// \"%c[log]%c %s\" + c++,\n// \"color:red\",\n// \"\"\n// )\n// },\n// })\n\n// // usage:\n// log2(\"Back to the future\")\n// log2(\"Back to the future\")\n\n// let plog = new Proxy(console.debug, {\n// apply: function (target, that, args) {\n// target.apply(that, args)\n// // base.apply(that, args);\n// },\n// })\n\n// let cons = console.debug\n// let plog = (...args) => {\n// cons.apply(window.console, [\"|\", ...args])\n// }\n\n// plog(\"xxx\")\n\n// function a() {\n// var err = new Error()\n// var caller_line = err.stack.split(\"\\n\")[2]\n// var index = caller_line.indexOf(\"at \")\n// var clean = caller_line.slice(index + 2, caller_line.length)\n// clean = clean.replace(/\\?t=\\d+/, \"\").replace(\"@fs/\", \"\")\n// console.log(clean)\n// console.log(\n// \"http://localhost:8080/Users/dirk/work/viidoo/lib/src/browser/log-browser.ts:188:1 log-browser.ts:291:10\"\n// )\n// }\n// function b() {\n// a()\n// }\n// b()\n"],"mappings":"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","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  getTimestamp,
8
8
  useLevelFilter,
9
9
  useNamespaceFilter
10
- } from "./chunk-XWMV2GEI.js";
10
+ } from "./chunk-LMZGFDSJ.js";
11
11
 
12
12
  // src/common/data/bin.ts
13
13
  var log = Logger("bin");
@@ -171,13 +171,12 @@ async function digest(message, algorithm = DEFAULT_HASH_ALG) {
171
171
  }
172
172
  __name(digest, "digest");
173
173
  async function deriveKeyPbkdf2(secret, opt = {}) {
174
- var _a;
175
174
  const secretBuffer = toUint8Array(secret);
176
175
  const keyMaterial = await crypto.subtle.importKey("raw", secretBuffer, DEFAULT_DERIVE_ALG, false, ["deriveKey"]);
177
176
  return await crypto.subtle.deriveKey({
178
177
  name: DEFAULT_DERIVE_ALG,
179
178
  salt: opt.salt ? toUint8Array(opt.salt) : new Uint8Array(0),
180
- iterations: (_a = opt.iterations) != null ? _a : 1e5,
179
+ iterations: opt.iterations ?? 1e5,
181
180
  hash: DEFAULT_HASH_ALG
182
181
  }, keyMaterial, {
183
182
  name: DEFAULT_CRYPTO_ALG,
@@ -666,17 +665,15 @@ function stringToBoolean(value, defaultValue = false) {
666
665
  }
667
666
  __name(stringToBoolean, "stringToBoolean");
668
667
  function stringToInteger(value, defaultValue = 0) {
669
- var _a;
670
668
  if (value == null || typeof value !== "string")
671
669
  return defaultValue;
672
- return (_a = parseInt(value.trim(), 10)) != null ? _a : defaultValue;
670
+ return parseInt(value.trim(), 10) ?? defaultValue;
673
671
  }
674
672
  __name(stringToInteger, "stringToInteger");
675
673
  function stringToFloat(value, defaultValue = 0) {
676
- var _a;
677
674
  if (value == null || typeof value !== "string")
678
675
  return defaultValue;
679
- return (_a = parseFloat(value.trim())) != null ? _a : defaultValue;
676
+ return parseFloat(value.trim()) ?? defaultValue;
680
677
  }
681
678
  __name(stringToFloat, "stringToFloat");
682
679
  function valueToBoolean(value, defaultValue = false) {
@@ -690,32 +687,29 @@ function valueToBoolean(value, defaultValue = false) {
690
687
  }
691
688
  __name(valueToBoolean, "valueToBoolean");
692
689
  function valueToInteger(value, defaultValue = 0) {
693
- var _a;
694
690
  if (value == null)
695
691
  return defaultValue;
696
692
  if (typeof value === "boolean")
697
693
  return value ? 1 : 0;
698
694
  if (typeof value === "number")
699
695
  return Math.floor(value);
700
- return (_a = parseInt(String(value).trim(), 10)) != null ? _a : defaultValue;
696
+ return parseInt(String(value).trim(), 10) ?? defaultValue;
701
697
  }
702
698
  __name(valueToInteger, "valueToInteger");
703
699
  function valueToFloat(value, defaultValue = 0) {
704
- var _a;
705
700
  if (value == null)
706
701
  return defaultValue;
707
702
  if (typeof value === "boolean")
708
703
  return value ? 1 : 0;
709
704
  if (typeof value === "number")
710
705
  return Math.floor(value);
711
- return (_a = parseFloat(String(value).trim())) != null ? _a : defaultValue;
706
+ return parseFloat(String(value).trim()) ?? defaultValue;
712
707
  }
713
708
  __name(valueToFloat, "valueToFloat");
714
709
  function valueToString(value, defaultValue = "") {
715
- var _a;
716
710
  if (value == null)
717
711
  return defaultValue;
718
- return (_a = String(value)) != null ? _a : defaultValue;
712
+ return String(value) ?? defaultValue;
719
713
  }
720
714
  __name(valueToString, "valueToString");
721
715
  var toFloat = valueToFloat;
@@ -775,9 +769,8 @@ function currency(value, opts = {}) {
775
769
  __name(currency, "currency");
776
770
  var _Currency = class {
777
771
  constructor(value, opts = {}) {
778
- var _a;
779
772
  let settings = Object.assign({}, defaults, opts);
780
- let precision = pow((_a = settings.precision) != null ? _a : 2);
773
+ let precision = pow(settings.precision ?? 2);
781
774
  let v = parse(value, settings);
782
775
  this.intValue = v;
783
776
  this.value = v / precision;
@@ -1506,7 +1499,7 @@ var XRX = class {
1506
1499
  constructor(pattern2, flags) {
1507
1500
  this.namedGroups = {};
1508
1501
  this.names = [];
1509
- let _flags = flags != null ? flags : "";
1502
+ let _flags = flags ?? "";
1510
1503
  let _rx;
1511
1504
  if (pattern2 instanceof RegExp) {
1512
1505
  if (flags == null) {
@@ -1619,7 +1612,7 @@ async function callDisposer(disposable) {
1619
1612
  }
1620
1613
  __name(callDisposer, "callDisposer");
1621
1614
  function useDispose(config) {
1622
- const { name } = typeof config === "string" ? { name: config } : config != null ? config : {};
1615
+ const { name } = typeof config === "string" ? { name: config } : config ?? {};
1623
1616
  let tracked = [];
1624
1617
  const untrack = /* @__PURE__ */ __name(async (disposable) => {
1625
1618
  if (disposable != null && tracked.includes(disposable)) {
@@ -1781,12 +1774,17 @@ var Emitter = class {
1781
1774
  constructor() {
1782
1775
  this.subscribers = {};
1783
1776
  this.subscribersOnAny = [];
1777
+ this.dispose = useDispose("emitter");
1784
1778
  this.call = new Proxy({}, {
1785
1779
  get: (target, name) => (...args) => this.emit(name, ...args)
1786
1780
  });
1787
1781
  }
1788
1782
  async emit(event, ...args) {
1789
1783
  let ok = false;
1784
+ this.dispose.add(() => {
1785
+ this.subscribers = {};
1786
+ this.subscribersOnAny = [];
1787
+ });
1790
1788
  try {
1791
1789
  let subscribers = this.subscribers[event] || [];
1792
1790
  this.subscribersOnAny.forEach((fn) => fn(event, ...args));
@@ -1840,10 +1838,6 @@ var Emitter = class {
1840
1838
  this.subscribers = {};
1841
1839
  return this;
1842
1840
  }
1843
- dispose() {
1844
- this.subscribers = {};
1845
- this.subscribersOnAny = [];
1846
- }
1847
1841
  };
1848
1842
  __name(Emitter, "Emitter");
1849
1843
  function getGlobalEmitter() {
@@ -2102,12 +2096,11 @@ function usePool(config = {}) {
2102
2096
  }
2103
2097
  __name(cancelAll, "cancelAll");
2104
2098
  function enqueue(task, config2 = {}) {
2105
- var _a, _b, _c, _d;
2106
2099
  let done;
2107
2100
  let promise = new Promise((resolve) => done = resolve);
2108
- let id = (_a = config2.id) != null ? _a : uuid();
2101
+ let id = config2.id ?? uuid();
2109
2102
  if (tasks[id] != null) {
2110
- const resolution = (_b = config2.idConflictResolution) != null ? _b : 1 /* memoize */;
2103
+ const resolution = config2.idConflictResolution ?? 1 /* memoize */;
2111
2104
  if (resolution === 0 /* replace */) {
2112
2105
  cancel(id);
2113
2106
  } else if (resolution === 1 /* memoize */) {
@@ -2131,8 +2124,8 @@ function usePool(config = {}) {
2131
2124
  task,
2132
2125
  priority: ++priority,
2133
2126
  state: 0 /* waiting */,
2134
- max: (_c = config2.max) != null ? _c : 1,
2135
- resolved: (_d = config2.resolved) != null ? _d : 0,
2127
+ max: config2.max ?? 1,
2128
+ resolved: config2.resolved ?? 0,
2136
2129
  done,
2137
2130
  payload: config2.payload,
2138
2131
  setMax(max) {
@@ -2182,7 +2175,7 @@ var SerialQueue = class extends Emitter {
2182
2175
  const { name = uname("queue"), logLevel } = opt;
2183
2176
  this.name = name;
2184
2177
  this.log = Logger(`zeed:queue:${name}`);
2185
- this.log.level = logLevel != null ? logLevel : Infinity /* off */;
2178
+ this.log.level = logLevel ?? Infinity /* off */;
2186
2179
  }
2187
2180
  async performNext() {
2188
2181
  this.log(`performNext, queue.length =`, this.queue.length);
@@ -2380,7 +2373,7 @@ function debounce(callback, opt = {}) {
2380
2373
  __name(debounce, "debounce");
2381
2374
 
2382
2375
  // src/common/localhost.ts
2383
- function isLocalHost(hostname = ((_b) => (_b = ((_a) => (_a = globalThis == null ? void 0 : globalThis.location) == null ? void 0 : _a.hostname)()) != null ? _b : "")()) {
2376
+ function isLocalHost(hostname = ((_a) => (_a = globalThis == null ? void 0 : globalThis.location) == null ? void 0 : _a.hostname)() ?? "") {
2384
2377
  return ["localhost", "127.0.0.1", "", "::1", "::"].includes(hostname) || hostname.startsWith("192.168.") || hostname.startsWith("10.0.") || hostname.endsWith(".local");
2385
2378
  }
2386
2379
  __name(isLocalHost, "isLocalHost");
@@ -2611,7 +2604,6 @@ __name(useMessageHub, "useMessageHub");
2611
2604
  // src/common/msg/pubsub.ts
2612
2605
  var PubSub = class extends Emitter {
2613
2606
  constructor(opt) {
2614
- var _a;
2615
2607
  super();
2616
2608
  this.publish = this.emit;
2617
2609
  this.subscribe = this.on;
@@ -2619,7 +2611,7 @@ var PubSub = class extends Emitter {
2619
2611
  this.channel = channel;
2620
2612
  this.encoder = encoder;
2621
2613
  this.debug = debug;
2622
- this.name = (_a = name != null ? name : this.channel.id) != null ? _a : uname("pubsub");
2614
+ this.name = name ?? this.channel.id ?? uname("pubsub");
2623
2615
  this.log = Logger(`${this.shortId}`);
2624
2616
  if (this.debug) {
2625
2617
  this.channel.on("connect", () => {
@@ -2650,9 +2642,9 @@ var PubSub = class extends Emitter {
2650
2642
  async emit(event, ...args) {
2651
2643
  try {
2652
2644
  if (this.debug)
2653
- this.log(`emit(${event})`, event);
2645
+ this.log(`emit(${String(event)})`, event);
2654
2646
  else
2655
- this.log(`emit(${event})`, args.length);
2647
+ this.log(`emit(${String(event)})`, args.length);
2656
2648
  if (!this.channel.isConnected) {
2657
2649
  this.log.warn("channel not connected");
2658
2650
  return false;
@@ -2661,7 +2653,7 @@ var PubSub = class extends Emitter {
2661
2653
  this.channel.postMessage(data);
2662
2654
  return true;
2663
2655
  } catch (err) {
2664
- this.log.warn(`emit(${event})`, err);
2656
+ this.log.warn(`emit(${String(event)})`, err);
2665
2657
  }
2666
2658
  return false;
2667
2659
  }
@@ -2674,13 +2666,15 @@ __name(usePubSub, "usePubSub");
2674
2666
 
2675
2667
  // src/common/msg/rpc.ts
2676
2668
  var rpcCounter = 1;
2669
+ var defaultSerialize = /* @__PURE__ */ __name((i) => i, "defaultSerialize");
2670
+ var defaultDeserialize = defaultSerialize;
2677
2671
  function useRPC(functions, options) {
2678
2672
  const {
2679
2673
  post,
2680
2674
  on,
2681
2675
  eventNames = [],
2682
- serialize = /* @__PURE__ */ __name((i) => i, "serialize"),
2683
- deserialize = /* @__PURE__ */ __name((i) => i, "deserialize")
2676
+ serialize = defaultSerialize,
2677
+ deserialize = defaultDeserialize
2684
2678
  } = options;
2685
2679
  const rpcPromiseMap = /* @__PURE__ */ new Map();
2686
2680
  on(async (data) => {
@@ -2688,10 +2682,14 @@ function useRPC(functions, options) {
2688
2682
  const [mode, args, id, method] = msg;
2689
2683
  if (mode === 1 /* request */ || mode === 2 /* event */) {
2690
2684
  let result, error;
2691
- try {
2692
- result = await functions[method](...args);
2693
- } catch (e) {
2694
- error = String(e);
2685
+ if (method != null) {
2686
+ try {
2687
+ result = await functions[method](...args);
2688
+ } catch (e) {
2689
+ error = String(e);
2690
+ }
2691
+ } else {
2692
+ error = "Method implementation missing";
2695
2693
  }
2696
2694
  if (mode === 1 /* request */ && id) {
2697
2695
  if (error) {
@@ -2702,10 +2700,12 @@ function useRPC(functions, options) {
2702
2700
  }
2703
2701
  } else if (id) {
2704
2702
  const promise = rpcPromiseMap.get(id);
2705
- if (mode === 4 /* reject */)
2706
- promise == null ? void 0 : promise.reject(args);
2707
- else
2708
- promise == null ? void 0 : promise.resolve(args);
2703
+ if (promise != null) {
2704
+ if (mode === 4 /* reject */)
2705
+ promise.reject(args);
2706
+ else
2707
+ promise.resolve(args);
2708
+ }
2709
2709
  rpcPromiseMap.delete(id);
2710
2710
  }
2711
2711
  });
@@ -2821,8 +2821,7 @@ function getNavigator() {
2821
2821
  }
2822
2822
  __name(getNavigator, "getNavigator");
2823
2823
  function getGlobal() {
2824
- var _a;
2825
- return ((_a = getWindow()) != null ? _a : typeof WorkerGlobalScope !== "undefined") ? self : typeof global !== "undefined" ? global : Function("return this;")();
2824
+ return getWindow() ?? typeof WorkerGlobalScope !== "undefined" ? self : typeof global !== "undefined" ? global : Function("return this;")();
2826
2825
  }
2827
2826
  __name(getGlobal, "getGlobal");
2828
2827
  var _navigator = getNavigator();
@@ -3127,4 +3126,4 @@ export {
3127
3126
  useExitHandler,
3128
3127
  MemStorage
3129
3128
  };
3130
- //# sourceMappingURL=chunk-Z7MQRVMT.js.map
3129
+ //# sourceMappingURL=chunk-XX52WKOZ.js.map