zeed 0.7.73 → 0.7.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../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"],
4
- "sourcesContent": ["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nexport const isObject = (obj: any) => obj && typeof obj === \"object\"\nexport const isPrimitive = (obj: any) => Object(obj) !== obj\n\n// export function deepClone(obj) {\n// return cloneDeep(obj)\n// }\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClone(obj, hash = new WeakMap()) {\n// return cloneDeep(obj)\n//\n// // primitives\n// if (Object(obj) !== 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// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) =>\n// [key, deepClone(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 (obj.constructor) {\n// result = new obj.constructor()\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]: deepClone(obj[key], hash),\n// })),\n// )\n// }\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\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.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 log.assert = function (cond: any, ...messages: any[]) {\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\nconst defaultNamespaceFilter: any =\n typeof process !== \"undefined\"\n ? process.env.ZEED ?? process.env.DEBUG\n : typeof localStorage !== \"undefined\"\n ? localStorage.zeed ?? localStorage.debug\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 =>\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"],
5
- "mappings": "2yBAEO,GAAM,UAAW,OAAC,KAAa,KAAO,MAAO,OAAQ,SAApC,YACjB,GAAM,aAAc,OAAC,KAAa,OAAO,OAAS,IAA9B,eAsHpB,mBAAmB,EAAQ,EAAQ,KAAO,GAAI,SAAW,CAE9D,GAAI,IAAM,EAAG,CACX,MAAO,MAIT,GAAI,KAAK,IAAI,GAAI,CAEf,MAAO,MAGT,GAAI,CAAC,YAAY,GAAI,CACnB,KAAK,IAAI,GAIX,GAAI,CAAE,aAAa,UAAW,CAAE,aAAa,SAAS,CACpD,MAAO,OAKT,GAAI,EAAE,cAAgB,EAAE,YAAa,CACnC,MAAO,OAIT,GAAI,EAAE,SAAW,EAAE,OAAQ,CACzB,MAAO,OAGT,OAAS,KAAK,GAAG,CAEf,GAAI,CAAC,EAAE,eAAe,GAAI,CACxB,SAIF,GAAI,CAAC,EAAE,eAAe,GAAI,CACxB,MAAO,OAGT,GAAI,IAAK,EAAE,GACX,GAAI,IAAK,EAAE,GAeX,GAAI,CAAC,UAAU,GAAI,GAAI,MAAO,CAC5B,MAAO,QAKX,OAAS,KAAK,GAAG,CACf,GAAI,EAAE,eAAe,IAAM,CAAC,EAAE,eAAe,GAAI,CAC/C,MAAO,QAIX,MAAO,MAvEO,8BA0ET,mBAAmB,UAAgB,QAAgB,CACxD,OAAS,UAAU,SAAS,CAC1B,GAAI,CAAC,SAAS,QAAS,CACrB,OAAS,GAGX,GAAI,QAAU,KAAM,SAEpB,OAAO,KAAK,QAAQ,QAAQ,AAAC,KAAQ,CACnC,KAAM,aAAc,OAAO,KAC3B,KAAM,aAAc,OAAO,KAE3B,GAAI,MAAM,QAAQ,cAAgB,MAAM,QAAQ,aAAc,CAC5D,OAAO,KAAO,YAAY,OAAO,qBACxB,SAAS,cAAgB,SAAS,aAAc,CACzD,OAAO,KAAO,UAAU,OAAO,OAAO,GAAI,aAAc,iBACnD,CACL,OAAO,KAAO,eAKpB,MAAO,QAtBO,8BCvLT,8BAA8B,IAAyB,GAAgB,CAC5E,KAAM,CACJ,MAAQ,OACR,OAAS,OACT,OAAS,KACT,YAAc,MACd,aAAe,KACf,QAAU,IACR,IACJ,KAAM,kBAAmB,mBAAmB,QAC5C,KAAM,cAAe,eAAe,OACpC,MAAO,AAAC,MAAoB,CAC1B,GAAI,CAAC,aAAa,IAAI,OAAQ,OAC9B,GAAI,CAAC,iBAAiB,IAAI,MAAO,OACjC,GAAI,MAAO,IAAI,KAAO,IAAI,IAAI,QAAU,GACxC,OAAQ,IAAI,WACL,UAAS,KACZ,QAAQ,KAAK,SAAS,OAAQ,GAAG,IAAI,UACrC,UACG,UAAS,KACZ,QAAQ,KAAK,SAAS,OAAQ,GAAG,IAAI,UACrC,UACG,UAAS,MACZ,QAAQ,MAAM,SAAS,OAAQ,GAAG,IAAI,UACtC,cAEA,QAAQ,MAAM,SAAS,OAAQ,GAAG,IAAI,UACtC,QA3BQ,oDCNT,GAAK,UAAL,UAAK,UAAL,CACL,2BAAM,IAAN,MACA,6BAAQ,GAAR,QACA,sCACA,sCACA,wCACA,wCACA,2BAAM,UAAN,QAPU,yBAUL,GAAM,eAA0C,CACrD,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,EACH,IAAK,EACL,MAAO,EACP,EAAG,EACH,IAAK,EACL,KAAM,EACN,EAAG,EACH,KAAM,EACN,QAAS,EACT,EAAG,EACH,IAAK,EACL,MAAO,EACP,MAAO,EACP,IAAK,SACL,IAAK,UAgEA,uBAAuB,OAAiB,GAA4B,CACzE,GAAI,aAA4B,CAAC,wBACjC,GAAI,gBAA2B,EAC/B,GAAI,mBAAoB,OAAC,MAAiB,KAAlB,qBACxB,GAAI,SAAU,MACd,GAAI,YAAa,kBAEjB,2BAA2B,KAAe,GAAqB,CAC7D,IAAI,OAAS,SAAU,QAAiC,CACtD,MAAO,YAAW,KAAO,GAAG,QAAQ,UAAW,UAGjD,KAAM,MAAO,OAAC,KAAoB,CAChC,GAAI,IAAI,SAAW,KAAM,CACvB,GAAI,IAAI,OAAS,QAAO,OAAS,IAAI,OAAS,IAAI,MAAO,CACvD,GAAI,kBAAkB,MAAO,CAC3B,OAAS,WAAW,aAAa,CAC/B,GAAI,QAAS,QAAQ,UALlB,QAYb,gBAAgB,SAAiB,CAC/B,KAAK,CACH,KACA,SACA,MAAO,IAJF,kBAQT,IAAI,OAAS,KACb,IAAI,MAAQ,GAEZ,IAAI,MAAQ,YAAa,SAAiB,CACxC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,KAAO,YAAa,SAAiB,CACvC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,KAAO,YAAa,SAAiB,CACvC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,MAAQ,YAAa,SAAiB,CACxC,KAAK,CACH,KACA,SACA,MAAO,KAQX,IAAI,OAAS,SAAU,QAAc,SAAiB,CACpD,GAAI,CAAC,KAAM,CACT,GAAI,MAAO,WAAY,OAAW,CAChC,GAAI,QAAQ,OAAQ,CAElB,QAAQ,OAAO,KAAM,GAAG,cACnB,CACL,QAAQ,MAAM,yBAAyB,OAAQ,GAAG,WAGtD,KAAK,CACH,KACA,SAAU,UAAY,CAAC,yBAAyB,QAChD,MAAO,mBAYb,IAAI,YAAc,SAAU,MAAY,YAAkB,KAAa,CACrE,GAAI,OAAQ,UAAU,MAAO,UAC7B,GAAI,CAAC,MAAO,CACV,IAAI,OACF,MACA,6BAA6B,gBAAgB,QAC7C,SACA,MACA,GAAG,QAOT,IAAI,eAAiB,SAAU,MAAY,YAAkB,KAAa,CACxE,GAAI,OAAQ,UAAU,MAAO,UAC7B,GAAI,MAAO,CACT,IAAI,OACF,MACA,6BAA6B,iCAAiC,QAC9D,SACA,MACA,GAAG,QAOT,MAAO,KAvHA,8CA0HT,iBAAgB,KAAe,GAAqB,CAClD,MAAO,YAAW,MADX,yBAIT,QAAO,gBAAkB,SAAU,QAAqB,CACtD,YAAY,KAAK,UAGnB,QAAO,UAAY,SAAU,WAAoB,CAC/C,kBAAoB,mBAAmB,aAGzC,QAAO,QAAU,CAAC,KAAgB,OAAU,QAAU,KAEtD,QAAO,YAAc,SAAU,SAAyB,GAAI,CAC1D,GAAI,aAAe,kBAAmB,CACpC,WAAa,kBAEf,GAAI,QAAS,OACb,YAAc,CAAC,GAAG,UAAU,OAAO,AAAC,GAAM,MAAO,KAAM,aAGzD,QAAO,MAAQ,GAGf,QAAO,YAAc,SAAU,MAAkB,GAAc,CAC7D,GAAI,QAAS,OACb,QAAO,MAAQ,OAGjB,QAAO,WAAa,SAClB,QACM,CACN,GAAI,QAAS,OACb,WAAa,SAGf,MAAO,SAtKO,sCClGhB,UAWA,GAAM,wBACJ,MAAO,WAAY,YACf,YAAQ,IAAI,OAAZ,QAAoB,QAAQ,IAAI,MAChC,MAAO,gBAAiB,YACxB,iBAAa,OAAb,QAAqB,aAAa,MAClC,IAQC,4BACL,OAAiB,uBACA,CACjB,GAAI,IACJ,GAAI,QAAS,GACb,GAAI,QAAS,GAEb,GAAI,CAAC,OAAQ,CACX,GAAK,gBAAU,KAAc,CAC3B,MAAO,QADJ,cAGI,SAAW,IAAK,CACzB,GAAK,gBAAU,KAAc,CAC3B,MAAO,OADJ,UAGA,CACL,GAAI,GACJ,KAAM,OAAQ,OAAO,MAAM,UAC3B,KAAM,KAAM,MAAM,OAClB,IAAK,EAAI,EAAG,EAAI,IAAK,IAAK,CACxB,GAAI,CAAC,MAAM,GAAI,CAEb,SAEF,GAAI,UAAW,MAAM,GAAG,QAAQ,MAAO,OACvC,GAAI,SAAS,KAAO,IAAK,CACvB,OAAO,KAAK,GAAI,QAAO,IAAM,SAAS,OAAO,GAAK,UAC7C,CACL,OAAO,KAAK,GAAI,QAAO,IAAM,SAAW,OAI5C,GAAK,gBAAU,KAAc,CAC3B,GAAI,OAAO,SAAW,GAAK,OAAO,SAAW,EAAG,CAC9C,MAAO,MAET,GAAI,IAAG,KACP,IAAK,GAAI,EAAG,KAAM,OAAO,OAAQ,GAAI,KAAK,KAAK,CAC7C,GAAI,OAAO,IAAG,KAAK,MAAO,CACxB,MAAO,QAGX,IAAK,GAAI,EAAG,KAAM,OAAO,OAAQ,GAAI,KAAK,KAAK,CAC7C,GAAI,OAAO,IAAG,KAAK,MAAO,CACxB,MAAO,OAGX,MAAO,QAfJ,MAkBP,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,MAAO,IArDO,gDAxBhB,kBAgFA,GAAM,oBACJ,MAAO,WAAY,YACf,kBAAQ,IAAI,aAAZ,SAA0B,QAAQ,IAAI,QAAtC,SAA+C,QAAQ,IAAI,YAC3D,MAAO,gBAAiB,YACxB,qBAAa,aAAb,QAA2B,aAAa,QAAxC,QAAiD,aAAa,YAC9D,OAEC,wBACL,OAA0B,mBACI,CAC9B,GAAI,aAAwB,SAAS,IACrC,GAAI,MAAO,UAAW,SAAU,CAC9B,KAAM,GAAI,cAAc,OAAO,oBAAoB,QACnD,GAAI,GAAK,KAAM,YAAc,UACpB,MAAO,UAAW,SAAU,CACrC,YAAc,OAEhB,MAAO,AAAC,QAAU,OAAS,YAVb,wCC7EhB,kBAA0C,CACxC,GAAI,MAAO,QAAS,YAAa,MAAO,MACxC,GAAI,MAAO,UAAW,YAAa,MAAO,QAC1C,GAAI,MAAO,UAAW,YAAa,MAAO,QAC1C,GAAI,MAAO,cAAe,YACxB,MAAO,YACT,KAAM,IAAI,OAAM,kCANT,0BASF,2BAA+C,CACpD,GAAI,UAAW,UACf,GAAI,SAAS,aAAe,KAAM,CAChC,SAAS,YAAc,GAEzB,MAAO,UAAS,YALF,4CCXhB,GAAI,cAQJ,2BAA4B,CAC1B,GAAI,QAAS,gBACb,OAAO,YAAY,CAAC,yBACpB,MAAO,QAHA,4CAMT,GAAI,CACF,GAAI,UAAU,mBACd,GAAI,UAAW,KAAM,CACnB,GAAI,gCAAS,SAAU,KAAM,CAC3B,aAAe,mBACf,SAAQ,OAAS,iBACZ,CACL,aAAe,SAAQ,YAEpB,CACL,aAAe,0BAEV,EAAP,CACA,aAAe,mBAMV,GAAM,QAAS,aCpCf,GAAM,cAAe,WAE1B,MAAO,eAAgB,YAAc,YAAY,MAAQ,GAAI,QAAO,UAF1C,gBAIrB,4BAA4B,GAAoB,CACrD,MAAO,IAAK,IAAO,IAAK,KAAM,QAAQ,GAAK,IAAM,GAAG,QAAQ,GAAK,KADnD,gDAIT,sBACF,eACe,CAClB,OAAS,iBAAiB,gBAAgB,CACxC,GAAI,wBAAyB,MAAM,CACjC,MAAO,eAET,GAAI,MAAO,iBAAkB,SAAU,CACrC,GAAI,MAAO,KACX,GAAI,cAAc,SAAS,KAAM,CAC/B,GAAI,CACF,KAAO,GAAI,MAAK,qBACT,IAAP,GAEJ,GAAI,CAAE,gBAAgB,OAAO,CAC3B,GAAI,GAAI,2BAA2B,KAAK,eACxC,GAAI,EAAG,CACL,KAAO,GAAI,MAAK,CAAC,EAAE,GAAI,CAAC,EAAE,GAAK,EAAG,CAAC,EAAE,GAAI,GAAI,IAGjD,GAAI,eAAgB,MAAM,CACxB,MAAO,SArBC",
4
+ "sourcesContent": ["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nexport const isObject = (obj: any) => obj && typeof obj === \"object\"\nexport const isPrimitive = (obj: any) => Object(obj) !== obj\n\n// export function deepClone(obj) {\n// return cloneDeep(obj)\n// }\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClone(obj, hash = new WeakMap()) {\n// return cloneDeep(obj)\n//\n// // primitives\n// if (Object(obj) !== 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// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) =>\n// [key, deepClone(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 (obj.constructor) {\n// result = new obj.constructor()\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]: deepClone(obj[key], hash),\n// })),\n// )\n// }\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\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.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 log.assert = function (cond: any, ...messages: any[]) {\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 =>\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"],
5
+ "mappings": "2yBAEO,GAAM,UAAW,OAAC,KAAa,KAAO,MAAO,OAAQ,SAApC,YACjB,GAAM,aAAc,OAAC,KAAa,OAAO,OAAS,IAA9B,eAsHpB,mBAAmB,EAAQ,EAAQ,KAAO,GAAI,SAAW,CAE9D,GAAI,IAAM,EAAG,CACX,MAAO,MAIT,GAAI,KAAK,IAAI,GAAI,CAEf,MAAO,MAGT,GAAI,CAAC,YAAY,GAAI,CACnB,KAAK,IAAI,GAIX,GAAI,CAAE,aAAa,UAAW,CAAE,aAAa,SAAS,CACpD,MAAO,OAKT,GAAI,EAAE,cAAgB,EAAE,YAAa,CACnC,MAAO,OAIT,GAAI,EAAE,SAAW,EAAE,OAAQ,CACzB,MAAO,OAGT,OAAS,KAAK,GAAG,CAEf,GAAI,CAAC,EAAE,eAAe,GAAI,CACxB,SAIF,GAAI,CAAC,EAAE,eAAe,GAAI,CACxB,MAAO,OAGT,GAAI,IAAK,EAAE,GACX,GAAI,IAAK,EAAE,GAeX,GAAI,CAAC,UAAU,GAAI,GAAI,MAAO,CAC5B,MAAO,QAKX,OAAS,KAAK,GAAG,CACf,GAAI,EAAE,eAAe,IAAM,CAAC,EAAE,eAAe,GAAI,CAC/C,MAAO,QAIX,MAAO,MAvEO,8BA0ET,mBAAmB,UAAgB,QAAgB,CACxD,OAAS,UAAU,SAAS,CAC1B,GAAI,CAAC,SAAS,QAAS,CACrB,OAAS,GAGX,GAAI,QAAU,KAAM,SAEpB,OAAO,KAAK,QAAQ,QAAQ,AAAC,KAAQ,CACnC,KAAM,aAAc,OAAO,KAC3B,KAAM,aAAc,OAAO,KAE3B,GAAI,MAAM,QAAQ,cAAgB,MAAM,QAAQ,aAAc,CAC5D,OAAO,KAAO,YAAY,OAAO,qBACxB,SAAS,cAAgB,SAAS,aAAc,CACzD,OAAO,KAAO,UAAU,OAAO,OAAO,GAAI,aAAc,iBACnD,CACL,OAAO,KAAO,eAKpB,MAAO,QAtBO,8BCvLT,8BAA8B,IAAyB,GAAgB,CAC5E,KAAM,CACJ,MAAQ,OACR,OAAS,OACT,OAAS,KACT,YAAc,MACd,aAAe,KACf,QAAU,IACR,IACJ,KAAM,kBAAmB,mBAAmB,QAC5C,KAAM,cAAe,eAAe,OACpC,MAAO,AAAC,MAAoB,CAC1B,GAAI,CAAC,aAAa,IAAI,OAAQ,OAC9B,GAAI,CAAC,iBAAiB,IAAI,MAAO,OACjC,GAAI,MAAO,IAAI,KAAO,IAAI,IAAI,QAAU,GACxC,OAAQ,IAAI,WACL,UAAS,KACZ,QAAQ,KAAK,SAAS,OAAQ,GAAG,IAAI,UACrC,UACG,UAAS,KACZ,QAAQ,KAAK,SAAS,OAAQ,GAAG,IAAI,UACrC,UACG,UAAS,MACZ,QAAQ,MAAM,SAAS,OAAQ,GAAG,IAAI,UACtC,cAEA,QAAQ,MAAM,SAAS,OAAQ,GAAG,IAAI,UACtC,QA3BQ,oDCNT,GAAK,UAAL,UAAK,UAAL,CACL,2BAAM,IAAN,MACA,6BAAQ,GAAR,QACA,sCACA,sCACA,wCACA,wCACA,2BAAM,UAAN,QAPU,yBAUL,GAAM,eAA0C,CACrD,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,EACH,IAAK,EACL,MAAO,EACP,EAAG,EACH,IAAK,EACL,KAAM,EACN,EAAG,EACH,KAAM,EACN,QAAS,EACT,EAAG,EACH,IAAK,EACL,MAAO,EACP,MAAO,EACP,IAAK,SACL,IAAK,UAgEA,uBAAuB,OAAiB,GAA4B,CACzE,GAAI,aAA4B,CAAC,wBACjC,GAAI,gBAA2B,EAC/B,GAAI,mBAAoB,OAAC,MAAiB,KAAlB,qBACxB,GAAI,SAAU,MACd,GAAI,YAAa,kBAEjB,2BAA2B,KAAe,GAAqB,CAC7D,IAAI,OAAS,SAAU,QAAiC,CACtD,MAAO,YAAW,KAAO,GAAG,QAAQ,UAAW,UAGjD,KAAM,MAAO,OAAC,KAAoB,CAChC,GAAI,IAAI,SAAW,KAAM,CACvB,GAAI,IAAI,OAAS,QAAO,OAAS,IAAI,OAAS,IAAI,MAAO,CACvD,GAAI,kBAAkB,MAAO,CAC3B,OAAS,WAAW,aAAa,CAC/B,GAAI,QAAS,QAAQ,UALlB,QAYb,gBAAgB,SAAiB,CAC/B,KAAK,CACH,KACA,SACA,MAAO,IAJF,kBAQT,IAAI,OAAS,KACb,IAAI,MAAQ,GAEZ,IAAI,MAAQ,YAAa,SAAiB,CACxC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,KAAO,YAAa,SAAiB,CACvC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,KAAO,YAAa,SAAiB,CACvC,KAAK,CACH,KACA,SACA,MAAO,KAIX,IAAI,MAAQ,YAAa,SAAiB,CACxC,KAAK,CACH,KACA,SACA,MAAO,KAQX,IAAI,OAAS,SAAU,QAAc,SAAiB,CACpD,GAAI,CAAC,KAAM,CACT,GAAI,MAAO,WAAY,OAAW,CAChC,GAAI,QAAQ,OAAQ,CAElB,QAAQ,OAAO,KAAM,GAAG,cACnB,CACL,QAAQ,MAAM,yBAAyB,OAAQ,GAAG,WAGtD,KAAK,CACH,KACA,SAAU,UAAY,CAAC,yBAAyB,QAChD,MAAO,mBAYb,IAAI,YAAc,SAAU,MAAY,YAAkB,KAAa,CACrE,GAAI,OAAQ,UAAU,MAAO,UAC7B,GAAI,CAAC,MAAO,CACV,IAAI,OACF,MACA,6BAA6B,gBAAgB,QAC7C,SACA,MACA,GAAG,QAOT,IAAI,eAAiB,SAAU,MAAY,YAAkB,KAAa,CACxE,GAAI,OAAQ,UAAU,MAAO,UAC7B,GAAI,MAAO,CACT,IAAI,OACF,MACA,6BAA6B,iCAAiC,QAC9D,SACA,MACA,GAAG,QAOT,MAAO,KAvHA,8CA0HT,iBAAgB,KAAe,GAAqB,CAClD,MAAO,YAAW,MADX,yBAIT,QAAO,gBAAkB,SAAU,QAAqB,CACtD,YAAY,KAAK,UAGnB,QAAO,UAAY,SAAU,WAAoB,CAC/C,kBAAoB,mBAAmB,aAGzC,QAAO,QAAU,CAAC,KAAgB,OAAU,QAAU,KAEtD,QAAO,YAAc,SAAU,SAAyB,GAAI,CAC1D,GAAI,aAAe,kBAAmB,CACpC,WAAa,kBAEf,GAAI,QAAS,OACb,YAAc,CAAC,GAAG,UAAU,OAAO,AAAC,GAAM,MAAO,KAAM,aAGzD,QAAO,MAAQ,GAGf,QAAO,YAAc,SAAU,MAAkB,GAAc,CAC7D,GAAI,QAAS,OACb,QAAO,MAAQ,OAGjB,QAAO,WAAa,SAClB,QACM,CACN,GAAI,QAAS,OACb,WAAa,SAGf,MAAO,SAtKO,sCCvFT,kCAAkC,wBAAqC,CAC5E,GACE,0BAA2B,MAC3B,0BAA2B,QAC3B,0BAA2B,KAC1B,MAAO,2BAA2B,UAAY,0BAA2B,EAC1E,CACA,wBAAyB,YAEzB,0BAA2B,OAC3B,0BAA2B,SAC3B,0BAA2B,GAC3B,0BAA2B,KAC3B,yBAA0B,MAC1B,0BAA2B,QAC3B,0BAA2B,YAC3B,CACA,wBAAyB,OACpB,CACL,wBAAyB,OAAO,yBAElC,MAAO,yBArBO,4DAXhB,UAmCA,GAAM,wBAAiC,yBACrC,MAAO,WAAY,YACf,YAAQ,IAAI,OAAZ,QAAoB,QAAQ,IAAI,MAChC,MAAO,gBAAiB,YACxB,iBAAa,OAAb,QAAqB,aAAa,MAClC,KASC,4BACL,OAAiB,uBACA,CACjB,GAAI,IACJ,GAAI,QAAS,GACb,GAAI,QAAS,GAEb,GAAI,CAAC,OAAQ,CACX,GAAK,gBAAU,KAAc,CAC3B,MAAO,QADJ,cAGI,SAAW,IAAK,CACzB,GAAK,gBAAU,KAAc,CAC3B,MAAO,OADJ,UAGA,CACL,GAAI,GACJ,KAAM,OAAQ,OAAO,MAAM,UAC3B,KAAM,KAAM,MAAM,OAClB,IAAK,EAAI,EAAG,EAAI,IAAK,IAAK,CACxB,GAAI,CAAC,MAAM,GAAI,CAEb,SAEF,GAAI,UAAW,MAAM,GAAG,QAAQ,MAAO,OACvC,GAAI,SAAS,KAAO,IAAK,CACvB,OAAO,KAAK,GAAI,QAAO,IAAM,SAAS,OAAO,GAAK,UAC7C,CACL,OAAO,KAAK,GAAI,QAAO,IAAM,SAAW,OAI5C,GAAK,gBAAU,KAAc,CAC3B,GAAI,OAAO,SAAW,GAAK,OAAO,SAAW,EAAG,CAC9C,MAAO,MAET,GAAI,IAAG,KACP,IAAK,GAAI,EAAG,KAAM,OAAO,OAAQ,GAAI,KAAK,KAAK,CAC7C,GAAI,OAAO,IAAG,KAAK,MAAO,CACxB,MAAO,QAGX,IAAK,GAAI,EAAG,KAAM,OAAO,OAAQ,GAAI,KAAK,KAAK,CAC7C,GAAI,OAAO,IAAG,KAAK,MAAO,CACxB,MAAO,OAGX,MAAO,QAfJ,MAkBP,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,MAAO,IArDO,gDAjDhB,kBAyGA,GAAM,oBACJ,MAAO,WAAY,YACf,kBAAQ,IAAI,aAAZ,SAA0B,QAAQ,IAAI,QAAtC,SAA+C,QAAQ,IAAI,YAC3D,MAAO,gBAAiB,YACxB,qBAAa,aAAb,QAA2B,aAAa,QAAxC,QAAiD,aAAa,YAC9D,OAEC,wBACL,OAA0B,mBACI,CAC9B,GAAI,aAAwB,SAAS,IACrC,GAAI,MAAO,UAAW,SAAU,CAC9B,KAAM,GAAI,cAAc,OAAO,oBAAoB,QACnD,GAAI,GAAK,KAAM,YAAc,UACpB,MAAO,UAAW,SAAU,CACrC,YAAc,OAEhB,MAAO,AAAC,QAAU,OAAS,YAVb,wCCtGhB,kBAA0C,CACxC,GAAI,MAAO,QAAS,YAAa,MAAO,MACxC,GAAI,MAAO,UAAW,YAAa,MAAO,QAC1C,GAAI,MAAO,UAAW,YAAa,MAAO,QAC1C,GAAI,MAAO,cAAe,YACxB,MAAO,YACT,KAAM,IAAI,OAAM,kCANT,0BASF,2BAA+C,CACpD,GAAI,UAAW,UACf,GAAI,SAAS,aAAe,KAAM,CAChC,SAAS,YAAc,GAEzB,MAAO,UAAS,YALF,4CCXhB,GAAI,cAQJ,2BAA4B,CAC1B,GAAI,QAAS,gBACb,OAAO,YAAY,CAAC,yBACpB,MAAO,QAHA,4CAMT,GAAI,CACF,GAAI,UAAU,mBACd,GAAI,UAAW,KAAM,CACnB,GAAI,gCAAS,SAAU,KAAM,CAC3B,aAAe,mBACf,SAAQ,OAAS,iBACZ,CACL,aAAe,SAAQ,YAEpB,CACL,aAAe,0BAEV,EAAP,CACA,aAAe,mBAMV,GAAM,QAAS,aCpCf,GAAM,cAAe,WAE1B,MAAO,eAAgB,YAAc,YAAY,MAAQ,GAAI,QAAO,UAF1C,gBAIrB,4BAA4B,GAAoB,CACrD,MAAO,IAAK,IAAO,IAAK,KAAM,QAAQ,GAAK,IAAM,GAAG,QAAQ,GAAK,KADnD,gDAIT,sBACF,eACe,CAClB,OAAS,iBAAiB,gBAAgB,CACxC,GAAI,wBAAyB,MAAM,CACjC,MAAO,eAET,GAAI,MAAO,iBAAkB,SAAU,CACrC,GAAI,MAAO,KACX,GAAI,cAAc,SAAS,KAAM,CAC/B,GAAI,CACF,KAAO,GAAI,MAAK,qBACT,IAAP,GAEJ,GAAI,CAAE,gBAAgB,OAAO,CAC3B,GAAI,GAAI,2BAA2B,KAAK,eACxC,GAAI,EAAG,CACL,KAAO,GAAI,MAAK,CAAC,EAAE,GAAI,CAAC,EAAE,GAAK,EAAG,CAAC,EAAE,GAAI,GAAI,IAGjD,GAAI,eAAgB,MAAM,CACxB,MAAO,SArBC",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- import{LoggerBrowserHandler,LoggerBrowserSetupDebugFactory,selectColor,supportsColors}from"./chunk-LHRH3PPK.js";import{isBrowser}from"./chunk-NVBCS4JD.js";import{LogLevel,Logger,__name,formatMilliseconds,getTimestamp,useLevelFilter,useNamespaceFilter}from"./chunk-VMVEUXL5.js";var{error}=Logger("zeed:base64");function urlBase64ToUint8Array(base64String){try{let padding="=".repeat((4-base64String.length%4)%4);let base64=(base64String+padding).replace(/-/g,"+").replace(/_/g,"/");let rawData=window.atob(base64);let outputArray=new Uint8Array(rawData.length);for(let i=0;i<rawData.length;++i){outputArray[i]=rawData.charCodeAt(i)}return outputArray}catch(err){error(err,base64String)}}__name(urlBase64ToUint8Array,"urlBase64ToUint8Array");var log=Logger("zeed:gravatar");function gravatar(email,options){function md5cycle(e,t){var n=e[0],r=e[1],i=e[2],s=e[3];n=ff(n,r,i,s,t[0],7,-680876936);s=ff(s,n,r,i,t[1],12,-389564586);i=ff(i,s,n,r,t[2],17,606105819);r=ff(r,i,s,n,t[3],22,-1044525330);n=ff(n,r,i,s,t[4],7,-176418897);s=ff(s,n,r,i,t[5],12,1200080426);i=ff(i,s,n,r,t[6],17,-1473231341);r=ff(r,i,s,n,t[7],22,-45705983);n=ff(n,r,i,s,t[8],7,1770035416);s=ff(s,n,r,i,t[9],12,-1958414417);i=ff(i,s,n,r,t[10],17,-42063);r=ff(r,i,s,n,t[11],22,-1990404162);n=ff(n,r,i,s,t[12],7,1804603682);s=ff(s,n,r,i,t[13],12,-40341101);i=ff(i,s,n,r,t[14],17,-1502002290);r=ff(r,i,s,n,t[15],22,1236535329);n=gg(n,r,i,s,t[1],5,-165796510);s=gg(s,n,r,i,t[6],9,-1069501632);i=gg(i,s,n,r,t[11],14,643717713);r=gg(r,i,s,n,t[0],20,-373897302);n=gg(n,r,i,s,t[5],5,-701558691);s=gg(s,n,r,i,t[10],9,38016083);i=gg(i,s,n,r,t[15],14,-660478335);r=gg(r,i,s,n,t[4],20,-405537848);n=gg(n,r,i,s,t[9],5,568446438);s=gg(s,n,r,i,t[14],9,-1019803690);i=gg(i,s,n,r,t[3],14,-187363961);r=gg(r,i,s,n,t[8],20,1163531501);n=gg(n,r,i,s,t[13],5,-1444681467);s=gg(s,n,r,i,t[2],9,-51403784);i=gg(i,s,n,r,t[7],14,1735328473);r=gg(r,i,s,n,t[12],20,-1926607734);n=hh(n,r,i,s,t[5],4,-378558);s=hh(s,n,r,i,t[8],11,-2022574463);i=hh(i,s,n,r,t[11],16,1839030562);r=hh(r,i,s,n,t[14],23,-35309556);n=hh(n,r,i,s,t[1],4,-1530992060);s=hh(s,n,r,i,t[4],11,1272893353);i=hh(i,s,n,r,t[7],16,-155497632);r=hh(r,i,s,n,t[10],23,-1094730640);n=hh(n,r,i,s,t[13],4,681279174);s=hh(s,n,r,i,t[0],11,-358537222);i=hh(i,s,n,r,t[3],16,-722521979);r=hh(r,i,s,n,t[6],23,76029189);n=hh(n,r,i,s,t[9],4,-640364487);s=hh(s,n,r,i,t[12],11,-421815835);i=hh(i,s,n,r,t[15],16,530742520);r=hh(r,i,s,n,t[2],23,-995338651);n=ii(n,r,i,s,t[0],6,-198630844);s=ii(s,n,r,i,t[7],10,1126891415);i=ii(i,s,n,r,t[14],15,-1416354905);r=ii(r,i,s,n,t[5],21,-57434055);n=ii(n,r,i,s,t[12],6,1700485571);s=ii(s,n,r,i,t[3],10,-1894986606);i=ii(i,s,n,r,t[10],15,-1051523);r=ii(r,i,s,n,t[1],21,-2054922799);n=ii(n,r,i,s,t[8],6,1873313359);s=ii(s,n,r,i,t[15],10,-30611744);i=ii(i,s,n,r,t[6],15,-1560198380);r=ii(r,i,s,n,t[13],21,1309151649);n=ii(n,r,i,s,t[4],6,-145523070);s=ii(s,n,r,i,t[11],10,-1120210379);i=ii(i,s,n,r,t[2],15,718787259);r=ii(r,i,s,n,t[9],21,-343485551);e[0]=add32(n,e[0]);e[1]=add32(r,e[1]);e[2]=add32(i,e[2]);e[3]=add32(s,e[3])}__name(md5cycle,"md5cycle");function cmn(e,t,n,r,i,s){t=add32(add32(t,e),add32(r,s));return add32(t<<i|t>>>32-i,n)}__name(cmn,"cmn");function ff(e,t,n,r,i,s,o){return cmn(t&n|~t&r,e,t,i,s,o)}__name(ff,"ff");function gg(e,t,n,r,i,s,o){return cmn(t&r|n&~r,e,t,i,s,o)}__name(gg,"gg");function hh(e,t,n,r,i,s,o){return cmn(t^n^r,e,t,i,s,o)}__name(hh,"hh");function ii(e,t,n,r,i,s,o){return cmn(n^(t|~r),e,t,i,s,o)}__name(ii,"ii");function md51(e){var t=e.length,n=[1732584193,-271733879,-1732584194,271733878],r;for(r=64;r<=e.length;r+=64){md5cycle(n,md5blk(e.substring(r-64,r)))}e=e.substring(r-64);var i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(r=0;r<e.length;r++)i[r>>2]|=e.charCodeAt(r)<<(r%4<<3);i[r>>2]|=128<<(r%4<<3);if(r>55){md5cycle(n,i);for(r=0;r<16;r++)i[r]=0}i[14]=t*8;md5cycle(n,i);return n}__name(md51,"md51");function md5blk(e){var t=[],n;for(n=0;n<64;n+=4){t[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24)}return t}__name(md5blk,"md5blk");function rhex(e){var t="",n=0;for(;n<4;n++)t+=hex_chr[e>>n*8+4&15]+hex_chr[e>>n*8&15];return t}__name(rhex,"rhex");function hex(e){for(var t=0;t<e.length;t++)e[t]=rhex(e[t]);return e.join("")}__name(hex,"hex");function md5(e){return hex(md51(e))}__name(md5,"md5");function add32(e,t){return e+t&4294967295}__name(add32,"add32");var hex_chr="0123456789abcdef".split("");var options=options||{},base,params=[];options={size:options.size||"50",rating:options.rating||"g",secure:options.secure||location.protocol==="https:",backup:options.backup||""};email=email.trim().toLowerCase();base=options.secure?"https://secure.gravatar.com/avatar/":"http://www.gravatar.com/avatar/";if(options.rating){params.push("r="+options.rating)}if(options.backup){params.push("d="+encodeURIComponent(options.backup))}if(options.size){params.push("s="+options.size)}return base+md5(email)+"?"+params.join("&")}__name(gravatar,"gravatar");function gravatarURLByEmail(email,defaultURL=""){try{return gravatar(email,{size:256,backup:"monsterid",secure:true})}catch(error2){log("Gravatar issue: Did not find an image for "+email);return defaultURL}}__name(gravatarURLByEmail,"gravatarURLByEmail");var log2=Logger("zeed:localstorage");var LocalStorage=class{constructor(opt){this.pretty=false;var _a,_b;log2.assert(opt.name,"name required");this.name=opt.name;this.prefix=`${opt.name}$`;this.objectToString=(_a=opt.objectToString)!=null?_a:data=>{return this.pretty?JSON.stringify(data,null,2):JSON.stringify(data)};this.objectFromString=(_b=opt.objectFromString)!=null?_b:data=>{try{return JSON.parse(data)}catch(err){log2.warn(`LocalStorage parse error '${err}' in`,data)}}}setItem(key,value){const data=this.objectToString(value);localStorage.setItem(`${this.prefix}${key}`,data)}getItem(key){let value=localStorage.getItem(`${this.prefix}${key}`);if(value!=null){return this.objectFromString(value)}}removeItem(key){localStorage.removeItem(`${this.prefix}${key}`)}clear(){Object.keys(localStorage).filter(key=>key.startsWith(this.prefix)).forEach(key=>{localStorage.removeItem(key)})}allKeys(){const prefixLength=this.prefix.length;return Object.keys(localStorage).filter(key=>key.startsWith(this.prefix)).map(key=>key.substr(prefixLength))}};__name(LocalStorage,"LocalStorage");var namespaces={};var time=getTimestamp();var useColors=supportsColors();function LoggerBrowserClassicHandler(level,opt={}){const{filter=void 0}=opt;const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const timeNow=getTimestamp();let name=msg.name||"";let ninfo=namespaces[name||""];if(ninfo==null){ninfo={color:selectColor(name)};namespaces[name]=ninfo}const diff=formatMilliseconds(timeNow-time);let args;if(opt.colors&&useColors){args=opt.nameBrackets?[`%c[${name}]`]:[`%c${name}`];args.push(`color:${ninfo.color}`);args.push(...msg.messages)}else{args=[name,...msg.messages]}args.push(`+${diff}`);switch(msg.level){case LogLevel.info:if(opt.levelHelper)args[0]=`I|* `+args[0];console.info(...args);break;case LogLevel.warn:if(opt.levelHelper)args[0]=`W|** `+args[0];console.warn(...args);break;case LogLevel.error:if(opt.levelHelper)args[0]=`E|*** `+args[0];console.error(...args);break;default:if(opt.levelHelper)args[0]=`D| `+args[0];console.debug(...args);break}}}__name(LoggerBrowserClassicHandler,"LoggerBrowserClassicHandler");if(isBrowser()){Logger.setHandlers([LoggerBrowserHandler()]);Logger.setFactory(LoggerBrowserSetupDebugFactory({}))}export{urlBase64ToUint8Array,gravatarURLByEmail,LocalStorage,LoggerBrowserClassicHandler};
2
- //# sourceMappingURL=chunk-MCBI6GHZ.js.map
1
+ import{LoggerBrowserHandler,LoggerBrowserSetupDebugFactory,selectColor,supportsColors}from"./chunk-AKCQXHAK.js";import{isBrowser}from"./chunk-BGCMUUNO.js";import{LogLevel,Logger,__name,formatMilliseconds,getTimestamp,useLevelFilter,useNamespaceFilter}from"./chunk-GILANOH3.js";var{error}=Logger("zeed:base64");function urlBase64ToUint8Array(base64String){try{let padding="=".repeat((4-base64String.length%4)%4);let base64=(base64String+padding).replace(/-/g,"+").replace(/_/g,"/");let rawData=window.atob(base64);let outputArray=new Uint8Array(rawData.length);for(let i=0;i<rawData.length;++i){outputArray[i]=rawData.charCodeAt(i)}return outputArray}catch(err){error(err,base64String)}}__name(urlBase64ToUint8Array,"urlBase64ToUint8Array");var log=Logger("zeed:gravatar");function gravatar(email,options){function md5cycle(e,t){var n=e[0],r=e[1],i=e[2],s=e[3];n=ff(n,r,i,s,t[0],7,-680876936);s=ff(s,n,r,i,t[1],12,-389564586);i=ff(i,s,n,r,t[2],17,606105819);r=ff(r,i,s,n,t[3],22,-1044525330);n=ff(n,r,i,s,t[4],7,-176418897);s=ff(s,n,r,i,t[5],12,1200080426);i=ff(i,s,n,r,t[6],17,-1473231341);r=ff(r,i,s,n,t[7],22,-45705983);n=ff(n,r,i,s,t[8],7,1770035416);s=ff(s,n,r,i,t[9],12,-1958414417);i=ff(i,s,n,r,t[10],17,-42063);r=ff(r,i,s,n,t[11],22,-1990404162);n=ff(n,r,i,s,t[12],7,1804603682);s=ff(s,n,r,i,t[13],12,-40341101);i=ff(i,s,n,r,t[14],17,-1502002290);r=ff(r,i,s,n,t[15],22,1236535329);n=gg(n,r,i,s,t[1],5,-165796510);s=gg(s,n,r,i,t[6],9,-1069501632);i=gg(i,s,n,r,t[11],14,643717713);r=gg(r,i,s,n,t[0],20,-373897302);n=gg(n,r,i,s,t[5],5,-701558691);s=gg(s,n,r,i,t[10],9,38016083);i=gg(i,s,n,r,t[15],14,-660478335);r=gg(r,i,s,n,t[4],20,-405537848);n=gg(n,r,i,s,t[9],5,568446438);s=gg(s,n,r,i,t[14],9,-1019803690);i=gg(i,s,n,r,t[3],14,-187363961);r=gg(r,i,s,n,t[8],20,1163531501);n=gg(n,r,i,s,t[13],5,-1444681467);s=gg(s,n,r,i,t[2],9,-51403784);i=gg(i,s,n,r,t[7],14,1735328473);r=gg(r,i,s,n,t[12],20,-1926607734);n=hh(n,r,i,s,t[5],4,-378558);s=hh(s,n,r,i,t[8],11,-2022574463);i=hh(i,s,n,r,t[11],16,1839030562);r=hh(r,i,s,n,t[14],23,-35309556);n=hh(n,r,i,s,t[1],4,-1530992060);s=hh(s,n,r,i,t[4],11,1272893353);i=hh(i,s,n,r,t[7],16,-155497632);r=hh(r,i,s,n,t[10],23,-1094730640);n=hh(n,r,i,s,t[13],4,681279174);s=hh(s,n,r,i,t[0],11,-358537222);i=hh(i,s,n,r,t[3],16,-722521979);r=hh(r,i,s,n,t[6],23,76029189);n=hh(n,r,i,s,t[9],4,-640364487);s=hh(s,n,r,i,t[12],11,-421815835);i=hh(i,s,n,r,t[15],16,530742520);r=hh(r,i,s,n,t[2],23,-995338651);n=ii(n,r,i,s,t[0],6,-198630844);s=ii(s,n,r,i,t[7],10,1126891415);i=ii(i,s,n,r,t[14],15,-1416354905);r=ii(r,i,s,n,t[5],21,-57434055);n=ii(n,r,i,s,t[12],6,1700485571);s=ii(s,n,r,i,t[3],10,-1894986606);i=ii(i,s,n,r,t[10],15,-1051523);r=ii(r,i,s,n,t[1],21,-2054922799);n=ii(n,r,i,s,t[8],6,1873313359);s=ii(s,n,r,i,t[15],10,-30611744);i=ii(i,s,n,r,t[6],15,-1560198380);r=ii(r,i,s,n,t[13],21,1309151649);n=ii(n,r,i,s,t[4],6,-145523070);s=ii(s,n,r,i,t[11],10,-1120210379);i=ii(i,s,n,r,t[2],15,718787259);r=ii(r,i,s,n,t[9],21,-343485551);e[0]=add32(n,e[0]);e[1]=add32(r,e[1]);e[2]=add32(i,e[2]);e[3]=add32(s,e[3])}__name(md5cycle,"md5cycle");function cmn(e,t,n,r,i,s){t=add32(add32(t,e),add32(r,s));return add32(t<<i|t>>>32-i,n)}__name(cmn,"cmn");function ff(e,t,n,r,i,s,o){return cmn(t&n|~t&r,e,t,i,s,o)}__name(ff,"ff");function gg(e,t,n,r,i,s,o){return cmn(t&r|n&~r,e,t,i,s,o)}__name(gg,"gg");function hh(e,t,n,r,i,s,o){return cmn(t^n^r,e,t,i,s,o)}__name(hh,"hh");function ii(e,t,n,r,i,s,o){return cmn(n^(t|~r),e,t,i,s,o)}__name(ii,"ii");function md51(e){var t=e.length,n=[1732584193,-271733879,-1732584194,271733878],r;for(r=64;r<=e.length;r+=64){md5cycle(n,md5blk(e.substring(r-64,r)))}e=e.substring(r-64);var i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(r=0;r<e.length;r++)i[r>>2]|=e.charCodeAt(r)<<(r%4<<3);i[r>>2]|=128<<(r%4<<3);if(r>55){md5cycle(n,i);for(r=0;r<16;r++)i[r]=0}i[14]=t*8;md5cycle(n,i);return n}__name(md51,"md51");function md5blk(e){var t=[],n;for(n=0;n<64;n+=4){t[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24)}return t}__name(md5blk,"md5blk");function rhex(e){var t="",n=0;for(;n<4;n++)t+=hex_chr[e>>n*8+4&15]+hex_chr[e>>n*8&15];return t}__name(rhex,"rhex");function hex(e){for(var t=0;t<e.length;t++)e[t]=rhex(e[t]);return e.join("")}__name(hex,"hex");function md5(e){return hex(md51(e))}__name(md5,"md5");function add32(e,t){return e+t&4294967295}__name(add32,"add32");var hex_chr="0123456789abcdef".split("");var options=options||{},base,params=[];options={size:options.size||"50",rating:options.rating||"g",secure:options.secure||location.protocol==="https:",backup:options.backup||""};email=email.trim().toLowerCase();base=options.secure?"https://secure.gravatar.com/avatar/":"http://www.gravatar.com/avatar/";if(options.rating){params.push("r="+options.rating)}if(options.backup){params.push("d="+encodeURIComponent(options.backup))}if(options.size){params.push("s="+options.size)}return base+md5(email)+"?"+params.join("&")}__name(gravatar,"gravatar");function gravatarURLByEmail(email,defaultURL=""){try{return gravatar(email,{size:256,backup:"monsterid",secure:true})}catch(error2){log("Gravatar issue: Did not find an image for "+email);return defaultURL}}__name(gravatarURLByEmail,"gravatarURLByEmail");var log2=Logger("zeed:localstorage");var LocalStorage=class{constructor(opt){this.pretty=false;var _a,_b;log2.assert(opt.name,"name required");this.name=opt.name;this.prefix=`${opt.name}$`;this.objectToString=(_a=opt.objectToString)!=null?_a:data=>{return this.pretty?JSON.stringify(data,null,2):JSON.stringify(data)};this.objectFromString=(_b=opt.objectFromString)!=null?_b:data=>{try{return JSON.parse(data)}catch(err){log2.warn(`LocalStorage parse error '${err}' in`,data)}}}setItem(key,value){const data=this.objectToString(value);localStorage.setItem(`${this.prefix}${key}`,data)}getItem(key){let value=localStorage.getItem(`${this.prefix}${key}`);if(value!=null){return this.objectFromString(value)}}removeItem(key){localStorage.removeItem(`${this.prefix}${key}`)}clear(){Object.keys(localStorage).filter(key=>key.startsWith(this.prefix)).forEach(key=>{localStorage.removeItem(key)})}allKeys(){const prefixLength=this.prefix.length;return Object.keys(localStorage).filter(key=>key.startsWith(this.prefix)).map(key=>key.substr(prefixLength))}};__name(LocalStorage,"LocalStorage");var namespaces={};var time=getTimestamp();var useColors=supportsColors();function LoggerBrowserClassicHandler(level,opt={}){const{filter=void 0}=opt;const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const timeNow=getTimestamp();let name=msg.name||"";let ninfo=namespaces[name||""];if(ninfo==null){ninfo={color:selectColor(name)};namespaces[name]=ninfo}const diff=formatMilliseconds(timeNow-time);let args;if(opt.colors&&useColors){args=opt.nameBrackets?[`%c[${name}]`]:[`%c${name}`];args.push(`color:${ninfo.color}`);args.push(...msg.messages)}else{args=[name,...msg.messages]}args.push(`+${diff}`);switch(msg.level){case LogLevel.info:if(opt.levelHelper)args[0]=`I|* `+args[0];console.info(...args);break;case LogLevel.warn:if(opt.levelHelper)args[0]=`W|** `+args[0];console.warn(...args);break;case LogLevel.error:if(opt.levelHelper)args[0]=`E|*** `+args[0];console.error(...args);break;default:if(opt.levelHelper)args[0]=`D| `+args[0];console.debug(...args);break}}}__name(LoggerBrowserClassicHandler,"LoggerBrowserClassicHandler");if(isBrowser()){Logger.setHandlers([LoggerBrowserHandler()]);Logger.setFactory(LoggerBrowserSetupDebugFactory({}))}export{urlBase64ToUint8Array,gravatarURLByEmail,LocalStorage,LoggerBrowserClassicHandler};
2
+ //# sourceMappingURL=chunk-JY3HF7NF.js.map
@@ -1,2 +1,2 @@
1
- import{cloneObject,renderMessages,toValidFilename}from"./chunk-NVBCS4JD.js";import{LogLevel,Logger,__name,formatMilliseconds,getTimestamp,useLevelFilter,useNamespaceFilter}from"./chunk-VMVEUXL5.js";import fs from"fs";import{resolve}from"path";var log=Logger("zeed:env");var NEWLINE="\n";var RE_INI_KEY_VAL=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/;var RE_NEWLINES=/\\n/g;var NEWLINES_MATCH=/\n|\r|\r\n/;function parse(src,options={}){let obj={};src.toString().split(NEWLINES_MATCH).forEach(function(line,idx){const keyValueArr=line.match(RE_INI_KEY_VAL);if(keyValueArr!=null){const key=keyValueArr[1];let val=keyValueArr[2]||"";const end=val.length-1;const isDoubleQuoted=val[0]==='"'&&val[end]==='"';const isSingleQuoted=val[0]==="'"&&val[end]==="'";if(isSingleQuoted||isDoubleQuoted){val=val.substring(1,end);if(isDoubleQuoted){val=val.replace(RE_NEWLINES,NEWLINE)}}else{val=val.trim()}obj[key]=val}else{log.debug(`did not match key and value when parsing line ${idx+1}: ${line}`)}});return obj}__name(parse,"parse");function stringToPath(value,defaultValue="."){return resolve(process.cwd(),value!=null?value:defaultValue)}__name(stringToPath,"stringToPath");function valueToPath(value,defaultValue=""){if(value==null)value=defaultValue;return stringToPath(String(value).trim(),defaultValue)}__name(valueToPath,"valueToPath");var toPath=valueToPath;function setupEnv(options={}){var _a2,_b2,_c,_d;const dotenvPath=(_b2=options==null?void 0:options.path)!=null?_b2:toPath((_a2=options==null?void 0:options.filename)!=null?_a2:".env");const encoding=(_c=options==null?void 0:options.encoding)!=null?_c:"utf8";const debug=(options==null?void 0:options.debug)||false;if(debug!==true)log.level=LogLevel.off;try{const parsedEnv=fs.existsSync(dotenvPath)?parse(fs.readFileSync(dotenvPath,{encoding}),{debug}):{};const parsedEnvLocal=fs.existsSync(dotenvPath+".local")?parse(fs.readFileSync(dotenvPath+".local",{encoding}),{debug}):{};const parsed=Object.assign({},parsedEnv,parsedEnvLocal);let env=(_d=options==null?void 0:options.env)!=null?_d:process.env;Object.entries(parsed).forEach(([key,value])=>{if(typeof(options==null?void 0:options.prefix)==="string"){key=(options==null?void 0:options.prefix)+key}if(!Object.prototype.hasOwnProperty.call(env,key)){if(value!=null){log.info(`set env.${key} = ${value}`);env[key]=value}}else{log.debug(`"${key}" is already defined and will not be overwritten`)}});return{parsed}}catch(e){log.error(e);return{error:e}}}__name(setupEnv,"setupEnv");import{mkdirSync,readdirSync,readFileSync,rmSync,unlinkSync,writeFileSync}from"fs";import{dirname,resolve as resolve2}from"path";var log2=Logger("zeed:filestorage");var FileStorage=class{constructor(opt={}){this.store={};this.fileKeys=void 0;this.pretty=false;var _a2,_b2,_c,_d;this.dirname=resolve2(process.cwd(),opt.path||".fileStorage");this.pretty=!!opt.pretty;this.extension=(_a2=opt.extension)!=null?_a2:".json";if(opt.extension&&!this.extension.startsWith(".")){this.extension="."+this.extension}this.extensionLength=this.extension.length;this.objectToString=(_b2=opt.objectToString)!=null?_b2:data=>{return this.pretty?JSON.stringify(data,null,2):JSON.stringify(data)};this.objectFromString=(_c=opt.objectFromString)!=null?_c:data=>{try{return JSON.parse(data)}catch(err){log2.warn(`fileStorage parse error '${err}' in`,data)}};this.keyToFilename=(_d=opt.keyToFilename)!=null?_d:toValidFilename}setItem(key,value){this.store[key]=cloneObject(value);try{const data=this.objectToString(value);const path=this.getPath(key);mkdirSync(dirname(path),{recursive:true});writeFileSync(path,data,"utf8")}catch(err){log2.error("setItem error",err)}}getPath(key){return resolve2(this.dirname,this.keyToFilename(key)+this.extension)}getBuffer(key){const path=this.getPath(key);return Buffer.from(readFileSync(path))}getItem(key){let value=this.store[key];if(value===null)return;if(value!=null){return cloneObject(value)}try{const path=this.getPath(key);const data=readFileSync(path,"utf8");if(data!=null){const value2=this.objectFromString(data);this.store[key]=value2;return value2}}catch(err){log2.warn("getItem error",err);this.store[key]=null}}removeItem(key){delete this.store[key];if(this.fileKeys!=null){const index=this.fileKeys.indexOf(key);if(index!==-1){this.fileKeys.splice(index,1)}}try{const path=this.getPath(key);unlinkSync(path)}catch(err){}}clear(){this.fileKeys=[];this.store={};rmSync(this.dirname,{recursive:true,force:true})}allKeys(){if(this.fileKeys==null){try{this.fileKeys=readdirSync(this.dirname,{withFileTypes:true}).filter(item=>!item.isDirectory()&&item.name.endsWith(this.extension)).map(item=>item.name.slice(0,-this.extensionLength))||[]}catch(err){}}let keys=[...this.fileKeys||[]];for(let key of Object.keys(this.store)){if(!keys.includes(key)){keys.push(key)}}keys.sort();return keys}};__name(FileStorage,"FileStorage");import{createWriteStream,mkdirSync as mkdirSync2}from"fs";import{dirname as dirname2,resolve as resolve3}from"path";var namespaces={};function LoggerFileHandler(path,opt={}){const{level=LogLevel.all,filter="*"}=opt;path=resolve3(process.cwd(),path);mkdirSync2(dirname2(path),{recursive:true});var stream=createWriteStream(path,{flags:"a"});const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const time2=new Date().toISOString();let name=msg.name||"";let ninfo=namespaces[name||""];if(ninfo==null){namespaces[name]=ninfo}let args=[`[${name||"*"}]`,renderMessages(msg.messages,{pretty:false})];function write(...args2){stream.write(args2.join(" ")+"\n")}__name(write,"write");switch(msg.level){case LogLevel.info:write(time2,`I|* `,...args);break;case LogLevel.warn:write(time2,`W|** `,...args);break;case LogLevel.error:write(time2,`E|***`,...args);break;default:write(time2,`D| `,...args);break}}}__name(LoggerFileHandler,"LoggerFileHandler");import{resolve as resolve4}from"path";function getStackLlocationList(stack){var _a2,_b2;if(typeof stack!=="string")return[];return((_b2=(_a2=stack==null?void 0:stack.split("\n"))==null?void 0:_a2.map(rawLine=>{let m=rawLine.match(/^\s+at.*(\((.*)\)|file:\/\/(.*)$)/);if(m){let line=m[3]||m[2];if(line.endsWith(")"))line=line.slice(0,-1);return line}}))==null?void 0:_b2.filter(v=>v!=null))||[]}__name(getStackLlocationList,"getStackLlocationList");var cwd=resolve4(process.cwd());var _a,_b;var home=((_a=process.env)==null?void 0:_a.HOME)?resolve4((_b=process.env)==null?void 0:_b.HOME):"";function pathStripCwd(path){if(path.includes("/node_modules/")){return""}const fileURL="file://";if(path.startsWith(fileURL)){return path.substr(fileURL.length)}if(cwd&&path.startsWith(cwd)){return path.substr(cwd.length+1)}if(home&&path.startsWith(home)){path="~/"+path.substr(home.length+1)}return path}__name(pathStripCwd,"pathStripCwd");function extractFileInfo(stackLine){let m=stackLine.match(/^\s*at.*(\((.*)\)|file:\/\/(.*)$)/);if(m){let line=m[3]||m[2];if(line.endsWith(")"))line=line.slice(0,-1);return line}return""}__name(extractFileInfo,"extractFileInfo");function getSourceLocation(level=2,stripCwd=true){var _a2;let stack=new Error().stack||"";let line=(_a2=getStackLlocationList(stack))==null?void 0:_a2[level];if(line&&stripCwd){line=pathStripCwd(line)}return line||""}__name(getSourceLocation,"getSourceLocation");function getStack(){return new Error().stack||""}__name(getStack,"getStack");function getSourceLocationByPrecedingPattern(patterns,stripCwd=true){let line="";let stack=new Error().stack||"";if(typeof stack==="string"){const lines=stack.split("\n").map(l=>l.trim());const index=lines.findIndex(l=>patterns.some(p=>l.startsWith(p)));line=lines[index+1];if(line){line=extractFileInfo(line)}if(line&&stripCwd){line=pathStripCwd(line)}}return line}__name(getSourceLocationByPrecedingPattern,"getSourceLocationByPrecedingPattern");import tty from"tty";function isTTY(){try{return tty.isatty(process.stdout.fd)}catch(err){}return false}__name(isTTY,"isTTY");var colors=[6,2,3,4,5,1];function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++){hash=(hash<<5)-hash+namespace.charCodeAt(i);hash|=0}return colors[Math.abs(hash)%colors.length]}__name(selectColor,"selectColor");var namespaces2={};var time=getTimestamp();var useColors=tty.isatty(process.stderr.fd);function log3(...args){return process.stderr.write(renderMessages(args)+"\n")}__name(log3,"log");var TTY_STYLE={BOLD:"",UNBOLD:"",RED:"",GREEN:"",BLUE:"",PURPLE:"",GRAY:"",ORANGE:"",UNCOLOR:""};var COLOR;(function(COLOR2){COLOR2[COLOR2["RED"]=1]="RED";COLOR2[COLOR2["GREEN"]=2]="GREEN";COLOR2[COLOR2["BLUE"]=4]="BLUE";COLOR2[COLOR2["PURPLE"]=5]="PURPLE";COLOR2[COLOR2["GRAY"]=7]="GRAY";COLOR2[COLOR2["ORANGE"]=8]="ORANGE"})(COLOR||(COLOR={}));var colorEnd="";function colorString(value,colorCode){const colorStart=colorCode===8?TTY_STYLE.ORANGE:"[3"+(colorCode<8?colorCode:"8;5;"+colorCode)+"m";return`${colorStart}${value}${colorEnd}`}__name(colorString,"colorString");function colorStringList(list,style,bold=true){return list.map(value=>{if(typeof value!=="string")return value;let start=style;let end=colorEnd;if(bold){start=`${TTY_STYLE.BOLD}${start}`;end=`${end}${TTY_STYLE.BOLD}`}return`${start}${value}${end}`})}__name(colorStringList,"colorStringList");var loggerStackTraceDebug="loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";function LoggerNodeHandler(opt={}){const{level=void 0,filter=void 0,colors:colors2=isTTY(),levelHelper=true,nameBrackets=true,padding=0,fill=0,stack=true}=opt;const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{var _a2;if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const timeNow=getTimestamp();let name=msg.name||"";let ninfo=namespaces2[name||""];if(ninfo==null){ninfo={color:selectColor(name)};namespaces2[name]=ninfo}const diff=formatMilliseconds(timeNow-time);let args;let displayName=nameBrackets?`[${name}]`:name;if(padding>0){displayName=displayName.padStart(padding," ")}if(fill>0){displayName=displayName.padEnd(fill," ")}if(colors2&&useColors){const c=ninfo.color;args=[colorString(displayName,c)+` | `];if(msg.level===LogLevel.warn){args.push(...colorStringList(msg.messages,TTY_STYLE.ORANGE))}else if(msg.level===LogLevel.error){args.push(...colorStringList(msg.messages,TTY_STYLE.RED))}else{args.push(...msg.messages)}args.push(colorString(`+${diff}`,c))}else{args=[displayName,...msg.messages];args.push(`+${diff}`)}if(((_a2=msg.messages)==null?void 0:_a2[0])===loggerStackTraceDebug){console.log(getStack())}if(stack){let line="";if(typeof stack==="boolean"){line=getSourceLocationByPrecedingPattern(["at Function.","at null.log (","at log ("],true);if(!line){line=getSourceLocation(0,true)}}else{const depth=typeof stack==="number"?stack:3;line=getSourceLocation(depth,true)}if(line){args.push(colorString(`(${line})`,7))}}switch(msg.level){case LogLevel.info:if(levelHelper)args[0]=`I|* `+args[0];log3(...args);break;case LogLevel.warn:if(levelHelper)args[0]=(colors2&&useColors?colorString(`W|** `,8):`W|** `)+args[0];log3(...args);break;case LogLevel.error:if(levelHelper)args[0]=(colors2&&useColors?colorString(`E|*** `,1):`E|*** `)+args[0];log3(...args);break;default:if(levelHelper)args[0]=`D| `+args[0];log3(...args);break}}}__name(LoggerNodeHandler,"LoggerNodeHandler");import{dirname as dirname3}from"path";import{fileURLToPath}from"url";var _dirname=typeof __dirname!=="undefined"?__dirname:dirname3(fileURLToPath(import.meta.url));import nodeCrypto from"crypto";try{if(nodeCrypto&&nodeCrypto.webcrypto&&typeof globalThis!=="undefined"&&typeof globalThis.crypto==="undefined"){globalThis.crypto=nodeCrypto.webcrypto}}catch(err){console.warn("Failed to polyfill webcrypto",err)}function setupLogContextNode(){var _a2;let handlers=[LoggerNodeHandler({padding:32,nameBrackets:false})];let logFilePath=(_a2=process.env.ZEED_LOG)!=null?_a2:process.env.LOG;if(logFilePath){handlers.unshift(LoggerFileHandler(toPath(logFilePath)))}Logger.setHandlers(handlers)}__name(setupLogContextNode,"setupLogContextNode");setupLogContextNode();export{stringToPath,valueToPath,toPath,setupEnv,FileStorage,LoggerFileHandler,getStackLlocationList,getSourceLocation,getStack,getSourceLocationByPrecedingPattern,isTTY,colorString,colorStringList,loggerStackTraceDebug,LoggerNodeHandler,_dirname};
2
- //# sourceMappingURL=chunk-5RXVRSFT.js.map
1
+ import{cloneObject,renderMessages,toValidFilename}from"./chunk-BGCMUUNO.js";import{LogLevel,Logger,__name,formatMilliseconds,getTimestamp,useLevelFilter,useNamespaceFilter}from"./chunk-GILANOH3.js";import fs from"fs";import{resolve}from"path";var log=Logger("zeed:env");var NEWLINE="\n";var RE_INI_KEY_VAL=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/;var RE_NEWLINES=/\\n/g;var NEWLINES_MATCH=/\n|\r|\r\n/;function parse(src,options={}){let obj={};src.toString().split(NEWLINES_MATCH).forEach(function(line,idx){const keyValueArr=line.match(RE_INI_KEY_VAL);if(keyValueArr!=null){const key=keyValueArr[1];let val=keyValueArr[2]||"";const end=val.length-1;const isDoubleQuoted=val[0]==='"'&&val[end]==='"';const isSingleQuoted=val[0]==="'"&&val[end]==="'";if(isSingleQuoted||isDoubleQuoted){val=val.substring(1,end);if(isDoubleQuoted){val=val.replace(RE_NEWLINES,NEWLINE)}}else{val=val.trim()}obj[key]=val}else{log.debug(`did not match key and value when parsing line ${idx+1}: ${line}`)}});return obj}__name(parse,"parse");function stringToPath(value,defaultValue="."){return resolve(process.cwd(),value!=null?value:defaultValue)}__name(stringToPath,"stringToPath");function valueToPath(value,defaultValue=""){if(value==null)value=defaultValue;return stringToPath(String(value).trim(),defaultValue)}__name(valueToPath,"valueToPath");var toPath=valueToPath;function setupEnv(options={}){var _a2,_b2,_c,_d;const dotenvPath=(_b2=options==null?void 0:options.path)!=null?_b2:toPath((_a2=options==null?void 0:options.filename)!=null?_a2:".env");const encoding=(_c=options==null?void 0:options.encoding)!=null?_c:"utf8";const debug=(options==null?void 0:options.debug)||false;if(debug!==true)log.level=LogLevel.off;try{const parsedEnv=fs.existsSync(dotenvPath)?parse(fs.readFileSync(dotenvPath,{encoding}),{debug}):{};const parsedEnvLocal=fs.existsSync(dotenvPath+".local")?parse(fs.readFileSync(dotenvPath+".local",{encoding}),{debug}):{};const parsed=Object.assign({},parsedEnv,parsedEnvLocal);let env=(_d=options==null?void 0:options.env)!=null?_d:process.env;Object.entries(parsed).forEach(([key,value])=>{if(typeof(options==null?void 0:options.prefix)==="string"){key=(options==null?void 0:options.prefix)+key}if(!Object.prototype.hasOwnProperty.call(env,key)){if(value!=null){log.info(`set env.${key} = ${value}`);env[key]=value}}else{log.debug(`"${key}" is already defined and will not be overwritten`)}});return{parsed}}catch(e){log.error(e);return{error:e}}}__name(setupEnv,"setupEnv");import{mkdirSync,readdirSync,readFileSync,rmSync,unlinkSync,writeFileSync}from"fs";import{dirname,resolve as resolve2}from"path";var log2=Logger("zeed:filestorage");var FileStorage=class{constructor(opt={}){this.store={};this.fileKeys=void 0;this.pretty=false;var _a2,_b2,_c,_d;this.dirname=resolve2(process.cwd(),opt.path||".fileStorage");this.pretty=!!opt.pretty;this.extension=(_a2=opt.extension)!=null?_a2:".json";if(opt.extension&&!this.extension.startsWith(".")){this.extension="."+this.extension}this.extensionLength=this.extension.length;this.objectToString=(_b2=opt.objectToString)!=null?_b2:data=>{return this.pretty?JSON.stringify(data,null,2):JSON.stringify(data)};this.objectFromString=(_c=opt.objectFromString)!=null?_c:data=>{try{return JSON.parse(data)}catch(err){log2.warn(`fileStorage parse error '${err}' in`,data)}};this.keyToFilename=(_d=opt.keyToFilename)!=null?_d:toValidFilename}setItem(key,value){this.store[key]=cloneObject(value);try{const data=this.objectToString(value);const path=this.getPath(key);mkdirSync(dirname(path),{recursive:true});writeFileSync(path,data,"utf8")}catch(err){log2.error("setItem error",err)}}getPath(key){return resolve2(this.dirname,this.keyToFilename(key)+this.extension)}getBuffer(key){const path=this.getPath(key);return Buffer.from(readFileSync(path))}getItem(key){let value=this.store[key];if(value===null)return;if(value!=null){return cloneObject(value)}try{const path=this.getPath(key);const data=readFileSync(path,"utf8");if(data!=null){const value2=this.objectFromString(data);this.store[key]=value2;return value2}}catch(err){log2.warn("getItem error",err);this.store[key]=null}}removeItem(key){delete this.store[key];if(this.fileKeys!=null){const index=this.fileKeys.indexOf(key);if(index!==-1){this.fileKeys.splice(index,1)}}try{const path=this.getPath(key);unlinkSync(path)}catch(err){}}clear(){this.fileKeys=[];this.store={};rmSync(this.dirname,{recursive:true,force:true})}allKeys(){if(this.fileKeys==null){try{this.fileKeys=readdirSync(this.dirname,{withFileTypes:true}).filter(item=>!item.isDirectory()&&item.name.endsWith(this.extension)).map(item=>item.name.slice(0,-this.extensionLength))||[]}catch(err){}}let keys=[...this.fileKeys||[]];for(let key of Object.keys(this.store)){if(!keys.includes(key)){keys.push(key)}}keys.sort();return keys}};__name(FileStorage,"FileStorage");import{createWriteStream,mkdirSync as mkdirSync2}from"fs";import{dirname as dirname2,resolve as resolve3}from"path";var namespaces={};function LoggerFileHandler(path,opt={}){const{level=LogLevel.all,filter="*"}=opt;path=resolve3(process.cwd(),path);mkdirSync2(dirname2(path),{recursive:true});var stream=createWriteStream(path,{flags:"a"});const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const time2=new Date().toISOString();let name=msg.name||"";let ninfo=namespaces[name||""];if(ninfo==null){namespaces[name]=ninfo}let args=[`[${name||"*"}]`,renderMessages(msg.messages,{pretty:false})];function write(...args2){stream.write(args2.join(" ")+"\n")}__name(write,"write");switch(msg.level){case LogLevel.info:write(time2,`I|* `,...args);break;case LogLevel.warn:write(time2,`W|** `,...args);break;case LogLevel.error:write(time2,`E|***`,...args);break;default:write(time2,`D| `,...args);break}}}__name(LoggerFileHandler,"LoggerFileHandler");import{resolve as resolve4}from"path";function getStackLlocationList(stack){var _a2,_b2;if(typeof stack!=="string")return[];return((_b2=(_a2=stack==null?void 0:stack.split("\n"))==null?void 0:_a2.map(rawLine=>{let m=rawLine.match(/^\s+at.*(\((.*)\)|file:\/\/(.*)$)/);if(m){let line=m[3]||m[2];if(line.endsWith(")"))line=line.slice(0,-1);return line}}))==null?void 0:_b2.filter(v=>v!=null))||[]}__name(getStackLlocationList,"getStackLlocationList");var cwd=resolve4(process.cwd());var _a,_b;var home=((_a=process.env)==null?void 0:_a.HOME)?resolve4((_b=process.env)==null?void 0:_b.HOME):"";function pathStripCwd(path){if(path.includes("/node_modules/")){return""}const fileURL="file://";if(path.startsWith(fileURL)){return path.substr(fileURL.length)}if(cwd&&path.startsWith(cwd)){return path.substr(cwd.length+1)}if(home&&path.startsWith(home)){path="~/"+path.substr(home.length+1)}return path}__name(pathStripCwd,"pathStripCwd");function extractFileInfo(stackLine){let m=stackLine.match(/^\s*at.*(\((.*)\)|file:\/\/(.*)$)/);if(m){let line=m[3]||m[2];if(line.endsWith(")"))line=line.slice(0,-1);return line}return""}__name(extractFileInfo,"extractFileInfo");function getSourceLocation(level=2,stripCwd=true){var _a2;let stack=new Error().stack||"";let line=(_a2=getStackLlocationList(stack))==null?void 0:_a2[level];if(line&&stripCwd){line=pathStripCwd(line)}return line||""}__name(getSourceLocation,"getSourceLocation");function getStack(){return new Error().stack||""}__name(getStack,"getStack");function getSourceLocationByPrecedingPattern(patterns,stripCwd=true){let line="";let stack=new Error().stack||"";if(typeof stack==="string"){const lines=stack.split("\n").map(l=>l.trim());const index=lines.findIndex(l=>patterns.some(p=>l.startsWith(p)));line=lines[index+1];if(line){line=extractFileInfo(line)}if(line&&stripCwd){line=pathStripCwd(line)}}return line}__name(getSourceLocationByPrecedingPattern,"getSourceLocationByPrecedingPattern");import tty from"tty";function isTTY(){try{return tty.isatty(process.stdout.fd)}catch(err){}return false}__name(isTTY,"isTTY");var colors=[6,2,3,4,5,1];function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++){hash=(hash<<5)-hash+namespace.charCodeAt(i);hash|=0}return colors[Math.abs(hash)%colors.length]}__name(selectColor,"selectColor");var namespaces2={};var time=getTimestamp();var useColors=tty.isatty(process.stderr.fd);function log3(...args){return process.stderr.write(renderMessages(args)+"\n")}__name(log3,"log");var TTY_STYLE={BOLD:"",UNBOLD:"",RED:"",GREEN:"",BLUE:"",PURPLE:"",GRAY:"",ORANGE:"",UNCOLOR:""};var COLOR;(function(COLOR2){COLOR2[COLOR2["RED"]=1]="RED";COLOR2[COLOR2["GREEN"]=2]="GREEN";COLOR2[COLOR2["BLUE"]=4]="BLUE";COLOR2[COLOR2["PURPLE"]=5]="PURPLE";COLOR2[COLOR2["GRAY"]=7]="GRAY";COLOR2[COLOR2["ORANGE"]=8]="ORANGE"})(COLOR||(COLOR={}));var colorEnd="";function colorString(value,colorCode){const colorStart=colorCode===8?TTY_STYLE.ORANGE:"[3"+(colorCode<8?colorCode:"8;5;"+colorCode)+"m";return`${colorStart}${value}${colorEnd}`}__name(colorString,"colorString");function colorStringList(list,style,bold=true){return list.map(value=>{if(typeof value!=="string")return value;let start=style;let end=colorEnd;if(bold){start=`${TTY_STYLE.BOLD}${start}`;end=`${end}${TTY_STYLE.BOLD}`}return`${start}${value}${end}`})}__name(colorStringList,"colorStringList");var loggerStackTraceDebug="loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";function LoggerNodeHandler(opt={}){const{level=void 0,filter=void 0,colors:colors2=isTTY(),levelHelper=true,nameBrackets=true,padding=0,fill=0,stack=true}=opt;const matchesNamespace=useNamespaceFilter(filter);const matchesLevel=useLevelFilter(level);return msg=>{var _a2;if(!matchesLevel(msg.level))return;if(!matchesNamespace(msg.name))return;const timeNow=getTimestamp();let name=msg.name||"";let ninfo=namespaces2[name||""];if(ninfo==null){ninfo={color:selectColor(name)};namespaces2[name]=ninfo}const diff=formatMilliseconds(timeNow-time);let args;let displayName=nameBrackets?`[${name}]`:name;if(padding>0){displayName=displayName.padStart(padding," ")}if(fill>0){displayName=displayName.padEnd(fill," ")}if(colors2&&useColors){const c=ninfo.color;args=[colorString(displayName,c)+` | `];if(msg.level===LogLevel.warn){args.push(...colorStringList(msg.messages,TTY_STYLE.ORANGE))}else if(msg.level===LogLevel.error){args.push(...colorStringList(msg.messages,TTY_STYLE.RED))}else{args.push(...msg.messages)}args.push(colorString(`+${diff}`,c))}else{args=[displayName,...msg.messages];args.push(`+${diff}`)}if(((_a2=msg.messages)==null?void 0:_a2[0])===loggerStackTraceDebug){console.log(getStack())}if(stack){let line="";if(typeof stack==="boolean"){line=getSourceLocationByPrecedingPattern(["at Function.","at null.log (","at log ("],true);if(!line){line=getSourceLocation(0,true)}}else{const depth=typeof stack==="number"?stack:3;line=getSourceLocation(depth,true)}if(line){args.push(colorString(`(${line})`,7))}}switch(msg.level){case LogLevel.info:if(levelHelper)args[0]=`I|* `+args[0];log3(...args);break;case LogLevel.warn:if(levelHelper)args[0]=(colors2&&useColors?colorString(`W|** `,8):`W|** `)+args[0];log3(...args);break;case LogLevel.error:if(levelHelper)args[0]=(colors2&&useColors?colorString(`E|*** `,1):`E|*** `)+args[0];log3(...args);break;default:if(levelHelper)args[0]=`D| `+args[0];log3(...args);break}}}__name(LoggerNodeHandler,"LoggerNodeHandler");import{dirname as dirname3}from"path";import{fileURLToPath}from"url";var _dirname=typeof __dirname!=="undefined"?__dirname:dirname3(fileURLToPath(import.meta.url));import nodeCrypto from"crypto";try{if(nodeCrypto&&nodeCrypto.webcrypto&&typeof globalThis!=="undefined"&&typeof globalThis.crypto==="undefined"){globalThis.crypto=nodeCrypto.webcrypto}}catch(err){console.warn("Failed to polyfill webcrypto",err)}function setupLogContextNode(){var _a2;let handlers=[LoggerNodeHandler({padding:32,nameBrackets:false})];let logFilePath=(_a2=process.env.ZEED_LOG)!=null?_a2:process.env.LOG;if(logFilePath){handlers.unshift(LoggerFileHandler(toPath(logFilePath)))}Logger.setHandlers(handlers)}__name(setupLogContextNode,"setupLogContextNode");setupLogContextNode();export{stringToPath,valueToPath,toPath,setupEnv,FileStorage,LoggerFileHandler,getStackLlocationList,getSourceLocation,getStack,getSourceLocationByPrecedingPattern,isTTY,colorString,colorStringList,loggerStackTraceDebug,LoggerNodeHandler,_dirname};
2
+ //# sourceMappingURL=chunk-OCUSTPQ3.js.map