zeed 0.7.97 → 0.7.101

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.
Files changed (35) hide show
  1. package/dist/chunk-2MNLLNRH.js +2 -0
  2. package/dist/{chunk-JL5GA55T.js.map → chunk-2MNLLNRH.js.map} +1 -1
  3. package/dist/chunk-FRS5X2RR.js +7 -0
  4. package/dist/{chunk-7YV5VFZP.js.map → chunk-FRS5X2RR.js.map} +1 -1
  5. package/dist/chunk-NBL7BZAW.js +2 -0
  6. package/dist/{chunk-H5ICAAIH.js.map → chunk-NBL7BZAW.js.map} +1 -1
  7. package/dist/chunk-PSHR634P.js +5 -0
  8. package/dist/chunk-PSHR634P.js.map +1 -0
  9. package/dist/chunk-YBNWDOXD.js +2 -0
  10. package/dist/{chunk-LNZLD7Y3.js.map → chunk-YBNWDOXD.js.map} +1 -1
  11. package/dist/index.all.cjs +9 -9
  12. package/dist/index.all.cjs.map +1 -1
  13. package/dist/index.all.d.ts +3 -3
  14. package/dist/index.all.js +1 -1
  15. package/dist/index.browser.cjs +4 -4
  16. package/dist/index.browser.cjs.map +1 -1
  17. package/dist/index.browser.d.ts +2 -2
  18. package/dist/index.browser.js +1 -1
  19. package/dist/index.log.cjs +1 -1
  20. package/dist/index.log.cjs.map +1 -1
  21. package/dist/index.log.js +1 -1
  22. package/dist/index.node.cjs +9 -9
  23. package/dist/index.node.cjs.map +1 -1
  24. package/dist/index.node.d.ts +2 -2
  25. package/dist/index.node.js +1 -1
  26. package/dist/{log-colors-1600acaa.d.ts → log-colors-48e120a2.d.ts} +1 -1
  27. package/dist/{log-util-0c3d62ff.d.ts → log-util-d3a084f6.d.ts} +1 -1
  28. package/dist/{uuid-349b7a26.d.ts → uuid-bdf645cb.d.ts} +9 -2
  29. package/package.json +1 -1
  30. package/dist/chunk-7YV5VFZP.js +0 -7
  31. package/dist/chunk-BHQJ5YK3.js +0 -5
  32. package/dist/chunk-BHQJ5YK3.js.map +0 -1
  33. package/dist/chunk-H5ICAAIH.js +0 -2
  34. package/dist/chunk-JL5GA55T.js +0 -2
  35. package/dist/chunk-LNZLD7Y3.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{c as i,n as f,q as u,r as L,y as g,z as v}from"./chunk-YBNWDOXD.js";var $=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function E(){return typeof window!="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}i(E,"supportsColors");function p(r){let C=0;for(let c=0;c<r.length;c++)C=(C<<5)-C+r.charCodeAt(c),C|=0;return $[Math.abs(C)%$.length]}i(p,"selectColor");var H='font-family: "JetBrains Mono", Menlo; font-size: 11px;',A=`${H}`,x=`font-weight: 600; ${H}`,q=E(),k={},D=g();function G(r={}){let{filter:C=void 0,level:c=void 0,colors:F=!0,levelHelper:w=!1,nameBrackets:d=!0,padding:o=16}=r,m=u(C),e=L(c);return t=>{var h,y;if(!e(t.level)||!m(t.name))return;let a=g(),s=t.name||"",l=k[s||""];l==null&&(l={color:p(s)},k[s]=l);let b=v(a-D),n;switch(o>0&&(s=s.padEnd(16," ")),F&&q?(n=[`%c${s}%c %s %c+${b}`],n.push(`color:${l.color}; ${x}`),n.push(A),n.push((y=(h=t.messages)==null?void 0:h[0])!=null?y:""),n.push(`color:${l.color};`),n.push(...t.messages.slice(1))):n=[s,...t.messages,`+${b}`],t.level){case 1:r.levelHelper&&(n[0]="I|* "+n[0]),console.info(...n);break;case 2:r.levelHelper&&(n[0]="W|** "+n[0]),console.warn(...n);break;case 3:r.levelHelper&&(n[0]="E|*** "+n[0]),console.error(...n);break;default:r.levelHelper&&(n[0]="D| "+n[0]),console.debug(...n);break}}}i(G,"LoggerBrowserHandler");function K(r={}){var c,F;let C=(F=(c=r.filter)!=null?c:localStorage.zeed)!=null?F:localStorage.debug;return i(function w(d=""){let o;if(u(C)(d)){let e=[];if(q){let t=p(d);e.push(`%c${d.padEnd(16," ")}%c %s`),e.push(`color:${t}; ${x}`),e.push(A)}else e.push(`[${d}] %s`);o=console.debug.bind(console,...e),o.debug=console.debug.bind(console,...e),o.info=console.info.bind(console,...e),o.warn=console.warn.bind(console,...e),o.error=console.error.bind(console,...e),o.assert=console.assert.bind(console),o.assertEqual=function(t,a,...s){let l=f(t,a);l||o.assert(l,`Assert did fail. Expected ${a} got ${t}`,a,t,...s)},o.assertNotEqual=function(t,a,...s){let l=f(t,a);l&&o.assert(l,`Assert did fail. Expected ${a} not to be equal with ${t}`,a,t,...s)}}else{let e=i(()=>{},"noop");o=e,o.debug=e,o.info=e,o.warn=e,o.error=e,o.assert=e,o.assertEqual=e,o.assertNotEqual=e}return o.extend=e=>w(d?`${d}:${e}`:e),o},"LoggerBrowserDebugFactory")}i(K,"LoggerBrowserSetupDebugFactory");function P(r={}){console.info("activateConsoleDebug is activated by default in browsers")}i(P,"activateConsoleDebug");export{E as a,p as b,G as c,K as d,P as e};
2
+ //# sourceMappingURL=chunk-2MNLLNRH.js.map
@@ -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 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 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":[]}
@@ -0,0 +1,7 @@
1
+ import{Ya as M,jb as k,pa as F}from"./chunk-PSHR634P.js";import{c as l,q as N,r as T,x as v,y as j,z as K}from"./chunk-YBNWDOXD.js";import $ from"fs";import{resolve as ae}from"path";var x=v("zeed:env"),ce=`
2
+ `,fe=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/,ge=/\\n/g,ue=/\n|\r|\r\n/;function U(e,t={}){let r={};return e.toString().split(ue).forEach(function(n,i){let o=n.match(fe);if(o!=null){let c=o[1],s=o[2]||"",g=s.length-1,d=s[0]==='"'&&s[g]==='"';s[0]==="'"&&s[g]==="'"||d?(s=s.substring(1,g),d&&(s=s.replace(ge,ce))):s=s.trim(),r[c]=s}else x.debug(`did not match key and value when parsing line ${i+1}: ${n}`)}),r}l(U,"parse");function me(e,t="."){return ae(process.cwd(),e!=null?e:t)}l(me,"stringToPath");function de(e,t=""){return e==null&&(e=t),me(String(e).trim(),t)}l(de,"valueToPath");var P=de;function Ie(e={}){var i,o,c,s;let t=(o=e==null?void 0:e.path)!=null?o:P((i=e==null?void 0:e.filename)!=null?i:".env"),r=(c=e==null?void 0:e.encoding)!=null?c:"utf8",n=(e==null?void 0:e.debug)||!1;n!==!0&&(x.level=1/0);try{let g=$.existsSync(t)?U($.readFileSync(t,{encoding:r}),{debug:n}):{},d=$.existsSync(t+".local")?U($.readFileSync(t+".local",{encoding:r}),{debug:n}):{},h=Object.assign({},g,d),f=(s=e==null?void 0:e.env)!=null?s:process.env;return Object.entries(h).forEach(([u,m])=>{typeof(e==null?void 0:e.prefix)=="string"&&(u=(e==null?void 0:e.prefix)+u),Object.prototype.hasOwnProperty.call(f,u)?x.debug(`"${u}" is already defined and will not be overwritten`):m!=null&&(x.info(`set env.${u} = ${m}`),f[u]=m)}),{parsed:h}}catch(g){return x.error(g),{error:g}}}l(Ie,"setupEnv");import{mkdirSync as pe,readdirSync as he,readFileSync as Y,rmSync as ye,unlinkSync as be,writeFileSync as Se}from"fs";import{dirname as ve,resolve as J}from"path";var R=v("zeed:filestorage"),Q=class{constructor(t={}){this.store={};this.fileKeys=void 0;this.pretty=!1;var r,n,i,o;this.dirname=J(process.cwd(),t.path||".fileStorage"),this.pretty=!!t.pretty,this.extension=(r=t.extension)!=null?r:".json",t.extension&&!this.extension.startsWith(".")&&(this.extension="."+this.extension),this.extensionLength=this.extension.length,this.objectToString=(n=t.objectToString)!=null?n:c=>this.pretty?JSON.stringify(c,null,2):JSON.stringify(c),this.objectFromString=(i=t.objectFromString)!=null?i:c=>{try{return JSON.parse(c)}catch(s){R.warn(`fileStorage parse error '${s}' in`,c)}},this.keyToFilename=(o=t.keyToFilename)!=null?o:M}setItem(t,r){this.store[t]=k(r);try{let n=this.objectToString(r),i=this.getPath(t);pe(ve(i),{recursive:!0}),Se(i,n,"utf8")}catch(n){R.error("setItem error",n)}}getPath(t){return J(this.dirname,this.keyToFilename(t)+this.extension)}getBuffer(t){let r=this.getPath(t);return Buffer.from(Y(r))}getItem(t){let r=this.store[t];if(r!==null){if(r!=null)return k(r);try{let n=this.getPath(t),i=Y(n,"utf8");if(i!=null){let o=this.objectFromString(i);return this.store[t]=o,o}}catch(n){R.warn("getItem error",n),this.store[t]=null}}}removeItem(t){if(delete this.store[t],this.fileKeys!=null){let r=this.fileKeys.indexOf(t);r!==-1&&this.fileKeys.splice(r,1)}try{let r=this.getPath(t);be(r)}catch{}}clear(){this.fileKeys=[],this.store={},ye(this.dirname,{recursive:!0,force:!0})}allKeys(){if(this.fileKeys==null)try{this.fileKeys=he(this.dirname,{withFileTypes:!0}).filter(r=>!r.isDirectory()&&r.name.endsWith(this.extension)).map(r=>r.name.slice(0,-this.extensionLength))||[]}catch{}let t=[...this.fileKeys||[]];for(let r of Object.keys(this.store))t.includes(r)||t.push(r);return t.sort(),t}};l(Q,"FileStorage");import{createWriteStream as xe,mkdirSync as Le}from"fs";import{dirname as Ee,resolve as we}from"path";var z={};function V(e,t={}){let{level:r=-1,filter:n="*"}=t;e=we(process.cwd(),e),Le(Ee(e),{recursive:!0});var i=xe(e,{flags:"a"});let o=N(n),c=T(r);return s=>{if(!c(s.level)||!o(s.name))return;let g=new Date().toISOString(),d=s.name||"",h=z[d||""];h==null&&(z[d]=h);let f=[`[${d||"*"}]`,F(s.messages,{pretty:!1})];function u(...m){i.write(m.join(" ")+`
3
+ `)}switch(l(u,"write"),s.level){case 1:u(g,"I|* ",...f);break;case 2:u(g,"W|** ",...f);break;case 3:u(g,"E|***",...f);break;default:u(g,"D| ",...f);break}}}l(V,"LoggerFileHandler");import{resolve as Z}from"path";function Ne(e){var t,r;return typeof e!="string"?[]:((r=(t=e==null?void 0:e.split(`
4
+ `))==null?void 0:t.map(n=>{let i=n.match(/^\s+at.*(\((.*)\)|file:\/\/(.*)$)/);if(i){let o=i[3]||i[2];return o.endsWith(")")&&(o=o.slice(0,-1)),o}}))==null?void 0:r.filter(n=>n!=null))||[]}l(Ne,"getStackLlocationList");var B=Z(process.cwd()),ee,te,D=((ee=process.env)==null?void 0:ee.HOME)?Z((te=process.env)==null?void 0:te.HOME):"";function q(e){if(e.includes("/node_modules/"))return"";let t="file://";return e.startsWith(t)?e.substr(t.length):B&&e.startsWith(B)?e.substr(B.length+1):(D&&e.startsWith(D)&&(e="~/"+e.substr(D.length+1)),e)}l(q,"pathStripCwd");function Te(e){let t=e.match(/^\s*at.*(\((.*)\)|file:\/\/(.*)$)/);if(t){let r=t[3]||t[2];return r.endsWith(")")&&(r=r.slice(0,-1)),r}return""}l(Te,"extractFileInfo");function H(e=2,t=!0){var i;let r=new Error().stack||"",n=(i=Ne(r))==null?void 0:i[e];return n&&t&&(n=q(n)),n||""}l(H,"getSourceLocation");function X(){return new Error().stack||""}l(X,"getStack");function C(e,t=!0){let r="",n=new Error().stack||"";if(typeof n=="string"){let i=n.split(`
5
+ `).map(c=>c.trim()),o=i.findIndex(c=>e.some(s=>c.startsWith(s)));r=i[o+1],r&&(r=Te(r)),r&&t&&(r=q(r))}return r}l(C,"getSourceLocationByPrecedingPattern");import re from"tty";function Fe(){try{return re.isatty(process.stdout.fd)}catch{}return!1}l(Fe,"isTTY");var ne=[6,2,3,4,5,1];function $e(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return ne[Math.abs(t)%ne.length]}l($e,"selectColor");var ie={},Oe=j(),I=re.isatty(process.stderr.fd);function O(...e){return process.stderr.write(F(e)+`
6
+ `)}l(O,"log");var L={BOLD:"",UNBOLD:"",RED:"",GREEN:"",BLUE:"",PURPLE:"",GRAY:"",ORANGE:"",UNCOLOR:""};var se="";function E(e,t){return`${t===8?L.ORANGE:"[3"+(t<8?t:"8;5;"+t)+"m"}${e}${se}`}l(E,"colorString");function oe(e,t,r=!0){return e.map(n=>{if(typeof n!="string")return n;let i=t,o=se;return r&&(i=`${L.BOLD}${i}`,o=`${o}${L.BOLD}`),`${i}${n}${o}`})}l(oe,"colorStringList");var ke="loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";function le(e={}){let{level:t=void 0,filter:r=void 0,colors:n=Fe(),levelHelper:i=!0,nameBrackets:o=!0,padding:c=0,fill:s=0,stack:g=!0}=e,d=N(r),h=T(t);return f=>{var G;if(!h(f.level)||!d(f.name))return;let u=j(),m=f.name||"",w=ie[m||""];w==null&&(w={color:$e(m)},ie[m]=w);let A=K(u-Oe),a,S=o?`[${m}]`:m;if(c>0&&(S=S.padStart(c," ")),s>0&&(S=S.padEnd(s," ")),n&&I){let p=w.color;a=[E(S,p)+" | "],f.level===2?a.push(...oe(f.messages,L.ORANGE)):f.level===3?a.push(...oe(f.messages,L.RED)):a.push(...f.messages),a.push(E(`+${A}`,p))}else a=[S,...f.messages],a.push(`+${A}`);if(((G=f.messages)==null?void 0:G[0])===ke&&console.log(X()),g){let p="";typeof g=="boolean"?(p=C(["at Function.","at null.log (","at log ("],!0),p||(p=H(0,!0))):p=H(typeof g=="number"?g:3,!0),p&&a.push(E(`(${p})`,7))}switch(f.level){case 1:i&&(a[0]="I|* "+a[0]),O(...a);break;case 2:i&&(a[0]=(n&&I?E("W|** ",8):"W|** ")+a[0]),O(...a);break;case 3:i&&(a[0]=(n&&I?E("E|*** ",1):"E|*** ")+a[0]),O(...a);break;default:i&&(a[0]="D| "+a[0]),O(...a);break}}}l(le,"LoggerNodeHandler");import W from"crypto";try{W&&W.webcrypto&&typeof globalThis!="undefined"&&typeof globalThis.crypto=="undefined"&&(globalThis.crypto=W.webcrypto)}catch(e){console.warn("Failed to polyfill webcrypto",e)}function je(){var r;let e=[le({padding:32,nameBrackets:!1})],t=(r=process.env.ZEED_LOG)!=null?r:process.env.LOG;t&&e.unshift(V(P(t))),v.setHandlers(e)}l(je,"setupLogContextNode");je();export{me as a,de as b,P as c,Ie as d,Q as e,V as f,Ne as g,H as h,X as i,C as j,Fe as k,E as l,oe as m,ke as n,le as o};
7
+ //# sourceMappingURL=chunk-FRS5X2RR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node/env.ts","../src/node/filestorage.ts","../src/node/log-file.ts","../src/node/log-util.ts","../src/node/log-node.ts","../src/node/crypto.ts","../src/node/log-context-node.ts"],"sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n// Adopted from https://github.com/motdotla/dotenv BSD-2\n\nimport { LogLevel } from \"../common/log-base\"\nimport { Logger } from \"../common/log\"\n\nimport fs from \"fs\"\nimport { resolve } from \"path\"\n\nconst log = Logger(\"zeed:env\")\n\nconst NEWLINE = \"\\n\"\nconst RE_INI_KEY_VAL = /^\\s*([\\w_.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\ntype csvOptions = {\n /** @deprecated will probably be replaced by logLevel */\n debug?: boolean\n path?: string\n filename?: string\n encoding?: BufferEncoding\n prefix?: string\n env?: Record<string, string>\n}\n\n// Parses src into an Object\nfunction parse(src: string, options: csvOptions = {}) {\n let obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n src\n .toString()\n .split(NEWLINES_MATCH)\n .forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n\n // log.debug(\"keyValueArr\", keyValueArr)\n\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = keyValueArr[2] || \"\"\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n obj[key] = val\n } else {\n log.debug(\n `did not match key and value when parsing line ${idx + 1}: ${line}`\n )\n }\n })\n\n // log.debug(\"obj\", obj)\n return obj\n}\n\n/**\n * Return a path relative to the current working directory\n */\nexport function stringToPath(\n value?: string,\n defaultValue: string = \".\"\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = \"\"): string {\n if (value == null) value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\n// Populates process.env from .env file\nexport function setupEnv(options: csvOptions = {}) {\n const dotenvPath: string =\n options?.path ?? toPath(options?.filename ?? \".env\")\n const encoding: BufferEncoding = options?.encoding ?? \"utf8\"\n const debug = options?.debug || false\n\n if (debug !== true) log.level = LogLevel.off\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsedEnv = fs.existsSync(dotenvPath)\n ? parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n : {}\n const parsedEnvLocal = fs.existsSync(dotenvPath + \".local\")\n ? parse(fs.readFileSync(dotenvPath + \".local\", { encoding }), { debug })\n : {}\n\n const parsed: Record<string, string> = Object.assign(\n {},\n parsedEnv,\n parsedEnvLocal\n )\n let env = options?.env ?? process.env\n\n Object.entries(parsed).forEach(([key, value]) => {\n if (typeof options?.prefix === \"string\") {\n key = options?.prefix + key\n }\n if (!Object.prototype.hasOwnProperty.call(env, key)) {\n if (value != null) {\n log.info(`set env.${key} = ${value}`)\n env[key] = value\n }\n } else {\n log.debug(`\"${key}\" is already defined and will not be overwritten`)\n }\n })\n return { parsed }\n } catch (e) {\n log.error(e)\n return { error: e }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport {\n mkdirSync,\n readdirSync,\n readFileSync,\n rmSync,\n unlinkSync,\n writeFileSync,\n} from \"fs\"\nimport { dirname, resolve } from \"path\"\nimport { toValidFilename } from \"../common/data/path\"\nimport { cloneObject } from \"../common/data/utils\"\nimport { Logger } from \"../common/log\"\nimport { Json, ObjectStorage } from \"../common/types\"\n\nconst log = Logger(\"zeed:filestorage\")\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty: boolean = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path || \".fileStorage\")\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? \".json\"\n\n if (opt.extension && !this.extension.startsWith(\".\")) {\n this.extension = \".\" + this.extension\n }\n this.extensionLength = this.extension.length\n\n this.objectToString =\n opt.objectToString ??\n ((data: any): string => {\n return this.pretty\n ? JSON.stringify(data, null, 2)\n : JSON.stringify(data)\n })\n\n this.objectFromString =\n opt.objectFromString ??\n ((data: string) => {\n try {\n return JSON.parse(data)\n } catch (err) {\n log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, \"utf8\")\n } catch (err) {\n log.error(\"setItem error\", err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): Buffer {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n let value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null) return\n\n if (value != null) {\n return cloneObject(value) // this.objectFromString(value)\n }\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, \"utf8\")\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n } catch (err) {\n log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1) {\n this.fileKeys.splice(index, 1)\n }\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n } catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys =\n readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n (item) =>\n !item.isDirectory() && item.name.endsWith(this.extension)\n )\n .map((item) => item.name.slice(0, -this.extensionLength)) || []\n } catch (err) {}\n }\n let keys = [...(this.fileKeys || [])]\n for (let key of Object.keys(this.store)) {\n if (!keys.includes(key)) {\n keys.push(key)\n }\n }\n keys.sort()\n return keys\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { createWriteStream, mkdirSync } from \"fs\"\nimport { dirname, resolve } from \"path\"\nimport { renderMessages } from \"../common/data/convert\"\nimport { LogHandlerOptions, LogLevel, LogMessage } from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\n\nlet namespaces: Record<string, any> = {}\n\nexport function LoggerFileHandler(path: string, opt: LogHandlerOptions = {}) {\n const { level = LogLevel.all, filter = \"*\" } = opt\n path = resolve(process.cwd(), path)\n mkdirSync(dirname(path), { recursive: true })\n var stream = createWriteStream(path, { flags: \"a\" })\n // stream.end()\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 time = new Date().toISOString()\n let name = msg.name || \"\"\n let ninfo = namespaces[name || \"\"]\n if (ninfo == null) {\n namespaces[name] = ninfo\n }\n\n let args: string[] = [\n `[${name || \"*\"}]`,\n renderMessages(msg.messages, { pretty: false }),\n ]\n\n function write(...args: string[]): void {\n stream.write(args.join(\"\\t\") + \"\\n\")\n }\n\n switch (msg.level) {\n case LogLevel.info:\n write(time, `I|* `, ...args)\n break\n case LogLevel.warn:\n write(time, `W|** `, ...args)\n break\n case LogLevel.error:\n write(time, `E|***`, ...args)\n break\n default:\n write(time, `D| `, ...args)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { resolve } from \"path\"\n\nexport function getStackLlocationList(stack: string): any[] {\n if (typeof stack !== \"string\") return []\n // console.log(\"stack\", stack)\n return (\n stack\n ?.split(\"\\n\")\n ?.map((rawLine) => {\n let m = rawLine.match(/^\\s+at.*(\\((.*)\\)|file:\\/\\/(.*)$)/)\n if (m) {\n let line = m[3] || m[2]\n if (line.endsWith(\")\")) line = line.slice(0, -1)\n return line\n }\n })\n ?.filter((v) => v != null) || []\n )\n}\n\nconst cwd = resolve(process.cwd())\nconst home = process.env?.HOME ? resolve(process.env?.HOME) : \"\"\n// console.log(`cwd = ${cwd}, home = ${home}}`)\n\nfunction pathStripCwd(path: string) {\n // console.log(\">\", path)\n\n if (path.includes(\"/node_modules/\")) {\n return \"\"\n }\n\n const fileURL = \"file://\"\n if (path.startsWith(fileURL)) {\n return path.substr(fileURL.length)\n }\n\n if (cwd && path.startsWith(cwd)) {\n return path.substr(cwd.length + 1)\n }\n\n if (home && path.startsWith(home)) {\n path = \"~/\" + path.substr(home.length + 1)\n }\n\n return path\n}\n\nfunction extractFileInfo(stackLine: string): string {\n let m = stackLine.match(/^\\s*at.*(\\((.*)\\)|file:\\/\\/(.*)$)/)\n if (m) {\n let line = m[3] || m[2]\n if (line.endsWith(\")\")) line = line.slice(0, -1)\n return line\n }\n return \"\"\n}\n\n/**\n * Get the source code location of the caller\n * https://stackoverflow.com/a/47296370/140927\n *\n * @param level Number of levels to go down the stack trace\n * @param stripCwd Strip the current working directory, only reasonable for Node.js environment\n * @returns\n */\nexport function getSourceLocation(level = 2, stripCwd = true): string {\n let stack = new Error().stack || \"\"\n let line: string | undefined = getStackLlocationList(stack)?.[level]\n if (line && stripCwd) {\n line = pathStripCwd(line)\n }\n return line || \"\"\n}\n\nexport function getStack(): string {\n return new Error().stack || \"\"\n}\n\nexport function getSourceLocationByPrecedingPattern(\n patterns: string[],\n stripCwd = true\n) {\n let line = \"\"\n let stack = new Error().stack || \"\"\n if (typeof stack === \"string\") {\n const lines = stack.split(\"\\n\").map((l) => l.trim())\n // console.log(lines)\n const index = lines.findIndex((l) => patterns.some((p) => l.startsWith(p)))\n line = lines[index + 1]\n if (line) {\n line = extractFileInfo(line)\n }\n if (line && stripCwd) {\n line = pathStripCwd(line)\n }\n }\n return line\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport tty from \"tty\"\nimport { renderMessages } from \"../common/data/convert\"\nimport {\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\nimport {\n getSourceLocation,\n getSourceLocationByPrecedingPattern,\n getStack,\n} from \"./log-util\"\nimport { formatMilliseconds, getTimestamp } from \"../common/time\"\n\nexport function isTTY(): boolean {\n try {\n return tty.isatty(process.stdout.fd)\n } catch (err) {}\n return false\n}\n\nconst colors = [6, 2, 3, 4, 5, 1]\n\nfunction 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\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nconst useColors = tty.isatty(process.stderr.fd)\n\nfunction log(...args: any[]) {\n return process.stderr.write(renderMessages(args) + \"\\n\")\n}\n\n// export const BOLD = Symbol()\n// export const UNBOLD = Symbol()\n// export const BLUE = Symbol()\n// export const GREY = Symbol()\n// export const GREEN = Symbol()\n// export const RED = Symbol()\n// export const PURPLE = Symbol()\n// export const ORANGE = Symbol()\n// export const UNCOLOR = Symbol()\n\n// const _browserStyleMap = {\n// [BOLD]: pair.create(\"font-weight\", \"bold\"),\n// [UNBOLD]: pair.create(\"font-weight\", \"normal\"),\n// [BLUE]: pair.create(\"color\", \"blue\"),\n// [GREEN]: pair.create(\"color\", \"green\"),\n// [GREY]: pair.create(\"color\", \"grey\"),\n// [RED]: pair.create(\"color\", \"red\"),\n// [PURPLE]: pair.create(\"color\", \"purple\"),\n// [ORANGE]: pair.create(\"color\", \"orange\"), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n// [UNCOLOR]: pair.create(\"color\", \"black\"),\n// }\n\nconst TTY_STYLE = {\n BOLD: \"\\u001b[1m\",\n UNBOLD: \"\\u001b[2m\",\n RED: \"\\u001b[31m\",\n GREEN: \"\\u001b[32m\",\n BLUE: \"\\u001b[34m\",\n PURPLE: \"\\u001b[35m\",\n GRAY: \"\\u001b[37m\",\n ORANGE: \"\\u001b[38;5;208m\",\n UNCOLOR: \"\\u001b[0m\",\n}\n\nenum COLOR {\n RED = 1,\n GREEN = 2,\n BLUE = 4,\n PURPLE = 5,\n GRAY = 7,\n ORANGE = 8,\n}\n\nconst colorEnd = \"\\u001B[0m\"\n\nexport function colorString(value: string, colorCode: number) {\n const colorStart =\n colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : \"\\u001B[3\" + (colorCode < 8 ? colorCode : \"8;5;\" + colorCode) + \"m\"\n return `${colorStart}${value}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold: boolean = true\n) {\n return list.map((value) => {\n if (typeof value !== \"string\") return value\n let start = style\n let end = colorEnd\n if (bold) {\n start = `${TTY_STYLE.BOLD}${start}`\n end = `${end}${TTY_STYLE.BOLD}`\n }\n return `${start}${value}${end}`\n })\n}\n\nexport const loggerStackTraceDebug =\n \"loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485\"\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n level = undefined,\n filter = undefined,\n colors = isTTY(),\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = true,\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 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\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0) {\n displayName = displayName.padStart(padding, \" \")\n }\n\n if (fill > 0) {\n displayName = displayName.padEnd(fill, \" \")\n }\n\n if (colors && useColors) {\n const c = ninfo.color\n args = [colorString(displayName, c) + ` | `] // nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n if (msg.level === LogLevel.warn) {\n args.push(...colorStringList(msg.messages, TTY_STYLE.ORANGE))\n } else if (msg.level === LogLevel.error) {\n args.push(...colorStringList(msg.messages, TTY_STYLE.RED))\n } else {\n args.push(...msg.messages)\n }\n args.push(colorString(`+${diff}`, c))\n } else {\n args = [displayName, ...msg.messages]\n args.push(`+${diff}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n console.log(getStack())\n }\n\n if (stack) {\n let line: string = \"\"\n if (typeof stack === \"boolean\") {\n line = getSourceLocationByPrecedingPattern(\n [\"at Function.\", \"at null.log (\", \"at log (\"],\n true\n )\n if (!line) {\n line = getSourceLocation(0, true)\n }\n } else {\n const depth = typeof stack === \"number\" ? stack : 3\n line = getSourceLocation(depth, true)\n }\n if (line) {\n args.push(colorString(`(${line})`, COLOR.GRAY))\n }\n }\n switch (msg.level) {\n case LogLevel.info:\n if (levelHelper) args[0] = `I|* ` + args[0]\n log(...args)\n break\n case LogLevel.warn:\n if (levelHelper)\n args[0] =\n (colors && useColors\n ? colorString(`W|** `, COLOR.ORANGE)\n : `W|** `) + args[0]\n log(...args)\n break\n case LogLevel.error:\n if (levelHelper)\n args[0] =\n (colors && useColors\n ? colorString(`E|*** `, COLOR.RED)\n : `E|*** `) + args[0]\n log(...args)\n break\n default:\n if (levelHelper) args[0] = `D| ` + args[0]\n log(...args)\n break\n }\n }\n}\n","// https://nodejs.org/api/webcrypto.html\nimport nodeCrypto from \"crypto\"\n\nexport {}\n\ndeclare module NodeJS {\n interface Global {\n crypto: Crypto\n }\n}\n\ntry {\n if (\n nodeCrypto &&\n nodeCrypto.webcrypto &&\n typeof globalThis !== \"undefined\" &&\n typeof globalThis.crypto === \"undefined\"\n ) {\n // @ts-ignore\n globalThis.crypto = nodeCrypto.webcrypto\n }\n} catch (err) {\n console.warn(\"Failed to polyfill webcrypto\", err)\n}\n","import { Logger } from \"../common/log\"\nimport { toPath } from \"./env\"\nimport { LoggerFileHandler } from \"./log-file\"\nimport { LoggerNodeHandler } from \"./log-node\"\n\nfunction setupLogContextNode() {\n let handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n let logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n if (logFilePath) {\n handlers.unshift(LoggerFileHandler(toPath(logFilePath)))\n }\n\n Logger.setHandlers(handlers)\n}\n\nsetupLogContextNode()\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/node/env.ts","../src/node/filestorage.ts","../src/node/log-file.ts","../src/node/log-util.ts","../src/node/log-node.ts","../src/node/crypto.ts","../src/node/log-context-node.ts"],"sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n// Adopted from https://github.com/motdotla/dotenv BSD-2\n\nimport { LogLevel } from \"../common/log-base\"\nimport { Logger } from \"../common/log\"\n\nimport fs from \"fs\"\nimport { resolve } from \"path\"\n\nconst log = Logger(\"zeed:env\")\n\nconst NEWLINE = \"\\n\"\nconst RE_INI_KEY_VAL = /^\\s*([\\w_.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\ntype csvOptions = {\n /** @deprecated will probably be replaced by logLevel */\n debug?: boolean\n path?: string\n filename?: string\n encoding?: BufferEncoding\n prefix?: string\n env?: Record<string, string>\n}\n\n// Parses src into an Object\nfunction parse(src: string, options: csvOptions = {}) {\n let obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n src\n .toString()\n .split(NEWLINES_MATCH)\n .forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n\n // log.debug(\"keyValueArr\", keyValueArr)\n\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = keyValueArr[2] || \"\"\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n obj[key] = val\n } else {\n log.debug(\n `did not match key and value when parsing line ${idx + 1}: ${line}`\n )\n }\n })\n\n // log.debug(\"obj\", obj)\n return obj\n}\n\n/**\n * Return a path relative to the current working directory\n */\nexport function stringToPath(\n value?: string,\n defaultValue: string = \".\"\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = \"\"): string {\n if (value == null) value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\n// Populates process.env from .env file\nexport function setupEnv(options: csvOptions = {}) {\n const dotenvPath: string =\n options?.path ?? toPath(options?.filename ?? \".env\")\n const encoding: BufferEncoding = options?.encoding ?? \"utf8\"\n const debug = options?.debug || false\n\n if (debug !== true) log.level = LogLevel.off\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsedEnv = fs.existsSync(dotenvPath)\n ? parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n : {}\n const parsedEnvLocal = fs.existsSync(dotenvPath + \".local\")\n ? parse(fs.readFileSync(dotenvPath + \".local\", { encoding }), { debug })\n : {}\n\n const parsed: Record<string, string> = Object.assign(\n {},\n parsedEnv,\n parsedEnvLocal\n )\n let env = options?.env ?? process.env\n\n Object.entries(parsed).forEach(([key, value]) => {\n if (typeof options?.prefix === \"string\") {\n key = options?.prefix + key\n }\n if (!Object.prototype.hasOwnProperty.call(env, key)) {\n if (value != null) {\n log.info(`set env.${key} = ${value}`)\n env[key] = value\n }\n } else {\n log.debug(`\"${key}\" is already defined and will not be overwritten`)\n }\n })\n return { parsed }\n } catch (e) {\n log.error(e)\n return { error: e }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport {\n mkdirSync,\n readdirSync,\n readFileSync,\n rmSync,\n unlinkSync,\n writeFileSync,\n} from \"fs\"\nimport { dirname, resolve } from \"path\"\nimport { toValidFilename } from \"../common/data/path\"\nimport { cloneObject } from \"../common/data/utils\"\nimport { Logger } from \"../common/log\"\nimport { Json, ObjectStorage } from \"../common/types\"\n\nconst log = Logger(\"zeed:filestorage\")\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty: boolean = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path || \".fileStorage\")\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? \".json\"\n\n if (opt.extension && !this.extension.startsWith(\".\")) {\n this.extension = \".\" + this.extension\n }\n this.extensionLength = this.extension.length\n\n this.objectToString =\n opt.objectToString ??\n ((data: any): string => {\n return this.pretty\n ? JSON.stringify(data, null, 2)\n : JSON.stringify(data)\n })\n\n this.objectFromString =\n opt.objectFromString ??\n ((data: string) => {\n try {\n return JSON.parse(data)\n } catch (err) {\n log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, \"utf8\")\n } catch (err) {\n log.error(\"setItem error\", err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): Buffer {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n let value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null) return\n\n if (value != null) {\n return cloneObject(value) // this.objectFromString(value)\n }\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, \"utf8\")\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n } catch (err) {\n log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1) {\n this.fileKeys.splice(index, 1)\n }\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n } catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys =\n readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n (item) =>\n !item.isDirectory() && item.name.endsWith(this.extension)\n )\n .map((item) => item.name.slice(0, -this.extensionLength)) || []\n } catch (err) {}\n }\n let keys = [...(this.fileKeys || [])]\n for (let key of Object.keys(this.store)) {\n if (!keys.includes(key)) {\n keys.push(key)\n }\n }\n keys.sort()\n return keys\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { createWriteStream, mkdirSync } from \"fs\"\nimport { dirname, resolve } from \"path\"\nimport { renderMessages } from \"../common/data/convert\"\nimport { LogHandlerOptions, LogLevel, LogMessage } from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\n\nlet namespaces: Record<string, any> = {}\n\nexport function LoggerFileHandler(path: string, opt: LogHandlerOptions = {}) {\n const { level = LogLevel.all, filter = \"*\" } = opt\n path = resolve(process.cwd(), path)\n mkdirSync(dirname(path), { recursive: true })\n var stream = createWriteStream(path, { flags: \"a\" })\n // stream.end()\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 time = new Date().toISOString()\n let name = msg.name || \"\"\n let ninfo = namespaces[name || \"\"]\n if (ninfo == null) {\n namespaces[name] = ninfo\n }\n\n let args: string[] = [\n `[${name || \"*\"}]`,\n renderMessages(msg.messages, { pretty: false }),\n ]\n\n function write(...args: string[]): void {\n stream.write(args.join(\"\\t\") + \"\\n\")\n }\n\n switch (msg.level) {\n case LogLevel.info:\n write(time, `I|* `, ...args)\n break\n case LogLevel.warn:\n write(time, `W|** `, ...args)\n break\n case LogLevel.error:\n write(time, `E|***`, ...args)\n break\n default:\n write(time, `D| `, ...args)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { resolve } from \"path\"\n\nexport function getStackLlocationList(stack: string): any[] {\n if (typeof stack !== \"string\") return []\n // console.log(\"stack\", stack)\n return (\n stack\n ?.split(\"\\n\")\n ?.map((rawLine) => {\n let m = rawLine.match(/^\\s+at.*(\\((.*)\\)|file:\\/\\/(.*)$)/)\n if (m) {\n let line = m[3] || m[2]\n if (line.endsWith(\")\")) line = line.slice(0, -1)\n return line\n }\n })\n ?.filter((v) => v != null) || []\n )\n}\n\nconst cwd = resolve(process.cwd())\nconst home = process.env?.HOME ? resolve(process.env?.HOME) : \"\"\n// console.log(`cwd = ${cwd}, home = ${home}}`)\n\nfunction pathStripCwd(path: string) {\n // console.log(\">\", path)\n\n if (path.includes(\"/node_modules/\")) {\n return \"\"\n }\n\n const fileURL = \"file://\"\n if (path.startsWith(fileURL)) {\n return path.substr(fileURL.length)\n }\n\n if (cwd && path.startsWith(cwd)) {\n return path.substr(cwd.length + 1)\n }\n\n if (home && path.startsWith(home)) {\n path = \"~/\" + path.substr(home.length + 1)\n }\n\n return path\n}\n\nfunction extractFileInfo(stackLine: string): string {\n let m = stackLine.match(/^\\s*at.*(\\((.*)\\)|file:\\/\\/(.*)$)/)\n if (m) {\n let line = m[3] || m[2]\n if (line.endsWith(\")\")) line = line.slice(0, -1)\n return line\n }\n return \"\"\n}\n\n/**\n * Get the source code location of the caller\n * https://stackoverflow.com/a/47296370/140927\n *\n * @param level Number of levels to go down the stack trace\n * @param stripCwd Strip the current working directory, only reasonable for Node.js environment\n * @returns\n */\nexport function getSourceLocation(level = 2, stripCwd = true): string {\n let stack = new Error().stack || \"\"\n let line: string | undefined = getStackLlocationList(stack)?.[level]\n if (line && stripCwd) {\n line = pathStripCwd(line)\n }\n return line || \"\"\n}\n\nexport function getStack(): string {\n return new Error().stack || \"\"\n}\n\nexport function getSourceLocationByPrecedingPattern(\n patterns: string[],\n stripCwd = true\n) {\n let line = \"\"\n let stack = new Error().stack || \"\"\n if (typeof stack === \"string\") {\n const lines = stack.split(\"\\n\").map((l) => l.trim())\n // console.log(lines)\n const index = lines.findIndex((l) => patterns.some((p) => l.startsWith(p)))\n line = lines[index + 1]\n if (line) {\n line = extractFileInfo(line)\n }\n if (line && stripCwd) {\n line = pathStripCwd(line)\n }\n }\n return line\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport tty from \"tty\"\nimport { renderMessages } from \"../common/data/convert\"\nimport {\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\nimport {\n getSourceLocation,\n getSourceLocationByPrecedingPattern,\n getStack,\n} from \"./log-util\"\nimport { formatMilliseconds, getTimestamp } from \"../common/time\"\n\nexport function isTTY(): boolean {\n try {\n return tty.isatty(process.stdout.fd)\n } catch (err) {}\n return false\n}\n\nconst colors = [6, 2, 3, 4, 5, 1]\n\nfunction 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\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nconst useColors = tty.isatty(process.stderr.fd)\n\nfunction log(...args: any[]) {\n return process.stderr.write(renderMessages(args) + \"\\n\")\n}\n\n// export const BOLD = Symbol()\n// export const UNBOLD = Symbol()\n// export const BLUE = Symbol()\n// export const GREY = Symbol()\n// export const GREEN = Symbol()\n// export const RED = Symbol()\n// export const PURPLE = Symbol()\n// export const ORANGE = Symbol()\n// export const UNCOLOR = Symbol()\n\n// const _browserStyleMap = {\n// [BOLD]: pair.create(\"font-weight\", \"bold\"),\n// [UNBOLD]: pair.create(\"font-weight\", \"normal\"),\n// [BLUE]: pair.create(\"color\", \"blue\"),\n// [GREEN]: pair.create(\"color\", \"green\"),\n// [GREY]: pair.create(\"color\", \"grey\"),\n// [RED]: pair.create(\"color\", \"red\"),\n// [PURPLE]: pair.create(\"color\", \"purple\"),\n// [ORANGE]: pair.create(\"color\", \"orange\"), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n// [UNCOLOR]: pair.create(\"color\", \"black\"),\n// }\n\nconst TTY_STYLE = {\n BOLD: \"\\u001b[1m\",\n UNBOLD: \"\\u001b[2m\",\n RED: \"\\u001b[31m\",\n GREEN: \"\\u001b[32m\",\n BLUE: \"\\u001b[34m\",\n PURPLE: \"\\u001b[35m\",\n GRAY: \"\\u001b[37m\",\n ORANGE: \"\\u001b[38;5;208m\",\n UNCOLOR: \"\\u001b[0m\",\n}\n\nenum COLOR {\n RED = 1,\n GREEN = 2,\n BLUE = 4,\n PURPLE = 5,\n GRAY = 7,\n ORANGE = 8,\n}\n\nconst colorEnd = \"\\u001B[0m\"\n\nexport function colorString(value: string, colorCode: number) {\n const colorStart =\n colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : \"\\u001B[3\" + (colorCode < 8 ? colorCode : \"8;5;\" + colorCode) + \"m\"\n return `${colorStart}${value}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold: boolean = true\n) {\n return list.map((value) => {\n if (typeof value !== \"string\") return value\n let start = style\n let end = colorEnd\n if (bold) {\n start = `${TTY_STYLE.BOLD}${start}`\n end = `${end}${TTY_STYLE.BOLD}`\n }\n return `${start}${value}${end}`\n })\n}\n\nexport const loggerStackTraceDebug =\n \"loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485\"\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n level = undefined,\n filter = undefined,\n colors = isTTY(),\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = true,\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 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\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0) {\n displayName = displayName.padStart(padding, \" \")\n }\n\n if (fill > 0) {\n displayName = displayName.padEnd(fill, \" \")\n }\n\n if (colors && useColors) {\n const c = ninfo.color\n args = [colorString(displayName, c) + ` | `] // nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n if (msg.level === LogLevel.warn) {\n args.push(...colorStringList(msg.messages, TTY_STYLE.ORANGE))\n } else if (msg.level === LogLevel.error) {\n args.push(...colorStringList(msg.messages, TTY_STYLE.RED))\n } else {\n args.push(...msg.messages)\n }\n args.push(colorString(`+${diff}`, c))\n } else {\n args = [displayName, ...msg.messages]\n args.push(`+${diff}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n console.log(getStack())\n }\n\n if (stack) {\n let line: string = \"\"\n if (typeof stack === \"boolean\") {\n line = getSourceLocationByPrecedingPattern(\n [\"at Function.\", \"at null.log (\", \"at log (\"],\n true\n )\n if (!line) {\n line = getSourceLocation(0, true)\n }\n } else {\n const depth = typeof stack === \"number\" ? stack : 3\n line = getSourceLocation(depth, true)\n }\n if (line) {\n args.push(colorString(`(${line})`, COLOR.GRAY))\n }\n }\n switch (msg.level) {\n case LogLevel.info:\n if (levelHelper) args[0] = `I|* ` + args[0]\n log(...args)\n break\n case LogLevel.warn:\n if (levelHelper)\n args[0] =\n (colors && useColors\n ? colorString(`W|** `, COLOR.ORANGE)\n : `W|** `) + args[0]\n log(...args)\n break\n case LogLevel.error:\n if (levelHelper)\n args[0] =\n (colors && useColors\n ? colorString(`E|*** `, COLOR.RED)\n : `E|*** `) + args[0]\n log(...args)\n break\n default:\n if (levelHelper) args[0] = `D| ` + args[0]\n log(...args)\n break\n }\n }\n}\n","// https://nodejs.org/api/webcrypto.html\nimport nodeCrypto from \"crypto\"\n\nexport {}\n\ndeclare module NodeJS {\n interface Global {\n crypto: Crypto\n }\n}\n\ntry {\n if (\n nodeCrypto &&\n nodeCrypto.webcrypto &&\n typeof globalThis !== \"undefined\" &&\n typeof globalThis.crypto === \"undefined\"\n ) {\n // @ts-ignore\n globalThis.crypto = nodeCrypto.webcrypto\n }\n} catch (err) {\n console.warn(\"Failed to polyfill webcrypto\", err)\n}\n","import { Logger } from \"../common/log\"\nimport { toPath } from \"./env\"\nimport { LoggerFileHandler } from \"./log-file\"\nimport { LoggerNodeHandler } from \"./log-node\"\n\nfunction setupLogContextNode() {\n let handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n let logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n if (logFilePath) {\n handlers.unshift(LoggerFileHandler(toPath(logFilePath)))\n }\n\n Logger.setHandlers(handlers)\n}\n\nsetupLogContextNode()\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ import{a as z,b as F,c as I,d as B}from"./chunk-2MNLLNRH.js";import{cc as A}from"./chunk-PSHR634P.js";import{c as l,q as H,r as O,x as d,y as k,z as T}from"./chunk-YBNWDOXD.js";var{error:M}=d("zeed:base64");function K(h){try{let i="=".repeat((4-h.length%4)%4),m=(h+i).replace(/-/g,"+").replace(/_/g,"/"),p=window.atob(m),c=new Uint8Array(p.length);for(let s=0;s<p.length;++s)c[s]=p.charCodeAt(s);return c}catch(i){M(i,h)}}l(K,"urlBase64ToUint8Array");var R=d("zeed:gravatar");function W(h,b){function m(a,o){var e=a[0],r=a[1],n=a[2],t=a[3];e=c(e,r,n,t,o[0],7,-680876936),t=c(t,e,r,n,o[1],12,-389564586),n=c(n,t,e,r,o[2],17,606105819),r=c(r,n,t,e,o[3],22,-1044525330),e=c(e,r,n,t,o[4],7,-176418897),t=c(t,e,r,n,o[5],12,1200080426),n=c(n,t,e,r,o[6],17,-1473231341),r=c(r,n,t,e,o[7],22,-45705983),e=c(e,r,n,t,o[8],7,1770035416),t=c(t,e,r,n,o[9],12,-1958414417),n=c(n,t,e,r,o[10],17,-42063),r=c(r,n,t,e,o[11],22,-1990404162),e=c(e,r,n,t,o[12],7,1804603682),t=c(t,e,r,n,o[13],12,-40341101),n=c(n,t,e,r,o[14],17,-1502002290),r=c(r,n,t,e,o[15],22,1236535329),e=s(e,r,n,t,o[1],5,-165796510),t=s(t,e,r,n,o[6],9,-1069501632),n=s(n,t,e,r,o[11],14,643717713),r=s(r,n,t,e,o[0],20,-373897302),e=s(e,r,n,t,o[5],5,-701558691),t=s(t,e,r,n,o[10],9,38016083),n=s(n,t,e,r,o[15],14,-660478335),r=s(r,n,t,e,o[4],20,-405537848),e=s(e,r,n,t,o[9],5,568446438),t=s(t,e,r,n,o[14],9,-1019803690),n=s(n,t,e,r,o[3],14,-187363961),r=s(r,n,t,e,o[8],20,1163531501),e=s(e,r,n,t,o[13],5,-1444681467),t=s(t,e,r,n,o[2],9,-51403784),n=s(n,t,e,r,o[7],14,1735328473),r=s(r,n,t,e,o[12],20,-1926607734),e=f(e,r,n,t,o[5],4,-378558),t=f(t,e,r,n,o[8],11,-2022574463),n=f(n,t,e,r,o[11],16,1839030562),r=f(r,n,t,e,o[14],23,-35309556),e=f(e,r,n,t,o[1],4,-1530992060),t=f(t,e,r,n,o[4],11,1272893353),n=f(n,t,e,r,o[7],16,-155497632),r=f(r,n,t,e,o[10],23,-1094730640),e=f(e,r,n,t,o[13],4,681279174),t=f(t,e,r,n,o[0],11,-358537222),n=f(n,t,e,r,o[3],16,-722521979),r=f(r,n,t,e,o[6],23,76029189),e=f(e,r,n,t,o[9],4,-640364487),t=f(t,e,r,n,o[12],11,-421815835),n=f(n,t,e,r,o[15],16,530742520),r=f(r,n,t,e,o[2],23,-995338651),e=u(e,r,n,t,o[0],6,-198630844),t=u(t,e,r,n,o[7],10,1126891415),n=u(n,t,e,r,o[14],15,-1416354905),r=u(r,n,t,e,o[5],21,-57434055),e=u(e,r,n,t,o[12],6,1700485571),t=u(t,e,r,n,o[3],10,-1894986606),n=u(n,t,e,r,o[10],15,-1051523),r=u(r,n,t,e,o[1],21,-2054922799),e=u(e,r,n,t,o[8],6,1873313359),t=u(t,e,r,n,o[15],10,-30611744),n=u(n,t,e,r,o[6],15,-1560198380),r=u(r,n,t,e,o[13],21,1309151649),e=u(e,r,n,t,o[4],6,-145523070),t=u(t,e,r,n,o[11],10,-1120210379),n=u(n,t,e,r,o[2],15,718787259),r=u(r,n,t,e,o[9],21,-343485551),a[0]=y(e,a[0]),a[1]=y(r,a[1]),a[2]=y(n,a[2]),a[3]=y(t,a[3])}l(m,"md5cycle");function p(a,o,e,r,n,t){return o=y(y(o,a),y(r,t)),y(o<<n|o>>>32-n,e)}l(p,"cmn");function c(a,o,e,r,n,t,v){return p(o&e|~o&r,a,o,n,t,v)}l(c,"ff");function s(a,o,e,r,n,t,v){return p(o&r|e&~r,a,o,n,t,v)}l(s,"gg");function f(a,o,e,r,n,t,v){return p(o^e^r,a,o,n,t,v)}l(f,"hh");function u(a,o,e,r,n,t,v){return p(e^(o|~r),a,o,n,t,v)}l(u,"ii");function x(a){var o=a.length,e=[1732584193,-271733879,-1732584194,271733878],r;for(r=64;r<=a.length;r+=64)m(e,j(a.substring(r-64,r)));a=a.substring(r-64);var n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(r=0;r<a.length;r++)n[r>>2]|=a.charCodeAt(r)<<(r%4<<3);if(n[r>>2]|=128<<(r%4<<3),r>55)for(m(e,n),r=0;r<16;r++)n[r]=0;return n[14]=o*8,m(e,n),e}l(x,"md51");function j(a){var o=[],e;for(e=0;e<64;e+=4)o[e>>2]=a.charCodeAt(e)+(a.charCodeAt(e+1)<<8)+(a.charCodeAt(e+2)<<16)+(a.charCodeAt(e+3)<<24);return o}l(j,"md5blk");function g(a){for(var o="",e=0;e<4;e++)o+=$[a>>e*8+4&15]+$[a>>e*8&15];return o}l(g,"rhex");function D(a){for(var o=0;o<a.length;o++)a[o]=g(a[o]);return a.join("")}l(D,"hex");function E(a){return D(x(a))}l(E,"md5");function y(a,o){return a+o&4294967295}l(y,"add32");var $="0123456789abcdef".split(""),b=b||{},C,w=[];return b={size:b.size||"50",rating:b.rating||"g",secure:b.secure||location.protocol==="https:",backup:b.backup||""},h=h.trim().toLowerCase(),C=b.secure?"https://secure.gravatar.com/avatar/":"http://www.gravatar.com/avatar/",b.rating&&w.push("r="+b.rating),b.backup&&w.push("d="+encodeURIComponent(b.backup)),b.size&&w.push("s="+b.size),C+E(h)+"?"+w.join("&")}l(W,"gravatar");function V(h,i=""){try{return W(h,{size:256,backup:"monsterid",secure:!0})}catch{return R("Gravatar issue: Did not find an image for "+h),i}}l(V,"gravatarURLByEmail");var N=d("zeed:localstorage"),J=class{constructor(i){this.pretty=!1;var m,p;N.assert(i.name,"name required"),this.name=i.name,this.prefix=`${i.name}$`,this.objectToString=(m=i.objectToString)!=null?m:c=>this.pretty?JSON.stringify(c,null,2):JSON.stringify(c),this.objectFromString=(p=i.objectFromString)!=null?p:c=>{try{return JSON.parse(c)}catch(s){N.warn(`LocalStorage parse error '${s}' in`,c)}}}setItem(i,m){let p=this.objectToString(m);localStorage.setItem(`${this.prefix}${i}`,p)}getItem(i){let m=localStorage.getItem(`${this.prefix}${i}`);if(m!=null)return this.objectFromString(m)}removeItem(i){localStorage.removeItem(`${this.prefix}${i}`)}clear(){Object.keys(localStorage).filter(i=>i.startsWith(this.prefix)).forEach(i=>{localStorage.removeItem(i)})}allKeys(){let i=this.prefix.length;return Object.keys(localStorage).filter(m=>m.startsWith(this.prefix)).map(m=>m.substr(i))}};l(J,"LocalStorage");var U={},_=k(),q=z();function cr(h,i={}){let{filter:m=void 0}=i,p=H(m),c=O(h);return s=>{if(!c(s.level)||!p(s.name))return;let f=k(),u=s.name||"",x=U[u||""];x==null&&(x={color:F(u)},U[u]=x);let j=T(f-_),g;switch(i.colors&&q?(g=i.nameBrackets?[`%c[${u}]`]:[`%c${u}`],g.push(`color:${x.color}`),g.push(...s.messages)):g=[u,...s.messages],g.push(`+${j}`),s.level){case 1:i.levelHelper&&(g[0]="I|* "+g[0]),console.info(...g);break;case 2:i.levelHelper&&(g[0]="W|** "+g[0]),console.warn(...g);break;case 3:i.levelHelper&&(g[0]="E|*** "+g[0]),console.error(...g);break;default:i.levelHelper&&(g[0]="D| "+g[0]),console.debug(...g);break}}}l(cr,"LoggerBrowserClassicHandler");A()&&(d.setHandlers([I()]),d.setFactory(B({})));export{K as a,V as b,J as c,cr as d};
2
+ //# sourceMappingURL=chunk-NBL7BZAW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser/base64.ts","../src/browser/gravatar.ts","../src/browser/localstorage.ts","../src/browser/log-browser-classic.ts","../src/browser/log-context-browser.ts"],"sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { Logger } from \"../common/log\"\n\nconst { error } = Logger(\"zeed:base64\")\n\nexport function urlBase64ToUint8Array(\n base64String: string\n): Uint8Array | undefined {\n try {\n let padding = \"=\".repeat((4 - (base64String.length % 4)) % 4)\n let base64 = (base64String + padding).replace(/-/g, \"+\").replace(/_/g, \"/\")\n\n let rawData = window.atob(base64)\n let outputArray = new Uint8Array(rawData.length)\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i)\n }\n return outputArray\n } catch (err) {\n error(err, base64String)\n }\n}\n","// MIT licensed\n// https://github.com/mazondo/gravatarjs/blob/master/gravatar.js\n// https://en.gravatar.com/site/implement/images/\n\nimport { Logger } from \"../common/log\"\n\nconst log = Logger(\"zeed:gravatar\")\n\nfunction gravatar(\n email: string,\n options: { size?: any; backup?: any; secure?: any; rating?: any }\n) {\n // using md5() from here: http://www.myersdaily.org/joseph/javascript/md5-text.html\n function md5cycle(e: any[], t: any[]) {\n var n = e[0],\n r = e[1],\n i = e[2],\n s = e[3]\n n = ff(n, r, i, s, t[0], 7, -680876936)\n s = ff(s, n, r, i, t[1], 12, -389564586)\n i = ff(i, s, n, r, t[2], 17, 606105819)\n r = ff(r, i, s, n, t[3], 22, -1044525330)\n n = ff(n, r, i, s, t[4], 7, -176418897)\n s = ff(s, n, r, i, t[5], 12, 1200080426)\n i = ff(i, s, n, r, t[6], 17, -1473231341)\n r = ff(r, i, s, n, t[7], 22, -45705983)\n n = ff(n, r, i, s, t[8], 7, 1770035416)\n s = ff(s, n, r, i, t[9], 12, -1958414417)\n i = ff(i, s, n, r, t[10], 17, -42063)\n r = ff(r, i, s, n, t[11], 22, -1990404162)\n n = ff(n, r, i, s, t[12], 7, 1804603682)\n s = ff(s, n, r, i, t[13], 12, -40341101)\n i = ff(i, s, n, r, t[14], 17, -1502002290)\n r = ff(r, i, s, n, t[15], 22, 1236535329)\n n = gg(n, r, i, s, t[1], 5, -165796510)\n s = gg(s, n, r, i, t[6], 9, -1069501632)\n i = gg(i, s, n, r, t[11], 14, 643717713)\n r = gg(r, i, s, n, t[0], 20, -373897302)\n n = gg(n, r, i, s, t[5], 5, -701558691)\n s = gg(s, n, r, i, t[10], 9, 38016083)\n i = gg(i, s, n, r, t[15], 14, -660478335)\n r = gg(r, i, s, n, t[4], 20, -405537848)\n n = gg(n, r, i, s, t[9], 5, 568446438)\n s = gg(s, n, r, i, t[14], 9, -1019803690)\n i = gg(i, s, n, r, t[3], 14, -187363961)\n r = gg(r, i, s, n, t[8], 20, 1163531501)\n n = gg(n, r, i, s, t[13], 5, -1444681467)\n s = gg(s, n, r, i, t[2], 9, -51403784)\n i = gg(i, s, n, r, t[7], 14, 1735328473)\n r = gg(r, i, s, n, t[12], 20, -1926607734)\n n = hh(n, r, i, s, t[5], 4, -378558)\n s = hh(s, n, r, i, t[8], 11, -2022574463)\n i = hh(i, s, n, r, t[11], 16, 1839030562)\n r = hh(r, i, s, n, t[14], 23, -35309556)\n n = hh(n, r, i, s, t[1], 4, -1530992060)\n s = hh(s, n, r, i, t[4], 11, 1272893353)\n i = hh(i, s, n, r, t[7], 16, -155497632)\n r = hh(r, i, s, n, t[10], 23, -1094730640)\n n = hh(n, r, i, s, t[13], 4, 681279174)\n s = hh(s, n, r, i, t[0], 11, -358537222)\n i = hh(i, s, n, r, t[3], 16, -722521979)\n r = hh(r, i, s, n, t[6], 23, 76029189)\n n = hh(n, r, i, s, t[9], 4, -640364487)\n s = hh(s, n, r, i, t[12], 11, -421815835)\n i = hh(i, s, n, r, t[15], 16, 530742520)\n r = hh(r, i, s, n, t[2], 23, -995338651)\n n = ii(n, r, i, s, t[0], 6, -198630844)\n s = ii(s, n, r, i, t[7], 10, 1126891415)\n i = ii(i, s, n, r, t[14], 15, -1416354905)\n r = ii(r, i, s, n, t[5], 21, -57434055)\n n = ii(n, r, i, s, t[12], 6, 1700485571)\n s = ii(s, n, r, i, t[3], 10, -1894986606)\n i = ii(i, s, n, r, t[10], 15, -1051523)\n r = ii(r, i, s, n, t[1], 21, -2054922799)\n n = ii(n, r, i, s, t[8], 6, 1873313359)\n s = ii(s, n, r, i, t[15], 10, -30611744)\n i = ii(i, s, n, r, t[6], 15, -1560198380)\n r = ii(r, i, s, n, t[13], 21, 1309151649)\n n = ii(n, r, i, s, t[4], 6, -145523070)\n s = ii(s, n, r, i, t[11], 10, -1120210379)\n i = ii(i, s, n, r, t[2], 15, 718787259)\n r = ii(r, i, s, n, t[9], 21, -343485551)\n e[0] = add32(n, e[0])\n e[1] = add32(r, e[1])\n e[2] = add32(i, e[2])\n e[3] = add32(s, e[3])\n }\n function cmn(e: number, t: number, n: any, r: any, i: number, s: any) {\n t = add32(add32(t, e), add32(r, s))\n return add32((t << i) | (t >>> (32 - i)), n)\n }\n function ff(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn((t & n) | (~t & r), e, t, i, s, o)\n }\n function gg(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn((t & r) | (n & ~r), e, t, i, s, o)\n }\n function hh(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn(t ^ n ^ r, e, t, i, s, o)\n }\n function ii(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn(n ^ (t | ~r), e, t, i, s, o)\n }\n function md51(e: string) {\n var t = e.length,\n n = [1732584193, -271733879, -1732584194, 271733878],\n r: number\n for (r = 64; r <= e.length; r += 64) {\n md5cycle(n, md5blk(e.substring(r - 64, r)))\n }\n e = e.substring(r - 64)\n var i = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n for (r = 0; r < e.length; r++) i[r >> 2] |= e.charCodeAt(r) << (r % 4 << 3)\n i[r >> 2] |= 128 << (r % 4 << 3)\n if (r > 55) {\n md5cycle(n, i)\n for (r = 0; r < 16; r++) i[r] = 0\n }\n i[14] = t * 8\n md5cycle(n, i)\n return n\n }\n function md5blk(e: string) {\n var t = [],\n n: number\n for (n = 0; n < 64; n += 4) {\n t[n >> 2] =\n e.charCodeAt(n) +\n (e.charCodeAt(n + 1) << 8) +\n (e.charCodeAt(n + 2) << 16) +\n (e.charCodeAt(n + 3) << 24)\n }\n return t\n }\n function rhex(e: number) {\n var t = \"\",\n n = 0\n for (; n < 4; n++)\n t += hex_chr[(e >> (n * 8 + 4)) & 15] + hex_chr[(e >> (n * 8)) & 15]\n return t\n }\n function hex(e: any[]) {\n for (var t = 0; t < e.length; t++) e[t] = rhex(e[t])\n return e.join(\"\")\n }\n function md5(e: string) {\n return hex(md51(e))\n }\n function add32(e: number, t: number) {\n return (e + t) & 4294967295\n }\n var hex_chr = \"0123456789abcdef\".split(\"\")\n //check to make sure you gave us something\n var options = options || {},\n base: string,\n params = []\n\n //set some defaults, just in case\n options = {\n size: options.size || \"50\",\n rating: options.rating || \"g\",\n secure: options.secure || location.protocol === \"https:\",\n backup: options.backup || \"\",\n }\n\n //setup the email address\n email = email.trim().toLowerCase()\n\n //determine which base to use\n base = options.secure\n ? \"https://secure.gravatar.com/avatar/\"\n : \"http://www.gravatar.com/avatar/\"\n\n //add the params\n if (options.rating) {\n params.push(\"r=\" + options.rating)\n }\n if (options.backup) {\n params.push(\"d=\" + encodeURIComponent(options.backup))\n }\n if (options.size) {\n params.push(\"s=\" + options.size)\n }\n\n //now throw it all together\n return base + md5(email) + \"?\" + params.join(\"&\")\n}\n\nexport function gravatarURLByEmail(\n email: string,\n defaultURL: string = \"\"\n): string {\n try {\n return gravatar(email, {\n size: 256,\n backup: \"monsterid\",\n // backup: \"https://holtwick.de/download/user.png\", // \"retro\",\n secure: true,\n })\n } catch (error) {\n log(\"Gravatar issue: Did not find an image for \" + email)\n return defaultURL\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { Json, ObjectStorage } from \"../common/types\"\nimport { Logger } from \"../common/log\"\n\nconst log = Logger(\"zeed:localstorage\")\n\nexport interface LocalStorageOptions {\n name: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n}\n\nexport class LocalStorage<T = Json> implements ObjectStorage<T> {\n private name: string\n private prefix: string\n private pretty: boolean = false\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n\n constructor(opt: LocalStorageOptions) {\n log.assert(opt.name, \"name required\")\n this.name = opt.name\n this.prefix = `${opt.name}$`\n this.objectToString =\n opt.objectToString ??\n ((data: any): string => {\n return this.pretty\n ? JSON.stringify(data, null, 2)\n : JSON.stringify(data)\n })\n\n this.objectFromString =\n opt.objectFromString ??\n ((data: string) => {\n try {\n return JSON.parse(data)\n } catch (err) {\n log.warn(`LocalStorage parse error '${err}' in`, data)\n }\n })\n }\n\n setItem(key: string, value: T): void {\n const data = this.objectToString(value)\n localStorage.setItem(`${this.prefix}${key}`, data)\n }\n\n getItem(key: string): T | undefined {\n let value = localStorage.getItem(`${this.prefix}${key}`)\n if (value != null) {\n return this.objectFromString(value)\n }\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(`${this.prefix}${key}`)\n }\n\n clear(): void {\n Object.keys(localStorage)\n .filter((key) => key.startsWith(this.prefix))\n .forEach((key) => {\n localStorage.removeItem(key)\n })\n }\n\n allKeys(): string[] {\n const prefixLength = this.prefix.length\n return Object.keys(localStorage)\n .filter((key) => key.startsWith(this.prefix))\n .map((key) => key.substr(prefixLength))\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { getTimestamp, formatMilliseconds } from \"../common/time\"\nimport {\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { selectColor, supportsColors } from \"./log-colors\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\n\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nconst useColors = supportsColors()\n\n/** @deprecated */\nexport function LoggerBrowserClassicHandler(\n level?: LogLevel,\n opt: LogHandlerOptions = {}\n): LogHandler {\n const { filter = undefined } = 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\n const diff = formatMilliseconds(timeNow - time)\n\n let args: string[]\n if (opt.colors && useColors) {\n args = opt.nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n args.push(`color:${ninfo.color}`)\n args.push(...msg.messages)\n } else {\n args = [name, ...msg.messages]\n }\n args.push(`+${diff}`)\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","import { isBrowser } from \"../common/platform\"\nimport { Logger } from \"../common/log\"\nimport {\n LoggerBrowserHandler,\n LoggerBrowserSetupDebugFactory,\n} from \"./log-browser\"\n\nif (isBrowser()) {\n Logger.setHandlers([LoggerBrowserHandler()]) // Fallback for previously registered Loggers\n Logger.setFactory(LoggerBrowserSetupDebugFactory({}))\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/browser/base64.ts","../src/browser/gravatar.ts","../src/browser/localstorage.ts","../src/browser/log-browser-classic.ts","../src/browser/log-context-browser.ts"],"sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { Logger } from \"../common/log\"\n\nconst { error } = Logger(\"zeed:base64\")\n\nexport function urlBase64ToUint8Array(\n base64String: string\n): Uint8Array | undefined {\n try {\n let padding = \"=\".repeat((4 - (base64String.length % 4)) % 4)\n let base64 = (base64String + padding).replace(/-/g, \"+\").replace(/_/g, \"/\")\n\n let rawData = window.atob(base64)\n let outputArray = new Uint8Array(rawData.length)\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i)\n }\n return outputArray\n } catch (err) {\n error(err, base64String)\n }\n}\n","// MIT licensed\n// https://github.com/mazondo/gravatarjs/blob/master/gravatar.js\n// https://en.gravatar.com/site/implement/images/\n\nimport { Logger } from \"../common/log\"\n\nconst log = Logger(\"zeed:gravatar\")\n\nfunction gravatar(\n email: string,\n options: { size?: any; backup?: any; secure?: any; rating?: any }\n) {\n // using md5() from here: http://www.myersdaily.org/joseph/javascript/md5-text.html\n function md5cycle(e: any[], t: any[]) {\n var n = e[0],\n r = e[1],\n i = e[2],\n s = e[3]\n n = ff(n, r, i, s, t[0], 7, -680876936)\n s = ff(s, n, r, i, t[1], 12, -389564586)\n i = ff(i, s, n, r, t[2], 17, 606105819)\n r = ff(r, i, s, n, t[3], 22, -1044525330)\n n = ff(n, r, i, s, t[4], 7, -176418897)\n s = ff(s, n, r, i, t[5], 12, 1200080426)\n i = ff(i, s, n, r, t[6], 17, -1473231341)\n r = ff(r, i, s, n, t[7], 22, -45705983)\n n = ff(n, r, i, s, t[8], 7, 1770035416)\n s = ff(s, n, r, i, t[9], 12, -1958414417)\n i = ff(i, s, n, r, t[10], 17, -42063)\n r = ff(r, i, s, n, t[11], 22, -1990404162)\n n = ff(n, r, i, s, t[12], 7, 1804603682)\n s = ff(s, n, r, i, t[13], 12, -40341101)\n i = ff(i, s, n, r, t[14], 17, -1502002290)\n r = ff(r, i, s, n, t[15], 22, 1236535329)\n n = gg(n, r, i, s, t[1], 5, -165796510)\n s = gg(s, n, r, i, t[6], 9, -1069501632)\n i = gg(i, s, n, r, t[11], 14, 643717713)\n r = gg(r, i, s, n, t[0], 20, -373897302)\n n = gg(n, r, i, s, t[5], 5, -701558691)\n s = gg(s, n, r, i, t[10], 9, 38016083)\n i = gg(i, s, n, r, t[15], 14, -660478335)\n r = gg(r, i, s, n, t[4], 20, -405537848)\n n = gg(n, r, i, s, t[9], 5, 568446438)\n s = gg(s, n, r, i, t[14], 9, -1019803690)\n i = gg(i, s, n, r, t[3], 14, -187363961)\n r = gg(r, i, s, n, t[8], 20, 1163531501)\n n = gg(n, r, i, s, t[13], 5, -1444681467)\n s = gg(s, n, r, i, t[2], 9, -51403784)\n i = gg(i, s, n, r, t[7], 14, 1735328473)\n r = gg(r, i, s, n, t[12], 20, -1926607734)\n n = hh(n, r, i, s, t[5], 4, -378558)\n s = hh(s, n, r, i, t[8], 11, -2022574463)\n i = hh(i, s, n, r, t[11], 16, 1839030562)\n r = hh(r, i, s, n, t[14], 23, -35309556)\n n = hh(n, r, i, s, t[1], 4, -1530992060)\n s = hh(s, n, r, i, t[4], 11, 1272893353)\n i = hh(i, s, n, r, t[7], 16, -155497632)\n r = hh(r, i, s, n, t[10], 23, -1094730640)\n n = hh(n, r, i, s, t[13], 4, 681279174)\n s = hh(s, n, r, i, t[0], 11, -358537222)\n i = hh(i, s, n, r, t[3], 16, -722521979)\n r = hh(r, i, s, n, t[6], 23, 76029189)\n n = hh(n, r, i, s, t[9], 4, -640364487)\n s = hh(s, n, r, i, t[12], 11, -421815835)\n i = hh(i, s, n, r, t[15], 16, 530742520)\n r = hh(r, i, s, n, t[2], 23, -995338651)\n n = ii(n, r, i, s, t[0], 6, -198630844)\n s = ii(s, n, r, i, t[7], 10, 1126891415)\n i = ii(i, s, n, r, t[14], 15, -1416354905)\n r = ii(r, i, s, n, t[5], 21, -57434055)\n n = ii(n, r, i, s, t[12], 6, 1700485571)\n s = ii(s, n, r, i, t[3], 10, -1894986606)\n i = ii(i, s, n, r, t[10], 15, -1051523)\n r = ii(r, i, s, n, t[1], 21, -2054922799)\n n = ii(n, r, i, s, t[8], 6, 1873313359)\n s = ii(s, n, r, i, t[15], 10, -30611744)\n i = ii(i, s, n, r, t[6], 15, -1560198380)\n r = ii(r, i, s, n, t[13], 21, 1309151649)\n n = ii(n, r, i, s, t[4], 6, -145523070)\n s = ii(s, n, r, i, t[11], 10, -1120210379)\n i = ii(i, s, n, r, t[2], 15, 718787259)\n r = ii(r, i, s, n, t[9], 21, -343485551)\n e[0] = add32(n, e[0])\n e[1] = add32(r, e[1])\n e[2] = add32(i, e[2])\n e[3] = add32(s, e[3])\n }\n function cmn(e: number, t: number, n: any, r: any, i: number, s: any) {\n t = add32(add32(t, e), add32(r, s))\n return add32((t << i) | (t >>> (32 - i)), n)\n }\n function ff(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn((t & n) | (~t & r), e, t, i, s, o)\n }\n function gg(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn((t & r) | (n & ~r), e, t, i, s, o)\n }\n function hh(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn(t ^ n ^ r, e, t, i, s, o)\n }\n function ii(\n e: any,\n t: number,\n n: number,\n r: number,\n i: any,\n s: number,\n o: number\n ) {\n return cmn(n ^ (t | ~r), e, t, i, s, o)\n }\n function md51(e: string) {\n var t = e.length,\n n = [1732584193, -271733879, -1732584194, 271733878],\n r: number\n for (r = 64; r <= e.length; r += 64) {\n md5cycle(n, md5blk(e.substring(r - 64, r)))\n }\n e = e.substring(r - 64)\n var i = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n for (r = 0; r < e.length; r++) i[r >> 2] |= e.charCodeAt(r) << (r % 4 << 3)\n i[r >> 2] |= 128 << (r % 4 << 3)\n if (r > 55) {\n md5cycle(n, i)\n for (r = 0; r < 16; r++) i[r] = 0\n }\n i[14] = t * 8\n md5cycle(n, i)\n return n\n }\n function md5blk(e: string) {\n var t = [],\n n: number\n for (n = 0; n < 64; n += 4) {\n t[n >> 2] =\n e.charCodeAt(n) +\n (e.charCodeAt(n + 1) << 8) +\n (e.charCodeAt(n + 2) << 16) +\n (e.charCodeAt(n + 3) << 24)\n }\n return t\n }\n function rhex(e: number) {\n var t = \"\",\n n = 0\n for (; n < 4; n++)\n t += hex_chr[(e >> (n * 8 + 4)) & 15] + hex_chr[(e >> (n * 8)) & 15]\n return t\n }\n function hex(e: any[]) {\n for (var t = 0; t < e.length; t++) e[t] = rhex(e[t])\n return e.join(\"\")\n }\n function md5(e: string) {\n return hex(md51(e))\n }\n function add32(e: number, t: number) {\n return (e + t) & 4294967295\n }\n var hex_chr = \"0123456789abcdef\".split(\"\")\n //check to make sure you gave us something\n var options = options || {},\n base: string,\n params = []\n\n //set some defaults, just in case\n options = {\n size: options.size || \"50\",\n rating: options.rating || \"g\",\n secure: options.secure || location.protocol === \"https:\",\n backup: options.backup || \"\",\n }\n\n //setup the email address\n email = email.trim().toLowerCase()\n\n //determine which base to use\n base = options.secure\n ? \"https://secure.gravatar.com/avatar/\"\n : \"http://www.gravatar.com/avatar/\"\n\n //add the params\n if (options.rating) {\n params.push(\"r=\" + options.rating)\n }\n if (options.backup) {\n params.push(\"d=\" + encodeURIComponent(options.backup))\n }\n if (options.size) {\n params.push(\"s=\" + options.size)\n }\n\n //now throw it all together\n return base + md5(email) + \"?\" + params.join(\"&\")\n}\n\nexport function gravatarURLByEmail(\n email: string,\n defaultURL: string = \"\"\n): string {\n try {\n return gravatar(email, {\n size: 256,\n backup: \"monsterid\",\n // backup: \"https://holtwick.de/download/user.png\", // \"retro\",\n secure: true,\n })\n } catch (error) {\n log(\"Gravatar issue: Did not find an image for \" + email)\n return defaultURL\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { Json, ObjectStorage } from \"../common/types\"\nimport { Logger } from \"../common/log\"\n\nconst log = Logger(\"zeed:localstorage\")\n\nexport interface LocalStorageOptions {\n name: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n}\n\nexport class LocalStorage<T = Json> implements ObjectStorage<T> {\n private name: string\n private prefix: string\n private pretty: boolean = false\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n\n constructor(opt: LocalStorageOptions) {\n log.assert(opt.name, \"name required\")\n this.name = opt.name\n this.prefix = `${opt.name}$`\n this.objectToString =\n opt.objectToString ??\n ((data: any): string => {\n return this.pretty\n ? JSON.stringify(data, null, 2)\n : JSON.stringify(data)\n })\n\n this.objectFromString =\n opt.objectFromString ??\n ((data: string) => {\n try {\n return JSON.parse(data)\n } catch (err) {\n log.warn(`LocalStorage parse error '${err}' in`, data)\n }\n })\n }\n\n setItem(key: string, value: T): void {\n const data = this.objectToString(value)\n localStorage.setItem(`${this.prefix}${key}`, data)\n }\n\n getItem(key: string): T | undefined {\n let value = localStorage.getItem(`${this.prefix}${key}`)\n if (value != null) {\n return this.objectFromString(value)\n }\n }\n\n removeItem(key: string): void {\n localStorage.removeItem(`${this.prefix}${key}`)\n }\n\n clear(): void {\n Object.keys(localStorage)\n .filter((key) => key.startsWith(this.prefix))\n .forEach((key) => {\n localStorage.removeItem(key)\n })\n }\n\n allKeys(): string[] {\n const prefixLength = this.prefix.length\n return Object.keys(localStorage)\n .filter((key) => key.startsWith(this.prefix))\n .map((key) => key.substr(prefixLength))\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { getTimestamp, formatMilliseconds } from \"../common/time\"\nimport {\n LogHandler,\n LogHandlerOptions,\n LogLevel,\n LogMessage,\n} from \"../common/log-base\"\nimport { selectColor, supportsColors } from \"./log-colors\"\nimport { useLevelFilter, useNamespaceFilter } from \"../common/log-filter\"\n\nlet namespaces: Record<string, any> = {}\n\nlet time = getTimestamp()\n\nconst useColors = supportsColors()\n\n/** @deprecated */\nexport function LoggerBrowserClassicHandler(\n level?: LogLevel,\n opt: LogHandlerOptions = {}\n): LogHandler {\n const { filter = undefined } = 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\n const diff = formatMilliseconds(timeNow - time)\n\n let args: string[]\n if (opt.colors && useColors) {\n args = opt.nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n args.push(`color:${ninfo.color}`)\n args.push(...msg.messages)\n } else {\n args = [name, ...msg.messages]\n }\n args.push(`+${diff}`)\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","import { isBrowser } from \"../common/platform\"\nimport { Logger } from \"../common/log\"\nimport {\n LoggerBrowserHandler,\n LoggerBrowserSetupDebugFactory,\n} from \"./log-browser\"\n\nif (isBrowser()) {\n Logger.setHandlers([LoggerBrowserHandler()]) // Fallback for previously registered Loggers\n Logger.setFactory(LoggerBrowserSetupDebugFactory({}))\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,5 @@
1
+ import{a as I,b as Q,c as o,w as ie,x as b,y as Te}from"./chunk-YBNWDOXD.js";var we=b("bin"),Y;function Ae(e){return typeof TextEncoder=="undefined"?new Uint8Array:(Y!=null?Y:Y=new TextEncoder).encode(e.normalize("NFC"))}o(Ae,"stringToUInt8Array");var X;function et(e){return typeof TextDecoder=="undefined"?"":(X!=null?X:X=new TextDecoder("utf-8",{ignoreBOM:!0})).decode(e).normalize("NFC")}o(et,"Uint8ArrayToString");function U(e){return e instanceof ArrayBuffer?new Uint8Array(e):typeof e=="string"?Ae(e):e.length?new Uint8Array(e):e}o(U,"toUint8Array");function jt(e){if(typeof Buffer!="undefined")return Buffer.from(U(e)).toString("hex");let t="0123456789abcdef",r="";for(let n of[...U(e)])r+=t[n>>4]+t[n&15];return r}o(jt,"toHex");function Wt(e){let t=U(e);if(typeof Buffer!="undefined")return Buffer.from(t).toString("base64");let r="";for(let n=0;n<t.byteLength;n++)r+=String.fromCharCode(t[n]);return btoa(r)}o(Wt,"toBase64");function Qt(e){let t=U(e);if(typeof Buffer!="undefined")return Buffer.from(t).toString("base64url");let r="";for(let n=0;n<t.byteLength;n++)r+=String.fromCharCode(t[n]);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_")}o(Qt,"toBase64Url");function Vt(e){if(typeof Buffer!="undefined"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}o(Vt,"fromBase64");function Me(e,t){if(e.byteLength!==t.byteLength)return!1;let r=U(e),n=U(t);for(let i=0;i<r.length;i++)if(r[i]!==n[i])return!1;return!0}o(Me,"equalBinary");function se(e){try{return Ae(JSON.stringify(e))}catch(t){throw we.warn("jsonToUint8Array",e),t}}o(se,"jsonToUint8Array");function ae(e){try{return JSON.parse(et(e))}catch(t){throw we.warn("Uint8ArrayToJson",e),t}}o(ae,"Uint8ArrayToJson");function H(e=16){let t=new Uint8Array(e);if(typeof crypto!="undefined"&&crypto.getRandomValues)crypto.getRandomValues(t);else for(let r=0;r<e;r++)t[r]=Math.floor(Math.random()*256);return t}o(H,"randomUint8Array");var Pe="SHA-256",ue="AES-GCM",Ee="PBKDF2";async function Yt(e,t=Pe){return U(await crypto.subtle.digest(t,U(e)))}o(Yt,"digest");async function Xt(e,t={}){var i;let r=U(e),n=await crypto.subtle.importKey("raw",r,Ee,!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:Ee,salt:t.salt?U(t.salt):new Uint8Array(0),iterations:(i=t.iterations)!=null?i:1e5,hash:Pe},n,{name:ue,length:256},!0,["encrypt","decrypt"])}o(Xt,"deriveKeyPbkdf2");var ee=new Uint8Array([1,1]);async function Le(e,t){let r=H(12),n=await crypto.subtle.encrypt({name:ue,iv:r},t,e),i=new Uint8Array(n),s=ee.length+r.length+i.length,u=new Uint8Array(s),a=0;return u.set(ee,a),a+=ee.length,u.set(r,a),a+=r.length,u.set(i,a),u}o(Le,"encrypt");async function Ue(e,t){let r=e.subarray(0,2);if(!Me(r,ee))return Promise.reject(`Unknown magic ${r}`);let n=e.subarray(2,2+12),i=e.subarray(2+12,e.length),s=await crypto.subtle.decrypt({name:ue,iv:n},t,i);return new Uint8Array(s)}o(Ue,"decrypt");var Ce=",",tt=!1,rt=!0;function nt(e){return/^([-+])?([0-9]+(\.[0-9]+)?|Infinity)$/.test(e)?Number(e):NaN}o(nt,"filterFloat");function ot(e){return rt&&e==null?"":tt?'="'+String(e).replace(/"/g,'""')+'"':!isNaN(nt(e))&&isFinite(e)?parseFloat(e):'"'+String(e).replace(/"/g,'""')+'"'}o(ot,"escape");function tr(e,t){let r="";t&&(r=t.join(Ce)+`\r
2
+ `);for(let n=0;n<e.length;n++)r+=e[n].map(ot).join(Ce)+`\r
3
+ `;return r}o(tr,"csv");function it(e=""){let[t="",r="asc"]=e.split(" ");return r=r.toLowerCase(),{field:t,orderby:r,asc:r!=="desc",desc:r==="desc"}}o(it,"parseOrderby");function nr(e,t=!0){return`${e} ${t?"asc":"desc"}`}o(nr,"composeOrderby");function ce(e,t,r=!0){let n=e||0,i=t||0;return n>i?r?1:-1:n<i?r?-1:1:0}o(ce,"cmp");function or(e,...t){if(t.length>0){let r=t.map(it),n=Array.from(e);return n.sort((i,s)=>{for(let{field:u,asc:a}of r){let c=ce(i[u],s[u],a);if(c!==0)return c}return 0}),n}return e}o(or,"sortedOrderby");function fe(e){return e.filter((t,r)=>e.indexOf(t)===r)}o(fe,"arrayUnique");function st(e,t){return fe(e.filter(r=>!t.includes(r)))}o(st,"arrayMinus");function at(...e){return fe(e.reduce((t=[],r)=>t.concat(r),[]))}o(at,"arrayUnion");function V(...e){return e.flat(1/0)}o(V,"arrayFlatten");function ut(e,t){return fe(e).filter(r=>t.includes(r))}o(ut,"arrayIntersection");function ar(e,t){return st(at(e,t),ut(e,t))}o(ar,"arraySymmetricDifference");function ur(e,t){if(e&&Array.isArray(e)){let r;for(;(r=e.indexOf(t))!==-1;)e.splice(r,1);return e}return[]}o(ur,"arrayRemoveElement");function cr(e,t){return e.includes(t)||e.push(t),e}o(cr,"arraySetElement");function le(e,t){return e.splice(0,e.length,...e.filter(t)),e}o(le,"arrayFilterInPlace");function fr(e,t){let r=e.findIndex(n=>n===t);return r>=0?e.splice(r,1):e.push(t),e}o(fr,"arrayToggleInPlace");function lr(e){return e.splice(0,e.length),e}o(lr,"arrayEmptyInPlace");function ct(e,t=ce){return Array.from(e).sort(t)}o(ct,"arraySorted");function pr(e){return ct(e,(t,r)=>t-r)}o(pr,"arraySortedNumbers");function ft(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}o(ft,"arrayIsEqual");function De(e){return e.sort(()=>Math.random()>.5?1:-1),e}o(De,"arrayShuffleInPlace");function dr(e){return De(Array.from(e))}o(dr,"arrayShuffle");function mr(e){for(;e.length>1;){let t=Array.from(e);if(De(t),!ft(e,t))return t}return e}o(mr,"arrayShuffleForce");function yr(e){return e[Math.floor(Math.random()*e.length)]}o(yr,"arrayRandomElement");function gr(...e){return V(e).reduce((t,r)=>t!=null?r>t?r:t:r,void 0)}o(gr,"arrayMax");function hr(...e){return V(e).reduce((t,r)=>t!=null?r<t?r:t:r,void 0)}o(hr,"arrayMin");function xr(e=0,t){if(e<=0)return[];let r=new Array(e);for(let n=0;n<e;n++)r[n]=t instanceof Function?t(n):t;return r}o(xr,"createArray");var lt=b("zeed:basex"),pt={"2":"01","8":"01234567","11":"0123456789a","16":"0123456789abcdef","32":"0123456789ABCDEFGHJKMNPQRSTVWXYZ","32-rfc":"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567","32-hex":"0123456789ABCDEFGHIJKLMNOPQRSTUV","32-zbase":"ybndrfg8ejkmcpqxot1uwisza345h769","36":"0123456789abcdefghijklmnopqrstuvwxyz","58":"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz","62":"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz","64":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/","64-url":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_","66":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~","85":"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"};function O(e){let t;if(typeof e=="string")t=e;else if(t=pt[e.toString()],t==null)throw new Error(`Unknown base ${e}`);if(t.length>=255)throw new TypeError("Alphabet too long");let r=new Uint8Array(256);for(let f=0;f<r.length;f++)r[f]=255;for(let f=0;f<t.length;f++){let d=t.charAt(f),m=d.charCodeAt(0);if(r[m]!==255)throw new TypeError(d+" is ambiguous");r[m]=f}let n=t.length,i=t.charAt(0),s=Math.log(n)/Math.log(256),u=Math.log(256)/Math.log(n);function a(f,d=-1){let m=U(f);if(m.byteLength===0)return"";let L=0,M=0,P=m.byteLength;for(;M!==P&&m[M]===0;)M++;let x=(P-M)*u+1>>>0,y=new Uint8Array(x);for(;M!==P;){let S=m[M],T=0;for(let k=x-1;(S!==0||T<L)&&k!==-1;k--,T++)S+=256*y[k]>>>0,y[k]=S%n>>>0,S=S/n>>>0;if(S!==0)throw lt.warn("Non-zero carry",m,d,T,x),new Error("Non-zero carry");L=T,M++}let g=x-L;for(;g!==x&&y[g]===0;)g++;let E="";for(;g<x;++g)E+=t.charAt(y[g]);return d>0?E.padStart(d,i):E}o(a,"encode");function c(f,d=-1){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;f=f.replace(/\s+/gi,"");let m=0,L=0;for(;f[m]===i;)m++;let M=(f.length-m)*s+1>>>0,P=new Uint8Array(M);for(;f[m];){let y=r[f.charCodeAt(m)];if(y===255)throw new Error(`Unsupported character "${f[m]}"`);let g=0;for(let E=M-1;(y!==0||g<L)&&E!==-1;E--,g++)y+=n*P[E]>>>0,P[E]=y%256>>>0,y=y/256>>>0;if(y!==0)throw new Error("Non-zero carry");L=g,m++}let x=M-L;for(;x!==M&&P[x]===0;)x++;return d>0?new Uint8Array([...new Uint8Array(d-P.length+x),...P.slice(x)]):P.slice(x)}return o(c,"decode"),{encode:a,decode:c}}o(O,"useBase");var{encode:Mr,decode:Pr}=O(16),{encode:Er,decode:Lr}=O(32),{encode:Ur,decode:Cr}=O(58),{encode:Dr,decode:kr}=O(62),{encode:Sr,decode:Ir}=O(62);var Fr=o(e=>(e.length>0&&(/^[A-Z0-9_\-\ ]*$/g.test(e)&&(e=e.toLowerCase()),e=e.replace(/^[-_\ ]+/gi,"").replace(/[-_\ ]+$/gi,"").replace(/[-_\ ]+([a-z0-9])/gi,(t,r)=>r.toUpperCase()),e=e[0].toLowerCase()+e.substring(1)),e),"toCamelCase");function dt(e){return e.charAt(0).toUpperCase()+e.toLowerCase().slice(1)}o(dt,"toCapitalize");function Rr(e){return e.replace(/\w\S*/g,dt)}o(Rr,"toCapitalizeWords");function $r(e,t="-"){return t=typeof t=="undefined"?"_":t,e.replace(/([a-z\d])([A-Z])/g,"$1"+t+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+t+"$2").toLowerCase()}o($r,"fromCamelCase");function mt(e,t){var r=[],n=[];return t==null&&(t=o(function(i,s){return r[0]===s?"[Circular ~]":"[Circular ~."+n.slice(0,r.indexOf(s)).join(".")+"]"},"cycleReplacer")),function(i,s){if(r.length>0){var u=r.indexOf(this);~u?r.splice(u+1):r.push(this),~u?n.splice(u,1/0,i):n.push(i),~r.indexOf(s)&&(s=t==null?void 0:t.call(this,i,s))}else r.push(s);return e==null?s:e.call(this,i,s)}}o(mt,"serializer");function pe(e,t,r,n){return JSON.stringify(e,mt(t,n),r)}o(pe,"jsonStringify");var ke=["1","true","yes","y","on"];function Nr(e,t=!1){return e==null||typeof e!="string"?t:ke.includes(String(e).trim().toLowerCase())}o(Nr,"stringToBoolean");function zr(e,t=0){var r;return e==null||typeof e!="string"?t:(r=parseInt(e.trim(),10))!=null?r:t}o(zr,"stringToInteger");function Hr(e,t=0){var r;return e==null||typeof e!="string"?t:(r=parseFloat(e.trim()))!=null?r:t}o(Hr,"stringToFloat");function yt(e,t=!1){return e==null?t:typeof e=="boolean"?e:typeof e=="number"?e!==0:ke.includes(String(e).trim().toLowerCase())}o(yt,"valueToBoolean");function gt(e,t=0){var r;return e==null?t:typeof e=="boolean"?e?1:0:typeof e=="number"?Math.floor(e):(r=parseInt(String(e).trim(),10))!=null?r:t}o(gt,"valueToInteger");function ht(e,t=0){var r;return e==null?t:typeof e=="boolean"?e?1:0:typeof e=="number"?Math.floor(e):(r=parseFloat(String(e).trim()))!=null?r:t}o(ht,"valueToFloat");function de(e,t=""){var r;return e==null?t:(r=String(e))!=null?r:t}o(de,"valueToString");var Jr=ht,qr=gt,Gr=de,jr=yt;function xt(e,t={}){let{trace:r=!0,pretty:n=!0}=t;return e.map(i=>i&&typeof i=="object"?i instanceof Error?r?`${i.name||"Error"}: ${i.message}
4
+ ${i.stack}`:`${i.name||"Error"}: ${i.message}`:n?pe(i,null,2):pe(i):String(i))}o(xt,"formatMessages");function Qr(e,t={}){return xt(e,t).join(" ")}o(Qr,"renderMessages");function Vr(e){try{return decodeURIComponent(escape(e))}catch{}return e}o(Vr,"fixBrokenUth8String");var bt={symbol:"$",separator:",",decimal:".",errorOnInvalid:!1,precision:2,pattern:"!#",negativePattern:"-!#",format:Mt,fromCents:!1},Se=o(e=>Math.round(e),"round"),me=o(e=>Math.pow(10,e),"pow"),Tt=o((e,t)=>Se(e/t)*t,"rounding"),wt=/(\d)(?=(\d{3})+\b)/g,At=/(\d)(?=(\d\d)+\d\b)/g;function B(e,t={}){return new F(e,t)}o(B,"currency");var re=class{constructor(t,r={}){var u;let n=Object.assign({},bt,r),i=me((u=n.precision)!=null?u:2),s=te(t,n);this.intValue=s,this.value=s/i,n.increment=n.increment||1/i,n.useVedic?n.groups=At:n.groups=wt,this._settings=n,this._precision=i}add(t){let{intValue:r,_settings:n,_precision:i}=this;return B((r+=te(t,n))/(n.fromCents?1:i),n)}subtract(t){let{intValue:r,_settings:n,_precision:i}=this;return B((r-=te(t,n))/(n.fromCents?1:i),n)}multiply(t){let{intValue:r,_settings:n,_precision:i}=this;return B((r*=t)/(n.fromCents?1:me(i)),n)}divide(t){let{intValue:r,_settings:n}=this;return B(r/=te(t,n,!1),n)}distribute(t){let{intValue:r,_precision:n,_settings:i}=this,s=[],u=Math[r>=0?"floor":"ceil"](r/t),a=Math.abs(r-u*t),c=i.fromCents?1:n;for(;t!==0;t--){let f=B(u/c,i);a-- >0&&(f=f[r>=0?"add":"subtract"](1/c)),s.push(f)}return s}dollars(){return~~this.value}cents(){let{intValue:t,_precision:r}=this;return~~(t%r)}format(t){let{_settings:r}=this;return typeof t=="function"?t(this,r):r.format(this,Object.assign({},r,t))}toString(){let{intValue:t,_precision:r,_settings:n}=this;return Tt(t/r,n.increment).toFixed(n.precision)}toJSON(){return this.value}static sum(...t){return V(t).reduce((r,n)=>B(r).add(n),this.zero)}static avg(...t){let r=V(t);return r.reduce((n,i)=>B(n).add(i),this.zero).divide(r.length)}},F=re;o(F,"Currency"),F.zero=new re(0),F.one=new re(1);function te(e,t,r=!0){let n=0,{decimal:i,errorOnInvalid:s,precision:u,fromCents:a}=t,c=me(u),f=typeof e=="number";if(e instanceof F&&a)return e.intValue;if(f||e instanceof F)n=e instanceof F?e.value:e;else if(typeof e=="string"){let d=new RegExp("[^-\\d"+i+"]","g"),m=new RegExp("\\"+i,"g");n=e.replace(/\((.*)\)/,"-$1").replace(d,"").replace(m,"."),n=n||0}else{if(s)throw Error("Invalid Input");n=0}return a||(n*=c,n=n.toFixed(4)),r?Se(n):n}o(te,"parse");function Mt(e,t){let{pattern:r,negativePattern:n,symbol:i,separator:s,decimal:u,groups:a}=t,c=(""+e).replace(/^-/,"").split("."),f=c[0],d=c[1];return(e.value>=0?r:n).replace("!",i).replace("#",f.replace(a,"$1"+s)+(d?u+d:""))}o(Mt,"format");var _=o(e=>Math.abs(e)%1===.5,"isHalf"),Ie=o(e=>e%2===0,"isEven"),Kr=o(e=>Math.ceil(e),"roundUp"),Yr=o(e=>Math.floor(e),"roundDown"),Xr=o(e=>Math.round(e),"roundHalfUp"),en=o(e=>{let t=Math.round(e);return _(e)&&Ie(t)?t-1:t},"roundHalfOdd"),tn=o(e=>_(e)?Math.sign(e)*Math.ceil(Math.abs(e)):Math.round(e),"roundHalfAwayFromZero"),rn=o(e=>_(e)?Math.floor(e):Math.round(e),"roundHalfDown"),nn=o(e=>{let t=Math.round(e);return _(e)?Ie(t)?t:t-1:t},"roundHalfEven"),on=o(e=>_(e)?Math.sign(e)*Math.floor(Math.abs(e)):Math.round(e),"roundHalfTowardsZero");var{warn:Oe}=b("zeed:promise");async function un(e){return new Promise(t=>setTimeout(t,e))}o(un,"sleep");async function cn(){return new Promise(e=>setTimeout(e,0))}o(cn,"immediate");var Fe=Symbol("timeout");async function fn(e,t,r=Fe){return new Promise(async(n,i)=>{let s=!1,u=setTimeout(()=>{s=!0,n(r)},t);try{let a=await e;clearTimeout(u),s||n(a)}catch(a){clearTimeout(u),s||i(a)}})}o(fn,"timeout");var Re=new Error("Timeout reached");function ln(e){return e===Fe||e===Re}o(ln,"isTimeout");async function $e(e,t){return t<=0?await e:new Promise(async(r,n)=>{let i=!1,s=setTimeout(()=>{i=!0,n(Re)},t);try{let u=await e;clearTimeout(s),i||r(u)}catch(u){clearTimeout(s),i||n(u)}})}o($e,"tryTimeout");function pn(e,t,r=1e3){return new Promise((n,i)=>{let s=o(c=>{a&&(clearTimeout(a),u(),n(c))},"fn"),u=o(()=>{a=null,e.off?e.off(t,s):e.removeEventListener?e.removeEventListener(t,s):Oe("No remove listener method found for",e,t)},"done"),a=setTimeout(()=>{u(),i(new Error("Did not response in time"))},r);e.on?e.on(t,s):e.addEventListener?e.addEventListener(t,s):Oe("No listener method found for",e)})}o(pn,"waitOn");function C(e){return Boolean(e&&(e instanceof Promise||typeof e.then=="function"))}o(C,"isPromise");function N(e){return Promise.resolve(e)}o(N,"promisify");var ve=1e3*60*60*24,w=class{constructor(t){var r;if(typeof t=="number"){this.days=t;return}if(t!=null&&(t=(r=w.from(t))==null?void 0:r.days),t==null){let n=new Date;this.days=n.getFullYear()*1e4+(n.getMonth()+1)*100+n.getDate()}else this.days=t}static fromNumber(t){return new w(t)}static fromString(t){return new w(+t.replace(/[^0-9]/g,""))}static fromDate(t,r=!1){return r?w.fromString(t.toISOString().substr(0,10)):new w(t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate())}static fromDateGMT(t){return w.fromDate(t,!0)}static from(t,r=!1){if(typeof t=="number")return new w(t);if(typeof t=="string")return w.fromString(t);if(t instanceof Date)return w.fromDate(t,r);if(t instanceof w)return t}toNumber(){return this.days}toJson(){return this.days}toString(t="-"){let r=String(this.days);return r.slice(0,4)+t+r.slice(4,6)+t+r.slice(6,8)}toDate(t=!1){return t?new Date(`${this.toString()}T00:00:00.000Z`):new Date(this.days/1e4,this.days/100%100-1,this.days%100)}toDateGMT(){return this.toDate(!0)}dayOffset(t){return w.fromDateGMT(new Date(this.toDateGMT().getTime()+t*ve))}daysUntil(t){var r;return Math.round((((r=new w(t))==null?void 0:r.toDateGMT().getTime())-this.toDateGMT().getTime())/ve)}yesterday(){return this.dayOffset(-1)}tomorrow(){return this.dayOffset(1)}};o(w,"Day");async function yn(e,t,r){let n=w.from(e),i=w.from(t);for(;n&&i&&(n==null?void 0:n.days)<=(i==null?void 0:i.days);){let s=r(n);C(s)&&await s,n=n.dayOffset(1)}}o(yn,"forEachDay");function gn(){return new w}o(gn,"today");function hn(e){return new w(e)}o(hn,"day");var Be=o(e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),"escapeHTML"),bn=o(e=>e.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,'"').replace(/&apos;/gi,"'").replace(/&amp;/gi,"&"),"unescapeHTML");function wn(e=.25){return Math.random()<e}o(wn,"randomBoolean");function An(e=100,t=0){return t+Math.floor(Math.random()*(e-t))}o(An,"randomInt");function Mn(e=100,t=0){return t+Math.random()*(e-t)}o(Mn,"randomFloat");function Pn(e,t,r){return Math.max(e,Math.min(r,t))}o(Pn,"between");var Pt=100,Ne=/[\u0000-\u001F\u0080-\u009F]/g,Et=/^\.+/,Lt=/\.+$/;function ze(){return/[<>:"/\\|?*\u0000-\u001F]/g}o(ze,"filenameReservedRegex");function Ut(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}o(Ut,"windowsReservedNameRegex");function Ln(e){if(typeof e!="string")throw new TypeError("Expected a string");let t="_";if(ze().test(t)&&Ne.test(t))throw new Error("Replacement string cannot contain reserved filename characters");return e=e.replace(ze(),t).replace(Ne,t).replace(Et,t).replace(Lt,""),e=Ut().test(e)?e+t:e,e.slice(0,Pt)}o(Ln,"toValidFilename");var Ct=/[\\\-\[\]\/{}()*+?.^$|]/g;function Cn(e){return e?e instanceof RegExp?e.source:e.replace(Ct,"\\$&"):""}o(Cn,"escapeRegExp");function He(e){return e.reduce((t,r)=>Math.min(t,r.sort_weight||0),0)-1-Math.random()}o(He,"startSortWeight");function Je(e){return e.reduce((t,r)=>Math.max(t,r.sort_weight||0),0)+1+Math.random()}o(Je,"endSortWeight");function kn(e,t,r){let n=r.length,i=e<t;if(n<=0||e>=n-1)return Je(r);if(e<=0)return He(r);r=Dt([...r]);let s=i?-1:0,u=r[e+s].sort_weight||0,c=(r[e+s+1].sort_weight||0)-u;if(c===0)return i?He(r):Je(r);let f=u+c/2,d=c*.01*(Math.random()-.5);return f+d}o(kn,"moveSortWeight");function Dt(e){return e.sort((t,r)=>(t.sort_weight||0)-(r.sort_weight||0)),e}o(Dt,"sortedItems");var kt=/((?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?)/gim;function On(e){return e.split(kt).map((t,r)=>{let n=Be(t);return r%2?`<a target="_blank" href="${n}">${St(n)}</a>`:n}).join("")}o(On,"linkifyPlainText");function St(e){return e.replace(/^https?:\/\/(www\.)?/,"").replace(/\/$/,"")}o(St,"toHumanReadableUrl");function qe(e){let t=[];for(let[r,n]of Object.entries(e))if(n!=null){Array.isArray(n)||(n=[n]);for(let i of n)i!=null&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(i.toString()||""))}return t.join("&")}o(qe,"encodeQuery");function Fn(e){let t={},r=(e[0]==="?"?e.substr(1):e).split("&");for(let n=0;n<r.length;n++){let i=r[n].split("="),s=decodeURIComponent(i[0]),u=decodeURIComponent(i[1]||"");t[s]!=null?(Array.isArray(t[s])||(t[s]=[t[s]]),t[s].push(u)):t[s]=u}return t}o(Fn,"parseQuery");function $n(e){return e!=null?e.size!=null?e.size:e.length!=null?e.length:Object.keys(e).length:0}o($n,"size");function vn(e){return e!=null&&e.length>0?e[e.length-1]:void 0}o(vn,"last");function Bn(e){try{if(e!=null)return Array.isArray(e)||typeof e=="string"?e.length<=0:(e==null?void 0:e.size)!=null?e.size<=0:Object.keys(e).length<=0}catch(t){console.error("Failed to check if empty for",e,t)}return!0}o(Bn,"empty");function ye(e){return Object(e)!==e?e:JSON.parse(JSON.stringify(e))}o(ye,"cloneObject");function Nn(e){return Object(e)!==e?e:JSON.parse(JSON.stringify(e))}o(Nn,"cloneJsonObject");async function It(e){typeof e=="function"?await N(e()):C(e)?await e:typeof e.dispose=="function"?await N(e.dispose()):C(e.dispose)?await e.dispose:typeof e.cleanup=="function"?await N(e.cleanup()):C(e.cleanup)&&await e.cleanup}o(It,"callDisposer");function Ot(){let e=[],t=o(async i=>{e.includes(i)&&(le(e,s=>s!==i),await It(i))},"untrack"),r=o(async()=>{for(;e.length>0;)await t(e[0])},"dispose"),n=o(i=>(e.unshift(i),()=>t(i)),"track");return Object.assign(r,{track:n,add:n,untrack:t,dispose:r,exec:r,getSize(){return e.length}})}o(Ot,"useDispose");var qn=Ot;function Gn(e={}){let{mode:t="fifo"}=e,r=[],n=o(async(s=!1)=>{for(;r.length>0;){let u=r[0];if(le(r,a=>a!==u),typeof u=="function"){let a=u();if(C(a)){if(s)throw new Error(`Expected sync only function, but found async: ${u}`);await a}}else if(C(u)){if(s)throw new Error(`Expected sync only function, but found async: ${u}`);await u}else throw new Error(`Unhandled disposable: ${u}`)}},"exec");return Object.assign(n,{add:o(s=>{t==="lifo"?r.unshift(s):r.push(s)},"add"),exec:n,getSize(){return r.length}})}o(Gn,"useDefer");function jn(e,t=0){let r=setTimeout(e,t);return()=>{r&&(clearTimeout(r),r=void 0)}}o(jn,"useTimeout");function Wn(e,t){let r=setInterval(e,t);return()=>{r&&(clearInterval(r),r=void 0)}}o(Wn,"useInterval");function Qn(e,t,r,...n){return e==null?()=>{}:(e.on?e.on(t,r,...n):e.addEventListener&&e.addEventListener(t,r,...n),()=>{e.off?e.off(t,r,...n):e.removeEventListener&&e.removeEventListener(t,r,...n)})}o(Qn,"useEventListener");function _n(e=(r=>(r=(t=>(t=globalThis==null?void 0:globalThis.location)==null?void 0:t.hostname)())!=null?r:"")()){return["localhost","127.0.0.1","","::1","::"].includes(e)||e.startsWith("192.168.")||e.startsWith("10.0.")||e.endsWith(".local")}o(_n,"isLocalHost");var{encode:ge,decode:Ge}=O(62),{encode:Ft}=O(32);function je(){return H(16)}o(je,"uuidBytes");var eo=o(()=>new Uint32Array(H(4))[0],"uuid32bit");function Z(){return ge(je(),22)}o(Z,"uuid");function to(e){return ge(e,22)}o(to,"uuidEncode");function ro(e){return Ge(e,16)}o(ro,"uuidDecode");function no(){return Ft(je(),26)}o(no,"uuidB32");var he={};function z(e="id"){return he[e]==null&&(he[e]=0),`${e}-${he[e]++}`}o(z,"uname");var Rt=0;function oo(){return`id-${Rt++}`}o(oo,"qid");var $t="10000000-1000-4000-8000-100000000000",io=o(()=>$t.replace(/[018]/g,e=>(e^H(1)[0]&15>>e/4).toString(16)),"uuidv4"),We=16e11;function vt(e){var t=new Uint8Array([0,0,0,0,0,0]);let r=t.length-1;for(var n=0;n<t.length;n++){var i=e&255;t[r-n]=i,e=(e-i)/256}return t}o(vt,"longToByteArray");function Bt(){let e=Te()-We;return new Uint8Array([...vt(e),...H(10)])}o(Bt,"suidBytes");function so(){return ge(Bt(),22)}o(so,"suid");function ao(e){return Nt(Ge(e,16))}o(ao,"suidDate");function Nt(e){return new Date(We+e.slice(0,6).reduce((t,r)=>t*256+r,0))}o(Nt,"suidBytesDate");var J=b("zeed:emitter"),R=class{constructor(){this.subscribers={};this.subscribersOnAny=[];this.call=new Proxy({},{get:(t,r)=>(...n)=>this.emit(r,...n)})}async emit(t,...r){let n=!1;try{let i=this.subscribers[t]||[];if(this.subscribersOnAny.forEach(s=>s(t,...r)),i.length>0){let s=i.map(u=>{try{return N(u(...r))}catch(a){J.warn("emit warning:",a)}});n=!0,await Promise.all(s)}}catch(i){J.error("emit exception",i)}return n}onAny(t){this.subscribersOnAny.push(t)}on(t,r){let n=this.subscribers[t]||[];return n.push(r),this.subscribers[t]=n,()=>{this.off(t,r)}}onCall(t){for(let[r,n]of Object.entries(t))this.on(r,n)}once(t,r){let n=o(async(...i)=>(this.off(t,n),await N(r(...i))),"onceListener");return this.on(t,n),()=>{this.off(t,r)}}off(t,r){return this.subscribers[t]=(this.subscribers[t]||[]).filter(n=>r&&n!==r),this}removeAllListeners(t){return this.subscribers={},this}dispose(){this.subscribers={},this.subscribersOnAny=[]}};o(R,"Emitter");function po(){let e=ie().emitter;return e||(e=new R,ie().emitter=e),e}o(po,"getGlobalEmitter");var mo=new R;function yo(e,t){let r=Math.round(Math.random()*100);var n=[],i;let s=o((a,c)=>{let f={key:a,obj:c};n.push(f),i&&i()},"incoming");return t?e.on?e.on(t,a=>{s(t,a)}):e.addEventListener?e.addEventListener(t,a=>{s(t,a)}):J.error(r,"Cannot listen to key"):e.onAny?e.onAny((a,c)=>{s(a,c)}):J.error(r,"cannot listen to all for",e),o((a,c=!0)=>new Promise((f,d)=>{a||(a=t,a||n.length&&(a=n[0].key)),i=o(()=>{for(;n.length>0;){let m=n.shift();if(m.key===a)i=void 0,f(m.obj);else{if(c){J.warn(r,`Unhandled event ${a} with value: ${m.obj}`);continue}d(`Expected ${a}, but found ${m.key} with value=${m.obj}`),J.error(r,`Unhandled event ${a} with value: ${m.obj}`)}break}},"lazyResolve"),i()}),"on")}o(yo,"lazyListener");var xe=class extends R{constructor(){super(...arguments);this.id=Z()}close(){}};o(xe,"Channel");var ne=class extends xe{constructor(){super(...arguments);this.isConnected=!0}postMessage(t){var r;(r=this.other)==null||r.emit("message",{data:t,origin:"local",lastEventId:Z()})}};o(ne,"LocalChannel");function bo(){let e=new ne,t=new ne;return e.other=t,t.other=e,[e,t]}o(bo,"fakeWorkerPair");var Qe=class{async encode(t){return t}async decode(t){return t}};o(Qe,"NoopEncoder");var q=class{async encode(t){return se(t)}async decode(t){return ae(t)}};o(q,"JsonEncoder");var Ve=class{constructor(t){this.key=t}async encode(t){let r=se(t);return await Le(r,this.key)}async decode(t){let r=await Ue(t,this.key);return ae(r)}};o(Ve,"CryptoEncoder");var _e=o((e,t,r={})=>new Proxy(r,{get:(n,i)=>i in n?n[i]:(...s)=>e(i,s,t)}),"createPromiseProxy");function ko(e={}){let{name:t=z("hub"),encoder:r=new q,retryAfter:n=1e3,ignoreUnhandled:i=!0}=e,s=b(t),u={},a,c=[],f,d={},m=o(()=>{clearTimeout(f)},"dispose"),L=o(async()=>{if(clearTimeout(f),a){if(a.isConnected)for(;c.length;){let y=c[0];try{a.postMessage(await r.encode(y)),c.shift()}catch(g){s.warn("postMessage",g);break}}c.length>0&&n>0&&(f=setTimeout(L,n))}},"postNext"),M=o(async y=>{s("enqueue postMessage",y),c.push(y),await L()},"postMessage"),P=o(async y=>{a=y,a.on("connect",L),a.on("message",async g=>{s("onmessage",typeof g);let{name:E,args:S,id:T,result:k,error:$}=await r.decode(g.data);if(E){s(`name ${E} id ${T}`);try{if(u[E]==null)throw new Error(`handler for ${E} was not found`);let D=u[E](...S);C(D)&&(D=await D),s(`result ${D}`),T&&M({id:T,result:D})}catch(D){let v=D instanceof Error?D:new Error(de(D));s.warn("execution error",v.name),M({id:T,error:{message:v.message,stack:v.stack,name:v.name}})}}else if(T)if(s(`response for id=${T}: result=${k}, error=${$}`),d[T]==null)k===void 0?s(`skip response for ${T}`):s.warn(`no response hook for ${T}`);else{let[D,v]=d[T];if(D&&v)if(delete d[T],$){let K=new Error($.message);K.stack=$.stack,K.name=$.name,s.warn("reject",K.name),v(K)}else s("resolve",k),D(k)}else i||s.warn("Unhandled message",g)}),L()},"connect"),x=o(async(y,g,E={})=>{let{timeout:S=5e3}=E,T=Z();return M({name:y,args:g,id:T}),$e(new Promise((k,$)=>d[T]=[k,$]),S)},"fetchMessage");return e.channel&&P(e.channel),{dispose:m,connect:P,listen(y){Object.assign(u,y)},send(){return _e(x,{},{options(y){return _e(x,I({},y))}})}}}o(ko,"useMessageHub");var be=class extends R{constructor(t){super();this.publish=this.emit;this.subscribe=this.on;var u;let{name:r,encoder:n=new q,channel:i,debug:s=!1}=t;this.channel=i,this.encoder=n,this.debug=s,this.name=(u=r!=null?r:this.channel.id)!=null?u:z("pubsub"),this.log=b(`${this.shortId}`),this.debug&&(this.channel.on("connect",()=>{this.log("channel connected")}),this.channel.on("disconnect",()=>{this.log("channel disconnected")})),this.channel.on("message",async({data:a})=>{let c=await this.encoder.decode(a);if(this.debug?this.log(`channel message, event=${c==null?void 0:c.event}, info=`,c):this.log(`channel message, event=${c==null?void 0:c.event}`),c){let{event:f,args:d}=c;await this.emitSuper(f,...d)}})}get shortId(){return this.name.substr(0,6)}async emitSuper(t,...r){return await super.emit(t,...r)}async emit(t,...r){try{if(this.debug?this.log(`emit(${t})`,t):this.log(`emit(${t})`,r.length),!this.channel.isConnected)return this.log.warn("channel not connected"),!1;let n=await this.encoder.encode({event:t,args:r});return this.channel.postMessage(n),!0}catch(n){this.log.warn(`emit(${t})`,n)}return!1}};o(be,"PubSub");function No(e){return new be(e)}o(No,"usePubSub");function Jo(){let e=!0;return(t,r)=>{let n=!1;if(e){e=!1;try{t(),n=!0}finally{e=!0}}else r!==void 0&&r();return n}}o(Jo,"useMutex");function qo(){let e=!0;return async(t,r)=>{let n=!1;if(e){e=!1;try{let i=t();C(i)&&await i,n=!0}finally{e=!0}}else if(r!==void 0){let i=r();C(i)&&await i}return n}}o(qo,"useAsyncMutex");var G=b("network"),oe={cache:"no-cache",redirect:"follow"};async function Ze(e,t={},r=fetch){try{let n=await r(e,t);if(n.status<400)return n;try{G.warn(`Fetch of ${e} with ${t} returned status=${n.status}`),G.warn(`Response: ${await n.text()}`)}catch(i){G.error("Exception:",i)}}catch(n){G.error("fetchBasic",n)}}o(Ze,"fetchBasic");async function Qo(e,t={},r=fetch){try{let n=await Ze(e,I(Q(I({method:"GET"},oe),{headers:{}}),t),r);if(n)return await n.json()}catch(n){G.error("fetchJSON error:",n)}}o(Qo,"fetchJson");function Vo(e,t="POST"){return Q(I({method:t},oe),{headers:{"Content-Type":"application/x-www-form-urlencoded; charset=utf-8"},body:qe(e)})}o(Vo,"fetchOptionsFormURLEncoded");function _o(e,t="POST"){return Q(I({method:t},oe),{headers:{"Content-Type":"application/json; charset=utf-8",Accept:"application/json"},body:JSON.stringify(e)})}o(_o,"fetchOptionsJson");async function Zo(e,t={},r=fetch){try{let n=await Ze(e,I(Q(I({method:"GET"},oe),{headers:{}}),t),r);if(n)return await n.text()}catch(n){G.error("fetchHTML error:",n)}}o(Zo,"fetchText");function Ke(){if(typeof window!="undefined")return window}o(Ke,"getWindow");function zt(){if(typeof navigator!="undefined")return navigator}o(zt,"getNavigator");function Yo(){var e;return((e=Ke())!=null?e:typeof WorkerGlobalScope!="undefined")?self:typeof global!="undefined"?global:Function("return this;")()}o(Yo,"getGlobal");var h=zt(),A=Ke();function Ht(e={ios:!1,macos:!1,windows:!1,beaker:!1,electron:!1,wkwebview:!1,pwa:!1,pwaInstalled:!1,browser:!1,node:!1,worker:!1,jest:!1,macosNative:!1,iosNative:!1,appleNative:!1,touch:!1}){var t,r,n,i,s,u,a,c,f;return e.ios=((t=h==null?void 0:h.platform)==null?void 0:t.match(/(iPhone|iPod|iPad)/i))!=null,e.macos=!!((r=h==null?void 0:h.platform)==null?void 0:r.startsWith("Mac")),e.windows=!!((n=h==null?void 0:h.platform)==null?void 0:n.startsWith("Win")),e.beaker=(A==null?void 0:A.beaker)!=null,e.electron=(((s=(i=h==null?void 0:h.userAgent)==null?void 0:i.toLowerCase())==null?void 0:s.indexOf(" electron/"))||-1)>-1&&!e.beaker,e.wkwebview=((u=A==null?void 0:A.webkit)==null?void 0:u.messageHandlers)!=null,e.pwa=(h==null?void 0:h.serviceWorker)!=null,e.pwaInstalled=(h==null?void 0:h.standalone)||((c=(a=A==null?void 0:A.matchMedia)==null?void 0:a.call(A,"(display-mode: standalone)"))==null?void 0:c.matches),e.node=typeof process!="undefined"&&((f=process==null?void 0:process.release)==null?void 0:f.name)==="node",e.browser=!e.electron&&!e.wkwebview&&!e.node,e.worker=typeof WorkerGlobalScope!="undefined"&&self instanceof WorkerGlobalScope,e.jest=typeof jest!="undefined",e.macosNative=e.wkwebview&&e.macos,e.iosNative=e.wkwebview&&e.ios,e.appleNative=e.wkwebview,e.touch=A&&"ontouchstart"in A||((h==null?void 0:h.maxTouchPoints)||0)>1||(h==null?void 0:h.msPointerEnabled)&&(A==null?void 0:A.MSGesture)||(A==null?void 0:A.DocumentTouch)&&document instanceof DocumentTouch,e}o(Ht,"detect");var Jt=o(()=>typeof window!="undefined"&&globalThis===window,"isBrowser"),Xo=Ht();function ei(e){Jt()?window.addEventListener("beforeunload",e):typeof process!="undefined"&&process.on("exit",()=>e)}o(ei,"useExitHandler");function ri(e={}){let{maxParallel:t=3}=e,r=0,n=0,i={};function s(){if(r>=t)return;let a=Object.values(i).filter(c=>!c.running);if(a.length>0){let c;for(let f of a)(c==null||f.priority<c.priority)&&(c=f);c&&(c.running=!0,++r,c.task().then(f=>{(c==null?void 0:c.id)&&delete i[c.id],--r,s()}).catch(f=>{(c==null?void 0:c.id)&&delete i[c.id],--r,s()}))}}o(s,"performNext");function u(a){let c=i[a];c&&c.running!==!0&&delete i[a]}return o(u,"cancel"),{cancel:u,enqueue(a,c){return i[a]==null&&(i[a]={id:a,task:c,priority:++n,running:!1},s()),()=>u(a)}}}o(ri,"usePool");var qt=b("zeed:queue"),Ye=class{constructor(t={}){this.queue=[];this.isPaused=!1;this.waitToFinish=[];let{name:r=z("queue"),logLevel:n}=t;this.name=r,this.log=b(`zeed:queue:${r}`),this.log.level=n!=null?n:1/0}async performNext(){if(this.log("performNext, queue.length =",this.queue.length),this.currentTask!=null){this.log("performNext => skip while another task is running");return}if(this.isPaused){this.log("performNext => skip while is paused");return}for(;this.currentTask==null&&!this.isPaused;){let t=this.queue.shift();if(this.log(`performNext => ${t==null?void 0:t.name}`),t==null)break;let{name:r,task:n,resolve:i}=t;this.currentTask=n();let s;try{this.log.info(`start task ${r}`),s=await this.currentTask,this.log(`finished task ${r} with result =`,s)}catch(u){qt.warn("Error performing task",u)}i(s),this.currentTask=void 0}for(;this.waitToFinish.length>0;)this.waitToFinish.shift()()}async enqueue(t,r={}){let{immediate:n=!1,name:i=z(this.name)}=r;return n?(this.log.info(`immediate execution ${i}`),await t()):(this.log(`enqueue ${i}`),new Promise(s=>{this.queue.push({name:i,task:t,resolve:s}),this.performNext()}))}async enqueueReentrant(t,r={}){return this.enqueue(t,{immediate:this.currentTask!=null,name:r.name})}async cancelAll(t=!0){this.log("cancelAll");let r=this.queue.map(n=>n.resolve);this.queue=[],r.forEach(n=>n(void 0)),await this.wait()}async pause(){this.log("pause"),this.isPaused=!0,await this.wait()}resume(){this.log("resume"),this.isPaused=!1,this.performNext()}async wait(){if(this.log("wait"),!(this.currentTask==null&&(this.queue.length===0||this.isPaused)))return new Promise(t=>{this.waitToFinish.push(t)})}};o(Ye,"SerialQueue");var pi=b("zeed:memstorage"),Xe=class{constructor(t={}){this.store={}}setItem(t,r){this.store[t]=ye(r)}getItem(t){if(this.store.hasOwnProperty(t))return ye(this.store[t])}removeItem(t){delete this.store[t]}clear(){this.store={}}allKeys(){return Object.keys(this.store)}};o(Xe,"MemStorage");var j=!1,W=j?b("zeed:throttle"):()=>{};function yi(e,t={}){let{delay:r=100,trailing:n=!0,leading:i=!0}=t,s=0,u=0,a=0,c=Date.now();function f(){s&&(clearTimeout(s),s=void 0)}o(f,"clearExistingTimeout");function d(...m){let L=Date.now(),M=this,P=L-u;function x(){let g=Date.now();return`total ${(g-c).toFixed(1)}ms - elapsed ${(g-u).toFixed(1)}ms - visited ${a}x`}o(x,"debugElapsed");function y(){a=0,u=Date.now(),e.apply(M,m)}if(o(y,"exec"),P>r||!s){j&&W("elapsed",x()),i&&(P>r?(j&&W("\u{1F680} leading",x()),y()):++a);let g=P>r?r:r-P;W(`\u23F1 start timeout with ${g.toFixed(1)}ms}`,x()),f(),u=L,s=setTimeout(()=>{j&&W("\u23F1 reached timeout",x()),s=0,n&&(!i||a>0)&&(j&&W("\u{1F680} trailing",x()),y())},g)}else++a,j&&W("visited",x())}return o(d,"wrapper"),d.cancel=f,d.dispose=f,d}o(yi,"throttle");function gi(e,t={}){let{delay:r=100}=t,n=0;function i(){n&&(clearTimeout(n),n=0)}o(i,"clearExistingTimeout");function s(...u){let a=this;i(),n=setTimeout(()=>{n=0,e.apply(a,u)},r)}return o(s,"wrapper"),s.cancel=i,s.dispose=i,s}o(gi,"debounce");export{Ae as a,et as b,U as c,jt as d,Wt as e,Qt as f,Vt as g,Me as h,se as i,ae as j,H as k,Yt as l,Xt as m,Le as n,Ue as o,tr as p,it as q,nr as r,ce as s,or as t,fe as u,st as v,at as w,V as x,ut as y,ar as z,ur as A,cr as B,le as C,fr as D,lr as E,ct as F,pr as G,ft as H,De as I,dr as J,mr as K,yr as L,gr as M,hr as N,xr as O,O as P,Mr as Q,Pr as R,Er as S,Lr as T,Ur as U,Cr as V,Dr as W,kr as X,Sr as Y,Ir as Z,Fr as _,dt as $,Rr as aa,$r as ba,pe as ca,Nr as da,zr as ea,Hr as fa,yt as ga,gt as ha,ht as ia,de as ja,Jr as ka,qr as la,Gr as ma,jr as na,xt as oa,Qr as pa,Vr as qa,B as ra,F as sa,_ as ta,Ie as ua,Kr as va,Yr as wa,Xr as xa,en as ya,tn as za,rn as Aa,nn as Ba,on as Ca,un as Da,cn as Ea,Fe as Fa,fn as Ga,Re as Ha,ln as Ia,$e as Ja,pn as Ka,C as La,N as Ma,ve as Na,w as Oa,yn as Pa,gn as Qa,hn as Ra,Be as Sa,bn as Ta,wn as Ua,An as Va,Mn as Wa,Pn as Xa,Ln as Ya,Cn as Za,He as _a,Je as $a,kn as ab,Dt as bb,On as cb,St as db,qe as eb,Fn as fb,$n as gb,vn as hb,Bn as ib,ye as jb,Nn as kb,Ot as lb,qn as mb,Gn as nb,jn as ob,Wn as pb,Qn as qb,_n as rb,je as sb,eo as tb,Z as ub,to as vb,ro as wb,no as xb,z as yb,oo as zb,io as Ab,Bt as Bb,so as Cb,ao as Db,Nt as Eb,R as Fb,po as Gb,mo as Hb,yo as Ib,xe as Jb,ne as Kb,bo as Lb,Qe as Mb,q as Nb,Ve as Ob,_e as Pb,ko as Qb,be as Rb,No as Sb,Jo as Tb,qo as Ub,Ze as Vb,Qo as Wb,Vo as Xb,_o as Yb,Zo as Zb,Ke as _b,zt as $b,Yo as ac,Ht as bc,Jt as cc,Xo as dc,ei as ec,ri as fc,Ye as gc,Xe as hc,yi as ic,gi as jc};
5
+ //# sourceMappingURL=chunk-PSHR634P.js.map