zeed 0.9.2 → 0.9.4
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-VBENGHAN.js +12 -0
- package/dist/chunk-VBENGHAN.js.map +1 -0
- package/dist/index.all.d.ts +270 -228
- package/dist/index.browser.cjs +6 -6
- 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 +11 -11
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +3 -3
- package/dist/index.node.js +6 -6
- package/dist/index.node.js.map +1 -1
- package/dist/{uuid-c2cc7aa0.d.ts → uuid-bcd51568.d.ts} +269 -227
- package/package.json +4 -4
- package/dist/chunk-5KHLXHN6.js +0 -12
- package/dist/chunk-5KHLXHN6.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,
|
|
2
|
-
export {
|
|
1
|
+
import { J as Json, O as ObjectStorage, L as LogHandlerOptions, d9 as LogMessage, a as LogHandler } from './uuid-bcd51568.js';
|
|
2
|
+
export { dL as ArgumentsType, cC as AsyncMutex, cY 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, dj as Channel, di as ChannelMessageEvent, dy as CryptoEncoder, ay as DAY_MS, aX as Day, aA as DayInput, aW as DayInputLegacy, az as DayValue, b1 as DecimalInput, b0 as DecimalValue, dq as DefaultListener, cs as Disposable, cr as Disposer, cq as DisposerFunction, dr as Emitter, dn as EmitterAllHandler, dm as EmitterHandler, dv as Encoder, bu as FilterFunction, dx as JsonEncoder, dp as ListenerSignature, dk as LocalChannel, d6 as LogLevel, d7 as LogLevelAlias, d8 as LogLevelAliasKey, b as LogLevelAliasType, d5 as Logger, dc as LoggerConsoleHandler, db as LoggerContext, da as LoggerContextInterface, c as LoggerInterface, dh as LoggerMemoryHandler, bv as MapperFunction, e5 as MemStorage, e4 as MemStorageOptions, dB as Message, dz as MessageAction, dF as MessageDefinitions, dG as MessageHub, dA as MessageResult, dD as MessagesDefaultMethods, dE as MessagesMethods, dC as MessagesOptions, cB as Mutex, e9 as NestedArray, dw as NoopEncoder, cL as Pool, cH as PoolTask, cJ as PoolTaskEvents, cF as PoolTaskFn, cI as PoolTaskIdConflictResolution, cG as PoolTaskState, bb as Primitive, cM as Progress, dJ as PubSub, dO as RPCFn, dN as RPCOptions, dP as RPCReturn, au as RenderMessagesOptions, dM as ReturnType, bU as RoundingMode, c$ as SerialQueue, c3 as SortableItem, c_ as TaskEvents, cZ 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, dl as createLocalChannelPair, cN as createPromise, dH 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, d1 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, e0 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, dT as fetchBasic, dU as fetchJson, dY as fetchOptionsBasicAuth, dW as fetchOptionsFormURLEncoded, dX as fetchOptionsJson, dV as fetchText, ax as fixBrokenUth8String, aY as forEachDay, cm as forTimes, av as formatMessages, e7 as formatMilliseconds, a9 as fromBase64, aa as fromBase64String, ai as fromCamelCase, a6 as fromHex, d$ as getGlobal, d2 as getGlobalContext, ds as getGlobalEmitter, d4 as getGlobalLogger, dd as getNamespaceFilterString, d_ as getNavigator, bA as getSecureRandom, bB as getSecureRandomIfPossible, e6 as getTimestamp, dZ as getWindow, dR as httpMethod, cP as immediate, be as isArray, bl as isBoolean, e1 as isBrowser, bW as isEven, bV as isHalf, bj as isInteger, d3 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, cW as isPromise, bf as isRecord, bg as isRecordPlain, bk as isSafeInteger, bh as isString, cT 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, du as lazyListener, c9 as linkifyPlainText, by as listDistinctUnion, bx as listGroupBy, bz as listOfKey, bw as listQuery, ck as memoize, cl as memoizeAsync, dt as messages, c6 as moveSortWeight, ea as noop, bN as objectIsEmpty, bL as objectMap, bM as objectMergeDisposable, dS as parseBasicAuth, e8 as parseDate, df as parseLogLevel, bO as parseOrderby, cc as parseQuery, e2 as platform, cX as promisify, ew 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, eq as setUuidDefaultEncoding, cf as size, cO as sleep, c7 as sortedItems, bR as sortedOrderby, c4 as startSortWeight, aj as stringToBoolean, al as stringToFloat, ak as stringToInteger, a1 as stringToUInt8Array, em as suid, el as suidBytes, eo as suidBytesDate, en as suidDate, bG as sum, d0 as throttle, cR as timeout, cQ as timeoutReached, cS 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, cU as tryTimeout, ev as uname, ba as unescapeHTML, cE as useAsyncMutex, S as useBase, cw as useDefer, ct as useDispose, cv as useDisposer, cA as useEventListener, e3 as useExitHandler, cz as useInterval, dg as useLevelFilter, dI as useMessageHub, cD as useMutex, de as useNamespaceFilter, cK as usePool, dK as usePubSub, dQ as useRPC, c8 as useSorted, cy as useTimeout, er as uuid, ep as uuid32bit, ef as uuidB32, ec as uuidB62, eb as uuidBytes, es as uuidDecode, eh as uuidDecodeB32, ee as uuidDecodeB62, ek as uuidDecodeV4, et as uuidEncode, eg as uuidEncodeB32, ed as uuidEncodeB62, ej as uuidEncodeV4, eu as uuidIsValid, ei as uuidv4, am as valueToBoolean, ao as valueToFloat, an as valueToInteger, ap as valueToString, cV as waitOn } from './uuid-bcd51568.js';
|
|
3
3
|
|
|
4
4
|
interface ParseConfig {
|
|
5
5
|
args?: string[];
|
|
@@ -81,7 +81,7 @@ declare function colorStringList(list: Array<any>, style: string, bold?: boolean
|
|
|
81
81
|
declare const loggerStackTraceDebug = "loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";
|
|
82
82
|
declare function LoggerNodeHandler(opt?: LogHandlerOptions): LogHandler;
|
|
83
83
|
|
|
84
|
-
declare function getStackLlocationList(stack: string):
|
|
84
|
+
declare function getStackLlocationList(stack: string): string[];
|
|
85
85
|
/**
|
|
86
86
|
* Get the source code location of the caller
|
|
87
87
|
* https://stackoverflow.com/a/47296370/140927
|
package/dist/index.node.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{$ as
|
|
2
|
-
`,
|
|
3
|
-
`)}switch(
|
|
4
|
-
`)
|
|
5
|
-
`).map(p=>p.trim()),f=o.findIndex(p=>t.some(l=>p.startsWith(l)));r=o[f+1],r&&(r=
|
|
6
|
-
`)}
|
|
1
|
+
import{$ as Dt,$a as Or,$b as jn,$c as Bi,$d as Fs,A as lt,Aa as lr,Ab as an,Ac as si,Ad as rs,B as ft,Ba as fr,Bb as cn,Bc as oi,Bd as ns,C as ut,Ca as ur,Cb as ln,Cc as ai,Cd as is,D as gt,Da as gr,Db as fn,Dc as ci,Dd as ss,E as pt,Ea as pr,Eb as un,Ec as li,Ed as os,F as mt,Fa as mr,Fb as gn,Fc as fi,Fd as as,G as dt,Ga as dr,Gb as pn,Gc as ui,Gd as cs,H as ht,Ha as hr,Hb as mn,Hc as gi,Hd as ls,I as yt,Ia as yr,Ib as dn,Ic as pi,Id as fs,J as bt,Ja as C,Jb as hn,Jc as mi,Jd as us,K as vt,Ka as br,Kb as yn,Kc as di,Kd as gs,L as xt,La as vr,Lb as bn,Lc as hi,Ld as ps,M as $t,Ma as xr,Mb as vn,Mc as yi,Md as ms,N as Et,Na as $r,Nb as xn,Nc as bi,Nd as ds,O as St,Oa as Er,Ob as $n,Oc as R,Od as hs,P as Lt,Pa as Sr,Pb as En,Pc as vi,Pd as ys,Q as wt,Qa as S,Qb as Sn,Qc as xi,Qd as bs,R as Tt,Ra as Lr,Rb as Ln,Rc as $i,Rd as vs,S as Pt,Sa as wr,Sb as wn,Sc as Ei,Sd as xs,T as kt,Ta as Tr,Tb as Tn,Tc as Si,Td as $s,U as Ft,Ua as Pr,Ub as Pn,Uc as Li,Ud as Es,V as Nt,Va as kr,Vb as kn,Vc as wi,Vd as Ss,W as Bt,Wa as Fr,Wb as Fn,Wc as Ti,Wd as Ls,X as At,Xa as Nr,Xb as Nn,Xc as Pi,Xd as ws,Y as Ot,Ya as Br,Yb as Bn,Yc as ki,Yd as Ts,Z as jt,Za as N,Zb as An,Zc as Fi,Zd as Ps,_ as Rt,_a as Ar,_b as On,_c as Ni,_d as ks,a as i,aa as Ht,ab as jr,ac as Z,ad as Ai,ae as Ns,b as Ke,ba as Wt,bb as Rr,bc as Rn,bd as Oi,be as Bs,c as Ue,ca as It,cb as Dr,cc as Dn,cd as ji,ce as As,d as k,da as _t,db as Hr,dc as Hn,dd as Ri,de as Os,e as Ye,ea as Gt,eb as Wr,ec as Wn,ed as Di,ee as js,f as F,fa as Mt,fb as Ir,fc as In,fd as Hi,fe as Rs,g as ze,ga as Kt,gb as _r,gc as _n,gd as Wi,ge as Ds,h as O,ha as Ut,hb as Gr,hc as Gn,hd as Ii,he as Hs,i as Ce,ia as Yt,ib as Mr,ic as Mn,id as _i,ie as Ws,j as Ze,ja as zt,jb as Kr,jc as Kn,jd as D,je as Is,k as Je,ka as Ct,kb as Ur,kc as Un,kd as Q,ke as _s,l as E,la as Zt,lb as Yr,lc as Yn,ld as Gi,le as Gs,m as Qe,ma as Jt,mb as zr,mc as zn,md as Mi,me as Ms,n as j,na as Qt,nb as Cr,nc as Cn,nd as Ki,ne as Ks,o as Ve,oa as Vt,ob as Zr,oc as J,od as Ui,oe as Us,p as qe,pa as qt,pb as Jr,pc as Zn,pd as Yi,pe as Ys,q as Xe,qa as Xt,qb as Qr,qc as Jn,qd as zi,r as et,ra as er,rb as Vr,rc as Qn,rd as Ci,s as tt,sa as tr,sb as qr,sc as Vn,sd as Zi,t as rt,ta as rr,tb as Xr,tc as qn,td as Ji,u as nt,ua as nr,ub as en,uc as Xn,ud as Qi,v as it,va as ir,vb as tn,vc as ei,vd as Vi,w as st,wa as sr,wb as rn,wc as ti,wd as qi,x as ot,xa as or,xb as nn,xc as ri,xd as Xi,y as at,ya as ar,yb as sn,yc as ni,yd as es,z as ct,za as cr,zb as on,zc as ii,zd as ts}from"./chunk-VBENGHAN.js";function Cs(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((s,c)=>{let[m,d]=c;typeof d=="string"&&(d=[d]);for(let P of d)s[n(P)]=n(m);return s},{}),a={_:[]};function g(s,c){a[s]==null||typeof a[s]=="boolean"?a[s]=c:Array.isArray(a[s])?a[s].push(c):a[s]=[a[s],c]}i(g,"setOpt");let b=[...e],h;for(;h=b.shift();){let s;if(/^--?/.test(h)){let c=h.replace(/^--?/,"");if(h.includes("=")){let[m,d]=c.split("=",2);c=m.trim(),s=d.trim()}c=n(c),c=l[c]??c,o.includes(c)?g(c,!0):(s=s??b.shift()??"",p.includes(c)&&(s=Number(s??0)),f.includes(c)?Array.isArray(a[c])?a[c].push(s):a[c]=[s]:g(c,s))}else a._.push(h)}return a}i(Cs,"parseArgs");function Qs(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(()=>{})})}i(Qs,"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 ge}from"path";var L=E("zeed:env","error"),pe=`
|
|
2
|
+
`,me=/^\s*([\w_.-]+)\s*=\s*(.*)?\s*$/,de=/\\n/g,he=/\n|\r|\r\n/;function V(t,e={}){let r={};return String(t).split(he).forEach((n,o)=>{let f=n.match(me);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(de,pe))):l=l.trim(),r[p]=l}else L.debug(`did not match key and value when parsing line ${o+1}: ${n}`)}),r}i(V,"parse");function ye(t,e="."){return ge(process.cwd(),t??e)}i(ye,"stringToPath");function be(t,e=""){return t==null&&(t=e),ye(String(t).trim(),e)}i(be,"valueToPath");var W=be;function io(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}i(io,"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)?V(B.readFileSync(e,{encoding:r}),{debug:n}):{},f=B.existsSync(`${e}.local`)?V(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}}}i(so,"setupEnv");import{mkdirSync as ve,readFileSync as q,readdirSync as xe,rmSync as $e,unlinkSync as Ee,writeFileSync as Se}from"fs";import{dirname as Le,resolve as X}from"path";var ee=E("zeed:filestorage","error"),I=class{constructor(e={}){this.store={};this.fileKeys=void 0;this.pretty=!1;this.dirname=X(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){ee.warn(`fileStorage parse error '${n}' in`,r)}}),this.keyToFilename=e.keyToFilename??J}setItem(e,r){this.store[e]=R(r);try{let n=this.objectToString(r),o=this.getPath(e);ve(Le(o),{recursive:!0}),Se(o,n,"utf8")}catch(n){ee.error("setItem error",n)}}getPath(e){return X(this.dirname,this.keyToFilename(e)+this.extension)}getBuffer(e){let r=this.getPath(e);return Buffer.from(q(r))}getItem(e){let r=this.store[e];if(r!==null){if(r!=null)return R(r);try{let n=this.getPath(e),o=q(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);Ee(r)}catch{}}clear(){this.fileKeys=[],this.store={},$e(this.dirname,{recursive:!0,force:!0})}allKeys(){if(this.fileKeys==null)try{this.fileKeys=xe(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}};i(I,"FileStorage");import{mkdir as we,readFile as Te,rm as Pe,stat as ke,writeFile as Fe}from"fs/promises";import{join as _,normalize as Ne}from"path";function vo(t){let e=Ne(t),r=process.env.HOME;return r&&e.startsWith(r)?`~${e.slice(r.length)}`:e}i(vo,"toHumanReadableFilePath");async function G(t){try{await ke(t)}catch{return!1}return!0}i(G,"exists");async function xo(...t){let e=_(...t);return await G(e)||await we(e,{recursive:!0}),e}i(xo,"ensureFolder");async function $o(...t){let e=_(...t);return await G(e)&&await Pe(e,{recursive:!0}),e}i($o,"removeFolder");async function Eo(...t){let e=_(...t);if(await G(e))return await Te(e,"utf-8")}i(Eo,"readText");async function So(t,e){await Fe(t,e,"utf-8")}i(So,"writeText");import{createWriteStream as Be,mkdirSync as Ae}from"fs";import{dirname as Oe,resolve as je}from"path";var te={};function re(t,e={}){let{level:r=void 0,filter:n=void 0,time:o=!0,pretty:f=!1}=e;t=je(process.cwd(),t),Ae(Oe(t),{recursive:!0});let p=Be(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||"",s=te[h||""];s==null&&(te[h]=s);let c=[`[${h||"*"}]`,N(g.messages,{pretty:f})];function m(...d){p.write(`${d.join(" ")}
|
|
3
|
+
`)}switch(i(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}}}i(re,"LoggerFileHandler");import He from"tty";import{resolve as ne}from"path";function Re(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}})?.filter(Z)??[]}i(Re,"getStackLlocationList");var M=ne(process.cwd()),K=process.env?.HOME?ne(process.env?.HOME):"";function ie(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)}i(ie,"pathStripCwd");function De(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""}i(De,"extractFileInfo");function U(t=2,e=!0){let r=new Error("stack").stack||"",n=Re(r)?.[t];return n&&e&&(n=ie(n)),n||""}i(U,"getSourceLocation");function se(){return new Error("stack").stack||""}i(se,"getStack");function oe(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=De(r)),r&&e&&(r=ie(r))}return r}i(oe,"getSourceLocationByPrecedingPattern");function We(){try{return S(process.env.ZEED_COLOR,He.isatty(process.stdout.fd))}catch{}return!1}i(We,"shouldUseColor");var Y,ae=[6,2,3,4,5,1];function Ie(t){let e=0;for(let r=0;r<t.length;r++)e=(e<<5)-e+t.charCodeAt(r),e|=0;return ae[Math.abs(e)%ae.length]}i(Ie,"selectColor");var ce={},z;function A(...t){process.stdout.write(`${N(t)}
|
|
6
|
+
`)}i(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 fe="\x1B[0m";function w(t,e){return`${e===8?T.ORANGE:`\x1B[3${e<8?e:`8;5;${e}`}m`}${t}${fe}`}i(w,"colorString");function le(t,e,r=!0){return t.map(n=>{if(typeof n!="string")return n;let o=e,f=fe;return r&&(o=`${T.BOLD}${o}`,f=`${f}${T.BOLD}`),`${o}${n}${f}`})}i(le,"colorStringList");var _e="loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485";function ue(t={}){Y==null&&(Y=We()),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 s=>{if(!h(s.level)||!b(s.name))return;let c=D(),m=s.name||"",d=ce[m||""];d==null&&(d={color:Ie(m)},ce[m]=d);let P=Q(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)} | `],s.level===2?u.push(...le(s.messages,T.ORANGE)):s.level===3?u.push(...le(s.messages,T.RED)):u.push(...s.messages),g&&u.push(w(`+${P}`,v))}else u=[x,...s.messages],g&&u.push(`+${P}`);if(s.messages?.[0]===_e&&console.log(se()),a){let v="";typeof a=="boolean"?(v=oe(["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(s.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}}}i(ue,"LoggerNodeHandler");function Ge(){let t=[ue({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(re(W(e),{time:r,pretty:n})),E.setHandlers(t)}i(Ge,"setupLogContextNode");Ge();export{ht as CRYPTO_DEFAULT_ALG,yt as CRYPTO_DEFAULT_DERIVE_ALG,bt as CRYPTO_DEFAULT_DERIVE_ITERATIONS,dt as CRYPTO_DEFAULT_HASH_ALG,fs as Channel,ds as CryptoEncoder,Or as DAY_MS,pn as Day,Hi as Emitter,I as FileStorage,ms as JsonEncoder,us as LocalChannel,O as LogLevel,Ce as LogLevelAlias,E as Logger,ze as LoggerConsoleHandler,Ze as LoggerContext,re as LoggerFileHandler,Fs as LoggerMemoryHandler,ue as LoggerNodeHandler,Us as MemStorage,ps as NoopEncoder,Ss as PoolTaskIdConflictResolution,Es as PoolTaskState,$s as Progress,bs as PubSub,ws as SerialQueue,pt as Uint8ArrayToHexDump,gt as Uint8ArrayToJson,tt as Uint8ArrayToString,wi as XRX,Xe as _decodeUtf8Polyfill,qe as _encodeUtf8Polyfill,sr as arrayAvg,or as arrayBatches,Zt as arrayEmptyInPlace,zt as arrayFilterInPlace,Gt as arrayFlatten,Mt as arrayIntersection,Vt as arrayIsEqual,rr as arrayMax,nr as arrayMin,It as arrayMinus,tr as arrayRandomElement,Ut as arrayRemoveElement,Yt as arraySetElement,Xt as arrayShuffle,er as arrayShuffleForce,qt as arrayShuffleInPlace,Jt as arraySorted,Qt as arraySortedNumbers,ir as arraySum,Kt as arraySymmetricDifference,Ct as arrayToggleInPlace,_t as arrayUnion,Wt as arrayUnique,Nt as avg,kt as between,vi as cloneJsonObject,R as cloneObject,Dt as cmp,w as colorString,le as colorStringList,Rt as composeOrderby,ar as createArray,gs as createLocalChannelPair,tn as createPromise,hs as createPromiseProxy,Pi as csvParse,ki as csvParseToObjects,Ti as csvStringify,yn as dateStringToDays,hn as day,Dr as dayDay,qr as dayDiff,_r as dayFromAny,Mr as dayFromDate,Kr as dayFromDateGMT,Cr as dayFromParts,Zr as dayFromString,Yr as dayFromTimestamp,Ir as dayFromToday,en as dayIterator,Rr as dayMonth,Jr as dayMonthStart,Vr as dayOffset,Xr as dayRange,Wr as dayToDate,Gr as dayToDateGMT,Hr as dayToParts,zr as dayToString,Ur as dayToTimestamp,jr as dayYear,Qr as dayYearStart,Ps as debounce,bn as decimal,$n as decimalCentsPart,vn as decimalFromCents,xn as decimalToCents,gr as decodeBase16,fr as decodeBase32,mr as decodeBase58,hr as decodeBase62,Et as decrypt,Dn as deepEqual,Wn as deepMerge,Hn as deepStripUndefinedInPlace,xt as deriveKeyPbkdf2,_s as detect,vt as digest,bi as empty,ur as encodeBase16,lr as encodeBase32,pr as encodeBase58,dr as encodeBase62,gi as encodeQuery,$t as encrypt,oi as endSortWeight,xo as ensureFolder,mi as ensureKey,di as ensureKeyAsync,ft as equalBinary,In as escapeHTML,Zn as escapeRegExp,yr as estimateSizeForBase,G as exists,Bs as fetchBasic,As as fetchJson,Ds as fetchOptionsBasicAuth,js as fetchOptionsFormURLEncoded,Rs as fetchOptionsJson,Os as fetchText,Ar as fixBrokenUth8String,mn as forEachDay,Ei as forTimes,Br as formatMessages,Q as formatMilliseconds,ct as fromBase64,lt as fromBase64String,xr as fromCamelCase,st as fromHex,io as getEnvVariableRelaxed,Is as getGlobal,Ke as getGlobalContext,Wi as getGlobalEmitter,Je as getGlobalLogger,Ue as getNamespaceFilterString,Ws as getNavigator,St as getSecureRandom,Lt as getSecureRandomIfPossible,U as getSourceLocation,oe as getSourceLocationByPrecedingPattern,se as getStack,Re as getStackLlocationList,D as getTimestamp,Hs as getWindow,nn as immediate,Ln as isArray,Bn as isBoolean,Gs as isBrowser,Qn as isEven,Jn as isHalf,Fn as isInteger,ks as isLocalHost,Z as isNotNull,On as isNull,An as isNullOrUndefined,kn as isNumber,En as isObject,At as isPrime,Bt as isPrimeRX,Sn as isPrimitive,un as isPromise,wn as isRecord,Tn as isRecordPlain,Nn as isSafeInteger,Pn as isString,cn as isTimeout,jn as isUint8Array,Rn as isValue,nt as joinToUint8Array,Ve as jsonStringify,j as jsonStringifySafe,Qe as jsonStringifySorted,ut as jsonToUint8Array,yi as last,_i as lazyListener,fi as linkifyPlainText,Kn as listDistinctUnion,Mn as listGroupBy,Un as listOfKey,Gn as listQuery,_e as loggerStackTraceDebug,xi as memoize,$i as memoizeAsync,Ii as messages,ai as moveSortWeight,Ys as noop,Cn as objectIsEmpty,Yn as objectMap,zn as objectMergeDisposable,Cs as parseArgs,Ns as parseBasicAuth,Gi as parseDate,Ye as parseLogLevel,jt as parseOrderby,pi as parseQuery,Qs as pbcopy,Ms as platform,gn as promisify,ls as qid,wt as randomBoolean,Pt as randomFloat,Tt as randomInt,mt as randomUint8Array,Eo as readText,Li as regExpEscape,Si as regExpString,$o as removeFolder,N as renderMessages,qn as roundDown,ti as roundHalfAwayFromZero,ri as roundHalfDown,ni as roundHalfEven,ei as roundHalfOdd,ii as roundHalfTowardsZero,Xn as roundHalfUp,Vn as roundUp,Ot as seededRandom,ns as setUuidDefaultEncoding,so as setupEnv,hi as size,rn as sleep,ci as sortedItems,Ht as sortedOrderby,si as startSortWeight,$r as stringToBoolean,Sr as stringToFloat,Er as stringToInteger,ye as stringToPath,et as stringToUInt8Array,Xi as suid,qi as suidBytes,ts as suidBytesDate,es as suidDate,Ft as sum,Ts as throttle,on as timeout,sn as timeoutReached,an as timoutError,ot as toBase64,at as toBase64Url,Nr as toBool,C as toCamelCase,br as toCapitalize,vr as toCapitalizeWords,Pr as toFloat,it as toHex,vo as toHumanReadableFilePath,ui as toHumanReadableUrl,kr as toInt,W as toPath,Fr as toString,rt as toUint8Array,J as toValidFilename,dn as today,ln as tryTimeout,cs as uname,_n as unescapeHTML,Di as useAsyncMutex,cr as useBase,Bi as useDefer,Fi as useDispose,Ni as useDisposer,ji as useEventListener,Ks as useExitHandler,Oi as useInterval,F as useLevelFilter,ys as useMessageHub,Ri as useMutex,k as useNamespaceFilter,Ls as usePool,vs as usePubSub,xs as useRPC,li as useSorted,Ai as useTimeout,is as uuid,rs as uuid32bit,zi as uuidB32,Ki as uuidB62,Mi as uuidBytes,ss as uuidDecode,Zi as uuidDecodeB32,Yi as uuidDecodeB62,Vi as uuidDecodeV4,os as uuidEncode,Ci as uuidEncodeB32,Ui as uuidEncodeB62,Qi as uuidEncodeV4,as as uuidIsValid,Ji as uuidv4,S as valueToBoolean,wr as valueToFloat,Lr as valueToInteger,be as valueToPath,Tr as valueToString,fn as waitOn,So 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 }).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"]}
|
|
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'\nimport { isNotNull } from '../common'\n\nexport function getStackLlocationList(stack: string): string[] {\n if (typeof stack !== 'string')\n return []\n // console.log(\"stack\", stack)\n return (\n stack?.split('\\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 undefined\n })?.filter(isNotNull) ?? []\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","isNotNull","__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"]}
|