@frontfriend/sdk 1.2.0 → 1.2.1

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.
@@ -1,2 +1,9 @@
1
- var _=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var C=_((fe,S)=>{var n=require("fs");function L(e){try{let r=n.readFileSync(e,"utf8");return JSON.parse(r)}catch(r){if(r.code==="ENOENT")return null;throw r}}function P(e){try{return n.readFileSync(e,"utf8").replace(/^\uFEFF/,"")}catch(r){if(r.code==="ENOENT")return null;throw r}}function R(e,r,t=2){let i=JSON.stringify(r,null,t);n.writeFileSync(e,i,"utf8")}function U(e,r){n.writeFileSync(e,r,"utf8")}function O(e,r){if(r==null||typeof r=="object"&&Object.keys(r).length===0||Array.isArray(r)&&r.length===0){let i=`module.exports = ${Array.isArray(r)?"[]":"{}"};`;n.writeFileSync(e,i,"utf8")}else{let t=`module.exports = ${JSON.stringify(r,null,2)};`;n.writeFileSync(e,t,"utf8")}}function b(e){return n.existsSync(e)}function $(e){n.mkdirSync(e,{recursive:!0})}function j(e){n.rmSync(e,{recursive:!0,force:!0})}function H(e){n.rmSync(e,{force:!0})}function J(e,r){n.mkdirSync(require("path").dirname(e),{recursive:!0,mode:448});let t=`${e}.${process.pid}.${Date.now()}.tmp`;try{n.writeFileSync(t,`${JSON.stringify(r,null,2)}
2
- `,{mode:384}),n.renameSync(t,e);try{n.chmodSync(e,384)}catch{}}finally{n.rmSync(t,{force:!0})}}async function q(e,r,t){n.mkdirSync(require("path").dirname(e),{recursive:!0,mode:448});let i=`${e}.lock`,c=Date.now()+2e4,s;for(;s===void 0;)try{s=n.openSync(i,"wx",384),n.writeFileSync(s,String(process.pid))}catch(w){if(w.code!=="EEXIST")throw w;try{let u=Number(n.readFileSync(i,"utf8"));if(Number.isInteger(u)&&u>0)try{process.kill(u,0)}catch(a){if(a.code==="ESRCH"){n.unlinkSync(i);continue}}}catch(u){if(u.code==="ENOENT")continue}if(Date.now()>=c)throw t();await new Promise(u=>setTimeout(u,50))}try{return await r()}finally{n.closeSync(s),n.unlinkSync(i)}}S.exports={writePrivateJsonFileAtomic:J,withPrivateFileLock:q,readJsonFileSafe:L,readFileSafe:P,writeJsonFile:R,writeTextFile:U,writeModuleExportsFile:O,fileExists:b,ensureDirectoryExists:$,removeDirectory:j,removeFile:H}});var g=_((le,k)=>{var M="https://app.frontfriend.dev",K=".cache/frontfriend",V={JS:["tokens.js","variables.js","semanticVariables.js","semanticDarkVariables.js","keyframes.js","animations.js","safelist.js","custom.js"],JSON:["fonts.json","icons.json","components-config.json","iconLibrary.json","version.json","versionMetadata.json","metadata.json","base.json","nativeTokens.json"]},B={FF_ID:"FF_ID",FF_API_URL:"FF_API_URL",FF_AUTH_TOKEN:"FF_AUTH_TOKEN",FF_MACHINE_TOKEN:"FRONTFRIEND_MACHINE_TOKEN"};function Y(e){if(!e)return null;try{let r=new URL(e);return r.hostname.startsWith("app.")?`${r.protocol}//${r.hostname.replace(/^app\./,"registry.")}`:null}catch{return null}}k.exports={DEFAULT_API_URL:M,CACHE_DIR_NAME:K,CACHE_TTL_DAYS:7,CACHE_TTL_MS:6048e5,CACHE_FILES:V,ENV_VARS:B,deriveRegistryFromApiUrl:Y}});var{fileExists:z,readJsonFileSafe:W,removeFile:X,writePrivateJsonFileAtomic:G,withPrivateFileLock:Q}=C(),N=require("path"),Z=require("os"),ee=require("https"),re=require("http"),{URL:d}=require("url"),{DEFAULT_API_URL:y}=g(),te=N.join(Z.homedir(),".frontfriend"),p=N.join(te,"credentials");function ne(){return p}function A(){try{return W(p)}catch{return null}}function I(e){try{let r=JSON.parse(Buffer.from(String(e).split(".")[1],"base64url").toString("utf8"));return typeof r.email=="string"?r.email:null}catch{return null}}function oe(){let e=A();if(!e||!e.accessToken)return null;let r=Number(e.refreshExpiresAt)||0;return{email:I(e.accessToken),apiUrl:e.ffApiUrl||null,expired:r>0&&r<Date.now()}}function v(e){G(p,e)}function ie(){return z(p)?(X(p),!0):!1}function E(e,r=60*1e3){return!e?.accessToken||!e.expiresAt||Date.now()+r>=e.expiresAt}function l(e){let r=new Error(`${e}. Run \`frontfriend login\` to re-authenticate.`);return r.code="FF_AUTH_REFRESH_FAILED",r}function x(e,r,t){return new Promise((i,c)=>{let s=new d(e);if(s.protocol!=="https:"&&!(s.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(s.hostname))){c(new Error("Frontfriend API URLs require HTTPS except on localhost"));return}let w=s.protocol==="https:"?ee:re,u=JSON.stringify(r||{}),a=w.request({hostname:s.hostname,port:s.port,path:`${s.pathname}${s.search}`,method:"POST",headers:{"content-type":"application/json","content-length":Buffer.byteLength(u),...t?{authorization:`Bearer ${t}`}:{}}},o=>{let F="";o.on("data",f=>{F+=f}),o.on("end",()=>{if(o.statusCode>=300&&o.statusCode<400){let h=o.headers.location?` to ${o.headers.location}`:"",T=new Error(`HTTP ${o.statusCode}: redirected${h}`);T.statusCode=o.statusCode,T.body=F,c(T);return}let f=null;try{f=F?JSON.parse(F):null}catch{let T=o.headers["content-type"]||"unknown content-type",m=new Error(`Expected JSON from FrontFriend API at ${e}, but received ${T} (HTTP ${o.statusCode}). Check FF_API_URL or pass --api-url with the FrontFriend app URL.`);if(m.statusCode=o.statusCode,m.body=F,o.statusCode>=400){c(m);return}c(m);return}if(o.statusCode>=400){let h=new Error(f?.error_description||f?.error||`HTTP ${o.statusCode}`);h.statusCode=o.statusCode,h.body=f,c(h);return}i(f)})});a.setTimeout(15e3,()=>a.destroy(Object.assign(new Error("Frontfriend API request timed out"),{code:"ETIMEDOUT"}))),a.on("error",c),a.write(u),a.end()})}async function se(e){return Q(p,e,()=>l("Another process is refreshing the session"))}async function D(e,r=y){return se(async()=>{let t=A();if(t&&new d(t.ffApiUrl||y).origin===new d(r).origin){if(!E(t))return t;e=t}return ce(e,r)})}async function ce(e,r=y){if(new d(r).origin!==new d(e.ffApiUrl||y).origin)throw l("The stored session belongs to a different API origin");if(!e?.refreshToken||!e?.deviceId)throw l("FrontFriend session expired");let t;try{t=await x(`${r}/api/plugin/token`,{grant_type:"refresh_token",refresh_token:e.refreshToken,device_id:e.deviceId})}catch(c){throw Object.assign(l(c?.message||"Could not refresh FrontFriend session"),{cause:c})}if(!t?.access_token||!t?.refresh_token)throw l("Could not refresh FrontFriend session");let i={accessToken:t.access_token,refreshToken:t.refresh_token,deviceId:t.device_id||e.deviceId,expiresAt:Date.now()+(t.expires_in||900)*1e3,refreshExpiresAt:Date.now()+(t.refresh_expires_in||604800)*1e3,ffApiUrl:r};return v(i),i}async function ue(e={}){if(e.envToken)return e.envToken;if(!e.skipCredentials){let r=A();if(r?.accessToken||r?.refreshToken){let t=e.baseURL||r.ffApiUrl||y;if(new d(t).origin!==new d(r.ffApiUrl||y).origin)throw l("The stored session belongs to a different API origin");return r.accessToken&&!E(r)?r.accessToken:(await D(r,t)).accessToken}}return e.configuredToken?(e.silent||console.warn("\u26A0\uFE0F auth-token in frontfriend.config.js is deprecated. Run `frontfriend login` to store credentials outside the repo."),e.configuredToken):null}module.exports={accountEmail:I,signedInAccount:oe,getCredentialsPath:ne,readCredentials:A,writeCredentials:v,deleteCredentials:ie,isExpired:E,postJson:x,refreshCredentials:D,resolveAuthToken:ue,createAuthRefreshError:l};
1
+ var p=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Ge=p((aa,be)=>{var w=require("fs");function Xn(r){try{let e=w.readFileSync(r,"utf8");return JSON.parse(e)}catch(e){if(e.code==="ENOENT")return null;throw e}}function Hn(r){try{return w.readFileSync(r,"utf8").replace(/^\uFEFF/,"")}catch(e){if(e.code==="ENOENT")return null;throw e}}function Vn(r,e,t=2){let n=JSON.stringify(e,null,t);w.writeFileSync(r,n,"utf8")}function Mn(r,e){w.writeFileSync(r,e,"utf8")}function Yn(r,e){if(e==null||typeof e=="object"&&Object.keys(e).length===0||Array.isArray(e)&&e.length===0){let n=`module.exports = ${Array.isArray(e)?"[]":"{}"};`;w.writeFileSync(r,n,"utf8")}else{let t=`module.exports = ${JSON.stringify(e,null,2)};`;w.writeFileSync(r,t,"utf8")}}function Jn(r){return w.existsSync(r)}function zn(r){w.mkdirSync(r,{recursive:!0})}function Bn(r){w.rmSync(r,{recursive:!0,force:!0})}function Wn(r){w.rmSync(r,{force:!0})}function Kn(r,e){w.mkdirSync(require("path").dirname(r),{recursive:!0,mode:448});let t=`${r}.${process.pid}.${Date.now()}.tmp`;try{w.writeFileSync(t,`${JSON.stringify(e,null,2)}
2
+ `,{mode:384}),w.renameSync(t,r);try{w.chmodSync(r,384)}catch{}}finally{w.rmSync(t,{force:!0})}}async function Zn(r,e,t){w.mkdirSync(require("path").dirname(r),{recursive:!0,mode:448});let n=`${r}.lock`,s=Date.now()+2e4,i;for(;i===void 0;)try{i=w.openSync(n,"wx",384),w.writeFileSync(i,String(process.pid))}catch(o){if(o.code!=="EEXIST")throw o;try{let c=Number(w.readFileSync(n,"utf8"));if(Number.isInteger(c)&&c>0)try{process.kill(c,0)}catch(u){if(u.code==="ESRCH"){w.unlinkSync(n);continue}}}catch(c){if(c.code==="ENOENT")continue}if(Date.now()>=s)throw t();await new Promise(c=>setTimeout(c,50))}try{return await e()}finally{w.closeSync(i),w.unlinkSync(n)}}be.exports={writePrivateJsonFileAtomic:Kn,withPrivateFileLock:Zn,readJsonFileSafe:Xn,readFileSafe:Hn,writeJsonFile:Vn,writeTextFile:Mn,writeModuleExportsFile:Yn,fileExists:Jn,ensureDirectoryExists:zn,removeDirectory:Bn,removeFile:Wn}});var ce=p((ua,Xe)=>{var Qn="https://app.frontfriend.dev",es=".cache/frontfriend",rs={JS:["tokens.js","variables.js","semanticVariables.js","semanticDarkVariables.js","keyframes.js","animations.js","safelist.js","custom.js"],JSON:["fonts.json","icons.json","components-config.json","iconLibrary.json","version.json","versionMetadata.json","metadata.json","base.json","nativeTokens.json"]},ts={FF_ID:"FF_ID",FF_API_URL:"FF_API_URL",FF_AUTH_TOKEN:"FF_AUTH_TOKEN",FF_MACHINE_TOKEN:"FRONTFRIEND_MACHINE_TOKEN"};function ns(r){if(!r)return null;try{let e=new URL(r);return e.hostname.startsWith("app.")?`${e.protocol}//${e.hostname.replace(/^app\./,"registry.")}`:null}catch{return null}}Xe.exports={DEFAULT_API_URL:Qn,CACHE_DIR_NAME:es,CACHE_TTL_DAYS:7,CACHE_TTL_MS:6048e5,CACHE_FILES:rs,ENV_VARS:ts,deriveRegistryFromApiUrl:ns}});var Je=p((la,Ye)=>{Ye.exports=Me;Me.sync=is;var He=require("fs");function ss(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var n=0;n<t.length;n++){var s=t[n].toLowerCase();if(s&&r.substr(-s.length).toLowerCase()===s)return!0}return!1}function Ve(r,e,t){return!r.isSymbolicLink()&&!r.isFile()?!1:ss(e,t)}function Me(r,e,t){He.stat(r,function(n,s){t(n,n?!1:Ve(s,r,e))})}function is(r,e){return Ve(He.statSync(r),r,e)}});var Ze=p((fa,Ke)=>{Ke.exports=Be;Be.sync=os;var ze=require("fs");function Be(r,e,t){ze.stat(r,function(n,s){t(n,n?!1:We(s,e))})}function os(r,e){return We(ze.statSync(r),e)}function We(r,e){return r.isFile()&&cs(r,e)}function cs(r,e){var t=r.mode,n=r.uid,s=r.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),c=parseInt("100",8),u=parseInt("010",8),a=parseInt("001",8),m=c|u,l=t&a||t&u&&s===o||t&c&&n===i||t&m&&i===0;return l}});var er=p((pa,Qe)=>{var ha=require("fs"),M;process.platform==="win32"||global.TESTING_WINDOWS?M=Je():M=Ze();Qe.exports=ae;ae.sync=as;function ae(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){ae(r,e||{},function(i,o){i?s(i):n(o)})})}M(r,e||{},function(n,s){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,s=!1),t(n,s)})}function as(r,e){try{return M.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var cr=p((Ea,or)=>{var F=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",rr=require("path"),us=F?";":":",tr=er(),nr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),sr=(r,e)=>{let t=e.colon||us,n=r.match(/\//)||F&&r.match(/\\/)?[""]:[...F?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],s=F?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=F?s.split(t):[""];return F&&r.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:s}},ir=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:n,pathExt:s,pathExtExe:i}=sr(r,e),o=[],c=a=>new Promise((m,l)=>{if(a===n.length)return e.all&&o.length?m(o):l(nr(r));let $=n[a],E=/^".*"$/.test($)?$.slice(1,-1):$,T=rr.join(E,r),oe=!E&&/^\.[\\\/]/.test(r)?r.slice(0,2)+T:T;m(u(oe,a,0))}),u=(a,m,l)=>new Promise(($,E)=>{if(l===s.length)return $(c(m+1));let T=s[l];tr(a+T,{pathExt:i},(oe,Gn)=>{if(!oe&&Gn)if(e.all)o.push(a+T);else return $(a+T);return $(u(a,m,l+1))})});return t?c(0).then(a=>t(null,a),t):c(0)},ls=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:n,pathExtExe:s}=sr(r,e),i=[];for(let o=0;o<t.length;o++){let c=t[o],u=/^".*"$/.test(c)?c.slice(1,-1):c,a=rr.join(u,r),m=!u&&/^\.[\\\/]/.test(r)?r.slice(0,2)+a:a;for(let l=0;l<n.length;l++){let $=m+n[l];try{if(tr.sync($,{pathExt:s}))if(e.all)i.push($);else return $}catch{}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw nr(r)};or.exports=ir;ir.sync=ls});var ur=p((ma,ue)=>{"use strict";var ar=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};ue.exports=ar;ue.exports.default=ar});var pr=p((da,hr)=>{"use strict";var lr=require("path"),fs=cr(),hs=ur();function fr(r,e){let t=r.options.env||process.env,n=process.cwd(),s=r.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(r.options.cwd)}catch{}let o;try{o=fs.sync(r.command,{path:t[hs({env:t})],pathExt:e?lr.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return o&&(o=lr.resolve(s?r.options.cwd:"",o)),o}function ps(r){return fr(r)||fr(r,!0)}hr.exports=ps});var Er=p(($a,fe)=>{"use strict";var le=/([()\][%!^"`<>&|;, *?])/g;function Es(r){return r=r.replace(le,"^$1"),r}function ms(r,e){return r=`${r}`,r=r.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),r=r.replace(/(?=(\\+?)?)\1$/,"$1$1"),r=`"${r}"`,r=r.replace(le,"^$1"),e&&(r=r.replace(le,"^$1")),r}fe.exports.command=Es;fe.exports.argument=ms});var dr=p((Ra,mr)=>{"use strict";mr.exports=/^#!(.*)/});var Rr=p((wa,$r)=>{"use strict";var ds=dr();$r.exports=(r="")=>{let e=r.match(ds);if(!e)return null;let[t,n]=e[0].replace(/#! ?/,"").split(" "),s=t.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s}});var gr=p((ga,wr)=>{"use strict";var he=require("fs"),$s=Rr();function Rs(r){let t=Buffer.alloc(150),n;try{n=he.openSync(r,"r"),he.readSync(n,t,0,150,0),he.closeSync(n)}catch{}return $s(t.toString())}wr.exports=Rs});var Tr=p((Ia,Nr)=>{"use strict";var ws=require("path"),Ir=pr(),Sr=Er(),gs=gr(),Is=process.platform==="win32",Ss=/\.(?:com|exe)$/i,Ns=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Ts(r){r.file=Ir(r);let e=r.file&&gs(r.file);return e?(r.args.unshift(r.file),r.command=e,Ir(r)):r.file}function ys(r){if(!Is)return r;let e=Ts(r),t=!Ss.test(e);if(r.options.forceShell||t){let n=Ns.test(e);r.command=ws.normalize(r.command),r.command=Sr.command(r.command),r.args=r.args.map(i=>Sr.argument(i,n));let s=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${s}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function As(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let n={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?n:ys(n)}Nr.exports=As});var Or=p((Sa,Ar)=>{"use strict";var pe=process.platform==="win32";function Ee(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Os(r,e){if(!pe)return;let t=r.emit;r.emit=function(n,s){if(n==="exit"){let i=yr(s,e);if(i)return t.call(r,"error",i)}return t.apply(r,arguments)}}function yr(r,e){return pe&&r===1&&!e.file?Ee(e.original,"spawn"):null}function Ls(r,e){return pe&&r===1&&!e.file?Ee(e.original,"spawnSync"):null}Ar.exports={hookChildProcess:Os,verifyENOENT:yr,verifyENOENTSync:Ls,notFoundError:Ee}});var xr=p((Na,D)=>{"use strict";var Lr=require("child_process"),me=Tr(),de=Or();function qr(r,e,t){let n=me(r,e,t),s=Lr.spawn(n.command,n.args,n.options);return de.hookChildProcess(s,n),s}function qs(r,e,t){let n=me(r,e,t),s=Lr.spawnSync(n.command,n.args,n.options);return s.error=s.error||de.verifyENOENTSync(s.status,n),s}D.exports=qr;D.exports.spawn=qr;D.exports.sync=qs;D.exports._parse=me;D.exports._enoent=de});var j=p((Ta,vr)=>{"use strict";var xs="2.0.0",vs=Number.MAX_SAFE_INTEGER||9007199254740991,Cs=16,Ps=250,Fs=["major","premajor","minor","preminor","patch","prepatch","prerelease"];vr.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Cs,MAX_SAFE_BUILD_LENGTH:Ps,MAX_SAFE_INTEGER:vs,RELEASE_TYPES:Fs,SEMVER_SPEC_VERSION:xs,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var b=p((ya,Cr)=>{"use strict";var Ds=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};Cr.exports=Ds});var k=p((L,Pr)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:$e,MAX_SAFE_BUILD_LENGTH:js,MAX_LENGTH:ks}=j(),_s=b();L=Pr.exports={};var Us=L.re=[],bs=L.safeRe=[],f=L.src=[],Gs=L.safeSrc=[],h=L.t={},Xs=0,Re="[a-zA-Z0-9-]",Hs=[["\\s",1],["\\d",ks],[Re,js]],Vs=r=>{for(let[e,t]of Hs)r=r.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return r},d=(r,e,t)=>{let n=Vs(e),s=Xs++;_s(r,s,e),h[r]=s,f[s]=e,Gs[s]=n,Us[s]=new RegExp(e,t?"g":void 0),bs[s]=new RegExp(n,t?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*");d("NUMERICIDENTIFIERLOOSE","\\d+");d("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Re}*`);d("MAINVERSION",`(${f[h.NUMERICIDENTIFIER]})\\.(${f[h.NUMERICIDENTIFIER]})\\.(${f[h.NUMERICIDENTIFIER]})`);d("MAINVERSIONLOOSE",`(${f[h.NUMERICIDENTIFIERLOOSE]})\\.(${f[h.NUMERICIDENTIFIERLOOSE]})\\.(${f[h.NUMERICIDENTIFIERLOOSE]})`);d("PRERELEASEIDENTIFIER",`(?:${f[h.NONNUMERICIDENTIFIER]}|${f[h.NUMERICIDENTIFIER]})`);d("PRERELEASEIDENTIFIERLOOSE",`(?:${f[h.NONNUMERICIDENTIFIER]}|${f[h.NUMERICIDENTIFIERLOOSE]})`);d("PRERELEASE",`(?:-(${f[h.PRERELEASEIDENTIFIER]}(?:\\.${f[h.PRERELEASEIDENTIFIER]})*))`);d("PRERELEASELOOSE",`(?:-?(${f[h.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${f[h.PRERELEASEIDENTIFIERLOOSE]})*))`);d("BUILDIDENTIFIER",`${Re}+`);d("BUILD",`(?:\\+(${f[h.BUILDIDENTIFIER]}(?:\\.${f[h.BUILDIDENTIFIER]})*))`);d("FULLPLAIN",`v?${f[h.MAINVERSION]}${f[h.PRERELEASE]}?${f[h.BUILD]}?`);d("FULL",`^${f[h.FULLPLAIN]}$`);d("LOOSEPLAIN",`[v=\\s]*${f[h.MAINVERSIONLOOSE]}${f[h.PRERELEASELOOSE]}?${f[h.BUILD]}?`);d("LOOSE",`^${f[h.LOOSEPLAIN]}$`);d("GTLT","((?:<|>)?=?)");d("XRANGEIDENTIFIERLOOSE",`${f[h.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);d("XRANGEIDENTIFIER",`${f[h.NUMERICIDENTIFIER]}|x|X|\\*`);d("XRANGEPLAIN",`[v=\\s]*(${f[h.XRANGEIDENTIFIER]})(?:\\.(${f[h.XRANGEIDENTIFIER]})(?:\\.(${f[h.XRANGEIDENTIFIER]})(?:${f[h.PRERELEASE]})?${f[h.BUILD]}?)?)?`);d("XRANGEPLAINLOOSE",`[v=\\s]*(${f[h.XRANGEIDENTIFIERLOOSE]})(?:\\.(${f[h.XRANGEIDENTIFIERLOOSE]})(?:\\.(${f[h.XRANGEIDENTIFIERLOOSE]})(?:${f[h.PRERELEASELOOSE]})?${f[h.BUILD]}?)?)?`);d("XRANGE",`^${f[h.GTLT]}\\s*${f[h.XRANGEPLAIN]}$`);d("XRANGELOOSE",`^${f[h.GTLT]}\\s*${f[h.XRANGEPLAINLOOSE]}$`);d("COERCEPLAIN",`(^|[^\\d])(\\d{1,${$e}})(?:\\.(\\d{1,${$e}}))?(?:\\.(\\d{1,${$e}}))?`);d("COERCE",`${f[h.COERCEPLAIN]}(?:$|[^\\d])`);d("COERCEFULL",f[h.COERCEPLAIN]+`(?:${f[h.PRERELEASE]})?(?:${f[h.BUILD]})?(?:$|[^\\d])`);d("COERCERTL",f[h.COERCE],!0);d("COERCERTLFULL",f[h.COERCEFULL],!0);d("LONETILDE","(?:~>?)");d("TILDETRIM",`(\\s*)${f[h.LONETILDE]}\\s+`,!0);L.tildeTrimReplace="$1~";d("TILDE",`^${f[h.LONETILDE]}${f[h.XRANGEPLAIN]}$`);d("TILDELOOSE",`^${f[h.LONETILDE]}${f[h.XRANGEPLAINLOOSE]}$`);d("LONECARET","(?:\\^)");d("CARETTRIM",`(\\s*)${f[h.LONECARET]}\\s+`,!0);L.caretTrimReplace="$1^";d("CARET",`^${f[h.LONECARET]}${f[h.XRANGEPLAIN]}$`);d("CARETLOOSE",`^${f[h.LONECARET]}${f[h.XRANGEPLAINLOOSE]}$`);d("COMPARATORLOOSE",`^${f[h.GTLT]}\\s*(${f[h.LOOSEPLAIN]})$|^$`);d("COMPARATOR",`^${f[h.GTLT]}\\s*(${f[h.FULLPLAIN]})$|^$`);d("COMPARATORTRIM",`(\\s*)${f[h.GTLT]}\\s*(${f[h.LOOSEPLAIN]}|${f[h.XRANGEPLAIN]})`,!0);L.comparatorTrimReplace="$1$2$3";d("HYPHENRANGE",`^\\s*(${f[h.XRANGEPLAIN]})\\s+-\\s+(${f[h.XRANGEPLAIN]})\\s*$`);d("HYPHENRANGELOOSE",`^\\s*(${f[h.XRANGEPLAINLOOSE]})\\s+-\\s+(${f[h.XRANGEPLAINLOOSE]})\\s*$`);d("STAR","(<|>)?=?\\s*\\*");d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Y=p((Aa,Fr)=>{"use strict";var Ms=Object.freeze({loose:!0}),Ys=Object.freeze({}),Js=r=>r?typeof r!="object"?Ms:r:Ys;Fr.exports=Js});var we=p((Oa,kr)=>{"use strict";var Dr=/^[0-9]+$/,jr=(r,e)=>{if(typeof r=="number"&&typeof e=="number")return r===e?0:r<e?-1:1;let t=Dr.test(r),n=Dr.test(e);return t&&n&&(r=+r,e=+e),r===e?0:t&&!n?-1:n&&!t?1:r<e?-1:1},zs=(r,e)=>jr(e,r);kr.exports={compareIdentifiers:jr,rcompareIdentifiers:zs}});var I=p((La,Ur)=>{"use strict";var J=b(),{MAX_LENGTH:_r,MAX_SAFE_INTEGER:z}=j(),{safeRe:B,t:W}=k(),Bs=Y(),{compareIdentifiers:ge}=we(),Ws=(r,e)=>{let t=e.split(".");if(t.length>r.length)return!1;for(let n=0;n<t.length;n++)if(ge(r[n],t[n])!==0)return!1;return!0},Ie=class r{constructor(e,t){if(t=Bs(t),e instanceof r){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>_r)throw new TypeError(`version is longer than ${_r} characters`);J("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let n=e.trim().match(t.loose?B[W.LOOSE]:B[W.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>z||this.major<0)throw new TypeError("Invalid major version");if(this.minor>z||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>z||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(s=>{if(/^[0-9]+$/.test(s)){let i=+s;if(i>=0&&i<z)return i}return s}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(J("SemVer.compare",this.version,this.options,e),!(e instanceof r)){if(typeof e=="string"&&e===this.version)return 0;e=new r(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof r||(e=new r(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof r||(e=new r(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let n=this.prerelease[t],s=e.prerelease[t];if(J("prerelease compare",t,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return ge(n,s)}while(++t)}compareBuild(e){e instanceof r||(e=new r(e,this.options));let t=0;do{let n=this.build[t],s=e.build[t];if(J("build compare",t,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return ge(n,s)}while(++t)}inc(e,t,n){if(e.startsWith("pre")){if(!t&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let s=`-${t}`.match(this.options.loose?B[W.PRERELEASELOOSE]:B[W.PRERELEASE]);if(!s||s[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,n),this.inc("pre",t,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,n),this.inc("pre",t,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let s=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[s];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(t===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(t){let i=[t,s];if(n===!1&&(i=[t]),Ws(this.prerelease,t)){let o=this.prerelease[t.split(".").length];isNaN(o)&&(this.prerelease=i)}else this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Ur.exports=Ie});var x=p((qa,Gr)=>{"use strict";var br=I(),Ks=(r,e,t=!1)=>{if(r instanceof br)return r;try{return new br(r,e)}catch(n){if(!t)return null;throw n}};Gr.exports=Ks});var Hr=p((xa,Xr)=>{"use strict";var Zs=x(),Qs=(r,e)=>{let t=Zs(r,e);return t?t.version:null};Xr.exports=Qs});var Mr=p((va,Vr)=>{"use strict";var ei=x(),ri=(r,e)=>{let t=ei(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};Vr.exports=ri});var zr=p((Ca,Jr)=>{"use strict";var Yr=I(),ti=(r,e,t,n,s)=>{typeof t=="string"&&(s=n,n=t,t=void 0);try{return new Yr(r instanceof Yr?r.version:r,t).inc(e,n,s).version}catch{return null}};Jr.exports=ti});var Kr=p((Pa,Wr)=>{"use strict";var Br=x(),ni=(r,e)=>{let t=Br(r,null,!0),n=Br(e,null,!0),s=t.compare(n);if(s===0)return null;let i=s>0,o=i?t:n,c=i?n:t,u=!!o.prerelease.length;if(!!c.prerelease.length&&!u){if(!c.patch&&!c.minor)return"major";if(c.compareMain(o)===0)return c.minor&&!c.patch?"minor":"patch"}let m=u?"pre":"";return t.major!==n.major?m+"major":t.minor!==n.minor?m+"minor":t.patch!==n.patch?m+"patch":"prerelease"};Wr.exports=ni});var Qr=p((Fa,Zr)=>{"use strict";var si=I(),ii=(r,e)=>new si(r,e).major;Zr.exports=ii});var rt=p((Da,et)=>{"use strict";var oi=I(),ci=(r,e)=>new oi(r,e).minor;et.exports=ci});var nt=p((ja,tt)=>{"use strict";var ai=I(),ui=(r,e)=>new ai(r,e).patch;tt.exports=ui});var it=p((ka,st)=>{"use strict";var li=x(),fi=(r,e)=>{let t=li(r,e);return t&&t.prerelease.length?t.prerelease:null};st.exports=fi});var y=p((_a,ct)=>{"use strict";var ot=I(),hi=(r,e,t)=>new ot(r,t).compare(new ot(e,t));ct.exports=hi});var ut=p((Ua,at)=>{"use strict";var pi=y(),Ei=(r,e,t)=>pi(e,r,t);at.exports=Ei});var ft=p((ba,lt)=>{"use strict";var mi=y(),di=(r,e)=>mi(r,e,!0);lt.exports=di});var K=p((Ga,pt)=>{"use strict";var ht=I(),$i=(r,e,t)=>{let n=new ht(r,t),s=new ht(e,t);return n.compare(s)||n.compareBuild(s)};pt.exports=$i});var mt=p((Xa,Et)=>{"use strict";var Ri=K(),wi=(r,e)=>r.sort((t,n)=>Ri(t,n,e));Et.exports=wi});var $t=p((Ha,dt)=>{"use strict";var gi=K(),Ii=(r,e)=>r.sort((t,n)=>gi(n,t,e));dt.exports=Ii});var G=p((Va,Rt)=>{"use strict";var Si=y(),Ni=(r,e,t)=>Si(r,e,t)>0;Rt.exports=Ni});var Z=p((Ma,wt)=>{"use strict";var Ti=y(),yi=(r,e,t)=>Ti(r,e,t)<0;wt.exports=yi});var Se=p((Ya,gt)=>{"use strict";var Ai=y(),Oi=(r,e,t)=>Ai(r,e,t)===0;gt.exports=Oi});var Ne=p((Ja,It)=>{"use strict";var Li=y(),qi=(r,e,t)=>Li(r,e,t)!==0;It.exports=qi});var Q=p((za,St)=>{"use strict";var xi=y(),vi=(r,e,t)=>xi(r,e,t)>=0;St.exports=vi});var ee=p((Ba,Nt)=>{"use strict";var Ci=y(),Pi=(r,e,t)=>Ci(r,e,t)<=0;Nt.exports=Pi});var Te=p((Wa,Tt)=>{"use strict";var Fi=Se(),Di=Ne(),ji=G(),ki=Q(),_i=Z(),Ui=ee(),bi=(r,e,t,n)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return Fi(r,t,n);case"!=":return Di(r,t,n);case">":return ji(r,t,n);case">=":return ki(r,t,n);case"<":return _i(r,t,n);case"<=":return Ui(r,t,n);default:throw new TypeError(`Invalid operator: ${e}`)}};Tt.exports=bi});var At=p((Ka,yt)=>{"use strict";var Gi=I(),Xi=x(),{safeRe:re,t:te}=k(),Hi=(r,e)=>{if(r instanceof Gi)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?re[te.COERCEFULL]:re[te.COERCE]);else{let u=e.includePrerelease?re[te.COERCERTLFULL]:re[te.COERCERTL],a;for(;(a=u.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||a.index+a[0].length!==t.index+t[0].length)&&(t=a),u.lastIndex=a.index+a[1].length+a[2].length;u.lastIndex=-1}if(t===null)return null;let n=t[2],s=t[3]||"0",i=t[4]||"0",o=e.includePrerelease&&t[5]?`-${t[5]}`:"",c=e.includePrerelease&&t[6]?`+${t[6]}`:"";return Xi(`${n}.${s}.${i}${o}${c}`,e)};yt.exports=Hi});var Lt=p((Za,Ot)=>{"use strict";var Vi=x(),Mi=j(),Yi=I(),Ji=(r,e,t)=>{if(!Mi.RELEASE_TYPES.includes(e))return null;let n=zi(r,t);return n&&Bi(n,e)},zi=(r,e)=>{let t=r instanceof Yi?r.version:r;return Vi(t,e)},Bi=(r,e)=>{if(Wi(e))return r.version;switch(r.prerelease=[],e){case"major":r.minor=0,r.patch=0;break;case"minor":r.patch=0;break}return r.format()},Wi=r=>r.startsWith("pre");Ot.exports=Ji});var xt=p((Qa,qt)=>{"use strict";var ye=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(e,t)}return this}};qt.exports=ye});var A=p((eu,Ft)=>{"use strict";var Ki=/\s+/g,Ae=class r{constructor(e,t){if(t=Qi(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof Oe)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(Ki," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(s=>!Ct(s[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let s of this.set)if(s.length===1&&ao(s[0])){this.set=[s];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let t=this.set[e];for(let n=0;n<t.length;n++)n>0&&(this.formatted+=" "),this.formatted+=t[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(co,"");let n=((this.options.includePrerelease&&io)|(this.options.loose&&oo))+":"+e,s=vt.get(n);if(s)return s;let i=this.options.loose,o=i?N[S.HYPHENRANGELOOSE]:N[S.HYPHENRANGE];e=e.replace(o,go(this.options.includePrerelease)),R("hyphen replace",e),e=e.replace(N[S.COMPARATORTRIM],to),R("comparator trim",e),e=e.replace(N[S.TILDETRIM],no),R("tilde trim",e),e=e.replace(N[S.CARETTRIM],so),R("caret trim",e);let c=e.split(" ").map(l=>uo(l,this.options)).join(" ").split(/\s+/).map(l=>wo(l,this.options));i&&(c=c.filter(l=>(R("loose invalid filter",l,this.options),!!l.match(N[S.COMPARATORLOOSE])))),R("range list",c);let u=new Map,a=c.map(l=>new Oe(l,this.options));for(let l of a){if(Ct(l))return[l];u.set(l.value,l)}u.size>1&&u.has("")&&u.delete("");let m=[...u.values()];return vt.set(n,m),m}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some(n=>Pt(n,t)&&e.set.some(s=>Pt(s,t)&&n.every(i=>s.every(o=>i.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new eo(e,this.options)}catch{return!1}for(let t=0;t<this.set.length;t++)if(Io(this.set[t],e,this.options))return!0;return!1}};Ft.exports=Ae;var Zi=xt(),vt=new Zi,Qi=Y(),Oe=X(),R=b(),eo=I(),{safeRe:N,src:ro,t:S,comparatorTrimReplace:to,tildeTrimReplace:no,caretTrimReplace:so}=k(),{FLAG_INCLUDE_PRERELEASE:io,FLAG_LOOSE:oo}=j(),co=new RegExp(ro[S.BUILD],"g"),Ct=r=>r.value==="<0.0.0-0",ao=r=>r.value==="",Pt=(r,e)=>{let t=!0,n=r.slice(),s=n.pop();for(;t&&n.length;)t=n.every(i=>s.intersects(i,e)),s=n.pop();return t},uo=(r,e)=>(r=r.replace(N[S.BUILD],""),R("comp",r,e),r=po(r,e),R("caret",r),r=fo(r,e),R("tildes",r),r=mo(r,e),R("xrange",r),r=Ro(r,e),R("stars",r),r),g=r=>!r||r.toLowerCase()==="x"||r==="*",lo=(r,e,t)=>g(r)&&!g(e)||g(e)&&t&&!g(t),fo=(r,e)=>r.trim().split(/\s+/).map(t=>ho(t,e)).join(" "),ho=(r,e)=>{let t=e.loose?N[S.TILDELOOSE]:N[S.TILDE],n=e.includePrerelease?"-0":"";return r.replace(t,(s,i,o,c,u)=>{R("tilde",r,s,i,o,c,u);let a;return g(i)?a="":g(o)?a=`>=${i}.0.0${n} <${+i+1}.0.0-0`:g(c)?a=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:u?(R("replaceTilde pr",u),a=`>=${i}.${o}.${c}-${u} <${i}.${+o+1}.0-0`):a=`>=${i}.${o}.${c} <${i}.${+o+1}.0-0`,R("tilde return",a),a})},po=(r,e)=>r.trim().split(/\s+/).map(t=>Eo(t,e)).join(" "),Eo=(r,e)=>{R("caret",r,e);let t=e.loose?N[S.CARETLOOSE]:N[S.CARET],n=e.includePrerelease?"-0":"";return r.replace(t,(s,i,o,c,u)=>{R("caret",r,s,i,o,c,u);let a;return g(i)?a="":g(o)?a=`>=${i}.0.0${n} <${+i+1}.0.0-0`:g(c)?i==="0"?a=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:a=`>=${i}.${o}.0${n} <${+i+1}.0.0-0`:u?(R("replaceCaret pr",u),i==="0"?o==="0"?a=`>=${i}.${o}.${c}-${u} <${i}.${o}.${+c+1}-0`:a=`>=${i}.${o}.${c}-${u} <${i}.${+o+1}.0-0`:a=`>=${i}.${o}.${c}-${u} <${+i+1}.0.0-0`):(R("no pr"),i==="0"?o==="0"?a=`>=${i}.${o}.${c} <${i}.${o}.${+c+1}-0`:a=`>=${i}.${o}.${c} <${i}.${+o+1}.0-0`:a=`>=${i}.${o}.${c} <${+i+1}.0.0-0`),R("caret return",a),a})},mo=(r,e)=>(R("replaceXRanges",r,e),r.split(/\s+/).map(t=>$o(t,e)).join(" ")),$o=(r,e)=>{r=r.trim();let t=e.loose?N[S.XRANGELOOSE]:N[S.XRANGE];return r.replace(t,(n,s,i,o,c,u)=>{if(R("xRange",r,n,s,i,o,c,u),lo(i,o,c))return r;let a=g(i),m=a||g(o),l=m||g(c),$=l;return s==="="&&$&&(s=""),u=e.includePrerelease?"-0":"",a?s===">"||s==="<"?n="<0.0.0-0":n="*":s&&$?(m&&(o=0),c=0,s===">"?(s=">=",m?(i=+i+1,o=0,c=0):(o=+o+1,c=0)):s==="<="&&(s="<",m?i=+i+1:o=+o+1),s==="<"&&(u="-0"),n=`${s+i}.${o}.${c}${u}`):m?n=`>=${i}.0.0${u} <${+i+1}.0.0-0`:l&&(n=`>=${i}.${o}.0${u} <${i}.${+o+1}.0-0`),R("xRange return",n),n})},Ro=(r,e)=>(R("replaceStars",r,e),r.trim().replace(N[S.STAR],"")),wo=(r,e)=>(R("replaceGTE0",r,e),r.trim().replace(N[e.includePrerelease?S.GTE0PRE:S.GTE0],"")),go=r=>(e,t,n,s,i,o,c,u,a,m,l,$)=>(g(n)?t="":g(s)?t=`>=${n}.0.0${r?"-0":""}`:g(i)?t=`>=${n}.${s}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,g(a)?u="":g(m)?u=`<${+a+1}.0.0-0`:g(l)?u=`<${a}.${+m+1}.0-0`:$?u=`<=${a}.${m}.${l}-${$}`:r?u=`<${a}.${m}.${+l+1}-0`:u=`<=${u}`,`${t} ${u}`.trim()),Io=(r,e,t)=>{for(let n=0;n<r.length;n++)if(!r[n].test(e))return!1;if(e.prerelease.length&&!t.includePrerelease){for(let n=0;n<r.length;n++)if(R(r[n].semver),r[n].semver!==Oe.ANY&&r[n].semver.prerelease.length>0){let s=r[n].semver;if(s.major===e.major&&s.minor===e.minor&&s.patch===e.patch)return!0}return!1}return!0}});var X=p((ru,bt)=>{"use strict";var H=Symbol("SemVer ANY"),xe=class r{static get ANY(){return H}constructor(e,t){if(t=Dt(t),e instanceof r){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),qe("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===H?this.value="":this.value=this.operator+this.semver.version,qe("comp",this)}parse(e){let t=this.options.loose?jt[kt.COMPARATORLOOSE]:jt[kt.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new _t(n[2],this.options.loose):this.semver=H}toString(){return this.value}test(e){if(qe("Comparator.test",e,this.options.loose),this.semver===H||e===H)return!0;if(typeof e=="string")try{e=new _t(e,this.options)}catch{return!1}return Le(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Ut(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new Ut(this.value,t).test(e.semver):(t=Dt(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||Le(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Le(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};bt.exports=xe;var Dt=Y(),{safeRe:jt,t:kt}=k(),Le=Te(),qe=b(),_t=I(),Ut=A()});var V=p((tu,Gt)=>{"use strict";var So=A(),No=(r,e,t)=>{try{e=new So(e,t)}catch{return!1}return e.test(r)};Gt.exports=No});var Ht=p((nu,Xt)=>{"use strict";var To=A(),yo=(r,e)=>new To(r,e).set.map(t=>t.map(n=>n.value).join(" ").trim().split(" "));Xt.exports=yo});var Mt=p((su,Vt)=>{"use strict";var Ao=I(),Oo=A(),Lo=(r,e,t)=>{let n=null,s=null,i=null;try{i=new Oo(e,t)}catch{return null}return r.forEach(o=>{i.test(o)&&(!n||s.compare(o)===-1)&&(n=o,s=new Ao(n,t))}),n};Vt.exports=Lo});var Jt=p((iu,Yt)=>{"use strict";var qo=I(),xo=A(),vo=(r,e,t)=>{let n=null,s=null,i=null;try{i=new xo(e,t)}catch{return null}return r.forEach(o=>{i.test(o)&&(!n||s.compare(o)===1)&&(n=o,s=new qo(n,t))}),n};Yt.exports=vo});var Wt=p((ou,Bt)=>{"use strict";var ve=I(),Co=A(),zt=G(),Po=(r,e)=>{r=new Co(r,e);let t=new ve("0.0.0");if(r.test(t)||(t=new ve("0.0.0-0"),r.test(t)))return t;t=null;for(let n=0;n<r.set.length;++n){let s=r.set[n],i=null;s.forEach(o=>{let c=new ve(o.semver.version);switch(o.operator){case">":c.prerelease.length===0?c.patch++:c.prerelease.push(0),c.raw=c.format();case"":case">=":(!i||zt(c,i))&&(i=c);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),i&&(!t||zt(t,i))&&(t=i)}return t&&r.test(t)?t:null};Bt.exports=Po});var Zt=p((cu,Kt)=>{"use strict";var Fo=A(),Do=(r,e)=>{try{return new Fo(r,e).range||"*"}catch{return null}};Kt.exports=Do});var ne=p((au,tn)=>{"use strict";var jo=I(),rn=X(),{ANY:ko}=rn,_o=A(),Uo=V(),Qt=G(),en=Z(),bo=ee(),Go=Q(),Xo=(r,e,t,n)=>{r=new jo(r,n),e=new _o(e,n);let s,i,o,c,u;switch(t){case">":s=Qt,i=bo,o=en,c=">",u=">=";break;case"<":s=en,i=Go,o=Qt,c="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Uo(r,e,n))return!1;for(let a=0;a<e.set.length;++a){let m=e.set[a],l=null,$=null;if(m.forEach(E=>{E.semver===ko&&(E=new rn(">=0.0.0")),l=l||E,$=$||E,s(E.semver,l.semver,n)?l=E:o(E.semver,$.semver,n)&&($=E)}),l.operator===c||l.operator===u||(!$.operator||$.operator===c)&&i(r,$.semver))return!1;if($.operator===u&&o(r,$.semver))return!1}return!0};tn.exports=Xo});var sn=p((uu,nn)=>{"use strict";var Ho=ne(),Vo=(r,e,t)=>Ho(r,e,">",t);nn.exports=Vo});var cn=p((lu,on)=>{"use strict";var Mo=ne(),Yo=(r,e,t)=>Mo(r,e,"<",t);on.exports=Yo});var ln=p((fu,un)=>{"use strict";var an=A(),Jo=(r,e,t)=>(r=new an(r,t),e=new an(e,t),r.intersects(e,t));un.exports=Jo});var hn=p((hu,fn)=>{"use strict";var zo=V(),Bo=y();fn.exports=(r,e,t)=>{let n=[],s=null,i=null,o=r.sort((m,l)=>Bo(m,l,t));for(let m of o)zo(m,e,t)?(i=m,s||(s=m)):(i&&n.push([s,i]),i=null,s=null);s&&n.push([s,null]);let c=[];for(let[m,l]of n)m===l?c.push(m):!l&&m===o[0]?c.push("*"):l?m===o[0]?c.push(`<=${l}`):c.push(`${m} - ${l}`):c.push(`>=${m}`);let u=c.join(" || "),a=typeof e.raw=="string"?e.raw:String(e);return u.length<a.length?u:e}});var Rn=p((pu,$n)=>{"use strict";var pn=A(),Fe=X(),{ANY:Ce}=Fe,Pe=V(),De=y(),Wo=(r,e,t={})=>{if(r===e)return!0;r=new pn(r,t),e=new pn(e,t);let n=!1;e:for(let s of r.set){for(let i of e.set){let o=Zo(s,i,t);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},Ko=[new Fe(">=0.0.0-0")],En=[new Fe(">=0.0.0")],Zo=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Ce){if(e.length===1&&e[0].semver===Ce)return!0;t.includePrerelease?r=Ko:r=En}if(e.length===1&&e[0].semver===Ce){if(t.includePrerelease)return!0;e=En}let n=new Set,s,i;for(let E of r)E.operator===">"||E.operator===">="?s=mn(s,E,t):E.operator==="<"||E.operator==="<="?i=dn(i,E,t):n.add(E.semver);if(n.size>1)return null;let o;if(s&&i){if(o=De(s.semver,i.semver,t),o>0)return null;if(o===0&&(s.operator!==">="||i.operator!=="<="))return null}for(let E of n){if(s&&!Pe(E,String(s),t)||i&&!Pe(E,String(i),t))return null;for(let T of e)if(!Pe(E,String(T),t))return!1;return!0}let c,u,a,m,l=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1,$=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1;l&&l.prerelease.length===1&&i.operator==="<"&&l.prerelease[0]===0&&(l=!1);for(let E of e){if(m=m||E.operator===">"||E.operator===">=",a=a||E.operator==="<"||E.operator==="<=",s){if($&&E.semver.prerelease&&E.semver.prerelease.length&&E.semver.major===$.major&&E.semver.minor===$.minor&&E.semver.patch===$.patch&&($=!1),E.operator===">"||E.operator===">="){if(c=mn(s,E,t),c===E&&c!==s)return!1}else if(s.operator===">="&&!E.test(s.semver))return!1}if(i){if(l&&E.semver.prerelease&&E.semver.prerelease.length&&E.semver.major===l.major&&E.semver.minor===l.minor&&E.semver.patch===l.patch&&(l=!1),E.operator==="<"||E.operator==="<="){if(u=dn(i,E,t),u===E&&u!==i)return!1}else if(i.operator==="<="&&!E.test(i.semver))return!1}if(!E.operator&&(i||s)&&o!==0)return!1}return!(s&&a&&!i&&o!==0||i&&m&&!s&&o!==0||$||l)},mn=(r,e,t)=>{if(!r)return e;let n=De(r.semver,e.semver,t);return n>0?r:n<0||e.operator===">"&&r.operator===">="?e:r},dn=(r,e,t)=>{if(!r)return e;let n=De(r.semver,e.semver,t);return n<0?r:n>0||e.operator==="<"&&r.operator==="<="?e:r};$n.exports=Wo});var Sn=p((Eu,In)=>{"use strict";var je=k(),wn=j(),Qo=I(),gn=we(),ec=x(),rc=Hr(),tc=Mr(),nc=zr(),sc=Kr(),ic=Qr(),oc=rt(),cc=nt(),ac=it(),uc=y(),lc=ut(),fc=ft(),hc=K(),pc=mt(),Ec=$t(),mc=G(),dc=Z(),$c=Se(),Rc=Ne(),wc=Q(),gc=ee(),Ic=Te(),Sc=At(),Nc=Lt(),Tc=X(),yc=A(),Ac=V(),Oc=Ht(),Lc=Mt(),qc=Jt(),xc=Wt(),vc=Zt(),Cc=ne(),Pc=sn(),Fc=cn(),Dc=ln(),jc=hn(),kc=Rn();In.exports={parse:ec,valid:rc,clean:tc,inc:nc,diff:sc,major:ic,minor:oc,patch:cc,prerelease:ac,compare:uc,rcompare:lc,compareLoose:fc,compareBuild:hc,sort:pc,rsort:Ec,gt:mc,lt:dc,eq:$c,neq:Rc,gte:wc,lte:gc,cmp:Ic,coerce:Sc,truncate:Nc,Comparator:Tc,Range:yc,satisfies:Ac,toComparators:Oc,maxSatisfying:Lc,minSatisfying:qc,minVersion:xc,validRange:vc,outside:Cc,gtr:Pc,ltr:Fc,intersects:Dc,simplifyRange:jc,subset:kc,SemVer:Qo,re:je.re,src:je.src,tokens:je.t,SEMVER_SPEC_VERSION:wn.SEMVER_SPEC_VERSION,RELEASE_TYPES:wn.RELEASE_TYPES,compareIdentifiers:gn.compareIdentifiers,rcompareIdentifiers:gn.rcompareIdentifiers}});var Pn=p((mu,Cn)=>{var v=require("fs"),O=require("path"),Tn=xr(),C=Sn(),{DEFAULT_API_URL:_c}=ce(),ke=["dependencies","devDependencies","optionalDependencies","peerDependencies"];function yn(r){let e=new Map;for(let t of r){let n=typeof t=="string"&&t.match(/^((?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*)(?:@([^\r\n]+))?$/);if(!n)throw new Error(`Invalid npm dependency: ${String(t)}`);let[,s,i]=n,o=e.get(s);e.set(s,o&&i?Uc(s,o,i):i||o)}return e}function Uc(r,e,t){if(e===t)return e;let n=C.validRange(e),s=C.validRange(t);if(n&&s)try{if(C.subset(s,n))return t;if(C.subset(n,s))return e}catch{}throw new Error(`Conflicting registry versions for ${r}: ${e} and ${t}`)}function An(r,e){let t=typeof r=="string"&&C.validRange(r),n=C.validRange(e);if(!t||!n)return!1;try{return C.subset(t,n)}catch{return!1}}function On(r,e){let t=yn(e);if(t.size===0)return;let n=O.join(r,"package.json"),s=JSON.parse(v.readFileSync(n,"utf8"));for(let[i,o]of t){let c=ke.find(a=>Object.hasOwn(s[a]||{},i))||"dependencies";s[c]||={};let u=s[c][i];s[c][i]=o?An(u,o)?u:o:u||"latest"}v.writeFileSync(n,`${JSON.stringify(s,null,2)}
3
+ `)}function se(r){let e=[["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["bun.lock","bun"],["bun.lockb","bun"],["package-lock.json","npm"],["npm-shrinkwrap.json","npm"]];for(let t=O.resolve(r);;t=O.dirname(t)){let n=O.join(t,"package.json");if(v.existsSync(n)){let s=JSON.parse(v.readFileSync(n,"utf8")),i=String(s.packageManager||"").split("@")[0];if(["npm","pnpm","yarn","bun"].includes(i))return i}for(let[s,i]of e)if(v.existsSync(O.join(t,s)))return i;if(O.dirname(t)===t)return"npm"}}var Nn={npm:"npx",pnpm:"pnpm exec",yarn:"yarn",bun:"bunx"};function Ln(r,e=process.cwd()){let t;try{t=se(e)}catch{t="npm"}return`${Nn[t]||Nn.npm} frontfriend ${r}`}function bc(r,e=process.cwd()){let t=null;try{t=r?new URL(r).origin:null}catch{t=null}return Ln(t&&t!==new URL(_c).origin?`login --api-url ${t}`:"login",e)}function _e(r,e){let t=yn(e);if(t.size===0)return[];let n=JSON.parse(v.readFileSync(O.join(r,"package.json"),"utf8")),s=[];for(let[i,o]of t){let c=ke.find(u=>Object.hasOwn(n[u]||{},i));c&&(!o||An(n[c][i],o))||s.push(o?`${i}@${o}`:i)}return s}function qn(r,e){return[r==="npm"?"install":"add",...e]}function Gc(r){return/^[\w@/.:^~=+-]+$/.test(r)?r:`'${r.replace(/'/g,"'\\''")}'`}function xn(r,e){let t=se(r);return[t,...qn(t,e)].map(Gc).join(" ")}function vn(r,e,{stdio:t="inherit"}={}){let n=_e(r,e);if(n.length===0)return;let s=se(r),i=Tn.sync(s,qn(s,n),{cwd:r,stdio:t});if(i.error||i.status!==0)throw On(r,e),i.error||new Error(`${s} dependency installation failed with status ${i.status}. Dependencies were saved; run ${s} install.`)}function Xc(r,e,{install:t=!0,stdio:n="inherit",log:s=console.log}={}){let i=_e(r,e);if(i.length===0)return{missing:i,command:null,installed:!1};let o=xn(r,i);if(!t)return s(`\u{1F4E6} Component dependencies missing from package.json. Install them with:
4
+ ${o}`),{missing:i,command:o,installed:!1};s(`\u{1F4E6} Installing component dependencies: ${o}`);try{return vn(r,i,{stdio:n}),{missing:i,command:o,installed:!0}}catch(c){return s(`\u26A0\uFE0F Component dependencies were not installed: ${c.message}
5
+ Install them with:
6
+ ${o}`),{missing:i,command:o,installed:!1,error:c.message}}}function Hc(r,e){for(let t=O.resolve(r);;t=O.dirname(t)){if(v.existsSync(O.join(t,"node_modules",e,"package.json")))return!0;if(O.dirname(t)===t)return!1}}function Vc(r,e,{install:t=!0,stdio:n="inherit",log:s=console.log}={}){let i=JSON.parse(v.readFileSync(O.join(r,"package.json"),"utf8"));if(!ke.some(l=>Object.hasOwn(i[l]||{},e))||Hc(r,e))return{installed:!1,command:null};let c=se(r),u=`${c} install`;if(!t)return s(`\u{1F4E6} ${e} is in package.json but not installed. Install it with:
7
+ ${u}`),{installed:!1,command:u};s(`\u{1F4E6} Installing ${e}: ${u}`);let a=Tn.sync(c,["install"],{cwd:r,stdio:n});if(!a.error&&a.status===0)return{installed:!0,command:u};let m=a.error?a.error.message:`${c} install failed with status ${a.status}`;return s(`\u26A0\uFE0F ${e} was not installed: ${m}
8
+ Install it with:
9
+ ${u}`),{installed:!1,command:u,error:m}}Cn.exports={cliCommand:Ln,loginCommand:bc,installDeclaredPackage:Vc,saveNpmDependencies:On,installNpmDependencies:vn,installMissingNpmDependencies:Xc,missingNpmDependencies:_e,npmInstallCommand:xn}});var{fileExists:Mc,readJsonFileSafe:Yc,removeFile:Jc,writePrivateJsonFileAtomic:zc,withPrivateFileLock:Bc}=Ge(),Fn=require("path"),Wc=require("os"),Kc=require("https"),Zc=require("http"),{URL:q}=require("url"),{DEFAULT_API_URL:P}=ce(),{cliCommand:Dn,loginCommand:Qc}=Pn(),ea=Fn.join(Wc.homedir(),".frontfriend"),U=Fn.join(ea,"credentials");function ra(){return U}function ie(){try{return Yc(U)}catch{return null}}function jn(r){try{let e=JSON.parse(Buffer.from(String(r).split(".")[1],"base64url").toString("utf8"));return typeof e.email=="string"?e.email:null}catch{return null}}function ta(){let r=ie();if(!r||!r.accessToken)return null;let e=Number(r.refreshExpiresAt)||0;return{email:jn(r.accessToken),apiUrl:r.ffApiUrl||null,expired:e>0&&e<Date.now()}}function kn(r){zc(U,r)}function na(){return Mc(U)?(Jc(U),!0):!1}function Ue(r,e=60*1e3){return!r?.accessToken||!r.expiresAt||Date.now()+e>=r.expiresAt}function _(r,{apiUrl:e,login:t,next:n}={}){let s=n||`Run \`${t||Qc(e)}\` to sign in, then run the command again.`,i=new Error(`${r}. ${s}`);return i.code="FF_AUTH_REFRESH_FAILED",i}function _n(r,e,t){return new Promise((n,s)=>{let i=new q(r);if(i.protocol!=="https:"&&!(i.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(i.hostname))){s(new Error("Frontfriend API URLs require HTTPS except on localhost"));return}let o=i.protocol==="https:"?Kc:Zc,c=JSON.stringify(e||{}),u=o.request({hostname:i.hostname,port:i.port,path:`${i.pathname}${i.search}`,method:"POST",headers:{"content-type":"application/json","content-length":Buffer.byteLength(c),...t?{authorization:`Bearer ${t}`}:{}}},a=>{let m="";a.on("data",l=>{m+=l}),a.on("end",()=>{if(a.statusCode>=300&&a.statusCode<400){let $=a.headers.location?` to ${a.headers.location}`:"",E=new Error(`HTTP ${a.statusCode}: redirected${$}`);E.statusCode=a.statusCode,E.body=m,s(E);return}let l=null;try{l=m?JSON.parse(m):null}catch{let E=a.headers["content-type"]||"unknown content-type",T=new Error(`Expected JSON from FrontFriend API at ${r}, but received ${E} (HTTP ${a.statusCode}). Check FF_API_URL or pass --api-url with the FrontFriend app URL.`);if(T.statusCode=a.statusCode,T.body=m,a.statusCode>=400){s(T);return}s(T);return}if(a.statusCode>=400){let $=new Error(l?.error_description||l?.error||`HTTP ${a.statusCode}`);$.statusCode=a.statusCode,$.body=l,s($);return}n(l)})});u.setTimeout(15e3,()=>u.destroy(Object.assign(new Error("Frontfriend API request timed out"),{code:"ETIMEDOUT"}))),u.on("error",s),u.write(c),u.end()})}function Un(r,e){let t=new q(r?.ffApiUrl||P).origin,n=new q(e).origin;return _(`You are signed in to ${t}, but this command uses ${n}`,{login:Dn(`login --api-url ${n}`)})}async function sa(r){return Bc(U,r,()=>_("Another Frontfriend command is renewing your sign-in",{next:"Wait for it to finish, then run the command again."}))}async function bn(r,e=P){return sa(async()=>{let t=ie();if(t&&new q(t.ffApiUrl||P).origin===new q(e).origin){if(!Ue(t))return t;r=t}return ia(r,e)})}async function ia(r,e=P){if(new q(e).origin!==new q(r.ffApiUrl||P).origin)throw Un(r,e);if(!r?.refreshToken||!r?.deviceId)throw _("Your Frontfriend sign-in has expired",{apiUrl:e});let t;try{t=await _n(`${e}/api/plugin/token`,{grant_type:"refresh_token",refresh_token:r.refreshToken,device_id:r.deviceId})}catch(s){throw Object.assign(_(s?.message?`Could not renew your Frontfriend sign-in (${s.message})`:"Could not renew your Frontfriend sign-in",{apiUrl:e}),{cause:s})}if(!t?.access_token||!t?.refresh_token)throw _("Could not renew your Frontfriend sign-in",{apiUrl:e});let n={accessToken:t.access_token,refreshToken:t.refresh_token,deviceId:t.device_id||r.deviceId,expiresAt:Date.now()+(t.expires_in||900)*1e3,refreshExpiresAt:Date.now()+(t.refresh_expires_in||604800)*1e3,ffApiUrl:e};return kn(n),n}async function oa(r={}){if(r.envToken)return r.envToken;if(!r.skipCredentials){let e=ie();if(e?.accessToken||e?.refreshToken){let t=r.baseURL||e.ffApiUrl||P;if(new q(t).origin!==new q(e.ffApiUrl||P).origin)throw Un(e,t);return e.accessToken&&!Ue(e)?e.accessToken:(await bn(e,t)).accessToken}}return r.configuredToken?(r.silent||console.warn(`\u26A0\uFE0F auth-token in frontfriend.config.js is deprecated. Run \`${Dn("login")}\` to keep your sign-in outside the repository.`),r.configuredToken):null}module.exports={accountEmail:jn,signedInAccount:ta,getCredentialsPath:ra,readCredentials:ie,writeCredentials:kn,deleteCredentials:na,isExpired:Ue,postJson:_n,refreshCredentials:bn,resolveAuthToken:oa,createAuthRefreshError:_};