zeed 0.8.64 → 0.9.2
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-VOUZGWTC.js → chunk-5KHLXHN6.js} +5 -5
- package/dist/chunk-5KHLXHN6.js.map +1 -0
- package/dist/index.all.d.ts +3 -1
- package/dist/index.browser.cjs +3 -3
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.d.ts +2 -2
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.cjs +9 -9
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +2 -2
- package/dist/index.node.js +6 -6
- package/dist/index.node.js.map +1 -1
- package/dist/{uuid-89986670.d.ts → uuid-c2cc7aa0.d.ts} +3 -1
- package/package.json +6 -6
- package/dist/chunk-VOUZGWTC.js.map +0 -1
package/dist/index.node.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { J as Json, O as ObjectStorage, L as LogHandlerOptions, d8 as LogMessage, a as LogHandler } from './uuid-
|
|
2
|
-
export { dK as ArgumentsType, cC as AsyncMutex, cX as AsyncReturnType, _ as BinInput, d as CRYPTO_DEFAULT_ALG, e as CRYPTO_DEFAULT_DERIVE_ALG, f as CRYPTO_DEFAULT_DERIVE_ITERATIONS, C as CRYPTO_DEFAULT_HASH_ALG, di as Channel, dh as ChannelMessageEvent, dx as CryptoEncoder, ay as DAY_MS, aX as Day, aA as DayInput, aW as DayInputLegacy, az as DayValue, b1 as DecimalInput, b0 as DecimalValue, dp as DefaultListener, cs as Disposable, cr as Disposer, cq as DisposerFunction, dq as Emitter, dm as EmitterAllHandler, dl as EmitterHandler, du as Encoder, bu as FilterFunction, dw as JsonEncoder, dn as ListenerSignature, dj as LocalChannel, d5 as LogLevel, d6 as LogLevelAlias, d7 as LogLevelAliasKey, b as LogLevelAliasType, d4 as Logger, db as LoggerConsoleHandler, da as LoggerContext, d9 as LoggerContextInterface, c as LoggerInterface, dg as LoggerMemoryHandler, bv as MapperFunction, e4 as MemStorage, e3 as MemStorageOptions, dA as Message, dy as MessageAction, dE as MessageDefinitions, dF as MessageHub, dz as MessageResult, dC as MessagesDefaultMethods, dD as MessagesMethods, dB as MessagesOptions, cB as Mutex, e8 as NestedArray, dv as NoopEncoder, cL as Pool, cH as PoolTask, cJ as PoolTaskEvents, cF as PoolTaskFn, cI as PoolTaskIdConflictResolution, cG as PoolTaskState, bb as Primitive, dI as PubSub, dN as RPCFn, dM as RPCOptions, dO as RPCReturn, au as RenderMessagesOptions, dL as ReturnType, bU as RoundingMode, c_ as SerialQueue, c3 as SortableItem, cZ as TaskEvents, cY as TaskFn, ae as Uint8ArrayToHexDump, ad as Uint8ArrayToJson, a2 as Uint8ArrayToString, cx as UseDefer, cu as UseDispose, cp as XRX, a0 as _decodeUtf8Polyfill, $ as _encodeUtf8Polyfill, M as arrayAvg, N as arrayBatches, y as arrayEmptyInPlace, w as arrayFilterInPlace, q as arrayFlatten, s as arrayIntersection, B as arrayIsEqual, H as arrayMax, I as arrayMin, o as arrayMinus, G as arrayRandomElement, u as arrayRemoveElement, v as arraySetElement, E as arrayShuffle, F as arrayShuffleForce, D as arrayShuffleInPlace, z as arraySorted, A as arraySortedNumbers, K as arraySum, t as arraySymmetricDifference, x as arrayToggleInPlace, p as arrayUnion, n as arrayUnique, bH as avg, bF as between, cj as cloneJsonObject, ci as cloneObject, bQ as cmp, bP as composeOrderby, P as createArray, dk as createLocalChannelPair, cM as createPromise, dG as createPromiseProxy, l as csvParse, m as csvParseToObjects, k as csvStringify, a$ as dateStringToDays, a_ as day, aD as dayDay, aT as dayDiff, aH as dayFromAny, aJ as dayFromDate, aK as dayFromDateGMT, aO as dayFromParts, aP as dayFromString, aM as dayFromTimestamp, aG as dayFromToday, aV as dayIterator, aC as dayMonth, aQ as dayMonthStart, aS as dayOffset, aU as dayRange, aF as dayToDate, aI as dayToDateGMT, aE as dayToParts, aN as dayToString, aL as dayToTimestamp, aB as dayYear, aR as dayYearStart, d0 as debounce, b2 as decimal, b5 as decimalCentsPart, b3 as decimalFromCents, b4 as decimalToCents, U as decodeBase16, R as decodeBase32, W as decodeBase58, Y as decodeBase62, j as decrypt, b6 as deepEqual, b8 as deepMerge, b7 as deepStripUndefinedInPlace, h as deriveKeyPbkdf2, d$ as detect, g as digest, ch as empty, T as encodeBase16, Q as encodeBase32, V as encodeBase58, X as encodeBase62, cb as encodeQuery, i as encrypt, c5 as endSortWeight, cd as ensureKey, ce as ensureKeyAsync, ab as equalBinary, b9 as escapeHTML, bT as escapeRegExp, Z as estimateSizeForBase, dS as fetchBasic, dT as fetchJson, dX as fetchOptionsBasicAuth, dV as fetchOptionsFormURLEncoded, dW as fetchOptionsJson, dU as fetchText, ax as fixBrokenUth8String, aY as forEachDay, cm as forTimes, av as formatMessages, e6 as formatMilliseconds, a9 as fromBase64, aa as fromBase64String, ai as fromCamelCase, a6 as fromHex, d_ as getGlobal, d1 as getGlobalContext, dr as getGlobalEmitter, d3 as getGlobalLogger, dc as getNamespaceFilterString, dZ as getNavigator, bA as getSecureRandom, bB as getSecureRandomIfPossible, e5 as getTimestamp, dY as getWindow, dQ as httpMethod, cO as immediate, be as isArray, bl as isBoolean, e0 as isBrowser, bW as isEven, bV as isHalf, bj as isInteger, d2 as isLocalHost, bp as isNotNull, bn as isNull, bm as isNullOrUndefined, bi as isNumber, bc as isObject, bJ as isPrime, bI as isPrimeRX, bd as isPrimitive, cV as isPromise, bf as isRecord, bg as isRecordPlain, bk as isSafeInteger, bh as isString, cS as isTimeout, bo as isUint8Array, bq as isValue, a4 as joinToUint8Array, bt as jsonStringify, bs as jsonStringifySafe, br as jsonStringifySorted, ac as jsonToUint8Array, cg as last, dt as lazyListener, c9 as linkifyPlainText, by as listDistinctUnion, bx as listGroupBy, bz as listOfKey, bw as listQuery, ck as memoize, cl as memoizeAsync, ds as messages, c6 as moveSortWeight, bN as objectIsEmpty, bL as objectMap, bM as objectMergeDisposable, dR as parseBasicAuth, e7 as parseDate, de as parseLogLevel, bO as parseOrderby, cc as parseQuery, e1 as platform, cW as promisify,
|
|
1
|
+
import { J as Json, O as ObjectStorage, L as LogHandlerOptions, d8 as LogMessage, a as LogHandler } from './uuid-c2cc7aa0.js';
|
|
2
|
+
export { dK as ArgumentsType, cC as AsyncMutex, cX as AsyncReturnType, _ as BinInput, d as CRYPTO_DEFAULT_ALG, e as CRYPTO_DEFAULT_DERIVE_ALG, f as CRYPTO_DEFAULT_DERIVE_ITERATIONS, C as CRYPTO_DEFAULT_HASH_ALG, di as Channel, dh as ChannelMessageEvent, dx as CryptoEncoder, ay as DAY_MS, aX as Day, aA as DayInput, aW as DayInputLegacy, az as DayValue, b1 as DecimalInput, b0 as DecimalValue, dp as DefaultListener, cs as Disposable, cr as Disposer, cq as DisposerFunction, dq as Emitter, dm as EmitterAllHandler, dl as EmitterHandler, du as Encoder, bu as FilterFunction, dw as JsonEncoder, dn as ListenerSignature, dj as LocalChannel, d5 as LogLevel, d6 as LogLevelAlias, d7 as LogLevelAliasKey, b as LogLevelAliasType, d4 as Logger, db as LoggerConsoleHandler, da as LoggerContext, d9 as LoggerContextInterface, c as LoggerInterface, dg as LoggerMemoryHandler, bv as MapperFunction, e4 as MemStorage, e3 as MemStorageOptions, dA as Message, dy as MessageAction, dE as MessageDefinitions, dF as MessageHub, dz as MessageResult, dC as MessagesDefaultMethods, dD as MessagesMethods, dB as MessagesOptions, cB as Mutex, e8 as NestedArray, dv as NoopEncoder, cL as Pool, cH as PoolTask, cJ as PoolTaskEvents, cF as PoolTaskFn, cI as PoolTaskIdConflictResolution, cG as PoolTaskState, bb as Primitive, dI as PubSub, dN as RPCFn, dM as RPCOptions, dO as RPCReturn, au as RenderMessagesOptions, dL as ReturnType, bU as RoundingMode, c_ as SerialQueue, c3 as SortableItem, cZ as TaskEvents, cY as TaskFn, ae as Uint8ArrayToHexDump, ad as Uint8ArrayToJson, a2 as Uint8ArrayToString, cx as UseDefer, cu as UseDispose, cp as XRX, a0 as _decodeUtf8Polyfill, $ as _encodeUtf8Polyfill, M as arrayAvg, N as arrayBatches, y as arrayEmptyInPlace, w as arrayFilterInPlace, q as arrayFlatten, s as arrayIntersection, B as arrayIsEqual, H as arrayMax, I as arrayMin, o as arrayMinus, G as arrayRandomElement, u as arrayRemoveElement, v as arraySetElement, E as arrayShuffle, F as arrayShuffleForce, D as arrayShuffleInPlace, z as arraySorted, A as arraySortedNumbers, K as arraySum, t as arraySymmetricDifference, x as arrayToggleInPlace, p as arrayUnion, n as arrayUnique, bH as avg, bF as between, cj as cloneJsonObject, ci as cloneObject, bQ as cmp, bP as composeOrderby, P as createArray, dk as createLocalChannelPair, cM as createPromise, dG as createPromiseProxy, l as csvParse, m as csvParseToObjects, k as csvStringify, a$ as dateStringToDays, a_ as day, aD as dayDay, aT as dayDiff, aH as dayFromAny, aJ as dayFromDate, aK as dayFromDateGMT, aO as dayFromParts, aP as dayFromString, aM as dayFromTimestamp, aG as dayFromToday, aV as dayIterator, aC as dayMonth, aQ as dayMonthStart, aS as dayOffset, aU as dayRange, aF as dayToDate, aI as dayToDateGMT, aE as dayToParts, aN as dayToString, aL as dayToTimestamp, aB as dayYear, aR as dayYearStart, d0 as debounce, b2 as decimal, b5 as decimalCentsPart, b3 as decimalFromCents, b4 as decimalToCents, U as decodeBase16, R as decodeBase32, W as decodeBase58, Y as decodeBase62, j as decrypt, b6 as deepEqual, b8 as deepMerge, b7 as deepStripUndefinedInPlace, h as deriveKeyPbkdf2, d$ as detect, g as digest, ch as empty, T as encodeBase16, Q as encodeBase32, V as encodeBase58, X as encodeBase62, cb as encodeQuery, i as encrypt, c5 as endSortWeight, cd as ensureKey, ce as ensureKeyAsync, ab as equalBinary, b9 as escapeHTML, bT as escapeRegExp, Z as estimateSizeForBase, dS as fetchBasic, dT as fetchJson, dX as fetchOptionsBasicAuth, dV as fetchOptionsFormURLEncoded, dW as fetchOptionsJson, dU as fetchText, ax as fixBrokenUth8String, aY as forEachDay, cm as forTimes, av as formatMessages, e6 as formatMilliseconds, a9 as fromBase64, aa as fromBase64String, ai as fromCamelCase, a6 as fromHex, d_ as getGlobal, d1 as getGlobalContext, dr as getGlobalEmitter, d3 as getGlobalLogger, dc as getNamespaceFilterString, dZ as getNavigator, bA as getSecureRandom, bB as getSecureRandomIfPossible, e5 as getTimestamp, dY as getWindow, dQ as httpMethod, cO as immediate, be as isArray, bl as isBoolean, e0 as isBrowser, bW as isEven, bV as isHalf, bj as isInteger, d2 as isLocalHost, bp as isNotNull, bn as isNull, bm as isNullOrUndefined, bi as isNumber, bc as isObject, bJ as isPrime, bI as isPrimeRX, bd as isPrimitive, cV as isPromise, bf as isRecord, bg as isRecordPlain, bk as isSafeInteger, bh as isString, cS as isTimeout, bo as isUint8Array, bq as isValue, a4 as joinToUint8Array, bt as jsonStringify, bs as jsonStringifySafe, br as jsonStringifySorted, ac as jsonToUint8Array, cg as last, dt as lazyListener, c9 as linkifyPlainText, by as listDistinctUnion, bx as listGroupBy, bz as listOfKey, bw as listQuery, ck as memoize, cl as memoizeAsync, ds as messages, c6 as moveSortWeight, e9 as noop, bN as objectIsEmpty, bL as objectMap, bM as objectMergeDisposable, dR as parseBasicAuth, e7 as parseDate, de as parseLogLevel, bO as parseOrderby, cc as parseQuery, e1 as platform, cW as promisify, ev as qid, bC as randomBoolean, bE as randomFloat, bD as randomInt, r as randomUint8Array, co as regExpEscape, cn as regExpString, aw as renderMessages, bY as roundDown, b$ as roundHalfAwayFromZero, c0 as roundHalfDown, c1 as roundHalfEven, b_ as roundHalfOdd, c2 as roundHalfTowardsZero, bZ as roundHalfUp, bX as roundUp, bK as seededRandom, ep as setUuidDefaultEncoding, cf as size, cN as sleep, c7 as sortedItems, bR as sortedOrderby, c4 as startSortWeight, aj as stringToBoolean, al as stringToFloat, ak as stringToInteger, a1 as stringToUInt8Array, el as suid, ek as suidBytes, en as suidBytesDate, em as suidDate, bG as sum, c$ as throttle, cQ as timeout, cP as timeoutReached, cR as timoutError, a7 as toBase64, a8 as toBase64Url, at as toBool, af as toCamelCase, ag as toCapitalize, ah as toCapitalizeWords, aq as toFloat, a5 as toHex, ca as toHumanReadableUrl, ar as toInt, as as toString, a3 as toUint8Array, bS as toValidFilename, aZ as today, cT as tryTimeout, eu as uname, ba as unescapeHTML, cE as useAsyncMutex, S as useBase, cw as useDefer, ct as useDispose, cv as useDisposer, cA as useEventListener, e2 as useExitHandler, cz as useInterval, df as useLevelFilter, dH as useMessageHub, cD as useMutex, dd as useNamespaceFilter, cK as usePool, dJ as usePubSub, dP as useRPC, c8 as useSorted, cy as useTimeout, eq as uuid, eo as uuid32bit, ee as uuidB32, eb as uuidB62, ea as uuidBytes, er as uuidDecode, eg as uuidDecodeB32, ed as uuidDecodeB62, ej as uuidDecodeV4, es as uuidEncode, ef as uuidEncodeB32, ec as uuidEncodeB62, ei as uuidEncodeV4, et as uuidIsValid, eh as uuidv4, am as valueToBoolean, ao as valueToFloat, an as valueToInteger, ap as valueToString, cU as waitOn } from './uuid-c2cc7aa0.js';
|
|
3
3
|
|
|
4
4
|
interface ParseConfig {
|
|
5
5
|
args?: string[];
|
package/dist/index.node.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{$ as Rt,$a as Ar,$b as On,$c as
|
|
2
|
-
`,pe=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/,me=/\\n/g,de=/\n|\r|\r\n/;function
|
|
3
|
-
`)}switch(
|
|
4
|
-
`)?.map(e=>{let r=e.match(/^\s+at.*(\((.*)\)|file:\/\/(.*)$)|\s*at\s(\/.*)$/);if(r){let n=r[3]||r[2]||r[4];return n.endsWith(")")&&(n=n.slice(0,-1)),n}return null})?.filter(e=>e!=null)||[]}
|
|
5
|
-
`).map(p=>p.trim()),f=o.findIndex(p=>t.some(l=>p.startsWith(l)));r=o[f+1],r&&(r=Re(r)),r&&e&&(r=ne(r))}return r}
|
|
6
|
-
`)}
|
|
1
|
+
import{$ as Rt,$a as Ar,$b as On,$c as Bs,$d as Fi,A as ct,Aa as cr,Ab as on,Ac as is,Ad as ri,B as lt,Ba as lr,Bb as an,Bc as os,Bd as ni,C as ft,Ca as fr,Cb as cn,Cc as as,Cd as si,D as ut,Da as ur,Db as ln,Dc as cs,Dd as ii,E as gt,Ea as gr,Eb as fn,Ec as ls,Ed as oi,F as pt,Fa as pr,Fb as un,Fc as fs,Fd as ai,G as mt,Ga as mr,Gb as gn,Gc as us,Gd as ci,H as dt,Ha as dr,Hb as pn,Hc as gs,Hd as li,I as ht,Ia as hr,Ib as mn,Ic as ps,Id as fi,J as yt,Ja as C,Jb as dn,Jc as ms,Jd as ui,K as bt,Ka as yr,Kb as hn,Kc as ds,Kd as gi,L as vt,La as br,Lb as yn,Lc as hs,Ld as pi,M as xt,Ma as vr,Mb as bn,Mc as ys,Md as mi,N as $t,Na as xr,Nb as vn,Nc as bs,Nd as di,O as Et,Oa as $r,Ob as xn,Oc as R,Od as hi,P as St,Pa as Er,Pb as $n,Pc as vs,Pd as yi,Q as Lt,Qa as S,Qb as En,Qc as xs,Qd as bi,R as wt,Ra as Sr,Rb as Sn,Rc as $s,Rd as vi,S as Tt,Sa as Lr,Sb as Ln,Sc as Es,Sd as xi,T as Pt,Ta as wr,Tb as wn,Tc as Ss,Td as $i,U as kt,Ua as Tr,Ub as Tn,Uc as Ls,Ud as Ei,V as Ft,Va as Pr,Vb as Pn,Vc as ws,Vd as Si,W as Nt,Wa as kr,Wb as kn,Wc as Ts,Wd as Li,X as Bt,Xa as Fr,Xb as Fn,Xc as Ps,Xd as wi,Y as At,Ya as Nr,Yb as Nn,Yc as ks,Yd as Ti,Z as Ot,Za as N,Zb as Bn,Zc as Fs,Zd as Pi,_ as jt,_a as Br,_b as An,_c as Ns,_d as ki,a as s,aa as Dt,ab as Or,ac as jn,ad as As,ae as Ni,b as Me,ba as Ht,bb as jr,bc as Rn,bd as Os,be as Bi,c as Ke,ca as Wt,cb as Rr,cc as Dn,cd as js,ce as Ai,d as k,da as It,db as Dr,dc as Hn,dd as Rs,de as Oi,e as Ue,ea as _t,eb as Hr,ec as Wn,ed as Ds,ee as ji,f as F,fa as Gt,fb as Wr,fc as In,fd as Hs,fe as Ri,g as Ye,ga as Mt,gb as Ir,gc as _n,gd as Ws,ge as Di,h as O,ha as Kt,hb as _r,hc as Gn,hd as Is,he as Hi,i as ze,ia as Ut,ib as Gr,ic as Mn,id as _s,ie as Wi,j as Ce,ja as Yt,jb as Mr,jc as Kn,jd as D,je as Ii,k as Ze,ka as zt,kb as Kr,kc as Un,kd as J,ke as _i,l as E,la as Ct,lb as Ur,lc as Yn,ld as Gs,le as Gi,m as Je,ma as Zt,mb as Yr,mc as zn,md as Ms,me as Mi,n as j,na as Jt,nb as zr,nc as Cn,nd as Ks,ne as Ki,o as Qe,oa as Qt,ob as Cr,oc as Z,od as Us,oe as Ui,p as Ve,pa as Vt,pb as Zr,pc as Zn,pd as Ys,q as qe,qa as qt,qb as Jr,qc as Jn,qd as zs,r as Xe,ra as Xt,rb as Qr,rc as Qn,rd as Cs,s as et,sa as er,sb as Vr,sc as Vn,sd as Zs,t as tt,ta as tr,tb as qr,tc as qn,td as Js,u as rt,ua as rr,ub as Xr,uc as Xn,ud as Qs,v as nt,va as nr,vb as en,vc as es,vd as Vs,w as st,wa as sr,wb as tn,wc as ts,wd as qs,x as it,xa as ir,xb as rn,xc as rs,xd as Xs,y as ot,ya as or,yb as nn,yc as ns,yd as ei,z as at,za as ar,zb as sn,zc as ss,zd as ti}from"./chunk-5KHLXHN6.js";function zi(t={}){let{args:e=process.argv.slice(1),alias:r={},normalize:n=C,booleanArgs:o=[],listArgs:f=[],numberArgs:p=[]}=t,l=Object.entries(r).reduce((i,c)=>{let[m,d]=c;typeof d=="string"&&(d=[d]);for(let P of d)i[n(P)]=n(m);return i},{}),a={_:[]};function g(i,c){a[i]==null||typeof a[i]=="boolean"?a[i]=c:Array.isArray(a[i])?a[i].push(c):a[i]=[a[i],c]}s(g,"setOpt");let b=[...e],h;for(;h=b.shift();){let i;if(/^--?/.test(h)){let c=h.replace(/^--?/,"");if(h.includes("=")){let[m,d]=c.split("=",2);c=m.trim(),i=d.trim()}c=n(c),c=l[c]??c,o.includes(c)?g(c,!0):(i=i??b.shift()??"",p.includes(c)&&(i=Number(i??0)),f.includes(c)?Array.isArray(a[c])?a[c].push(i):a[c]=[i]:g(c,i))}else a._.push(h)}return a}s(zi,"parseArgs");function Ji(t){return new Promise((e,r)=>{import("child_process").then(({spawn:n})=>{let o=n("pbcopy");o.on("error",f=>r(f)),o.on("close",()=>e(t)),o.stdin.write(t),o.stdin.end()}).catch(()=>{})})}s(Ji,"pbcopy");import H from"crypto";try{typeof globalThis<"u"&&typeof globalThis.crypto>"u"&&H&&H.webcrypto&&(globalThis.crypto=H.webcrypto)}catch(t){console.warn("Failed to polyfill webcrypto",t)}import B from"fs";import{resolve as ue}from"path";var L=E("zeed:env","error"),ge=`
|
|
2
|
+
`,pe=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/,me=/\\n/g,de=/\n|\r|\r\n/;function Q(t,e={}){let r={};return String(t).split(de).forEach((n,o)=>{let f=n.match(pe);if(f!=null){let p=f[1],l=f[2]||"",a=l.length-1,g=l[0]==='"'&&l[a]==='"';l[0]==="'"&&l[a]==="'"||g?(l=l.substring(1,a),g&&(l=l.replace(me,ge))):l=l.trim(),r[p]=l}else L.debug(`did not match key and value when parsing line ${o+1}: ${n}`)}),r}s(Q,"parse");function he(t,e="."){return ue(process.cwd(),t??e)}s(he,"stringToPath");function ye(t,e=""){return t==null&&(t=e),he(String(t).trim(),e)}s(ye,"valueToPath");var W=ye;function no(t,e=process.env){if(e[t]!=null)return e[t];t=t.toLowerCase();for(let[r,n]of Object.entries(e))if(r.toLowerCase()===t)return n}s(no,"getEnvVariableRelaxed");function so(t={}){let e=t?.path??W(t?.filename??".env"),r=t?.encoding??"utf8",n=t?.debug||!1;n!==!0&&(L.level=1/0);try{let o=B.existsSync(e)?Q(B.readFileSync(e,{encoding:r}),{debug:n}):{},f=B.existsSync(`${e}.local`)?Q(B.readFileSync(`${e}.local`,{encoding:r}),{debug:n}):{},p=Object.assign({},o,f),l=t?.env??process.env;return Object.entries(p).forEach(([a,g])=>{typeof t?.prefix=="string"&&(a=t?.prefix+a),Object.prototype.hasOwnProperty.call(l,a)?L.debug(`"${a}" is already defined and will not be overwritten`):g!=null&&(L.info(`set env.${a} = ${g}`),l[a]=g)}),{parsed:p}}catch(o){return L.error(o),{error:o}}}s(so,"setupEnv");import{mkdirSync as be,readFileSync as V,readdirSync as ve,rmSync as xe,unlinkSync as $e,writeFileSync as Ee}from"fs";import{dirname as Se,resolve as q}from"path";var X=E("zeed:filestorage","error"),I=class{constructor(e={}){this.store={};this.fileKeys=void 0;this.pretty=!1;this.dirname=q(process.cwd(),e.path??".fileStorage"),this.pretty=!!e.pretty,this.extension=e.extension??".json",e.extension&&!this.extension.startsWith(".")&&(this.extension=`.${this.extension}`),this.extensionLength=this.extension.length,this.objectToString=e.objectToString??(r=>this.pretty?j(r,null,2):j(r)),this.objectFromString=e.objectFromString??(r=>{try{return JSON.parse(r)}catch(n){X.warn(`fileStorage parse error '${n}' in`,r)}}),this.keyToFilename=e.keyToFilename??Z}setItem(e,r){this.store[e]=R(r);try{let n=this.objectToString(r),o=this.getPath(e);be(Se(o),{recursive:!0}),Ee(o,n,"utf8")}catch(n){X.error("setItem error",n)}}getPath(e){return q(this.dirname,this.keyToFilename(e)+this.extension)}getBuffer(e){let r=this.getPath(e);return Buffer.from(V(r))}getItem(e){let r=this.store[e];if(r!==null){if(r!=null)return R(r);try{let n=this.getPath(e),o=V(n,"utf8");if(o!=null){let f=this.objectFromString(o);return this.store[e]=f,f}}catch{this.store[e]=null}}}removeItem(e){if(delete this.store[e],this.fileKeys!=null){let r=this.fileKeys.indexOf(e);r!==-1&&this.fileKeys.splice(r,1)}try{let r=this.getPath(e);$e(r)}catch{}}clear(){this.fileKeys=[],this.store={},xe(this.dirname,{recursive:!0,force:!0})}allKeys(){if(this.fileKeys==null)try{this.fileKeys=ve(this.dirname,{withFileTypes:!0}).filter(r=>!r.isDirectory()&&r.name.endsWith(this.extension)).map(r=>r.name.slice(0,-this.extensionLength))||[]}catch{}let e=[...this.fileKeys||[]];for(let r of Object.keys(this.store))e.includes(r)||e.push(r);return e.sort(),e}};s(I,"FileStorage");import{mkdir as Le,readFile as we,rm as Te,stat as Pe,writeFile as ke}from"fs/promises";import{join as _,normalize as Fe}from"path";function bo(t){let e=Fe(t),r=process.env.HOME;return r&&e.startsWith(r)?`~${e.slice(r.length)}`:e}s(bo,"toHumanReadableFilePath");async function G(t){try{await Pe(t)}catch{return!1}return!0}s(G,"exists");async function vo(...t){let e=_(...t);return await G(e)||await Le(e,{recursive:!0}),e}s(vo,"ensureFolder");async function xo(...t){let e=_(...t);return await G(e)&&await Te(e,{recursive:!0}),e}s(xo,"removeFolder");async function $o(...t){let e=_(...t);if(await G(e))return await we(e,"utf-8")}s($o,"readText");async function Eo(t,e){await ke(t,e,"utf-8")}s(Eo,"writeText");import{createWriteStream as Ne,mkdirSync as Be}from"fs";import{dirname as Ae,resolve as Oe}from"path";var ee={};function te(t,e={}){let{level:r=void 0,filter:n=void 0,time:o=!0,pretty:f=!1}=e;t=Oe(process.cwd(),t),Be(Ae(t),{recursive:!0});let p=Ne(t,{flags:"a"}),l=k(n),a=F(r);return g=>{if(!a(g.level)||!l(g.name))return;let b=o?`${new Date().toISOString()} `:"",h=g.name||"",i=ee[h||""];i==null&&(ee[h]=i);let c=[`[${h||"*"}]`,N(g.messages,{pretty:f})];function m(...d){p.write(`${d.join(" ")}
|
|
3
|
+
`)}switch(s(m,"write"),g.level){case 1:m(`${b}I|* `,...c);break;case 2:m(`${b}W|** `,...c);break;case 3:m(`${b}E|***`,...c);break;default:m(`${b}D| `,...c);break}}}s(te,"LoggerFileHandler");import De from"tty";import{resolve as re}from"path";function je(t){return typeof t!="string"?[]:t?.split(`
|
|
4
|
+
`)?.map(e=>{let r=e.match(/^\s+at.*(\((.*)\)|file:\/\/(.*)$)|\s*at\s(\/.*)$/);if(r){let n=r[3]||r[2]||r[4];return n.endsWith(")")&&(n=n.slice(0,-1)),n}return null})?.filter(e=>e!=null)||[]}s(je,"getStackLlocationList");var M=re(process.cwd()),K=process.env?.HOME?re(process.env?.HOME):"";function ne(t){if(t.includes("/node_modules/"))return"";let e="file://";return t.startsWith(e)?t.substr(e.length):M&&t.startsWith(M)?t.substr(M.length+1):(K&&t.startsWith(K)&&(t=`~/${t.substr(K.length+1)}`),t)}s(ne,"pathStripCwd");function Re(t){let e=t.match(/^\s*at.*(\((.*)\)|file:\/\/(.*)$)|\s*at\s(\/.*)$/);if(e){let r=e[3]||e[2]||e[4];return r.endsWith(")")&&(r=r.slice(0,-1)),r}return""}s(Re,"extractFileInfo");function U(t=2,e=!0){let r=new Error("stack").stack||"",n=je(r)?.[t];return n&&e&&(n=ne(n)),n||""}s(U,"getSourceLocation");function se(){return new Error("stack").stack||""}s(se,"getStack");function ie(t,e=!0){let r="",n=new Error("stack").stack||"";if(typeof n=="string"){let o=n.split(`
|
|
5
|
+
`).map(p=>p.trim()),f=o.findIndex(p=>t.some(l=>p.startsWith(l)));r=o[f+1],r&&(r=Re(r)),r&&e&&(r=ne(r))}return r}s(ie,"getSourceLocationByPrecedingPattern");function He(){try{return S(process.env.ZEED_COLOR,De.isatty(process.stdout.fd))}catch{}return!1}s(He,"shouldUseColor");var Y,oe=[6,2,3,4,5,1];function We(t){let e=0;for(let r=0;r<t.length;r++)e=(e<<5)-e+t.charCodeAt(r),e|=0;return oe[Math.abs(e)%oe.length]}s(We,"selectColor");var ae={},z;function A(...t){process.stdout.write(`${N(t)}
|
|
6
|
+
`)}s(A,"log");var T={BOLD:"\x1B[1m",UNBOLD:"\x1B[2m",RED:"\x1B[31m",GREEN:"\x1B[32m",BLUE:"\x1B[34m",PURPLE:"\x1B[35m",GRAY:"\x1B[37m",ORANGE:"\x1B[38;5;208m",UNCOLOR:"\x1B[0m"};var le="\x1B[0m";function w(t,e){return`${e===8?T.ORANGE:`\x1B[3${e<8?e:`8;5;${e}`}m`}${t}${le}`}s(w,"colorString");function ce(t,e,r=!0){return t.map(n=>{if(typeof n!="string")return n;let o=e,f=le;return r&&(o=`${T.BOLD}${o}`,f=`${f}${T.BOLD}`),`${o}${n}${f}`})}s(ce,"colorStringList");var Ie="loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";function fe(t={}){Y==null&&(Y=He()),z==null&&(z=D());let{level:e=void 0,filter:r=void 0,colors:n=Y,levelHelper:o=!0,nameBrackets:f=!0,padding:p=0,fill:l=0,stack:a=!0,time:g=!0}=t,b=k(r),h=F(e);return i=>{if(!h(i.level)||!b(i.name))return;let c=D(),m=i.name||"",d=ae[m||""];d==null&&(d={color:We(m)},ae[m]=d);let P=J(c-z),u,x=f?`[${m}]`:m;if(p>0&&(x=x.padStart(p," ")),l>0&&(x=x.padEnd(l," ")),n){let v=d.color;u=[`${w(x,v)} | `],i.level===2?u.push(...ce(i.messages,T.ORANGE)):i.level===3?u.push(...ce(i.messages,T.RED)):u.push(...i.messages),g&&u.push(w(`+${P}`,v))}else u=[x,...i.messages],g&&u.push(`+${P}`);if(i.messages?.[0]===Ie&&console.log(se()),a){let v="";typeof a=="boolean"?(v=ie(["at Function.","at null.log (","at log ("],!0),v||(v=U(0,!0))):v=U(typeof a=="number"?a:3,!0),v&&u.push(w(`(${v})`,7))}let $="|",y=".";switch(i.level){case 1:o&&(u[0]=`I${$}${y} ${u[0]}`),A(...u);break;case 2:o&&(u[0]=(n?w(`W${$}${y}${y} `,8):`W${$}${y}${y} `)+u[0]),A(...u);break;case 3:o&&(u[0]=(n?w(`E${$}${y}${y}${y} `,1):`E${$}${y}${y}${y} `)+u[0]),A(...u);break;default:o&&(u[0]=`D${$} ${u[0]}`),A(...u);break}}}s(fe,"LoggerNodeHandler");function _e(){let t=[fe({padding:32,nameBrackets:!1})],e=process.env.ZEED_LOG??process.env.LOG,r=S(process.env.ZEED_TIME,!0),n=S(process.env.ZEED_PRETTY,!1);e&&t.unshift(te(W(e),{time:r,pretty:n})),E.setHandlers(t)}s(_e,"setupLogContextNode");_e();export{dt as CRYPTO_DEFAULT_ALG,ht as CRYPTO_DEFAULT_DERIVE_ALG,yt as CRYPTO_DEFAULT_DERIVE_ITERATIONS,mt as CRYPTO_DEFAULT_HASH_ALG,bi as Channel,Si as CryptoEncoder,Ar as DAY_MS,gn as Day,Hs as Emitter,I as FileStorage,Ei as JsonEncoder,vi as LocalChannel,O as LogLevel,ze as LogLevelAlias,E as Logger,Ye as LoggerConsoleHandler,Ce as LoggerContext,te as LoggerFileHandler,yi as LoggerMemoryHandler,fe as LoggerNodeHandler,Ki as MemStorage,$i as NoopEncoder,ui as PoolTaskIdConflictResolution,fi as PoolTaskState,Ti as PubSub,pi as SerialQueue,gt as Uint8ArrayToHexDump,ut as Uint8ArrayToJson,et as Uint8ArrayToString,ws as XRX,qe as _decodeUtf8Polyfill,Ve as _encodeUtf8Polyfill,sr as arrayAvg,ir as arrayBatches,Ct as arrayEmptyInPlace,Yt as arrayFilterInPlace,_t as arrayFlatten,Gt as arrayIntersection,Qt as arrayIsEqual,tr as arrayMax,rr as arrayMin,Wt as arrayMinus,er as arrayRandomElement,Kt as arrayRemoveElement,Ut as arraySetElement,qt as arrayShuffle,Xt as arrayShuffleForce,Vt as arrayShuffleInPlace,Zt as arraySorted,Jt as arraySortedNumbers,nr as arraySum,Mt as arraySymmetricDifference,zt as arrayToggleInPlace,It as arrayUnion,Ht as arrayUnique,Ft as avg,Pt as between,vs as cloneJsonObject,R as cloneObject,Rt as cmp,w as colorString,ce as colorStringList,jt as composeOrderby,or as createArray,xi as createLocalChannelPair,en as createPromise,Li as createPromiseProxy,Ps as csvParse,ks as csvParseToObjects,Ts as csvStringify,hn as dateStringToDays,dn as day,Rr as dayDay,Vr as dayDiff,Ir as dayFromAny,Gr as dayFromDate,Mr as dayFromDateGMT,zr as dayFromParts,Cr as dayFromString,Ur as dayFromTimestamp,Wr as dayFromToday,Xr as dayIterator,jr as dayMonth,Zr as dayMonthStart,Qr as dayOffset,qr as dayRange,Hr as dayToDate,_r as dayToDateGMT,Dr as dayToParts,Yr as dayToString,Kr as dayToTimestamp,Or as dayYear,Jr as dayYearStart,di as debounce,yn as decimal,xn as decimalCentsPart,bn as decimalFromCents,vn as decimalToCents,ur as decodeBase16,lr as decodeBase32,pr as decodeBase58,dr as decodeBase62,$t as decrypt,Dn as deepEqual,Wn as deepMerge,Hn as deepStripUndefinedInPlace,vt as deriveKeyPbkdf2,Ii as detect,bt as digest,bs as empty,fr as encodeBase16,cr as encodeBase32,gr as encodeBase58,mr as encodeBase62,gs as encodeQuery,xt as encrypt,os as endSortWeight,vo as ensureFolder,ms as ensureKey,ds as ensureKeyAsync,lt as equalBinary,In as escapeHTML,Zn as escapeRegExp,hr as estimateSizeForBase,G as exists,Ni as fetchBasic,Bi as fetchJson,Ri as fetchOptionsBasicAuth,Oi as fetchOptionsFormURLEncoded,ji as fetchOptionsJson,Ai as fetchText,Br as fixBrokenUth8String,pn as forEachDay,Es as forTimes,Nr as formatMessages,J as formatMilliseconds,at as fromBase64,ct as fromBase64String,vr as fromCamelCase,st as fromHex,no as getEnvVariableRelaxed,Wi as getGlobal,Me as getGlobalContext,Ws as getGlobalEmitter,Ze as getGlobalLogger,Ke as getNamespaceFilterString,Hi as getNavigator,Et as getSecureRandom,St as getSecureRandomIfPossible,U as getSourceLocation,ie as getSourceLocationByPrecedingPattern,se as getStack,je as getStackLlocationList,D as getTimestamp,Di as getWindow,rn as immediate,Sn as isArray,Nn as isBoolean,_i as isBrowser,Qn as isEven,Jn as isHalf,kn as isInteger,hi as isLocalHost,jn as isNotNull,An as isNull,Bn as isNullOrUndefined,Pn as isNumber,$n as isObject,Bt as isPrime,Nt as isPrimeRX,En as isPrimitive,fn as isPromise,Ln as isRecord,wn as isRecordPlain,Fn as isSafeInteger,Tn as isString,an as isTimeout,On as isUint8Array,Rn as isValue,rt as joinToUint8Array,Qe as jsonStringify,j as jsonStringifySafe,Je as jsonStringifySorted,ft as jsonToUint8Array,ys as last,_s as lazyListener,fs as linkifyPlainText,Kn as listDistinctUnion,Mn as listGroupBy,Un as listOfKey,Gn as listQuery,Ie as loggerStackTraceDebug,xs as memoize,$s as memoizeAsync,Is as messages,as as moveSortWeight,Ui as noop,Cn as objectIsEmpty,Yn as objectMap,zn as objectMergeDisposable,zi as parseArgs,Fi as parseBasicAuth,Gs as parseDate,Ue as parseLogLevel,Ot as parseOrderby,ps as parseQuery,Ji as pbcopy,Gi as platform,un as promisify,li as qid,Lt as randomBoolean,Tt as randomFloat,wt as randomInt,pt as randomUint8Array,$o as readText,Ls as regExpEscape,Ss as regExpString,xo as removeFolder,N as renderMessages,qn as roundDown,ts as roundHalfAwayFromZero,rs as roundHalfDown,ns as roundHalfEven,es as roundHalfOdd,ss as roundHalfTowardsZero,Xn as roundHalfUp,Vn as roundUp,At as seededRandom,ni as setUuidDefaultEncoding,so as setupEnv,hs as size,tn as sleep,cs as sortedItems,Dt as sortedOrderby,is as startSortWeight,xr as stringToBoolean,Er as stringToFloat,$r as stringToInteger,he as stringToPath,Xe as stringToUInt8Array,Xs as suid,qs as suidBytes,ti as suidBytesDate,ei as suidDate,kt as sum,mi as throttle,sn as timeout,nn as timeoutReached,on as timoutError,it as toBase64,ot as toBase64Url,Fr as toBool,C as toCamelCase,yr as toCapitalize,br as toCapitalizeWords,Tr as toFloat,nt as toHex,bo as toHumanReadableFilePath,us as toHumanReadableUrl,Pr as toInt,W as toPath,kr as toString,tt as toUint8Array,Z as toValidFilename,mn as today,cn as tryTimeout,ci as uname,_n as unescapeHTML,Ds as useAsyncMutex,ar as useBase,Bs as useDefer,Fs as useDispose,Ns as useDisposer,js as useEventListener,Mi as useExitHandler,Os as useInterval,F as useLevelFilter,wi as useMessageHub,Rs as useMutex,k as useNamespaceFilter,gi as usePool,Pi as usePubSub,ki as useRPC,ls as useSorted,As as useTimeout,si as uuid,ri as uuid32bit,zs as uuidB32,Ks as uuidB62,Ms as uuidBytes,ii as uuidDecode,Zs as uuidDecodeB32,Ys as uuidDecodeB62,Vs as uuidDecodeV4,oi as uuidEncode,Cs as uuidEncodeB32,Us as uuidEncodeB62,Qs as uuidEncodeV4,ai as uuidIsValid,Js as uuidv4,S as valueToBoolean,Lr as valueToFloat,Sr as valueToInteger,ye as valueToPath,wr as valueToString,ln as waitOn,Eo as writeText};
|
|
7
7
|
//# sourceMappingURL=index.node.js.map
|
package/dist/index.node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/node/args.ts","../src/node/clipboard.ts","../src/node/crypto.ts","../src/node/env.ts","../src/node/filestorage.ts","../src/node/fs.ts","../src/node/log-file.ts","../src/node/log-node.ts","../src/node/log-util.ts","../src/node/log-context-node.ts"],"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 const nameToAlias = Object.entries(alias).reduce((map, curr) => {\n let [name, values] = curr\n if (typeof values === 'string')\n values = [values]\n for (const value of values)\n map[normalize(value)] = normalize(name)\n\n return map\n }, {} as any)\n\n const opts: Record<string, any> = {\n _: [],\n }\n\n function setOpt(name: string, value: any) {\n if (opts[name] == null)\n opts[name] = value\n\n else if (typeof opts[name] === 'boolean')\n opts[name] = value\n\n else if (Array.isArray(opts[name]))\n opts[name].push(value)\n\n else\n opts[name] = [opts[name], value]\n }\n\n const argList = [...args]\n let arg: string | undefined\n\n // eslint-disable-next-line no-cond-assign\n while ((arg = argList.shift())) {\n let value: any\n if (/^--?/.test(arg)) {\n let key = arg.replace(/^--?/, '')\n if (arg.includes('=')) {\n const [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 }\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\n else\n opts[key] = [value]\n }\n else {\n setOpt(key, value)\n }\n }\n }\n else {\n opts._.push(arg)\n }\n }\n\n return opts\n}\n","/** Copy string to clipboard */\nexport function pbcopy(data: string) {\n return new Promise(\n (resolve, reject) => {\n import('child_process').then(({ spawn }) => {\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}\n","// https://nodejs.org/api/webcrypto.html\nimport nodeCrypto from 'crypto'\n\nexport {}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare namespace NodeJS {\n interface Global {\n crypto: Crypto\n }\n}\n\n// todo sideffects\ntry {\n if (\n typeof globalThis !== 'undefined'\n && typeof globalThis.crypto === 'undefined'\n && nodeCrypto\n && nodeCrypto.webcrypto\n ) {\n // @ts-expect-error this is a workaround for node environment\n globalThis.crypto = nodeCrypto.webcrypto\n }\n}\ncatch (err) {\n console.warn('Failed to polyfill webcrypto', err)\n}\n\n// // eslint-disable-next-line @typescript-eslint/no-unused-vars\n// declare namespace NodeJS {\n// interface Global {\n// crypto: Crypto\n// }\n// }\n\n// export async function getCrypto() {\n// if (!globalThis.crypto) {\n// try {\n// if (typeof globalThis !== 'undefined' && typeof globalThis.crypto === 'undefined') {\n// // https://nodejs.org/api/webcrypto.html\n// // @ts-expect-error this is a workaround for node environment\n// globalThis.crypto = await import('crypto')\n// }\n// }\n// catch (err) {\n// console.warn('Failed to polyfill webcrypto', err)\n// }\n// }\n// return globalThis.crypto\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 fs from 'fs'\nimport { resolve } from 'path'\nimport { Logger } from '../common/log'\nimport { LogLevel } from '../common/log-base'\n\nconst log = Logger('zeed:env', 'error')\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\ninterface 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 const obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n String(src)\n .split(NEWLINES_MATCH)\n .forEach((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 }\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 = '.',\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = ''): string {\n if (value == null)\n value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\nexport function getEnvVariableRelaxed(\n name: string,\n env = process.env,\n): string | undefined {\n if (env[name] != null)\n return env[name]\n name = name.toLowerCase()\n for (const [k, v] of Object.entries(env)) {\n if (k.toLowerCase() === name)\n return v\n }\n}\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)\n 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 const 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 }\n else {\n log.debug(`\"${key}\" is already defined and will not be overwritten`)\n }\n })\n return { parsed }\n }\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 readFileSync,\n readdirSync,\n rmSync,\n unlinkSync,\n writeFileSync,\n} from 'fs'\nimport { dirname, resolve } from 'path'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\nimport { Logger } from '../common/log'\nimport type { Json, ObjectStorage } from '../common/types'\n\nconst log = Logger('zeed:filestorage', 'error')\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 = 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 ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString\n = opt.objectFromString\n ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\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 }\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 const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\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 }\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 try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\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 }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n","import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { join as joinPath, normalize } 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 }\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\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 type { LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevel } from '../common/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\n\nconst namespaces: Record<string, any> = {}\n\nexport function LoggerFileHandler(path: string, opt: LogHandlerOptions = {}) {\n const {\n level = undefined,\n filter = undefined,\n time = true,\n pretty = false,\n } = opt\n path = resolve(process.cwd(), path)\n mkdirSync(dirname(path), { recursive: true })\n const stream = createWriteStream(path, { flags: 'a' })\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 timeNow = time ? `${new Date().toISOString()} ` : ''\n const name = msg.name || ''\n const ninfo = namespaces[name || '']\n if (ninfo == null)\n namespaces[name] = ninfo\n\n const args: string[] = [\n `[${name || '*'}]`,\n renderMessages(msg.messages, { pretty }),\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(`${timeNow}I|* `, ...args)\n break\n case LogLevel.warn:\n write(`${timeNow}W|** `, ...args)\n break\n case LogLevel.error:\n write(`${timeNow}E|***`, ...args)\n break\n default:\n write(`${timeNow}D| `, ...args)\n break\n }\n }\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 type { LogHandler, LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevel } from '../common/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../common/time'\nimport { getSourceLocation, getSourceLocationByPrecedingPattern, getStack } from './log-util'\n\nfunction shouldUseColor(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_COLOR, tty.isatty(process.stdout.fd))\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseColor: boolean | undefined\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\nconst namespaces: Record<string, any> = {}\n\nlet startTime: number | undefined\n\nfunction log(...args: any[]) {\n process.stdout.write(`${renderMessages(args)}\\n`)\n}\n\n// const _browserStyleMap = {\n// [BOLD]: { \"font-weight\": \"bold\" },\n// [UNBOLD]: { \"font-weight\": \"normal\" },\n// [BLUE]: { color: \"blue\" },\n// [GREEN]: { color: \"green\" },\n// [GREY]: { color: \"grey\" },\n// [RED]: { color: \"red\" },\n// [PURPLE]: { color: \"purple\" },\n// [ORANGE]: { color: \"orange\" },\n// [UNCOLOR]: { 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(text: string, colorCode: number) {\n const colorStart = colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : `\\u001B[3${colorCode < 8 ? colorCode : `8;5;${colorCode}`}m`\n return `${colorStart}${text}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold = true,\n) {\n return list.map((value) => {\n if (typeof value !== 'string')\n 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 = 'loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485'\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n if (defaultUseColor == null)\n defaultUseColor = shouldUseColor()\n\n if (startTime == null)\n startTime = getTimestamp()\n\n const {\n level = undefined,\n filter = undefined,\n colors = defaultUseColor,\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = true,\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 const timeNow = getTimestamp()\n const 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 timeDiffString = formatMilliseconds(timeNow - startTime!)\n\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0)\n displayName = displayName.padStart(padding, ' ')\n\n if (fill > 0)\n displayName = displayName.padEnd(fill, ' ')\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 if (time)\n args.push(colorString(`+${timeDiffString}`, c))\n }\n else {\n args = [displayName, ...msg.messages]\n if (time)\n args.push(`+${timeDiffString}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n // eslint-disable-next-line no-console\n console.log(getStack())\n }\n\n if (stack) {\n let line = ''\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 const sep = '|'\n const charLevel = '.'\n\n switch (msg.level) {\n case LogLevel.info:\n if (levelHelper)\n args[0] = `I${sep}${charLevel} ${args[0]}`\n log(...args)\n break\n case LogLevel.warn:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`W${sep}${charLevel}${charLevel} `, COLOR.ORANGE)\n : `W${sep}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n case LogLevel.error:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`E${sep}${charLevel}${charLevel}${charLevel} `, COLOR.RED)\n : `E${sep}${charLevel}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n default:\n if (levelHelper)\n args[0] = `D${sep} ${args[0]}`\n log(...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')\n return []\n // console.log(\"stack\", stack)\n return (\n stack\n ?.split('\\n')\n ?.map((rawLine) => {\n const 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(')'))\n line = line.slice(0, -1)\n return line\n }\n return null\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 const fileURL = 'file://'\n if (path.startsWith(fileURL))\n return path.substr(fileURL.length)\n\n if (cwd && path.startsWith(cwd))\n return path.substr(cwd.length + 1)\n\n if (home && path.startsWith(home))\n path = `~/${path.substr(home.length + 1)}`\n\n return path\n}\n\nfunction extractFileInfo(stackLine: string): string {\n const 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(')'))\n 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 const stack = new Error('stack').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').stack || ''\n}\n\nexport function getSourceLocationByPrecedingPattern(\n patterns: string[],\n stripCwd = true,\n) {\n let line = ''\n const stack = new Error('stack').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 return line\n}\n","import { Logger } from '../common/log'\nimport { toPath } from './env'\nimport { LoggerFileHandler } from './log-file'\nimport { LoggerNodeHandler } from './log-node'\n\nfunction setupLogContextNode() {\n const handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n const logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n if (logFilePath)\n handlers.unshift(LoggerFileHandler(toPath(logFilePath)))\n\n Logger.setHandlers(handlers)\n}\n\n// todo sideffects\nsetupLogContextNode()\n"],"mappings":"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","names":["parseArgs","config","args","alias","normalize","toCamelCase","booleanArgs","listArgs","numberArgs","nameToAlias","map","curr","name","values","value","opts","setOpt","__name","argList","arg","key","valuePart","pbcopy","data","resolve","reject","spawn","proc","err","__name","nodeCrypto","nodeCrypto","err","fs","resolve","log","Logger","NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","parse","src","_options","obj","line","idx","keyValueArr","key","val","end","isDoubleQuoted","__name","stringToPath","value","defaultValue","resolve","valueToPath","toPath","getEnvVariableRelaxed","name","env","k","v","setupEnv","options","dotenvPath","encoding","debug","parsedEnv","fs","parsedEnvLocal","parsed","e","mkdirSync","readFileSync","readdirSync","rmSync","unlinkSync","writeFileSync","dirname","resolve","log","Logger","FileStorage","opt","resolve","data","jsonStringifySafe","err","toValidFilename","key","value","cloneObject","path","mkdirSync","dirname","writeFileSync","readFileSync","index","unlinkSync","rmSync","readdirSync","item","keys","__name","mkdir","readFile","rm","stat","writeFile","joinPath","normalize","toHumanReadableFilePath","path","p","normalize","h","__name","exists","stat","ensureFolder","parts","joinPath","mkdir","removeFolder","rm","readText","readFile","writeText","content","writeFile","createWriteStream","mkdirSync","dirname","resolve","namespaces","LoggerFileHandler","path","opt","level","filter","time","pretty","resolve","mkdirSync","dirname","stream","createWriteStream","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeNow","name","ninfo","args","renderMessages","write","__name","tty","resolve","getStackLlocationList","stack","rawLine","m","line","v","__name","cwd","resolve","home","pathStripCwd","path","fileURL","extractFileInfo","stackLine","getSourceLocation","level","stripCwd","getStack","getSourceLocationByPrecedingPattern","patterns","lines","l","index","p","shouldUseColor","valueToBoolean","tty","__name","defaultUseColor","colors","selectColor","namespace","hash","i","namespaces","startTime","log","args","renderMessages","TTY_STYLE","colorEnd","colorString","text","colorCode","TTY_STYLE","__name","colorStringList","list","style","bold","value","start","end","loggerStackTraceDebug","LoggerNodeHandler","opt","defaultUseColor","shouldUseColor","startTime","getTimestamp","level","filter","colors","levelHelper","nameBrackets","padding","fill","stack","time","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeNow","name","ninfo","namespaces","selectColor","timeDiffString","formatMilliseconds","args","displayName","c","getStack","line","getSourceLocationByPrecedingPattern","getSourceLocation","sep","charLevel","log","setupLogContextNode","handlers","LoggerNodeHandler","logFilePath","LoggerFileHandler","toPath","Logger","__name"]}
|
|
1
|
+
{"version":3,"sources":["../src/node/args.ts","../src/node/clipboard.ts","../src/node/crypto.ts","../src/node/env.ts","../src/node/filestorage.ts","../src/node/fs.ts","../src/node/log-file.ts","../src/node/log-node.ts","../src/node/log-util.ts","../src/node/log-context-node.ts"],"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 const nameToAlias = Object.entries(alias).reduce((map, curr) => {\n let [name, values] = curr\n if (typeof values === 'string')\n values = [values]\n for (const value of values)\n map[normalize(value)] = normalize(name)\n\n return map\n }, {} as any)\n\n const opts: Record<string, any> = {\n _: [],\n }\n\n function setOpt(name: string, value: any) {\n if (opts[name] == null)\n opts[name] = value\n\n else if (typeof opts[name] === 'boolean')\n opts[name] = value\n\n else if (Array.isArray(opts[name]))\n opts[name].push(value)\n\n else\n opts[name] = [opts[name], value]\n }\n\n const argList = [...args]\n let arg: string | undefined\n\n // eslint-disable-next-line no-cond-assign\n while ((arg = argList.shift())) {\n let value: any\n if (/^--?/.test(arg)) {\n let key = arg.replace(/^--?/, '')\n if (arg.includes('=')) {\n const [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 }\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\n else\n opts[key] = [value]\n }\n else {\n setOpt(key, value)\n }\n }\n }\n else {\n opts._.push(arg)\n }\n }\n\n return opts\n}\n","/** Copy string to clipboard */\nexport function pbcopy(data: string) {\n return new Promise(\n (resolve, reject) => {\n import('child_process').then(({ spawn }) => {\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 }).catch(() => {})\n })\n}\n","// https://nodejs.org/api/webcrypto.html\nimport nodeCrypto from 'crypto'\n\nexport {}\n\n// declare namespace NodeJS {\n// interface Global {\n// crypto: Crypto\n// }\n// }\n\n// todo sideffects\ntry {\n if (\n typeof globalThis !== 'undefined'\n && typeof globalThis.crypto === 'undefined'\n && nodeCrypto\n && nodeCrypto.webcrypto\n ) {\n // @ts-expect-error this is a workaround for node environment\n globalThis.crypto = nodeCrypto.webcrypto\n }\n}\ncatch (err) {\n console.warn('Failed to polyfill webcrypto', err)\n}\n\n// // eslint-disable-next-line @typescript-eslint/no-unused-vars\n// declare namespace NodeJS {\n// interface Global {\n// crypto: Crypto\n// }\n// }\n\n// export async function getCrypto() {\n// if (!globalThis.crypto) {\n// try {\n// if (typeof globalThis !== 'undefined' && typeof globalThis.crypto === 'undefined') {\n// // https://nodejs.org/api/webcrypto.html\n// // @ts-expect-error this is a workaround for node environment\n// globalThis.crypto = await import('crypto')\n// }\n// }\n// catch (err) {\n// console.warn('Failed to polyfill webcrypto', err)\n// }\n// }\n// return globalThis.crypto\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 fs from 'fs'\nimport { resolve } from 'path'\nimport { Logger } from '../common/log'\nimport { LogLevel } from '../common/log-base'\n\nconst log = Logger('zeed:env', 'error')\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\ninterface 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 const obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n String(src)\n .split(NEWLINES_MATCH)\n .forEach((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 }\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 = '.',\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = ''): string {\n if (value == null)\n value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\nexport function getEnvVariableRelaxed(\n name: string,\n env = process.env,\n): string | undefined {\n if (env[name] != null)\n return env[name]\n name = name.toLowerCase()\n for (const [k, v] of Object.entries(env)) {\n if (k.toLowerCase() === name)\n return v\n }\n}\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)\n 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 const 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 }\n else {\n log.debug(`\"${key}\" is already defined and will not be overwritten`)\n }\n })\n return { parsed }\n }\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 readFileSync,\n readdirSync,\n rmSync,\n unlinkSync,\n writeFileSync,\n} from 'fs'\nimport { dirname, resolve } from 'path'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\nimport { Logger } from '../common/log'\nimport type { Json, ObjectStorage } from '../common/types'\n\nconst log = Logger('zeed:filestorage', 'error')\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 = 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 ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString\n = opt.objectFromString\n ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\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 }\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 const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\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 }\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 try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\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 }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n","import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { join as joinPath, normalize } 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 }\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\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 type { LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevel } from '../common/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\n\nconst namespaces: Record<string, any> = {}\n\nexport function LoggerFileHandler(path: string, opt: LogHandlerOptions = {}) {\n const {\n level = undefined,\n filter = undefined,\n time = true,\n pretty = false,\n } = opt\n path = resolve(process.cwd(), path)\n mkdirSync(dirname(path), { recursive: true })\n const stream = createWriteStream(path, { flags: 'a' })\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 timeNow = time ? `${new Date().toISOString()} ` : ''\n const name = msg.name || ''\n const ninfo = namespaces[name || '']\n if (ninfo == null)\n namespaces[name] = ninfo\n\n const args: string[] = [\n `[${name || '*'}]`,\n renderMessages(msg.messages, { pretty }),\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(`${timeNow}I|* `, ...args)\n break\n case LogLevel.warn:\n write(`${timeNow}W|** `, ...args)\n break\n case LogLevel.error:\n write(`${timeNow}E|***`, ...args)\n break\n default:\n write(`${timeNow}D| `, ...args)\n break\n }\n }\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 type { LogHandler, LogHandlerOptions, LogMessage } from '../common/log-base'\nimport { LogLevel } from '../common/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../common/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../common/time'\nimport { getSourceLocation, getSourceLocationByPrecedingPattern, getStack } from './log-util'\n\nfunction shouldUseColor(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_COLOR, tty.isatty(process.stdout.fd))\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseColor: boolean | undefined\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\nconst namespaces: Record<string, any> = {}\n\nlet startTime: number | undefined\n\nfunction log(...args: any[]) {\n process.stdout.write(`${renderMessages(args)}\\n`)\n}\n\n// const _browserStyleMap = {\n// [BOLD]: { \"font-weight\": \"bold\" },\n// [UNBOLD]: { \"font-weight\": \"normal\" },\n// [BLUE]: { color: \"blue\" },\n// [GREEN]: { color: \"green\" },\n// [GREY]: { color: \"grey\" },\n// [RED]: { color: \"red\" },\n// [PURPLE]: { color: \"purple\" },\n// [ORANGE]: { color: \"orange\" },\n// [UNCOLOR]: { 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(text: string, colorCode: number) {\n const colorStart = colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : `\\u001B[3${colorCode < 8 ? colorCode : `8;5;${colorCode}`}m`\n return `${colorStart}${text}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold = true,\n) {\n return list.map((value) => {\n if (typeof value !== 'string')\n 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 = 'loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485'\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n if (defaultUseColor == null)\n defaultUseColor = shouldUseColor()\n\n if (startTime == null)\n startTime = getTimestamp()\n\n const {\n level = undefined,\n filter = undefined,\n colors = defaultUseColor,\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = true,\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 const timeNow = getTimestamp()\n const 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 timeDiffString = formatMilliseconds(timeNow - startTime!)\n\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0)\n displayName = displayName.padStart(padding, ' ')\n\n if (fill > 0)\n displayName = displayName.padEnd(fill, ' ')\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 if (time)\n args.push(colorString(`+${timeDiffString}`, c))\n }\n else {\n args = [displayName, ...msg.messages]\n if (time)\n args.push(`+${timeDiffString}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n // eslint-disable-next-line no-console\n console.log(getStack())\n }\n\n if (stack) {\n let line = ''\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 const sep = '|'\n const charLevel = '.'\n\n switch (msg.level) {\n case LogLevel.info:\n if (levelHelper)\n args[0] = `I${sep}${charLevel} ${args[0]}`\n log(...args)\n break\n case LogLevel.warn:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`W${sep}${charLevel}${charLevel} `, COLOR.ORANGE)\n : `W${sep}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n case LogLevel.error:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`E${sep}${charLevel}${charLevel}${charLevel} `, COLOR.RED)\n : `E${sep}${charLevel}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n default:\n if (levelHelper)\n args[0] = `D${sep} ${args[0]}`\n log(...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')\n return []\n // console.log(\"stack\", stack)\n return (\n stack\n ?.split('\\n')\n ?.map((rawLine) => {\n const 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(')'))\n line = line.slice(0, -1)\n return line\n }\n return null\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 const fileURL = 'file://'\n if (path.startsWith(fileURL))\n return path.substr(fileURL.length)\n\n if (cwd && path.startsWith(cwd))\n return path.substr(cwd.length + 1)\n\n if (home && path.startsWith(home))\n path = `~/${path.substr(home.length + 1)}`\n\n return path\n}\n\nfunction extractFileInfo(stackLine: string): string {\n const 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(')'))\n 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 const stack = new Error('stack').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').stack || ''\n}\n\nexport function getSourceLocationByPrecedingPattern(\n patterns: string[],\n stripCwd = true,\n) {\n let line = ''\n const stack = new Error('stack').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 return line\n}\n","import { valueToBoolean } from '../common'\nimport { Logger } from '../common/log'\nimport { toPath } from './env'\nimport { LoggerFileHandler } from './log-file'\nimport { LoggerNodeHandler } from './log-node'\n\nfunction setupLogContextNode() {\n const handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n const logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n const time = valueToBoolean(process.env.ZEED_TIME, true)\n const pretty = valueToBoolean(process.env.ZEED_PRETTY, false)\n if (logFilePath)\n handlers.unshift(LoggerFileHandler(toPath(logFilePath), { time, pretty }))\n\n Logger.setHandlers(handlers)\n}\n\n// todo sideffects\nsetupLogContextNode()\n"],"mappings":"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","names":["parseArgs","config","args","alias","normalize","toCamelCase","booleanArgs","listArgs","numberArgs","nameToAlias","map","curr","name","values","value","opts","setOpt","__name","argList","arg","key","valuePart","pbcopy","data","resolve","reject","spawn","proc","err","__name","nodeCrypto","nodeCrypto","err","fs","resolve","log","Logger","NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","parse","src","_options","obj","line","idx","keyValueArr","key","val","end","isDoubleQuoted","__name","stringToPath","value","defaultValue","resolve","valueToPath","toPath","getEnvVariableRelaxed","name","env","k","v","setupEnv","options","dotenvPath","encoding","debug","parsedEnv","fs","parsedEnvLocal","parsed","e","mkdirSync","readFileSync","readdirSync","rmSync","unlinkSync","writeFileSync","dirname","resolve","log","Logger","FileStorage","opt","resolve","data","jsonStringifySafe","err","toValidFilename","key","value","cloneObject","path","mkdirSync","dirname","writeFileSync","readFileSync","index","unlinkSync","rmSync","readdirSync","item","keys","__name","mkdir","readFile","rm","stat","writeFile","joinPath","normalize","toHumanReadableFilePath","path","p","normalize","h","__name","exists","stat","ensureFolder","parts","joinPath","mkdir","removeFolder","rm","readText","readFile","writeText","content","writeFile","createWriteStream","mkdirSync","dirname","resolve","namespaces","LoggerFileHandler","path","opt","level","filter","time","pretty","resolve","mkdirSync","dirname","stream","createWriteStream","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeNow","name","ninfo","args","renderMessages","write","__name","tty","resolve","getStackLlocationList","stack","rawLine","m","line","v","__name","cwd","resolve","home","pathStripCwd","path","fileURL","extractFileInfo","stackLine","getSourceLocation","level","stripCwd","getStack","getSourceLocationByPrecedingPattern","patterns","lines","l","index","p","shouldUseColor","valueToBoolean","tty","__name","defaultUseColor","colors","selectColor","namespace","hash","i","namespaces","startTime","log","args","renderMessages","TTY_STYLE","colorEnd","colorString","text","colorCode","TTY_STYLE","__name","colorStringList","list","style","bold","value","start","end","loggerStackTraceDebug","LoggerNodeHandler","opt","defaultUseColor","shouldUseColor","startTime","getTimestamp","level","filter","colors","levelHelper","nameBrackets","padding","fill","stack","time","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeNow","name","ninfo","namespaces","selectColor","timeDiffString","formatMilliseconds","args","displayName","c","getStack","line","getSourceLocationByPrecedingPattern","getSourceLocation","sep","charLevel","log","setupLogContextNode","handlers","LoggerNodeHandler","logFilePath","time","valueToBoolean","pretty","LoggerFileHandler","toPath","Logger","__name"]}
|
|
@@ -1052,6 +1052,8 @@ declare const getTimestamp: () => number;
|
|
|
1052
1052
|
declare function formatMilliseconds(ms: number): string;
|
|
1053
1053
|
declare function parseDate(...dateCandidates: (string | Date)[]): Date | undefined;
|
|
1054
1054
|
|
|
1055
|
+
declare const noop: () => void;
|
|
1056
|
+
|
|
1055
1057
|
declare function uuidBytes(): Uint8Array;
|
|
1056
1058
|
declare function uuidB62(bytes?: Uint8Array): string;
|
|
1057
1059
|
declare function uuidEncodeB62(bytes: Uint8Array): string;
|
|
@@ -1092,4 +1094,4 @@ declare function uuidIsValid(uuid: string): boolean;
|
|
|
1092
1094
|
declare function uname(name?: string): string;
|
|
1093
1095
|
declare function qid(): string;
|
|
1094
1096
|
|
|
1095
|
-
export { _encodeUtf8Polyfill as $, arraySortedNumbers as A, arrayIsEqual as B, CRYPTO_DEFAULT_HASH_ALG as C, arrayShuffleInPlace as D, arrayShuffle as E, arrayShuffleForce as F, arrayRandomElement as G, arrayMax as H, arrayMin as I, Json as J, arraySum as K, LogHandlerOptions as L, arrayAvg as M, arrayBatches as N, ObjectStorage as O, createArray as P, encodeBase32 as Q, decodeBase32 as R, useBase as S, encodeBase16 as T, decodeBase16 as U, encodeBase58 as V, decodeBase58 as W, encodeBase62 as X, decodeBase62 as Y, estimateSizeForBase as Z, BinInput as _, LogHandler as a, dateStringToDays as a$, _decodeUtf8Polyfill as a0, stringToUInt8Array as a1, Uint8ArrayToString as a2, toUint8Array as a3, joinToUint8Array as a4, toHex as a5, fromHex as a6, toBase64 as a7, toBase64Url as a8, fromBase64 as a9, DayInput as aA, dayYear as aB, dayMonth as aC, dayDay as aD, dayToParts as aE, dayToDate as aF, dayFromToday as aG, dayFromAny as aH, dayToDateGMT as aI, dayFromDate as aJ, dayFromDateGMT as aK, dayToTimestamp as aL, dayFromTimestamp as aM, dayToString as aN, dayFromParts as aO, dayFromString as aP, dayMonthStart as aQ, dayYearStart as aR, dayOffset as aS, dayDiff as aT, dayRange as aU, dayIterator as aV, DayInputLegacy as aW, Day as aX, forEachDay as aY, today as aZ, day as a_, fromBase64String as aa, equalBinary as ab, jsonToUint8Array as ac, Uint8ArrayToJson as ad, Uint8ArrayToHexDump as ae, toCamelCase as af, toCapitalize as ag, toCapitalizeWords as ah, fromCamelCase as ai, stringToBoolean as aj, stringToInteger as ak, stringToFloat as al, valueToBoolean as am, valueToInteger as an, valueToFloat as ao, valueToString as ap, toFloat as aq, toInt as ar, toString as as, toBool as at, RenderMessagesOptions as au, formatMessages as av, renderMessages as aw, fixBrokenUth8String as ax, DAY_MS as ay, DayValue as az, LogLevelAliasType as b, roundHalfAwayFromZero as b$, DecimalValue as b0, DecimalInput as b1, decimal as b2, decimalFromCents as b3, decimalToCents as b4, decimalCentsPart as b5, deepEqual as b6, deepStripUndefinedInPlace as b7, deepMerge as b8, escapeHTML as b9, getSecureRandom as bA, getSecureRandomIfPossible as bB, randomBoolean as bC, randomInt as bD, randomFloat as bE, between as bF, sum as bG, avg as bH, isPrimeRX as bI, isPrime as bJ, seededRandom as bK, objectMap as bL, objectMergeDisposable as bM, objectIsEmpty as bN, parseOrderby as bO, composeOrderby as bP, cmp as bQ, sortedOrderby as bR, toValidFilename as bS, escapeRegExp as bT, RoundingMode as bU, isHalf as bV, isEven as bW, roundUp as bX, roundDown as bY, roundHalfUp as bZ, roundHalfOdd as b_, unescapeHTML as ba, Primitive as bb, isObject as bc, isPrimitive as bd, isArray as be, isRecord as bf, isRecordPlain as bg, isString as bh, isNumber as bi, isInteger as bj, isSafeInteger as bk, isBoolean as bl, isNullOrUndefined as bm, isNull as bn, isUint8Array as bo, isNotNull as bp, isValue as bq, jsonStringifySorted as br, jsonStringifySafe as bs, jsonStringify as bt, FilterFunction as bu, MapperFunction as bv, listQuery as bw, listGroupBy as bx, listDistinctUnion as by, listOfKey as bz, LoggerInterface as c, throttle as c$, roundHalfDown as c0, roundHalfEven as c1, roundHalfTowardsZero as c2, SortableItem as c3, startSortWeight as c4, endSortWeight as c5, moveSortWeight as c6, sortedItems as c7, useSorted as c8, linkifyPlainText as c9, useEventListener as cA, Mutex as cB, AsyncMutex as cC, useMutex as cD, useAsyncMutex as cE, PoolTaskFn as cF, PoolTaskState as cG, PoolTask as cH, PoolTaskIdConflictResolution as cI, PoolTaskEvents as cJ, usePool as cK, Pool as cL, createPromise as cM, sleep as cN, immediate as cO, timeoutReached as cP, timeout as cQ, timoutError as cR, isTimeout as cS, tryTimeout as cT, waitOn as cU, isPromise as cV, promisify as cW, AsyncReturnType as cX, TaskFn as cY, TaskEvents as cZ, SerialQueue as c_, toHumanReadableUrl as ca, encodeQuery as cb, parseQuery as cc, ensureKey as cd, ensureKeyAsync as ce, size as cf, last as cg, empty as ch, cloneObject as ci, cloneJsonObject as cj, memoize as ck, memoizeAsync as cl, forTimes as cm, regExpString as cn, regExpEscape as co, XRX as cp, DisposerFunction as cq, Disposer as cr, Disposable as cs, useDispose as ct, UseDispose as cu, useDisposer as cv, useDefer as cw, UseDefer as cx, useTimeout as cy, useInterval as cz, CRYPTO_DEFAULT_ALG as d, detect as d$, debounce as d0, getGlobalContext as d1, isLocalHost as d2, getGlobalLogger as d3, Logger as d4, LogLevel as d5, LogLevelAlias as d6, LogLevelAliasKey as d7, LogMessage as d8, LoggerContextInterface as d9, Message as dA, MessagesOptions as dB, MessagesDefaultMethods as dC, MessagesMethods as dD, MessageDefinitions as dE, MessageHub as dF, createPromiseProxy as dG, useMessageHub as dH, PubSub as dI, usePubSub as dJ, ArgumentsType as dK, ReturnType$1 as dL, RPCOptions as dM, RPCFn as dN, RPCReturn as dO, useRPC as dP, httpMethod as dQ, parseBasicAuth as dR, fetchBasic as dS, fetchJson as dT, fetchText as dU, fetchOptionsFormURLEncoded as dV, fetchOptionsJson as dW, fetchOptionsBasicAuth as dX, getWindow as dY, getNavigator as dZ, getGlobal as d_, LoggerContext as da, LoggerConsoleHandler as db, getNamespaceFilterString as dc, useNamespaceFilter as dd, parseLogLevel as de, useLevelFilter as df, LoggerMemoryHandler as dg, ChannelMessageEvent as dh, Channel as di, LocalChannel as dj, createLocalChannelPair as dk, EmitterHandler as dl, EmitterAllHandler as dm, ListenerSignature as dn, DefaultListener as dp, Emitter as dq, getGlobalEmitter as dr, messages as ds, lazyListener as dt, Encoder as du, NoopEncoder as dv, JsonEncoder as dw, CryptoEncoder as dx, MessageAction as dy, MessageResult as dz, CRYPTO_DEFAULT_DERIVE_ALG as e, isBrowser as e0, platform as e1, useExitHandler as e2, MemStorageOptions as e3, MemStorage as e4, getTimestamp as e5, formatMilliseconds as e6, parseDate as e7, NestedArray as e8,
|
|
1097
|
+
export { _encodeUtf8Polyfill as $, arraySortedNumbers as A, arrayIsEqual as B, CRYPTO_DEFAULT_HASH_ALG as C, arrayShuffleInPlace as D, arrayShuffle as E, arrayShuffleForce as F, arrayRandomElement as G, arrayMax as H, arrayMin as I, Json as J, arraySum as K, LogHandlerOptions as L, arrayAvg as M, arrayBatches as N, ObjectStorage as O, createArray as P, encodeBase32 as Q, decodeBase32 as R, useBase as S, encodeBase16 as T, decodeBase16 as U, encodeBase58 as V, decodeBase58 as W, encodeBase62 as X, decodeBase62 as Y, estimateSizeForBase as Z, BinInput as _, LogHandler as a, dateStringToDays as a$, _decodeUtf8Polyfill as a0, stringToUInt8Array as a1, Uint8ArrayToString as a2, toUint8Array as a3, joinToUint8Array as a4, toHex as a5, fromHex as a6, toBase64 as a7, toBase64Url as a8, fromBase64 as a9, DayInput as aA, dayYear as aB, dayMonth as aC, dayDay as aD, dayToParts as aE, dayToDate as aF, dayFromToday as aG, dayFromAny as aH, dayToDateGMT as aI, dayFromDate as aJ, dayFromDateGMT as aK, dayToTimestamp as aL, dayFromTimestamp as aM, dayToString as aN, dayFromParts as aO, dayFromString as aP, dayMonthStart as aQ, dayYearStart as aR, dayOffset as aS, dayDiff as aT, dayRange as aU, dayIterator as aV, DayInputLegacy as aW, Day as aX, forEachDay as aY, today as aZ, day as a_, fromBase64String as aa, equalBinary as ab, jsonToUint8Array as ac, Uint8ArrayToJson as ad, Uint8ArrayToHexDump as ae, toCamelCase as af, toCapitalize as ag, toCapitalizeWords as ah, fromCamelCase as ai, stringToBoolean as aj, stringToInteger as ak, stringToFloat as al, valueToBoolean as am, valueToInteger as an, valueToFloat as ao, valueToString as ap, toFloat as aq, toInt as ar, toString as as, toBool as at, RenderMessagesOptions as au, formatMessages as av, renderMessages as aw, fixBrokenUth8String as ax, DAY_MS as ay, DayValue as az, LogLevelAliasType as b, roundHalfAwayFromZero as b$, DecimalValue as b0, DecimalInput as b1, decimal as b2, decimalFromCents as b3, decimalToCents as b4, decimalCentsPart as b5, deepEqual as b6, deepStripUndefinedInPlace as b7, deepMerge as b8, escapeHTML as b9, getSecureRandom as bA, getSecureRandomIfPossible as bB, randomBoolean as bC, randomInt as bD, randomFloat as bE, between as bF, sum as bG, avg as bH, isPrimeRX as bI, isPrime as bJ, seededRandom as bK, objectMap as bL, objectMergeDisposable as bM, objectIsEmpty as bN, parseOrderby as bO, composeOrderby as bP, cmp as bQ, sortedOrderby as bR, toValidFilename as bS, escapeRegExp as bT, RoundingMode as bU, isHalf as bV, isEven as bW, roundUp as bX, roundDown as bY, roundHalfUp as bZ, roundHalfOdd as b_, unescapeHTML as ba, Primitive as bb, isObject as bc, isPrimitive as bd, isArray as be, isRecord as bf, isRecordPlain as bg, isString as bh, isNumber as bi, isInteger as bj, isSafeInteger as bk, isBoolean as bl, isNullOrUndefined as bm, isNull as bn, isUint8Array as bo, isNotNull as bp, isValue as bq, jsonStringifySorted as br, jsonStringifySafe as bs, jsonStringify as bt, FilterFunction as bu, MapperFunction as bv, listQuery as bw, listGroupBy as bx, listDistinctUnion as by, listOfKey as bz, LoggerInterface as c, throttle as c$, roundHalfDown as c0, roundHalfEven as c1, roundHalfTowardsZero as c2, SortableItem as c3, startSortWeight as c4, endSortWeight as c5, moveSortWeight as c6, sortedItems as c7, useSorted as c8, linkifyPlainText as c9, useEventListener as cA, Mutex as cB, AsyncMutex as cC, useMutex as cD, useAsyncMutex as cE, PoolTaskFn as cF, PoolTaskState as cG, PoolTask as cH, PoolTaskIdConflictResolution as cI, PoolTaskEvents as cJ, usePool as cK, Pool as cL, createPromise as cM, sleep as cN, immediate as cO, timeoutReached as cP, timeout as cQ, timoutError as cR, isTimeout as cS, tryTimeout as cT, waitOn as cU, isPromise as cV, promisify as cW, AsyncReturnType as cX, TaskFn as cY, TaskEvents as cZ, SerialQueue as c_, toHumanReadableUrl as ca, encodeQuery as cb, parseQuery as cc, ensureKey as cd, ensureKeyAsync as ce, size as cf, last as cg, empty as ch, cloneObject as ci, cloneJsonObject as cj, memoize as ck, memoizeAsync as cl, forTimes as cm, regExpString as cn, regExpEscape as co, XRX as cp, DisposerFunction as cq, Disposer as cr, Disposable as cs, useDispose as ct, UseDispose as cu, useDisposer as cv, useDefer as cw, UseDefer as cx, useTimeout as cy, useInterval as cz, CRYPTO_DEFAULT_ALG as d, detect as d$, debounce as d0, getGlobalContext as d1, isLocalHost as d2, getGlobalLogger as d3, Logger as d4, LogLevel as d5, LogLevelAlias as d6, LogLevelAliasKey as d7, LogMessage as d8, LoggerContextInterface as d9, Message as dA, MessagesOptions as dB, MessagesDefaultMethods as dC, MessagesMethods as dD, MessageDefinitions as dE, MessageHub as dF, createPromiseProxy as dG, useMessageHub as dH, PubSub as dI, usePubSub as dJ, ArgumentsType as dK, ReturnType$1 as dL, RPCOptions as dM, RPCFn as dN, RPCReturn as dO, useRPC as dP, httpMethod as dQ, parseBasicAuth as dR, fetchBasic as dS, fetchJson as dT, fetchText as dU, fetchOptionsFormURLEncoded as dV, fetchOptionsJson as dW, fetchOptionsBasicAuth as dX, getWindow as dY, getNavigator as dZ, getGlobal as d_, LoggerContext as da, LoggerConsoleHandler as db, getNamespaceFilterString as dc, useNamespaceFilter as dd, parseLogLevel as de, useLevelFilter as df, LoggerMemoryHandler as dg, ChannelMessageEvent as dh, Channel as di, LocalChannel as dj, createLocalChannelPair as dk, EmitterHandler as dl, EmitterAllHandler as dm, ListenerSignature as dn, DefaultListener as dp, Emitter as dq, getGlobalEmitter as dr, messages as ds, lazyListener as dt, Encoder as du, NoopEncoder as dv, JsonEncoder as dw, CryptoEncoder as dx, MessageAction as dy, MessageResult as dz, CRYPTO_DEFAULT_DERIVE_ALG as e, isBrowser as e0, platform as e1, useExitHandler as e2, MemStorageOptions as e3, MemStorage as e4, getTimestamp as e5, formatMilliseconds as e6, parseDate as e7, NestedArray as e8, noop as e9, uuidBytes as ea, uuidB62 as eb, uuidEncodeB62 as ec, uuidDecodeB62 as ed, uuidB32 as ee, uuidEncodeB32 as ef, uuidDecodeB32 as eg, uuidv4 as eh, uuidEncodeV4 as ei, uuidDecodeV4 as ej, suidBytes as ek, suid as el, suidDate as em, suidBytesDate as en, uuid32bit as eo, setUuidDefaultEncoding as ep, uuid as eq, uuidDecode as er, uuidEncode as es, uuidIsValid as et, uname as eu, qid as ev, CRYPTO_DEFAULT_DERIVE_ITERATIONS as f, digest as g, deriveKeyPbkdf2 as h, encrypt as i, decrypt as j, csvStringify as k, csvParse as l, csvParseToObjects as m, arrayUnique as n, arrayMinus as o, arrayUnion as p, arrayFlatten as q, randomUint8Array as r, arrayIntersection as s, arraySymmetricDifference as t, arrayRemoveElement as u, arraySetElement as v, arrayFilterInPlace as w, arrayToggleInPlace as x, arrayEmptyInPlace as y, arraySorted as z };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zeed",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.2",
|
|
5
5
|
"description": "🌱 Simple foundation library",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Dirk Holtwick",
|
|
@@ -65,17 +65,17 @@
|
|
|
65
65
|
"watch": "nr build:tsup -- --watch"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@antfu/eslint-config": "^0.
|
|
68
|
+
"@antfu/eslint-config": "^0.35.1",
|
|
69
69
|
"@antfu/ni": "^0.19.0",
|
|
70
70
|
"@types/jest": "^29.4.0",
|
|
71
71
|
"@types/node": "^18.11.18",
|
|
72
72
|
"c8": "^7.12.0",
|
|
73
73
|
"cross-fetch": "^3.1.5",
|
|
74
|
-
"esbuild": "^0.17.
|
|
75
|
-
"eslint": "^8.
|
|
74
|
+
"esbuild": "^0.17.5",
|
|
75
|
+
"eslint": "^8.33.0",
|
|
76
76
|
"tsup": "^6.5.0",
|
|
77
|
-
"typescript": "^4.9.
|
|
77
|
+
"typescript": "^4.9.5",
|
|
78
78
|
"vite": "^4.0.4",
|
|
79
|
-
"vitest": "^0.28.
|
|
79
|
+
"vitest": "^0.28.3"
|
|
80
80
|
}
|
|
81
81
|
}
|