zeed 0.10.21 → 0.10.22
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/README.md +4 -2
- package/dist/chunk-FXACG46Y.js +16 -0
- package/dist/chunk-FXACG46Y.js.map +1 -0
- package/dist/index.all.d.ts +17 -13
- package/dist/index.browser.cjs +156 -155
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.d.ts +2 -2
- package/dist/index.browser.js +4 -4
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.cjs +277 -275
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +3 -2
- package/dist/index.node.js +11 -10
- package/dist/index.node.js.map +1 -1
- package/dist/{uuid-a8aab0ad.d.ts → uuid-e68c76fc.d.ts} +16 -13
- package/package.json +7 -7
- package/dist/chunk-ONVG2KLG.js +0 -16
- package/dist/chunk-ONVG2KLG.js.map +0 -1
package/dist/index.browser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { J as Json, O as ObjectStorage, L as LogHandlerOptions, a as LogHandler, b as LogLevelAliasType, c as LoggerInterface } from './uuid-
|
|
2
|
-
export { ed as ArgumentsType, c_ as AsyncMutex, di as AsyncReturnType, aa as BinInput, B as BinaryEncoder, n as CRYPTO_DEFAULT_ALG, o as CRYPTO_DEFAULT_DERIVE_ALG, p as CRYPTO_DEFAULT_DERIVE_ITERATIONS, C as CRYPTO_DEFAULT_HASH_ALG, dP as Channel, dO as ChannelMessageEvent, e0 as CryptoEncoder, aP as DAY_MS, bc as Day, aR as DayInput, bb as DayInputLegacy, aQ as DayValue, bi as DecimalInput, bh as DecimalValue, dV as DefaultListener, dt as DefaultLogger, br as Difference, bq as DifferenceType, cQ as Disposable, cP as Disposer, cO as DisposerFunction, dW as Emitter, dT as EmitterAllHandler, dS as EmitterHandler, dZ as Encoder, bR as FilterFunction, d$ as JsonEncoder, dU as ListenerSignature, dQ as LocalChannel, du as LogLevel, dC as LogLevelAlias, dD as LogLevelAliasKey, dv as LogLevelAll, dw as LogLevelDebug, dz as LogLevelError, dA as LogLevelFatal, dx as LogLevelInfo, dB as LogLevelOff, dy as LogLevelWarn, dE as LogMessage, dI as LoggerConsoleHandler, dG as LoggerContext, dF as LoggerContextInterface, dN as LoggerMemoryHandler, bS as MapperFunction,
|
|
1
|
+
import { J as Json, O as ObjectStorage, L as LogHandlerOptions, a as LogHandler, b as LogLevelAliasType, c as LoggerInterface } from './uuid-e68c76fc.js';
|
|
2
|
+
export { ed as ArgumentsType, c_ as AsyncMutex, di as AsyncReturnType, aa as BinInput, B as BinaryEncoder, n as CRYPTO_DEFAULT_ALG, o as CRYPTO_DEFAULT_DERIVE_ALG, p as CRYPTO_DEFAULT_DERIVE_ITERATIONS, C as CRYPTO_DEFAULT_HASH_ALG, dP as Channel, dO as ChannelMessageEvent, e0 as CryptoEncoder, aP as DAY_MS, bc as Day, aR as DayInput, bb as DayInputLegacy, aQ as DayValue, bi as DecimalInput, bh as DecimalValue, dV as DefaultListener, dt as DefaultLogger, br as Difference, bq as DifferenceType, cQ as Disposable, cP as Disposer, cO as DisposerFunction, dW as Emitter, dT as EmitterAllHandler, dS as EmitterHandler, dZ as Encoder, bR as FilterFunction, d$ as JsonEncoder, dU as ListenerSignature, dQ as LocalChannel, du as LogLevel, dC as LogLevelAlias, dD as LogLevelAliasKey, dv as LogLevelAll, dw as LogLevelDebug, dz as LogLevelError, dA as LogLevelFatal, dx as LogLevelInfo, dB as LogLevelOff, dy as LogLevelWarn, dE as LogMessage, dI as LoggerConsoleHandler, dG as LoggerContext, dF as LoggerContextInterface, dN as LoggerMemoryHandler, bS as MapperFunction, eA as MemStorage, ez as MemStorageOptions, e3 as Message, e1 as MessageAction, e7 as MessageDefinitions, e8 as MessageHub, e2 as MessageResult, e5 as MessagesDefaultMethods, e6 as MessagesMethods, e4 as MessagesOptions, cZ as Mutex, eG as NestedArray, d_ as NoopEncoder, d2 as PoolConfig, d5 as PoolTask, d6 as PoolTaskEvents, d3 as PoolTaskFn, d1 as PoolTaskIdConflictResolution, d4 as PoolTaskState, bv as Primitive, d8 as Progress, eb as PubSub, eh as RPCFn, eg as RPCOptions, ef as RPCOptionsBasic, ei as RPCReturn, aG as RenderMessagesOptions, ee as ReturnType, cf as RoundingMode, dl as SerialQueue, cq as SortableItem, dk as TaskEvents, dj as TaskFn, aO as Uint8ArrayToDataUri, aq as Uint8ArrayToHexDump, ap as Uint8ArrayToJson, ae as Uint8ArrayToString, cV as UseDefer, cS as UseDispose, cN as XRX, ac as _decodeUtf8Polyfill, ab as _encodeUtf8Polyfill, $ as _useBase, Y as arrayAvg, Z as arrayBatches, M as arrayEmptyInPlace, I as arrayFilterInPlace, D as arrayFlatten, E as arrayIntersection, Q as arrayIsEqual, V as arrayMax, W as arrayMin, z as arrayMinus, U as arrayRandomElement, G as arrayRemoveElement, H as arraySetElement, S as arrayShuffle, T as arrayShuffleForce, R as arrayShuffleInPlace, N as arraySorted, P as arraySortedNumbers, X as arraySum, F as arraySymmetricDifference, K as arrayToggleInPlace, A as arrayUnion, y as arrayUnique, d as assert, e as assertCondition, c2 as avg, c0 as between, k as bitfield, l as blobToArrayBuffer, aN as blobToDataUri, m as blobToUint8Array, dH as browserSelectColorByName, cH as cloneJsonObject, cG as cloneObject, cb as cmp, ca as composeOrderby, _ as createArray, j as createBinaryStreamDecoder, i as createBinaryStreamEncoder, dR as createLocalChannelPair, d9 as createPromise, e9 as createPromiseProxy, w as csvParse, x as csvParseToObjects, v as csvStringify, aM as dataUriToBlob, aL as dataUriToMimeType, aK as dataUriToUint8Array, bg as dateStringToDays, bf as day, aU as dayDay, b8 as dayDiff, aY as dayFromAny, a_ as dayFromDate, a$ as dayFromDateGMT, b3 as dayFromParts, b4 as dayFromString, b1 as dayFromTimestamp, aX as dayFromToday, ba as dayIterator, aT as dayMonth, b5 as dayMonthStart, b7 as dayOffset, b9 as dayRange, aW as dayToDate, aZ as dayToDateGMT, aV as dayToParts, b2 as dayToString, b0 as dayToTimestamp, aS as dayYear, b6 as dayYearStart, dn as debounce, bj as decimal, bm as decimalCentsPart, bk as decimalFromCents, bl as decimalToCents, a4 as decodeBase16, a2 as decodeBase32, a6 as decodeBase58, a8 as decodeBase62, h as decodeJson, u as decrypt, bn as deepEqual, bp as deepMerge, bo as deepStripUndefinedInPlace, s as deriveKeyPbkdf2, ew as detect, bs as diffObjects, q as digest, eF as duration, cF as empty, a3 as encodeBase16, a1 as encodeBase32, a5 as encodeBase58, a7 as encodeBase62, g as encodeJson, cy as encodeQuery, t as encrypt, cs as endSortWeight, cA as ensureKey, cB as ensureKeyAsync, an as equalBinary, bt as escapeHTML, ce as escapeRegExp, a9 as estimateSizeForBase, f as fatal, en as fetchBasic, eo as fetchJson, es as fetchOptionsBasicAuth, eq as fetchOptionsFormURLEncoded, er as fetchOptionsJson, ep as fetchText, cD as first, aJ as fixBrokenUth8String, bd as forEachDay, cK as forTimes, aH as formatMessages, eC as formatMilliseconds, al as fromBase64, am as fromBase64String, au as fromCamelCase, ai as fromHex, ev as getGlobal, dp as getGlobalContext, dX as getGlobalEmitter, dr as getGlobalLogger, ds as getGlobalLoggerIfExists, dJ as getNamespaceFilterString, eu as getNavigator, eE as getPerformanceTimestamp, bX as getSecureRandom, bY as getSecureRandomIfPossible, eB as getTimestamp, et as getWindow, el as httpMethod, db as immediate, by as isArray, bF as isBoolean, ex as isBrowser, bK as isEmpty, ch as isEven, cg as isHalf, bD as isInteger, dq as isLocalHost, bL as isNotEmpty, bJ as isNotNull, bH as isNull, bG as isNullOrUndefined, bC as isNumber, bw as isObject, c4 as isPrime, c3 as isPrimeRX, bx as isPrimitive, dg as isPromise, bz as isRecord, bA as isRecordPlain, bE as isSafeInteger, bB as isString, dd as isTimeout, bN as isTruthy, bI as isUint8Array, bM as isValue, ag as joinToUint8Array, bQ as jsonStringify, bP as jsonStringifySafe, bO as jsonStringifySorted, ao as jsonToUint8Array, cE as last, dY as lazyListener, cw as linkifyPlainText, bV as listDistinctUnion, bU as listGroupBy, bW as listOfKey, bT as listQuery, cI as memoize, cJ as memoizeAsync, ct as moveSortWeight, eH as noop, c8 as objectIsEmpty, c6 as objectMap, c7 as objectMergeDisposable, em as parseBasicAuth, eD as parseDate, dL as parseLogLevel, c9 as parseOrderby, cz as parseQuery, dh as promisify, f1 as qid, bZ as randomBoolean, b$ as randomFloat, b_ as randomInt, r as randomUint8Array, cM as regExpEscape, cL as regExpString, aI as renderMessages, cj as roundDown, cm as roundHalfAwayFromZero, cn as roundHalfDown, co as roundHalfEven, cl as roundHalfOdd, cp as roundHalfTowardsZero, ck as roundHalfUp, ci as roundUp, c5 as seededRandom, eX as setUuidDefaultEncoding, cC as size, da as sleep, cu as sortedItems, cc as sortedOrderby, cr as startSortWeight, av as stringToBoolean, ax as stringToFloat, aw as stringToInteger, ad as stringToUInt8Array, eT as suid, eS as suidBytes, eV as suidBytesDate, eU as suidDate, c1 as sum, dm as throttle, dc as timeout, aj as toBase64, ak as toBase64Url, aF as toBool, ar as toCamelCase, as as toCapitalize, at as toCapitalizeWords, aC as toFloat, ah as toHex, cx as toHumanReadableUrl, aD as toInt, aE as toString, af as toUint8Array, cd as toValidFilename, be as today, de as tryTimeout, f0 as uname, bu as unescapeHTML, d0 as useAsyncMutex, a0 as useBase, cU as useDefer, cR as useDispose, cT as useDisposer, cY as useEventListener, ey as useExitHandler, cX as useInterval, dM as useLevelFilter, ea as useMessageHub, c$ as useMutex, dK as useNamespaceFilter, d7 as usePool, ec as usePubSub, ej as useRPC, ek as useRPCHub, cv as useSorted, cW as useTimeout, eY as uuid, eW as uuid32bit, eM as uuidB32, eJ as uuidB62, eI as uuidBytes, eZ as uuidDecode, eO as uuidDecodeB32, eL as uuidDecodeB62, eR as uuidDecodeV4, e_ as uuidEncode, eN as uuidEncodeB32, eK as uuidEncodeB62, eQ as uuidEncodeV4, e$ as uuidIsValid, eP as uuidv4, ay as valueToBoolean, aA as valueToFloat, az as valueToInteger, aB as valueToString, df as waitOn } from './uuid-e68c76fc.js';
|
|
3
3
|
|
|
4
4
|
/** @deprecated */
|
|
5
5
|
declare function urlBase64ToUint8Array(base64String: string): Uint8Array | undefined;
|
package/dist/index.browser.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { w, Id, c, e, Jd,
|
|
2
|
-
export { O as BinaryEncoder, Y as CRYPTO_DEFAULT_ALG, Z as CRYPTO_DEFAULT_DERIVE_ALG, _ as CRYPTO_DEFAULT_DERIVE_ITERATIONS, X as CRYPTO_DEFAULT_HASH_ALG, he as Channel, me as CryptoEncoder, wb as DAY_MS, $b as Day, r as DefaultLogger, Fd as Emitter, le as JsonEncoder, ie as LocalChannel, n as LogLevelAlias, g as LogLevelAll, h as LogLevelDebug, k as LogLevelError, l as LogLevelFatal, i as LogLevelInfo, m as LogLevelOff, j as LogLevelWarn, f as LoggerConsoleHandler, o as LoggerContext,
|
|
1
|
+
import { w, Id, c, e, Jd, ze, k, j, i, d, g, m, h, p, Me, l } from './chunk-FXACG46Y.js';
|
|
2
|
+
export { O as BinaryEncoder, Y as CRYPTO_DEFAULT_ALG, Z as CRYPTO_DEFAULT_DERIVE_ALG, _ as CRYPTO_DEFAULT_DERIVE_ITERATIONS, X as CRYPTO_DEFAULT_HASH_ALG, he as Channel, me as CryptoEncoder, wb as DAY_MS, $b as Day, r as DefaultLogger, Fd as Emitter, le as JsonEncoder, ie as LocalChannel, n as LogLevelAlias, g as LogLevelAll, h as LogLevelDebug, k as LogLevelError, l as LogLevelFatal, i as LogLevelInfo, m as LogLevelOff, j as LogLevelWarn, f as LoggerConsoleHandler, o as LoggerContext, Ae as LoggerMemoryHandler, Oe as MemStorage, ke as NoopEncoder, te as Progress, pe as PubSub, ve as SerialQueue, vb as Uint8ArrayToDataUri, N as Uint8ArrayToHexDump, M as Uint8ArrayToJson, B as Uint8ArrayToString, td as XRX, z as _decodeUtf8Polyfill, y as _encodeUtf8Polyfill, Qa as _useBase, Na as arrayAvg, Oa as arrayBatches, Ca as arrayEmptyInPlace, Aa as arrayFilterInPlace, va as arrayFlatten, wa as arrayIntersection, Fa as arrayIsEqual, Ka as arrayMax, La as arrayMin, ta as arrayMinus, Ja as arrayRandomElement, ya as arrayRemoveElement, za as arraySetElement, Ha as arrayShuffle, Ia as arrayShuffleForce, Ga as arrayShuffleInPlace, Da as arraySorted, Ea as arraySortedNumbers, Ma as arraySum, xa as arraySymmetricDifference, Ba as arrayToggleInPlace, ua as arrayUnion, sa as arrayUnique, t as assert, u as assertCondition, ka as avg, ia as between, T as bitfield, U as blobToArrayBuffer, ub as blobToDataUri, V as blobToUint8Array, ze as browserSelectColorByName, pc as cloneJsonObject, oc as cloneObject, qa as cmp, pa as composeOrderby, Pa as createArray, S as createBinaryStreamDecoder, R as createBinaryStreamEncoder, je as createLocalChannelPair, Sb as createPromise, ne as createPromiseProxy, vd as csvParse, wd as csvParseToObjects, ud as csvStringify, tb as dataUriToBlob, sb as dataUriToMimeType, rb as dataUriToUint8Array, dc as dateStringToDays, cc as day, zb as dayDay, Pb as dayDiff, Db as dayFromAny, Fb as dayFromDate, Gb as dayFromDateGMT, Kb as dayFromParts, Lb as dayFromString, Ib as dayFromTimestamp, Cb as dayFromToday, Rb as dayIterator, yb as dayMonth, Mb as dayMonthStart, Ob as dayOffset, Qb as dayRange, Bb as dayToDate, Eb as dayToDateGMT, Ab as dayToParts, Jb as dayToString, Hb as dayToTimestamp, xb as dayYear, Nb as dayYearStart, xe as debounce, ec as decimal, hc as decimalCentsPart, fc as decimalFromCents, gc as decimalToCents, Va as decodeBase16, Ta as decodeBase32, Xa as decodeBase58, Za as decodeBase62, Q as decodeJson, ca as decrypt, Lc as deepEqual, Nc as deepMerge, Mc as deepStripUndefinedInPlace, aa as deriveKeyPbkdf2, Le as detect, Oc as diffObjects, $ as digest, Md as duration, nc as empty, Ua as encodeBase16, Sa as encodeBase32, Wa as encodeBase58, Ya as encodeBase62, P as encodeJson, pd as encodeQuery, ba as encrypt, jd as endSortWeight, ic as ensureKey, jc as ensureKeyAsync, K as equalBinary, Pc as escapeHTML, Yc as escapeRegExp, _a as estimateSizeForBase, s as fatal, Ce as fetchBasic, De as fetchJson, He as fetchOptionsBasicAuth, Fe as fetchOptionsFormURLEncoded, Ge as fetchOptionsJson, Ee as fetchText, lc as first, qb as fixBrokenUth8String, ac as forEachDay, sc as forTimes, ob as formatMessages, Jd as formatMilliseconds, I as fromBase64, J as fromBase64String, cb as fromCamelCase, F as fromHex, Ke as getGlobal, a as getGlobalContext, Gd as getGlobalEmitter, p as getGlobalLogger, q as getGlobalLoggerIfExists, b as getNamespaceFilterString, Je as getNavigator, Ld as getPerformanceTimestamp, da as getSecureRandom, ea as getSecureRandomIfPossible, Id as getTimestamp, Ie as getWindow, Ub as immediate, vc as isArray, Cc as isBoolean, Me as isBrowser, Hc as isEmpty, $c as isEven, _c as isHalf, Ac as isInteger, ye as isLocalHost, Ic as isNotEmpty, Gc as isNotNull, Ec as isNull, Dc as isNullOrUndefined, zc as isNumber, tc as isObject, ma as isPrime, la as isPrimeRX, uc as isPrimitive, Zb as isPromise, wc as isRecord, xc as isRecordPlain, Bc as isSafeInteger, yc as isString, Wb as isTimeout, Kc as isTruthy, Fc as isUint8Array, Jc as isValue, D as joinToUint8Array, x as jsonStringify, w as jsonStringifySafe, v as jsonStringifySorted, L as jsonToUint8Array, mc as last, Hd as lazyListener, nd as linkifyPlainText, Tc as listDistinctUnion, Sc as listGroupBy, Uc as listOfKey, Rc as listQuery, qc as memoize, rc as memoizeAsync, kd as moveSortWeight, Pe as noop, Xc as objectIsEmpty, Vc as objectMap, Wc as objectMergeDisposable, Be as parseBasicAuth, Kd as parseDate, d as parseLogLevel, oa as parseOrderby, qd as parseQuery, _b as promisify, ge as qid, fa as randomBoolean, ha as randomFloat, ga as randomInt, W as randomUint8Array, sd as regExpEscape, rd as regExpString, pb as renderMessages, bd as roundDown, ed as roundHalfAwayFromZero, fd as roundHalfDown, gd as roundHalfEven, dd as roundHalfOdd, hd as roundHalfTowardsZero, cd as roundHalfUp, ad as roundUp, na as seededRandom, ae as setUuidDefaultEncoding, kc as size, Tb as sleep, ld as sortedItems, ra as sortedOrderby, id as startSortWeight, db as stringToBoolean, fb as stringToFloat, eb as stringToInteger, A as stringToUInt8Array, Yd as suid, Xd as suidBytes, _d as suidBytesDate, Zd as suidDate, ja as sum, we as throttle, Vb as timeout, G as toBase64, H as toBase64Url, nb as toBool, $a as toCamelCase, ab as toCapitalize, bb as toCapitalizeWords, kb as toFloat, E as toHex, od as toHumanReadableUrl, lb as toInt, mb as toString, C as toUint8Array, Zc as toValidFilename, bc as today, Xb as tryTimeout, fe as uname, Qc as unescapeHTML, Ed as useAsyncMutex, Ra as useBase, zd as useDefer, xd as useDispose, yd as useDisposer, Cd as useEventListener, Ne as useExitHandler, Bd as useInterval, e as useLevelFilter, oe as useMessageHub, Dd as useMutex, c as useNamespaceFilter, ue as usePool, qe as usePubSub, re as useRPC, se as useRPCHub, md as useSorted, Ad as useTimeout, be as uuid, $d as uuid32bit, Rd as uuidB32, Od as uuidB62, Nd as uuidBytes, ce as uuidDecode, Td as uuidDecodeB32, Qd as uuidDecodeB62, Wd as uuidDecodeV4, de as uuidEncode, Sd as uuidEncodeB32, Pd as uuidEncodeB62, Vd as uuidEncodeV4, ee as uuidIsValid, Ud as uuidv4, gb as valueToBoolean, ib as valueToFloat, hb as valueToInteger, jb as valueToString, Yb as waitOn } from './chunk-FXACG46Y.js';
|
|
3
3
|
|
|
4
|
-
function
|
|
4
|
+
function va(p){let s="=".repeat((4-p.length%4)%4),l=(p+s).replace(/-/g,"+").replace(/_/g,"/"),y=window.atob(l),L=new Uint8Array(y.length);for(let c=0;c<y.length;++c)L[c]=y.charCodeAt(c);return L}function R(p,s){let l="0123456789abcdef".split("");function y(a,e){let r=a[0],n=a[1],o=a[2],t=a[3];r=c(r,n,o,t,e[0],7,-680876936),t=c(t,r,n,o,e[1],12,-389564586),o=c(o,t,r,n,e[2],17,606105819),n=c(n,o,t,r,e[3],22,-1044525330),r=c(r,n,o,t,e[4],7,-176418897),t=c(t,r,n,o,e[5],12,1200080426),o=c(o,t,r,n,e[6],17,-1473231341),n=c(n,o,t,r,e[7],22,-45705983),r=c(r,n,o,t,e[8],7,1770035416),t=c(t,r,n,o,e[9],12,-1958414417),o=c(o,t,r,n,e[10],17,-42063),n=c(n,o,t,r,e[11],22,-1990404162),r=c(r,n,o,t,e[12],7,1804603682),t=c(t,r,n,o,e[13],12,-40341101),o=c(o,t,r,n,e[14],17,-1502002290),n=c(n,o,t,r,e[15],22,1236535329),r=g(r,n,o,t,e[1],5,-165796510),t=g(t,r,n,o,e[6],9,-1069501632),o=g(o,t,r,n,e[11],14,643717713),n=g(n,o,t,r,e[0],20,-373897302),r=g(r,n,o,t,e[5],5,-701558691),t=g(t,r,n,o,e[10],9,38016083),o=g(o,t,r,n,e[15],14,-660478335),n=g(n,o,t,r,e[4],20,-405537848),r=g(r,n,o,t,e[9],5,568446438),t=g(t,r,n,o,e[14],9,-1019803690),o=g(o,t,r,n,e[3],14,-187363961),n=g(n,o,t,r,e[8],20,1163531501),r=g(r,n,o,t,e[13],5,-1444681467),t=g(t,r,n,o,e[2],9,-51403784),o=g(o,t,r,n,e[7],14,1735328473),n=g(n,o,t,r,e[12],20,-1926607734),r=d(r,n,o,t,e[5],4,-378558),t=d(t,r,n,o,e[8],11,-2022574463),o=d(o,t,r,n,e[11],16,1839030562),n=d(n,o,t,r,e[14],23,-35309556),r=d(r,n,o,t,e[1],4,-1530992060),t=d(t,r,n,o,e[4],11,1272893353),o=d(o,t,r,n,e[7],16,-155497632),n=d(n,o,t,r,e[10],23,-1094730640),r=d(r,n,o,t,e[13],4,681279174),t=d(t,r,n,o,e[0],11,-358537222),o=d(o,t,r,n,e[3],16,-722521979),n=d(n,o,t,r,e[6],23,76029189),r=d(r,n,o,t,e[9],4,-640364487),t=d(t,r,n,o,e[12],11,-421815835),o=d(o,t,r,n,e[15],16,530742520),n=d(n,o,t,r,e[2],23,-995338651),r=u(r,n,o,t,e[0],6,-198630844),t=u(t,r,n,o,e[7],10,1126891415),o=u(o,t,r,n,e[14],15,-1416354905),n=u(n,o,t,r,e[5],21,-57434055),r=u(r,n,o,t,e[12],6,1700485571),t=u(t,r,n,o,e[3],10,-1894986606),o=u(o,t,r,n,e[10],15,-1051523),n=u(n,o,t,r,e[1],21,-2054922799),r=u(r,n,o,t,e[8],6,1873313359),t=u(t,r,n,o,e[15],10,-30611744),o=u(o,t,r,n,e[6],15,-1560198380),n=u(n,o,t,r,e[13],21,1309151649),r=u(r,n,o,t,e[4],6,-145523070),t=u(t,r,n,o,e[11],10,-1120210379),o=u(o,t,r,n,e[2],15,718787259),n=u(n,o,t,r,e[9],21,-343485551),a[0]=i(r,a[0]),a[1]=i(n,a[1]),a[2]=i(o,a[2]),a[3]=i(t,a[3]);}function L(a,e,r,n,o,t){return e=i(i(e,a),i(n,t)),i(e<<o|e>>>32-o,r)}function c(a,e,r,n,o,t,h){return L(e&r|~e&n,a,e,o,t,h)}function g(a,e,r,n,o,t,h){return L(e&n|r&~n,a,e,o,t,h)}function d(a,e,r,n,o,t,h){return L(e^r^n,a,e,o,t,h)}function u(a,e,r,n,o,t,h){return L(r^(e|~n),a,e,o,t,h)}function w(a){let e=a.length,r=[1732584193,-271733879,-1732584194,271733878],n;for(n=64;n<=a.length;n+=64)y(r,f(a.substring(n-64,n)));a=a.substring(n-64);let o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(n=0;n<a.length;n++)o[n>>2]|=a.charCodeAt(n)<<(n%4<<3);if(o[n>>2]|=128<<(n%4<<3),n>55)for(y(r,o),n=0;n<16;n++)o[n]=0;return o[14]=e*8,y(r,o),r}function f(a){let e=[],r;for(r=0;r<64;r+=4)e[r>>2]=a.charCodeAt(r)+(a.charCodeAt(r+1)<<8)+(a.charCodeAt(r+2)<<16)+(a.charCodeAt(r+3)<<24);return e}function $(a){let e="",r=0;for(;r<4;r++)e+=l[a>>r*8+4&15]+l[a>>r*8&15];return e}function v(a){for(let e=0;e<a.length;e++)a[e]=$(a[e]);return a.join("")}function k(a){return v(w(a))}function i(a,e){return a+e&4294967295}s=s||{};let b=[];s={size:s.size||"50",rating:s.rating||"g",secure:s.secure||location.protocol==="https:",backup:s.backup||""},p=p.trim().toLowerCase();let m=s.secure?"https://secure.gravatar.com/avatar/":"http://www.gravatar.com/avatar/";return s.rating&&b.push(`r=${s.rating}`),s.backup&&b.push(`d=${encodeURIComponent(s.backup)}`),s.size&&b.push(`s=${s.size}`),`${m+k(p)}?${b.join("&")}`}function $a(p,s=""){try{return R(p,{size:256,backup:"monsterid",secure:!0})}catch{return s}}var W=class{constructor(s){this.pretty=!1;this.name=s.name??"zeed",this.prefix=`${s.name}$`,this.objectToString=s.objectToString??(l=>this.pretty?w(l,null,2):w(l)),this.objectFromString=s.objectFromString??(l=>{try{return JSON.parse(l)}catch{}});}setItem(s,l){let y=this.objectToString(l);localStorage.setItem(`${this.prefix}${s}`,y);}getItem(s){let l=localStorage.getItem(`${this.prefix}${s}`);if(l!=null)return this.objectFromString(l)}removeItem(s){localStorage.removeItem(`${this.prefix}${s}`);}clear(){Object.keys(localStorage).filter(s=>s.startsWith(this.prefix)).forEach(s=>{localStorage.removeItem(s);});}allKeys(){let s=this.prefix.length;return Object.keys(localStorage).filter(l=>l.startsWith(this.prefix)).map(l=>l.substr(s))}};function I(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function J(p={}){let s='font-family: "JetBrains Mono", Menlo; font-size: 11px;',l=`${s}`,y=`font-weight: 600; ${s}`,L=I(),c$1={},g=Id(),{filter:d=void 0,level:u=void 0,colors:w=!0,padding:f=16,time:$=!0}=p,v=c(d),k$1=e(u);return i$1=>{if(!k$1(i$1.level)||!v(i$1.name))return;let b=$?`+${Jd(Id()-g)}`:"",m=i$1.name||"",a=c$1[m||""];a==null&&(a={color:ze(m)},c$1[m]=a);let e;switch(f>0&&(m=m.padEnd(16," ")),w&&L?(e=[`%c${m}%c %s %c${b}`],e.push(`color:${a.color}; ${y}`),e.push(l),e.push(i$1.messages?.[0]??""),e.push(`color:${a.color};`),e.push(...i$1.messages.slice(1))):e=[m,...i$1.messages,`+${b}`],e=e.map(r=>r instanceof Uint8Array?`<Uint8Array size=${r.length}>`:r),i$1.level){case i:p.levelHelper&&(e[0]=`I|* ${e[0]}`),console.info(...e);break;case j:p.levelHelper&&(e[0]=`W|** ${e[0]}`),console.warn(...e);break;case k:p.levelHelper&&(e[0]=`E|*** ${e[0]}`),console.error(...e);break;default:p.levelHelper&&(e[0]=`D| ${e[0]}`),console.debug(...e);break}}}function _(p={}){let s=p.filter??localStorage.zeed??localStorage.debug,l$1='font-family: "JetBrains Mono", Menlo; font-size: 11px;',y=`${l$1}`,L=`font-weight: 600; ${l$1}`,c$1=I(),g$1=()=>{};return function d$1(u="",w){let f,$=c(s),v=d(w??g);if($(u)&&v!==m){let b=function(m,a){return v<=m?a:()=>{}};let i$1=[];if(c$1){let m=ze(u);i$1.push(`%c${u.padEnd(16," ")}%c %s`),i$1.push(`color:${m}; ${L}`),i$1.push(y);}else i$1.push(`[${u}] %s`);f=b(h,console.debug.bind(console,...i$1)),f.debug=b(h,console.debug.bind(console,...i$1)),f.info=b(i,console.info.bind(console,...i$1)),f.warn=b(j,console.warn.bind(console,...i$1)),f.error=b(k,console.error.bind(console,...i$1)),f.fatal=b(l,(...m)=>{throw f.error(...m),new Error(`${m.map(String).join(" ")}`)}),f.assert=b(l,(m,...a)=>{(m==null||typeof m=="number"&&isNaN(m)||!m)&&f.fatal(...a);});}else f=()=>{},f.debug=g$1,f.info=g$1,f.warn=g$1,f.error=g$1,f.assert=g$1,f.fatal=g$1;return f.extend=i=>d$1(u?`${u}:${i}`:i),f.label=u,f}}function Da(p={}){console.info("activateConsoleDebug is activated by default in browsers");}function G(p$1,s){return p(l=>{Me()&&(l.setHandlers([J()]),l.setFactory(_({})));})(p$1,s)}
|
|
5
5
|
|
|
6
|
-
export { W as LocalStorage, G as Logger, J as LoggerBrowserHandler, _ as LoggerBrowserSetupDebugFactory,
|
|
6
|
+
export { W as LocalStorage, G as Logger, J as LoggerBrowserHandler, _ as LoggerBrowserSetupDebugFactory, Da as activateConsoleDebug, I as browserSupportsColors, $a as gravatarURLByEmail, va as urlBase64ToUint8Array };
|
|
7
7
|
//# sourceMappingURL=out.js.map
|
|
8
8
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/browser/base64.ts","../src/browser/gravatar.ts","../src/browser/localstorage.ts","../src/browser/log-colors.ts","../src/browser/log-browser.ts","../src/browser/log-browser-factory.ts","../src/browser/log-context-browser.ts"],"names":["urlBase64ToUint8Array","base64String","padding","base64","rawData","outputArray","i","gravatar","email","options","hex_chr","md5cycle","e","t","n","r","s","ff","gg","hh","ii","add32","cmn","o","md51","md5blk","rhex","hex","md5","params","base","gravatarURLByEmail","defaultURL","LocalStorage","opt","data","jsonStringifySafe","key","value","prefixLength","browserSupportsColors","LoggerBrowserHandler","styleFont","styleDefault","styleBold","useColors","namespaces","startTime","getTimestamp","filter","level","colors","time","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeDiffString","formatMilliseconds","name","ninfo","browserSelectColorByName","args","arg","LogLevelInfo","LogLevelWarn","LogLevelError","LoggerBrowserSetupDebugFactory","noop","LoggerBrowserDebugFactory","logLevel","log","matches","parseLogLevel","LogLevelAll","LogLevelOff","defineForLogLevel","fnLevel","fn","fixedArgs","color","LogLevelDebug","LogLevelFatal","condition","subName","activateConsoleDebug","_opt","Logger","getGlobalLogger","context","isBrowser"],"mappings":"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","sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/** @deprecated */\nexport function urlBase64ToUint8Array(\n base64String: string,\n): Uint8Array | undefined {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n const 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}\n","// MIT licensed\n// https://github.com/mazondo/gravatarjs/blob/master/gravatar.js\n// https://en.gravatar.com/site/implement/images/\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 const hex_chr = '0123456789abcdef'.split('')\n\n // using md5() from here: http://www.myersdaily.org/joseph/javascript/md5-text.html\n function md5cycle(e: any[], t: any[]) {\n let n = e[0]\n let r = e[1]\n let i = e[2]\n let 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 const t = e.length\n const n = [1732584193, -271733879, -1732584194, 271733878]\n let 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 const 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 const t = []\n let 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 let t = ''\n let 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 (let 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\n // check to make sure you gave us something\n options = options || {}\n\n const 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 const 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 // now throw it all together\n return `${base + md5(email)}?${params.join('&')}`\n}\n\nexport function gravatarURLByEmail(\n email: string,\n defaultURL = '',\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 }\n catch (error) {\n return defaultURL\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport type { Json, ObjectStorage } from '../common/types'\nimport { jsonStringifySafe } from '../common/data/json'\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 = false\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n\n constructor(opt: LocalStorageOptions) {\n this.name = opt.name ?? 'zeed'\n this.prefix = `${opt.name}$`\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\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 const value = localStorage.getItem(`${this.prefix}${key}`)\n if (value != null)\n return this.objectFromString(value)\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","// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nexport function browserSupportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== 'undefined'\n && window.process\n // @ts-expect-error xxx\n && (window.process.type === 'renderer' || window.process.__nwjs)\n )\n return true\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n )\n return false\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== 'undefined'\n && document.documentElement\n && document.documentElement.style\n // @ts-expect-error xxx\n && document.documentElement.style.WebkitAppearance)\n // Is firebug? http://stackoverflow.com/a/398120/376773\n || (typeof window !== 'undefined'\n && window.console\n // @ts-expect-error xxx\n && (window.console.firebug\n // @ts-expect-error xxx\n // eslint-disable-next-line @typescript-eslint/unbound-method\n || (window.console.exception && window.console.table)))\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)\n && parseInt(RegExp.$1, 10) >= 31)\n // Double check webkit in userAgent just in case we are in a worker\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/* eslint-disable no-console */\n\nimport type { LogHandler, LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../common/log-base'\nimport { browserSelectColorByName } from '../common/log-colors'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../common/time'\nimport { browserSupportsColors } from './log-colors'\n\nexport function LoggerBrowserHandler(opt: LogHandlerOptions = {}): LogHandler {\n const styleFont = 'font-family: \"JetBrains Mono\", Menlo; font-size: 11px;'\n const styleDefault = `${styleFont}`\n const styleBold = `font-weight: 600; ${styleFont}`\n const useColors = browserSupportsColors()\n const namespaces: Record<string, any> = {}\n const startTime = getTimestamp()\n\n const {\n filter = undefined,\n level = undefined,\n colors = true,\n // levelHelper = false,\n // nameBrackets = true,\n padding = 16,\n time = true,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n const timeDiffString = time ? `+${formatMilliseconds(getTimestamp() - startTime)}` : ''\n\n let name = msg.name || ''\n let ninfo = namespaces[name || '']\n if (ninfo == null) {\n ninfo = {\n color: browserSelectColorByName(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n let args: string[]\n\n if (padding > 0)\n name = name.padEnd(16, ' ')\n\n if (colors && useColors) {\n args = [`%c${name}%c \\t%s %c${timeDiffString}`]\n args.push(`color:${ninfo.color}; ${styleBold}`)\n args.push(styleDefault)\n args.push(msg.messages?.[0] ?? '')\n args.push(`color:${ninfo.color};`)\n args.push(...msg.messages.slice(1))\n }\n else {\n args = [name, ...msg.messages, `+${timeDiffString}`]\n }\n\n // function consoleArgs(args: any[] = []): any[] {\n // return [\n // args\n // .filter((a) => typeof a === \"string\")\n // .map((a) => String(a))\n // .join(\" \"),\n // ...styles,\n // ...args.filter((a) => typeof a !== \"string\"),\n // ]\n // }\n\n args = args.map((arg: unknown) => {\n // There is an aweful bug in WKWebView causing \"stack\" issues on Uint8Arrays >= 64k\n if (arg instanceof Uint8Array)\n return `<Uint8Array size=${arg.length}>`\n return arg\n }) as any\n\n switch (msg.level) {\n case LogLevelInfo:\n if (opt.levelHelper)\n args[0] = `I|* ${args[0]}`\n console.info(...args)\n break\n case LogLevelWarn:\n if (opt.levelHelper)\n args[0] = `W|** ${args[0]}`\n console.warn(...args)\n break\n case LogLevelError:\n if (opt.levelHelper)\n args[0] = `E|*** ${args[0]}`\n console.error(...args)\n break\n default:\n if (opt.levelHelper)\n args[0] = `D| ${args[0]}`\n console.debug(...args)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/* eslint-disable no-console */\n\nimport type { LogHandlerOptions, LogLevel, LogLevelAliasType, LoggerInterface } from '../common/log-base'\nimport { LogLevelAll, LogLevelDebug, LogLevelError, LogLevelFatal, LogLevelInfo, LogLevelOff, LogLevelWarn } from '../common/log-base'\nimport { browserSelectColorByName } from '../common/log-colors'\nimport { parseLogLevel, useNamespaceFilter } from '../common/log-filter'\nimport { browserSupportsColors } from './log-colors'\n\nexport function LoggerBrowserSetupDebugFactory(opt: LogHandlerOptions = {}) {\n const filter = opt.filter ?? localStorage.zeed ?? localStorage.debug\n const styleFont = 'font-family: \"JetBrains Mono\", Menlo; font-size: 11px;'\n const styleDefault = `${styleFont}`\n const styleBold = `font-weight: 600; ${styleFont}`\n const useColors = browserSupportsColors()\n const noop: any = () => {}\n\n /// The trick is, that console called directly provides a reference to the source code.\n /// For the regular implementation this information is lost. But this approach has other\n /// drawbacks, therefore only use it in the Browser when actively debugging.\n return function LoggerBrowserDebugFactory(\n name = '',\n logLevel?: LogLevelAliasType,\n ): LoggerInterface {\n let log: LoggerInterface\n\n const matches = useNamespaceFilter(filter)\n const level = parseLogLevel(logLevel ?? LogLevelAll)\n\n if (matches(name) && level !== LogLevelOff) {\n const fixedArgs = []\n if (useColors) {\n const color = browserSelectColorByName(name)\n fixedArgs.push(`%c${name.padEnd(16, ' ')}%c \\t%s`)\n fixedArgs.push(`color:${color}; ${styleBold}`)\n fixedArgs.push(styleDefault)\n }\n else {\n fixedArgs.push(`[${name}] \\t%s`)\n }\n\n function defineForLogLevel(fnLevel: LogLevel, fn: any) {\n if (level <= fnLevel)\n return fn\n return () => {}\n }\n\n log = defineForLogLevel(LogLevelDebug, console.debug.bind(console, ...fixedArgs) as LoggerInterface)\n log.debug = defineForLogLevel(LogLevelDebug, console.debug.bind(console, ...fixedArgs))\n log.info = defineForLogLevel(LogLevelInfo, console.info.bind(console, ...fixedArgs))\n log.warn = defineForLogLevel(LogLevelWarn, console.warn.bind(console, ...fixedArgs))\n log.error = defineForLogLevel(LogLevelError, console.error.bind(console, ...fixedArgs))\n\n log.fatal = defineForLogLevel(LogLevelFatal, (...args: any) => {\n log.error(...args)\n throw new Error(`${args.map(String).join(' ')}`)\n })\n\n log.assert = defineForLogLevel(LogLevelFatal, (condition: unknown, ...args: any) => {\n if (condition == null || (typeof condition === 'number' && isNaN(condition)) || !condition)\n log.fatal(...args)\n })\n }\n else {\n log = (() => {}) as LoggerInterface\n log.debug = noop\n log.info = noop\n log.warn = noop\n log.error = noop\n log.assert = noop\n log.fatal = noop\n }\n\n log.extend = (subName: string) => {\n return LoggerBrowserDebugFactory(name ? `${name}:${subName}` : subName)\n }\n\n log.label = name\n\n return log\n }\n}\n\n/** @deprecated This output is default for initial use of Logger in browser environments. */\nexport function activateConsoleDebug(_opt: LogHandlerOptions = {}) {\n console.info('activateConsoleDebug is activated by default in browsers')\n // Logger.setHandlers([LoggerBrowserHandler(opt)]) // Fallback for previously registered Loggers\n // Logger.setFactory(LoggerBrowserSetupDebugFactory(opt))\n}\n\n// let klass = console\n// let debug = console.debug.bind(window.console, klass.toString() + \": \")\n\n// debug(\"test\")\n// console.debug(\"test2\")\n\n// let dd\n// if (Function.prototype.bind) {\n// dd = Function.prototype.bind.call(console.log, console)\n// } else {\n// dd = function () {\n// Function.prototype.apply.call(console.log, console, arguments)\n// }\n// }\n\n// dd(\"dd\")\n\n// let c = 1\n// Object.defineProperty(window, \"log2\", {\n// get: () => {\n// return console.log.bind(\n// window.console,\n// \"%c[log]%c %s\" + c++,\n// \"color:red\",\n// \"\"\n// )\n// },\n// })\n\n// // usage:\n// log2(\"Back to the future\")\n// log2(\"Back to the future\")\n\n// let plog = new Proxy(console.debug, {\n// apply: function (target, that, args) {\n// target.apply(that, args)\n// // base.apply(that, args);\n// },\n// })\n\n// let cons = console.debug\n// let plog = (...args) => {\n// cons.apply(window.console, [\"|\", ...args])\n// }\n\n// plog(\"xxx\")\n\n// function a() {\n// var err = new Error()\n// var caller_line = err.stack.split(\"\\n\")[2]\n// var index = caller_line.indexOf(\"at \")\n// var clean = caller_line.slice(index + 2, caller_line.length)\n// clean = clean.replace(/\\?t=\\d+/, \"\").replace(\"@fs/\", \"\")\n// console.log(clean)\n// console.log(\n// \"http://localhost:8080/Users/dirk/work/viidoo/lib/src/browser/log-browser.ts:188:1 log-browser.ts:291:10\"\n// )\n// }\n// function b() {\n// a()\n// }\n// b()\n","import { getGlobalLogger } from '../common/log'\nimport type { LogLevelAliasType, LoggerInterface } from '../common/log-base'\nimport { isBrowser } from '../common/platform'\nimport { LoggerBrowserHandler } from './log-browser'\nimport { LoggerBrowserSetupDebugFactory } from './log-browser-factory'\n\nexport function Logger(name?: string, level?: LogLevelAliasType): LoggerInterface {\n return getGlobalLogger((context) => {\n if (isBrowser()) {\n context.setHandlers([LoggerBrowserHandler()]) // Fallback for previously registered Loggers\n context.setFactory(LoggerBrowserSetupDebugFactory({}))\n }\n })(name, level)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/browser/base64.ts","../src/browser/gravatar.ts","../src/browser/localstorage.ts","../src/browser/log-colors.ts","../src/browser/log-browser.ts","../src/browser/log-browser-factory.ts","../src/browser/log-context-browser.ts"],"names":["urlBase64ToUint8Array","base64String","padding","base64","rawData","outputArray","i","gravatar","email","options","hex_chr","md5cycle","e","t","n","r","s","ff","gg","hh","ii","add32","cmn","o","md51","md5blk","rhex","hex","md5","params","base","gravatarURLByEmail","defaultURL","LocalStorage","opt","data","jsonStringifySafe","key","value","prefixLength","browserSupportsColors","LoggerBrowserHandler","styleFont","styleDefault","styleBold","useColors","namespaces","startTime","getTimestamp","filter","level","colors","time","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeDiffString","formatMilliseconds","name","ninfo","browserSelectColorByName","args","arg","LogLevelInfo","LogLevelWarn","LogLevelError","LoggerBrowserSetupDebugFactory","noop","LoggerBrowserDebugFactory","logLevel","log","matches","parseLogLevel","LogLevelAll","LogLevelOff","defineForLogLevel","fnLevel","fn","fixedArgs","color","LogLevelDebug","LogLevelFatal","condition","subName","activateConsoleDebug","_opt","Logger","getGlobalLogger","context","isBrowser"],"mappings":"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","sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/** @deprecated */\nexport function urlBase64ToUint8Array(\n base64String: string,\n): Uint8Array | undefined {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n const 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}\n","// MIT licensed\n// https://github.com/mazondo/gravatarjs/blob/master/gravatar.js\n// https://en.gravatar.com/site/implement/images/\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 const hex_chr = '0123456789abcdef'.split('')\n\n // using md5() from here: http://www.myersdaily.org/joseph/javascript/md5-text.html\n function md5cycle(e: any[], t: any[]) {\n let n = e[0]\n let r = e[1]\n let i = e[2]\n let 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 const t = e.length\n const n = [1732584193, -271733879, -1732584194, 271733878]\n let 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 const 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 const t = []\n let 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 let t = ''\n let 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 (let 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\n // check to make sure you gave us something\n options = options || {}\n\n const 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 const 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 // now throw it all together\n return `${base + md5(email)}?${params.join('&')}`\n}\n\nexport function gravatarURLByEmail(\n email: string,\n defaultURL = '',\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 }\n catch (error) {\n return defaultURL\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\nimport type { Json, ObjectStorage } from '../common/types'\nimport { jsonStringifySafe } from '../common/data/json'\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 = false\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n\n constructor(opt: LocalStorageOptions) {\n this.name = opt.name ?? 'zeed'\n this.prefix = `${opt.name}$`\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\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 const value = localStorage.getItem(`${this.prefix}${key}`)\n if (value != null)\n return this.objectFromString(value)\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","// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nexport function browserSupportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== 'undefined'\n && window.process\n // @ts-expect-error xxx\n && (window.process.type === 'renderer' || window.process.__nwjs)\n )\n return true\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n )\n return false\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== 'undefined'\n && document.documentElement\n && document.documentElement.style\n // @ts-expect-error xxx\n && document.documentElement.style.WebkitAppearance)\n // Is firebug? http://stackoverflow.com/a/398120/376773\n || (typeof window !== 'undefined'\n && window.console\n // @ts-expect-error xxx\n && (window.console.firebug\n // @ts-expect-error xxx\n // eslint-disable-next-line @typescript-eslint/unbound-method\n || (window.console.exception && window.console.table)))\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)\n && parseInt(RegExp.$1, 10) >= 31)\n // Double check webkit in userAgent just in case we are in a worker\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/* eslint-disable no-console */\n\nimport type { LogHandler, LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../common/log-base'\nimport { browserSelectColorByName } from '../common/log-colors'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../common/time'\nimport { browserSupportsColors } from './log-colors'\n\nexport function LoggerBrowserHandler(opt: LogHandlerOptions = {}): LogHandler {\n const styleFont = 'font-family: \"JetBrains Mono\", Menlo; font-size: 11px;'\n const styleDefault = `${styleFont}`\n const styleBold = `font-weight: 600; ${styleFont}`\n const useColors = browserSupportsColors()\n const namespaces: Record<string, any> = {}\n const startTime = getTimestamp()\n\n const {\n filter = undefined,\n level = undefined,\n colors = true,\n // levelHelper = false,\n // nameBrackets = true,\n padding = 16,\n time = true,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n const timeDiffString = time ? `+${formatMilliseconds(getTimestamp() - startTime)}` : ''\n\n let name = msg.name || ''\n let ninfo = namespaces[name || '']\n if (ninfo == null) {\n ninfo = {\n color: browserSelectColorByName(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n let args: string[]\n\n if (padding > 0)\n name = name.padEnd(16, ' ')\n\n if (colors && useColors) {\n args = [`%c${name}%c \\t%s %c${timeDiffString}`]\n args.push(`color:${ninfo.color}; ${styleBold}`)\n args.push(styleDefault)\n args.push(msg.messages?.[0] ?? '')\n args.push(`color:${ninfo.color};`)\n args.push(...msg.messages.slice(1))\n }\n else {\n args = [name, ...msg.messages, `+${timeDiffString}`]\n }\n\n // function consoleArgs(args: any[] = []): any[] {\n // return [\n // args\n // .filter((a) => typeof a === \"string\")\n // .map((a) => String(a))\n // .join(\" \"),\n // ...styles,\n // ...args.filter((a) => typeof a !== \"string\"),\n // ]\n // }\n\n args = args.map((arg: unknown) => {\n // There is an aweful bug in WKWebView causing \"stack\" issues on Uint8Arrays >= 64k\n if (arg instanceof Uint8Array)\n return `<Uint8Array size=${arg.length}>`\n return arg\n }) as any\n\n switch (msg.level) {\n case LogLevelInfo:\n if (opt.levelHelper)\n args[0] = `I|* ${args[0]}`\n console.info(...args)\n break\n case LogLevelWarn:\n if (opt.levelHelper)\n args[0] = `W|** ${args[0]}`\n console.warn(...args)\n break\n case LogLevelError:\n if (opt.levelHelper)\n args[0] = `E|*** ${args[0]}`\n console.error(...args)\n break\n default:\n if (opt.levelHelper)\n args[0] = `D| ${args[0]}`\n console.debug(...args)\n break\n }\n }\n}\n","// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n\n/* eslint-disable no-console */\n\nimport type { LogHandlerOptions, LogLevel, LogLevelAliasType, LoggerInterface } from '../common/log-base'\nimport { LogLevelAll, LogLevelDebug, LogLevelError, LogLevelFatal, LogLevelInfo, LogLevelOff, LogLevelWarn } from '../common/log-base'\nimport { browserSelectColorByName } from '../common/log-colors'\nimport { parseLogLevel, useNamespaceFilter } from '../common/log-filter'\nimport { browserSupportsColors } from './log-colors'\n\nexport function LoggerBrowserSetupDebugFactory(opt: LogHandlerOptions = {}) {\n const filter = opt.filter ?? localStorage.zeed ?? localStorage.debug\n const styleFont = 'font-family: \"JetBrains Mono\", Menlo; font-size: 11px;'\n const styleDefault = `${styleFont}`\n const styleBold = `font-weight: 600; ${styleFont}`\n const useColors = browserSupportsColors()\n const noop: any = () => {}\n\n /// The trick is, that console called directly provides a reference to the source code.\n /// For the regular implementation this information is lost. But this approach has other\n /// drawbacks, therefore only use it in the Browser when actively debugging.\n return function LoggerBrowserDebugFactory(\n name = '',\n logLevel?: LogLevelAliasType,\n ): LoggerInterface {\n let log: LoggerInterface\n\n const matches = useNamespaceFilter(filter)\n const level = parseLogLevel(logLevel ?? LogLevelAll)\n\n if (matches(name) && level !== LogLevelOff) {\n const fixedArgs = []\n if (useColors) {\n const color = browserSelectColorByName(name)\n fixedArgs.push(`%c${name.padEnd(16, ' ')}%c \\t%s`)\n fixedArgs.push(`color:${color}; ${styleBold}`)\n fixedArgs.push(styleDefault)\n }\n else {\n fixedArgs.push(`[${name}] \\t%s`)\n }\n\n function defineForLogLevel(fnLevel: LogLevel, fn: any) {\n if (level <= fnLevel)\n return fn\n return () => {}\n }\n\n log = defineForLogLevel(LogLevelDebug, console.debug.bind(console, ...fixedArgs) as LoggerInterface)\n log.debug = defineForLogLevel(LogLevelDebug, console.debug.bind(console, ...fixedArgs))\n log.info = defineForLogLevel(LogLevelInfo, console.info.bind(console, ...fixedArgs))\n log.warn = defineForLogLevel(LogLevelWarn, console.warn.bind(console, ...fixedArgs))\n log.error = defineForLogLevel(LogLevelError, console.error.bind(console, ...fixedArgs))\n\n log.fatal = defineForLogLevel(LogLevelFatal, (...args: any) => {\n log.error(...args)\n throw new Error(`${args.map(String).join(' ')}`)\n })\n\n log.assert = defineForLogLevel(LogLevelFatal, (condition: unknown, ...args: any) => {\n if (condition == null || (typeof condition === 'number' && isNaN(condition)) || !condition)\n log.fatal(...args)\n })\n }\n else {\n log = (() => {}) as LoggerInterface\n log.debug = noop\n log.info = noop\n log.warn = noop\n log.error = noop\n log.assert = noop\n log.fatal = noop\n }\n\n log.extend = (subName: string) => {\n return LoggerBrowserDebugFactory(name ? `${name}:${subName}` : subName)\n }\n\n log.label = name\n\n return log\n }\n}\n\n/** @deprecated This output is default for initial use of Logger in browser environments. */\nexport function activateConsoleDebug(_opt: LogHandlerOptions = {}) {\n console.info('activateConsoleDebug is activated by default in browsers')\n // Logger.setHandlers([LoggerBrowserHandler(opt)]) // Fallback for previously registered Loggers\n // Logger.setFactory(LoggerBrowserSetupDebugFactory(opt))\n}\n\n// let klass = console\n// let debug = console.debug.bind(window.console, klass.toString() + \": \")\n\n// debug(\"test\")\n// console.debug(\"test2\")\n\n// let dd\n// if (Function.prototype.bind) {\n// dd = Function.prototype.bind.call(console.log, console)\n// } else {\n// dd = function () {\n// Function.prototype.apply.call(console.log, console, arguments)\n// }\n// }\n\n// dd(\"dd\")\n\n// let c = 1\n// Object.defineProperty(window, \"log2\", {\n// get: () => {\n// return console.log.bind(\n// window.console,\n// \"%c[log]%c %s\" + c++,\n// \"color:red\",\n// \"\"\n// )\n// },\n// })\n\n// // usage:\n// log2(\"Back to the future\")\n// log2(\"Back to the future\")\n\n// let plog = new Proxy(console.debug, {\n// apply: function (target, that, args) {\n// target.apply(that, args)\n// // base.apply(that, args);\n// },\n// })\n\n// let cons = console.debug\n// let plog = (...args) => {\n// cons.apply(window.console, [\"|\", ...args])\n// }\n\n// plog(\"xxx\")\n\n// function a() {\n// var err = new Error()\n// var caller_line = err.stack.split(\"\\n\")[2]\n// var index = caller_line.indexOf(\"at \")\n// var clean = caller_line.slice(index + 2, caller_line.length)\n// clean = clean.replace(/\\?t=\\d+/, \"\").replace(\"@fs/\", \"\")\n// console.log(clean)\n// console.log(\n// \"http://localhost:8080/Users/dirk/work/viidoo/lib/src/browser/log-browser.ts:188:1 log-browser.ts:291:10\"\n// )\n// }\n// function b() {\n// a()\n// }\n// b()\n","import { getGlobalLogger } from '../common/log'\nimport type { LogLevelAliasType, LoggerInterface } from '../common/log-base'\nimport { isBrowser } from '../common/platform'\nimport { LoggerBrowserHandler } from './log-browser'\nimport { LoggerBrowserSetupDebugFactory } from './log-browser-factory'\n\nexport function Logger(name?: string, level?: LogLevelAliasType): LoggerInterface {\n return getGlobalLogger((context) => {\n if (isBrowser()) {\n context.setHandlers([LoggerBrowserHandler()]) // Fallback for previously registered Loggers\n context.setFactory(LoggerBrowserSetupDebugFactory({}))\n }\n })(name, level)\n}\n"]}
|