zeed 0.7.147 → 0.7.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,10 @@ import {
3
3
  LoggerBrowserSetupDebugFactory,
4
4
  selectColor,
5
5
  supportsColors
6
- } from "./chunk-2KDHZAAM.js";
6
+ } from "./chunk-T5YP6WMZ.js";
7
7
  import {
8
8
  isBrowser
9
- } from "./chunk-Z7MQRVMT.js";
9
+ } from "./chunk-XX52WKOZ.js";
10
10
  import {
11
11
  Logger,
12
12
  __name,
@@ -14,7 +14,7 @@ import {
14
14
  getTimestamp,
15
15
  useLevelFilter,
16
16
  useNamespaceFilter
17
- } from "./chunk-XWMV2GEI.js";
17
+ } from "./chunk-LMZGFDSJ.js";
18
18
 
19
19
  // src/browser/base64.ts
20
20
  var { error } = Logger("zeed:base64");
@@ -220,20 +220,19 @@ var log2 = Logger("zeed:localstorage");
220
220
  var LocalStorage = class {
221
221
  constructor(opt) {
222
222
  this.pretty = false;
223
- var _a, _b;
224
223
  log2.assert(opt.name, "name required");
225
224
  this.name = opt.name;
226
225
  this.prefix = `${opt.name}$`;
227
- this.objectToString = (_a = opt.objectToString) != null ? _a : (data) => {
226
+ this.objectToString = opt.objectToString ?? ((data) => {
228
227
  return this.pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
229
- };
230
- this.objectFromString = (_b = opt.objectFromString) != null ? _b : (data) => {
228
+ });
229
+ this.objectFromString = opt.objectFromString ?? ((data) => {
231
230
  try {
232
231
  return JSON.parse(data);
233
232
  } catch (err) {
234
233
  log2.warn(`LocalStorage parse error '${err}' in`, data);
235
234
  }
236
- };
235
+ });
237
236
  }
238
237
  setItem(key, value) {
239
238
  const data = this.objectToString(value);
@@ -330,4 +329,4 @@ export {
330
329
  LocalStorage,
331
330
  LoggerBrowserClassicHandler
332
331
  };
333
- //# sourceMappingURL=chunk-WG7HOP7M.js.map
332
+ //# sourceMappingURL=chunk-BPJRSPRG.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":[]}
@@ -2,7 +2,7 @@ import {
2
2
  cloneObject,
3
3
  renderMessages,
4
4
  toValidFilename
5
- } from "./chunk-Z7MQRVMT.js";
5
+ } from "./chunk-XX52WKOZ.js";
6
6
  import {
7
7
  Logger,
8
8
  __name,
@@ -10,7 +10,7 @@ import {
10
10
  getTimestamp,
11
11
  useLevelFilter,
12
12
  useNamespaceFilter
13
- } from "./chunk-XWMV2GEI.js";
13
+ } from "./chunk-LMZGFDSJ.js";
14
14
 
15
15
  // src/node/clipboard.ts
16
16
  import { spawn } from "child_process";
@@ -60,7 +60,7 @@ function parse(src, options = {}) {
60
60
  }
61
61
  __name(parse, "parse");
62
62
  function stringToPath(value, defaultValue = ".") {
63
- return resolve(process.cwd(), value != null ? value : defaultValue);
63
+ return resolve(process.cwd(), value ?? defaultValue);
64
64
  }
65
65
  __name(stringToPath, "stringToPath");
66
66
  function valueToPath(value, defaultValue = "") {
@@ -71,9 +71,8 @@ function valueToPath(value, defaultValue = "") {
71
71
  __name(valueToPath, "valueToPath");
72
72
  var toPath = valueToPath;
73
73
  function setupEnv(options = {}) {
74
- var _a2, _b2, _c, _d;
75
- const dotenvPath = (_b2 = options == null ? void 0 : options.path) != null ? _b2 : toPath((_a2 = options == null ? void 0 : options.filename) != null ? _a2 : ".env");
76
- const encoding = (_c = options == null ? void 0 : options.encoding) != null ? _c : "utf8";
74
+ const dotenvPath = (options == null ? void 0 : options.path) ?? toPath((options == null ? void 0 : options.filename) ?? ".env");
75
+ const encoding = (options == null ? void 0 : options.encoding) ?? "utf8";
77
76
  const debug = (options == null ? void 0 : options.debug) || false;
78
77
  if (debug !== true)
79
78
  log.level = Infinity /* off */;
@@ -81,7 +80,7 @@ function setupEnv(options = {}) {
81
80
  const parsedEnv = fs.existsSync(dotenvPath) ? parse(fs.readFileSync(dotenvPath, { encoding }), { debug }) : {};
82
81
  const parsedEnvLocal = fs.existsSync(dotenvPath + ".local") ? parse(fs.readFileSync(dotenvPath + ".local", { encoding }), { debug }) : {};
83
82
  const parsed = Object.assign({}, parsedEnv, parsedEnvLocal);
84
- let env = (_d = options == null ? void 0 : options.env) != null ? _d : process.env;
83
+ let env = (options == null ? void 0 : options.env) ?? process.env;
85
84
  Object.entries(parsed).forEach(([key, value]) => {
86
85
  if (typeof (options == null ? void 0 : options.prefix) === "string") {
87
86
  key = (options == null ? void 0 : options.prefix) + key;
@@ -119,25 +118,24 @@ var FileStorage = class {
119
118
  this.store = {};
120
119
  this.fileKeys = void 0;
121
120
  this.pretty = false;
122
- var _a2, _b2, _c, _d;
123
121
  this.dirname = resolve2(process.cwd(), opt.path || ".fileStorage");
124
122
  this.pretty = !!opt.pretty;
125
- this.extension = (_a2 = opt.extension) != null ? _a2 : ".json";
123
+ this.extension = opt.extension ?? ".json";
126
124
  if (opt.extension && !this.extension.startsWith(".")) {
127
125
  this.extension = "." + this.extension;
128
126
  }
129
127
  this.extensionLength = this.extension.length;
130
- this.objectToString = (_b2 = opt.objectToString) != null ? _b2 : (data) => {
128
+ this.objectToString = opt.objectToString ?? ((data) => {
131
129
  return this.pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
132
- };
133
- this.objectFromString = (_c = opt.objectFromString) != null ? _c : (data) => {
130
+ });
131
+ this.objectFromString = opt.objectFromString ?? ((data) => {
134
132
  try {
135
133
  return JSON.parse(data);
136
134
  } catch (err) {
137
135
  log2.warn(`fileStorage parse error '${err}' in`, data);
138
136
  }
139
- };
140
- this.keyToFilename = (_d = opt.keyToFilename) != null ? _d : toValidFilename;
137
+ });
138
+ this.keyToFilename = opt.keyToFilename ?? toValidFilename;
141
139
  }
142
140
  setItem(key, value) {
143
141
  this.store[key] = cloneObject(value);
@@ -216,7 +214,7 @@ var FileStorage = class {
216
214
  __name(FileStorage, "FileStorage");
217
215
 
218
216
  // src/node/fs.ts
219
- import { mkdir, rm, stat } from "fs/promises";
217
+ import { mkdir, rm, stat, readFile, writeFile } from "fs/promises";
220
218
  import { join as joinPath } from "path";
221
219
  async function exists(path) {
222
220
  try {
@@ -243,6 +241,17 @@ async function removeFolder(...parts) {
243
241
  return path;
244
242
  }
245
243
  __name(removeFolder, "removeFolder");
244
+ async function readText(...parts) {
245
+ const path = joinPath(...parts);
246
+ if (await exists(path)) {
247
+ return await readFile(path, "utf-8");
248
+ }
249
+ }
250
+ __name(readText, "readText");
251
+ async function writeText(path, content) {
252
+ await writeFile(path, content, "utf-8");
253
+ }
254
+ __name(writeText, "writeText");
246
255
 
247
256
  // src/node/log-file.ts
248
257
  import { createWriteStream, mkdirSync as mkdirSync2 } from "fs";
@@ -539,14 +548,13 @@ try {
539
548
 
540
549
  // src/node/log-context-node.ts
541
550
  function setupLogContextNode() {
542
- var _a2;
543
551
  let handlers = [
544
552
  LoggerNodeHandler({
545
553
  padding: 32,
546
554
  nameBrackets: false
547
555
  })
548
556
  ];
549
- let logFilePath = (_a2 = process.env.ZEED_LOG) != null ? _a2 : process.env.LOG;
557
+ let logFilePath = process.env.ZEED_LOG ?? process.env.LOG;
550
558
  if (logFilePath) {
551
559
  handlers.unshift(LoggerFileHandler(toPath(logFilePath)));
552
560
  }
@@ -565,6 +573,8 @@ export {
565
573
  exists,
566
574
  ensureFolder,
567
575
  removeFolder,
576
+ readText,
577
+ writeText,
568
578
  LoggerFileHandler,
569
579
  getStackLlocationList,
570
580
  getSourceLocation,
@@ -576,4 +586,4 @@ export {
576
586
  loggerStackTraceDebug,
577
587
  LoggerNodeHandler
578
588
  };
579
- //# sourceMappingURL=chunk-7W3LTMPP.js.map
589
+ //# sourceMappingURL=chunk-CLY4VF5A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/node/clipboard.ts","../src/node/env.ts","../src/node/filestorage.ts","../src/node/fs.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":["import { spawn } from \"child_process\"\n\n/** Copy string to clipboard */\nexport function pbcopy(data: string) {\n return new Promise(async (resolve, reject) => {\n const proc = spawn(\"pbcopy\")\n proc.on(\"error\", (err: any) => reject(err))\n proc.on(\"close\", () => resolve(data))\n proc.stdin.write(data)\n proc.stdin.end()\n })\n}\n","// (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 String(src)\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","import { mkdir, rm, stat, readFile, writeFile } from \"node:fs/promises\"\nimport { join as joinPath } from \"node:path\"\n\nexport async function exists(path: string): Promise<boolean> {\n try {\n await stat(path)\n } catch (err) {\n return false\n }\n return true\n}\n\nexport async function ensureFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (!(await exists(path))) {\n await mkdir(path, { recursive: true })\n }\n return path\n}\n\nexport async function removeFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (await exists(path)) {\n await rm(path, { recursive: true })\n }\n return path\n}\n\nexport async function readText(\n ...parts: string[]\n): Promise<string | undefined> {\n const path = joinPath(...parts)\n if (await exists(path)) {\n return await readFile(path, \"utf-8\")\n }\n}\n\nexport async function writeText(path: string, content: string): Promise<void> {\n await writeFile(path, content, \"utf-8\")\n}\n\n// todo: writeBinary, readBinary\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(\n /^\\s+at.*(\\((.*)\\)|file:\\/\\/(.*)$)|\\s*at\\s(\\/.*)$/\n )\n if (m) {\n let line = m[3] || m[2] || m[4]\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:\\/\\/(.*)$)|\\s*at\\s(\\/.*)$/)\n if (m) {\n let line = m[3] || m[2] || m[4]\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":";;;;;;;;;;;;;;;AAAA;AAGO,gBAAgB,MAAc;AACnC,SAAO,IAAI,QAAQ,OAAO,UAAS,WAAW;AAC5C,UAAM,OAAO,MAAM,QAAQ;AAC3B,SAAK,GAAG,SAAS,CAAC,QAAa,OAAO,GAAG,CAAC;AAC1C,SAAK,GAAG,SAAS,MAAM,SAAQ,IAAI,CAAC;AACpC,SAAK,MAAM,MAAM,IAAI;AACrB,SAAK,MAAM,IAAI;AAAA,EACjB,CAAC;AACH;AARgB;;;ACIhB;AACA;AAEA,IAAM,MAAM,OAAO,UAAU;AAE7B,IAAM,UAAU;AAChB,IAAM,iBAAiB;AACvB,IAAM,cAAc;AACpB,IAAM,iBAAiB;AAavB,eAAe,KAAa,UAAsB,CAAC,GAAG;AACpD,MAAI,MAA8B,CAAC;AAGnC,SAAO,GAAG,EACP,MAAM,cAAc,EACpB,QAAQ,SAAU,MAAM,KAAK;AAE5B,UAAM,cAAc,KAAK,MAAM,cAAc;AAK7C,QAAI,eAAe,MAAM;AACvB,YAAM,MAAM,YAAY;AAExB,UAAI,MAAM,YAAY,MAAM;AAC5B,YAAM,MAAM,IAAI,SAAS;AACzB,YAAM,iBAAiB,IAAI,OAAO,OAAO,IAAI,SAAS;AACtD,YAAM,iBAAiB,IAAI,OAAO,OAAO,IAAI,SAAS;AAGtD,UAAI,kBAAkB,gBAAgB;AACpC,cAAM,IAAI,UAAU,GAAG,GAAG;AAG1B,YAAI,gBAAgB;AAClB,gBAAM,IAAI,QAAQ,aAAa,OAAO;AAAA,QACxC;AAAA,MACF,OAAO;AAEL,cAAM,IAAI,KAAK;AAAA,MACjB;AACA,UAAI,OAAO;AAAA,IACb,OAAO;AACL,UAAI,MACF,iDAAiD,MAAM,MAAM,MAC/D;AAAA,IACF;AAAA,EACF,CAAC;AAGH,SAAO;AACT;AA3CS;AAgDF,sBACL,OACA,eAAuB,KACf;AACR,SAAO,QAAQ,QAAQ,IAAI,GAAG,SAAS,YAAY;AACrD;AALgB;AAOT,qBAAqB,OAAa,eAAe,IAAY;AAClE,MAAI,SAAS;AAAM,YAAQ;AAC3B,SAAO,aAAa,OAAO,KAAK,EAAE,KAAK,GAAG,YAAY;AACxD;AAHgB;AAKT,IAAM,SAAS;AAGf,kBAAkB,UAAsB,CAAC,GAAG;AACjD,QAAM,aACJ,oCAAS,SAAQ,OAAO,oCAAS,aAAY,MAAM;AACrD,QAAM,WAA2B,oCAAS,aAAY;AACtD,QAAM,QAAQ,oCAAS,UAAS;AAEhC,MAAI,UAAU;AAAM,QAAI,QAAQ;AAEhC,MAAI;AAEF,UAAM,YAAY,GAAG,WAAW,UAAU,IACtC,MAAM,GAAG,aAAa,YAAY,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAC1D,CAAC;AACL,UAAM,iBAAiB,GAAG,WAAW,aAAa,QAAQ,IACtD,MAAM,GAAG,aAAa,aAAa,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IACrE,CAAC;AAEL,UAAM,SAAiC,OAAO,OAC5C,CAAC,GACD,WACA,cACF;AACA,QAAI,MAAM,oCAAS,QAAO,QAAQ;AAElC,WAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,WAAW;AAC/C,UAAI,OAAO,oCAAS,YAAW,UAAU;AACvC,cAAM,oCAAS,UAAS;AAAA,MAC1B;AACA,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACnD,YAAI,SAAS,MAAM;AACjB,cAAI,KAAK,WAAW,SAAS,OAAO;AACpC,cAAI,OAAO;AAAA,QACb;AAAA,MACF,OAAO;AACL,YAAI,MAAM,IAAI,qDAAqD;AAAA,MACrE;AAAA,IACF,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB,SAAS,GAAP;AACA,QAAI,MAAM,CAAC;AACX,WAAO,EAAE,OAAO,EAAE;AAAA,EACpB;AACF;AA1CgB;;;ACzFhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAMA,IAAM,OAAM,OAAO,kBAAkB;AAW9B,IAAM,cAAN,MAAwD;AAAA,EAW7D,YAAY,MAA0B,CAAC,GAAG;AAV1C,SAAQ,QAAkC,CAAC;AAE3C,SAAQ,WAAsB;AAC9B,SAAQ,SAAkB;AAQxB,SAAK,UAAU,SAAQ,QAAQ,IAAI,GAAG,IAAI,QAAQ,cAAc;AAChE,SAAK,SAAS,CAAC,CAAC,IAAI;AACpB,SAAK,YAAY,IAAI,aAAa;AAElC,QAAI,IAAI,aAAa,CAAC,KAAK,UAAU,WAAW,GAAG,GAAG;AACpD,WAAK,YAAY,MAAM,KAAK;AAAA,IAC9B;AACA,SAAK,kBAAkB,KAAK,UAAU;AAEtC,SAAK,iBACH,IAAI,kBACH,EAAC,SAAsB;AACtB,aAAO,KAAK,SACR,KAAK,UAAU,MAAM,MAAM,CAAC,IAC5B,KAAK,UAAU,IAAI;AAAA,IACzB;AAEF,SAAK,mBACH,IAAI,oBACH,EAAC,SAAiB;AACjB,UAAI;AACF,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB,SAAS,KAAP;AACA,aAAI,KAAK,4BAA4B,WAAW,IAAI;AAAA,MACtD;AAAA,IACF;AAEF,SAAK,gBAAgB,IAAI,iBAAiB;AAAA,EAC5C;AAAA,EAEA,QAAQ,KAAa,OAAgB;AACnC,SAAK,MAAM,OAAO,YAAY,KAAK;AACnC,QAAI;AACF,YAAM,OAAO,KAAK,eAAe,KAAK;AACtC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,gBAAU,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5C,oBAAc,MAAM,MAAM,MAAM;AAAA,IAClC,SAAS,KAAP;AACA,WAAI,MAAM,iBAAiB,GAAG;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,QAAQ,KAAqB;AAC3B,WAAO,SAAQ,KAAK,SAAS,KAAK,cAAc,GAAG,IAAI,KAAK,SAAS;AAAA,EACvE;AAAA,EAEA,UAAU,KAAqB;AAC7B,UAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,WAAO,OAAO,KAAK,aAAa,IAAI,CAAC;AAAA,EACvC;AAAA,EAEA,QAAQ,KAA4B;AAClC,QAAI,QAAQ,KAAK,MAAM;AAGvB,QAAI,UAAU;AAAM;AAEpB,QAAI,SAAS,MAAM;AACjB,aAAO,YAAY,KAAK;AAAA,IAC1B;AAEA,QAAI;AACF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,OAAO,aAAa,MAAM,MAAM;AACtC,UAAI,QAAQ,MAAM;AAChB,cAAM,SAAQ,KAAK,iBAAiB,IAAI;AACxC,aAAK,MAAM,OAAO;AAClB,eAAO;AAAA,MACT;AAAA,IACF,SAAS,KAAP;AACA,WAAI,KAAK,iBAAiB,GAAG;AAC7B,WAAK,MAAM,OAAO;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,WAAW,KAAmB;AAC5B,WAAO,KAAK,MAAM;AAClB,QAAI,KAAK,YAAY,MAAM;AACzB,YAAM,QAAgB,KAAK,SAAS,QAAQ,GAAG;AAC/C,UAAI,UAAU,IAAI;AAChB,aAAK,SAAS,OAAO,OAAO,CAAC;AAAA,MAC/B;AAAA,IACF;AACA,QAAI;AACF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,iBAAW,IAAI;AAAA,IACjB,SAAS,KAAP;AAAA,IAAa;AAAA,EACjB;AAAA,EAEA,QAAc;AACZ,SAAK,WAAW,CAAC;AACjB,SAAK,QAAQ,CAAC;AACd,WAAO,KAAK,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EACvD;AAAA,EAEA,UAAoB;AAClB,QAAI,KAAK,YAAY,MAAM;AACzB,UAAI;AACF,aAAK,WACH,YAAY,KAAK,SAAS,EAAE,eAAe,KAAK,CAAC,EAC9C,OACC,CAAC,SACC,CAAC,KAAK,YAAY,KAAK,KAAK,KAAK,SAAS,KAAK,SAAS,CAC5D,EACC,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,GAAG,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC;AAAA,MACpE,SAAS,KAAP;AAAA,MAAa;AAAA,IACjB;AACA,QAAI,OAAO,CAAC,GAAI,KAAK,YAAY,CAAC,CAAE;AACpC,aAAS,OAAO,OAAO,KAAK,KAAK,KAAK,GAAG;AACvC,UAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACvB,aAAK,KAAK,GAAG;AAAA,MACf;AAAA,IACF;AACA,SAAK,KAAK;AACV,WAAO;AAAA,EACT;AACF;AAhIa;;;AC3Bb;AACA;AAEA,sBAA6B,MAAgC;AAC3D,MAAI;AACF,UAAM,KAAK,IAAI;AAAA,EACjB,SAAS,KAAP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAPsB;AAStB,+BAAsC,OAAkC;AACtE,QAAM,OAAO,SAAS,GAAG,KAAK;AAC9B,MAAI,CAAE,MAAM,OAAO,IAAI,GAAI;AACzB,UAAM,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EACvC;AACA,SAAO;AACT;AANsB;AAQtB,+BAAsC,OAAkC;AACtE,QAAM,OAAO,SAAS,GAAG,KAAK;AAC9B,MAAI,MAAM,OAAO,IAAI,GAAG;AACtB,UAAM,GAAG,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACA,SAAO;AACT;AANsB;AAQtB,2BACK,OAC0B;AAC7B,QAAM,OAAO,SAAS,GAAG,KAAK;AAC9B,MAAI,MAAM,OAAO,IAAI,GAAG;AACtB,WAAO,MAAM,SAAS,MAAM,OAAO;AAAA,EACrC;AACF;AAPsB;AAStB,yBAAgC,MAAc,SAAgC;AAC5E,QAAM,UAAU,MAAM,SAAS,OAAO;AACxC;AAFsB;;;ACnCtB;AACA;AAKA,IAAI,aAAkC,CAAC;AAEhC,2BAA2B,MAAc,MAAyB,CAAC,GAAG;AAC3E,QAAM,EAAE,QAAQ,cAAc,SAAS,QAAQ;AAC/C,SAAO,SAAQ,QAAQ,IAAI,GAAG,IAAI;AAClC,aAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5C,MAAI,SAAS,kBAAkB,MAAM,EAAE,OAAO,IAAI,CAAC;AAEnD,QAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAM,eAAe,eAAe,KAAK;AACzC,SAAO,CAAC,QAAoB;AAC1B,QAAI,CAAC,aAAa,IAAI,KAAK;AAAG;AAC9B,QAAI,CAAC,iBAAiB,IAAI,IAAI;AAAG;AAEjC,UAAM,QAAO,IAAI,KAAK,EAAE,YAAY;AACpC,QAAI,OAAO,IAAI,QAAQ;AACvB,QAAI,QAAQ,WAAW,QAAQ;AAC/B,QAAI,SAAS,MAAM;AACjB,iBAAW,QAAQ;AAAA,IACrB;AAEA,QAAI,OAAiB;AAAA,MACnB,IAAI,QAAQ;AAAA,MACZ,eAAe,IAAI,UAAU,EAAE,QAAQ,MAAM,CAAC;AAAA,IAChD;AAEA,sBAAkB,OAAsB;AACtC,aAAO,MAAM,MAAK,KAAK,GAAI,IAAI,IAAI;AAAA,IACrC;AAFS;AAIT,YAAQ,IAAI;AAAA,WACL;AACH,cAAM,OAAM,SAAS,GAAG,IAAI;AAC5B;AAAA,WACG;AACH,cAAM,OAAM,SAAS,GAAG,IAAI;AAC5B;AAAA,WACG;AACH,cAAM,OAAM,SAAS,GAAG,IAAI;AAC5B;AAAA;AAEA,cAAM,OAAM,SAAS,GAAG,IAAI;AAC5B;AAAA;AAAA,EAEN;AACF;AA3CgB;;;ACRhB;AAEO,+BAA+B,OAAsB;AAJ5D;AAKE,MAAI,OAAO,UAAU;AAAU,WAAO,CAAC;AAEvC,SACE,8CACI,MAAM,UADV,oBAEI,IAAI,CAAC,YAAY;AACjB,QAAI,IAAI,QAAQ,MACd,kDACF;AACA,QAAI,GAAG;AACL,UAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7B,UAAI,KAAK,SAAS,GAAG;AAAG,eAAO,KAAK,MAAM,GAAG,EAAE;AAC/C,aAAO;AAAA,IACT;AAAA,EACF,OAXF,oBAYI,OAAO,CAAC,MAAM,KAAK,UAAS,CAAC;AAErC;AAlBgB;AAoBhB,IAAM,MAAM,SAAQ,QAAQ,IAAI,CAAC;AAxBjC;AAyBA,IAAM,OAAO,eAAQ,QAAR,mBAAa,QAAO,SAAQ,cAAQ,QAAR,mBAAa,IAAI,IAAI;AAG9D,sBAAsB,MAAc;AAGlC,MAAI,KAAK,SAAS,gBAAgB,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU;AAChB,MAAI,KAAK,WAAW,OAAO,GAAG;AAC5B,WAAO,KAAK,OAAO,QAAQ,MAAM;AAAA,EACnC;AAEA,MAAI,OAAO,KAAK,WAAW,GAAG,GAAG;AAC/B,WAAO,KAAK,OAAO,IAAI,SAAS,CAAC;AAAA,EACnC;AAEA,MAAI,QAAQ,KAAK,WAAW,IAAI,GAAG;AACjC,WAAO,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC;AAAA,EAC3C;AAEA,SAAO;AACT;AArBS;AAuBT,yBAAyB,WAA2B;AAClD,MAAI,IAAI,UAAU,MAAM,kDAAkD;AAC1E,MAAI,GAAG;AACL,QAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7B,QAAI,KAAK,SAAS,GAAG;AAAG,aAAO,KAAK,MAAM,GAAG,EAAE;AAC/C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AARS;AAkBF,2BAA2B,QAAQ,GAAG,WAAW,MAAc;AArEtE;AAsEE,MAAI,QAAQ,IAAI,MAAM,EAAE,SAAS;AACjC,MAAI,OAA2B,6BAAsB,KAAK,MAA3B,oBAA+B;AAC9D,MAAI,QAAQ,UAAU;AACpB,WAAO,aAAa,IAAI;AAAA,EAC1B;AACA,SAAO,QAAQ;AACjB;AAPgB;AAST,oBAA4B;AACjC,SAAO,IAAI,MAAM,EAAE,SAAS;AAC9B;AAFgB;AAIT,6CACL,UACA,WAAW,MACX;AACA,MAAI,OAAO;AACX,MAAI,QAAQ,IAAI,MAAM,EAAE,SAAS;AACjC,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAEnD,UAAM,QAAQ,MAAM,UAAU,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1E,WAAO,MAAM,QAAQ;AACrB,QAAI,MAAM;AACR,aAAO,gBAAgB,IAAI;AAAA,IAC7B;AACA,QAAI,QAAQ,UAAU;AACpB,aAAO,aAAa,IAAI;AAAA,IAC1B;AAAA,EACF;AACA,SAAO;AACT;AAnBgB;;;AChFhB;AAgBO,iBAA0B;AAC/B,MAAI;AACF,WAAO,IAAI,OAAO,QAAQ,OAAO,EAAE;AAAA,EACrC,SAAS,KAAP;AAAA,EAAa;AACf,SAAO;AACT;AALgB;AAOhB,IAAM,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhC,qBAAqB,WAAmB;AACtC,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,WAAQ,SAAQ,KAAK,OAAO,UAAU,WAAW,CAAC;AAClD,YAAQ;AAAA,EACV;AACA,SAAO,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO;AACxC;AAPS;AAST,IAAI,cAAkC,CAAC;AAEvC,IAAI,OAAO,aAAa;AAExB,IAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,EAAE;AAE9C,iBAAgB,MAAa;AAC3B,SAAO,QAAQ,OAAO,MAAM,eAAe,IAAI,IAAI,IAAI;AACzD;AAFS;AA0BT,IAAM,YAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAWA,IAAM,WAAW;AAEV,qBAAqB,OAAe,WAAmB;AAC5D,QAAM,aACJ,cAAc,iBACV,UAAU,SACV,WAAc,aAAY,IAAI,YAAY,SAAS,aAAa;AACtE,SAAO,GAAG,aAAa,QAAQ;AACjC;AANgB;AAQT,yBACL,MACA,OACA,OAAgB,MAChB;AACA,SAAO,KAAK,IAAI,CAAC,UAAU;AACzB,QAAI,OAAO,UAAU;AAAU,aAAO;AACtC,QAAI,QAAQ;AACZ,QAAI,MAAM;AACV,QAAI,MAAM;AACR,cAAQ,GAAG,UAAU,OAAO;AAC5B,YAAM,GAAG,MAAM,UAAU;AAAA,IAC3B;AACA,WAAO,GAAG,QAAQ,QAAQ;AAAA,EAC5B,CAAC;AACH;AAfgB;AAiBT,IAAM,wBACX;AAEK,2BAA2B,MAAyB,CAAC,GAAe;AACzE,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,kBAAS,MAAM;AAAA,IACf,cAAc;AAAA,IACd,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,MACN;AACJ,QAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAM,eAAe,eAAe,KAAK;AACzC,SAAO,CAAC,QAAoB;AApI9B;AAqII,QAAI,CAAC,aAAa,IAAI,KAAK;AAAG;AAC9B,QAAI,CAAC,iBAAiB,IAAI,IAAI;AAAG;AACjC,UAAM,UAAU,aAAa;AAC7B,QAAI,OAAO,IAAI,QAAQ;AACvB,QAAI,QAAQ,YAAW,QAAQ;AAC/B,QAAI,SAAS,MAAM;AACjB,cAAQ;AAAA,QACN,OAAO,YAAY,IAAI;AAAA,MAEzB;AACA,kBAAW,QAAQ;AAAA,IACrB;AACA,UAAM,OAAO,mBAAmB,UAAU,IAAI;AAE9C,QAAI;AAEJ,QAAI,cAAc,eAAe,IAAI,UAAU;AAE/C,QAAI,UAAU,GAAG;AACf,oBAAc,YAAY,SAAS,SAAS,GAAG;AAAA,IACjD;AAEA,QAAI,OAAO,GAAG;AACZ,oBAAc,YAAY,OAAO,MAAM,GAAG;AAAA,IAC5C;AAEA,QAAI,WAAU,WAAW;AACvB,YAAM,IAAI,MAAM;AAChB,aAAO,CAAC,YAAY,aAAa,CAAC,IAAI,KAAK;AAC3C,UAAI,IAAI,UAAU,cAAe;AAC/B,aAAK,KAAK,GAAG,gBAAgB,IAAI,UAAU,UAAU,MAAM,CAAC;AAAA,MAC9D,WAAW,IAAI,UAAU,eAAgB;AACvC,aAAK,KAAK,GAAG,gBAAgB,IAAI,UAAU,UAAU,GAAG,CAAC;AAAA,MAC3D,OAAO;AACL,aAAK,KAAK,GAAG,IAAI,QAAQ;AAAA,MAC3B;AACA,WAAK,KAAK,YAAY,IAAI,QAAQ,CAAC,CAAC;AAAA,IACtC,OAAO;AACL,aAAO,CAAC,aAAa,GAAG,IAAI,QAAQ;AACpC,WAAK,KAAK,IAAI,MAAM;AAAA,IACtB;AAEA,QAAI,YAAI,aAAJ,oBAAe,QAAO,uBAAuB;AAC/C,cAAQ,IAAI,SAAS,CAAC;AAAA,IACxB;AAEA,QAAI,OAAO;AACT,UAAI,OAAe;AACnB,UAAI,OAAO,UAAU,WAAW;AAC9B,eAAO,oCACL,CAAC,gBAAgB,iBAAiB,UAAU,GAC5C,IACF;AACA,YAAI,CAAC,MAAM;AACT,iBAAO,kBAAkB,GAAG,IAAI;AAAA,QAClC;AAAA,MACF,OAAO;AACL,cAAM,QAAQ,OAAO,UAAU,WAAW,QAAQ;AAClD,eAAO,kBAAkB,OAAO,IAAI;AAAA,MACtC;AACA,UAAI,MAAM;AACR,aAAK,KAAK,YAAY,IAAI,SAAS,YAAU,CAAC;AAAA,MAChD;AAAA,IACF;AACA,YAAQ,IAAI;AAAA,WACL;AACH,YAAI;AAAa,eAAK,KAAK,WAAW,KAAK;AAC3C,aAAI,GAAG,IAAI;AACX;AAAA,WACG;AACH,YAAI;AACF,eAAK,KACF,YAAU,YACP,YAAY,UAAU,cAAY,IAClC,YAAY,KAAK;AACzB,aAAI,GAAG,IAAI;AACX;AAAA,WACG;AACH,YAAI;AACF,eAAK,KACF,YAAU,YACP,YAAY,UAAU,WAAS,IAC/B,YAAY,KAAK;AACzB,aAAI,GAAG,IAAI;AACX;AAAA;AAEA,YAAI;AAAa,eAAK,KAAK,WAAW,KAAK;AAC3C,aAAI,GAAG,IAAI;AACX;AAAA;AAAA,EAEN;AACF;AAzGgB;;;ACtHhB;AAUA,IAAI;AACF,MACE,cACA,WAAW,aACX,OAAO,eAAe,eACtB,OAAO,WAAW,WAAW,aAC7B;AAEA,eAAW,SAAS,WAAW;AAAA,EACjC;AACF,SAAS,KAAP;AACA,UAAQ,KAAK,gCAAgC,GAAG;AAClD;;;AClBA,+BAA+B;AAC7B,MAAI,WAAW;AAAA,IACb,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,cAAc;AAAA,IAEhB,CAAC;AAAA,EACH;AAEA,MAAI,cAAc,QAAQ,IAAI,YAAY,QAAQ,IAAI;AACtD,MAAI,aAAa;AACf,aAAS,QAAQ,kBAAkB,OAAO,WAAW,CAAC,CAAC;AAAA,EACzD;AAEA,SAAO,YAAY,QAAQ;AAC7B;AAfS;AAiBT,oBAAoB;","names":[]}
@@ -330,8 +330,7 @@ function getNamespaceFilterString(defaultNamespaceFilter2) {
330
330
  return defaultNamespaceFilter2;
331
331
  }
332
332
  __name(getNamespaceFilterString, "getNamespaceFilterString");
333
- var _a, _b;
334
- var defaultNamespaceFilter = getNamespaceFilterString(typeof process !== "undefined" ? (_a = process.env.ZEED) != null ? _a : process.env.DEBUG : typeof localStorage !== "undefined" ? (_b = localStorage.zeed) != null ? _b : localStorage.debug : "*");
333
+ var defaultNamespaceFilter = getNamespaceFilterString(typeof process !== "undefined" ? process.env.ZEED ?? process.env.DEBUG : typeof localStorage !== "undefined" ? localStorage.zeed ?? localStorage.debug : "*");
335
334
  function useNamespaceFilter(filter = defaultNamespaceFilter) {
336
335
  let fn;
337
336
  let reject = [];
@@ -383,8 +382,7 @@ function useNamespaceFilter(filter = defaultNamespaceFilter) {
383
382
  return fn;
384
383
  }
385
384
  __name(useNamespaceFilter, "useNamespaceFilter");
386
- var _a2, _b2, _c, _d;
387
- var defaultLevelFilter = typeof process !== "undefined" ? (_b2 = (_a2 = process.env.ZEED_LEVEL) != null ? _a2 : process.env.LEVEL) != null ? _b2 : process.env.DEBUG_LEVEL : typeof localStorage !== "undefined" ? (_d = (_c = localStorage.zeed_level) != null ? _c : localStorage.level) != null ? _d : localStorage.debug_level : void 0;
385
+ var defaultLevelFilter = typeof process !== "undefined" ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL : typeof localStorage !== "undefined" ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level : void 0;
388
386
  function useLevelFilter(filter = defaultLevelFilter) {
389
387
  let filterLevel = -1 /* all */;
390
388
  if (typeof filter === "string") {
@@ -507,4 +505,4 @@ export {
507
505
  formatMilliseconds,
508
506
  parseDate
509
507
  };
510
- //# sourceMappingURL=chunk-XWMV2GEI.js.map
508
+ //# sourceMappingURL=chunk-LMZGFDSJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/data/is.ts","../src/common/data/deep.ts","../src/common/log-console.ts","../src/common/log-base.ts","../src/common/log-filter.ts","../src/common/global.ts","../src/common/log.ts","../src/common/time.ts"],"sourcesContent":["// https://github.com/sindresorhus/is/ MIT\n// https://github.com/sindresorhus/ts-extras\n// https://github.com/sindresorhus/type-fest\n// https://github.com/antfu/utils\n\nexport type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint\n\nexport function isObject(obj: unknown): obj is object {\n return obj != null && typeof obj === \"object\"\n}\n\nexport function isPrimitive(obj: unknown): obj is Primitive {\n return Object(obj) !== obj\n}\n\nexport function isArray(obj: unknown): obj is Array<any> {\n return Array.isArray(obj)\n}\n\nexport function isRecord(obj: unknown): obj is Record<string, any> {\n return isObject(obj) && !isArray(obj)\n}\n\nexport function isString(obj: unknown): obj is string {\n return typeof obj === \"string\"\n}\n\nexport function isNumber(obj: unknown): obj is number {\n return typeof obj === \"number\"\n}\n\nexport function isInteger(obj: unknown): obj is number {\n return typeof obj === \"number\" && Number.isInteger(obj)\n}\n\nexport function isSafeInteger(obj: unknown): obj is number {\n return typeof obj === \"number\" && Number.isSafeInteger(obj)\n}\n\nexport function isBoolean(obj: unknown): obj is boolean {\n return typeof obj === \"boolean\"\n}\n\nexport function isNullOrUndefined(obj: unknown): obj is null | undefined {\n return obj == null\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { isObject, isPrimitive } from \"./is\"\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClonePrimitives(obj, hash = new WeakMap()) {\n//\n// // primitives\n// if (Object(obj) !== obj) {\n// // log('Primitive', obj)\n// return obj\n// }\n//\n// // cyclic reference\n// if (hash.has(obj)) {\n// return hash.get(obj)\n// }\n//\n// let result\n//\n// // primitives as objects like new String(), new Number()\n// if (\n// obj instanceof String ||\n// obj instanceof Number ||\n// obj instanceof BigInt ||\n// obj instanceof Boolean ||\n// obj instanceof Symbol\n// ) {\n// result = new obj.constructor(obj.valueOf())\n// // hash.set(obj, result)\n// return result\n// }\n//\n// // log('Obj', obj)\n//\n// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) => [key, deepClonePrimitives(val, hash)]))\n// } else if (obj instanceof Date) {\n// result = new Date(obj)\n// } else if (obj instanceof RegExp) {\n// result = new RegExp(obj.source, obj.flags)\n// } else if (Array.isArray(obj)) {\n// result = Array.from(obj, val => deepClonePrimitives(val, hash))\n// } else if (obj.constructor) {\n// result = new obj.constructor()\n// log('bj object', result)\n// } else if (obj instanceof Function || typeof obj === 'function') {\n// log('Keep object', obj, Object.getPrototypeOf(obj))\n// result = obj\n// } else {\n// result = Object.create(null)\n// }\n//\n// hash.set(obj, result)\n//\n// return Object.assign(result, ...Object.keys(obj).map(key => ({\n// [key]: deepClonePrimitives(obj[key], hash),\n// })))\n// }\n\nexport function deepEqual(a: any, b: any, hash = new WeakSet()) {\n // if both x and y are null or undefined and exactly the same\n if (a === b) {\n return true\n }\n\n // Cyclic\n if (hash.has(b)) {\n // console.log('cyclic')\n return true\n }\n\n if (!isPrimitive(b)) {\n hash.add(b)\n }\n\n // if they are not strictly equal, they both need to be Objects\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false\n }\n\n // they must have the exact same prototype chain, the closest we can do is\n // test there constructor.\n if (a.constructor !== b.constructor) {\n return false\n }\n\n // Shortcut to avoid to many loops\n if (a.length !== b.length) {\n return false\n }\n\n for (let p in a) {\n // other properties were tested using x.constructor === y.constructor\n if (!a.hasOwnProperty(p)) {\n continue\n }\n\n // allows to compare x[ p ] and y[ p ] when set to undefined\n if (!b.hasOwnProperty(p)) {\n return false\n }\n\n let aa = a[p]\n let bb = b[p]\n\n // if they have the same strict value or identity then they are equal\n // if (aa === bb) {\n // console.log('eq', typeof bb)\n // if (bb != null) hash.set(bb, true)\n // continue\n // }\n //\n // // Numbers, Strings, Functions, Booleans must be strictly equal\n // if (typeof (aa) !== 'object') {\n // return false\n // }\n\n // Objects and Arrays must be tested recursively\n if (!deepEqual(aa, bb, hash)) {\n return false\n }\n }\n\n // allows x[ p ] to be set to undefined\n for (let p in b) {\n if (b.hasOwnProperty(p) && !a.hasOwnProperty(p)) {\n return false\n }\n }\n\n return true\n}\n\nexport function deepMerge(target: any, ...sources: any[]) {\n for (let source of sources) {\n if (!isObject(target)) {\n target = {}\n }\n\n if (source == null) continue\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key]\n const sourceValue = source[key]\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = targetValue.concat(sourceValue)\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = deepMerge(Object.assign({}, targetValue), sourceValue)\n } else {\n target[key] = sourceValue\n }\n })\n }\n\n return target\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LogHandler, LogHandlerOptions, LogLevel, LogMessage } from \"./log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"./log-filter\"\n\n/**\n * Very basic logger. Please take a look at the browser and node\n * optimized loggers. This one is just the absolute fallback option.\n *\n * @param level Log level\n * @returns Logger\n */\nexport function LoggerConsoleHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n level = undefined,\n filter = 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 let name = msg.name ? `[${msg.name}]` : \"\"\n switch (msg.level) {\n case LogLevel.info:\n console.info(`I|* ${name}`, ...msg.messages)\n break\n case LogLevel.warn:\n console.warn(`W|** ${name}`, ...msg.messages)\n break\n case LogLevel.error:\n console.error(`E|*** ${name}`, ...msg.messages)\n break\n default:\n console.debug(`D| ${name}`, ...msg.messages)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { deepEqual } from \"./data/deep\"\nimport { LoggerConsoleHandler } from \"./log-console\"\nimport { useNamespaceFilter } from \"./log-filter\"\n\nexport enum LogLevel {\n all = -1,\n debug = 0,\n info,\n warn,\n error,\n fatal,\n off = Infinity,\n}\n\nexport const LogLevelAlias: Record<string, LogLevel> = {\n \"*\": LogLevel.all,\n a: LogLevel.all,\n all: LogLevel.all,\n d: LogLevel.debug,\n dbg: LogLevel.debug,\n debug: LogLevel.debug,\n i: LogLevel.info,\n inf: LogLevel.info,\n info: LogLevel.info,\n w: LogLevel.warn,\n warn: LogLevel.warn,\n warning: LogLevel.warn,\n e: LogLevel.error,\n err: LogLevel.error,\n error: LogLevel.error,\n fatal: LogLevel.fatal,\n off: LogLevel.off,\n \"-\": LogLevel.off,\n}\n\nexport interface LogMessage {\n level: LogLevel\n name: string\n messages: any[]\n line?: number\n file?: string\n timestamp?: number\n}\n\nexport type LogHandler = (msg: LogMessage) => void\n\nexport interface LoggerInterface {\n (...messages: any[]): void\n\n /** @deprecated use .level = LogLevel.off or LogLevel.all */\n active: boolean\n\n level: LogLevel\n\n debug(...messages: any[]): void\n\n info(...messages: any[]): void\n\n warn(...messages: any[]): void\n\n error(...messages: any[]): void\n\n assert(cond: any, ...messages: any[]): void\n\n /** @deprecated use .assert */\n assertEqual(value: any, expected: any, ...args: any[]): void\n\n /** @deprecated use .assert */\n assertNotEqual(value: any, expected: any, ...args: any[]): void\n\n extend(prefix: string): LoggerInterface\n\n factory?: LoggerContextInterface\n\n label: string\n}\n\nexport interface LoggerContextInterface {\n (name?: string): LoggerInterface\n registerHandler(handler: LogHandler): void\n setFilter(namespaces: string): void\n setHandlers(handlers?: (LogHandler | undefined | null)[]): void\n setLock(lock: boolean): void\n setLogLevel(level?: LogLevel): void\n setFactory(factory: (name?: string) => LoggerInterface): void\n}\n\nexport interface LogHandlerOptions {\n level?: LogLevel\n filter?: string\n colors?: boolean\n levelHelper?: boolean\n nameBrackets?: boolean\n padding?: number\n fill?: number\n stack?: boolean | number\n}\n\nexport function LoggerContext(prefix: string = \"\"): LoggerContextInterface {\n let logHandlers: LogHandler[] = [LoggerConsoleHandler()]\n let logAssertLevel: LogLevel = LogLevel.warn\n let logCheckNamespace = (name: string) => true\n let logLock = false\n let logFactory = LoggerBaseFactory\n\n function LoggerBaseFactory(name: string = \"\"): LoggerInterface {\n log.extend = function (prefix: string): LoggerInterface {\n return logFactory(name ? `${name}:${prefix}` : prefix)\n }\n\n const emit = (msg: LogMessage) => {\n if (log.active === true) {\n if (msg.level >= Logger.level && msg.level >= log.level) {\n if (logCheckNamespace(name)) {\n for (let handler of logHandlers) {\n if (handler) handler(msg)\n }\n }\n }\n }\n }\n\n function log(...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.debug,\n })\n }\n\n log.label = name\n log.active = true\n log.level = LogLevel.all\n\n log.debug = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.debug,\n })\n }\n\n log.info = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.info,\n })\n }\n\n log.warn = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.warn,\n })\n }\n\n log.error = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.error,\n })\n }\n\n // fatal(...args: any[]) {\n // console.error(...args)\n // },\n\n // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions\n log.assert = function (cond: any, ...messages: any[]): asserts cond {\n if (!cond) {\n if (typeof console !== undefined) {\n if (console.assert) {\n // https://developer.mozilla.org/de/docs/Web/API/Console/assert\n console.assert(cond, ...messages)\n } else {\n console.error(`Assert did fail with: ${cond}`, ...messages)\n }\n }\n emit({\n name,\n messages: messages || [`Assert did fail with: ${cond}`],\n level: logAssertLevel,\n })\n // try {\n // if (typeof expect !== undefined) {\n // expect(cond).toBeTruthy()\n // }\n // } catch (err) {\n // methods.warn(...args)\n // }\n }\n }\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 // } else {\n // methods.debug(`Passed equal`)\n }\n }\n\n log.assertNotEqual = 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} not to be equal with ${value}`,\n expected,\n value,\n ...args\n )\n // } else {\n // methods.debug(`Passed not equal check`)\n }\n }\n\n return log\n }\n\n function Logger(name: string = \"\"): LoggerInterface {\n return logFactory(name)\n }\n\n Logger.registerHandler = function (handler: LogHandler) {\n logHandlers.push(handler)\n }\n\n Logger.setFilter = function (namespaces: string) {\n logCheckNamespace = useNamespaceFilter(namespaces)\n }\n\n Logger.setLock = (lock: boolean = true) => (logLock = lock)\n\n Logger.setHandlers = function (handlers: LogHandler[] = []) {\n if (logFactory !== LoggerBaseFactory) {\n logFactory = LoggerBaseFactory\n }\n if (logLock) return\n logHandlers = [...handlers].filter((h) => typeof h === \"function\")\n }\n\n Logger.level = LogLevel.all\n\n /** @deprecated */\n Logger.setLogLevel = function (level: LogLevel = LogLevel.all) {\n if (logLock) return\n Logger.level = level\n }\n\n Logger.setFactory = function (\n factory: (name?: string) => LoggerInterface\n ): void {\n if (logLock) return\n logFactory = factory\n }\n\n return Logger\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LogLevel, LogLevelAlias } from \"./log-base\"\n\ninterface NamespaceFilter {\n (name: string): boolean\n accept: RegExp[]\n reject: RegExp[]\n filter: string\n}\n\nexport function getNamespaceFilterString(defaultNamespaceFilter: any): string {\n if (\n defaultNamespaceFilter === true ||\n defaultNamespaceFilter === \"true\" ||\n defaultNamespaceFilter === \"1\" ||\n (typeof defaultNamespaceFilter === \"number\" && defaultNamespaceFilter !== 0)\n ) {\n defaultNamespaceFilter = \"*\"\n } else if (\n defaultNamespaceFilter === false ||\n defaultNamespaceFilter === \"false\" ||\n defaultNamespaceFilter === 0 ||\n defaultNamespaceFilter === \"0\" ||\n defaultNamespaceFilter == null ||\n defaultNamespaceFilter === \"null\" ||\n defaultNamespaceFilter === \"undefined\"\n ) {\n defaultNamespaceFilter = \"\"\n } else {\n defaultNamespaceFilter = String(defaultNamespaceFilter)\n }\n return defaultNamespaceFilter\n}\n\nconst defaultNamespaceFilter: string = getNamespaceFilterString(\n typeof process !== \"undefined\"\n ? process.env.ZEED ?? process.env.DEBUG\n : typeof localStorage !== \"undefined\"\n ? localStorage.zeed ?? localStorage.debug\n : \"*\"\n)\n\n/**\n * Filter as described here https://github.com/visionmedia/debug#wildcards\n *\n * @param filter Namespace filter\n * @returns Function to check if filter applies\n */\nexport function useNamespaceFilter(\n filter: string = defaultNamespaceFilter\n): NamespaceFilter {\n let fn: any // (name: string) => boolean\n let reject = [] as RegExp[]\n let accept = [] as RegExp[]\n\n if (!filter) {\n fn = function (name: string) {\n return false\n }\n } else if (filter === \"*\") {\n fn = function (name: string) {\n return true\n }\n } else {\n let i\n const split = filter.split(/[\\s,]+/)\n const len = split.length\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue\n }\n let template = split[i].replace(/\\*/g, \".*?\")\n if (template[0] === \"-\") {\n reject.push(new RegExp(\"^\" + template.substr(1) + \"$\"))\n } else {\n accept.push(new RegExp(\"^\" + template + \"$\"))\n }\n }\n\n fn = function (name: string) {\n if (reject.length === 0 && accept.length === 0) {\n return true\n }\n let i, len\n for (i = 0, len = reject.length; i < len; i++) {\n if (reject[i].test(name)) {\n return false\n }\n }\n for (i = 0, len = accept.length; i < len; i++) {\n if (accept[i].test(name)) {\n return true\n }\n }\n return false\n }\n }\n fn.accept = accept\n fn.reject = reject\n fn.filter = filter\n return fn as NamespaceFilter\n}\n\nconst defaultLevelFilter: any =\n typeof process !== \"undefined\"\n ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL\n : typeof localStorage !== \"undefined\"\n ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level\n : undefined\n\nexport function useLevelFilter(\n filter: string | number = defaultLevelFilter\n): (level: LogLevel) => boolean {\n let filterLevel: LogLevel = LogLevel.all\n if (typeof filter === \"string\") {\n const l = LogLevelAlias[filter.toLocaleLowerCase().trim()]\n if (l != null) filterLevel = l\n } else if (typeof filter === \"number\") {\n filterLevel = filter as number\n }\n return (level) => level >= filterLevel\n}\n","// Global context across build systems etc.\n\ndeclare global {\n interface ZeedGlobalContext {}\n}\n\ninterface ZeedGlobalIntegration {\n _zeedGlobal?: ZeedGlobalContext\n}\n\nfunction _global(): ZeedGlobalIntegration {\n if (typeof self !== \"undefined\") return self as ZeedGlobalIntegration\n if (typeof window !== \"undefined\") return window as ZeedGlobalIntegration\n if (typeof global !== \"undefined\") return global as ZeedGlobalIntegration\n if (typeof globalThis !== \"undefined\")\n return globalThis as ZeedGlobalIntegration\n throw new Error(\"unable to locate global object\")\n}\n\nexport function getGlobalContext(): ZeedGlobalContext {\n let gcontext = _global()\n if (gcontext._zeedGlobal == null) {\n gcontext._zeedGlobal = {}\n }\n return gcontext._zeedGlobal\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LoggerConsoleHandler } from \"./log-console\"\nimport { getGlobalContext } from \"./global\"\nimport { LoggerContext, LoggerContextInterface } from \"./log-base\"\n\n// Global logger to guarantee all submodules use the same logger instance\n\nlet globalLogger: LoggerContextInterface\n\ndeclare global {\n interface ZeedGlobalContext {\n logger?: any // Should be LoggerContextInterface, but avoid compiler issues this way\n }\n}\n\nfunction getLoggerContext() {\n let logger = LoggerContext()\n logger.setHandlers([LoggerConsoleHandler()])\n return logger\n}\n\ntry {\n let _global = getGlobalContext()\n if (_global != null) {\n if (_global?.logger == null) {\n globalLogger = getLoggerContext()\n _global.logger = globalLogger\n } else {\n globalLogger = _global.logger\n }\n } else {\n globalLogger = getLoggerContext()\n }\n} catch (e) {\n globalLogger = getLoggerContext()\n}\n\n// /** @deprecated Use `Logger` instead, it is global as well */\n// export const GlobalLogger = globalLogger\n\nexport const Logger = globalLogger\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport const getTimestamp = (): number => Date.now()\n// @ts-ignore\n// typeof performance !== \"undefined\" ? performance.now() : new Date().getTime()\n\nexport function formatMilliseconds(ms: number): string {\n return ms > 999 ? (ms / 1000).toFixed(1) + \"s\" : ms.toFixed(2) + \"ms\"\n}\n\nexport function parseDate(\n ...dateCandidates: (string | Date)[]\n): Date | undefined {\n for (let dateCandidate of dateCandidates) {\n if (dateCandidate instanceof Date) {\n return dateCandidate\n }\n if (typeof dateCandidate === \"string\") {\n let date = null\n if (dateCandidate.includes(\":\")) {\n try {\n date = new Date(dateCandidate)\n } catch (err) {}\n }\n if (!(date instanceof Date)) {\n let m = /(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/.exec(dateCandidate)\n if (m) {\n date = new Date(+m[1], +m[2] - 1, +m[3], 12, 0)\n }\n }\n if (date instanceof Date) {\n return date\n }\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/common/data/is.ts","../src/common/data/deep.ts","../src/common/log-console.ts","../src/common/log-base.ts","../src/common/log-filter.ts","../src/common/global.ts","../src/common/log.ts","../src/common/time.ts"],"sourcesContent":["// https://github.com/sindresorhus/is/ MIT\n// https://github.com/sindresorhus/ts-extras\n// https://github.com/sindresorhus/type-fest\n// https://github.com/antfu/utils\n\nexport type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint\n\nexport function isObject(obj: unknown): obj is object {\n return obj != null && typeof obj === \"object\"\n}\n\nexport function isPrimitive(obj: unknown): obj is Primitive {\n return Object(obj) !== obj\n}\n\nexport function isArray(obj: unknown): obj is Array<any> {\n return Array.isArray(obj)\n}\n\nexport function isRecord(obj: unknown): obj is Record<string, any> {\n return isObject(obj) && !isArray(obj)\n}\n\nexport function isString(obj: unknown): obj is string {\n return typeof obj === \"string\"\n}\n\nexport function isNumber(obj: unknown): obj is number {\n return typeof obj === \"number\"\n}\n\nexport function isInteger(obj: unknown): obj is number {\n return typeof obj === \"number\" && Number.isInteger(obj)\n}\n\nexport function isSafeInteger(obj: unknown): obj is number {\n return typeof obj === \"number\" && Number.isSafeInteger(obj)\n}\n\nexport function isBoolean(obj: unknown): obj is boolean {\n return typeof obj === \"boolean\"\n}\n\nexport function isNullOrUndefined(obj: unknown): obj is null | undefined {\n return obj == null\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { isObject, isPrimitive } from \"./is\"\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClonePrimitives(obj, hash = new WeakMap()) {\n//\n// // primitives\n// if (Object(obj) !== obj) {\n// // log('Primitive', obj)\n// return obj\n// }\n//\n// // cyclic reference\n// if (hash.has(obj)) {\n// return hash.get(obj)\n// }\n//\n// let result\n//\n// // primitives as objects like new String(), new Number()\n// if (\n// obj instanceof String ||\n// obj instanceof Number ||\n// obj instanceof BigInt ||\n// obj instanceof Boolean ||\n// obj instanceof Symbol\n// ) {\n// result = new obj.constructor(obj.valueOf())\n// // hash.set(obj, result)\n// return result\n// }\n//\n// // log('Obj', obj)\n//\n// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) => [key, deepClonePrimitives(val, hash)]))\n// } else if (obj instanceof Date) {\n// result = new Date(obj)\n// } else if (obj instanceof RegExp) {\n// result = new RegExp(obj.source, obj.flags)\n// } else if (Array.isArray(obj)) {\n// result = Array.from(obj, val => deepClonePrimitives(val, hash))\n// } else if (obj.constructor) {\n// result = new obj.constructor()\n// log('bj object', result)\n// } else if (obj instanceof Function || typeof obj === 'function') {\n// log('Keep object', obj, Object.getPrototypeOf(obj))\n// result = obj\n// } else {\n// result = Object.create(null)\n// }\n//\n// hash.set(obj, result)\n//\n// return Object.assign(result, ...Object.keys(obj).map(key => ({\n// [key]: deepClonePrimitives(obj[key], hash),\n// })))\n// }\n\nexport function deepEqual(a: any, b: any, hash = new WeakSet()) {\n // if both x and y are null or undefined and exactly the same\n if (a === b) {\n return true\n }\n\n // Cyclic\n if (hash.has(b)) {\n // console.log('cyclic')\n return true\n }\n\n if (!isPrimitive(b)) {\n hash.add(b)\n }\n\n // if they are not strictly equal, they both need to be Objects\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false\n }\n\n // they must have the exact same prototype chain, the closest we can do is\n // test there constructor.\n if (a.constructor !== b.constructor) {\n return false\n }\n\n // Shortcut to avoid to many loops\n if (a.length !== b.length) {\n return false\n }\n\n for (let p in a) {\n // other properties were tested using x.constructor === y.constructor\n if (!a.hasOwnProperty(p)) {\n continue\n }\n\n // allows to compare x[ p ] and y[ p ] when set to undefined\n if (!b.hasOwnProperty(p)) {\n return false\n }\n\n let aa = a[p]\n let bb = b[p]\n\n // if they have the same strict value or identity then they are equal\n // if (aa === bb) {\n // console.log('eq', typeof bb)\n // if (bb != null) hash.set(bb, true)\n // continue\n // }\n //\n // // Numbers, Strings, Functions, Booleans must be strictly equal\n // if (typeof (aa) !== 'object') {\n // return false\n // }\n\n // Objects and Arrays must be tested recursively\n if (!deepEqual(aa, bb, hash)) {\n return false\n }\n }\n\n // allows x[ p ] to be set to undefined\n for (let p in b) {\n if (b.hasOwnProperty(p) && !a.hasOwnProperty(p)) {\n return false\n }\n }\n\n return true\n}\n\nexport function deepMerge(target: any, ...sources: any[]) {\n for (let source of sources) {\n if (!isObject(target)) {\n target = {}\n }\n\n if (source == null) continue\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key]\n const sourceValue = source[key]\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = targetValue.concat(sourceValue)\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = deepMerge(Object.assign({}, targetValue), sourceValue)\n } else {\n target[key] = sourceValue\n }\n })\n }\n\n return target\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LogHandler, LogHandlerOptions, LogLevel, LogMessage } from \"./log-base\"\nimport { useLevelFilter, useNamespaceFilter } from \"./log-filter\"\n\n/**\n * Very basic logger. Please take a look at the browser and node\n * optimized loggers. This one is just the absolute fallback option.\n *\n * @param level Log level\n * @returns Logger\n */\nexport function LoggerConsoleHandler(opt: LogHandlerOptions = {}): LogHandler {\n const {\n level = undefined,\n filter = 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 let name = msg.name ? `[${msg.name}]` : \"\"\n switch (msg.level) {\n case LogLevel.info:\n console.info(`I|* ${name}`, ...msg.messages)\n break\n case LogLevel.warn:\n console.warn(`W|** ${name}`, ...msg.messages)\n break\n case LogLevel.error:\n console.error(`E|*** ${name}`, ...msg.messages)\n break\n default:\n console.debug(`D| ${name}`, ...msg.messages)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { deepEqual } from \"./data/deep\"\nimport { LoggerConsoleHandler } from \"./log-console\"\nimport { useNamespaceFilter } from \"./log-filter\"\n\nexport enum LogLevel {\n all = -1,\n debug = 0,\n info,\n warn,\n error,\n fatal,\n off = Infinity,\n}\n\nexport const LogLevelAlias: Record<string, LogLevel> = {\n \"*\": LogLevel.all,\n a: LogLevel.all,\n all: LogLevel.all,\n d: LogLevel.debug,\n dbg: LogLevel.debug,\n debug: LogLevel.debug,\n i: LogLevel.info,\n inf: LogLevel.info,\n info: LogLevel.info,\n w: LogLevel.warn,\n warn: LogLevel.warn,\n warning: LogLevel.warn,\n e: LogLevel.error,\n err: LogLevel.error,\n error: LogLevel.error,\n fatal: LogLevel.fatal,\n off: LogLevel.off,\n \"-\": LogLevel.off,\n}\n\nexport interface LogMessage {\n level: LogLevel\n name: string\n messages: any[]\n line?: number\n file?: string\n timestamp?: number\n}\n\nexport type LogHandler = (msg: LogMessage) => void\n\nexport interface LoggerInterface {\n (...messages: any[]): void\n\n /** @deprecated use .level = LogLevel.off or LogLevel.all */\n active: boolean\n\n level: LogLevel\n\n debug(...messages: any[]): void\n\n info(...messages: any[]): void\n\n warn(...messages: any[]): void\n\n error(...messages: any[]): void\n\n assert(cond: any, ...messages: any[]): void\n\n /** @deprecated use .assert */\n assertEqual(value: any, expected: any, ...args: any[]): void\n\n /** @deprecated use .assert */\n assertNotEqual(value: any, expected: any, ...args: any[]): void\n\n extend(prefix: string): LoggerInterface\n\n factory?: LoggerContextInterface\n\n label: string\n}\n\nexport interface LoggerContextInterface {\n (name?: string): LoggerInterface\n registerHandler(handler: LogHandler): void\n setFilter(namespaces: string): void\n setHandlers(handlers?: (LogHandler | undefined | null)[]): void\n setLock(lock: boolean): void\n setLogLevel(level?: LogLevel): void\n setFactory(factory: (name?: string) => LoggerInterface): void\n}\n\nexport interface LogHandlerOptions {\n level?: LogLevel\n filter?: string\n colors?: boolean\n levelHelper?: boolean\n nameBrackets?: boolean\n padding?: number\n fill?: number\n stack?: boolean | number\n}\n\nexport function LoggerContext(prefix: string = \"\"): LoggerContextInterface {\n let logHandlers: LogHandler[] = [LoggerConsoleHandler()]\n let logAssertLevel: LogLevel = LogLevel.warn\n let logCheckNamespace = (name: string) => true\n let logLock = false\n let logFactory = LoggerBaseFactory\n\n function LoggerBaseFactory(name: string = \"\"): LoggerInterface {\n log.extend = function (prefix: string): LoggerInterface {\n return logFactory(name ? `${name}:${prefix}` : prefix)\n }\n\n const emit = (msg: LogMessage) => {\n if (log.active === true) {\n if (msg.level >= Logger.level && msg.level >= log.level) {\n if (logCheckNamespace(name)) {\n for (let handler of logHandlers) {\n if (handler) handler(msg)\n }\n }\n }\n }\n }\n\n function log(...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.debug,\n })\n }\n\n log.label = name\n log.active = true\n log.level = LogLevel.all\n\n log.debug = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.debug,\n })\n }\n\n log.info = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.info,\n })\n }\n\n log.warn = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.warn,\n })\n }\n\n log.error = function (...messages: any[]) {\n emit({\n name,\n messages,\n level: LogLevel.error,\n })\n }\n\n // fatal(...args: any[]) {\n // console.error(...args)\n // },\n\n // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions\n log.assert = function (cond: any, ...messages: any[]): asserts cond {\n if (!cond) {\n if (typeof console !== undefined) {\n if (console.assert) {\n // https://developer.mozilla.org/de/docs/Web/API/Console/assert\n console.assert(cond, ...messages)\n } else {\n console.error(`Assert did fail with: ${cond}`, ...messages)\n }\n }\n emit({\n name,\n messages: messages || [`Assert did fail with: ${cond}`],\n level: logAssertLevel,\n })\n // try {\n // if (typeof expect !== undefined) {\n // expect(cond).toBeTruthy()\n // }\n // } catch (err) {\n // methods.warn(...args)\n // }\n }\n }\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 // } else {\n // methods.debug(`Passed equal`)\n }\n }\n\n log.assertNotEqual = 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} not to be equal with ${value}`,\n expected,\n value,\n ...args\n )\n // } else {\n // methods.debug(`Passed not equal check`)\n }\n }\n\n return log\n }\n\n function Logger(name: string = \"\"): LoggerInterface {\n return logFactory(name)\n }\n\n Logger.registerHandler = function (handler: LogHandler) {\n logHandlers.push(handler)\n }\n\n Logger.setFilter = function (namespaces: string) {\n logCheckNamespace = useNamespaceFilter(namespaces)\n }\n\n Logger.setLock = (lock: boolean = true) => (logLock = lock)\n\n Logger.setHandlers = function (handlers: LogHandler[] = []) {\n if (logFactory !== LoggerBaseFactory) {\n logFactory = LoggerBaseFactory\n }\n if (logLock) return\n logHandlers = [...handlers].filter((h) => typeof h === \"function\")\n }\n\n Logger.level = LogLevel.all\n\n /** @deprecated */\n Logger.setLogLevel = function (level: LogLevel = LogLevel.all) {\n if (logLock) return\n Logger.level = level\n }\n\n Logger.setFactory = function (\n factory: (name?: string) => LoggerInterface\n ): void {\n if (logLock) return\n logFactory = factory\n }\n\n return Logger\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LogLevel, LogLevelAlias } from \"./log-base\"\n\ninterface NamespaceFilter {\n (name: string): boolean\n accept: RegExp[]\n reject: RegExp[]\n filter: string\n}\n\nexport function getNamespaceFilterString(defaultNamespaceFilter: any): string {\n if (\n defaultNamespaceFilter === true ||\n defaultNamespaceFilter === \"true\" ||\n defaultNamespaceFilter === \"1\" ||\n (typeof defaultNamespaceFilter === \"number\" && defaultNamespaceFilter !== 0)\n ) {\n defaultNamespaceFilter = \"*\"\n } else if (\n defaultNamespaceFilter === false ||\n defaultNamespaceFilter === \"false\" ||\n defaultNamespaceFilter === 0 ||\n defaultNamespaceFilter === \"0\" ||\n defaultNamespaceFilter == null ||\n defaultNamespaceFilter === \"null\" ||\n defaultNamespaceFilter === \"undefined\"\n ) {\n defaultNamespaceFilter = \"\"\n } else {\n defaultNamespaceFilter = String(defaultNamespaceFilter)\n }\n return defaultNamespaceFilter\n}\n\nconst defaultNamespaceFilter: string = getNamespaceFilterString(\n typeof process !== \"undefined\"\n ? process.env.ZEED ?? process.env.DEBUG\n : typeof localStorage !== \"undefined\"\n ? localStorage.zeed ?? localStorage.debug\n : \"*\"\n)\n\n/**\n * Filter as described here https://github.com/visionmedia/debug#wildcards\n *\n * @param filter Namespace filter\n * @returns Function to check if filter applies\n */\nexport function useNamespaceFilter(\n filter: string = defaultNamespaceFilter\n): NamespaceFilter {\n let fn: any // (name: string) => boolean\n let reject = [] as RegExp[]\n let accept = [] as RegExp[]\n\n if (!filter) {\n fn = function (name: string) {\n return false\n }\n } else if (filter === \"*\") {\n fn = function (name: string) {\n return true\n }\n } else {\n let i\n const split = filter.split(/[\\s,]+/)\n const len = split.length\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue\n }\n let template = split[i].replace(/\\*/g, \".*?\")\n if (template[0] === \"-\") {\n reject.push(new RegExp(\"^\" + template.substr(1) + \"$\"))\n } else {\n accept.push(new RegExp(\"^\" + template + \"$\"))\n }\n }\n\n fn = function (name: string) {\n if (reject.length === 0 && accept.length === 0) {\n return true\n }\n let i, len\n for (i = 0, len = reject.length; i < len; i++) {\n if (reject[i].test(name)) {\n return false\n }\n }\n for (i = 0, len = accept.length; i < len; i++) {\n if (accept[i].test(name)) {\n return true\n }\n }\n return false\n }\n }\n fn.accept = accept\n fn.reject = reject\n fn.filter = filter\n return fn as NamespaceFilter\n}\n\nconst defaultLevelFilter: any =\n typeof process !== \"undefined\"\n ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL\n : typeof localStorage !== \"undefined\"\n ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level\n : undefined\n\nexport function useLevelFilter(\n filter: string | number = defaultLevelFilter\n): (level: LogLevel) => boolean {\n let filterLevel: LogLevel = LogLevel.all\n if (typeof filter === \"string\") {\n const l = LogLevelAlias[filter.toLocaleLowerCase().trim()]\n if (l != null) filterLevel = l\n } else if (typeof filter === \"number\") {\n filterLevel = filter as number\n }\n return (level) => level >= filterLevel\n}\n","// Global context across build systems etc.\n\ndeclare global {\n interface ZeedGlobalContext {}\n}\n\ninterface ZeedGlobalIntegration {\n _zeedGlobal?: ZeedGlobalContext\n}\n\nfunction _global(): ZeedGlobalIntegration {\n if (typeof self !== \"undefined\") return self as ZeedGlobalIntegration\n if (typeof window !== \"undefined\") return window as ZeedGlobalIntegration\n if (typeof global !== \"undefined\") return global as ZeedGlobalIntegration\n if (typeof globalThis !== \"undefined\")\n return globalThis as ZeedGlobalIntegration\n throw new Error(\"unable to locate global object\")\n}\n\nexport function getGlobalContext(): ZeedGlobalContext {\n let gcontext = _global()\n if (gcontext._zeedGlobal == null) {\n gcontext._zeedGlobal = {}\n }\n return gcontext._zeedGlobal\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport { LoggerConsoleHandler } from \"./log-console\"\nimport { getGlobalContext } from \"./global\"\nimport { LoggerContext, LoggerContextInterface } from \"./log-base\"\n\n// Global logger to guarantee all submodules use the same logger instance\n\nlet globalLogger: LoggerContextInterface\n\ndeclare global {\n interface ZeedGlobalContext {\n logger?: any // Should be LoggerContextInterface, but avoid compiler issues this way\n }\n}\n\nfunction getLoggerContext() {\n let logger = LoggerContext()\n logger.setHandlers([LoggerConsoleHandler()])\n return logger\n}\n\ntry {\n let _global = getGlobalContext()\n if (_global != null) {\n if (_global?.logger == null) {\n globalLogger = getLoggerContext()\n _global.logger = globalLogger\n } else {\n globalLogger = _global.logger\n }\n } else {\n globalLogger = getLoggerContext()\n }\n} catch (e) {\n globalLogger = getLoggerContext()\n}\n\n// /** @deprecated Use `Logger` instead, it is global as well */\n// export const GlobalLogger = globalLogger\n\nexport const Logger = globalLogger\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport const getTimestamp = (): number => Date.now()\n// @ts-ignore\n// typeof performance !== \"undefined\" ? performance.now() : new Date().getTime()\n\nexport function formatMilliseconds(ms: number): string {\n return ms > 999 ? (ms / 1000).toFixed(1) + \"s\" : ms.toFixed(2) + \"ms\"\n}\n\nexport function parseDate(\n ...dateCandidates: (string | Date)[]\n): Date | undefined {\n for (let dateCandidate of dateCandidates) {\n if (dateCandidate instanceof Date) {\n return dateCandidate\n }\n if (typeof dateCandidate === \"string\") {\n let date = null\n if (dateCandidate.includes(\":\")) {\n try {\n date = new Date(dateCandidate)\n } catch (err) {}\n }\n if (!(date instanceof Date)) {\n let m = /(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/.exec(dateCandidate)\n if (m) {\n date = new Date(+m[1], +m[2] - 1, +m[3], 12, 0)\n }\n }\n if (date instanceof Date) {\n return date\n }\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -5,7 +5,7 @@ import {
5
5
  getTimestamp,
6
6
  useLevelFilter,
7
7
  useNamespaceFilter
8
- } from "./chunk-XWMV2GEI.js";
8
+ } from "./chunk-LMZGFDSJ.js";
9
9
 
10
10
  // src/browser/log-colors.ts
11
11
  var colors = [
@@ -125,7 +125,7 @@ function LoggerBrowserHandler(opt = {}) {
125
125
  const matchesNamespace = useNamespaceFilter(filter);
126
126
  const matchesLevel = useLevelFilter(level);
127
127
  return (msg) => {
128
- var _a, _b;
128
+ var _a;
129
129
  if (!matchesLevel(msg.level))
130
130
  return;
131
131
  if (!matchesNamespace(msg.name))
@@ -148,7 +148,7 @@ function LoggerBrowserHandler(opt = {}) {
148
148
  args = [`%c${name}%c %s %c+${diff}`];
149
149
  args.push(`color:${ninfo.color}; ${styleBold}`);
150
150
  args.push(styleDefault);
151
- args.push((_b = (_a = msg.messages) == null ? void 0 : _a[0]) != null ? _b : "");
151
+ args.push(((_a = msg.messages) == null ? void 0 : _a[0]) ?? "");
152
152
  args.push(`color:${ninfo.color};`);
153
153
  args.push(...msg.messages.slice(1));
154
154
  } else {
@@ -180,8 +180,7 @@ function LoggerBrowserHandler(opt = {}) {
180
180
  }
181
181
  __name(LoggerBrowserHandler, "LoggerBrowserHandler");
182
182
  function LoggerBrowserSetupDebugFactory(opt = {}) {
183
- var _a, _b;
184
- const filter = (_b = (_a = opt.filter) != null ? _a : localStorage.zeed) != null ? _b : localStorage.debug;
183
+ const filter = opt.filter ?? localStorage.zeed ?? localStorage.debug;
185
184
  return /* @__PURE__ */ __name(function LoggerBrowserDebugFactory(name = "") {
186
185
  let log;
187
186
  const matches = useNamespaceFilter(filter);
@@ -245,4 +244,4 @@ export {
245
244
  LoggerBrowserSetupDebugFactory,
246
245
  activateConsoleDebug
247
246
  };
248
- //# sourceMappingURL=chunk-2KDHZAAM.js.map
247
+ //# sourceMappingURL=chunk-T5YP6WMZ.js.map