zeed 0.8.2 → 0.8.3
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.
- package/dist/chunk-AITOWUS2.cjs +3305 -0
- package/dist/{chunk-3LN7HI45.js.map → chunk-AITOWUS2.cjs.map} +0 -0
- package/dist/chunk-C66X5FP6.cjs +516 -0
- package/dist/chunk-C66X5FP6.cjs.map +1 -0
- package/dist/chunk-CCZIVE22.cjs +657 -0
- package/dist/chunk-CCZIVE22.cjs.map +1 -0
- package/dist/chunk-KG3OKVAH.cjs +254 -0
- package/dist/chunk-KG3OKVAH.cjs.map +1 -0
- package/dist/{chunk-IFNHRAHG.js → chunk-QCWYJ7FQ.js} +9 -2
- package/dist/chunk-QCWYJ7FQ.js.map +1 -0
- package/dist/chunk-RHL3RQGE.cjs +320 -0
- package/dist/chunk-RHL3RQGE.cjs.map +1 -0
- package/dist/{chunk-3LN7HI45.js → chunk-RIAAIUAZ.js} +1 -1
- package/dist/chunk-RIAAIUAZ.js.map +1 -0
- package/dist/{chunk-HI3XD4NV.js → chunk-S5JPRTZ4.js} +30 -7
- package/dist/chunk-S5JPRTZ4.js.map +1 -0
- package/dist/index.all.cjs +1135 -5026
- package/dist/index.all.cjs.map +1 -1
- package/dist/index.all.js +3 -3
- package/dist/index.browser.cjs +1046 -4378
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +2 -2
- package/dist/index.log.cjs +20 -650
- package/dist/index.log.cjs.map +1 -1
- package/dist/index.node.cjs +1097 -4474
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-HI3XD4NV.js.map +0 -1
- package/dist/chunk-IFNHRAHG.js.map +0 -1
package/dist/index.node.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { FileStorage, LoggerFileHandler, LoggerNodeHandler, colorString, colorStringList, ensureFolder, exists, getSourceLocation, getSourceLocationByPrecedingPattern, getStack, getStackLlocationList, loggerStackTraceDebug, parseArgs, pbcopy, readText, removeFolder, setupEnv, stringToPath, toHumanReadableFilePath, toPath, valueToPath, writeText } from './chunk-
|
|
2
|
-
export { Channel, CryptoEncoder, Currency, DAY_MS, Day, Emitter, JsonEncoder, LocalChannel, LoggerMemoryHandler, MemStorage, NoopEncoder, PoolTaskIdConflictResolution, PoolTaskState, PubSub, SerialQueue, Uint8ArrayToHexDump, Uint8ArrayToJson, Uint8ArrayToString, XRX, _decodeUtf8Polyfill, _encodeUtf8Polyfill, arrayAvg, arrayBatches, arrayEmptyInPlace, arrayFilterInPlace, arrayFlatten, arrayIntersection, arrayIsEqual, arrayMax, arrayMin, arrayMinus, arrayRandomElement, arrayRemoveElement, arraySetElement, arrayShuffle, arrayShuffleForce, arrayShuffleInPlace, arraySorted, arraySortedNumbers, arraySum, arraySymmetricDifference, arrayToggleInPlace, arrayUnion, arrayUnique, avg, between, cloneJsonObject, cloneObject, cmp, composeOrderby, createArray, createLocalChannelPair, createPromise, createPromiseProxy, csv, currency, dateStringToDays, day, dayDay, dayDiff, dayFromAny, dayFromDate, dayFromDateGMT, dayFromParts, dayFromString, dayFromTimestamp, dayFromToday, dayMonth, dayMonthStart, dayOffset, dayToDate, dayToDateGMT, dayToParts, dayToString, dayToTimestamp, dayYear, dayYearStart, debounce, decimal, decimalCentsPart, decimalFromCents, decimalToCents, decodeBase16, decodeBase32, decodeBase58, decodeBase62, decodeBase64, decrypt, deriveKeyPbkdf2, detect, digest, empty, encodeBase16, encodeBase32, encodeBase58, encodeBase62, encodeBase64, encodeQuery, encrypt, endSortWeight, ensureKey, ensureKeyAsync, equalBinary, escapeHTML, escapeRegExp, fetchBasic, fetchJson, fetchOptionsBasicAuth, fetchOptionsFormURLEncoded, fetchOptionsJson, fetchText, fixBrokenUth8String, forEachDay, forTimes, formatMessages, fromBase64, fromCamelCase, getGlobal, getGlobalEmitter, getNavigator, getSecureRandom, getSecureRandomIfPossible, getWindow, immediate, isBrowser, isEven, isHalf, isLocalHost, isPrime, isPrimeRX, isPromise, isTimeout, joinToUint8Array, jsonStringify, jsonToUint8Array, last, lazyListener, linkifyPlainText, memoize, messages, moveSortWeight, parseBasicAuth, parseOrderby, parseQuery, platform, promisify, qid, randomBoolean, randomFloat, randomInt, randomUint8Array, regExpEscape, regExpString, renderMessages, roundDown, roundHalfAwayFromZero, roundHalfDown, roundHalfEven, roundHalfOdd, roundHalfTowardsZero, roundHalfUp, roundUp, size, sleep, sortedItems, sortedOrderby, startSortWeight, stringToBoolean, stringToFloat, stringToInteger, stringToUInt8Array, suid, suidBytes, suidBytesDate, suidDate, sum, throttle, timeout, timeoutReached, timoutError, toBase64, toBase64Url, toBool, toCamelCase, toCapitalize, toCapitalizeWords, toFloat, toHex, toHumanReadableUrl, toInt, toString, toUint8Array, toValidFilename, today, tryTimeout, uname, unescapeHTML, useAsyncMutex, useBase, useDefer, useDispose, useDisposer, useEventListener, useExitHandler, useInterval, useMessageHub, useMutex, usePool, usePubSub, useRPC, useTimeout, uuid, uuid32Decode, uuid32Encode, uuid32bit, uuidB32, uuidBytes, uuidDecode, uuidEncode, uuidv4, valueToBoolean, valueToFloat, valueToInteger, valueToString, waitOn } from './chunk-
|
|
1
|
+
export { FileStorage, LoggerFileHandler, LoggerNodeHandler, colorString, colorStringList, ensureFolder, exists, getSourceLocation, getSourceLocationByPrecedingPattern, getStack, getStackLlocationList, loggerStackTraceDebug, parseArgs, pbcopy, readText, removeFolder, setupEnv, stringToPath, toHumanReadableFilePath, toPath, valueToPath, writeText } from './chunk-S5JPRTZ4.js';
|
|
2
|
+
export { Channel, CryptoEncoder, Currency, DAY_MS, Day, Emitter, JsonEncoder, LocalChannel, LoggerMemoryHandler, MemStorage, NoopEncoder, PoolTaskIdConflictResolution, PoolTaskState, PubSub, SerialQueue, Uint8ArrayToHexDump, Uint8ArrayToJson, Uint8ArrayToString, XRX, _decodeUtf8Polyfill, _encodeUtf8Polyfill, arrayAvg, arrayBatches, arrayEmptyInPlace, arrayFilterInPlace, arrayFlatten, arrayIntersection, arrayIsEqual, arrayMax, arrayMin, arrayMinus, arrayRandomElement, arrayRemoveElement, arraySetElement, arrayShuffle, arrayShuffleForce, arrayShuffleInPlace, arraySorted, arraySortedNumbers, arraySum, arraySymmetricDifference, arrayToggleInPlace, arrayUnion, arrayUnique, avg, between, cloneJsonObject, cloneObject, cmp, composeOrderby, createArray, createLocalChannelPair, createPromise, createPromiseProxy, csv, currency, dateStringToDays, day, dayDay, dayDiff, dayFromAny, dayFromDate, dayFromDateGMT, dayFromParts, dayFromString, dayFromTimestamp, dayFromToday, dayMonth, dayMonthStart, dayOffset, dayToDate, dayToDateGMT, dayToParts, dayToString, dayToTimestamp, dayYear, dayYearStart, debounce, decimal, decimalCentsPart, decimalFromCents, decimalToCents, decodeBase16, decodeBase32, decodeBase58, decodeBase62, decodeBase64, decrypt, deriveKeyPbkdf2, detect, digest, empty, encodeBase16, encodeBase32, encodeBase58, encodeBase62, encodeBase64, encodeQuery, encrypt, endSortWeight, ensureKey, ensureKeyAsync, equalBinary, escapeHTML, escapeRegExp, fetchBasic, fetchJson, fetchOptionsBasicAuth, fetchOptionsFormURLEncoded, fetchOptionsJson, fetchText, fixBrokenUth8String, forEachDay, forTimes, formatMessages, fromBase64, fromCamelCase, getGlobal, getGlobalEmitter, getNavigator, getSecureRandom, getSecureRandomIfPossible, getWindow, immediate, isBrowser, isEven, isHalf, isLocalHost, isPrime, isPrimeRX, isPromise, isTimeout, joinToUint8Array, jsonStringify, jsonToUint8Array, last, lazyListener, linkifyPlainText, memoize, messages, moveSortWeight, parseBasicAuth, parseOrderby, parseQuery, platform, promisify, qid, randomBoolean, randomFloat, randomInt, randomUint8Array, regExpEscape, regExpString, renderMessages, roundDown, roundHalfAwayFromZero, roundHalfDown, roundHalfEven, roundHalfOdd, roundHalfTowardsZero, roundHalfUp, roundUp, size, sleep, sortedItems, sortedOrderby, startSortWeight, stringToBoolean, stringToFloat, stringToInteger, stringToUInt8Array, suid, suidBytes, suidBytesDate, suidDate, sum, throttle, timeout, timeoutReached, timoutError, toBase64, toBase64Url, toBool, toCamelCase, toCapitalize, toCapitalizeWords, toFloat, toHex, toHumanReadableUrl, toInt, toString, toUint8Array, toValidFilename, today, tryTimeout, uname, unescapeHTML, useAsyncMutex, useBase, useDefer, useDispose, useDisposer, useEventListener, useExitHandler, useInterval, useMessageHub, useMutex, usePool, usePubSub, useRPC, useTimeout, uuid, uuid32Decode, uuid32Encode, uuid32bit, uuidB32, uuidBytes, uuidDecode, uuidEncode, uuidv4, valueToBoolean, valueToFloat, valueToInteger, valueToString, waitOn } from './chunk-RIAAIUAZ.js';
|
|
3
3
|
export { LogLevel, LogLevelAlias, Logger, LoggerConsoleHandler, LoggerContext, deepEqual, deepMerge, formatMilliseconds, getGlobalContext, getNamespaceFilterString, getTimestamp, isArray, isBoolean, isInteger, isNullOrUndefined, isNumber, isObject, isPrimitive, isRecord, isSafeInteger, isString, isUint8Array, parseDate, parseLogLevel, useLevelFilter, useNamespaceFilter } from './chunk-AM7QCF4I.js';
|
|
4
4
|
//# sourceMappingURL=index.node.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zeed",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "🌱 Simple foundation library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"homepage": "https://github.com/holtwick/zeed",
|
|
29
29
|
"type": "module",
|
|
30
30
|
"typings": "dist/index.all.d.ts",
|
|
31
|
-
"sideEffects":
|
|
31
|
+
"sideEffects": true,
|
|
32
32
|
"exports": {
|
|
33
33
|
".": {
|
|
34
34
|
"browser": "./dist/index.browser.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"clean": "rm -rf dist",
|
|
51
51
|
"check": "tsc --noEmit -p tsconfig.json",
|
|
52
52
|
"build": "npm run clean && npm run build:tsup",
|
|
53
|
-
"build:tsup": "tsup src/index.*.ts --format esm,cjs --dts --sourcemap --keep-names --treeshake",
|
|
53
|
+
"build:tsup": "tsup src/index.*.ts --format esm,cjs --dts --sourcemap --keep-names --treeshake --splitting",
|
|
54
54
|
"watch": "npm run build:tsup -- --watch",
|
|
55
55
|
"prepublishOnly": "npm run build && npm run test:publish",
|
|
56
56
|
"coverage": "vitest src --global --run --coverage",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/node/args.ts","../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"],"names":["normalize","resolve","log","value","mkdirSync","dirname","time","args","_a","_b","namespaces","colors"],"mappings":"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","sourcesContent":["// Inspired by https://github.com/kof/node-argsparser/blob/master/lib/argsparser.js\n\nimport { toCamelCase } from \"../common/data/camelcase\"\n\ninterface ParseConfig {\n args?: string[]\n alias?: Record<string, string[]>\n normalize?: (value: string) => string\n booleanArgs?: string | string[]\n listArgs?: string | string[]\n numberArgs?: string | string[]\n}\n\nexport function parseArgs(config: ParseConfig = {}) {\n const {\n args = process.argv.slice(1),\n alias = {},\n normalize = toCamelCase,\n booleanArgs = [],\n listArgs = [],\n numberArgs = [],\n } = config\n\n let nameToAlias = Object.entries(alias).reduce((map, curr) => {\n let [name, values] = curr\n if (typeof values === \"string\") values = [values]\n for (let value of values) {\n map[normalize(value)] = normalize(name)\n }\n return map\n }, {} as any)\n\n let opts: Record<string, any> = {\n _: [],\n }\n\n function setOpt(name: string, value: any) {\n if (opts[name] == null) {\n opts[name] = value\n } else if (typeof opts[name] === \"boolean\") {\n opts[name] = value\n } else if (Array.isArray(opts[name])) {\n opts[name].push(value)\n } else {\n opts[name] = [opts[name], value]\n }\n }\n\n let argList = [...args]\n let arg: string | undefined\n while ((arg = argList.shift())) {\n let value: any\n if (/^--?/.test(arg)) {\n let key = arg.replace(/^--?/, \"\")\n if (arg.includes(\"=\")) {\n let [name, valuePart] = key.split(\"=\", 2)\n key = name.trim()\n value = valuePart.trim()\n }\n key = normalize(key)\n key = nameToAlias[key] ?? key\n if (booleanArgs.includes(key)) {\n setOpt(key, true)\n } else {\n value = value ?? argList.shift() ?? \"\"\n if (numberArgs.includes(key)) {\n value = Number(value ?? 0)\n }\n if (listArgs.includes(key)) {\n if (Array.isArray(opts[key])) {\n opts[key].push(value)\n } else {\n opts[key] = [value]\n }\n } else {\n setOpt(key, value)\n }\n }\n } else {\n opts._.push(arg)\n }\n }\n\n return opts\n}\n","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 { Logger } from \"../common/log\"\nimport { LogLevel } from \"../common/log-base\"\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, normalize, resolve } from \"node:path\"\n\nexport function toHumanReadableFilePath(path: string) {\n const p = normalize(path)\n const h = process.env.HOME\n if (h && p.startsWith(h)) {\n return \"~\" + p.slice(h.length)\n }\n return p\n}\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, valueToBoolean } 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\nfunction shouldUseColor(): boolean {\n try {\n if (process.env.ZEED_COLOR != null) {\n return valueToBoolean(process.env.ZEED_COLOR, false)\n }\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\nfunction log(...args: any[]) {\n process.stdout.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 = shouldUseColor(),\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) {\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 const sep = \"|\"\n const charLevel = \".\"\n\n switch (msg.level) {\n case LogLevel.info:\n if (levelHelper) args[0] = `I${sep}${charLevel} ` + args[0]\n log(...args)\n break\n case LogLevel.warn:\n if (levelHelper)\n args[0] =\n (colors\n ? colorString(`W${sep}${charLevel}${charLevel} `, COLOR.ORANGE)\n : `W${sep}${charLevel}${charLevel} `) + args[0]\n log(...args)\n break\n case LogLevel.error:\n if (levelHelper)\n args[0] =\n (colors\n ? colorString(\n `E${sep}${charLevel}${charLevel}${charLevel} `,\n COLOR.RED\n )\n : `E${sep}${charLevel}${charLevel}${charLevel} `) + args[0]\n log(...args)\n break\n default:\n if (levelHelper) args[0] = `D${sep} ` + args[0]\n log(...args)\n break\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/browser/base64.ts","../src/browser/gravatar.ts","../src/browser/localstorage.ts","../src/browser/log-browser-classic.ts"],"names":["error","log"],"mappings":"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","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\n/** @deprecated Due to privacy concerns. Prefer local or custom solutions. */\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"]}
|