@noormdev/cli 1.0.0-alpha.8 → 1.0.0-alpha.9
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-AIFVPC72.js +9 -0
- package/dist/chunk-CTFIMWJ7.js +8 -0
- package/dist/chunk-GQBL2JPZ.js +2 -0
- package/dist/chunk-I3AZKE2V.js +208 -0
- package/dist/chunk-PJYMXUBP.js +2 -0
- package/dist/connection-BXEZV3EG.js +2 -0
- package/dist/engine-BWPHMMXT.js +2 -0
- package/dist/index.js +920 -393
- package/dist/storage-YJUXROPC.js +2 -0
- package/package.json +2 -2
- package/scripts/postinstall.js +1 -1
- package/dist/chunk-ZVSL653B.js +0 -214
- package/dist/engine-OB3KW3J3.js +0 -2
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as dt,c as p,d as P,f as gt,i as g}from"./chunk-CTFIMWJ7.js";import{W as K}from"./chunk-QI5B3GSQ.js";import{c as lt,e as mt}from"./chunk-UR6MHSHU.js";var Dt=lt((Ge,Je)=>{"use strict";(function(e,t){typeof Ge=="object"&&typeof Je<"u"?Je.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Ge,(function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",i="second",o="minute",s="hour",l="day",f="week",m="month",h="quarter",v="year",C="date",A="Invalid Date",B=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,H=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,J={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(y){var u=["th","st","nd","rd"],a=y%100;return"["+y+(u[(a-20)%10]||u[a]||u[0])+"]"}},F=function(y,u,a){var d=String(y);return!d||d.length>=u?y:""+Array(u+1-d.length).join(a)+y},_={s:F,z:function(y){var u=-y.utcOffset(),a=Math.abs(u),d=Math.floor(a/60),c=a%60;return(u<=0?"+":"-")+F(d,2,"0")+":"+F(c,2,"0")},m:function y(u,a){if(u.date()<a.date())return-y(a,u);var d=12*(a.year()-u.year())+(a.month()-u.month()),c=u.clone().add(d,m),b=a-c<0,w=u.clone().add(d+(b?-1:1),m);return+(-(d+(a-c)/(b?c-w:w-c))||0)},a:function(y){return y<0?Math.ceil(y)||0:Math.floor(y)},p:function(y){return{M:m,y:v,w:f,d:l,D:C,h:s,m:o,s:i,ms:n,Q:h}[y]||String(y||"").toLowerCase().replace(/s$/,"")},u:function(y){return y===void 0}},$="en",N={};N[$]=J;var O="$isDayjsObject",z=function(y){return y instanceof we||!(!y||!y[O])},re=function y(u,a,d){var c;if(!u)return $;if(typeof u=="string"){var b=u.toLowerCase();N[b]&&(c=b),a&&(N[b]=a,c=b);var w=u.split("-");if(!c&&w.length>1)return y(w[0])}else{var S=u.name;N[S]=u,c=S}return!d&&c&&($=c),c||!d&&$},E=function(y,u){if(z(y))return y.clone();var a=typeof u=="object"?u:{};return a.date=y,a.args=arguments,new we(a)},k=_;k.l=re,k.i=z,k.w=function(y,u){return E(y,{locale:u.$L,utc:u.$u,x:u.$x,$offset:u.$offset})};var we=(function(){function y(a){this.$L=re(a.locale,null,!0),this.parse(a),this.$x=this.$x||a.x||{},this[O]=!0}var u=y.prototype;return u.parse=function(a){this.$d=(function(d){var c=d.date,b=d.utc;if(c===null)return new Date(NaN);if(k.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var w=c.match(B);if(w){var S=w[2]-1||0,I=(w[7]||"0").substring(0,3);return b?new Date(Date.UTC(w[1],S,w[3]||1,w[4]||0,w[5]||0,w[6]||0,I)):new Date(w[1],S,w[3]||1,w[4]||0,w[5]||0,w[6]||0,I)}}return new Date(c)})(a),this.init()},u.init=function(){var a=this.$d;this.$y=a.getFullYear(),this.$M=a.getMonth(),this.$D=a.getDate(),this.$W=a.getDay(),this.$H=a.getHours(),this.$m=a.getMinutes(),this.$s=a.getSeconds(),this.$ms=a.getMilliseconds()},u.$utils=function(){return k},u.isValid=function(){return this.$d.toString()!==A},u.isSame=function(a,d){var c=E(a);return this.startOf(d)<=c&&c<=this.endOf(d)},u.isAfter=function(a,d){return E(a)<this.startOf(d)},u.isBefore=function(a,d){return this.endOf(d)<E(a)},u.$g=function(a,d,c){return k.u(a)?this[d]:this.set(c,a)},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this.$d.getTime()},u.startOf=function(a,d){var c=this,b=!!k.u(d)||d,w=k.p(a),S=function(Q,D){var W=k.w(c.$u?Date.UTC(c.$y,D,Q):new Date(c.$y,D,Q),c);return b?W:W.endOf(l)},I=function(Q,D){return k.w(c.toDate()[Q].apply(c.toDate("s"),(b?[0,0,0,0]:[23,59,59,999]).slice(D)),c)},T=this.$W,M=this.$M,j=this.$D,ne="set"+(this.$u?"UTC":"");switch(w){case v:return b?S(1,0):S(31,11);case m:return b?S(1,M):S(0,M+1);case f:var Z=this.$locale().weekStart||0,ce=(T<Z?T+7:T)-Z;return S(b?j-ce:j+(6-ce),M);case l:case C:return I(ne+"Hours",0);case s:return I(ne+"Minutes",1);case o:return I(ne+"Seconds",2);case i:return I(ne+"Milliseconds",3);default:return this.clone()}},u.endOf=function(a){return this.startOf(a,!1)},u.$set=function(a,d){var c,b=k.p(a),w="set"+(this.$u?"UTC":""),S=(c={},c[l]=w+"Date",c[C]=w+"Date",c[m]=w+"Month",c[v]=w+"FullYear",c[s]=w+"Hours",c[o]=w+"Minutes",c[i]=w+"Seconds",c[n]=w+"Milliseconds",c)[b],I=b===l?this.$D+(d-this.$W):d;if(b===m||b===v){var T=this.clone().set(C,1);T.$d[S](I),T.init(),this.$d=T.set(C,Math.min(this.$D,T.daysInMonth())).$d}else S&&this.$d[S](I);return this.init(),this},u.set=function(a,d){return this.clone().$set(a,d)},u.get=function(a){return this[k.p(a)]()},u.add=function(a,d){var c,b=this;a=Number(a);var w=k.p(d),S=function(M){var j=E(b);return k.w(j.date(j.date()+Math.round(M*a)),b)};if(w===m)return this.set(m,this.$M+a);if(w===v)return this.set(v,this.$y+a);if(w===l)return S(1);if(w===f)return S(7);var I=(c={},c[o]=t,c[s]=r,c[i]=e,c)[w]||1,T=this.$d.getTime()+a*I;return k.w(T,this)},u.subtract=function(a,d){return this.add(-1*a,d)},u.format=function(a){var d=this,c=this.$locale();if(!this.isValid())return c.invalidDate||A;var b=a||"YYYY-MM-DDTHH:mm:ssZ",w=k.z(this),S=this.$H,I=this.$m,T=this.$M,M=c.weekdays,j=c.months,ne=c.meridiem,Z=function(D,W,ue,xe){return D&&(D[W]||D(d,b))||ue[W].slice(0,xe)},ce=function(D){return k.s(S%12||12,D,"0")},Q=ne||function(D,W,ue){var xe=D<12?"AM":"PM";return ue?xe.toLowerCase():xe};return b.replace(H,(function(D,W){return W||(function(ue){switch(ue){case"YY":return String(d.$y).slice(-2);case"YYYY":return k.s(d.$y,4,"0");case"M":return T+1;case"MM":return k.s(T+1,2,"0");case"MMM":return Z(c.monthsShort,T,j,3);case"MMMM":return Z(j,T);case"D":return d.$D;case"DD":return k.s(d.$D,2,"0");case"d":return String(d.$W);case"dd":return Z(c.weekdaysMin,d.$W,M,2);case"ddd":return Z(c.weekdaysShort,d.$W,M,3);case"dddd":return M[d.$W];case"H":return String(S);case"HH":return k.s(S,2,"0");case"h":return ce(1);case"hh":return ce(2);case"a":return Q(S,I,!0);case"A":return Q(S,I,!1);case"m":return String(I);case"mm":return k.s(I,2,"0");case"s":return String(d.$s);case"ss":return k.s(d.$s,2,"0");case"SSS":return k.s(d.$ms,3,"0");case"Z":return w}return null})(D)||w.replace(":","")}))},u.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},u.diff=function(a,d,c){var b,w=this,S=k.p(d),I=E(a),T=(I.utcOffset()-this.utcOffset())*t,M=this-I,j=function(){return k.m(w,I)};switch(S){case v:b=j()/12;break;case m:b=j();break;case h:b=j()/3;break;case f:b=(M-T)/6048e5;break;case l:b=(M-T)/864e5;break;case s:b=M/r;break;case o:b=M/t;break;case i:b=M/e;break;default:b=M}return c?b:k.a(b)},u.daysInMonth=function(){return this.endOf(m).$D},u.$locale=function(){return N[this.$L]},u.locale=function(a,d){if(!a)return this.$L;var c=this.clone(),b=re(a,d,!0);return b&&(c.$L=b),c},u.clone=function(){return k.w(this.$d,this)},u.toDate=function(){return new Date(this.valueOf())},u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toISOString=function(){return this.$d.toISOString()},u.toString=function(){return this.$d.toUTCString()},y})(),ut=we.prototype;return E.prototype=ut,[["$ms",n],["$s",i],["$m",o],["$H",s],["$W",l],["$M",m],["$y",v],["$D",C]].forEach((function(y){ut[y[1]]=function(u){return this.$g(u,y[0],y[1])}})),E.extend=function(y,u){return y.$i||(y(u,we,E),y.$i=!0),E},E.locale=re,E.isDayjs=z,E.unix=function(y){return E(1e3*y)},E.en=N[$],E.Ls=N,E.p={},E}))});var Yt=lt((Ci,Wt)=>{"use strict";var At,Ze,tt,{defineProperty:cn,setPrototypeOf:zt,create:un,keys:ln}=Object,q="",{round:te,max:mn}=Math,Qe=e=>{let t=/([a-f\d]{3,6})/i.exec(e)?.[1],r=t?.length,n=parseInt(6^r?3^r?"0":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t,16);return[n>>16&255,n>>8&255,255&n]},Bt=(e,t,r)=>e^t||t^r?16+36*te(e/51)+6*te(t/51)+te(r/51):8>e?16:e>248?231:te(24*(e-8)/247)+232,Xe=e=>{let t,r,n,i,o;return 8>e?30+e:16>e?e-8+90:(232>e?(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,n=o%6/5):t=r=n=(10*(e-232)+8)/255,i=2*mn(t,r,n),i?30+(te(n)<<2|te(r)<<1|te(t))+(2^i?0:60):30)},dn=(()=>{let e=m=>n.some((h=>m.test(h))),t=globalThis,r=t.process??{},n=r.argv??[],i=r.env??{},o=-1;try{At=","+ln(i).join(",")}catch{i={},o=0}let s="FORCE_COLOR",l={false:0,0:0,1:1,2:2,3:3}[i[s]]??-1,f=s in i&&l||e(/^--color=?(true|always)?$/);return f&&(o=l),~o||(o=((m,h,v)=>(Ze=m.TERM,{"24bit":3,truecolor:3,ansi256:2,ansi:1}[m.COLORTERM]||(m.CI?/,GITHUB/.test(At)?3:1:h&&Ze!=="dumb"?v?3:/-256/.test(Ze)?2:1:0)))(i,!!i.PM2_HOME||i.NEXT_RUNTIME?.includes("edge")||!!r.stdout?.isTTY,r.platform==="win32")),!l||i.NO_COLOR||e(/^--(no-color|color=(false|never))$/)?0:t.window?.chrome||f&&!o?3:o})(),Ft={open:q,close:q},se=39,ae=49,Ut={},Ht=({p:e},{open:t,close:r})=>{let n=(s,...l)=>{if(!s){if(t&&t===r)return t;if((s??q)===q)return q}let f,m=s.raw?String.raw({raw:s},...l):q+s,h=n.p,v=h.o,C=h.c;if(m.includes("\x1B"))for(;h;h=h.p){let{open:A,close:B}=h,H=B.length,J=q,F=0;if(H)for(;~(f=m.indexOf(B,F));F=f+H)J+=m.slice(F,f)+A;m=J+m.slice(F)}return v+(m.includes(`
|
|
3
|
+
`)?m.replace(/(\r?\n)/g,C+"$1"+v):m)+C},i=t,o=r;return e&&(i=e.o+t,o=r+e.c),zt(n,tt),n.p={open:t,close:r,o:i,c:o,p:e},n.open=i,n.close=o,n},et=new function e(t=dn){let r={Ansis:e,level:t,isSupported:()=>i,strip:_=>_.replace(/[][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,q),extend(_){for(let $ in _){let N=_[$],O=(typeof N)[0];O==="s"?(n($,h(...Qe(N))),n(J($),v(...Qe(N)))):n($,N,O==="f")}return tt=un({},Ut),zt(r,tt),r}},n=(_,$,N)=>{Ut[_]={get(){let O=N?(...z)=>Ht(this,$(...z)):Ht(this,$);return cn(this,_,{value:O}),O}}},i=t>0,o=(_,$)=>i?{open:`\x1B[${_}m`,close:`\x1B[${$}m`}:Ft,s=_=>$=>_(...Qe($)),l=(_,$)=>(N,O,z)=>o(`${_}8;2;${N};${O};${z}`,$),f=(_,$)=>(N,O,z)=>o(((re,E,k)=>Xe(Bt(re,E,k)))(N,O,z)+_,$),m=_=>($,N,O)=>_(Bt($,N,O)),h=l(3,se),v=l(4,ae),C=_=>o("38;5;"+_,se),A=_=>o("48;5;"+_,ae);t===2?(h=m(C),v=m(A)):t===1&&(h=f(0,se),v=f(10,ae),C=_=>o(Xe(_),se),A=_=>o(Xe(_)+10,ae));let B,H={fg:C,bg:A,rgb:h,bgRgb:v,hex:s(h),bgHex:s(v),visible:Ft,reset:o(0,0),bold:o(1,22),dim:o(2,22),italic:o(3,23),underline:o(4,24),inverse:o(7,27),hidden:o(8,28),strikethrough:o(9,29)},J=_=>"bg"+_[0].toUpperCase()+_.slice(1),F="Bright";return"black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map(((_,$)=>{B=J(_),8>$?(H[_+F]=o(90+$,se),H[B+F]=o(100+$,ae)):$=60,H[_]=o(30+$,se),H[B]=o(40+$,ae)})),r.extend(H)};Wt.exports=et,et.default=et});var Oe=class{#r=new Map;#t=new Map;#o=1;#e=!1;#s=null;constructor(){this.#s=g.on("app:shutdown",async()=>{process.env.NOORM_DEBUG&&console.error(`[ConnectionManager] app:shutdown received, closing ${this.size} connections`),this.#e=!0,await this.closeAll(),process.env.NOORM_DEBUG&&console.error("[ConnectionManager] all connections closed")})}track(t,r){let n=this.#o++;return this.#t.set(n,{conn:t,configName:r,createdAt:new Date}),n}untrack(t){this.#t.delete(t)}async getConnection(t,r){let n=t.name;if(this.#r.has(n))return this.#r.get(n);let i=await r(t);return this.#r.set(n,i),i}async closeCached(t){let r=this.#r.get(t);if(r){let[,n]=await p(()=>r.destroy());this.#r.delete(t),n?g.emit("error",{source:"connection",error:n}):g.emit("connection:close",{configName:t})}}async closeAll(){let r=Array.from(this.#r.keys());for(let i of r)await this.closeCached(i);let n=Array.from(this.#t.entries());for(let[i,o]of n){let s=Promise.race([o.conn.destroy(),new Promise(f=>setTimeout(f,5e3))]),[,l]=await p(()=>s);this.#t.delete(i),l?g.emit("error",{source:"connection",error:l}):g.emit("connection:close",{configName:o.configName})}}hasCached(t){return this.#r.has(t)}get size(){return this.#r.size+this.#t.size}get isShuttingDown(){return this.#e}dispose(){this.#s&&(this.#s(),this.#s=null)}},X=null;function De(){return X||(X=new Oe),X}async function lr(){X&&(await X.closeAll(),X.dispose(),X=null)}import{execSync as ft}from"child_process";import{userInfo as mr}from"os";function Pe(e={}){let t;return e.configIdentity?t=pt(e.configIdentity,"config"):e.cryptoIdentity?t=dr(e.cryptoIdentity):process.env.NOORM_IDENTITY?t=pt(process.env.NOORM_IDENTITY,"env"):e.skipGit?t=yt():t=gr()??yt(),g.emit("identity:resolved",{name:t.name,email:t.email,source:t.source}),t}function dr(e){return{name:e.name,email:e.email,source:"state"}}function pt(e,t){let r=e.trim(),n=r.match(/^(.+?)\s*<([^>]+)>$/);return n?{name:n[1].trim(),email:n[2].trim(),source:t}:{name:r,source:t}}function gr(){let[e,t]=P(()=>ft("git config user.name",{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim());if(t||!e)return null;let[r]=P(()=>ft("git config user.email",{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim());return{name:e,email:r||void 0,source:"git"}}function yt(){return{name:mr().username,source:"system"}}function fr(e){return e.email?`${e.name} <${e.email}>`:e.name}import{execSync as Ct}from"child_process";import{hostname as Be,platform as Fe,release as Ue,userInfo as Or}from"os";import{generateKeyPairSync as pr,createCipheriv as yr,createDecipheriv as hr,createPrivateKey as br,createPublicKey as wr,diffieHellman as xr,hkdfSync as ht,randomBytes as _r}from"crypto";function _e(){let{publicKey:e,privateKey:t}=pr("x25519",{publicKeyEncoding:{type:"spki",format:"der"},privateKeyEncoding:{type:"pkcs8",format:"der"}});return{publicKey:e.toString("hex"),privateKey:t.toString("hex")}}function bt(e,t){let r=br({key:Buffer.from(e,"hex"),format:"der",type:"pkcs8"}),n=wr({key:Buffer.from(t,"hex"),format:"der",type:"spki"});return xr({privateKey:r,publicKey:n})}function wt(e,t){return Buffer.from(ht("sha256",e,Buffer.alloc(0),t,32))}function vr(e,t,r,n){let i=_e(),o=bt(i.privateKey,t),s=wt(o,"noorm-config-share"),l=_r(16),f=yr("aes-256-gcm",s,l),m=Buffer.concat([f.update(e,"utf8"),f.final()]),h=f.getAuthTag();return{version:1,sender:r,recipient:n,ephemeralPubKey:i.publicKey,iv:l.toString("hex"),authTag:h.toString("hex"),ciphertext:m.toString("hex")}}function $r(e,t){if(e.version!==1)throw new Error(`Unsupported payload version: ${e.version}`);let r=bt(t,e.ephemeralPubKey),n=wt(r,"noorm-config-share"),i=hr("aes-256-gcm",n,Buffer.from(e.iv,"hex"));return i.setAuthTag(Buffer.from(e.authTag,"hex")),Buffer.concat([i.update(Buffer.from(e.ciphertext,"hex")),i.final()]).toString("utf8")}function kr(e){let t=Buffer.from(e,"hex");return Buffer.from(ht("sha256",t,Buffer.alloc(0),"noorm-state-encryption",32))}import{homedir as Sr}from"os";import{join as ve}from"path";import{chmod as xt,mkdir as Cr,readFile as Ke,stat as _t,writeFile as Ve}from"fs/promises";var oe=ve(Sr(),".noorm"),le=ve(oe,"identity.key"),me=ve(oe,"identity.pub"),vt=384,$t=420,kt=ve(oe,"identity.json");async function St(){let[,e]=await p(()=>Cr(oe,{recursive:!0}));if(e)throw new Error(`Failed to create ${oe}: ${e.message}`)}async function je(e){await St();let[,t]=await p(()=>Ve(le,e.privateKey,{encoding:"utf8",mode:vt}));if(t)throw new Error(`Failed to write private key: ${t.message}`);await p(()=>xt(le,vt));let[,r]=await p(()=>Ve(me,e.publicKey,{encoding:"utf8",mode:$t}));if(r)throw new Error(`Failed to write public key: ${r.message}`);await p(()=>xt(me,$t))}async function $e(e){await St();let t={identityHash:e.identityHash,name:e.name,email:e.email,publicKey:e.publicKey,machine:e.machine,os:e.os,createdAt:e.createdAt},[,r]=await p(()=>Ve(kt,JSON.stringify(t,null,2),{encoding:"utf8"}));if(r)throw new Error(`Failed to write identity metadata: ${r.message}`)}async function Ae(){let[e,t]=await p(()=>Ke(kt,{encoding:"utf8"}));if(t){if(t.code==="ENOENT")return null;throw new Error(`Failed to read identity metadata: ${t.message}`)}let[r,n]=P(()=>JSON.parse(e));return n?null:r}async function Ir(){let[e,t]=await p(()=>Ke(le,{encoding:"utf8"}));if(t){if(t.code==="ENOENT")return null;throw new Error(`Failed to read private key: ${t.message}`)}return e.trim()}async function ke(){let[e,t]=await p(()=>Ke(me,{encoding:"utf8"}));if(t){if(t.code==="ENOENT")return null;throw new Error(`Failed to read public key: ${t.message}`)}return e.trim()}async function Rr(){let[e]=await p(()=>_t(le)),[t]=await p(()=>_t(me));return!!e&&!!t}function Nr(){return le}function Er(){return me}function Tr(){return oe}import{createHash as Mr}from"crypto";function Se(e){if(!e.email||!e.name||!e.machine||!e.os)throw new Error("All fields required for identity hash: email, name, machine, os");let t=[e.email,e.name,e.machine,e.os].join("\0");return Mr("sha256").update(t,"utf8").digest("hex")}function Lr(e,t=8){return e.slice(0,t)}function Dr(){let[e]=P(()=>Ct("git config user.name",{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()),[t]=P(()=>Ct("git config user.email",{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim());return{name:e||Or().username,email:t||"",machine:Be(),os:`${Fe()} ${Ue()}`}}async function Pr(e,t=!0){if(!e.name?.trim())throw new Error("Name is required for identity");if(!e.email?.trim())throw new Error("Email is required for identity");let r=e.machine?.trim()||Be(),n=`${Fe()} ${Ue()}`,i=_e(),o=Se({email:e.email.trim(),name:e.name.trim(),machine:r,os:n}),s={identityHash:o,name:e.name.trim(),email:e.email.trim(),publicKey:i.publicKey,machine:r,os:n,createdAt:new Date().toISOString()};return t&&(await je(i),await $e(s)),g.emit("identity:created",{identityHash:o,name:s.name,email:s.email,machine:s.machine}),{identity:s,keypair:i}}async function Vr(e){if(!e.name?.trim())throw new Error("Name is required for identity");if(!e.email?.trim())throw new Error("Email is required for identity");let t=await ke();if(!t)return null;let r=e.machine?.trim()||Be(),n=`${Fe()} ${Ue()}`,i=Se({email:e.email.trim(),name:e.name.trim(),machine:r,os:n}),o={identityHash:i,name:e.name.trim(),email:e.email.trim(),publicKey:t,machine:r,os:n,createdAt:new Date().toISOString()};return await $e(o),g.emit("identity:created",{identityHash:i,name:o.name,email:o.email,machine:o.machine}),o}async function de(){let e=await Ae();if(!e)return null;let t=await ke();return t?{...e,publicKey:t}:null}var L=Object.freeze({schema:1,state:1,settings:1}),ee=class extends Error{constructor(r,n,i){super(`${r} version ${n} is newer than CLI supports (${i}). Please upgrade noorm.`);this.layer=r;this.current=n;this.expected=i;this.name="VersionMismatchError"}},Y=class extends Error{constructor(r,n,i){super(`${r} migration v${n} failed: ${i.message}`);this.layer=r;this.version=n;this.cause=i;this.name="MigrationError"}};function ie(e,t){return t==="postgres"?e.addColumn("id","serial",r=>r.primaryKey()):e.addColumn("id","integer",r=>r.primaryKey().autoIncrement())}var It={version:1,description:"Create initial tracking tables",async up(e,t){await ie(e.schema.createTable("__noorm_version__"),t).addColumn("cli_version","varchar(50)",r=>r.notNull()).addColumn("noorm_version","integer",r=>r.notNull()).addColumn("state_version","integer",r=>r.notNull()).addColumn("settings_version","integer",r=>r.notNull()).addColumn("installed_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).addColumn("upgraded_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).execute(),await ie(e.schema.createTable("__noorm_change__"),t).addColumn("name","varchar(255)",r=>r.notNull()).addColumn("change_type","varchar(50)",r=>r.notNull()).addColumn("direction","varchar(50)",r=>r.notNull()).addColumn("checksum","varchar(64)",r=>r.notNull().defaultTo("")).addColumn("executed_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).addColumn("executed_by","varchar(255)",r=>r.notNull().defaultTo("")).addColumn("config_name","varchar(255)",r=>r.notNull().defaultTo("")).addColumn("cli_version","varchar(50)",r=>r.notNull().defaultTo("")).addColumn("status","varchar(50)",r=>r.notNull()).addColumn("error_message","text",r=>r.notNull().defaultTo("")).addColumn("duration_ms","integer",r=>r.notNull().defaultTo(0)).execute(),await ie(e.schema.createTable("__noorm_executions__"),t).addColumn("change_id","integer",r=>r.notNull().references("__noorm_change__.id").onDelete("cascade")).addColumn("filepath","varchar(500)",r=>r.notNull()).addColumn("file_type","varchar(10)",r=>r.notNull()).addColumn("checksum","varchar(64)",r=>r.notNull().defaultTo("")).addColumn("cli_version","varchar(50)",r=>r.notNull().defaultTo("")).addColumn("status","varchar(50)",r=>r.notNull()).addColumn("error_message","text",r=>r.notNull().defaultTo("")).addColumn("skip_reason","varchar(100)",r=>r.notNull().defaultTo("")).addColumn("duration_ms","integer",r=>r.notNull().defaultTo(0)).execute(),await ie(e.schema.createTable("__noorm_lock__"),t).addColumn("config_name","varchar(255)",r=>r.notNull().unique()).addColumn("locked_by","varchar(255)",r=>r.notNull()).addColumn("locked_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).addColumn("expires_at","timestamp",r=>r.notNull()).addColumn("reason","varchar(255)",r=>r.notNull().defaultTo("")).execute(),await ie(e.schema.createTable("__noorm_identities__"),t).addColumn("identity_hash","varchar(64)",r=>r.notNull().unique()).addColumn("email","varchar(255)",r=>r.notNull()).addColumn("name","varchar(255)",r=>r.notNull()).addColumn("machine","varchar(255)",r=>r.notNull()).addColumn("os","varchar(255)",r=>r.notNull()).addColumn("public_key","text",r=>r.notNull()).addColumn("encrypted_vault_key","text").addColumn("registered_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).addColumn("last_seen_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).execute(),await ie(e.schema.createTable("__noorm_vault__"),t).addColumn("secret_key","varchar(255)",r=>r.notNull().unique()).addColumn("encrypted_value","text",r=>r.notNull()).addColumn("set_by","varchar(255)",r=>r.notNull()).addColumn("created_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).addColumn("updated_at","timestamp",r=>r.notNull().defaultTo(K`CURRENT_TIMESTAMP`)).execute(),await e.schema.createIndex("idx_executions_change_id").on("__noorm_executions__").column("change_id").execute(),await e.schema.createIndex("idx_change_name_config").on("__noorm_change__").columns(["name","config_name"]).execute(),await e.schema.createIndex("idx_vault_secret_key").on("__noorm_vault__").column("secret_key").execute()},async down(e,t){await e.schema.dropIndex("idx_change_name_config").execute(),await e.schema.dropIndex("idx_executions_change_id").execute(),await e.schema.dropIndex("idx_vault_secret_key").execute(),await e.schema.dropTable("__noorm_vault__").execute(),await e.schema.dropTable("__noorm_identities__").execute(),await e.schema.dropTable("__noorm_lock__").execute(),await e.schema.dropTable("__noorm_executions__").execute(),await e.schema.dropTable("__noorm_change__").execute(),await e.schema.dropTable("__noorm_version__").execute()}};var Kr="https://registry.npmjs.org/@noormdev/cli",jr=5e3;async function Rt(){let e=new AbortController,t=setTimeout(()=>e.abort(),jr),[r,n]=await p(()=>fetch(Kr,{signal:e.signal,headers:{Accept:"application/json"}}));if(clearTimeout(t),n||!r?.ok)return null;let[i,o]=await p(()=>r.json());return o?null:i??null}function He(e,t="latest"){return e["dist-tags"][t]??null}function Nt(e,t){let n=Object.keys(e.versions).filter(i=>i.includes(`-${t}`));return n.sort((i,o)=>{let[s="0.0.0",l]=i.split(`-${t}`),[f="0.0.0",m]=o.split(`-${t}`),h=s.localeCompare(f,void 0,{numeric:!0});if(h!==0)return h;let v=parseInt(l?.replace(".","")||"0",10),C=parseInt(m?.replace(".","")||"0",10);return v-C}),n}function Ce(){return"1.0.0-alpha.9"}function ze(e){let t=e.match(/-(\w+)\.?(\d+)?$/);return!t||!t[1]?null:{channel:t[1],number:t[2]?parseInt(t[2],10):0}}function Ar(e,t){let r=e.split("-")[0]??"0.0.0",n=t.split("-")[0]??"0.0.0",i=parseInt(r.split(".")[0]??"0",10);return parseInt(n.split(".")[0]??"0",10)>i}function Et(e,t){let r=e.split("-")[0]??"0.0.0",n=t.split("-")[0]??"0.0.0",i=r.split(".").map(Number),o=n.split(".").map(Number);for(let C=0;C<3;C++){let A=i[C]??0,B=o[C]??0;if(A>B)return 1;if(A<B)return-1}let s=ze(e),l=ze(t);if(!s&&l)return 1;if(s&&!l)return-1;if(!s&&!l)return 0;let f={alpha:0,beta:1,rc:2},m=f[s.channel]??99,h=f[l.channel]??99;if(m!==h)return m>h?1:-1;let v=s.number-l.number;return v===0?0:v>0?1:-1}async function ko(){let e=Ce();if(e==="0.0.0-dev")return{currentVersion:e,latestVersion:e,updateAvailable:!1,isMajorUpdate:!1,isPrerelease:!0,channel:"dev"};g.emit("update:checking",{});let t=await Rt();if(!t)return g.emit("update:check-failed",{error:"Network error or timeout"}),null;let r=ze(e),n;if(r){let l=Nt(t,r.channel),f=l[l.length-1],m=He(t,"latest");m&&Et(m,e)>0?n=m:n=f??e}else n=He(t,"latest")??e;let i=Et(n,e)>0,o=i&&Ar(e,n),s={currentVersion:e,latestVersion:n,updateAvailable:i,isMajorUpdate:o,isPrerelease:!!r,channel:r?.channel};return i?o?g.emit("update:major-available",{currentVersion:e,latestVersion:n}):g.emit("update:available",{currentVersion:e,latestVersion:n}):g.emit("update:not-available",{currentVersion:e}),s}var Tt=[It];async function ge(e){let[t,r]=await p(async()=>(await K`SELECT 1 FROM __noorm_version__ LIMIT 1`.execute(e),!0));return r?!1:t}async function Mt(e){if(!await ge(e))return 0;let[r,n]=await p(async()=>e.selectFrom("__noorm_version__").select("noorm_version").orderBy("id","desc").limit(1).executeTakeFirst());return n?0:r?.noorm_version??0}async function We(e){let t=await Mt(e),r=L.schema;return g.emit("version:schema:checking",{current:t}),{current:t,expected:r,needsMigration:t<r,isNewer:t>r}}async function Lt(e,t,r){let n=performance.now();g.emit("version:schema:migrating",{from:0,to:L.schema});for(let o of Tt){let[,s]=await p(()=>o.up(e,t));if(s)throw new Y("schema",o.version,s)}await e.insertInto("__noorm_version__").values({cli_version:Ce(),noorm_version:L.schema,state_version:r?.stateVersion??L.state,settings_version:r?.settingsVersion??L.settings}).execute();let i=performance.now()-n;g.emit("version:schema:migrated",{from:0,to:L.schema,durationMs:i}),await fe(e)}async function Ot(e){if(!await ge(e))return null;let[r,n]=await p(async()=>e.selectFrom("__noorm_version__").select(["state_version","settings_version"]).orderBy("id","desc").limit(1).executeTakeFirst());return n||!r?null:{stateVersion:r.state_version,settingsVersion:r.settings_version}}async function Ye(e,t,r){let n=await We(e);if(n.isNewer)throw g.emit("version:mismatch",{layer:"schema",current:n.current,expected:n.expected}),new ee("schema",n.current,n.expected);if(!n.needsMigration)return;if(n.current===0){await Lt(e,t,r);return}let i=performance.now();g.emit("version:schema:migrating",{from:n.current,to:L.schema});let o=await Ot(e),s=Tt.filter(f=>f.version>n.current);for(let f of s){let[,m]=await p(()=>f.up(e,t));if(m)throw new Y("schema",f.version,m)}await e.insertInto("__noorm_version__").values({cli_version:Ce(),noorm_version:L.schema,state_version:r?.stateVersion??o?.stateVersion??L.state,settings_version:r?.settingsVersion??o?.settingsVersion??L.settings}).execute();let l=performance.now()-i;g.emit("version:schema:migrated",{from:n.current,to:L.schema,durationMs:l}),await fe(e)}async function Br(e,t,r){await Ye(e,t,r)}import{relative as Fr,sep as qe}from"path";function Ur(e,t,r,n){let i=l=>l.split(/[\\/]/).join(qe),o=r.map(i),s=n.map(i);return e.filter(l=>{let f=Fr(t,l),m=o.length===0||o.some(v=>f===v||f.startsWith(v+qe)),h=s.some(v=>f===v||f.startsWith(v+qe));return m&&!h})}import{createWriteStream as On}from"fs";import{join as Dn,dirname as Pn}from"path";import{mkdir as Vn}from"fs/promises";var Zr=["CI","CONTINUOUS_INTEGRATION","GITHUB_ACTIONS","GITLAB_CI","CIRCLECI","TRAVIS","JENKINS_URL","BUILDKITE","TEAMCITY_VERSION","TF_BUILD","BITBUCKET_BUILD_NUMBER"];function Ie(){if(process.env.NOORM_HEADLESS==="true")return!0;for(let e of Zr)if(process.env[e])return!0;return!process.stdout.isTTY}function hi(){return process.env.NODE_ENV==="development"||process.env.NOORM_DEV==="true"}function bi(){return process.env.NOORM_CONFIG}var Te=mt(Dt(),1);import{join as En,dirname as Tn}from"path";import{createWriteStream as Mn}from"fs";import{mkdir as Ln}from"fs/promises";var Pt={silent:0,error:1,warn:2,info:3,verbose:4},Vt={enabled:!0,level:"info",file:".noorm/state/noorm.log",maxSize:"10mb",maxFiles:5};var Qr=[/^error$/,/:error$/,/:failed$/],Xr=[/:warning$/,/:blocked$/,/:expired$/],en=[/:before$/,/:acquiring$/,/:file$/],tn=[/^update:/,/^global-settings:/,/^settings:/,/^file:/,/^change:/,/^build:/,/^run:/,/^lock:/,/^state:/,/^config:/,/^secret:/,/^known-user:/,/^db:/,/^template:/,/^identity:/,/^connection:/,/^app:/,/^transfer:/,/^dt:/,/^vault:/];function Re(e){for(let t of Qr)if(t.test(e))return"error";for(let t of Xr)if(t.test(e))return"warn";for(let t of en)if(t.test(e))return"debug";for(let t of tn)if(t.test(e))return"info";return"debug"}function Kt(e,t){if(t==="silent")return!1;if(t==="verbose")return!0;let r=Re(e),n=rn(r),i=Pt[t];return n<=i}function rn(e){switch(e){case"error":return 1;case"warn":return 2;case"info":return 3;case"debug":return 4}}var nn={"file:before":e=>`Executing ${e.filepath}`,"file:after":e=>e.status==="success"?`Executed ${e.filepath} (${e.durationMs}ms)`:`Failed ${e.filepath}: ${e.error}`,"file:skip":e=>`Skipped ${e.filepath} (${e.reason})`,"change:start":e=>`Starting ${e.direction} for ${e.name} (${e.files?.length??0} files)`,"change:file":e=>`${e.change}: ${e.filepath} (${e.index}/${e.total})`,"change:complete":e=>`${e.direction} ${e.name}: ${e.status} (${e.durationMs}ms)`,"build:start":e=>`Starting schema build (${e.fileCount} files)`,"build:complete":e=>e.status==="success"?`Build complete: ${e.filesRun} run, ${e.filesSkipped} skipped (${e.durationMs}ms)`:`Build failed after ${e.filesRun} files (${e.durationMs}ms)`,"run:file":e=>`Running ${e.filepath} on ${e.configName}`,"run:dir":e=>`Running directory ${e.dirpath} (${e.fileCount} files) on ${e.configName}`,"lock:acquiring":e=>`Acquiring lock for ${e.configName} as ${e.identity}`,"lock:acquired":e=>`Lock acquired for ${e.configName}`,"lock:released":e=>`Lock released for ${e.configName}`,"lock:blocked":e=>`Lock blocked: ${e.configName} held by ${e.holder}`,"lock:expired":e=>`Lock expired for ${e.configName} (was held by ${e.previousHolder})`,"state:loaded":e=>`State loaded: ${e.configCount} configs, version ${e.version}`,"state:persisted":e=>`State saved: ${e.configCount} configs`,"state:migrated":e=>`State migrated from ${e.from} to ${e.to}`,"config:created":e=>`Created config: ${e.name}`,"config:updated":e=>`Updated config ${e.name}: ${e.fields?.join(", ")}`,"config:deleted":e=>`Deleted config: ${e.name}`,"config:activated":e=>`Activated config: ${e.name}${e.previous?` (was ${e.previous})`:""}`,"secret:set":e=>`Set secret ${e.key} for ${e.configName}`,"secret:deleted":e=>`Deleted secret ${e.key} from ${e.configName}`,"global-secret:set":e=>`Set global secret: ${e.key}`,"global-secret:deleted":e=>`Deleted global secret: ${e.key}`,"db:creating":e=>`Creating database ${e.database} for ${e.configName}`,"db:created":e=>`Created database ${e.database} (${e.durationMs}ms)`,"db:destroying":e=>`Destroying database ${e.database} for ${e.configName}`,"db:destroyed":e=>`Destroyed database ${e.database}`,"db:bootstrap":e=>`Bootstrapped ${e.tables?.length??0} tables for ${e.configName}`,"template:render":e=>`Rendered template ${e.filepath} (${e.durationMs}ms)`,"template:load":e=>`Loaded ${e.format} data from ${e.filepath}`,"identity:resolved":e=>`Identity resolved: ${e.name} (${e.source})`,"identity:created":e=>`Created identity: ${e.name} <${e.email}>`,"identity:registered":e=>`Registered identity for ${e.name}`,"identity:synced":e=>`Synced ${e.discovered} identities for ${e.configName}`,"identity:not-found":()=>"No identity found","vault:initialized":e=>`Vault initialized for ${e.identityHash}`,"vault:secret:created":e=>`Created vault secret: ${e.key} (by ${e.setBy})`,"vault:secret:updated":e=>`Updated vault secret: ${e.key} (by ${e.setBy})`,"vault:secret:deleted":e=>`Deleted vault secret: ${e.key}`,"vault:propagated":e=>`Propagated vault access to ${e.toEmail}`,"vault:copy:starting":e=>`Copying vault secrets from ${e.source} to ${e.destination} (${e.keys==="all"?"all":`${e.keys} keys`})`,"vault:copy:completed":e=>`Vault copy complete: ${e.copied} copied, ${e.skipped} skipped, ${e.errors} errors`,"config:exported":e=>`Exported ${e.configName} to ${e.recipient}`,"config:imported":e=>`Imported ${e.configName} from ${e.from}`,"connection:open":e=>`Connected to ${e.configName} (${e.dialect})`,"connection:close":e=>`Disconnected from ${e.configName}`,"connection:error":e=>`Connection error for ${e.configName}: ${e.error}`,"logger:started":e=>`Logger started: ${e.file} at ${e.level} level`,"logger:rotated":e=>`Rotated log: ${e.oldFile} -> ${e.newFile}`,"logger:error":e=>`Logger error: ${e.error?.message??e.error}`,"logger:flushed":e=>`Flushed ${e.entriesWritten} log entries`,"settings:loaded":e=>`Settings loaded from ${e.path}`,"settings:saved":e=>`Settings saved to ${e.path}`,"settings:initialized":e=>`Settings initialized at ${e.path}${e.force?" (forced)":""}`,error:e=>`Error in ${e.source}: ${on(e.error)}`};function on(e){if(e==null)return"Unknown error";if(e instanceof Error||typeof e=="object"&&"message"in e&&typeof e.message=="string")return e.message;if(typeof e=="object"){let t=e;if(t.code&&t.severity){let n=[`${t.severity} ${t.code}`];return t.routine&&n.push(`in ${t.routine}`),t.where&&n.push(`- ${String(t.where).slice(0,100)}`),n.join(" ")}let r=Object.keys(t).slice(0,3);if(r.length>0)return`{${r.map(n=>`${n}: ${sn(t[n])}`).join(", ")}}`}return String(e)}function sn(e){return e==null?String(e):typeof e=="string"?e.length>30?`"${e.slice(0,27)}..."`:`"${e}"`:typeof e=="number"||typeof e=="boolean"?String(e):"[...]"}function jt(e,t){let r=nn[e];if(r){let[i,o]=P(()=>r(t));if(!o&&i!==null)return i}let n=Object.entries(t).slice(0,3).map(([i,o])=>`${i}=${an(o)}`);return n.length===0?e.replace(/:/g," "):`${e.replace(/:/g," ")}: ${n.join(", ")}`}function an(e){return e==null?String(e):typeof e=="string"?e.length>50?`"${e.slice(0,47)}..."`:`"${e}"`:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?`[${e.length} items]`:typeof e=="object"?`{${Object.keys(e).length} keys}`:String(e)}var rt=mt(Yt(),1),R=rt.default,{Ansis:Ii,fg:Ri,bg:Ni,rgb:Ei,bgRgb:Ti,hex:Mi,bgHex:Li,reset:Oi,inverse:Di,hidden:Pi,visible:Vi,bold:Ki,dim:ji,italic:Ai,underline:Bi,strikethrough:Fi,black:Ui,red:Hi,green:zi,yellow:Wi,blue:Yi,magenta:qi,cyan:Gi,white:Ji,gray:Zi,redBright:Qi,greenBright:Xi,yellowBright:es,blueBright:ts,magentaBright:rs,cyanBright:ns,whiteBright:os,bgBlack:is,bgRed:ss,bgGreen:as,bgYellow:cs,bgBlue:us,bgMagenta:ls,bgCyan:ms,bgWhite:ds,bgGray:gs,bgRedBright:fs,bgGreenBright:ps,bgYellowBright:ys,bgBlueBright:hs,bgMagentaBright:bs,bgCyanBright:ws,bgWhiteBright:xs}=rt.default;var V={primary:"#3B82F6",success:"#10B981",warning:"#F59E0B",error:"#EF4444",info:"#8B5CF6",debug:"#8B5CF6",action:"#3B82F6",secondary:"#6B7280",muted:"#9CA3AF",destructive:"#EF4444",text:"#F3F4F6",textDim:"#D1D5DB",border:"#4B5563",borderLight:"#6B7280",background:"#1F2937"},x={primary:e=>R.hex(V.primary)(e),success:e=>R.hex(V.success)(e),warning:e=>R.hex(V.warning)(e),error:e=>R.hex(V.error)(e),info:e=>R.hex(V.info)(e),debug:e=>R.hex(V.debug)(e),action:e=>R.hex(V.action)(e),secondary:e=>R.hex(V.secondary)(e),muted:e=>R.hex(V.muted)(e),destructive:e=>R.hex(V.destructive)(e),text:e=>R.hex(V.text)(e),textDim:e=>R.hex(V.textDim)(e),border:e=>R.hex(V.border)(e),borderLight:e=>R.hex(V.borderLight)(e),bold:R.bold,dim:R.dim,italic:R.italic,underline:R.underline,inverse:R.inverse,reset:R.reset},Ne={success:"\u2713",error:"\u2717",warning:"\u26A0",info:"\u2022",debug:"\u25CB",pending:"\u25CC",arrow:"\u2192",bullet:"\u2022",check:"\u2713",cross:"\u2717",star:"\u2605",dot:"\xB7"};var G={string(e){return x.text(e)},number(e){return x.warning(String(e))},boolean(e){return e?x.success("true"):x.error("false")},nil(){return x.muted("null")},pair(e,t){let r=typeof t=="number"?G.number(t):typeof t=="boolean"?G.boolean(t):t==null?G.nil():G.string(String(t));return`${x.muted(e)}=${r}`},path(e){return x.info(e)},duration(e){return e<1e3?x.muted(`${e}ms`):x.muted(`${(e/1e3).toFixed(2)}s`)},count(e,t,r){let n=e===1?t:r??`${t}s`;return`${x.warning(String(e))} ${x.text(n)}`}},pe={error:x.error,warn:x.warning,info:x.info,debug:x.debug},ye={error:Ne.error,warn:Ne.warning,info:Ne.info,debug:Ne.debug};var gn={error:{icon:ye.error,color:pe.error},warn:{icon:ye.warn,color:pe.warn},info:{icon:ye.info,color:pe.info},debug:{icon:ye.debug,color:pe.debug}};function fn(e){if(e===null)return G.nil();if(e===void 0)return x.muted("undefined");if(typeof e=="string")return e.length>50?x.text(`"${e.slice(0,47)}..."`):x.text(e);if(typeof e=="number")return G.number(e);if(typeof e=="boolean")return G.boolean(e);if(e instanceof Date)return x.muted(e.toISOString());if(e instanceof Error)return x.error(e.message);if(Array.isArray(e))return e.length===0?x.muted("[]"):e.length<=3&&e.every(t=>typeof t=="string"||typeof t=="number")?x.text(`[${e.join(", ")}]`):x.muted(`[${e.length} items]`);if(typeof e=="object"){let[t,r]=P(()=>JSON.stringify(e));return r?x.muted("[object]"):x.text(t.length>60?t.slice(0,57)+"...":t)}return x.text(String(e))}function pn(e){let t=[];for(let[r,n]of Object.entries(e))t.push(`${x.muted(r)}=${fn(n)}`);return t.join(" ")}function qt(e,t,r,n){let i=gn[e],o=i.color(i.icon),s=i.color(t),l=`${o} ${s} ${x.text(r)}`;return n&&Object.keys(n).length>0&&(l+=` ${pn(n)}`),l}var Cs={success:x.success("\u2713"),failed:x.error("\u2717"),partial:x.warning("\u26A0"),pending:x.warning("\u25CB"),skipped:x.muted("\u25CB"),reverted:x.info("\u21A9")};var Gt=12,U=new Set;function yn(e){return e.replace(/[-_\s]+(.)?/g,(t,r)=>r?r.toUpperCase():"").replace(/^[A-Z]/,t=>t.toLowerCase())}function hn(e){return e.replace(/[-\s]+/g,"_").replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase()}function bn(e){return e.replace(/[_\s]+/g,"-").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Jt(e){return e.replace(/[-_\s]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function nt(e){return e.replace(/[-_\s]/g,"")}function Ee(e){for(let t of e){let r=[t,`noorm_${t}`];for(let n of r)U.add(n),U.add(n.toLowerCase()),U.add(n.toUpperCase()),U.add(yn(n)),U.add(hn(n)),U.add(bn(n)),U.add(Jt(n)),U.add(nt(n)),U.add(nt(n).toLowerCase()),U.add(nt(n).toUpperCase())}}Ee(["password","pass","secret","token","key","credential","api_key","apikey","access_key","secret_key","db_pass","db_password","redis_pass","client_secret","private_key","encryption_key","auth_token","bearer_token","jwt_secret","session_secret"]);function wn(e,t,r){let n=e.length,i=Math.min(n,Gt),o=Math.min(Math.ceil(n/5),4)||1,s="*".repeat(i);return r==="verbose"&&n>=4&&(s=e.slice(0,o)+"*".repeat(Math.max(0,i-4)),s.length<i&&(s+="*".repeat(i-s.length))),n>Gt&&(s+="..."),`<${Jt(t)} ${s} (${n}) />`}function Zt(e){if(e.stages){for(let t of Object.values(e.stages))if(t.secrets&&Array.isArray(t.secrets)){let r=t.secrets.map(n=>n.key);Ee(r)}}}function Qt(){let e=[];return e.push(g.on("secret:set",({key:t})=>{Ee([t])})),e.push(g.on("global-secret:set",({key:t})=>{Ee([t])})),()=>e.forEach(t=>t())}function he(e,t){if(e==null||typeof e!="object"||e instanceof URL||e instanceof Date)return e;if(Array.isArray(e))return e.map(n=>typeof n=="object"&&n!==null?he(n,t):n);let r={...e};for(let n in r){let i=Object.getOwnPropertyDescriptor(r,n);if(i&&!i.writable&&!i.set)continue;let o=r[n];U.has(n)&&typeof o=="string"?r[n]=wn(o,n,t):typeof o=="object"&&o!==null&&(r[n]=he(o,t))}return r}import{stat as xn,rename as _n,readdir as vn,unlink as $n}from"fs/promises";import{dirname as er,basename as tr,join as rr,extname as nr}from"path";function kn(e){let t=e.toLowerCase().match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/);if(!t||!t[1])throw new Error(`Invalid size format: ${e}`);let r=parseFloat(t[1]),n=t[2]??"b",o={b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024}[n];if(o===void 0)throw new Error(`Invalid size unit: ${n}`);return Math.floor(r*o)}function Sn(e){let t=er(e),r=nr(e),n=tr(e,r),i=new Date().toISOString().replace(/:/g,"-").replace(/\.\d+Z$/,"");return rr(t,`${n}.${i}${r}`)}async function Cn(e,t){let[r,n]=await p(()=>xn(e));return n?!1:r.size>=t}async function In(e){let t=Sn(e),[r,n]=await p(()=>_n(e,t));if(n)throw new Error(`Failed to rotate log file: ${n.message}`);return t}async function Rn(e){let t=er(e),r=nr(e),n=tr(e,r),i=new RegExp(`^${Xt(n)}\\.\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}${Xt(r)}$`),[o,s]=await p(()=>vn(t));return s?[]:o.filter(l=>i.test(l)).map(l=>rr(t,l)).sort().reverse()}async function Nn(e,t){let n=(await Rn(e)).slice(t),i=[];for(let o of n){let[s,l]=await p(()=>$n(o));l||i.push(o)}return i}async function ot(e,t,r){let n=kn(t);if(!await Cn(e,n))return{rotated:!1};let o=await In(e),s=await Nn(e,r);return{rotated:!0,oldFile:e,newFile:o,deletedFiles:s.length>0?s:void 0}}function Xt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function or(e,t){for(let[r,n]of Object.entries(e))if(!(r in t))if(n==null)t[r]=n;else if(Array.isArray(n))t[r]=JSON.stringify(n);else if(typeof n=="object")for(let[i,o]of Object.entries(n)){let s=`${r}.${i}`;s in t||(t[s]=typeof o=="object"&&o!==null?JSON.stringify(o):o)}else t[r]=n}var be=class{#r;#t;#o;#e={file:null,console:process.stdout,diagnostics:process.stderr};#s=!1;#l=!1;#i=null;#n="idle";#a=null;#c=null;constructor(t){this.#r=t.projectRoot,this.#t={...Vt,...t.config},this.#o=t.context??{},this.#l=t.json??Ie(),this.#l&&(this.#s=!1),t.color&&(this.#s=t.color),t.console&&(this.#e.console=t.console),t.diagnostics&&(this.#e.diagnostics=t.diagnostics),t.file&&(this.#e.file=t.file),this.#c=g.on("app:shutdown",async()=>{await this.stop()})}get state(){return this.#n}get level(){return this.#t.level}get filepath(){return En(this.#r,this.#t.file)}get isEnabled(){return this.#t.enabled&&this.#t.level!=="silent"}get stats(){return this.#n!=="running"||!this.#i?null:{pending:this.#i.pending,totalWritten:this.#i.stats.processed}}async flush(){!this.#i||this.#n!=="running"||await this.#i.flush()}setContext(t){this.#o={...this.#o,...t}}clearContext(){this.#o={}}async start(){if(this.#n==="idle"&&this.isEnabled){if(!this.#e.file&&this.#t.file){let t=this.filepath;await Ln(Tn(t),{recursive:!0}),this.#e.file=Mn(t,{flags:"a"})}if(this.#e.file){let t=await ot(this.filepath,this.#t.maxSize,this.#t.maxFiles);t.rotated&&g.emit("logger:rotated",{oldFile:t.oldFile,newFile:t.newFile}),this.#a=setInterval(()=>{this.#p()},6e4)}this.#i=g.queue(/./,t=>{let{event:r,data:n}=t;this.#f(r,n)},{name:"logger",autoStart:!0,concurrency:1,type:"fifo",debug:process.env.NOORM_LOGGER_DEBUG==="true"}),this.#n="running",g.emit("logger:started",{file:this.filepath,level:this.#t.level})}}async stop(){this.#n==="running"&&(this.#n="flushing",this.#a&&(clearInterval(this.#a),this.#a=null),this.#i&&(await this.#i.stop(),this.#i=null),this.#e.file&&this.#e.file!==process.stdout&&this.#e.file!==process.stderr&&await new Promise(t=>{this.#e.file.end(()=>t())}),this.#c&&(this.#c(),this.#c=null),this.#n="stopped")}#f(t,r){if(t.startsWith("logger:")||!Kt(t,this.#t.level))return;let n=Re(t);(t.endsWith(":complete")||t.endsWith(":after"))&&"status"in r&&r.status!=="success"&&r.status!=="skipped"&&(n="error"),r.error&&(n="error");let i=he({...r},this.#t.level),o=jt(t,i);this.#m(n,t,o,i),this.#d(n,t,o,i)}#m(t,r,n,i){let o=i&&Object.keys(i).length>0;if(this.#l){let s=this.#g(t,r,n,i,o);this.#e.console.write(JSON.stringify(s)+`
|
|
4
|
+
`)}else if(this.#s){let s=(0,Te.default)().format("YY-MM-DD HH:mm:ss"),l=qt(t,r,n,o?i:void 0);this.#e.diagnostics.write(`[${s}] ${l}
|
|
5
|
+
`)}else{let s=(0,Te.default)().format("YY-MM-DD HH:mm:ss"),l=t.toUpperCase().padEnd(5),f=`[${s}] [${l}] [${r}] ${n}`;o&&(f+=` ${JSON.stringify(i)}`),this.#e.diagnostics.write(f+`
|
|
6
|
+
`)}}#d(t,r,n,i){if(!this.#e.file)return;let o=i&&Object.keys(i).length>0,s=this.#g(t,r,n,i,o);this.#e.file.write(JSON.stringify(s)+`
|
|
7
|
+
`)}#g(t,r,n,i,o){let s={time:(0,Te.default)().format("YYYY-MM-DDTHH:mm:ss.SSSZ"),type:r,level:t,message:n};return o&&Object.keys(i).length>0&&or(i,s),this.#o&&Object.keys(this.#o).length>0&&or(this.#o,s),s}async#p(){if(!this.#e.file||this.#n!=="running")return;let t=await ot(this.filepath,this.#t.maxSize,this.#t.maxFiles);t.rotated&&g.emit("logger:rotated",{oldFile:t.oldFile,newFile:t.newFile})}info(t,r){this.#u("info",t,r)}warn(t,r){this.#u("warn",t,r)}error(t,r){this.#u("error",t,r)}debug(t,r){this.#u("debug",t,r)}#u(t,r,n){if(!this.isEnabled||this.#n!=="running")return;let i={error:1,warn:2,info:3,debug:4},o={silent:0,error:1,warn:2,info:3,verbose:4};if(i[t]>o[this.#t.level])return;let s=n?he({...n},this.#t.level):{};this.#m(t,"log",r,s),this.#d(t,"log",r,s)}result(t){let r=JSON.stringify(t)+`
|
|
8
|
+
`;this.#e.console&&this.#e.console.write(r),this.#e.file&&this.#e.file.write(r)}},it=null;function ir(e){if(!it&&e){let t={projectRoot:"",settings:{}};typeof e=="string"?t.projectRoot=e:t=dt(t,e),it=new be(t)}return it}var Kn=null,sr=null,at=null,st={};function ra(e,t){sr||(st=t??{},Kn=Qt(),sr=g.once("settings:loaded",async r=>{let{settings:n}=r;if(!n.logging?.enabled)return;Zt(n);let i;if(!Ie()){let o=Dn(e,n.logging.file??".noorm/state/noorm.log"),[,s]=await p(()=>Vn(Pn(o),{recursive:!0}));s||(i=On(o,{flags:"a"}))}at=new be({projectRoot:e,settings:n,config:n.logging,file:i,console:st.console,diagnostics:st.diagnostics}),await at.start()}))}function ar(){return at??ir()}async function Me(e,t){let[r,n]=await p(()=>e.selectFrom("__noorm_identities__").select(["id"]).where("identity_hash","=",t.identityHash).executeTakeFirst());if(n)return g.emit("error",{source:"identity:register:select",error:n,context:{identityHash:t.identityHash,name:t.name,email:t.email}}),{ok:!1,registered:!1,error:n.message};if(r){let[,o]=await p(()=>e.updateTable("__noorm_identities__").set({last_seen_at:new Date}).where("identity_hash","=",t.identityHash).execute());return o?(g.emit("error",{source:"identity:register:update",error:o,context:{identityHash:t.identityHash,name:t.name,email:t.email}}),{ok:!1,registered:!1,error:o.message}):{ok:!0,registered:!1}}let[,i]=await p(()=>e.insertInto("__noorm_identities__").values({identity_hash:t.identityHash,email:t.email,name:t.name,machine:t.machine,os:t.os,public_key:t.publicKey}).execute());return i?(g.emit("error",{source:"identity:register:insert",error:i,context:{identityHash:t.identityHash,name:t.name,email:t.email}}),{ok:!1,registered:!1,error:i.message}):(g.emit("identity:registered",{identityHash:t.identityHash,name:t.name,email:t.email}),{ok:!0,registered:!0})}async function cr(e,t){let[r,n]=await p(()=>e.selectFrom("__noorm_identities__").selectAll().execute());return n?{ok:!1,users:[],error:n.message}:{ok:!0,users:(r??[]).map(o=>({identityHash:o.identity_hash,email:o.email,name:o.name,publicKey:o.public_key,machine:o.machine,os:o.os,lastSeen:o.last_seen_at instanceof Date?o.last_seen_at.toISOString():String(o.last_seen_at),source:t}))}}async function ur(e,t,r){let[n,i]=await p(()=>ge(e));if(i)return{ok:!1,error:i.message};if(!n)return{ok:!0,knownUsersCount:0};let o=!1;if(t){let m=await Me(e,t);if(!m.ok)return{ok:!1,error:m.error};o=m.registered}let[s,l]=await p(()=>e.selectFrom("__noorm_identities__").select(e.fn.count("id").as("count")).executeTakeFirst());if(l)return{ok:!1,error:l.message};let f=Number(s?.count??0);return g.emit("identity:synced",{configName:r,registered:o,knownUsersCount:f}),{ok:!0,registered:o,knownUsersCount:f}}async function jn(e){let[t]=await p(()=>de());if(ar()?.info("Loaded existing identity",{identity:t}),!t)return{ok:!0,knownUsersCount:0};let[r,n]=await p(()=>Le(e.connection,e.name));if(n)return g.emit("error",{source:"identity:sync:connection",error:n,context:{configName:e.name}}),{ok:!0,knownUsersCount:0};let i=r.db,o=await ur(i,t,e.name);if(!o.ok)return o;if(o.knownUsersCount&&o.knownUsersCount>0){let[s,l]=await p(()=>cr(i,e.name));if(l)return g.emit("error",{source:"identity:fetch-known-users",error:l,context:{configName:e.name}}),{ok:!1,error:l.message};let{ok:f,users:m,error:h}=s;return f?{...o,knownUsers:m}:{ok:!1,error:h}}return o}var ct=null;function An(e={}){return e.configIdentity||e.cryptoIdentity?Pe(e):(ct||(ct=Pe(e)),ct)}function ka(e){return An({configIdentity:e.identity})}async function fe(e){let t=await de();if(t||g.emit("identity:not-found"),!t)return;let[,r]=await p(()=>Me(e,t));r&&g.emit("error",{error:r,source:"identity:ensure",context:{identity:t}})}async function Bn(e){switch(e){case"sqlite":return(await import("./sqlite-KSGG7IKM.js")).createSqliteConnection;case"postgres":return(await import("./postgres-7E352BHM.js")).createPostgresConnection;case"mysql":return(await import("./mysql-EEPNIS5Q.js")).createMysqlConnection;case"mssql":return(await import("./mssql-Y7W7F4UH.js")).createMssqlConnection;default:throw new Error(`Unsupported dialect: ${e}`)}}function Fn(e){return{postgres:"npm install pg",mysql:"npm install mysql2",sqlite:"npm install better-sqlite3",mssql:"npm install tedious tarn"}[e]}async function Le(e,t="__default__"){let[r,n]=await p(()=>gt(async()=>{let[m,h]=await p(()=>Bn(e.dialect));if(h)throw h.message.includes("Cannot find module")?new Error(`Missing driver for ${e.dialect}. Install it with:
|
|
9
|
+
`+Fn(e.dialect)):h;let v=await m(e);return await K`SELECT 1`.execute(v.db),v},{retries:3,delay:1e3,backoff:2,jitterFactor:.1,shouldRetry:m=>{let h=m.message.toLowerCase();return h.includes("authentication")||h.includes("password")||h.includes("missing driver")?!1:h.includes("econnrefused")||h.includes("etimedout")||h.includes("too many connections")||h.includes("connection reset")}}));if(n)throw g.emit("connection:error",{configName:t,error:n.message}),n;let i=De(),o=i.track(r,t),s=r.destroy,l=async()=>{i.untrack(o),await s(),g.emit("connection:close",{configName:t})},f={db:r.db,dialect:r.dialect,destroy:l};return g.emit("connection:open",{configName:t,dialect:e.dialect}),await fe(f.db),f}var Un={postgres:"postgres",mysql:void 0,sqlite:void 0,mssql:"master"};async function Hn(e,t={}){let r=e;if(t.testServerOnly&&e.dialect!=="sqlite"){let o=Un[e.dialect];r={...e,database:o??e.database}}let[n,i]=await p(()=>Le(r,"__test__"));return i?{ok:!1,error:i.message}:(await n.destroy(),{ok:!0})}export{Ae as a,Ir as b,Rr as c,Nr as d,Er as e,Tr as f,vr as g,$r as h,kr as i,De as j,lr as k,Pe as l,fr as m,Lr as n,Dr as o,Pr as p,Vr as q,de as r,Ce as s,ko as t,ge as u,Lt as v,Br as w,Ur as x,Ie as y,hi as z,bi as A,Dt as B,R as C,V as D,wn as E,be as F,ra as G,Me as H,jn as I,An as J,ka as K,Le as L,Hn as M};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
var se=(t,e,r=!1)=>{Object.entries(e).map(([i,n])=>{Object.defineProperty(t,i,{value:n,writable:!1,enumerable:!1,configurable:r})})};var ke=(t,e)=>e.split(".").reduce((i,n)=>{if(i==null)return null;if(i instanceof Map)return i.get(n);if(i instanceof Set){let s=i.has(n),o=Array.from(i);return s?o[o.indexOf(n)]:o[n]}return i[n]},t),tt=(t,e,r)=>{u(typeof t=="object"&&t!==null,"obj must be a non-null object"),u(typeof e=="string"&&e.length>0,"path must be a non-empty string");let i=e.split("."),n=i[i.length-1],s=t;for(let o=0;o<i.length-1;o++){let c=i[o];if(s==null)throw new Error(`Cannot set property '${c}' on ${s} at path: ${i.slice(0,o).join(".")}`);if(typeof s!="object")throw new Error(`Cannot set property '${c}' on primitive value at path: ${i.slice(0,o).join(".")}`);c in s||(s[c]={}),s=s[c]}if(s==null)throw new Error(`Cannot set property '${n}' on ${s}`);if(typeof s!="object")throw new Error(`Cannot set property '${n}' on primitive value`);s[n]=r},_e=(t,e)=>{u(typeof t=="object"&&t!==null,"obj must be a non-null object"),u(Array.isArray(e),"entries must be an array");for(let r=0;r<e.length;r++){let i=e[r];u(Array.isArray(i)&&i.length===2,`entry ${r} must be a [path, value] tuple`);let[n,s]=i;u(typeof n=="string"&&n.length>0,`entry ${r} must have a non-empty string path (received: ${typeof n})`),tt(t,n,s)}};var Se=class extends Error{};var ie=(t,e)=>t==null||(e instanceof Function?!!e(t):!!e),u=(t,e,r)=>{if((t instanceof Function?!!t():!!t)===!1)throw new(r||Se)(e||"assertion failed")};var A=(t,...e)=>{t!==void 0&&u(...e)};var B=t=>t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="symbol"||typeof t=="bigint",$=t=>t==null,H=(t,e)=>$(t)===!1&&$(e)===!1&&t.constructor===e.constructor;var b=t=>t instanceof Function,Te=t=>t instanceof Object,rt=new Set([Date,RegExp,Function,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError,DOMException,Array,Set,Map,WeakMap,WeakSet,Promise,Proxy,Symbol,BigInt,WeakRef,FinalizationRegistry,DataView,ArrayBuffer,Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array,FormData,URLSearchParams]),C=t=>!B(t)&&Te(t)&&!rt.has(t.constructor);var nt=new Set(["true","yes",!0]),st=new Set(["false","no",!1]),qe=t=>nt.has(t),Ue=t=>st.has(t);var O=async t=>{u(b(t),"fn must be a function");try{return[await t(),null]}catch(e){return[null,e]}},S=t=>{u(b(t),"fn must be a function");try{return[t(),null]}catch(e){return[null,e]}};var k=new Map,R=new Map;var it=new Set(["__proto__","constructor","prototype"]),P=t=>typeof t=="string"&&it.has(t),oe=t=>Object.keys(t).filter(e=>!P(e));var ot=()=>{k.set(Array,(e,r)=>e.map(i=>v(i,r))),k.set(Object,(e,r)=>{let i={},n=Object.keys(e);for(let s of n)P(s)||(i[s]=v(e[s],r));return i}),k.set(Map,(e,r)=>{let i=new Map;for(let n of e.entries()){let[s,o]=n;i.set(s,v(o,r))}return i}),k.set(Set,(e,r)=>{let i=new Set;for(let n of e)i.add(v(n,r));return i}),[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array].forEach(e=>{k.set(e,r=>new e(r))}),k.set(ArrayBuffer,e=>e.slice(0)),k.set(DataView,e=>{let r=e.buffer.slice(0);return new DataView(r,e.byteOffset,e.byteLength)}),k.set(Error,(e,r)=>{let i=typeof structuredClone=="function"?structuredClone(e):new e.constructor(e.message);e.name&&(i.name=e.name),e.stack&&(i.stack=e.stack);let n=Object.keys(e);for(let s of n)s!=="name"&&s!=="message"&&s!=="stack"&&!P(s)&&(i[s]=v(e[s],r));return i}),k.set(Date,e=>new Date(e.getTime())),k.set(RegExp,e=>new RegExp(e.source,e.flags))},Ke=!1,at=new Set([ArrayBuffer,DataView,Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array,Error,Date,RegExp]),v=(t,e=new WeakMap)=>{if(Ke||(ot(),Ke=!0),B(t))return t;if(e.has(t))return e.get(t);if(t instanceof Error)return k.get(Error)(t,e);let r=Object.getPrototypeOf(t)?.constructor||t.constructor,i=k.get(r);if(!i)return t;if(at.has(r))return i(t,e);let n;if(Array.isArray(t)){n=[],e.set(t,n);let o=i(t,e);return n.push(...o),n}if(t instanceof Map){n=new Map,e.set(t,n);let o=i(t,e);for(let[c,a]of o)n.set(c,a);return n}if(t instanceof Set){n=new Set,e.set(t,n);let o=i(t,e);for(let c of o)n.add(c);return n}n={},e.set(t,n);let s=i(t,e);return Object.assign(n,s),n};var ct=(t,e)=>{for(let r of e)t.push(r);return t},ut=(t,e)=>{for(let r of e)t.has(r)||t.add(r);return t},lt=(t,e)=>{t.length=0;for(let r of e)t.push(r);return t},ft=(t,e)=>{t.clear();for(let r of e)t.add(r);return t},pt=()=>{R.set(Array,(r,i,n)=>n?.mergeArrays?ct(r,i):lt(r,i)),R.set(Set,(r,i,n)=>n?.mergeSets?ut(r,i):ft(r,i)),R.set(Object,(r,i,n)=>{let s=r,o=i,c=Object.keys(o);for(let a of c)if(!P(a)){if(s[a]===void 0||$(s[a])||$(o[a])){s[a]=o[a];continue}if(H(s[a],o[a])){s[a]=J(s[a],o[a],n);continue}s[a]=o[a]}return s}),R.set(Map,(r,i,n)=>{let s=r,o=i;for(let[c,a]of o.entries()){if(!s.has(c)){s.set(c,a);continue}let l=s.get(c);if($(l)||$(a)){s.set(c,a);continue}if(H(a,l)){s.set(c,J(l,a,n));continue}s.set(c,a)}return s}),R.set(Error,(r,i,n)=>{let s=r,o=i,c=oe(o);for(let a of c){if(s[a]===void 0){s[a]=o[a];continue}if(H(s[a],o[a])){s[a]=J(s[a],o[a],n);continue}s[a]=o[a]}return s}),[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array].forEach(r=>{R.set(r,(i,n)=>new r(n))}),R.set(ArrayBuffer,(r,i)=>i.slice(0)),R.set(DataView,(r,i)=>{let n=i,s=n.buffer.slice(0);return new DataView(s,n.byteOffset,n.byteLength)}),[Error,TypeError,ReferenceError,SyntaxError,RangeError,EvalError,URIError].forEach(r=>{R.set(r,(i,n)=>{let s=n,o=new s.constructor(s.message);s.name&&(o.name=s.name),s.stack&&(o.stack=s.stack);let c=Object.keys(s);for(let a of c)a!=="name"&&a!=="message"&&a!=="stack"&&!P(a)&&(o[a]=s[a]);return o})})},Be=!1,Re={mergeArrays:!0,mergeSets:!0},J=(t,e,r={})=>{if(Be||(pt(),Be=!0),r={...Re,...r},B(e)||e instanceof Date)return e;if(H(e,t)){let i=Object.getPrototypeOf(t)?.constructor||t.constructor,n=R.get(i);return n?n(t,e,r):t}return e};var ht=(t,e)=>t.priority===e.priority?t.order-e.order:t.priority-e.priority,mt=(t,e)=>t.priority===e.priority?e.order-t.order:t.priority-e.priority,V=class t{heap=[];insertionCounter=0;compare;options;constructor(e={}){if(this.compare=e.lifo?mt:ht,e.compare&&(this.compare=e.compare),e.maxHeap){let r=this.compare;this.compare=(i,n)=>-r(i,n)}this.options=e}push(e,r=0){let i={value:e,priority:r,order:this.insertionCounter++};this.heap.push(i),this.bubbleUp(this.heap.length-1)}pop(){if(this.heap.length===0)return null;let e=this.heap[0],r=this.heap.pop();return this.heap.length>0&&(this.heap[0]=r,this.bubbleDown(0)),e.value}popMany(e=1){let r=[];if(e===0)return r;e>this.heap.length&&(e=this.heap.length);for(let i=e;i>0;i--)r.push(this.pop());return r}peek(){return this.isEmpty()?null:this.heap[0].value}peekMany(e=1){return this.heap.slice(0,e).map(r=>r.value)}find(e){return this.heap.find(r=>e(r.value))?.value??null}heapify(e){this.heap=e.slice(0),this.insertionCounter=e.length;for(let r=Math.floor(this.heap.length/2);r>=0;r--)this.bubbleDown(r)}clone(){let e=new t(this.options);return e.heapify(this.heap),e}toSortedArray(){let e=this.clone(),r=[];for(;e.heap.length>0;)r.push(e.pop());return r}*[Symbol.iterator](){let e=this.clone();for(;e.heap.length>0;)yield e.pop()}size(){return this.heap.length}isEmpty(){return this.heap.length===0}clear(){this.heap=[],this.insertionCounter=0}bubbleUp(e){let r=e;for(;r>0;){let i=r-1>>1;if(this.compare(this.heap[r],this.heap[i])<0)this.swap(r,i),r=i;else break}}bubbleDown(e){let r=this.heap.length,i=e;for(;;){let n=(i<<1)+1,s=n+1,o=i;if(n<r&&this.compare(this.heap[n],this.heap[o])<0&&(o=n),s<r&&this.compare(this.heap[s],this.heap[o])<0&&(o=s),o===i)break;this.swap(i,o),i=o}}swap(e,r){[this.heap[e],this.heap[r]]=[this.heap[r],this.heap[e]]}};var Z=class{promise;resolve;reject;constructor(){this.promise=new Promise((e,r)=>{this.resolve=e,this.reject=r})}};typeof Promise.withResolvers!="function"&&(Promise.withResolvers=()=>new Z);var Me=class extends Promise{clear},M=(t,e=!0)=>{let r,i=new Me(n=>{r=setTimeout(()=>{r=null,n(e)},t)});return i.clear=()=>{r&&(clearTimeout(r),r=null)},i};if(typeof setImmediate!="function"){let t=0,e=new Map,r=new MessageChannel;r.port1.onmessage=async i=>{let n=i.data,s=e.get(n);if(!s)return;let[,o]=await O(s);o&&console.error("Error in setImmediate",o)},globalThis.setImmediate=(i,...n)=>{let s=t++;return e.set(s,()=>i(...n)),r.port2.postMessage(s),s},globalThis.clearImmediate=i=>{e.delete(i)}}var gt={retry:new WeakMap,circuitBreaker:new WeakMap,rateLimit:new WeakMap,throttle:new WeakMap,debounce:new WeakMap,memoize:new WeakMap,withTimeout:new WeakMap,inflight:new WeakMap};var ae=(t,e)=>{if(gt[e].has(t))throw new Error(`Function is already wrapped with ${e}`)};var Ie=class extends Error{constructor(e){super(e),this.name="RetryError"}};var bt=t=>{u(C(t),"opts must be an object"),A(t.retries,typeof t.retries=="number"&&t.retries>0,"retries must be a positive number"),A(t.delay,typeof t.delay=="number"&&t.delay>=0,"delay must be a positive number"),A(t.backoff,typeof t.backoff=="number"&&t.backoff>0,"backoff must be a positive number"),A(t.shouldRetry,b(t.shouldRetry),"shouldRetry must be a function"),A(t.signal,t.signal instanceof AbortSignal,"signal must be an AbortSignal")},Tr=async(t,e)=>{u(b(t),"fn must be a function"),ae(t,"retry"),bt(e);let{delay:r=0,retries:i=3,backoff:n=1,jitterFactor:s=0,shouldRetry:o=()=>!0,signal:c}=e,a=0;for(;a<i;){c?.throwIfAborted();let[l,d]=await O(t);if(c?.throwIfAborted(),d===null)return l;if(d&&o(d)){await M(r*n*(1+s*Math.random())),a++,c?.throwIfAborted();continue}throw d}throw new Ie("Max retries reached")};var j=()=>{},Oe=()=>"_"+Math.random().toString(36).slice(2,9);var Ce=new WeakMap,Q=t=>(Ce.has(t)||Ce.set(t,Oe()),Ce.get(t)),ce=t=>{let e=new WeakSet,r=n=>{if(n===null)return"null";if(n===void 0)return"undefined";if(typeof n=="string")return`${n}`;if(typeof n=="number")return Object.is(n,-0)?"-0":String(n);if(typeof n=="boolean")return String(n);if(typeof n=="bigint")return`bi:${n}`;if(typeof n=="symbol")return`sym:${Q(n)}`;if(typeof n=="function")return`fn:${Q(n)}`;if(n instanceof Date)return`d:${n.getTime()}`;if(n instanceof RegExp)return`r:${n.toString()}`;if(n instanceof Error)return`e:${Q(n)}`;if(n instanceof WeakMap)return`wm:${Q(n)}`;if(n instanceof WeakSet)return`ws:${Q(n)}`;if(typeof n=="object"){if(e.has(n))return`circ:${Q(n)}`;if(e.add(n),n instanceof Map){let l=`map:${Array.from(n.entries()).map(([d,y])=>`${r(d)}:${r(y)}`).sort().join(",")}`;return e.delete(n),l}if(n instanceof Set){let l=`set:${Array.from(n).map(r).sort().join(",")}`;return e.delete(n),l}if(Array.isArray(n)){let a=`[${n.map(r).join(",")}]`;return e.delete(n),a}let c=`{${Object.keys(n).sort().map(a=>`"${a}":${r(n[a])}`).join(",")}}`;return e.delete(n),c}return`u:${String(n)}`};return t.map(r).join("|")||"0"};var ue=t=>{if(t instanceof WeakRef){let e=t.deref();return[e,e===void 0]}return[t,!1]},le=(t,e,r,i,n)=>({value:i&&Te(t)&&t!==null?new WeakRef(t):t,createdAt:e,expiresAt:r,accessCount:1,lastAccessed:e,accessSequence:n}),G=t=>Date.now()>=t.expiresAt;var Pe=(t,e)=>{let r=Date.now();t.lastAccessed=r,t.accessCount=(t.accessCount??0)+1,t.accessSequence=e};var fe=t=>{let e=null,r=1/0,i=1/0;for(let[n,s]of t.entries()){let o=s.lastAccessed??0,c=s.accessSequence??0;(o<r||o===r&&c<i)&&(r=o,i=c,e=n)}return e&&t.delete(e),e};var Ve=new WeakSet,pe=(t,e={})=>{u(b(t),"fn must be a function"),u(!Ve.has(t),"Function is already wrapped by memoize");let{ttl:r=6e4,maxSize:i=1e3,generateKey:n,onError:s,cleanupInterval:o=6e4,useWeakRef:c=!1,shouldCache:a}=e,{staleIn:l,staleTimeout:d,adapter:y}=e;u(r>0,"ttl must be greater than 0"),u(i>0,"maxSize must be greater than 0"),u(ie(o,w=>typeof w=="number"&&w>=0),"cleanupInterval must be >= 0"),A(n,b(n),"generateKey must be a function"),A(s,b(s),"onError must be a function"),u(y===void 0,"memoizeSync does not support custom cache adapters (use memoize for async adapters like Redis)"),u(d===void 0,"memoizeSync does not support staleTimeout (sync functions execute instantly)"),u(l===void 0,"memoizeSync does not support staleIn (sync functions execute instantly, use ttl instead)");let p=new Map,h=0,g=0,x=0,f=0,m,E=()=>(h>=Number.MAX_SAFE_INTEGER-1&&(h=0),++h),U=()=>g++,F=()=>x++,be=()=>{let w=Date.now();for(let[T,N]of p.entries())w>=N.expiresAt&&p.delete(T)};o>0&&(m=setInterval(()=>be(),o),typeof m.unref=="function"&&m.unref());let we=function(...w){if(a){let[Ee,Ae]=S(()=>a(...w));if(!Ae&&!Ee)return t(...w)}let[T,N]=S(()=>n?n(...w):ce(w));if(N)return s?.(N,w),F(),t(...w);let K=p.get(T);if(K&&!G(K)){Pe(K,E());let[Ee,Ae]=ue(K.value);if(Ae){p.delete(T),F();let[Le,ve]=S(()=>t(...w));if(ve)throw s?.(ve,w),ve;let We=Date.now(),et=le(Le,We,We+r,c,E());return p.size>=i&&(fe(p),f++),p.set(T,et),Le}return U(),Ee}F();let[Ne,xe]=S(()=>t(...w));if(xe)throw s?.(xe,w),xe;let ze=Date.now(),Ze=le(Ne,ze,ze+r,c,E());return p.size>=i&&(fe(p),f++),p.set(T,Ze),Ne};return we.cache={clear:()=>{p.clear(),g=0,x=0,f=0,h=0,m!==void 0&&(clearInterval(m),m=void 0)},delete:w=>p.delete(w),has:w=>{let T=p.get(w);return T?G(T)?(p.delete(w),!1):!0:!1},get size(){return p.size},stats:()=>({hits:g,misses:x,evictions:f,hitRate:g+x>0?g/(g+x):0,size:p.size}),keys:()=>p.keys(),entries:()=>{let w=[];for(let[T,N]of p.entries())if(!G(N)){let[K]=ue(N.value);w.push([T,K])}return w}},Ve.add(we),we};var he=class{capacity;refillIntervalMs;#t;#n;#e;constructor(e,r){this.capacity=e,this.refillIntervalMs=r,this.#e={totalRequests:0,rejectedRequests:0,totalWaitTime:0,waitCount:0,createdAt:Date.now()},this.#t=e,this.#n=Date.now()}#r(){let e=Date.now(),r=e-this.#n,i=1/this.refillIntervalMs;if(r<0||r>this.refillIntervalMs*this.capacity*2){this.#n=e,this.#t=this.capacity;return}if(r>0){let n=r*i;this.#t=Math.min(this.capacity,this.#t+n),this.#n=e}}reset(){this.#t=this.capacity,this.#n=Date.now()}get tokens(){return Math.floor(this.#t)}consume(e=1){return this.#r(),this.#e.totalRequests++,this.#t>=e?(this.#t-=e,!0):(this.#e.rejectedRequests++,!1)}getWaitTimeMs(e=1){this.#r();let r=e-this.#t;if(r<=0)return 0;let i=1/this.refillIntervalMs;return Math.ceil(r/i)+1}getNextAvailable(e=1){return new Date(Date.now()+this.getWaitTimeMs(e))}get snapshot(){this.#r();let r=Date.now()-this.#e.createdAt;return{currentTokens:this.tokens,capacity:this.capacity,refillIntervalMs:this.refillIntervalMs,totalRequests:this.#e.totalRequests,rejectedRequests:this.#e.rejectedRequests,successfulRequests:this.#e.totalRequests-this.#e.rejectedRequests,rejectionRate:this.#e.totalRequests>0?this.#e.rejectedRequests/this.#e.totalRequests:0,totalWaitTime:this.#e.totalWaitTime,waitCount:this.#e.waitCount,averageWaitTime:this.#e.waitCount>0?this.#e.totalWaitTime/this.#e.waitCount:0,uptime:r,createdAt:this.#e.createdAt}}async waitForToken(e=1,r={}){let{onRateLimit:i,abortController:n,jitterFactor:s=0}=r;if(this.#r(),this.#t>=e)return;let o=Date.now();for(this.#e.waitCount++;this.#t<e;){if(n?.signal?.aborted)return;await i?.(new me("Rate limit exceeded",this.capacity),this.getNextAvailable(e)),await M(this.getWaitTimeMs(e)+Math.random()*s),this.#r()}let c=Date.now();this.#e.totalWaitTime+=c-o}async waitAndConsume(e=1,r={}){let{onRateLimit:i,abortController:n,jitterFactor:s=0}=r;if(this.#r(),this.#e.totalRequests++,this.#t>=e)return this.#t-=e,!0;let o=Date.now();for(this.#e.waitCount++;this.#t<e;){if(n?.signal?.aborted)return this.#e.rejectedRequests++,!1;await i?.(new me("Rate limit exceeded",this.capacity),this.getNextAvailable(e)),await M(this.getWaitTimeMs(e)+Math.random()*s),this.#r()}this.#t-=e;let c=Date.now();return this.#e.totalWaitTime+=c-o,!0}},me=class extends Error{maxCalls;constructor(e,r){super(e),this.name="RateLimitError",this.maxCalls=r}};var ee=class extends Error{constructor(e){super(e)}},Ye=t=>t?.constructor?.name===ee.name;var z={sec:1e3,min:6e4,min15:9e5,min30:18e5,hour:36e5,hour2:72e5,hour4:144e5,hour8:288e5,hour12:432e5,day:864e5,week:6048e5,secs(t){return t*this.sec},mins(t){return t*this.min},hours(t){return t*this.hour},days(t){return t*this.day},weeks(t){return t*this.week},months(t){return Math.round(t*30.4*this.day)},years(t){return t*365*this.day}},xt=t=>z.secs(t),Et=t=>z.mins(t),At=t=>z.hours(t),vt=t=>z.days(t),kt=t=>z.weeks(t),St=t=>z.months(t),Tt=t=>z.years(t),Qe=t=>{let e=t.match(/^(\d+(?:\.\d+)?)\s*(s|sec|secs?|seconds?|m|min|mins?|minutes?|h|hr|hrs?|hour|hours?|d|day|days?|w|wk|wks?|week|weeks?|mo|mon|mons?|month|months?|y|yr|yrs?|year|years?)$/i);if(!e)throw new Error(`Invalid time duration: ${t}`);let[,r,i]=e,n=parseFloat(r),s=i.toLowerCase();if(s.startsWith("s"))return xt(n);if(s.startsWith("m")&&!s.startsWith("mo"))return Et(n);if(s.startsWith("h"))return At(n);if(s.startsWith("d"))return vt(n);if(s.startsWith("w"))return kt(n);if(s.startsWith("mo"))return St(n);if(s.startsWith("y"))return Tt(n);throw new Error(`Unknown unit: ${i}`)};var de={kb:1024,mb:1048576,gb:1073741824,tb:1099511627776,kbs(t){return t*this.kb},mbs(t){return t*this.mb},gbs(t){return t*this.gb},tbs(t){return t*this.tb}},Rt=t=>de.kbs(t),Mt=t=>de.mbs(t),It=t=>de.gbs(t),Ct=t=>de.tbs(t),Ge=t=>{let e=t.match(/^(\d+(?:\.\d+)?)\s*(kb|kbs?|kilobytes?|mb|mbs?|megabytes?|gb|gbs?|gigabytes?|tb|tbs?|terabytes?)$/i);if(!e)throw new Error(`Invalid byte size: ${t}`);let[,r,i]=e,n=parseFloat(r),s=i.toLowerCase();if(s.startsWith("k"))return Rt(n);if(s.startsWith("m"))return Mt(n);if(s.startsWith("g"))return It(n);if(s.startsWith("t"))return Ct(n);throw new Error(`Unknown unit: ${i}`)};var Ot=/^\d+$/,Xe=(t,e={})=>{let{parseUnits:r=!1,skipConversion:i}=e;for(let n in t){let s=n,o=t[s];if(i?.(n,o))continue;if(typeof o=="object"&&o!==null){Xe(o,e);continue}if(r&&typeof o=="string"){let[d,y]=S(()=>Qe(o));if(!y&&typeof d=="number"){t[s]=d;continue}let[p,h]=S(()=>Ge(o));if(!h&&typeof p=="number"){t[s]=p;continue}}let a=qe(t[s]),l=Ue(t[s]);if(a||l){t[s]=a;continue}if(typeof o=="string"&&Ot.test(o)){t[s]=Number(o);continue}}},ps=(t,e={})=>{u(typeof t=="object"&&t!==null,"flatConfig must be a non-null object"),u(typeof e=="object"&&e!==null,"opts must be a non-null object"),u(e.filter===void 0||typeof e.filter=="function","filter must be a function"),u(e.forceAllCapToLower===void 0||typeof e.forceAllCapToLower=="boolean","forceAllCapToLower must be a boolean"),u(e.separator===void 0||typeof e.separator=="string","separator must be a string"),u(e.stripPrefix===void 0||typeof e.stripPrefix=="string"||typeof e.stripPrefix=="number","stripPrefix must be a string or number"),u(e.parseUnits===void 0||typeof e.parseUnits=="boolean","parseUnits must be a boolean"),u(e.skipConversion===void 0||typeof e.skipConversion=="function","skipConversion must be a function"),u(e.memoizeOpts===void 0||typeof e.memoizeOpts=="object"||e.memoizeOpts===!1,"memoizeOpts must be an object or false");let{filter:r,forceAllCapToLower:i=!0,separator:n="_",stripPrefix:s,parseUnits:o=!1,skipConversion:c,memoizeOpts:a=!1}=e,l=h=>/^[A-Z0-9_]+$/.test(h),d=h=>{let g=h;return s!==void 0&&(typeof s=="number"?g=h.slice(s):g=h.startsWith(s)?h.slice(s.length):h),g.split(n).map(f=>l(f)&&i?f.toLowerCase():f).join(".")};function y(){let h=v(t),g={},x=Object.entries(h).filter(([m,E])=>r?.(m,E)??!0).map(([m])=>m).sort(),[,f]=S(()=>{_e(g,x.map(m=>[d(m),h[m]])),Xe(g,{parseUnits:o,skipConversion:c})});if(f instanceof Error&&f.message.includes("on primitive value")){let m=F=>F.split("_").join(n),E=(F,be)=>`${m(F)}=${be}`,U=["Failed to load flatmap variables.","You're likely trying to set a nested property on a non-object value.",`For example, if you have ${E("APP_DB_NAME","foo")}, and then you try to set`,`${E("APP_DB_NAME_TEST","bar")}, you'll get this error because ${m("APP_DB_NAME")} is a string.`,"The correct way is to designate each namespace (separated by underscores) as ",`an object. For example, ${E("APP_DB_NAME","foo")} becomes { db: { name: "foo" } }, and,`,`${E("APP_DB_NAME_TEST","bar")} becomes { db: { name: { test: "bar" } } }, but both cannot coexist.`,`
|
|
3
|
+
|
|
4
|
+
You can either \`unset ${m("APP_PROBLEMATIC")}\` or scope all vars to \`${m("APP_NAMESPACE_NAME")}\` to`,"make it a nested object.",`
|
|
5
|
+
|
|
6
|
+
`];console.error(U.join(" "))}if(f)throw f;return g}function p(h,g){let x=y(),f=ke(x,h);return f??g}return a?{allConfigs:pe(y,a),getConfig:pe(p,a)}:{allConfigs:y,getConfig:p}};var je=class extends Error{listener;data;func;event;stack},Pt=new RegExp(`(${["node_modules","node:internal","$spy","makeEventTracer","sendToSpy","Function.spy","Observable.Engine"].join("|")})`),L=class extends Error{event;listener;data;constructor(e,r){super(e),this.event=r?.event,this.listener=r?.listener,this.data=r?.data}};var De=(t,e,r)=>{let n=new Error().stack.split(`
|
|
7
|
+
`);n.shift();let s=n.filter(l=>!Pt.test(l)),o=`EventStack (${t} ${e.toString()}):`;s.unshift(o);let c=s.join(`
|
|
8
|
+
`),a=new je(o);return a.name=o,a.func=e,a.event=t,a.stack=c,a.listener=null,a.data=null,typeof r=="function"?a.listener=r:a.data=r,a},Je=t=>{let e=t?.replace(/^\//,"").split("/"),r=e.pop(),i=e.join("/");return RegExp(i,r)},$e=(t,e)=>{let r=[];for(let i of t)for(let n of e.get(i)||new Set)r.push({event:i,func:n});return r},I=(function(t){return t.on="on",t.off="off",t.emit="emit",t.clear="clear",t})({}),D=class extends Event{type;data;constructor(e,r){super(e),this.data=r,this.type=e}},te=(t,e)=>{if(e.event===void 0||typeof e.event!="string"&&!(e.event instanceof RegExp))throw new L(`observer.${t}: Event must be a string or RegExp`,e)},Fe=(t,e)=>{if(e.listener!==void 0&&typeof e.listener!="function")throw new L(`observer.${t}: Listener must be a function`,e)};var W=class extends Z{cleanup},re=class{#t;#n;#e;#r=!1;#i=null;#a=null;#c=()=>{if(this.#r===!0)throw new L(`Event generator for ${this.#n.toString()} has been destroyed`,{event:this.#n,listener:this.#i,data:null})};cleanup;next;constructor(e,r,i){this.#t=e,this.#n=r,this.#e=new W,this.#e.promise.cleanup=this.cleanup,this.#e.promise.resolve=this.#e.resolve,this.#i=c=>{this.#a=c,this.#e.resolve(c),this.#e=new W,this.#e.promise.cleanup=this.cleanup,this.#e.promise.resolve=this.#e.resolve};let n=e.on(r,this.#i),s;this.next=()=>(this.#c(),this.#e.promise),this.cleanup=()=>{this.#r||(n(),this.#r=!0,this.#o.forEach(c=>{c.resolve?.(this.#a)}),this.#o.clear(),this.#a=null,s?.abort())};let o=i?.signal;if(o){if(o.aborted){this.#r=!0;return}s=new AbortController,o.addEventListener("abort",this.cleanup,{signal:s.signal})}}#o=new Set;async*[Symbol.asyncIterator](){for(;!this.#r;){let e=this.next();this.#o.add(e),yield await e,this.#o.delete(e)}return Promise.resolve(void 0)}get lastValue(){return this.#a}get done(){return this.#r}emit(e){this.#c(),this.#t.emit(this.#n,e)}};var ye=class{status="stopped";#t={running:["paused","draining","stopped"],draining:["stopped","paused"],paused:["running","draining","stopped"],stopped:["running","draining"]};transition(e){u(this.#t[this.status].includes(e),`Invalid transition from ${this.status} to ${e}`),this.status=e}is(...e){return e.includes(this.status)}get state(){return this.status}};var ge=class{observer;queueName;#t;#n;#e;#r;#i;#a;constructor(e,r){this.observer=e,this.queueName=r,this.#t=0,this.#n=0,this.#e=0,this.#r=0,this.#i=0,this.#a=0,this.observer.on(`queue:${this.queueName}:processing`,()=>{this.#t++}),this.observer.on(`queue:${this.queueName}:success`,i=>{this.#n++,this.#r++,this.#t--,this.#c(i.data.elapsed)}),this.observer.on(`queue:${this.queueName}:error`,()=>{this.#n++,this.#i++,this.#t--}),this.observer.on(`queue:${this.queueName}:rejected`,()=>this.#a++)}#c(e){this.#e=(this.#e*(this.#r-1)+e)/this.#r}get stats(){return{processed:this.#n,processing:this.#t,avgProcessingTime:this.#e,success:this.#r,error:this.#i,rejected:this.#a}}};var _=class{data;constructor(e){this.data=e}},ne=(function(t){return t.full="Queue is full",t.notRunning="Queue is not running",t})({});var X=class{opts;#t;#n;#e;#r;#i;#a;#c;#o;#l;#u;#f;#h;#p;constructor(e){this.opts=e,this.#n=new Map,this.#e=j,this.#r=new ye,this.#c=!0,this.#o=!1,this.#l=!1,this.#u=!1,this.#f=0,this.#h=0,this.#p=new Set;let{observer:r=new q,event:i,process:n,name:s,type:o="fifo",concurrency:c=1,pollIntervalMs:a=100,jitterFactor:l=0,rateLimitIntervalMs:d=1e3,processIntervalMs:y=0,taskTimeoutMs:p=0,autoStart:h=!0,debug:g=!1}=this.opts,{maxQueueSize:x=999999999,rateLimitCapacity:f=999999999}=this.opts;u(C(this.opts),"Options is required to be an object"),u(b(r?.on),"ObserverEngine is required"),u(typeof i=="string"&&i.length>0||i instanceof RegExp,"Event is required to be a string or RegExp"),u(b(n),"Process is required to be a function"),u(s&&typeof s=="string"&&s.length>0,"Name is required"),u(c>0,"Concurrency must be greater than 0"),u(a>0,"pollIntervalMs must be a number greater than 0"),u(l>=0&&l<=1,"Jitter must be a number greater than or equal to 0 and less than or equal to 1"),u(x>0,"MaxQueueSize must be a number greater than 0"),u(d>0,"rateLimitIntervalMs must be a number greater than 0"),u(f>0,"rateLimitCapacity must be a number greater than 0"),u(y>=0,"processIntervalMs must be a number greater than or equal to 0"),u(p>=0,"taskTimeoutMs must be a number greater than or equal to 0"),u(o==="fifo"||o==="lifo",'Type must be either "fifo" or "lifo"'),u(typeof h=="boolean","AutoStart must be a boolean"),x===1/0&&(x=999999999),f===1/0&&(f=999999999),Object.assign(this.opts,{observer:r,type:o,concurrency:c,maxQueueSize:x,pollIntervalMs:a,jitterFactor:l,processIntervalMs:y,taskTimeoutMs:p}),this.#u=g,this.#i=new ge(r,s),this.#a=new he(f,d),this.#t=new V({lifo:o==="lifo"}),h&&this.start()}#m(){if(this.#l)return;this.#l=!0;let e=this.opts.observer.on(this.opts.event,r=>{if((r?.data??r)instanceof _)return;let n=r,s={data:n,_taskId:Oe(),priority:this.#n.get(n)??0};if(this.#n.delete(n),this.#t.size()>=this.opts.maxQueueSize){this.#s("rejected",{...s,reason:ne.full});return}this.#s("added",s),this.#c=!1,this.#t.push(s,s.priority)});this.#e=()=>{e(),this.#l=!1}}#s(e,r){if(this.#u){let i=[`[${this.name}] ${e}`,r?._taskId??"",r?.data??""];this.#u==="verbose"&&(i[1]=r),console.log(...i)}this.opts.observer.emit(`queue:${this.name}:${e}`,new _(r))}#y(){let e=++this.#f;for(let r=0;r<this.opts.concurrency;r++)this.#w(e,r)}async#w(e,r){let{pollIntervalMs:i,jitterFactor:n}=this.opts;for(this.#h++;this.#r.is("running")&&this.#f===e;){if(!this.pending){!this.#c&&!this.pending&&this.#p.size===0&&(this.#c=!0,this.#s("idle")),this.#o=!0,await M(i*(1+Math.random()*n)),this.#o=!1;continue}let s=this.#t.pop();s&&(this.#p.add(`${e}-${r}`),await this.#g(s),this.opts.processIntervalMs>0&&await M(this.opts.processIntervalMs),this.#p.delete(`${e}-${r}`))}this.#h--}async#g(e){if(!this.#r.is("running","draining")){this.#t.push(e);return}let r=!1;this.#r.is("draining")||await this.#a.waitAndConsume(1,{onRateLimit:()=>{this.#s("rate-limited",e),r=!0}});let i=Date.now();this.#s("processing",{...e,startedAt:i,rateLimited:r});let[,n]=await O(async()=>{if(this.opts.taskTimeoutMs===0)return this.opts.process(e.data);let o=await Promise.race([this.opts.process(e.data),M(this.opts.taskTimeoutMs,new ee("Task timed out"))]);if(Ye(o))throw this.#s("timeout",{...e,error:o}),o;return o}),s=Date.now()-i;n?this.#s("error",{...e,error:n,rateLimited:r}):this.#s("success",{...e,startedAt:i,elapsed:s,rateLimited:r}),this.#t.size()===0&&this.#r.is("running")&&this.#s("empty")}start(){if(!this.#r.is("running"))return this.#m(),this.#r.transition("running"),this.#s("start"),this.#y(),this.#s("started"),Promise.resolve()}stop(){this.#r.is("stopped")||(this.#e(),this.#r.transition("stopped"),this.#s("stopped"))}pause(){if(!this.#r.is("paused"))return this.#r.transition("paused"),this.#s("paused"),Promise.resolve()}resume(){if(!this.#r.is("running"))return this.#m(),this.#r.transition("running"),this.#y(),this.#s("resumed"),Promise.resolve()}async#b(e=1/0,r,i){let n=e===1/0?this.#t.size():e,s=this.#t.popMany(n);if(n<s.length&&(n=s.length),r?.(n),n!==0)for(let o of s)await this.#g(o);return i?.(n),n}shutdown(e=!1){if(this.#r.is("draining","stopped"))return Promise.resolve(0);if(e){let r=this.purge();return this.stop(),this.#s("shutdown",{force:e,pending:r}),Promise.resolve(r)}return this.#b(1/0,r=>{this.pause(),this.#r.transition("draining"),this.#e(),this.#s("drain",{pending:r})},r=>{this.#s("drained",e?{pending:r}:{drained:r}),this.stop(),this.#s("shutdown",e?{force:e,pending:r}:{force:e})})}async flush(e=1/0){return this.#b(e,r=>this.#s("flush",{pending:r}),r=>this.#s("flushed",{flushed:r}))}purge(){let e=this.#t.size();return this.#t.clear(),this.#s("purged",{count:e}),e}add(e,r){return this.#r.is("running","paused")?this.#t.size()>=this.opts.maxQueueSize?(this.#s("rejected",{data:e,reason:ne.full}),!1):(r&&this.#n.set(e,r),this.opts.observer.emit(this.opts.event,e),!0):(this.#s("rejected",{data:e,reason:ne.notRunning}),!1)}debug(e=!1){this.#u=e}#d(){return this.opts.observer}on(e,r){return this.#d().on(`queue:${this.name}:${e}`,r)}once(e,r){return this.#d().once(`queue:${this.name}:${e}`,r)}off(e,r){return this.#d().off(`queue:${this.name}:${e}`,r)}get name(){return this.opts.name}get isWaiting(){return this.#o}get isIdle(){return this.#c&&this.#r.is("running")}get isRunning(){return this.#r.is("running")}get isPaused(){return this.#r.is("paused")}get isStopped(){return this.#r.is("stopped")}get isDraining(){return this.#r.is("draining")}get state(){return this.#r.state}get pending(){return this.#t.size()}get stats(){return v(this.#i.stats)}get snapshot(){return{name:this.name,state:this.state,pending:this.pending,stats:this.stats,rateLimiter:this.#a.snapshot,activeRunners:this.#h,runningNodes:this.#p,isIdle:this.isIdle,isWaiting:this.isWaiting,isRunning:this.isRunning,isPaused:this.isPaused,isStopped:this.isStopped,isDraining:this.isDraining,isEmpty:this.pending===0}}};var q=class{#t=new Map;#n=new Map;#e=new EventTarget;#r;#i;#a;#c=new AbortController;#o;constructor(e){e&&(u(!e.name||typeof e.name=="string","Observable options.name must be a string",TypeError),u(!e.spy||typeof e.spy=="function","Observable options.spy must be a function",TypeError),u(!e.emitValidator||typeof e.emitValidator=="function","Observable options.emitValidator must be a function",TypeError),this.#i=e.spy),this.#o=this.#c.signal;let r=e?.signal,i=()=>this.clear();this.#o.addEventListener("abort",i,{once:!0}),r&&r.addEventListener("abort",i,{once:!0}),se(this,{on:this.on,once:this.once,emit:this.emit,off:this.off,observe:this.observe,debug:this.debug,$has:this.$has,$facts:this.$facts,$internals:this.$internals,name:e?.name||Math.random().toString(36).substring(7)}),this.#r=e?.emitValidator}name;$facts(){let e=[...this.#t.keys()],r=[...this.#n.keys()],i=Object.fromEntries([e.map(n=>[n,this.#t.get(n)?.size]),r.map(n=>[n,this.#n.get(n)?.size])].flat());return{listeners:e,rgxListeners:r,listenerCounts:i,hasSpy:!!this.#i}}$internals(){return{listenerMap:v(this.#t),rgxListenerMap:v(this.#n),internalListener:v(this.#e),name:this.name,spy:this.#i}}$has(e){return e instanceof RegExp?this.#n.has(e.toString()):this.#t.has(e)||this.#n.has(e)}#l(...e){this.#i&&this.#i.apply(this,e)}debug(e=!0){let r=this.#i,i=n=>{let{event:s,fn:o,data:c,listener:a}=n;console.info(De(s,o,c||a)),r&&r(n)};if(e){this.#i=i,this.#a=r;return}this.#i=this.#a}spy(e,r=!1){u(b(e),"spy must be a function",TypeError),u(r||this.#i===void 0,"you already have a spy function set",TypeError),this.#i=e}observe(e,r){let i=this,n=r?.signal;if(n?.aborted)return se(e,{on:j,once:j,off:j,emit:j,clear:j,cleanup:j}),e;let s=new Map,o=(f,m)=>{let E=s.get(f)||new Set;return E.add(m),s.set(f,E),m},c=()=>{for(let f of s.entries()){let[m,E]=f;[...E].forEach(U=>i.off(m,U)),s.set(m,new Set)}},a=f=>{let[m,E]=f.data;s.get(m)?.delete(E)};this.#e.addEventListener(I.off,a),this.#e.addEventListener(I.clear,c);let l=(f,m)=>i.on(f,o(f,m)),d=(f,m)=>i.once(f,o(f,m)),y=(f,m)=>{i.off(f,m)},p=(f,m)=>i.emit(f,m),h=()=>c(),g,x=()=>{c(),i.#e.removeEventListener(I.off,a),i.#e.removeEventListener(I.clear,c),g?.abort()};return n&&(g=new AbortController,AbortSignal.any([this.#o,n]).addEventListener("abort",x,{signal:g.signal})),se(e,{on:l,once:d,off:y,emit:p,clear:h,cleanup:x}),e}#u(e){let r=e.constructor===RegExp,i=e.toString();return{isRgx:r,eventName:i,rgx:e}}#f(e){return[...this.#t.keys()].filter(r=>e.test(r))}#h(e){return[...this.#n.keys()].filter(r=>Je(r).test(e)).flat()}#p(e){let r=this.#f(e);return $e(r,this.#t)}#m(e){let r=this.#h(e);return $e(r,this.#n)}on(e,r,i){let n=typeof r=="function",s=n?r:void 0,o=n?i:r;if(o?.once||(te("on",{event:e,listener:s}),Fe("on",{event:e,listener:s})),s===void 0)return new re(this,e,o);let c=o?.signal;if(c?.aborted)return()=>{};let{eventName:a,isRgx:l}=this.#u(e),d=l?this.#n:this.#t;this.#l({event:e,fn:o?.once?"once":"on",data:null,listener:s,context:this});let y=d.get(a)||new Set([s]);y&&!y.has(s)&&y.add(s),d.has(a)||d.set(a,y),this.#e.dispatchEvent(new D(I.on,[e,s]));let p=!1,h=()=>{p||(p=!0,this.#l({event:e,fn:"cleanup",data:null,listener:s,context:this}),y.delete(s),y.size===0&&d.delete(a),this.#e.dispatchEvent(new D(I.off,[e,s])))};if(c){let g=()=>{h(),this.#o.removeEventListener("abort",g)};c.addEventListener("abort",g,{once:!0}),this.#o.addEventListener("abort",g,{once:!0});let x=h;return()=>{x(),c.removeEventListener("abort",g),this.#o.removeEventListener("abort",g)}}return h}once(e,r,i){let n=typeof r=="function",s=n?r:void 0,o=n?i:r;if(te("once",{event:e,listener:s}),Fe("once",{event:e,listener:s}),!s){let l=new W,d=o?.signal;if(d?.aborted)return l.reject(d.reason??new DOMException("Aborted","AbortError")),l.promise.cleanup=()=>{},l.promise;let y,p=this.once(e,h=>{l.resolve(h),y?.abort()},o);return d&&(y=new AbortController,d.addEventListener("abort",()=>{p(),l.reject(d.reason??new DOMException("Aborted","AbortError"))},{signal:y.signal})),l.promise.cleanup=()=>{p(),y?.abort()},l.promise}let c=this,a=function(...l){let{eventName:d,isRgx:y}=c.#u(e),p=y?c.#n:c.#t,h=p.get(d);h&&(h.delete(a),h.size===0&&p.delete(d)),s.apply(c,l)};return this.on(e,a,{once:!0,...o})}off(e,r){te("off",{event:e,listener:r}),this.#l({event:e,fn:"off",data:null,listener:r,context:this});let{eventName:i,isRgx:n,rgx:s}=this.#u(e);(n?this.#f(s):[i]).forEach(c=>{let a=c;if(this.#e.dispatchEvent(new D(I.off,[a,r])),r){let l=this.#t.get(a);l&&(l.delete(r),l.size===0&&this.#t.delete(a));return}this.#t.delete(a)})}emit(e,r){te("emit",{event:e,data:r}),this.#r&&this.#r(e,r,this),this.#l({event:e,fn:"emit",data:r,listener:null,context:this});let{eventName:i,isRgx:n,rgx:s}=this.#u(e);if(!n){let c=this.#t.get(i),a=this.#m(i);c&&c.forEach(l=>l.apply(this,[r,{event:e,listener:l}])),a&&a.forEach(({func:l})=>l.apply(this,[{data:r,event:e,listener:l}])),this.#e.dispatchEvent(new D(I.emit,[i,r]));return}let o=this.#p(s);o&&o.forEach(({event:c,func:a})=>a.apply(this,[r,{event:c,listener:a}])),this.#f(s).forEach(c=>{this.#e.dispatchEvent(new D(I.emit,[c,r]))})}clear(){this.#t.clear(),this.#n.clear(),this.#e.dispatchEvent(new D(I.clear,["clear",null]))}queue(e,r,i){return new X({...i,event:e,process:r,observer:this})}};var ni=new q({name:"noorm",spy:process.env.NOORM_DEBUG?t=>console.error(`[noorm:${t.fn}] ${String(t.event)}`):void 0});export{v as a,J as b,O as c,S as d,M as e,Tr as f,It as g,ps as h,ni as i};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as i}from"./chunk-PJYMXUBP.js";import{c as u,d,i as m}from"./chunk-CTFIMWJ7.js";import{randomBytes as g,createCipheriv as x,createDecipheriv as v,createPrivateKey as V,createPublicKey as b,diffieHellman as E,generateKeyPairSync as T,hkdfSync as N}from"crypto";function _(){return g(32)}function k(e,r){let t=V({key:Buffer.from(e,"hex"),format:"der",type:"pkcs8"}),n=b({key:Buffer.from(r,"hex"),format:"der",type:"spki"});return E({privateKey:t,publicKey:n})}function S(e,r){return Buffer.from(N("sha256",e,Buffer.alloc(0),r,32))}function w(e,r){let{publicKey:t,privateKey:n}=T("x25519",{publicKeyEncoding:{type:"spki",format:"der"},privateKeyEncoding:{type:"pkcs8",format:"der"}}),a=n.toString("hex"),s=t.toString("hex"),c=k(a,r),o=S(c,"noorm-vault-key"),l=g(16),f=x("aes-256-gcm",o,l),y=Buffer.concat([f.update(e),f.final()]),p=f.getAuthTag();return{ephemeralPubKey:s,iv:l.toString("hex"),authTag:p.toString("hex"),ciphertext:y.toString("hex")}}function K(e,r){let[t,n]=d(()=>{let a=k(r,e.ephemeralPubKey),s=S(a,"noorm-vault-key"),c=v("aes-256-gcm",s,Buffer.from(e.iv,"hex"));return c.setAuthTag(Buffer.from(e.authTag,"hex")),Buffer.concat([c.update(Buffer.from(e.ciphertext,"hex")),c.final()])});return n?null:t}function B(e,r){let t=g(16),n=x("aes-256-gcm",r,t),a=Buffer.concat([n.update(e,"utf8"),n.final()]),s=n.getAuthTag();return{iv:t.toString("hex"),authTag:s.toString("hex"),ciphertext:a.toString("hex")}}function h(e,r){let[t,n]=d(()=>{let a=v("aes-256-gcm",r,Buffer.from(e.iv,"hex"));return a.setAuthTag(Buffer.from(e.authTag,"hex")),Buffer.concat([a.update(Buffer.from(e.ciphertext,"hex")),a.final()]).toString("utf8")});return n?null:t}async function z(e,r,t){let[n,a]=await u(async()=>e.selectFrom(i.identities).select("encrypted_vault_key").where("encrypted_vault_key","is not",null).limit(1).executeTakeFirst());if(a)return[null,a];if(n?.encrypted_vault_key)return[null,new Error("Vault already initialized")];let s=_(),c=w(s,t),o=JSON.stringify(c),[,l]=await u(async()=>e.updateTable(i.identities).set({encrypted_vault_key:o}).where("identity_hash","=",r).execute());return l?[null,l]:(m.emit("vault:initialized",{identityHash:r}),[s,null])}async function j(e,r,t){let[n,a]=await u(async()=>e.selectFrom(i.identities).select("encrypted_vault_key").where("identity_hash","=",r).executeTakeFirst());if(a||!n?.encrypted_vault_key)return null;let s=n.encrypted_vault_key,[c,o]=d(()=>JSON.parse(s));return o?null:K(c,t)}async function I(e,r,t,n,a){let s=B(n,r),c=JSON.stringify(s),o=new Date().toISOString(),[l,f]=await u(async()=>e.selectFrom(i.vault).select("id").where("secret_key","=",t).executeTakeFirst());if(f)return[void 0,f];if(l){let[,y]=await u(async()=>e.updateTable(i.vault).set({encrypted_value:c,set_by:a,updated_at:o}).where("secret_key","=",t).execute());if(y)return[void 0,y];m.emit("vault:secret:updated",{key:t,setBy:a})}else{let[,y]=await u(async()=>e.insertInto(i.vault).values({secret_key:t,encrypted_value:c,set_by:a}).execute());if(y)return[void 0,y];m.emit("vault:secret:created",{key:t,setBy:a})}return[void 0,null]}async function C(e,r,t){let[n,a]=await u(async()=>e.selectFrom(i.vault).select("encrypted_value").where("secret_key","=",t).executeTakeFirst());if(a||!n)return null;let[s,c]=d(()=>JSON.parse(n.encrypted_value));return c?null:h(s,r)}async function H(e,r){let[t,n]=await u(async()=>e.selectFrom(i.vault).selectAll().execute());if(n||!t)return{};let a={};for(let s of t){let[c,o]=d(()=>JSON.parse(s.encrypted_value));if(o)continue;let l=h(c,r);l&&(a[s.secret_key]={key:s.secret_key,value:l,setBy:s.set_by,createdAt:new Date(s.created_at),updatedAt:new Date(s.updated_at)})}return a}async function U(e){let[r,t]=await u(async()=>e.selectFrom(i.vault).select("secret_key").orderBy("secret_key","asc").execute());return t||!r?[]:r.map(n=>n.secret_key)}async function W(e,r){let[t,n]=await u(async()=>e.deleteFrom(i.vault).where("secret_key","=",r).execute());if(n||!t)return[!1,n??new Error("Delete failed")];let a=t[0],s=!!a&&Number(a.numDeletedRows)>0;return s&&m.emit("vault:secret:deleted",{key:r}),[s,null]}async function L(e,r){let[t,n]=await u(async()=>e.selectFrom(i.vault).select("id").where("secret_key","=",r).executeTakeFirst());return n?!1:!!t}async function M(e,r){let[t]=await u(async()=>e.selectFrom(i.vault).select(e.fn.count("id").as("count")).executeTakeFirst()),n=t?Number(t.count):0,[a]=await u(async()=>e.selectFrom(i.identities).select(["identity_hash","encrypted_vault_key"]).execute()),s=a??[],c=s.filter(p=>p.encrypted_vault_key!==null).length,o=s.filter(p=>p.encrypted_vault_key===null).length,l=c>0,y=s.find(p=>p.identity_hash===r)?.encrypted_vault_key!==null;return{isInitialized:l,hasAccess:y,secretCount:n,usersWithAccess:c,usersWithoutAccess:o}}export{w as a,z as b,j as c,I as d,C as e,H as f,U as g,W as h,L as i,M as j};
|