@frontfriend/sdk 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var j=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var S=j((q,F)=>{F.exports={name:"@frontfriend/sdk",version:"1.2.2"}});var C=j(($,b)=>{var{name:w}=S();b.exports={PACKAGE_NAME:w}});var{PACKAGE_NAME:m}=C(),u=require("fs"),E=require("http"),O=require("https"),i=require("path"),g=["contracts","tokens","components"],T=["app/globals.css","src/app/globals.css","styles/globals.css","src/styles/globals.css","src/styles.css","src/index.css","src/style.css"],k={next:["next.config.js","next.config.mjs","next.config.ts"],vite:["vite.config.ts","vite.config.js","vite.config.mts","vite.config.mjs"]},x=["primereact","@mui/material","antd","@chakra-ui/react","@mantine/core","@fluentui/react"],I=["style-dictionary","@tokens-studio/sd-transforms","@vanilla-extract/css","styled-components","@emotion/react"];function A(n){try{return JSON.parse(u.readFileSync(n,"utf8"))}catch{return{}}}function h(n){if(n===void 0)return null;if(!Array.isArray(n)){let t=new Error("`adopt` in frontfriend.config.js must be an array.");throw t.code="FRONTFRIEND_CONFIG_VALIDATION",t}let e=n.filter(t=>!g.includes(t));if(e.length>0){let t=new Error(`Unknown Frontfriend adoption level: ${e.join(", ")}.`);throw t.code="FRONTFRIEND_CONFIG_VALIDATION",t}let o=n.includes("components")?2:n.includes("tokens")?1:0;return g.slice(0,o+1)}function _(n){for(let[e,o]of Object.entries(k)){let t=o.find(s=>u.existsSync(i.join(n,s)));if(!t)continue;let r=u.readFileSync(i.join(n,t),"utf8");return{buildTool:e,present:r.includes(`${m}/${e}`)}}return{buildTool:null,present:!1}}function v(n){let e=[i.join(n,"components","ui"),i.join(n,"src","components","ui"),i.join(n,"app","components","ui")].filter(r=>u.existsSync(r)),o=new Set;function t(r){for(let s of u.readdirSync(r,{withFileTypes:!0})){let c=i.join(r,s.name);if(s.isDirectory())t(c);else if(/\.(js|jsx|ts|tsx|vue)$/.test(s.name)){if(!u.readFileSync(c,"utf8").includes(m))continue;let a=i.basename(s.name,i.extname(s.name));o.add(a.toLowerCase()==="index"?i.basename(r):a.toLowerCase())}}}return e.forEach(t),[...o].sort()}function P(n){let e=A(i.join(n,"package.json")),o={...e.dependencies||{},...e.devDependencies||{}},t=o.tailwindcss||null,s=[A(i.join(n,"components.json"))?.tailwind?.css,...T].filter(Boolean).find(a=>u.existsSync(i.join(n,a))),c=s?u.readFileSync(i.join(n,s),"utf8"):"",l=I.filter(a=>o[a]);return!l.length&&/:root[\s\S]*--(?:color|spacing|font|radius)-[\w-]+\s*:/.test(c)&&!c.includes(`${m}/theme.css`)&&l.push("css-custom-properties"),{nativeTokens:{present:c.includes("/* Frontfriend managed native tokens: start */"),file:s||null},tailwind:{present:!!t,version:t,major:t&&Number((String(t).match(/\d+/)||[])[0])||null},componentsJson:u.existsSync(i.join(n,"components.json")),themeImport:{present:c.includes(`${m}/theme.css`)||/@import\s+["'][^"']*node_modules\/\.cache\/frontfriend\/theme\.css["']/.test(c),file:s||null},plugin:_(n),frontfriendComponents:v(n),foreignComponentLibraries:x.filter(a=>o[a]),foreignTokenSystems:l}}function D(n,e){let o=h(n)||g,t=o.includes("tokens"),r=o.includes("components"),s=[];return t&&!e.themeImport.present&&!e.nativeTokens?.present&&s.push("Config adopts tokens, but the Frontfriend theme import was not observed."),!t&&e.themeImport.present&&s.push("Frontfriend tokens are present in CSS but are not adopted in config."),r&&!e.componentsJson&&s.push("Config adopts components, but components.json was not observed."),!r&&e.frontfriendComponents.length>0&&s.push("Frontfriend components are installed but are not adopted in config."),s}function L({apiUrl:n,token:e,ffId:o,name:t,adopt:r,observed:s,framework:c,primitive:l}){if(!n||!e||!o||!t||!c||l===void 0)return Promise.resolve({reported:!1,unavailable:!0});let a=new URL("/api/apps/sync",n),y=JSON.stringify({ffId:o,name:t,adopt:h(r),observed:s,runtime:"sdk",framework:c,primitive:l}),N=a.protocol==="https:"?O:E;return new Promise(d=>{let f=N.request(a,{method:"POST",headers:{authorization:`Bearer ${e}`,"content-type":"application/json","content-length":Buffer.byteLength(y)}},p=>{p.resume(),p.on("end",()=>{p.statusCode>=200&&p.statusCode<300?d({reported:!0,unavailable:!1}):d({reported:!1,unavailable:!0})})});f.on("error",()=>d({reported:!1,unavailable:!0})),f.setTimeout(1500,()=>{f.destroy(),d({reported:!1,unavailable:!0})}),f.end(y)})}module.exports={ADOPTION_LEVELS:g,normalizeAdopt:h,probeAdoption:P,adoptionWarnings:D,reportAdoption:L};
1
+ var j=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var S=j((q,F)=>{F.exports={name:"@frontfriend/sdk",version:"1.2.4"}});var C=j(($,b)=>{var{name:w}=S();b.exports={PACKAGE_NAME:w}});var{PACKAGE_NAME:m}=C(),u=require("fs"),E=require("http"),O=require("https"),i=require("path"),g=["contracts","tokens","components"],T=["app/globals.css","src/app/globals.css","styles/globals.css","src/styles/globals.css","src/styles.css","src/index.css","src/style.css"],k={next:["next.config.js","next.config.mjs","next.config.ts"],vite:["vite.config.ts","vite.config.js","vite.config.mts","vite.config.mjs"]},x=["primereact","@mui/material","antd","@chakra-ui/react","@mantine/core","@fluentui/react"],I=["style-dictionary","@tokens-studio/sd-transforms","@vanilla-extract/css","styled-components","@emotion/react"];function A(n){try{return JSON.parse(u.readFileSync(n,"utf8"))}catch{return{}}}function h(n){if(n===void 0)return null;if(!Array.isArray(n)){let t=new Error("`adopt` in frontfriend.config.js must be an array.");throw t.code="FRONTFRIEND_CONFIG_VALIDATION",t}let e=n.filter(t=>!g.includes(t));if(e.length>0){let t=new Error(`Unknown Frontfriend adoption level: ${e.join(", ")}.`);throw t.code="FRONTFRIEND_CONFIG_VALIDATION",t}let o=n.includes("components")?2:n.includes("tokens")?1:0;return g.slice(0,o+1)}function _(n){for(let[e,o]of Object.entries(k)){let t=o.find(s=>u.existsSync(i.join(n,s)));if(!t)continue;let r=u.readFileSync(i.join(n,t),"utf8");return{buildTool:e,present:r.includes(`${m}/${e}`)}}return{buildTool:null,present:!1}}function v(n){let e=[i.join(n,"components","ui"),i.join(n,"src","components","ui"),i.join(n,"app","components","ui")].filter(r=>u.existsSync(r)),o=new Set;function t(r){for(let s of u.readdirSync(r,{withFileTypes:!0})){let c=i.join(r,s.name);if(s.isDirectory())t(c);else if(/\.(js|jsx|ts|tsx|vue)$/.test(s.name)){if(!u.readFileSync(c,"utf8").includes(m))continue;let a=i.basename(s.name,i.extname(s.name));o.add(a.toLowerCase()==="index"?i.basename(r):a.toLowerCase())}}}return e.forEach(t),[...o].sort()}function P(n){let e=A(i.join(n,"package.json")),o={...e.dependencies||{},...e.devDependencies||{}},t=o.tailwindcss||null,s=[A(i.join(n,"components.json"))?.tailwind?.css,...T].filter(Boolean).find(a=>u.existsSync(i.join(n,a))),c=s?u.readFileSync(i.join(n,s),"utf8"):"",l=I.filter(a=>o[a]);return!l.length&&/:root[\s\S]*--(?:color|spacing|font|radius)-[\w-]+\s*:/.test(c)&&!c.includes(`${m}/theme.css`)&&l.push("css-custom-properties"),{nativeTokens:{present:c.includes("/* Frontfriend managed native tokens: start */"),file:s||null},tailwind:{present:!!t,version:t,major:t&&Number((String(t).match(/\d+/)||[])[0])||null},componentsJson:u.existsSync(i.join(n,"components.json")),themeImport:{present:c.includes(`${m}/theme.css`)||/@import\s+["'][^"']*node_modules\/\.cache\/frontfriend\/theme\.css["']/.test(c),file:s||null},plugin:_(n),frontfriendComponents:v(n),foreignComponentLibraries:x.filter(a=>o[a]),foreignTokenSystems:l}}function D(n,e){let o=h(n)||g,t=o.includes("tokens"),r=o.includes("components"),s=[];return t&&!e.themeImport.present&&!e.nativeTokens?.present&&s.push("Config adopts tokens, but the Frontfriend theme import was not observed."),!t&&e.themeImport.present&&s.push("Frontfriend tokens are present in CSS but are not adopted in config."),r&&!e.componentsJson&&s.push("Config adopts components, but components.json was not observed."),!r&&e.frontfriendComponents.length>0&&s.push("Frontfriend components are installed but are not adopted in config."),s}function L({apiUrl:n,token:e,ffId:o,name:t,adopt:r,observed:s,framework:c,primitive:l}){if(!n||!e||!o||!t||!c||l===void 0)return Promise.resolve({reported:!1,unavailable:!0});let a=new URL("/api/apps/sync",n),y=JSON.stringify({ffId:o,name:t,adopt:h(r),observed:s,runtime:"sdk",framework:c,primitive:l}),N=a.protocol==="https:"?O:E;return new Promise(d=>{let f=N.request(a,{method:"POST",headers:{authorization:`Bearer ${e}`,"content-type":"application/json","content-length":Buffer.byteLength(y)}},p=>{p.resume(),p.on("end",()=>{p.statusCode>=200&&p.statusCode<300?d({reported:!0,unavailable:!1}):d({reported:!1,unavailable:!0})})});f.on("error",()=>d({reported:!1,unavailable:!0})),f.setTimeout(1500,()=>{f.destroy(),d({reported:!1,unavailable:!0})}),f.end(y)})}module.exports={ADOPTION_LEVELS:g,normalizeAdopt:h,probeAdoption:P,adoptionWarnings:D,reportAdoption:L};
@@ -1,10 +1,10 @@
1
- var m=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var V=m((Qa,it)=>{var $s="https://app.frontfriend.dev",ws=".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"]},Is={FF_ID:"FF_ID",FF_API_URL:"FF_API_URL",FF_AUTH_TOKEN:"FF_AUTH_TOKEN",FF_MACHINE_TOKEN:"FRONTFRIEND_MACHINE_TOKEN"};function ys(t){if(!t)return null;try{let e=new URL(t);return e.hostname.startsWith("app.")?`${e.protocol}//${e.hostname.replace(/^app\./,"registry.")}`:null}catch{return null}}it.exports={DEFAULT_API_URL:$s,CACHE_DIR_NAME:ws,CACHE_TTL_DAYS:7,CACHE_TTL_MS:6048e5,CACHE_FILES:Rs,ENV_VARS:Is,deriveRegistryFromApiUrl:ys}});var Re=m((Za,ot)=>{var Ee=class extends Error{constructor(e,r,n){super(e),this.name="APIError",this.statusCode=r,this.url=n,this.code=`API_${r}`}},ge=class extends Error{constructor(e,r){super(e),this.name="CacheError",this.operation=r,this.code=`CACHE_${r.toUpperCase()}`}},$e=class extends Error{constructor(e,r){super(e),this.name="ConfigError",this.field=r,this.code=r?`CONFIG_${String(r).toUpperCase()}`:"CONFIG_ERROR"}},we=class extends Error{constructor(e,r){super(e),this.name="ProcessingError",this.token=r,this.code="PROCESSING_ERROR"}};ot.exports={APIError:Ee,CacheError:ge,ConfigError:$e,ProcessingError:we}});var at=m((eu,ct)=>{var R=require("fs");function Ss(t){try{let e=R.readFileSync(t,"utf8");return JSON.parse(e)}catch(e){if(e.code==="ENOENT")return null;throw e}}function Ts(t){try{return R.readFileSync(t,"utf8").replace(/^\uFEFF/,"")}catch(e){if(e.code==="ENOENT")return null;throw e}}function Ns(t,e,r=2){let n=JSON.stringify(e,null,r);R.writeFileSync(t,n,"utf8")}function As(t,e){R.writeFileSync(t,e,"utf8")}function Ls(t,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)?"[]":"{}"};`;R.writeFileSync(t,n,"utf8")}else{let r=`module.exports = ${JSON.stringify(e,null,2)};`;R.writeFileSync(t,r,"utf8")}}function Cs(t){return R.existsSync(t)}function Os(t){R.mkdirSync(t,{recursive:!0})}function vs(t){R.rmSync(t,{recursive:!0,force:!0})}function qs(t){R.rmSync(t,{force:!0})}function xs(t,e){R.mkdirSync(require("path").dirname(t),{recursive:!0,mode:448});let r=`${t}.${process.pid}.${Date.now()}.tmp`;try{R.writeFileSync(r,`${JSON.stringify(e,null,2)}
2
- `,{mode:384}),R.renameSync(r,t);try{R.chmodSync(t,384)}catch{}}finally{R.rmSync(r,{force:!0})}}async function Ps(t,e,r){R.mkdirSync(require("path").dirname(t),{recursive:!0,mode:448});let n=`${t}.lock`,s=Date.now()+2e4,i;for(;i===void 0;)try{i=R.openSync(n,"wx",384),R.writeFileSync(i,String(process.pid))}catch(o){if(o.code!=="EEXIST")throw o;try{let a=Number(R.readFileSync(n,"utf8"));if(Number.isInteger(a)&&a>0)try{process.kill(a,0)}catch(c){if(c.code==="ESRCH"){R.unlinkSync(n);continue}}}catch(a){if(a.code==="ENOENT")continue}if(Date.now()>=s)throw r();await new Promise(a=>setTimeout(a,50))}try{return await e()}finally{R.closeSync(i),R.unlinkSync(n)}}ct.exports={writePrivateJsonFileAtomic:xs,withPrivateFileLock:Ps,readJsonFileSafe:Ss,readFileSafe:Ts,writeJsonFile:Ns,writeTextFile:As,writeModuleExportsFile:Ls,fileExists:Cs,ensureDirectoryExists:Os,removeDirectory:vs,removeFile:qs}});var dt=m((tu,ht)=>{ht.exports=ft;ft.sync=ks;var ut=require("fs");function Fs(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n<r.length;n++){var s=r[n].toLowerCase();if(s&&t.substr(-s.length).toLowerCase()===s)return!0}return!1}function lt(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:Fs(e,r)}function ft(t,e,r){ut.stat(t,function(n,s){r(n,n?!1:lt(s,t,e))})}function ks(t,e){return lt(ut.statSync(t),t,e)}});var $t=m((ru,gt)=>{gt.exports=mt;mt.sync=Ds;var pt=require("fs");function mt(t,e,r){pt.stat(t,function(n,s){r(n,n?!1:Et(s,e))})}function Ds(t,e){return Et(pt.statSync(t),e)}function Et(t,e){return t.isFile()&&Us(t,e)}function Us(t,e){var r=t.mode,n=t.uid,s=t.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),l=a|c,h=r&u||r&c&&s===o||r&a&&n===i||r&l&&i===0;return h}});var Rt=m((su,wt)=>{var nu=require("fs"),z;process.platform==="win32"||global.TESTING_WINDOWS?z=dt():z=$t();wt.exports=Ie;Ie.sync=_s;function Ie(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){Ie(t,e||{},function(i,o){i?s(i):n(o)})})}z(t,e||{},function(n,s){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,s=!1),r(n,s)})}function _s(t,e){try{return z.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Lt=m((iu,At)=>{var D=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",It=require("path"),bs=D?";":":",yt=Rt(),St=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),Tt=(t,e)=>{let r=e.colon||bs,n=t.match(/\//)||D&&t.match(/\\/)?[""]:[...D?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=D?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=D?s.split(r):[""];return D&&t.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:s}},Nt=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:s,pathExtExe:i}=Tt(t,e),o=[],a=u=>new Promise((l,h)=>{if(u===n.length)return e.all&&o.length?l(o):h(St(t));let E=n[u],f=/^".*"$/.test(E)?E.slice(1,-1):E,I=It.join(f,t),v=!f&&/^\.[\\\/]/.test(t)?t.slice(0,2)+I:I;l(c(v,u,0))}),c=(u,l,h)=>new Promise((E,f)=>{if(h===s.length)return E(a(l+1));let I=s[h];yt(u+I,{pathExt:i},(v,gs)=>{if(!v&&gs)if(e.all)o.push(u+I);else return E(u+I);return E(c(u,l,h+1))})});return r?a(0).then(u=>r(null,u),r):a(0)},js=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:s}=Tt(t,e),i=[];for(let o=0;o<r.length;o++){let a=r[o],c=/^".*"$/.test(a)?a.slice(1,-1):a,u=It.join(c,t),l=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+u:u;for(let h=0;h<n.length;h++){let E=l+n[h];try{if(yt.sync(E,{pathExt:s}))if(e.all)i.push(E);else return E}catch{}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw St(t)};At.exports=Nt;Nt.sync=js});var Ot=m((ou,ye)=>{"use strict";var Ct=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};ye.exports=Ct;ye.exports.default=Ct});var Pt=m((cu,xt)=>{"use strict";var vt=require("path"),Gs=Lt(),Ms=Ot();function qt(t,e){let r=t.options.env||process.env,n=process.cwd(),s=t.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(t.options.cwd)}catch{}let o;try{o=Gs.sync(t.command,{path:r[Ms({env:r})],pathExt:e?vt.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return o&&(o=vt.resolve(s?t.options.cwd:"",o)),o}function Hs(t){return qt(t)||qt(t,!0)}xt.exports=Hs});var Ft=m((au,Te)=>{"use strict";var Se=/([()\][%!^"`<>&|;, *?])/g;function Vs(t){return t=t.replace(Se,"^$1"),t}function Xs(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Se,"^$1"),e&&(t=t.replace(Se,"^$1")),t}Te.exports.command=Vs;Te.exports.argument=Xs});var Dt=m((uu,kt)=>{"use strict";kt.exports=/^#!(.*)/});var _t=m((lu,Ut)=>{"use strict";var Js=Dt();Ut.exports=(t="")=>{let e=t.match(Js);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s}});var jt=m((fu,bt)=>{"use strict";var Ne=require("fs"),Ys=_t();function Bs(t){let r=Buffer.alloc(150),n;try{n=Ne.openSync(t,"r"),Ne.readSync(n,r,0,150,0),Ne.closeSync(n)}catch{}return Ys(r.toString())}bt.exports=Bs});var Vt=m((hu,Ht)=>{"use strict";var Ws=require("path"),Gt=Pt(),Mt=Ft(),zs=jt(),Ks=process.platform==="win32",Qs=/\.(?:com|exe)$/i,Zs=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ei(t){t.file=Gt(t);let e=t.file&&zs(t.file);return e?(t.args.unshift(t.file),t.command=e,Gt(t)):t.file}function ti(t){if(!Ks)return t;let e=ei(t),r=!Qs.test(e);if(t.options.forceShell||r){let n=Zs.test(e);t.command=Ws.normalize(t.command),t.command=Mt.command(t.command),t.args=t.args.map(i=>Mt.argument(i,n));let s=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${s}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function ri(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:ti(n)}Ht.exports=ri});var Yt=m((du,Jt)=>{"use strict";var Ae=process.platform==="win32";function Le(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function ni(t,e){if(!Ae)return;let r=t.emit;t.emit=function(n,s){if(n==="exit"){let i=Xt(s,e);if(i)return r.call(t,"error",i)}return r.apply(t,arguments)}}function Xt(t,e){return Ae&&t===1&&!e.file?Le(e.original,"spawn"):null}function si(t,e){return Ae&&t===1&&!e.file?Le(e.original,"spawnSync"):null}Jt.exports={hookChildProcess:ni,verifyENOENT:Xt,verifyENOENTSync:si,notFoundError:Le}});var zt=m((pu,U)=>{"use strict";var Bt=require("child_process"),Ce=Vt(),Oe=Yt();function Wt(t,e,r){let n=Ce(t,e,r),s=Bt.spawn(n.command,n.args,n.options);return Oe.hookChildProcess(s,n),s}function ii(t,e,r){let n=Ce(t,e,r),s=Bt.spawnSync(n.command,n.args,n.options);return s.error=s.error||Oe.verifyENOENTSync(s.status,n),s}U.exports=Wt;U.exports.spawn=Wt;U.exports.sync=ii;U.exports._parse=Ce;U.exports._enoent=Oe});var _=m((mu,Kt)=>{"use strict";var oi="2.0.0",ci=Number.MAX_SAFE_INTEGER||9007199254740991,ai=16,ui=250,li=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Kt.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:ai,MAX_SAFE_BUILD_LENGTH:ui,MAX_SAFE_INTEGER:ci,RELEASE_TYPES:li,SEMVER_SPEC_VERSION:oi,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var X=m((Eu,Qt)=>{"use strict";var fi=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};Qt.exports=fi});var b=m((O,Zt)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:ve,MAX_SAFE_BUILD_LENGTH:hi,MAX_LENGTH:di}=_(),pi=X();O=Zt.exports={};var mi=O.re=[],Ei=O.safeRe=[],d=O.src=[],gi=O.safeSrc=[],p=O.t={},$i=0,qe="[a-zA-Z0-9-]",wi=[["\\s",1],["\\d",di],[qe,hi]],Ri=t=>{for(let[e,r]of wi)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},g=(t,e,r)=>{let n=Ri(e),s=$i++;pi(t,s,e),p[t]=s,d[s]=e,gi[s]=n,mi[s]=new RegExp(e,r?"g":void 0),Ei[s]=new RegExp(n,r?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*");g("NUMERICIDENTIFIERLOOSE","\\d+");g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${qe}*`);g("MAINVERSION",`(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})`);g("MAINVERSIONLOOSE",`(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})`);g("PRERELEASEIDENTIFIER",`(?:${d[p.NONNUMERICIDENTIFIER]}|${d[p.NUMERICIDENTIFIER]})`);g("PRERELEASEIDENTIFIERLOOSE",`(?:${d[p.NONNUMERICIDENTIFIER]}|${d[p.NUMERICIDENTIFIERLOOSE]})`);g("PRERELEASE",`(?:-(${d[p.PRERELEASEIDENTIFIER]}(?:\\.${d[p.PRERELEASEIDENTIFIER]})*))`);g("PRERELEASELOOSE",`(?:-?(${d[p.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[p.PRERELEASEIDENTIFIERLOOSE]})*))`);g("BUILDIDENTIFIER",`${qe}+`);g("BUILD",`(?:\\+(${d[p.BUILDIDENTIFIER]}(?:\\.${d[p.BUILDIDENTIFIER]})*))`);g("FULLPLAIN",`v?${d[p.MAINVERSION]}${d[p.PRERELEASE]}?${d[p.BUILD]}?`);g("FULL",`^${d[p.FULLPLAIN]}$`);g("LOOSEPLAIN",`[v=\\s]*${d[p.MAINVERSIONLOOSE]}${d[p.PRERELEASELOOSE]}?${d[p.BUILD]}?`);g("LOOSE",`^${d[p.LOOSEPLAIN]}$`);g("GTLT","((?:<|>)?=?)");g("XRANGEIDENTIFIERLOOSE",`${d[p.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);g("XRANGEIDENTIFIER",`${d[p.NUMERICIDENTIFIER]}|x|X|\\*`);g("XRANGEPLAIN",`[v=\\s]*(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:${d[p.PRERELEASE]})?${d[p.BUILD]}?)?)?`);g("XRANGEPLAINLOOSE",`[v=\\s]*(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:${d[p.PRERELEASELOOSE]})?${d[p.BUILD]}?)?)?`);g("XRANGE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAIN]}$`);g("XRANGELOOSE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAINLOOSE]}$`);g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${ve}})(?:\\.(\\d{1,${ve}}))?(?:\\.(\\d{1,${ve}}))?`);g("COERCE",`${d[p.COERCEPLAIN]}(?:$|[^\\d])`);g("COERCEFULL",d[p.COERCEPLAIN]+`(?:${d[p.PRERELEASE]})?(?:${d[p.BUILD]})?(?:$|[^\\d])`);g("COERCERTL",d[p.COERCE],!0);g("COERCERTLFULL",d[p.COERCEFULL],!0);g("LONETILDE","(?:~>?)");g("TILDETRIM",`(\\s*)${d[p.LONETILDE]}\\s+`,!0);O.tildeTrimReplace="$1~";g("TILDE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAIN]}$`);g("TILDELOOSE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAINLOOSE]}$`);g("LONECARET","(?:\\^)");g("CARETTRIM",`(\\s*)${d[p.LONECARET]}\\s+`,!0);O.caretTrimReplace="$1^";g("CARET",`^${d[p.LONECARET]}${d[p.XRANGEPLAIN]}$`);g("CARETLOOSE",`^${d[p.LONECARET]}${d[p.XRANGEPLAINLOOSE]}$`);g("COMPARATORLOOSE",`^${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]})$|^$`);g("COMPARATOR",`^${d[p.GTLT]}\\s*(${d[p.FULLPLAIN]})$|^$`);g("COMPARATORTRIM",`(\\s*)${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]}|${d[p.XRANGEPLAIN]})`,!0);O.comparatorTrimReplace="$1$2$3";g("HYPHENRANGE",`^\\s*(${d[p.XRANGEPLAIN]})\\s+-\\s+(${d[p.XRANGEPLAIN]})\\s*$`);g("HYPHENRANGELOOSE",`^\\s*(${d[p.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[p.XRANGEPLAINLOOSE]})\\s*$`);g("STAR","(<|>)?=?\\s*\\*");g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var K=m((gu,er)=>{"use strict";var Ii=Object.freeze({loose:!0}),yi=Object.freeze({}),Si=t=>t?typeof t!="object"?Ii:t:yi;er.exports=Si});var xe=m(($u,nr)=>{"use strict";var tr=/^[0-9]+$/,rr=(t,e)=>{if(typeof t=="number"&&typeof e=="number")return t===e?0:t<e?-1:1;let r=tr.test(t),n=tr.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:t<e?-1:1},Ti=(t,e)=>rr(e,t);nr.exports={compareIdentifiers:rr,rcompareIdentifiers:Ti}});var S=m((wu,ir)=>{"use strict";var Q=X(),{MAX_LENGTH:sr,MAX_SAFE_INTEGER:Z}=_(),{safeRe:ee,t:te}=b(),Ni=K(),{compareIdentifiers:Pe}=xe(),Ai=(t,e)=>{let r=e.split(".");if(r.length>t.length)return!1;for(let n=0;n<r.length;n++)if(Pe(t[n],r[n])!==0)return!1;return!0},Fe=class t{constructor(e,r){if(r=Ni(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.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>sr)throw new TypeError(`version is longer than ${sr} characters`);Q("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?ee[te.LOOSE]:ee[te.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(Q("SemVer.compare",this.version,this.options,e),!(e instanceof t)){if(typeof e=="string"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(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 t||(e=new t(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 r=0;do{let n=this.prerelease[r],s=e.prerelease[r];if(Q("prerelease compare",r,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 Pe(n,s)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let n=this.build[r],s=e.build[r];if(Q("build compare",r,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 Pe(n,s)}while(++r)}inc(e,r,n){if(e.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let s=`-${r}`.match(this.options.loose?ee[te.PRERELEASELOOSE]:ee[te.PRERELEASE]);if(!s||s[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,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(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(r){let i=[r,s];if(n===!1&&(i=[r]),Ai(this.prerelease,r)){let o=this.prerelease[r.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}};ir.exports=Fe});var x=m((Ru,cr)=>{"use strict";var or=S(),Li=(t,e,r=!1)=>{if(t instanceof or)return t;try{return new or(t,e)}catch(n){if(!r)return null;throw n}};cr.exports=Li});var ur=m((Iu,ar)=>{"use strict";var Ci=x(),Oi=(t,e)=>{let r=Ci(t,e);return r?r.version:null};ar.exports=Oi});var fr=m((yu,lr)=>{"use strict";var vi=x(),qi=(t,e)=>{let r=vi(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};lr.exports=qi});var pr=m((Su,dr)=>{"use strict";var hr=S(),xi=(t,e,r,n,s)=>{typeof r=="string"&&(s=n,n=r,r=void 0);try{return new hr(t instanceof hr?t.version:t,r).inc(e,n,s).version}catch{return null}};dr.exports=xi});var gr=m((Tu,Er)=>{"use strict";var mr=x(),Pi=(t,e)=>{let r=mr(t,null,!0),n=mr(e,null,!0),s=r.compare(n);if(s===0)return null;let i=s>0,o=i?r:n,a=i?n:r,c=!!o.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(o)===0)return a.minor&&!a.patch?"minor":"patch"}let l=c?"pre":"";return r.major!==n.major?l+"major":r.minor!==n.minor?l+"minor":r.patch!==n.patch?l+"patch":"prerelease"};Er.exports=Pi});var wr=m((Nu,$r)=>{"use strict";var Fi=S(),ki=(t,e)=>new Fi(t,e).major;$r.exports=ki});var Ir=m((Au,Rr)=>{"use strict";var Di=S(),Ui=(t,e)=>new Di(t,e).minor;Rr.exports=Ui});var Sr=m((Lu,yr)=>{"use strict";var _i=S(),bi=(t,e)=>new _i(t,e).patch;yr.exports=bi});var Nr=m((Cu,Tr)=>{"use strict";var ji=x(),Gi=(t,e)=>{let r=ji(t,e);return r&&r.prerelease.length?r.prerelease:null};Tr.exports=Gi});var A=m((Ou,Lr)=>{"use strict";var Ar=S(),Mi=(t,e,r)=>new Ar(t,r).compare(new Ar(e,r));Lr.exports=Mi});var Or=m((vu,Cr)=>{"use strict";var Hi=A(),Vi=(t,e,r)=>Hi(e,t,r);Cr.exports=Vi});var qr=m((qu,vr)=>{"use strict";var Xi=A(),Ji=(t,e)=>Xi(t,e,!0);vr.exports=Ji});var re=m((xu,Pr)=>{"use strict";var xr=S(),Yi=(t,e,r)=>{let n=new xr(t,r),s=new xr(e,r);return n.compare(s)||n.compareBuild(s)};Pr.exports=Yi});var kr=m((Pu,Fr)=>{"use strict";var Bi=re(),Wi=(t,e)=>t.sort((r,n)=>Bi(r,n,e));Fr.exports=Wi});var Ur=m((Fu,Dr)=>{"use strict";var zi=re(),Ki=(t,e)=>t.sort((r,n)=>zi(n,r,e));Dr.exports=Ki});var J=m((ku,_r)=>{"use strict";var Qi=A(),Zi=(t,e,r)=>Qi(t,e,r)>0;_r.exports=Zi});var ne=m((Du,br)=>{"use strict";var eo=A(),to=(t,e,r)=>eo(t,e,r)<0;br.exports=to});var ke=m((Uu,jr)=>{"use strict";var ro=A(),no=(t,e,r)=>ro(t,e,r)===0;jr.exports=no});var De=m((_u,Gr)=>{"use strict";var so=A(),io=(t,e,r)=>so(t,e,r)!==0;Gr.exports=io});var se=m((bu,Mr)=>{"use strict";var oo=A(),co=(t,e,r)=>oo(t,e,r)>=0;Mr.exports=co});var ie=m((ju,Hr)=>{"use strict";var ao=A(),uo=(t,e,r)=>ao(t,e,r)<=0;Hr.exports=uo});var Ue=m((Gu,Vr)=>{"use strict";var lo=ke(),fo=De(),ho=J(),po=se(),mo=ne(),Eo=ie(),go=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return lo(t,r,n);case"!=":return fo(t,r,n);case">":return ho(t,r,n);case">=":return po(t,r,n);case"<":return mo(t,r,n);case"<=":return Eo(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};Vr.exports=go});var Jr=m((Mu,Xr)=>{"use strict";var $o=S(),wo=x(),{safeRe:oe,t:ce}=b(),Ro=(t,e)=>{if(t instanceof $o)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?oe[ce.COERCEFULL]:oe[ce.COERCE]);else{let c=e.includePrerelease?oe[ce.COERCERTLFULL]:oe[ce.COERCERTL],u;for(;(u=c.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),c.lastIndex=u.index+u[1].length+u[2].length;c.lastIndex=-1}if(r===null)return null;let n=r[2],s=r[3]||"0",i=r[4]||"0",o=e.includePrerelease&&r[5]?`-${r[5]}`:"",a=e.includePrerelease&&r[6]?`+${r[6]}`:"";return wo(`${n}.${s}.${i}${o}${a}`,e)};Xr.exports=Ro});var Br=m((Hu,Yr)=>{"use strict";var Io=x(),yo=_(),So=S(),To=(t,e,r)=>{if(!yo.RELEASE_TYPES.includes(e))return null;let n=No(t,r);return n&&Ao(n,e)},No=(t,e)=>{let r=t instanceof So?t.version:t;return Io(r,e)},Ao=(t,e)=>{if(Lo(e))return t.version;switch(t.prerelease=[],e){case"major":t.minor=0,t.patch=0;break;case"minor":t.patch=0;break}return t.format()},Lo=t=>t.startsWith("pre");Yr.exports=To});var zr=m((Vu,Wr)=>{"use strict";var _e=class{constructor(){this.max=1e3,this.map=new Map}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(e,r)}return this}};Wr.exports=_e});var L=m((Xu,en)=>{"use strict";var Co=/\s+/g,be=class t{constructor(e,r){if(r=vo(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof je)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().replace(Co," "),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=>!Qr(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&&bo(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 r=this.set[e];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(_o,"");let n=((this.options.includePrerelease&&Do)|(this.options.loose&&Uo))+":"+e,s=Kr.get(n);if(s)return s;let i=this.options.loose,o=i?N[T.HYPHENRANGELOOSE]:N[T.HYPHENRANGE];e=e.replace(o,zo(this.options.includePrerelease)),w("hyphen replace",e),e=e.replace(N[T.COMPARATORTRIM],Po),w("comparator trim",e),e=e.replace(N[T.TILDETRIM],Fo),w("tilde trim",e),e=e.replace(N[T.CARETTRIM],ko),w("caret trim",e);let a=e.split(" ").map(h=>jo(h,this.options)).join(" ").split(/\s+/).map(h=>Wo(h,this.options));i&&(a=a.filter(h=>(w("loose invalid filter",h,this.options),!!h.match(N[T.COMPARATORLOOSE])))),w("range list",a);let c=new Map,u=a.map(h=>new je(h,this.options));for(let h of u){if(Qr(h))return[h];c.set(h.value,h)}c.size>1&&c.has("")&&c.delete("");let l=[...c.values()];return Kr.set(n,l),l}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(n=>Zr(n,r)&&e.set.some(s=>Zr(s,r)&&n.every(i=>s.every(o=>i.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new qo(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Ko(this.set[r],e,this.options))return!0;return!1}};en.exports=be;var Oo=zr(),Kr=new Oo,vo=K(),je=Y(),w=X(),qo=S(),{safeRe:N,src:xo,t:T,comparatorTrimReplace:Po,tildeTrimReplace:Fo,caretTrimReplace:ko}=b(),{FLAG_INCLUDE_PRERELEASE:Do,FLAG_LOOSE:Uo}=_(),_o=new RegExp(xo[T.BUILD],"g"),Qr=t=>t.value==="<0.0.0-0",bo=t=>t.value==="",Zr=(t,e)=>{let r=!0,n=t.slice(),s=n.pop();for(;r&&n.length;)r=n.every(i=>s.intersects(i,e)),s=n.pop();return r},jo=(t,e)=>(t=t.replace(N[T.BUILD],""),w("comp",t,e),t=Vo(t,e),w("caret",t),t=Mo(t,e),w("tildes",t),t=Jo(t,e),w("xrange",t),t=Bo(t,e),w("stars",t),t),y=t=>!t||t.toLowerCase()==="x"||t==="*",Go=(t,e,r)=>y(t)&&!y(e)||y(e)&&r&&!y(r),Mo=(t,e)=>t.trim().split(/\s+/).map(r=>Ho(r,e)).join(" "),Ho=(t,e)=>{let r=e.loose?N[T.TILDELOOSE]:N[T.TILDE],n=e.includePrerelease?"-0":"";return t.replace(r,(s,i,o,a,c)=>{w("tilde",t,s,i,o,a,c);let u;return y(i)?u="":y(o)?u=`>=${i}.0.0${n} <${+i+1}.0.0-0`:y(a)?u=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:c?(w("replaceTilde pr",c),u=`>=${i}.${o}.${a}-${c} <${i}.${+o+1}.0-0`):u=`>=${i}.${o}.${a} <${i}.${+o+1}.0-0`,w("tilde return",u),u})},Vo=(t,e)=>t.trim().split(/\s+/).map(r=>Xo(r,e)).join(" "),Xo=(t,e)=>{w("caret",t,e);let r=e.loose?N[T.CARETLOOSE]:N[T.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(s,i,o,a,c)=>{w("caret",t,s,i,o,a,c);let u;return y(i)?u="":y(o)?u=`>=${i}.0.0${n} <${+i+1}.0.0-0`:y(a)?i==="0"?u=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.0${n} <${+i+1}.0.0-0`:c?(w("replaceCaret pr",c),i==="0"?o==="0"?u=`>=${i}.${o}.${a}-${c} <${i}.${o}.${+a+1}-0`:u=`>=${i}.${o}.${a}-${c} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.${a}-${c} <${+i+1}.0.0-0`):(w("no pr"),i==="0"?o==="0"?u=`>=${i}.${o}.${a} <${i}.${o}.${+a+1}-0`:u=`>=${i}.${o}.${a} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.${a} <${+i+1}.0.0-0`),w("caret return",u),u})},Jo=(t,e)=>(w("replaceXRanges",t,e),t.split(/\s+/).map(r=>Yo(r,e)).join(" ")),Yo=(t,e)=>{t=t.trim();let r=e.loose?N[T.XRANGELOOSE]:N[T.XRANGE];return t.replace(r,(n,s,i,o,a,c)=>{if(w("xRange",t,n,s,i,o,a,c),Go(i,o,a))return t;let u=y(i),l=u||y(o),h=l||y(a),E=h;return s==="="&&E&&(s=""),c=e.includePrerelease?"-0":"",u?s===">"||s==="<"?n="<0.0.0-0":n="*":s&&E?(l&&(o=0),a=0,s===">"?(s=">=",l?(i=+i+1,o=0,a=0):(o=+o+1,a=0)):s==="<="&&(s="<",l?i=+i+1:o=+o+1),s==="<"&&(c="-0"),n=`${s+i}.${o}.${a}${c}`):l?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:h&&(n=`>=${i}.${o}.0${c} <${i}.${+o+1}.0-0`),w("xRange return",n),n})},Bo=(t,e)=>(w("replaceStars",t,e),t.trim().replace(N[T.STAR],"")),Wo=(t,e)=>(w("replaceGTE0",t,e),t.trim().replace(N[e.includePrerelease?T.GTE0PRE:T.GTE0],"")),zo=t=>(e,r,n,s,i,o,a,c,u,l,h,E)=>(y(n)?r="":y(s)?r=`>=${n}.0.0${t?"-0":""}`:y(i)?r=`>=${n}.${s}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,y(u)?c="":y(l)?c=`<${+u+1}.0.0-0`:y(h)?c=`<${u}.${+l+1}.0-0`:E?c=`<=${u}.${l}.${h}-${E}`:t?c=`<${u}.${l}.${+h+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),Ko=(t,e,r)=>{for(let n=0;n<t.length;n++)if(!t[n].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let n=0;n<t.length;n++)if(w(t[n].semver),t[n].semver!==je.ANY&&t[n].semver.prerelease.length>0){let s=t[n].semver;if(s.major===e.major&&s.minor===e.minor&&s.patch===e.patch)return!0}return!1}return!0}});var Y=m((Ju,cn)=>{"use strict";var B=Symbol("SemVer ANY"),He=class t{static get ANY(){return B}constructor(e,r){if(r=tn(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),Me("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===B?this.value="":this.value=this.operator+this.semver.version,Me("comp",this)}parse(e){let r=this.options.loose?rn[nn.COMPARATORLOOSE]:rn[nn.COMPARATOR],n=e.match(r);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 sn(n[2],this.options.loose):this.semver=B}toString(){return this.value}test(e){if(Me("Comparator.test",e,this.options.loose),this.semver===B||e===B)return!0;if(typeof e=="string")try{e=new sn(e,this.options)}catch{return!1}return Ge(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new on(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new on(this.value,r).test(e.semver):(r=tn(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.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("=")||Ge(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Ge(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};cn.exports=He;var tn=K(),{safeRe:rn,t:nn}=b(),Ge=Ue(),Me=X(),sn=S(),on=L()});var W=m((Yu,an)=>{"use strict";var Qo=L(),Zo=(t,e,r)=>{try{e=new Qo(e,r)}catch{return!1}return e.test(t)};an.exports=Zo});var ln=m((Bu,un)=>{"use strict";var ec=L(),tc=(t,e)=>new ec(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));un.exports=tc});var hn=m((Wu,fn)=>{"use strict";var rc=S(),nc=L(),sc=(t,e,r)=>{let n=null,s=null,i=null;try{i=new nc(e,r)}catch{return null}return t.forEach(o=>{i.test(o)&&(!n||s.compare(o)===-1)&&(n=o,s=new rc(n,r))}),n};fn.exports=sc});var pn=m((zu,dn)=>{"use strict";var ic=S(),oc=L(),cc=(t,e,r)=>{let n=null,s=null,i=null;try{i=new oc(e,r)}catch{return null}return t.forEach(o=>{i.test(o)&&(!n||s.compare(o)===1)&&(n=o,s=new ic(n,r))}),n};dn.exports=cc});var gn=m((Ku,En)=>{"use strict";var Ve=S(),ac=L(),mn=J(),uc=(t,e)=>{t=new ac(t,e);let r=new Ve("0.0.0");if(t.test(r)||(r=new Ve("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n<t.set.length;++n){let s=t.set[n],i=null;s.forEach(o=>{let a=new Ve(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!i||mn(a,i))&&(i=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),i&&(!r||mn(r,i))&&(r=i)}return r&&t.test(r)?r:null};En.exports=uc});var wn=m((Qu,$n)=>{"use strict";var lc=L(),fc=(t,e)=>{try{return new lc(t,e).range||"*"}catch{return null}};$n.exports=fc});var ae=m((Zu,Sn)=>{"use strict";var hc=S(),yn=Y(),{ANY:dc}=yn,pc=L(),mc=W(),Rn=J(),In=ne(),Ec=ie(),gc=se(),$c=(t,e,r,n)=>{t=new hc(t,n),e=new pc(e,n);let s,i,o,a,c;switch(r){case">":s=Rn,i=Ec,o=In,a=">",c=">=";break;case"<":s=In,i=gc,o=Rn,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(mc(t,e,n))return!1;for(let u=0;u<e.set.length;++u){let l=e.set[u],h=null,E=null;if(l.forEach(f=>{f.semver===dc&&(f=new yn(">=0.0.0")),h=h||f,E=E||f,s(f.semver,h.semver,n)?h=f:o(f.semver,E.semver,n)&&(E=f)}),h.operator===a||h.operator===c||(!E.operator||E.operator===a)&&i(t,E.semver))return!1;if(E.operator===c&&o(t,E.semver))return!1}return!0};Sn.exports=$c});var Nn=m((el,Tn)=>{"use strict";var wc=ae(),Rc=(t,e,r)=>wc(t,e,">",r);Tn.exports=Rc});var Ln=m((tl,An)=>{"use strict";var Ic=ae(),yc=(t,e,r)=>Ic(t,e,"<",r);An.exports=yc});var vn=m((rl,On)=>{"use strict";var Cn=L(),Sc=(t,e,r)=>(t=new Cn(t,r),e=new Cn(e,r),t.intersects(e,r));On.exports=Sc});var xn=m((nl,qn)=>{"use strict";var Tc=W(),Nc=A();qn.exports=(t,e,r)=>{let n=[],s=null,i=null,o=t.sort((l,h)=>Nc(l,h,r));for(let l of o)Tc(l,e,r)?(i=l,s||(s=l)):(i&&n.push([s,i]),i=null,s=null);s&&n.push([s,null]);let a=[];for(let[l,h]of n)l===h?a.push(l):!h&&l===o[0]?a.push("*"):h?l===o[0]?a.push(`<=${h}`):a.push(`${l} - ${h}`):a.push(`>=${l}`);let c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e}});var _n=m((sl,Un)=>{"use strict";var Pn=L(),Ye=Y(),{ANY:Xe}=Ye,Je=W(),Be=A(),Ac=(t,e,r={})=>{if(t===e)return!0;t=new Pn(t,r),e=new Pn(e,r);let n=!1;e:for(let s of t.set){for(let i of e.set){let o=Cc(s,i,r);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},Lc=[new Ye(">=0.0.0-0")],Fn=[new Ye(">=0.0.0")],Cc=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Xe){if(e.length===1&&e[0].semver===Xe)return!0;r.includePrerelease?t=Lc:t=Fn}if(e.length===1&&e[0].semver===Xe){if(r.includePrerelease)return!0;e=Fn}let n=new Set,s,i;for(let f of t)f.operator===">"||f.operator===">="?s=kn(s,f,r):f.operator==="<"||f.operator==="<="?i=Dn(i,f,r):n.add(f.semver);if(n.size>1)return null;let o;if(s&&i){if(o=Be(s.semver,i.semver,r),o>0)return null;if(o===0&&(s.operator!==">="||i.operator!=="<="))return null}for(let f of n){if(s&&!Je(f,String(s),r)||i&&!Je(f,String(i),r))return null;for(let I of e)if(!Je(f,String(I),r))return!1;return!0}let a,c,u,l,h=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,E=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1;h&&h.prerelease.length===1&&i.operator==="<"&&h.prerelease[0]===0&&(h=!1);for(let f of e){if(l=l||f.operator===">"||f.operator===">=",u=u||f.operator==="<"||f.operator==="<=",s){if(E&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===E.major&&f.semver.minor===E.minor&&f.semver.patch===E.patch&&(E=!1),f.operator===">"||f.operator===">="){if(a=kn(s,f,r),a===f&&a!==s)return!1}else if(s.operator===">="&&!f.test(s.semver))return!1}if(i){if(h&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===h.major&&f.semver.minor===h.minor&&f.semver.patch===h.patch&&(h=!1),f.operator==="<"||f.operator==="<="){if(c=Dn(i,f,r),c===f&&c!==i)return!1}else if(i.operator==="<="&&!f.test(i.semver))return!1}if(!f.operator&&(i||s)&&o!==0)return!1}return!(s&&u&&!i&&o!==0||i&&l&&!s&&o!==0||E||h)},kn=(t,e,r)=>{if(!t)return e;let n=Be(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},Dn=(t,e,r)=>{if(!t)return e;let n=Be(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};Un.exports=Ac});var Mn=m((il,Gn)=>{"use strict";var We=b(),bn=_(),Oc=S(),jn=xe(),vc=x(),qc=ur(),xc=fr(),Pc=pr(),Fc=gr(),kc=wr(),Dc=Ir(),Uc=Sr(),_c=Nr(),bc=A(),jc=Or(),Gc=qr(),Mc=re(),Hc=kr(),Vc=Ur(),Xc=J(),Jc=ne(),Yc=ke(),Bc=De(),Wc=se(),zc=ie(),Kc=Ue(),Qc=Jr(),Zc=Br(),ea=Y(),ta=L(),ra=W(),na=ln(),sa=hn(),ia=pn(),oa=gn(),ca=wn(),aa=ae(),ua=Nn(),la=Ln(),fa=vn(),ha=xn(),da=_n();Gn.exports={parse:vc,valid:qc,clean:xc,inc:Pc,diff:Fc,major:kc,minor:Dc,patch:Uc,prerelease:_c,compare:bc,rcompare:jc,compareLoose:Gc,compareBuild:Mc,sort:Hc,rsort:Vc,gt:Xc,lt:Jc,eq:Yc,neq:Bc,gte:Wc,lte:zc,cmp:Kc,coerce:Qc,truncate:Zc,Comparator:ea,Range:ta,satisfies:ra,toComparators:na,maxSatisfying:sa,minSatisfying:ia,minVersion:oa,validRange:ca,outside:aa,gtr:ua,ltr:la,intersects:fa,simplifyRange:ha,subset:da,SemVer:Oc,re:We.re,src:We.src,tokens:We.t,SEMVER_SPEC_VERSION:bn.SEMVER_SPEC_VERSION,RELEASE_TYPES:bn.RELEASE_TYPES,compareIdentifiers:jn.compareIdentifiers,rcompareIdentifiers:jn.rcompareIdentifiers}});var le=m((ol,Qn)=>{var P=require("fs"),C=require("path"),Vn=zt(),F=Mn(),{DEFAULT_API_URL:pa}=V(),ze=["dependencies","devDependencies","optionalDependencies","peerDependencies"];function Xn(t){let e=new Map;for(let r of t){let n=typeof r=="string"&&r.match(/^((?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*)(?:@([^\r\n]+))?$/);if(!n)throw new Error(`Invalid npm dependency: ${String(r)}`);let[,s,i]=n,o=e.get(s);e.set(s,o&&i?ma(s,o,i):i||o)}return e}function ma(t,e,r){if(e===r)return e;let n=F.validRange(e),s=F.validRange(r);if(n&&s)try{if(F.subset(s,n))return r;if(F.subset(n,s))return e}catch{}throw new Error(`Conflicting registry versions for ${t}: ${e} and ${r}`)}function Jn(t,e){let r=typeof t=="string"&&F.validRange(t),n=F.validRange(e);if(!r||!n)return!1;try{return F.subset(r,n)}catch{return!1}}function Yn(t,e){let r=Xn(e);if(r.size===0)return;let n=C.join(t,"package.json"),s=JSON.parse(P.readFileSync(n,"utf8"));for(let[i,o]of r){let a=ze.find(u=>Object.hasOwn(s[u]||{},i))||"dependencies";s[a]||={};let c=s[a][i];s[a][i]=o?Jn(c,o)?c:o:c||"latest"}P.writeFileSync(n,`${JSON.stringify(s,null,2)}
3
- `)}function ue(t){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 r=C.resolve(t);;r=C.dirname(r)){let n=C.join(r,"package.json");if(P.existsSync(n)){let s=JSON.parse(P.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(P.existsSync(C.join(r,s)))return i;if(C.dirname(r)===r)return"npm"}}var Hn={npm:"npx",pnpm:"pnpm exec",yarn:"yarn",bun:"bunx"};function Bn(t,e=process.cwd()){let r;try{r=ue(e)}catch{r="npm"}return`${Hn[r]||Hn.npm} frontfriend ${t}`}function Ea(t,e=process.cwd()){let r=null;try{r=t?new URL(t).origin:null}catch{r=null}return Bn(r&&r!==new URL(pa).origin?`login --api-url ${r}`:"login",e)}function Ke(t,e){let r=Xn(e);if(r.size===0)return[];let n=JSON.parse(P.readFileSync(C.join(t,"package.json"),"utf8")),s=[];for(let[i,o]of r){let a=ze.find(c=>Object.hasOwn(n[c]||{},i));a&&(!o||Jn(n[a][i],o))||s.push(o?`${i}@${o}`:i)}return s}function Wn(t,e){return[t==="npm"?"install":"add",...e]}function ga(t){return/^[\w@/.:^~=+-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function zn(t,e){let r=ue(t);return[r,...Wn(r,e)].map(ga).join(" ")}function Kn(t,e,{stdio:r="inherit"}={}){let n=Ke(t,e);if(n.length===0)return;let s=ue(t),i=Vn.sync(s,Wn(s,n),{cwd:t,stdio:r});if(i.error||i.status!==0)throw Yn(t,e),i.error||new Error(`${s} dependency installation failed with status ${i.status}. Dependencies were saved; run ${s} install.`)}function $a(t,e,{install:r=!0,stdio:n="inherit",log:s=console.log}={}){let i=Ke(t,e);if(i.length===0)return{missing:i,command:null,installed:!1};let o=zn(t,i);if(!r)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 Kn(t,i,{stdio:n}),{missing:i,command:o,installed:!0}}catch(a){return s(`\u26A0\uFE0F Component dependencies were not installed: ${a.message}
1
+ var E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var H=E((nu,at)=>{var ys="https://app.frontfriend.dev",Ss=".cache/frontfriend",Ts={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"]},Ns={FF_ID:"FF_ID",FF_API_URL:"FF_API_URL",FF_AUTH_TOKEN:"FF_AUTH_TOKEN",FF_MACHINE_TOKEN:"FRONTFRIEND_MACHINE_TOKEN"};function As(t){if(!t)return null;try{let e=new URL(t);return e.hostname.startsWith("app.")?`${e.protocol}//${e.hostname.replace(/^app\./,"registry.")}`:null}catch{return null}}at.exports={DEFAULT_API_URL:ys,CACHE_DIR_NAME:Ss,CACHE_TTL_DAYS:7,CACHE_TTL_MS:6048e5,CACHE_FILES:Ts,ENV_VARS:Ns,deriveRegistryFromApiUrl:As}});var ye=E((su,ut)=>{var $e=class extends Error{constructor(e,r,n){super(e),this.name="APIError",this.statusCode=r,this.url=n,this.code=`API_${r}`}},we=class extends Error{constructor(e,r){super(e),this.name="CacheError",this.operation=r,this.code=`CACHE_${r.toUpperCase()}`}},Re=class extends Error{constructor(e,r){super(e),this.name="ConfigError",this.field=r,this.code=r?`CONFIG_${String(r).toUpperCase()}`:"CONFIG_ERROR"}},Ie=class extends Error{constructor(e,r){super(e),this.name="ProcessingError",this.token=r,this.code="PROCESSING_ERROR"}};ut.exports={APIError:$e,CacheError:we,ConfigError:Re,ProcessingError:Ie}});var ft=E((iu,lt)=>{var I=require("fs");function Ls(t){try{let e=I.readFileSync(t,"utf8");return JSON.parse(e)}catch(e){if(e.code==="ENOENT")return null;throw e}}function Cs(t){try{return I.readFileSync(t,"utf8").replace(/^\uFEFF/,"")}catch(e){if(e.code==="ENOENT")return null;throw e}}function Os(t,e,r=2){let n=JSON.stringify(e,null,r);I.writeFileSync(t,n,"utf8")}function vs(t,e){I.writeFileSync(t,e,"utf8")}function qs(t,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)?"[]":"{}"};`;I.writeFileSync(t,n,"utf8")}else{let r=`module.exports = ${JSON.stringify(e,null,2)};`;I.writeFileSync(t,r,"utf8")}}function xs(t){return I.existsSync(t)}function Ps(t){I.mkdirSync(t,{recursive:!0})}function ks(t){I.rmSync(t,{recursive:!0,force:!0})}function Fs(t){I.rmSync(t,{force:!0})}function Ds(t,e){I.mkdirSync(require("path").dirname(t),{recursive:!0,mode:448});let r=`${t}.${process.pid}.${Date.now()}.tmp`;try{I.writeFileSync(r,`${JSON.stringify(e,null,2)}
2
+ `,{mode:384}),I.renameSync(r,t);try{I.chmodSync(t,384)}catch{}}finally{I.rmSync(r,{force:!0})}}async function Us(t,e,r){I.mkdirSync(require("path").dirname(t),{recursive:!0,mode:448});let n=`${t}.lock`,s=Date.now()+2e4,i;for(;i===void 0;)try{i=I.openSync(n,"wx",384),I.writeFileSync(i,String(process.pid))}catch(o){if(o.code!=="EEXIST")throw o;try{let a=Number(I.readFileSync(n,"utf8"));if(Number.isInteger(a)&&a>0)try{process.kill(a,0)}catch(c){if(c.code==="ESRCH"){I.unlinkSync(n);continue}}}catch(a){if(a.code==="ENOENT")continue}if(Date.now()>=s)throw r();await new Promise(a=>setTimeout(a,50))}try{return await e()}finally{I.closeSync(i),I.unlinkSync(n)}}lt.exports={writePrivateJsonFileAtomic:Ds,withPrivateFileLock:Us,readJsonFileSafe:Ls,readFileSafe:Cs,writeJsonFile:Os,writeTextFile:vs,writeModuleExportsFile:qs,fileExists:xs,ensureDirectoryExists:Ps,removeDirectory:ks,removeFile:Fs}});var Et=E((ou,mt)=>{mt.exports=pt;pt.sync=bs;var ht=require("fs");function _s(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n<r.length;n++){var s=r[n].toLowerCase();if(s&&t.substr(-s.length).toLowerCase()===s)return!0}return!1}function dt(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:_s(e,r)}function pt(t,e,r){ht.stat(t,function(n,s){r(n,n?!1:dt(s,t,e))})}function bs(t,e){return dt(ht.statSync(t),t,e)}});var It=E((cu,Rt)=>{Rt.exports=$t;$t.sync=js;var gt=require("fs");function $t(t,e,r){gt.stat(t,function(n,s){r(n,n?!1:wt(s,e))})}function js(t,e){return wt(gt.statSync(t),e)}function wt(t,e){return t.isFile()&&Gs(t,e)}function Gs(t,e){var r=t.mode,n=t.uid,s=t.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),h=a|c,l=r&u||r&c&&s===o||r&a&&n===i||r&h&&i===0;return l}});var St=E((uu,yt)=>{var au=require("fs"),z;process.platform==="win32"||global.TESTING_WINDOWS?z=Et():z=It();yt.exports=Se;Se.sync=Ms;function Se(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){Se(t,e||{},function(i,o){i?s(i):n(o)})})}z(t,e||{},function(n,s){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,s=!1),r(n,s)})}function Ms(t,e){try{return z.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var vt=E((lu,Ot)=>{var D=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Tt=require("path"),Vs=D?";":":",Nt=St(),At=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),Lt=(t,e)=>{let r=e.colon||Vs,n=t.match(/\//)||D&&t.match(/\\/)?[""]:[...D?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=D?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=D?s.split(r):[""];return D&&t.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:s}},Ct=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:s,pathExtExe:i}=Lt(t,e),o=[],a=u=>new Promise((h,l)=>{if(u===n.length)return e.all&&o.length?h(o):l(At(t));let m=n[u],f=/^".*"$/.test(m)?m.slice(1,-1):m,$=Tt.join(f,t),A=!f&&/^\.[\\\/]/.test(t)?t.slice(0,2)+$:$;h(c(A,u,0))}),c=(u,h,l)=>new Promise((m,f)=>{if(l===s.length)return m(a(h+1));let $=s[l];Nt(u+$,{pathExt:i},(A,Is)=>{if(!A&&Is)if(e.all)o.push(u+$);else return m(u+$);return m(c(u,h,l+1))})});return r?a(0).then(u=>r(null,u),r):a(0)},Hs=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:s}=Lt(t,e),i=[];for(let o=0;o<r.length;o++){let a=r[o],c=/^".*"$/.test(a)?a.slice(1,-1):a,u=Tt.join(c,t),h=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+u:u;for(let l=0;l<n.length;l++){let m=h+n[l];try{if(Nt.sync(m,{pathExt:s}))if(e.all)i.push(m);else return m}catch{}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw At(t)};Ot.exports=Ct;Ct.sync=Hs});var xt=E((fu,Te)=>{"use strict";var qt=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Te.exports=qt;Te.exports.default=qt});var Dt=E((hu,Ft)=>{"use strict";var Pt=require("path"),Xs=vt(),Js=xt();function kt(t,e){let r=t.options.env||process.env,n=process.cwd(),s=t.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(t.options.cwd)}catch{}let o;try{o=Xs.sync(t.command,{path:r[Js({env:r})],pathExt:e?Pt.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return o&&(o=Pt.resolve(s?t.options.cwd:"",o)),o}function Bs(t){return kt(t)||kt(t,!0)}Ft.exports=Bs});var Ut=E((du,Ae)=>{"use strict";var Ne=/([()\][%!^"`<>&|;, *?])/g;function Ys(t){return t=t.replace(Ne,"^$1"),t}function Ws(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Ne,"^$1"),e&&(t=t.replace(Ne,"^$1")),t}Ae.exports.command=Ys;Ae.exports.argument=Ws});var bt=E((pu,_t)=>{"use strict";_t.exports=/^#!(.*)/});var Gt=E((mu,jt)=>{"use strict";var zs=bt();jt.exports=(t="")=>{let e=t.match(zs);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s}});var Vt=E((Eu,Mt)=>{"use strict";var Le=require("fs"),Ks=Gt();function Qs(t){let r=Buffer.alloc(150),n;try{n=Le.openSync(t,"r"),Le.readSync(n,r,0,150,0),Le.closeSync(n)}catch{}return Ks(r.toString())}Mt.exports=Qs});var Bt=E((gu,Jt)=>{"use strict";var Zs=require("path"),Ht=Dt(),Xt=Ut(),ei=Vt(),ti=process.platform==="win32",ri=/\.(?:com|exe)$/i,ni=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function si(t){t.file=Ht(t);let e=t.file&&ei(t.file);return e?(t.args.unshift(t.file),t.command=e,Ht(t)):t.file}function ii(t){if(!ti)return t;let e=si(t),r=!ri.test(e);if(t.options.forceShell||r){let n=ni.test(e);t.command=Zs.normalize(t.command),t.command=Xt.command(t.command),t.args=t.args.map(i=>Xt.argument(i,n));let s=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${s}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function oi(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:ii(n)}Jt.exports=oi});var zt=E(($u,Wt)=>{"use strict";var Ce=process.platform==="win32";function Oe(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function ci(t,e){if(!Ce)return;let r=t.emit;t.emit=function(n,s){if(n==="exit"){let i=Yt(s,e);if(i)return r.call(t,"error",i)}return r.apply(t,arguments)}}function Yt(t,e){return Ce&&t===1&&!e.file?Oe(e.original,"spawn"):null}function ai(t,e){return Ce&&t===1&&!e.file?Oe(e.original,"spawnSync"):null}Wt.exports={hookChildProcess:ci,verifyENOENT:Yt,verifyENOENTSync:ai,notFoundError:Oe}});var Zt=E((wu,U)=>{"use strict";var Kt=require("child_process"),ve=Bt(),qe=zt();function Qt(t,e,r){let n=ve(t,e,r),s=Kt.spawn(n.command,n.args,n.options);return qe.hookChildProcess(s,n),s}function ui(t,e,r){let n=ve(t,e,r),s=Kt.spawnSync(n.command,n.args,n.options);return s.error=s.error||qe.verifyENOENTSync(s.status,n),s}U.exports=Qt;U.exports.spawn=Qt;U.exports.sync=ui;U.exports._parse=ve;U.exports._enoent=qe});var _=E((Ru,er)=>{"use strict";var li="2.0.0",fi=Number.MAX_SAFE_INTEGER||9007199254740991,hi=16,di=250,pi=["major","premajor","minor","preminor","patch","prepatch","prerelease"];er.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:hi,MAX_SAFE_BUILD_LENGTH:di,MAX_SAFE_INTEGER:fi,RELEASE_TYPES:pi,SEMVER_SPEC_VERSION:li,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var X=E((Iu,tr)=>{"use strict";var mi=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};tr.exports=mi});var b=E((q,rr)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:xe,MAX_SAFE_BUILD_LENGTH:Ei,MAX_LENGTH:gi}=_(),$i=X();q=rr.exports={};var wi=q.re=[],Ri=q.safeRe=[],d=q.src=[],Ii=q.safeSrc=[],p=q.t={},yi=0,Pe="[a-zA-Z0-9-]",Si=[["\\s",1],["\\d",gi],[Pe,Ei]],Ti=t=>{for(let[e,r]of Si)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},g=(t,e,r)=>{let n=Ti(e),s=yi++;$i(t,s,e),p[t]=s,d[s]=e,Ii[s]=n,wi[s]=new RegExp(e,r?"g":void 0),Ri[s]=new RegExp(n,r?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*");g("NUMERICIDENTIFIERLOOSE","\\d+");g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Pe}*`);g("MAINVERSION",`(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})\\.(${d[p.NUMERICIDENTIFIER]})`);g("MAINVERSIONLOOSE",`(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})\\.(${d[p.NUMERICIDENTIFIERLOOSE]})`);g("PRERELEASEIDENTIFIER",`(?:${d[p.NONNUMERICIDENTIFIER]}|${d[p.NUMERICIDENTIFIER]})`);g("PRERELEASEIDENTIFIERLOOSE",`(?:${d[p.NONNUMERICIDENTIFIER]}|${d[p.NUMERICIDENTIFIERLOOSE]})`);g("PRERELEASE",`(?:-(${d[p.PRERELEASEIDENTIFIER]}(?:\\.${d[p.PRERELEASEIDENTIFIER]})*))`);g("PRERELEASELOOSE",`(?:-?(${d[p.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[p.PRERELEASEIDENTIFIERLOOSE]})*))`);g("BUILDIDENTIFIER",`${Pe}+`);g("BUILD",`(?:\\+(${d[p.BUILDIDENTIFIER]}(?:\\.${d[p.BUILDIDENTIFIER]})*))`);g("FULLPLAIN",`v?${d[p.MAINVERSION]}${d[p.PRERELEASE]}?${d[p.BUILD]}?`);g("FULL",`^${d[p.FULLPLAIN]}$`);g("LOOSEPLAIN",`[v=\\s]*${d[p.MAINVERSIONLOOSE]}${d[p.PRERELEASELOOSE]}?${d[p.BUILD]}?`);g("LOOSE",`^${d[p.LOOSEPLAIN]}$`);g("GTLT","((?:<|>)?=?)");g("XRANGEIDENTIFIERLOOSE",`${d[p.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);g("XRANGEIDENTIFIER",`${d[p.NUMERICIDENTIFIER]}|x|X|\\*`);g("XRANGEPLAIN",`[v=\\s]*(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:\\.(${d[p.XRANGEIDENTIFIER]})(?:${d[p.PRERELEASE]})?${d[p.BUILD]}?)?)?`);g("XRANGEPLAINLOOSE",`[v=\\s]*(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[p.XRANGEIDENTIFIERLOOSE]})(?:${d[p.PRERELEASELOOSE]})?${d[p.BUILD]}?)?)?`);g("XRANGE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAIN]}$`);g("XRANGELOOSE",`^${d[p.GTLT]}\\s*${d[p.XRANGEPLAINLOOSE]}$`);g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${xe}})(?:\\.(\\d{1,${xe}}))?(?:\\.(\\d{1,${xe}}))?`);g("COERCE",`${d[p.COERCEPLAIN]}(?:$|[^\\d])`);g("COERCEFULL",d[p.COERCEPLAIN]+`(?:${d[p.PRERELEASE]})?(?:${d[p.BUILD]})?(?:$|[^\\d])`);g("COERCERTL",d[p.COERCE],!0);g("COERCERTLFULL",d[p.COERCEFULL],!0);g("LONETILDE","(?:~>?)");g("TILDETRIM",`(\\s*)${d[p.LONETILDE]}\\s+`,!0);q.tildeTrimReplace="$1~";g("TILDE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAIN]}$`);g("TILDELOOSE",`^${d[p.LONETILDE]}${d[p.XRANGEPLAINLOOSE]}$`);g("LONECARET","(?:\\^)");g("CARETTRIM",`(\\s*)${d[p.LONECARET]}\\s+`,!0);q.caretTrimReplace="$1^";g("CARET",`^${d[p.LONECARET]}${d[p.XRANGEPLAIN]}$`);g("CARETLOOSE",`^${d[p.LONECARET]}${d[p.XRANGEPLAINLOOSE]}$`);g("COMPARATORLOOSE",`^${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]})$|^$`);g("COMPARATOR",`^${d[p.GTLT]}\\s*(${d[p.FULLPLAIN]})$|^$`);g("COMPARATORTRIM",`(\\s*)${d[p.GTLT]}\\s*(${d[p.LOOSEPLAIN]}|${d[p.XRANGEPLAIN]})`,!0);q.comparatorTrimReplace="$1$2$3";g("HYPHENRANGE",`^\\s*(${d[p.XRANGEPLAIN]})\\s+-\\s+(${d[p.XRANGEPLAIN]})\\s*$`);g("HYPHENRANGELOOSE",`^\\s*(${d[p.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[p.XRANGEPLAINLOOSE]})\\s*$`);g("STAR","(<|>)?=?\\s*\\*");g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var K=E((yu,nr)=>{"use strict";var Ni=Object.freeze({loose:!0}),Ai=Object.freeze({}),Li=t=>t?typeof t!="object"?Ni:t:Ai;nr.exports=Li});var ke=E((Su,or)=>{"use strict";var sr=/^[0-9]+$/,ir=(t,e)=>{if(typeof t=="number"&&typeof e=="number")return t===e?0:t<e?-1:1;let r=sr.test(t),n=sr.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:t<e?-1:1},Ci=(t,e)=>ir(e,t);or.exports={compareIdentifiers:ir,rcompareIdentifiers:Ci}});var S=E((Tu,ar)=>{"use strict";var Q=X(),{MAX_LENGTH:cr,MAX_SAFE_INTEGER:Z}=_(),{safeRe:ee,t:te}=b(),Oi=K(),{compareIdentifiers:Fe}=ke(),vi=(t,e)=>{let r=e.split(".");if(r.length>t.length)return!1;for(let n=0;n<r.length;n++)if(Fe(t[n],r[n])!==0)return!1;return!0},De=class t{constructor(e,r){if(r=Oi(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.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>cr)throw new TypeError(`version is longer than ${cr} characters`);Q("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?ee[te.LOOSE]:ee[te.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(Q("SemVer.compare",this.version,this.options,e),!(e instanceof t)){if(typeof e=="string"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(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 t||(e=new t(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 r=0;do{let n=this.prerelease[r],s=e.prerelease[r];if(Q("prerelease compare",r,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 Fe(n,s)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let n=this.build[r],s=e.build[r];if(Q("build compare",r,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 Fe(n,s)}while(++r)}inc(e,r,n){if(e.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let s=`-${r}`.match(this.options.loose?ee[te.PRERELEASELOOSE]:ee[te.PRERELEASE]);if(!s||s[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,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(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(r){let i=[r,s];if(n===!1&&(i=[r]),vi(this.prerelease,r)){let o=this.prerelease[r.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}};ar.exports=De});var P=E((Nu,lr)=>{"use strict";var ur=S(),qi=(t,e,r=!1)=>{if(t instanceof ur)return t;try{return new ur(t,e)}catch(n){if(!r)return null;throw n}};lr.exports=qi});var hr=E((Au,fr)=>{"use strict";var xi=P(),Pi=(t,e)=>{let r=xi(t,e);return r?r.version:null};fr.exports=Pi});var pr=E((Lu,dr)=>{"use strict";var ki=P(),Fi=(t,e)=>{let r=ki(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};dr.exports=Fi});var gr=E((Cu,Er)=>{"use strict";var mr=S(),Di=(t,e,r,n,s)=>{typeof r=="string"&&(s=n,n=r,r=void 0);try{return new mr(t instanceof mr?t.version:t,r).inc(e,n,s).version}catch{return null}};Er.exports=Di});var Rr=E((Ou,wr)=>{"use strict";var $r=P(),Ui=(t,e)=>{let r=$r(t,null,!0),n=$r(e,null,!0),s=r.compare(n);if(s===0)return null;let i=s>0,o=i?r:n,a=i?n:r,c=!!o.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(o)===0)return a.minor&&!a.patch?"minor":"patch"}let h=c?"pre":"";return r.major!==n.major?h+"major":r.minor!==n.minor?h+"minor":r.patch!==n.patch?h+"patch":"prerelease"};wr.exports=Ui});var yr=E((vu,Ir)=>{"use strict";var _i=S(),bi=(t,e)=>new _i(t,e).major;Ir.exports=bi});var Tr=E((qu,Sr)=>{"use strict";var ji=S(),Gi=(t,e)=>new ji(t,e).minor;Sr.exports=Gi});var Ar=E((xu,Nr)=>{"use strict";var Mi=S(),Vi=(t,e)=>new Mi(t,e).patch;Nr.exports=Vi});var Cr=E((Pu,Lr)=>{"use strict";var Hi=P(),Xi=(t,e)=>{let r=Hi(t,e);return r&&r.prerelease.length?r.prerelease:null};Lr.exports=Xi});var L=E((ku,vr)=>{"use strict";var Or=S(),Ji=(t,e,r)=>new Or(t,r).compare(new Or(e,r));vr.exports=Ji});var xr=E((Fu,qr)=>{"use strict";var Bi=L(),Yi=(t,e,r)=>Bi(e,t,r);qr.exports=Yi});var kr=E((Du,Pr)=>{"use strict";var Wi=L(),zi=(t,e)=>Wi(t,e,!0);Pr.exports=zi});var re=E((Uu,Dr)=>{"use strict";var Fr=S(),Ki=(t,e,r)=>{let n=new Fr(t,r),s=new Fr(e,r);return n.compare(s)||n.compareBuild(s)};Dr.exports=Ki});var _r=E((_u,Ur)=>{"use strict";var Qi=re(),Zi=(t,e)=>t.sort((r,n)=>Qi(r,n,e));Ur.exports=Zi});var jr=E((bu,br)=>{"use strict";var eo=re(),to=(t,e)=>t.sort((r,n)=>eo(n,r,e));br.exports=to});var J=E((ju,Gr)=>{"use strict";var ro=L(),no=(t,e,r)=>ro(t,e,r)>0;Gr.exports=no});var ne=E((Gu,Mr)=>{"use strict";var so=L(),io=(t,e,r)=>so(t,e,r)<0;Mr.exports=io});var Ue=E((Mu,Vr)=>{"use strict";var oo=L(),co=(t,e,r)=>oo(t,e,r)===0;Vr.exports=co});var _e=E((Vu,Hr)=>{"use strict";var ao=L(),uo=(t,e,r)=>ao(t,e,r)!==0;Hr.exports=uo});var se=E((Hu,Xr)=>{"use strict";var lo=L(),fo=(t,e,r)=>lo(t,e,r)>=0;Xr.exports=fo});var ie=E((Xu,Jr)=>{"use strict";var ho=L(),po=(t,e,r)=>ho(t,e,r)<=0;Jr.exports=po});var be=E((Ju,Br)=>{"use strict";var mo=Ue(),Eo=_e(),go=J(),$o=se(),wo=ne(),Ro=ie(),Io=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return mo(t,r,n);case"!=":return Eo(t,r,n);case">":return go(t,r,n);case">=":return $o(t,r,n);case"<":return wo(t,r,n);case"<=":return Ro(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};Br.exports=Io});var Wr=E((Bu,Yr)=>{"use strict";var yo=S(),So=P(),{safeRe:oe,t:ce}=b(),To=(t,e)=>{if(t instanceof yo)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?oe[ce.COERCEFULL]:oe[ce.COERCE]);else{let c=e.includePrerelease?oe[ce.COERCERTLFULL]:oe[ce.COERCERTL],u;for(;(u=c.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),c.lastIndex=u.index+u[1].length+u[2].length;c.lastIndex=-1}if(r===null)return null;let n=r[2],s=r[3]||"0",i=r[4]||"0",o=e.includePrerelease&&r[5]?`-${r[5]}`:"",a=e.includePrerelease&&r[6]?`+${r[6]}`:"";return So(`${n}.${s}.${i}${o}${a}`,e)};Yr.exports=To});var Kr=E((Yu,zr)=>{"use strict";var No=P(),Ao=_(),Lo=S(),Co=(t,e,r)=>{if(!Ao.RELEASE_TYPES.includes(e))return null;let n=Oo(t,r);return n&&vo(n,e)},Oo=(t,e)=>{let r=t instanceof Lo?t.version:t;return No(r,e)},vo=(t,e)=>{if(qo(e))return t.version;switch(t.prerelease=[],e){case"major":t.minor=0,t.patch=0;break;case"minor":t.patch=0;break}return t.format()},qo=t=>t.startsWith("pre");zr.exports=Co});var Zr=E((Wu,Qr)=>{"use strict";var je=class{constructor(){this.max=1e3,this.map=new Map}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(e,r)}return this}};Qr.exports=je});var C=E((zu,nn)=>{"use strict";var xo=/\s+/g,Ge=class t{constructor(e,r){if(r=ko(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof Me)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().replace(xo," "),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=>!tn(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&&Vo(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 r=this.set[e];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(Mo,"");let n=((this.options.includePrerelease&&jo)|(this.options.loose&&Go))+":"+e,s=en.get(n);if(s)return s;let i=this.options.loose,o=i?N[T.HYPHENRANGELOOSE]:N[T.HYPHENRANGE];e=e.replace(o,ec(this.options.includePrerelease)),R("hyphen replace",e),e=e.replace(N[T.COMPARATORTRIM],Uo),R("comparator trim",e),e=e.replace(N[T.TILDETRIM],_o),R("tilde trim",e),e=e.replace(N[T.CARETTRIM],bo),R("caret trim",e);let a=e.split(" ").map(l=>Ho(l,this.options)).join(" ").split(/\s+/).map(l=>Zo(l,this.options));i&&(a=a.filter(l=>(R("loose invalid filter",l,this.options),!!l.match(N[T.COMPARATORLOOSE])))),R("range list",a);let c=new Map,u=a.map(l=>new Me(l,this.options));for(let l of u){if(tn(l))return[l];c.set(l.value,l)}c.size>1&&c.has("")&&c.delete("");let h=[...c.values()];return en.set(n,h),h}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(n=>rn(n,r)&&e.set.some(s=>rn(s,r)&&n.every(i=>s.every(o=>i.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Fo(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(tc(this.set[r],e,this.options))return!0;return!1}};nn.exports=Ge;var Po=Zr(),en=new Po,ko=K(),Me=B(),R=X(),Fo=S(),{safeRe:N,src:Do,t:T,comparatorTrimReplace:Uo,tildeTrimReplace:_o,caretTrimReplace:bo}=b(),{FLAG_INCLUDE_PRERELEASE:jo,FLAG_LOOSE:Go}=_(),Mo=new RegExp(Do[T.BUILD],"g"),tn=t=>t.value==="<0.0.0-0",Vo=t=>t.value==="",rn=(t,e)=>{let r=!0,n=t.slice(),s=n.pop();for(;r&&n.length;)r=n.every(i=>s.intersects(i,e)),s=n.pop();return r},Ho=(t,e)=>(t=t.replace(N[T.BUILD],""),R("comp",t,e),t=Yo(t,e),R("caret",t),t=Jo(t,e),R("tildes",t),t=zo(t,e),R("xrange",t),t=Qo(t,e),R("stars",t),t),y=t=>!t||t.toLowerCase()==="x"||t==="*",Xo=(t,e,r)=>y(t)&&!y(e)||y(e)&&r&&!y(r),Jo=(t,e)=>t.trim().split(/\s+/).map(r=>Bo(r,e)).join(" "),Bo=(t,e)=>{let r=e.loose?N[T.TILDELOOSE]:N[T.TILDE],n=e.includePrerelease?"-0":"";return t.replace(r,(s,i,o,a,c)=>{R("tilde",t,s,i,o,a,c);let u;return y(i)?u="":y(o)?u=`>=${i}.0.0${n} <${+i+1}.0.0-0`:y(a)?u=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:c?(R("replaceTilde pr",c),u=`>=${i}.${o}.${a}-${c} <${i}.${+o+1}.0-0`):u=`>=${i}.${o}.${a} <${i}.${+o+1}.0-0`,R("tilde return",u),u})},Yo=(t,e)=>t.trim().split(/\s+/).map(r=>Wo(r,e)).join(" "),Wo=(t,e)=>{R("caret",t,e);let r=e.loose?N[T.CARETLOOSE]:N[T.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(s,i,o,a,c)=>{R("caret",t,s,i,o,a,c);let u;return y(i)?u="":y(o)?u=`>=${i}.0.0${n} <${+i+1}.0.0-0`:y(a)?i==="0"?u=`>=${i}.${o}.0${n} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.0${n} <${+i+1}.0.0-0`:c?(R("replaceCaret pr",c),i==="0"?o==="0"?u=`>=${i}.${o}.${a}-${c} <${i}.${o}.${+a+1}-0`:u=`>=${i}.${o}.${a}-${c} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.${a}-${c} <${+i+1}.0.0-0`):(R("no pr"),i==="0"?o==="0"?u=`>=${i}.${o}.${a} <${i}.${o}.${+a+1}-0`:u=`>=${i}.${o}.${a} <${i}.${+o+1}.0-0`:u=`>=${i}.${o}.${a} <${+i+1}.0.0-0`),R("caret return",u),u})},zo=(t,e)=>(R("replaceXRanges",t,e),t.split(/\s+/).map(r=>Ko(r,e)).join(" ")),Ko=(t,e)=>{t=t.trim();let r=e.loose?N[T.XRANGELOOSE]:N[T.XRANGE];return t.replace(r,(n,s,i,o,a,c)=>{if(R("xRange",t,n,s,i,o,a,c),Xo(i,o,a))return t;let u=y(i),h=u||y(o),l=h||y(a),m=l;return s==="="&&m&&(s=""),c=e.includePrerelease?"-0":"",u?s===">"||s==="<"?n="<0.0.0-0":n="*":s&&m?(h&&(o=0),a=0,s===">"?(s=">=",h?(i=+i+1,o=0,a=0):(o=+o+1,a=0)):s==="<="&&(s="<",h?i=+i+1:o=+o+1),s==="<"&&(c="-0"),n=`${s+i}.${o}.${a}${c}`):h?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:l&&(n=`>=${i}.${o}.0${c} <${i}.${+o+1}.0-0`),R("xRange return",n),n})},Qo=(t,e)=>(R("replaceStars",t,e),t.trim().replace(N[T.STAR],"")),Zo=(t,e)=>(R("replaceGTE0",t,e),t.trim().replace(N[e.includePrerelease?T.GTE0PRE:T.GTE0],"")),ec=t=>(e,r,n,s,i,o,a,c,u,h,l,m)=>(y(n)?r="":y(s)?r=`>=${n}.0.0${t?"-0":""}`:y(i)?r=`>=${n}.${s}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,y(u)?c="":y(h)?c=`<${+u+1}.0.0-0`:y(l)?c=`<${u}.${+h+1}.0-0`:m?c=`<=${u}.${h}.${l}-${m}`:t?c=`<${u}.${h}.${+l+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),tc=(t,e,r)=>{for(let n=0;n<t.length;n++)if(!t[n].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let n=0;n<t.length;n++)if(R(t[n].semver),t[n].semver!==Me.ANY&&t[n].semver.prerelease.length>0){let s=t[n].semver;if(s.major===e.major&&s.minor===e.minor&&s.patch===e.patch)return!0}return!1}return!0}});var B=E((Ku,ln)=>{"use strict";var Y=Symbol("SemVer ANY"),Xe=class t{static get ANY(){return Y}constructor(e,r){if(r=sn(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),He("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Y?this.value="":this.value=this.operator+this.semver.version,He("comp",this)}parse(e){let r=this.options.loose?on[cn.COMPARATORLOOSE]:on[cn.COMPARATOR],n=e.match(r);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 an(n[2],this.options.loose):this.semver=Y}toString(){return this.value}test(e){if(He("Comparator.test",e,this.options.loose),this.semver===Y||e===Y)return!0;if(typeof e=="string")try{e=new an(e,this.options)}catch{return!1}return Ve(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new un(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new un(this.value,r).test(e.semver):(r=sn(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.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("=")||Ve(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Ve(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};ln.exports=Xe;var sn=K(),{safeRe:on,t:cn}=b(),Ve=be(),He=X(),an=S(),un=C()});var W=E((Qu,fn)=>{"use strict";var rc=C(),nc=(t,e,r)=>{try{e=new rc(e,r)}catch{return!1}return e.test(t)};fn.exports=nc});var dn=E((Zu,hn)=>{"use strict";var sc=C(),ic=(t,e)=>new sc(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));hn.exports=ic});var mn=E((el,pn)=>{"use strict";var oc=S(),cc=C(),ac=(t,e,r)=>{let n=null,s=null,i=null;try{i=new cc(e,r)}catch{return null}return t.forEach(o=>{i.test(o)&&(!n||s.compare(o)===-1)&&(n=o,s=new oc(n,r))}),n};pn.exports=ac});var gn=E((tl,En)=>{"use strict";var uc=S(),lc=C(),fc=(t,e,r)=>{let n=null,s=null,i=null;try{i=new lc(e,r)}catch{return null}return t.forEach(o=>{i.test(o)&&(!n||s.compare(o)===1)&&(n=o,s=new uc(n,r))}),n};En.exports=fc});var Rn=E((rl,wn)=>{"use strict";var Je=S(),hc=C(),$n=J(),dc=(t,e)=>{t=new hc(t,e);let r=new Je("0.0.0");if(t.test(r)||(r=new Je("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n<t.set.length;++n){let s=t.set[n],i=null;s.forEach(o=>{let a=new Je(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!i||$n(a,i))&&(i=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),i&&(!r||$n(r,i))&&(r=i)}return r&&t.test(r)?r:null};wn.exports=dc});var yn=E((nl,In)=>{"use strict";var pc=C(),mc=(t,e)=>{try{return new pc(t,e).range||"*"}catch{return null}};In.exports=mc});var ae=E((sl,An)=>{"use strict";var Ec=S(),Nn=B(),{ANY:gc}=Nn,$c=C(),wc=W(),Sn=J(),Tn=ne(),Rc=ie(),Ic=se(),yc=(t,e,r,n)=>{t=new Ec(t,n),e=new $c(e,n);let s,i,o,a,c;switch(r){case">":s=Sn,i=Rc,o=Tn,a=">",c=">=";break;case"<":s=Tn,i=Ic,o=Sn,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(wc(t,e,n))return!1;for(let u=0;u<e.set.length;++u){let h=e.set[u],l=null,m=null;if(h.forEach(f=>{f.semver===gc&&(f=new Nn(">=0.0.0")),l=l||f,m=m||f,s(f.semver,l.semver,n)?l=f:o(f.semver,m.semver,n)&&(m=f)}),l.operator===a||l.operator===c||(!m.operator||m.operator===a)&&i(t,m.semver))return!1;if(m.operator===c&&o(t,m.semver))return!1}return!0};An.exports=yc});var Cn=E((il,Ln)=>{"use strict";var Sc=ae(),Tc=(t,e,r)=>Sc(t,e,">",r);Ln.exports=Tc});var vn=E((ol,On)=>{"use strict";var Nc=ae(),Ac=(t,e,r)=>Nc(t,e,"<",r);On.exports=Ac});var Pn=E((cl,xn)=>{"use strict";var qn=C(),Lc=(t,e,r)=>(t=new qn(t,r),e=new qn(e,r),t.intersects(e,r));xn.exports=Lc});var Fn=E((al,kn)=>{"use strict";var Cc=W(),Oc=L();kn.exports=(t,e,r)=>{let n=[],s=null,i=null,o=t.sort((h,l)=>Oc(h,l,r));for(let h of o)Cc(h,e,r)?(i=h,s||(s=h)):(i&&n.push([s,i]),i=null,s=null);s&&n.push([s,null]);let a=[];for(let[h,l]of n)h===l?a.push(h):!l&&h===o[0]?a.push("*"):l?h===o[0]?a.push(`<=${l}`):a.push(`${h} - ${l}`):a.push(`>=${h}`);let c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e}});var Gn=E((ul,jn)=>{"use strict";var Dn=C(),We=B(),{ANY:Be}=We,Ye=W(),ze=L(),vc=(t,e,r={})=>{if(t===e)return!0;t=new Dn(t,r),e=new Dn(e,r);let n=!1;e:for(let s of t.set){for(let i of e.set){let o=xc(s,i,r);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},qc=[new We(">=0.0.0-0")],Un=[new We(">=0.0.0")],xc=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Be){if(e.length===1&&e[0].semver===Be)return!0;r.includePrerelease?t=qc:t=Un}if(e.length===1&&e[0].semver===Be){if(r.includePrerelease)return!0;e=Un}let n=new Set,s,i;for(let f of t)f.operator===">"||f.operator===">="?s=_n(s,f,r):f.operator==="<"||f.operator==="<="?i=bn(i,f,r):n.add(f.semver);if(n.size>1)return null;let o;if(s&&i){if(o=ze(s.semver,i.semver,r),o>0)return null;if(o===0&&(s.operator!==">="||i.operator!=="<="))return null}for(let f of n){if(s&&!Ye(f,String(s),r)||i&&!Ye(f,String(i),r))return null;for(let $ of e)if(!Ye(f,String($),r))return!1;return!0}let a,c,u,h,l=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,m=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1;l&&l.prerelease.length===1&&i.operator==="<"&&l.prerelease[0]===0&&(l=!1);for(let f of e){if(h=h||f.operator===">"||f.operator===">=",u=u||f.operator==="<"||f.operator==="<=",s){if(m&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===m.major&&f.semver.minor===m.minor&&f.semver.patch===m.patch&&(m=!1),f.operator===">"||f.operator===">="){if(a=_n(s,f,r),a===f&&a!==s)return!1}else if(s.operator===">="&&!f.test(s.semver))return!1}if(i){if(l&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===l.major&&f.semver.minor===l.minor&&f.semver.patch===l.patch&&(l=!1),f.operator==="<"||f.operator==="<="){if(c=bn(i,f,r),c===f&&c!==i)return!1}else if(i.operator==="<="&&!f.test(i.semver))return!1}if(!f.operator&&(i||s)&&o!==0)return!1}return!(s&&u&&!i&&o!==0||i&&h&&!s&&o!==0||m||l)},_n=(t,e,r)=>{if(!t)return e;let n=ze(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},bn=(t,e,r)=>{if(!t)return e;let n=ze(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};jn.exports=vc});var Xn=E((ll,Hn)=>{"use strict";var Ke=b(),Mn=_(),Pc=S(),Vn=ke(),kc=P(),Fc=hr(),Dc=pr(),Uc=gr(),_c=Rr(),bc=yr(),jc=Tr(),Gc=Ar(),Mc=Cr(),Vc=L(),Hc=xr(),Xc=kr(),Jc=re(),Bc=_r(),Yc=jr(),Wc=J(),zc=ne(),Kc=Ue(),Qc=_e(),Zc=se(),ea=ie(),ta=be(),ra=Wr(),na=Kr(),sa=B(),ia=C(),oa=W(),ca=dn(),aa=mn(),ua=gn(),la=Rn(),fa=yn(),ha=ae(),da=Cn(),pa=vn(),ma=Pn(),Ea=Fn(),ga=Gn();Hn.exports={parse:kc,valid:Fc,clean:Dc,inc:Uc,diff:_c,major:bc,minor:jc,patch:Gc,prerelease:Mc,compare:Vc,rcompare:Hc,compareLoose:Xc,compareBuild:Jc,sort:Bc,rsort:Yc,gt:Wc,lt:zc,eq:Kc,neq:Qc,gte:Zc,lte:ea,cmp:ta,coerce:ra,truncate:na,Comparator:sa,Range:ia,satisfies:oa,toComparators:ca,maxSatisfying:aa,minSatisfying:ua,minVersion:la,validRange:fa,outside:ha,gtr:da,ltr:pa,intersects:ma,simplifyRange:Ea,subset:ga,SemVer:Pc,re:Ke.re,src:Ke.src,tokens:Ke.t,SEMVER_SPEC_VERSION:Mn.SEMVER_SPEC_VERSION,RELEASE_TYPES:Mn.RELEASE_TYPES,compareIdentifiers:Vn.compareIdentifiers,rcompareIdentifiers:Vn.rcompareIdentifiers}});var he=E((fl,rs)=>{var k=require("fs"),O=require("path"),Bn=Zt(),v=Xn(),{DEFAULT_API_URL:$a}=H(),Yn=["dependencies","devDependencies","optionalDependencies","peerDependencies"];function Qe(t){let e=typeof t=="string"&&t.match(/^((?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*)(?:@([^\r\n]+))?$/);if(!e)throw new Error(`Invalid npm dependency: ${String(t)}`);return{name:e[1],version:e[2]}}function Ze(t){let e=new Map;for(let r of t){let{name:n,version:s}=Qe(r),i=e.get(n);e.set(n,i&&s?Wn(n,i,s):s||i)}return e}function Wn(t,e,r){if(e===r)return e;let n=v.validRange(e),s=v.validRange(r);if(n&&s)try{if(v.subset(s,n))return r;if(v.subset(n,s))return e}catch{}throw new Error(`Conflicting registry versions for ${t}: ${e} and ${r}`)}function wa(t,e){let r=typeof t=="string"&&v.validRange(t),n=v.validRange(e);if(!r||!n)return!1;try{return v.subset(r,n)}catch{return!1}}function le(t,e){if(wa(t,e))return"satisfied";let r=typeof t=="string"&&v.validRange(t),n=v.validRange(e);if(!r||!n)return"incomparable";try{let s=v.minVersion(r),i=v.minVersion(n);return!s||!i?"incomparable":v.lt(s,i)?"lower":"newer"}catch{return"incomparable"}}function ue(t,e){let r=Yn.find(n=>Object.hasOwn(t[n]||{},e));return r?{section:r,existing:t[r][e]}:null}function zn(t,e){let r=Ze(e);if(r.size===0)return;let n=O.join(t,"package.json"),s=JSON.parse(k.readFileSync(n,"utf8"));for(let[i,o]of r){let a=ue(s,i),c=a?.section||"dependencies";s[c]||={};let u=a?.existing;s[c][i]=u===void 0?o||"latest":o&&le(u,o)==="lower"?o:u}k.writeFileSync(n,`${JSON.stringify(s,null,2)}
3
+ `)}function fe(t){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 r=O.resolve(t);;r=O.dirname(r)){let n=O.join(r,"package.json");if(k.existsSync(n)){let s=JSON.parse(k.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(k.existsSync(O.join(r,s)))return i;if(O.dirname(r)===r)return"npm"}}var Jn={npm:"npx",pnpm:"pnpm exec",yarn:"yarn",bun:"bunx"};function Kn(t,e=process.cwd()){let r;try{r=fe(e)}catch{r="npm"}return`${Jn[r]||Jn.npm} frontfriend ${t}`}function Ra(t,e=process.cwd()){let r=null;try{r=t?new URL(t).origin:null}catch{r=null}return Kn(r&&r!==new URL($a).origin?`login --api-url ${r}`:"login",e)}function Qn(t){return JSON.parse(k.readFileSync(O.join(t,"package.json"),"utf8"))}function et(t,e){let r=Ze(e);if(r.size===0)return[];let n=Qn(t),s=[];for(let[i,o]of r){let a=ue(n,i);a&&(!o||le(a.existing,o)!=="lower")||s.push(o?`${i}@${o}`:i)}return s}function Ia(t,e){let r=e.filter(l=>l.required),n=Ze(r.flatMap(l=>l.dependencies)),s=(l,m)=>m.filter(f=>f.dependencies.some($=>Qe($).name===l)).map(f=>f.component).filter(Boolean),i=e.filter(l=>!l.required);if(n.size===0&&i.length===0)return{missing:[],kept:[],repair:[]};let o=Qn(t),a=[],c=[];for(let[l,m]of n){let f=ue(o,l);if(!f){a.push(m?`${l}@${m}`:l);continue}if(!m)continue;let $=le(f.existing,m);$==="lower"?a.push(`${l}@${m}`):$!=="satisfied"&&c.push({name:l,current:f.existing,declared:m,components:s(l,r)})}let u=new Map;for(let l of i.flatMap(m=>m.dependencies)){let{name:m,version:f}=Qe(l);if(n.has(m)||ue(o,m))continue;let $=u.get(m),A=f||$?.version;if($?.version&&f&&$.version!==f)try{A=Wn(m,$.version,f)}catch{A=$.version}u.set(m,{version:A})}let h=[...u].map(([l,{version:m}])=>({request:m?`${l}@${m}`:l,components:s(l,i)}));return{missing:a,kept:c,repair:h}}function Zn(t,e){return[t==="npm"?"install":"add",...e]}function ya(t){return/^[\w@/.:^~=+-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`}function es(t,e){let r=fe(t);return[r,...Zn(r,e)].map(ya).join(" ")}function ts(t,e,{stdio:r="inherit"}={}){let n=et(t,e);if(n.length===0)return;let s=fe(t),i=Bn.sync(s,Zn(s,n),{cwd:t,stdio:r});if(i.error||i.status!==0)throw zn(t,e),i.error||new Error(`${s} dependency installation failed with status ${i.status}. Dependencies were saved; run ${s} install.`)}function Sa(t,e,{install:r=!0,stdio:n="inherit",log:s=console.log}={}){let i=et(t,e);if(i.length===0)return{missing:i,command:null,installed:!1};let o=es(t,i);if(!r)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 ts(t,i,{stdio:n}),{missing:i,command:o,installed:!0}}catch(a){return s(`\u26A0\uFE0F Component dependencies were not installed: ${a.message}
5
5
  Install them with:
6
- ${o}`),{missing:i,command:o,installed:!1,error:a.message}}}function wa(t,e){for(let r=C.resolve(t);;r=C.dirname(r)){if(P.existsSync(C.join(r,"node_modules",e,"package.json")))return!0;if(C.dirname(r)===r)return!1}}function Ra(t,e,{install:r=!0,stdio:n="inherit",log:s=console.log}={}){let i=JSON.parse(P.readFileSync(C.join(t,"package.json"),"utf8"));if(!ze.some(h=>Object.hasOwn(i[h]||{},e))||wa(t,e))return{installed:!1,command:null};let a=ue(t),c=`${a} install`;if(!r)return s(`\u{1F4E6} ${e} is in package.json but not installed. Install it with:
7
- ${c}`),{installed:!1,command:c};s(`\u{1F4E6} Installing ${e}: ${c}`);let u=Vn.sync(a,["install"],{cwd:t,stdio:n});if(!u.error&&u.status===0)return{installed:!0,command:c};let l=u.error?u.error.message:`${a} install failed with status ${u.status}`;return s(`\u26A0\uFE0F ${e} was not installed: ${l}
6
+ ${o}`),{missing:i,command:o,installed:!1,error:a.message}}}function Ta(t,e){for(let r=O.resolve(t);;r=O.dirname(r)){if(k.existsSync(O.join(r,"node_modules",e,"package.json")))return!0;if(O.dirname(r)===r)return!1}}function Na(t,e,{install:r=!0,stdio:n="inherit",log:s=console.log}={}){let i=JSON.parse(k.readFileSync(O.join(t,"package.json"),"utf8"));if(!Yn.some(l=>Object.hasOwn(i[l]||{},e))||Ta(t,e))return{installed:!1,command:null};let a=fe(t),c=`${a} install`;if(!r)return s(`\u{1F4E6} ${e} is in package.json but not installed. Install it with:
7
+ ${c}`),{installed:!1,command:c};s(`\u{1F4E6} Installing ${e}: ${c}`);let u=Bn.sync(a,["install"],{cwd:t,stdio:n});if(!u.error&&u.status===0)return{installed:!0,command:c};let h=u.error?u.error.message:`${a} install failed with status ${u.status}`;return s(`\u26A0\uFE0F ${e} was not installed: ${h}
8
8
  Install it with:
9
- ${c}`),{installed:!1,command:c,error:l}}Qn.exports={cliCommand:Bn,loginCommand:Ea,installDeclaredPackage:Ra,saveNpmDependencies:Yn,installNpmDependencies:Kn,installMissingNpmDependencies:$a,missingNpmDependencies:Ke,npmInstallCommand:zn}});var Ze=m((cl,os)=>{var{fileExists:Ia,readJsonFileSafe:ya,removeFile:Sa,writePrivateJsonFileAtomic:Ta,withPrivateFileLock:Na}=at(),Zn=require("path"),Aa=require("os"),La=require("https"),Ca=require("http"),{URL:q}=require("url"),{DEFAULT_API_URL:k}=V(),{cliCommand:es,loginCommand:Oa}=le(),va=Zn.join(Aa.homedir(),".frontfriend"),G=Zn.join(va,"credentials");function qa(){return G}function fe(){try{return ya(G)}catch{return null}}function ts(t){try{let e=JSON.parse(Buffer.from(String(t).split(".")[1],"base64url").toString("utf8"));return typeof e.email=="string"?e.email:null}catch{return null}}function xa(){let t=fe();if(!t||!t.accessToken)return null;let e=Number(t.refreshExpiresAt)||0;return{email:ts(t.accessToken),apiUrl:t.ffApiUrl||null,expired:e>0&&e<Date.now()}}function rs(t){Ta(G,t)}function Pa(){return Ia(G)?(Sa(G),!0):!1}function Qe(t,e=60*1e3){return!t?.accessToken||!t.expiresAt||Date.now()+e>=t.expiresAt}function j(t,{apiUrl:e,login:r,next:n}={}){let s=n||`Run \`${r||Oa(e)}\` to sign in, then run the command again.`,i=new Error(`${t}. ${s}`);return i.code="FF_AUTH_REFRESH_FAILED",i}function ns(t,e,r){return new Promise((n,s)=>{let i=new q(t);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:"?La:Ca,a=JSON.stringify(e||{}),c=o.request({hostname:i.hostname,port:i.port,path:`${i.pathname}${i.search}`,method:"POST",headers:{"content-type":"application/json","content-length":Buffer.byteLength(a),...r?{authorization:`Bearer ${r}`}:{}}},u=>{let l="";u.on("data",h=>{l+=h}),u.on("end",()=>{if(u.statusCode>=300&&u.statusCode<400){let E=u.headers.location?` to ${u.headers.location}`:"",f=new Error(`HTTP ${u.statusCode}: redirected${E}`);f.statusCode=u.statusCode,f.body=l,s(f);return}let h=null;try{h=l?JSON.parse(l):null}catch{let f=u.headers["content-type"]||"unknown content-type",I=new Error(`Expected JSON from FrontFriend API at ${t}, but received ${f} (HTTP ${u.statusCode}). Check FF_API_URL or pass --api-url with the FrontFriend app URL.`);if(I.statusCode=u.statusCode,I.body=l,u.statusCode>=400){s(I);return}s(I);return}if(u.statusCode>=400){let E=new Error(h?.error_description||h?.error||`HTTP ${u.statusCode}`);E.statusCode=u.statusCode,E.body=h,s(E);return}n(h)})});c.setTimeout(15e3,()=>c.destroy(Object.assign(new Error("Frontfriend API request timed out"),{code:"ETIMEDOUT"}))),c.on("error",s),c.write(a),c.end()})}function ss(t,e){let r=new q(t?.ffApiUrl||k).origin,n=new q(e).origin;return j(`You are signed in to ${r}, but this command uses ${n}`,{login:es(`login --api-url ${n}`)})}async function Fa(t){return Na(G,t,()=>j("Another Frontfriend command is renewing your sign-in",{next:"Wait for it to finish, then run the command again."}))}async function is(t,e=k){return Fa(async()=>{let r=fe();if(r&&new q(r.ffApiUrl||k).origin===new q(e).origin){if(!Qe(r))return r;t=r}return ka(t,e)})}async function ka(t,e=k){if(new q(e).origin!==new q(t.ffApiUrl||k).origin)throw ss(t,e);if(!t?.refreshToken||!t?.deviceId)throw j("Your Frontfriend sign-in has expired",{apiUrl:e});let r;try{r=await ns(`${e}/api/plugin/token`,{grant_type:"refresh_token",refresh_token:t.refreshToken,device_id:t.deviceId})}catch(s){throw Object.assign(j(s?.message?`Could not renew your Frontfriend sign-in (${s.message})`:"Could not renew your Frontfriend sign-in",{apiUrl:e}),{cause:s})}if(!r?.access_token||!r?.refresh_token)throw j("Could not renew your Frontfriend sign-in",{apiUrl:e});let n={accessToken:r.access_token,refreshToken:r.refresh_token,deviceId:r.device_id||t.deviceId,expiresAt:Date.now()+(r.expires_in||900)*1e3,refreshExpiresAt:Date.now()+(r.refresh_expires_in||604800)*1e3,ffApiUrl:e};return rs(n),n}async function Da(t={}){if(t.envToken)return t.envToken;if(!t.skipCredentials){let e=fe();if(e?.accessToken||e?.refreshToken){let r=t.baseURL||e.ffApiUrl||k;if(new q(r).origin!==new q(e.ffApiUrl||k).origin)throw ss(e,r);return e.accessToken&&!Qe(e)?e.accessToken:(await is(e,r)).accessToken}}return t.configuredToken?(t.silent||console.warn(`\u26A0\uFE0F auth-token in frontfriend.config.js is deprecated. Run \`${es("login")}\` to keep your sign-in outside the repository.`),t.configuredToken):null}os.exports={accountEmail:ts,signedInAccount:xa,getCredentialsPath:qa,readCredentials:fe,writeCredentials:rs,deleteCredentials:Pa,isExpired:Qe,postJson:ns,refreshCredentials:is,resolveAuthToken:Da,createAuthRefreshError:j}});var ps=m((al,ds)=>{var{ConfigError:Ua}=Re(),{DEFAULT_API_URL:_a}=V(),{cliCommand:ba,loginCommand:ja}=le(),cs="DESIGN_SYSTEM_REQUIRED",et="DESIGN_SYSTEM_NOT_FOUND",as="DESIGN_SYSTEM_FORBIDDEN",us="DESIGN_SYSTEM_OPERATION_DENIED",Ga=new Set(["TENANT_MISMATCH","RESOURCE_MISMATCH","UNAUTHENTICATED"]);function ls(t){return String(t||_a).replace(/\/+$/,"")}function Ma({apiUrl:t,flagHint:e}){return[` 1. Create a Design System at ${ls(t)} (or open an existing one) and copy its ff-id.`," 2. Connect it to this project:"," npx frontfriend login"," npx frontfriend setup --ff-id <ff-id>",` or add "ff-id": "<ff-id>" to frontfriend.config.js${e?`, ${e}`:""}.`]}function fs({command:t,apiUrl:e,flagHint:r,reportOnly:n=!1}={}){return["\u{1F517} No Design System connected to this project.",` ${t?`\`frontfriend ${t}\` works`:"Frontfriend works"} on a Design System (ff-id), and frontfriend.config.js has none yet.`," Connect one first:",...Ma({apiUrl:e,flagHint:r}),...n?[]:[" Nothing in this project was changed."]]}var he=class extends Ua{constructor({command:e,apiUrl:r,flagHint:n}={}){let s=fs({command:e,apiUrl:r,flagHint:n});super(s.join(`
10
- `),"ff-id"),this.name="DesignSystemRequiredError",this.code=cs,this.command=e,this.lines=s}};function Ha(t,{command:e,apiUrl:r,flagHint:n}={}){if(t&&typeof t.ffId=="string"&&t.ffId.trim())return t.ffId;throw new he({command:e,apiUrl:r,flagHint:n})}function Va(t){if(!t)return null;try{let e=new URL(t),r=e.pathname.match(/\/design-systems\/([^/]+)/);return r?decodeURIComponent(r[1]):e.searchParams.get("ffId")}catch{return null}}function Xa(t){try{return new URL(t).origin}catch{return null}}function Ja(){try{return Ze().signedInAccount()?.email||null}catch{return null}}function hs({ffId:t,apiUrl:e,email:r=Ja()}={}){return["\u{1F512} You don't have access to this design system yet.",` 1. Ask a workspace admin to invite ${r||"the email you sign in with"}.`," 2. Accept the invitation from the email you receive.",` 3. Run \`${ba("init")}\` again.`,` Signed in with another account? Run \`${ja(e)}\` to switch.`,...t?[` Reference for support: ${t}`]:[]]}function Ya(t,{ffId:e,apiUrl:r,email:n}={}){if(!t||typeof t!="object")return null;let s=t.statusCode,i=`${t.message||""} ${t.serverMessage||""}`,o=e||Va(t.url),a=o?`"${o}"`:"configured in frontfriend.config.js",c=ls(r||Xa(t.url));if(s===404&&(t.serverCode===et||/design system not found/i.test(i)))return{code:et,lines:[`\u{1F517} Design System ${a} was not found on ${c}.`," The ff-id in frontfriend.config.js does not match any Design System there."," Copy the ff-id again from the Design System in Frontfriend, or connect another one:"," npx frontfriend setup --ff-id <ff-id>"]};let u=/\/design-systems\/|[?&]ffId=/.test(t.url||"");return s===403&&u&&t.serverCode&&!Ga.has(t.serverCode)?{code:us,lines:[`\u{1F512} Frontfriend denied this operation on Design System ${a}.`,` ${t.serverMessage||"The operation is not allowed."} (${t.serverCode})`," Your login reaches this Design System: check your workspace role and plan, or ask a workspace admin."]}:s===403&&u?{code:as,lines:hs({ffId:o,apiUrl:c,email:n})}:null}ds.exports={DESIGN_SYSTEM_REQUIRED:cs,DESIGN_SYSTEM_NOT_FOUND:et,DESIGN_SYSTEM_FORBIDDEN:as,DESIGN_SYSTEM_OPERATION_DENIED:us,DesignSystemRequiredError:he,missingDesignSystemLines:fs,requireDesignSystem:Ha,describeDesignSystemAccessError:Ya,accessRefusalLines:hs}});var tt=require("https"),rt=require("http"),{URL:H}=require("url"),{DEFAULT_API_URL:Ba,ENV_VARS:de}=V(),{APIError:$}=Re(),{postJson:ms,resolveAuthToken:Wa}=Ze(),{describeDesignSystemAccessError:ul}=ps(),{loginCommand:za}=le(),M=t=>`Authentication required. Run \`${za(t)}\` to sign in, then run the command again.`;function pe(t){let e=new H(t);if(e.username||e.password||e.protocol!=="https:"&&!(e.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(e.hostname)))throw new Error("Frontfriend API URLs require HTTPS except on localhost, without URL credentials");return e}function Es(t,e,r,n,s,i){let o,a=setTimeout(()=>{let l=new $("Frontfriend API request timed out",408,e);i(l),o?.destroy(l)},s);a.unref?.();let c=()=>clearTimeout(a),u=l=>{l.once("end",c),l.once("error",c),l.once("aborted",()=>{c(),i(new $("Frontfriend API response was interrupted",0,e))}),n(l)};try{return o=r?t.get(new H(e),{headers:{authorization:`Bearer ${r}`}},u):t.get(e,u),o.once("error",c),o}catch(l){throw c(),l}}function nt(t,e=""){let r=t.headers?.location||"";return t.statusCode===401||t.statusCode===403||t.statusCode>=300&&t.statusCode<400&&r.includes("/sign-in")||String(e).trim().startsWith("/sign-in")}function me(t,e,r=""){if(nt(t,r)){let c=new $(M(e),t.statusCode,e);if(t.statusCode===403)try{let u=r?JSON.parse(r):null;typeof u?.code=="string"&&(c.serverCode=u.code);let l=u?.error||u?.message;typeof l=="string"&&(c.serverMessage=l)}catch{}return c}let n=t.statusMessage,s,i,o;try{let c=r?JSON.parse(r):null;s=c?.code||c?.error?.code,i=c?.currentVersion,typeof c?.message=="string"&&(o=c.message),typeof c?.error=="string"?n=c.error:typeof c?.error?.message=="string"&&(n=c.error.message);let u=[...Array.isArray(c?.cssErrors||c?.error?.details?.cssErrors)?(c.cssErrors||c.error.details.cssErrors).slice(0,5).map(l=>`${l.property}: ${l.className}`):[],...Array.isArray(c?.schemaErrors||c?.error?.details?.schemaErrors)?(c.schemaErrors||c.error.details.schemaErrors).slice(0,5):[]];u.length>0&&(n=`${n} (${u.join("; ")})`)}catch{}let a=new $(`HTTP ${t.statusCode}: ${n}`,t.statusCode,e);return s&&(a.code=s),i&&(a.currentVersion=i),o&&(a.serverMessage=o),a}var st=class{constructor(e,r={}){if(this.ffId=e,this.baseURL=r.baseURL||process.env[de.FF_API_URL]||Ba,pe(this.baseURL),this.timeoutMs=r.timeoutMs??3e4,this.writeTimeoutMs=r.timeoutMs??18e4,!Number.isFinite(this.timeoutMs)||this.timeoutMs<=0)throw new Error("API timeout must be positive");this.configuredAuthToken=r.authToken||null,this.authToken=null,this.skipCredentials=r.skipCredentials}async getAuthToken(){return process.env[de.FF_MACHINE_TOKEN]?(this.authToken=process.env[de.FF_MACHINE_TOKEN],this.authToken):(this.authToken=await Wa({baseURL:this.baseURL,envToken:process.env[de.FF_AUTH_TOKEN],configuredToken:this.configuredAuthToken,skipCredentials:this.skipCredentials}),this.authToken)}async fetchJson(e,r={}){let n=pe(e),s=await this.getAuthToken();if(s&&n.origin!==new H(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((i,o)=>{let a=e.startsWith("https")?tt:rt;Es(a,e,s,c=>{let u="";if(c.statusCode>=300&&(c.statusCode<400||r.readErrorBody===!1)){c.resume?.(),o(me(c,e));return}c.on("data",l=>{u+=l}),c.on("end",()=>{if(c.statusCode>=300){o(me(c,e,u));return}try{let l=JSON.parse(u);r.returnHeaders?i({data:l,headers:c.headers}):i(l)}catch(l){if(nt(c,u)){o(new $(M(e),c.statusCode,e));return}o(new $(`Invalid JSON response: ${l.message}`,c.statusCode,e))}}),c.on("error",l=>{o(new $(`Response error: ${l.message}`,c.statusCode,e))})},this.timeoutMs,o).on("error",c=>{o(new $(`Network error: ${c.message}`,0,e))})})}async fetchRaw(e){let r=pe(e),n=await this.getAuthToken();if(n&&r.origin!==new H(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((s,i)=>{let o=e.startsWith("https")?tt:rt;Es(o,e,n,a=>{let c="";if(a.statusCode>=300){a.resume?.(),i(me(a,e));return}a.on("data",u=>{c+=u}),a.on("end",()=>{s(c)}),a.on("error",u=>{i(new $(`Response error: ${u.message}`,a.statusCode,e))})},this.timeoutMs,i).on("error",a=>{i(new $(`Network error: ${a.message}`,0,e))})})}async fetchProcessedTokens(e={}){let r=new H(`${this.baseURL}/api/design-systems/${this.ffId}/processed-tokens`);e.tag&&r.searchParams.append("tag",e.tag),e.release&&r.searchParams.append("release",e.release),e.version&&r.searchParams.append("version",e.version),r.searchParams.set("colorFormat","oklch");let n=r.toString(),s=await this.fetchJson(n,{returnHeaders:!0,readErrorBody:!0});return s.headers&&(s.data.versionMetadata={version:s.headers["x-frontfriend-version"],versionId:s.headers["x-frontfriend-version-id"],releaseId:s.headers["x-frontfriend-release-id"],tag:s.headers["x-frontfriend-tag"],cached:s.headers["x-frontfriend-cached"]==="true"}),s.data}async sendJson(e,r,n){let s=pe(e),i=await this.getAuthToken();if(!i)throw new $(M(e),401,e);if(s.origin!==new H(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((o,a)=>{let c,u=()=>clearTimeout(c),l=e.startsWith("https")?tt:rt,h=n===void 0?"":JSON.stringify(n||{}),E=l.request({hostname:s.hostname,port:s.port,path:`${s.pathname}${s.search}`,method:r,headers:{"content-type":"application/json","content-length":Buffer.byteLength(h),...i?{authorization:`Bearer ${i}`}:{}}},f=>{f.once("end",u),f.once("error",v=>{u(),a(new $(`Response error: ${v.message}`,0,e))}),f.once("aborted",()=>{u(),a(new $("Frontfriend API response was interrupted",0,e))});let I="";f.on("data",v=>{I+=v}),f.on("end",()=>{if(f.statusCode>=300){a(me(f,e,I));return}if(!I){o(null);return}try{o(JSON.parse(I))}catch(v){if(nt(f,I)){a(new $(M(e),f.statusCode,e));return}a(new $(`Invalid JSON response: ${v.message}`,f.statusCode,e))}})});c=setTimeout(()=>{let f=new $("Frontfriend API request timed out",408,e);a(f),E.destroy(f)},this.writeTimeoutMs),c.unref?.(),E.on("error",f=>{u(),a(new $(`Network error: ${f.message}`,0,e))}),E.write(h),E.end()})}async pushComponentsConfig(e,r,n,s={}){let i=`${this.baseURL}/api/design-systems/${this.ffId}/components-config`;if(!s.expectedVersionId)throw new $("expectedVersionId is required",0,i);let o={authoredComponentsConfig:e,expectedVersionId:s.expectedVersionId};return typeof r=="string"&&r.length>0&&(o.customCss=r),typeof n=="string"&&n.length>0&&(o.iconLibrary=n),s.themeStudioRecipe&&typeof s.themeStudioRecipe=="object"&&(o.themeStudioRecipe=s.themeStudioRecipe),this.sendJson(i,"PUT",o)}async migrateComponents(e){let r=`${this.baseURL}/api/design-systems/${this.ffId}/migrate`;return this.sendJson(r,"POST",e)}async importShadcn(e){return this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/shadcn/import`,"POST",e)}async fetchCurrentVersionId(e={}){let r=typeof e=="string"?{tag:e}:e,n=r.version?`version=${encodeURIComponent(r.version)}`:r.tag?`tag=${encodeURIComponent(r.tag)}`:"root=true",s=`${this.baseURL}/api/design-systems/${this.ffId}/processed-tokens?${n}`,i=await this.fetchJson(s,{returnHeaders:!0,readErrorBody:!0});this.currentBaseLibrary=i?.data?.baseLibrary||i?.data?.base;let o=i?.headers||{};return o["x-frontfriend-version-id"]||o["X-Frontfriend-Version-Id"]}async listMigrationSnapshots(){let e=`${this.baseURL}/api/design-systems/${this.ffId}/migrate/snapshots`;return this.fetchJson(e)}async getMigrationSnapshot(e){let r=`${this.baseURL}/api/design-systems/${this.ffId}/migrate/snapshots/${e}`;return this.fetchJson(r)}async fetchPlanMetadata(e={}){if(!e.framework||!e.primitive)throw new $("Entitlement lookup requires an explicit Project target.",400);let r=`${this.baseURL}/api/design-systems/${this.ffId}/entitlements?framework=${encodeURIComponent(e.framework)}&primitive=${encodeURIComponent(e.primitive)}`,n=await this.fetchJson(r);if(n?.schemaVersion!==1||!n.canonicalCatalogue)throw new $("Unsupported entitlement response.",502,r);if(n.canonicalCatalogue.unavailable)throw new $("Entitlement policy unavailable.",503,r);return{access:"granted",subscriptionPlan:n.workspace.subscriptionPlan,freshPrivateSelection:n.capabilities?.freshPrivateSelection===!0||n.capabilities?.privateConsumption===!0,canonicalComponents:n.canonicalCatalogue.components,enforceCatalogue:!0,revisionId:n.canonicalCatalogue.revisionId}}async fetchReleaseChannels(){return this.fetchJson(`${this.baseURL}/api/design-systems/${this.ffId}/releases`)}async resolveReleaseTag({reference:e,appName:r,fallback:n}={}){let s=new URLSearchParams(e?{reference:e}:{app:r});return!e&&n&&s.set("fallback",n),this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/workflow?${s}`,"GET")}async resolveContractRelease(e){let r=await this.fetchJson(`${this.baseURL}/api/design-systems/${this.ffId}/releases/${encodeURIComponent(e)}/resolve?runtime=sdk&contracts_only=true`);if(r.contractsOnly!==!0||r.runtime!=="sdk")throw new $("Upgrade the server before adopting contracts without a Project target.",400);return r}async resolveRelease(e,r){if(!r?.framework||!r?.primitive)throw new $("Release resolution requires an explicit Project target.",400);let n=`${this.baseURL}/api/design-systems/${this.ffId}/releases/${encodeURIComponent(e)}/resolve?runtime=sdk&framework=${encodeURIComponent(r.framework)}&primitive=${encodeURIComponent(r.primitive)}`,s=await this.fetchJson(n);if(s.runtime!=="sdk")throw new $("Upgrade the Frontfriend platform before adopting SDK Releases.",400,n);return s}async syncApplicationTarget(e,r={}){let n=await this.getAuthToken();if(!n)throw new $(M(this.baseURL),401);return ms(`${this.baseURL}/api/apps/sync`,{ffId:this.ffId,name:e.name,adopt:e.adopt,runtime:"sdk",releaseTagId:e.releaseTagId,expectedReleaseTagId:e.expectedReleaseTagId,framework:e.framework,primitive:e.primitive,dryRun:!!r.dryRun,contractsOnly:!!e.contractsOnly},n)}async publishPrivateComponent(e){let r=await this.getAuthToken();if(!r)throw new $(M(this.baseURL),401);try{return await ms(`${this.baseURL}/api/design-systems/${this.ffId}/components`,e,r)}catch(n){throw typeof n.body?.code=="string"&&(n.code=n.body.code),typeof n.body?.correlationId=="string"&&(n.correlationId=n.body.correlationId),n}}async authorizeEject(e={}){return this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/eject`,"POST",e)}};module.exports={APIClient:st};
9
+ ${c}`),{installed:!1,command:c,error:h}}rs.exports={cliCommand:Kn,loginCommand:Ra,installDeclaredPackage:Na,saveNpmDependencies:zn,installNpmDependencies:ts,installMissingNpmDependencies:Sa,missingNpmDependencies:et,npmInstallCommand:es,planNpmDependencies:Ia,requirementStatus:le}});var rt=E((hl,ls)=>{var{fileExists:Aa,readJsonFileSafe:La,removeFile:Ca,writePrivateJsonFileAtomic:Oa,withPrivateFileLock:va}=ft(),ns=require("path"),qa=require("os"),xa=require("https"),Pa=require("http"),{URL:x}=require("url"),{DEFAULT_API_URL:F}=H(),{cliCommand:ss,loginCommand:ka}=he(),Fa=ns.join(qa.homedir(),".frontfriend"),G=ns.join(Fa,"credentials");function Da(){return G}function de(){try{return La(G)}catch{return null}}function is(t){try{let e=JSON.parse(Buffer.from(String(t).split(".")[1],"base64url").toString("utf8"));return typeof e.email=="string"?e.email:null}catch{return null}}function Ua(){let t=de();if(!t||!t.accessToken)return null;let e=Number(t.refreshExpiresAt)||0;return{email:is(t.accessToken),apiUrl:t.ffApiUrl||null,expired:e>0&&e<Date.now()}}function os(t){Oa(G,t)}function _a(){return Aa(G)?(Ca(G),!0):!1}function tt(t,e=60*1e3){return!t?.accessToken||!t.expiresAt||Date.now()+e>=t.expiresAt}function j(t,{apiUrl:e,login:r,next:n}={}){let s=n||`Run \`${r||ka(e)}\` to sign in, then run the command again.`,i=new Error(`${t}. ${s}`);return i.code="FF_AUTH_REFRESH_FAILED",i}function cs(t,e,r){return new Promise((n,s)=>{let i=new x(t);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:"?xa:Pa,a=JSON.stringify(e||{}),c=o.request({hostname:i.hostname,port:i.port,path:`${i.pathname}${i.search}`,method:"POST",headers:{"content-type":"application/json","content-length":Buffer.byteLength(a),...r?{authorization:`Bearer ${r}`}:{}}},u=>{let h="";u.on("data",l=>{h+=l}),u.on("end",()=>{if(u.statusCode>=300&&u.statusCode<400){let m=u.headers.location?` to ${u.headers.location}`:"",f=new Error(`HTTP ${u.statusCode}: redirected${m}`);f.statusCode=u.statusCode,f.body=h,s(f);return}let l=null;try{l=h?JSON.parse(h):null}catch{let f=u.headers["content-type"]||"unknown content-type",$=new Error(`Expected JSON from FrontFriend API at ${t}, but received ${f} (HTTP ${u.statusCode}). Check FF_API_URL or pass --api-url with the FrontFriend app URL.`);if($.statusCode=u.statusCode,$.body=h,u.statusCode>=400){s($);return}s($);return}if(u.statusCode>=400){let m=new Error(l?.error_description||l?.error||`HTTP ${u.statusCode}`);m.statusCode=u.statusCode,m.body=l,s(m);return}n(l)})});c.setTimeout(15e3,()=>c.destroy(Object.assign(new Error("Frontfriend API request timed out"),{code:"ETIMEDOUT"}))),c.on("error",s),c.write(a),c.end()})}function as(t,e){let r=new x(t?.ffApiUrl||F).origin,n=new x(e).origin;return j(`You are signed in to ${r}, but this command uses ${n}`,{login:ss(`login --api-url ${n}`)})}async function ba(t){return va(G,t,()=>j("Another Frontfriend command is renewing your sign-in",{next:"Wait for it to finish, then run the command again."}))}async function us(t,e=F){return ba(async()=>{let r=de();if(r&&new x(r.ffApiUrl||F).origin===new x(e).origin){if(!tt(r))return r;t=r}return ja(t,e)})}async function ja(t,e=F){if(new x(e).origin!==new x(t.ffApiUrl||F).origin)throw as(t,e);if(!t?.refreshToken||!t?.deviceId)throw j("Your Frontfriend sign-in has expired",{apiUrl:e});let r;try{r=await cs(`${e}/api/plugin/token`,{grant_type:"refresh_token",refresh_token:t.refreshToken,device_id:t.deviceId})}catch(s){throw Object.assign(j(s?.message?`Could not renew your Frontfriend sign-in (${s.message})`:"Could not renew your Frontfriend sign-in",{apiUrl:e}),{cause:s})}if(!r?.access_token||!r?.refresh_token)throw j("Could not renew your Frontfriend sign-in",{apiUrl:e});let n={accessToken:r.access_token,refreshToken:r.refresh_token,deviceId:r.device_id||t.deviceId,expiresAt:Date.now()+(r.expires_in||900)*1e3,refreshExpiresAt:Date.now()+(r.refresh_expires_in||604800)*1e3,ffApiUrl:e};return os(n),n}async function Ga(t={}){if(t.envToken)return t.envToken;if(!t.skipCredentials){let e=de();if(e?.accessToken||e?.refreshToken){let r=t.baseURL||e.ffApiUrl||F;if(new x(r).origin!==new x(e.ffApiUrl||F).origin)throw as(e,r);return e.accessToken&&!tt(e)?e.accessToken:(await us(e,r)).accessToken}}return t.configuredToken?(t.silent||console.warn(`\u26A0\uFE0F auth-token in frontfriend.config.js is deprecated. Run \`${ss("login")}\` to keep your sign-in outside the repository.`),t.configuredToken):null}ls.exports={accountEmail:is,signedInAccount:Ua,getCredentialsPath:Da,readCredentials:de,writeCredentials:os,deleteCredentials:_a,isExpired:tt,postJson:cs,refreshCredentials:us,resolveAuthToken:Ga,createAuthRefreshError:j}});var $s=E((dl,gs)=>{var{ConfigError:Ma}=ye(),{DEFAULT_API_URL:Va}=H(),{cliCommand:Ha,loginCommand:Xa}=he(),fs="DESIGN_SYSTEM_REQUIRED",nt="DESIGN_SYSTEM_NOT_FOUND",hs="DESIGN_SYSTEM_FORBIDDEN",ds="DESIGN_SYSTEM_OPERATION_DENIED",Ja=new Set(["TENANT_MISMATCH","RESOURCE_MISMATCH","UNAUTHENTICATED"]);function ps(t){return String(t||Va).replace(/\/+$/,"")}function Ba({apiUrl:t,flagHint:e}){return[` 1. Create a Design System at ${ps(t)} (or open an existing one) and copy its ff-id.`," 2. Connect it to this project:"," npx frontfriend login"," npx frontfriend setup --ff-id <ff-id>",` or add "ff-id": "<ff-id>" to frontfriend.config.js${e?`, ${e}`:""}.`]}function ms({command:t,apiUrl:e,flagHint:r,reportOnly:n=!1}={}){return["\u{1F517} No Design System connected to this project.",` ${t?`\`frontfriend ${t}\` works`:"Frontfriend works"} on a Design System (ff-id), and frontfriend.config.js has none yet.`," Connect one first:",...Ba({apiUrl:e,flagHint:r}),...n?[]:[" Nothing in this project was changed."]]}var pe=class extends Ma{constructor({command:e,apiUrl:r,flagHint:n}={}){let s=ms({command:e,apiUrl:r,flagHint:n});super(s.join(`
10
+ `),"ff-id"),this.name="DesignSystemRequiredError",this.code=fs,this.command=e,this.lines=s}};function Ya(t,{command:e,apiUrl:r,flagHint:n}={}){if(t&&typeof t.ffId=="string"&&t.ffId.trim())return t.ffId;throw new pe({command:e,apiUrl:r,flagHint:n})}function Wa(t){if(!t)return null;try{let e=new URL(t),r=e.pathname.match(/\/design-systems\/([^/]+)/);return r?decodeURIComponent(r[1]):e.searchParams.get("ffId")}catch{return null}}function za(t){try{return new URL(t).origin}catch{return null}}function Ka(){try{return rt().signedInAccount()?.email||null}catch{return null}}function Es({ffId:t,apiUrl:e,email:r=Ka()}={}){return["\u{1F512} You don't have access to this design system yet.",` 1. Ask a workspace admin to invite ${r||"the email you sign in with"}.`," 2. Accept the invitation from the email you receive.",` 3. Run \`${Ha("init")}\` again.`,` Signed in with another account? Run \`${Xa(e)}\` to switch.`,...t?[` Reference for support: ${t}`]:[]]}function Qa(t,{ffId:e,apiUrl:r,email:n}={}){if(!t||typeof t!="object")return null;let s=t.statusCode,i=`${t.message||""} ${t.serverMessage||""}`,o=e||Wa(t.url),a=o?`"${o}"`:"configured in frontfriend.config.js",c=ps(r||za(t.url));if(s===404&&(t.serverCode===nt||/design system not found/i.test(i)))return{code:nt,lines:[`\u{1F517} Design System ${a} was not found on ${c}.`," The ff-id in frontfriend.config.js does not match any Design System there."," Copy the ff-id again from the Design System in Frontfriend, or connect another one:"," npx frontfriend setup --ff-id <ff-id>"]};let u=/\/design-systems\/|[?&]ffId=/.test(t.url||"");return s===403&&u&&t.serverCode&&!Ja.has(t.serverCode)?{code:ds,lines:[`\u{1F512} Frontfriend denied this operation on Design System ${a}.`,` ${t.serverMessage||"The operation is not allowed."} (${t.serverCode})`," Your login reaches this Design System: check your workspace role and plan, or ask a workspace admin."]}:s===403&&u?{code:hs,lines:Es({ffId:o,apiUrl:c,email:n})}:null}gs.exports={DESIGN_SYSTEM_REQUIRED:fs,DESIGN_SYSTEM_NOT_FOUND:nt,DESIGN_SYSTEM_FORBIDDEN:hs,DESIGN_SYSTEM_OPERATION_DENIED:ds,DesignSystemRequiredError:pe,missingDesignSystemLines:ms,requireDesignSystem:Ya,describeDesignSystemAccessError:Qa,accessRefusalLines:Es}});var st=require("https"),it=require("http"),{URL:V}=require("url"),{DEFAULT_API_URL:Za,ENV_VARS:me}=H(),{APIError:w}=ye(),{postJson:ws,resolveAuthToken:eu}=rt(),{describeDesignSystemAccessError:pl}=$s(),{loginCommand:tu}=he(),M=t=>`Authentication required. Run \`${tu(t)}\` to sign in, then run the command again.`;function Ee(t){let e=new V(t);if(e.username||e.password||e.protocol!=="https:"&&!(e.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(e.hostname)))throw new Error("Frontfriend API URLs require HTTPS except on localhost, without URL credentials");return e}function Rs(t,e,r,n,s,i){let o,a=setTimeout(()=>{let h=new w("Frontfriend API request timed out",408,e);i(h),o?.destroy(h)},s);a.unref?.();let c=()=>clearTimeout(a),u=h=>{h.once("end",c),h.once("error",c),h.once("aborted",()=>{c(),i(new w("Frontfriend API response was interrupted",0,e))}),n(h)};try{return o=r?t.get(new V(e),{headers:{authorization:`Bearer ${r}`}},u):t.get(e,u),o.once("error",c),o}catch(h){throw c(),h}}function ot(t,e=""){let r=t.headers?.location||"";return t.statusCode===401||t.statusCode===403||t.statusCode>=300&&t.statusCode<400&&r.includes("/sign-in")||String(e).trim().startsWith("/sign-in")}function ge(t,e,r=""){if(ot(t,r)){let c=new w(M(e),t.statusCode,e);if(t.statusCode===403)try{let u=r?JSON.parse(r):null;typeof u?.code=="string"&&(c.serverCode=u.code);let h=u?.error||u?.message;typeof h=="string"&&(c.serverMessage=h)}catch{}return c}let n=t.statusMessage,s,i,o;try{let c=r?JSON.parse(r):null;s=c?.code||c?.error?.code,i=c?.currentVersion,typeof c?.message=="string"&&(o=c.message),typeof c?.error=="string"?n=c.error:typeof c?.error?.message=="string"&&(n=c.error.message);let u=[...Array.isArray(c?.cssErrors||c?.error?.details?.cssErrors)?(c.cssErrors||c.error.details.cssErrors).slice(0,5).map(h=>`${h.property}: ${h.className}`):[],...Array.isArray(c?.schemaErrors||c?.error?.details?.schemaErrors)?(c.schemaErrors||c.error.details.schemaErrors).slice(0,5):[]];u.length>0&&(n=`${n} (${u.join("; ")})`)}catch{}let a=new w(`HTTP ${t.statusCode}: ${n}`,t.statusCode,e);return s&&(a.code=s),i&&(a.currentVersion=i),o&&(a.serverMessage=o),a}var ct=class{constructor(e,r={}){if(this.ffId=e,this.baseURL=r.baseURL||process.env[me.FF_API_URL]||Za,Ee(this.baseURL),this.timeoutMs=r.timeoutMs??3e4,this.writeTimeoutMs=r.timeoutMs??18e4,!Number.isFinite(this.timeoutMs)||this.timeoutMs<=0)throw new Error("API timeout must be positive");this.configuredAuthToken=r.authToken||null,this.authToken=null,this.skipCredentials=r.skipCredentials}async getAuthToken(){return process.env[me.FF_MACHINE_TOKEN]?(this.authToken=process.env[me.FF_MACHINE_TOKEN],this.authToken):(this.authToken=await eu({baseURL:this.baseURL,envToken:process.env[me.FF_AUTH_TOKEN],configuredToken:this.configuredAuthToken,skipCredentials:this.skipCredentials}),this.authToken)}async fetchJson(e,r={}){let n=Ee(e),s=await this.getAuthToken();if(s&&n.origin!==new V(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((i,o)=>{let a=e.startsWith("https")?st:it;Rs(a,e,s,c=>{let u="";if(c.statusCode>=300&&(c.statusCode<400||r.readErrorBody===!1)){c.resume?.(),o(ge(c,e));return}c.on("data",h=>{u+=h}),c.on("end",()=>{if(c.statusCode>=300){o(ge(c,e,u));return}try{let h=JSON.parse(u);r.returnHeaders?i({data:h,headers:c.headers}):i(h)}catch(h){if(ot(c,u)){o(new w(M(e),c.statusCode,e));return}o(new w(`Invalid JSON response: ${h.message}`,c.statusCode,e))}}),c.on("error",h=>{o(new w(`Response error: ${h.message}`,c.statusCode,e))})},this.timeoutMs,o).on("error",c=>{o(new w(`Network error: ${c.message}`,0,e))})})}async fetchRaw(e){let r=Ee(e),n=await this.getAuthToken();if(n&&r.origin!==new V(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((s,i)=>{let o=e.startsWith("https")?st:it;Rs(o,e,n,a=>{let c="";if(a.statusCode>=300){a.resume?.(),i(ge(a,e));return}a.on("data",u=>{c+=u}),a.on("end",()=>{s(c)}),a.on("error",u=>{i(new w(`Response error: ${u.message}`,a.statusCode,e))})},this.timeoutMs,i).on("error",a=>{i(new w(`Network error: ${a.message}`,0,e))})})}async fetchProcessedTokens(e={}){let r=new V(`${this.baseURL}/api/design-systems/${this.ffId}/processed-tokens`);e.tag&&r.searchParams.append("tag",e.tag),e.release&&r.searchParams.append("release",e.release),e.version&&r.searchParams.append("version",e.version),r.searchParams.set("colorFormat","oklch");let n=r.toString(),s=await this.fetchJson(n,{returnHeaders:!0,readErrorBody:!0});return s.headers&&(s.data.versionMetadata={version:s.headers["x-frontfriend-version"],versionId:s.headers["x-frontfriend-version-id"],releaseId:s.headers["x-frontfriend-release-id"],tag:s.headers["x-frontfriend-tag"],cached:s.headers["x-frontfriend-cached"]==="true"}),s.data}async sendJson(e,r,n){let s=Ee(e),i=await this.getAuthToken();if(!i)throw new w(M(e),401,e);if(s.origin!==new V(this.baseURL).origin)throw new Error("Refusing to send Frontfriend credentials to another API origin");return new Promise((o,a)=>{let c,u=()=>clearTimeout(c),h=e.startsWith("https")?st:it,l=n===void 0?"":JSON.stringify(n||{}),m=h.request({hostname:s.hostname,port:s.port,path:`${s.pathname}${s.search}`,method:r,headers:{"content-type":"application/json","content-length":Buffer.byteLength(l),...i?{authorization:`Bearer ${i}`}:{}}},f=>{f.once("end",u),f.once("error",A=>{u(),a(new w(`Response error: ${A.message}`,0,e))}),f.once("aborted",()=>{u(),a(new w("Frontfriend API response was interrupted",0,e))});let $="";f.on("data",A=>{$+=A}),f.on("end",()=>{if(f.statusCode>=300){a(ge(f,e,$));return}if(!$){o(null);return}try{o(JSON.parse($))}catch(A){if(ot(f,$)){a(new w(M(e),f.statusCode,e));return}a(new w(`Invalid JSON response: ${A.message}`,f.statusCode,e))}})});c=setTimeout(()=>{let f=new w("Frontfriend API request timed out",408,e);a(f),m.destroy(f)},this.writeTimeoutMs),c.unref?.(),m.on("error",f=>{u(),a(new w(`Network error: ${f.message}`,0,e))}),m.write(l),m.end()})}async pushComponentsConfig(e,r,n,s={}){let i=`${this.baseURL}/api/design-systems/${this.ffId}/components-config`;if(!s.expectedVersionId)throw new w("expectedVersionId is required",0,i);let o={authoredComponentsConfig:e,expectedVersionId:s.expectedVersionId};return typeof r=="string"&&r.length>0&&(o.customCss=r),typeof n=="string"&&n.length>0&&(o.iconLibrary=n),s.themeStudioRecipe&&typeof s.themeStudioRecipe=="object"&&(o.themeStudioRecipe=s.themeStudioRecipe),this.sendJson(i,"PUT",o)}async migrateComponents(e){let r=`${this.baseURL}/api/design-systems/${this.ffId}/migrate`;return this.sendJson(r,"POST",e)}async importShadcn(e){return this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/shadcn/import`,"POST",e)}async fetchCurrentVersionId(e={}){let r=typeof e=="string"?{tag:e}:e,n=r.version?`version=${encodeURIComponent(r.version)}`:r.tag?`tag=${encodeURIComponent(r.tag)}`:"root=true",s=`${this.baseURL}/api/design-systems/${this.ffId}/processed-tokens?${n}`,i=await this.fetchJson(s,{returnHeaders:!0,readErrorBody:!0});this.currentBaseLibrary=i?.data?.baseLibrary||i?.data?.base;let o=i?.headers||{};return o["x-frontfriend-version-id"]||o["X-Frontfriend-Version-Id"]}async listMigrationSnapshots(){let e=`${this.baseURL}/api/design-systems/${this.ffId}/migrate/snapshots`;return this.fetchJson(e)}async getMigrationSnapshot(e){let r=`${this.baseURL}/api/design-systems/${this.ffId}/migrate/snapshots/${e}`;return this.fetchJson(r)}async fetchPlanMetadata(e={}){if(!e.framework||!e.primitive)throw new w("Entitlement lookup requires an explicit Project target.",400);let r=`${this.baseURL}/api/design-systems/${this.ffId}/entitlements?framework=${encodeURIComponent(e.framework)}&primitive=${encodeURIComponent(e.primitive)}`,n=await this.fetchJson(r);if(n?.schemaVersion!==1||!n.canonicalCatalogue)throw new w("Unsupported entitlement response.",502,r);if(n.canonicalCatalogue.unavailable)throw new w("Entitlement policy unavailable.",503,r);return{access:"granted",subscriptionPlan:n.workspace.subscriptionPlan,freshPrivateSelection:n.capabilities?.freshPrivateSelection===!0||n.capabilities?.privateConsumption===!0,canonicalComponents:n.canonicalCatalogue.components,enforceCatalogue:!0,revisionId:n.canonicalCatalogue.revisionId}}async fetchReleaseChannels(){return this.fetchJson(`${this.baseURL}/api/design-systems/${this.ffId}/releases`)}async resolveReleaseTag({reference:e,appName:r,fallback:n}={}){let s=new URLSearchParams(e?{reference:e}:{app:r});return!e&&n&&s.set("fallback",n),this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/workflow?${s}`,"GET")}async resolveContractRelease(e){let r=await this.fetchJson(`${this.baseURL}/api/design-systems/${this.ffId}/releases/${encodeURIComponent(e)}/resolve?runtime=sdk&contracts_only=true`);if(r.contractsOnly!==!0||r.runtime!=="sdk")throw new w("Upgrade the server before adopting contracts without a Project target.",400);return r}async resolveRelease(e,r){if(!r?.framework||!r?.primitive)throw new w("Release resolution requires an explicit Project target.",400);let n=`${this.baseURL}/api/design-systems/${this.ffId}/releases/${encodeURIComponent(e)}/resolve?runtime=sdk&framework=${encodeURIComponent(r.framework)}&primitive=${encodeURIComponent(r.primitive)}`,s=await this.fetchJson(n);if(s.runtime!=="sdk")throw new w("Upgrade the Frontfriend platform before adopting SDK Releases.",400,n);return s}async syncApplicationTarget(e,r={}){let n=await this.getAuthToken();if(!n)throw new w(M(this.baseURL),401);return ws(`${this.baseURL}/api/apps/sync`,{ffId:this.ffId,name:e.name,adopt:e.adopt,runtime:"sdk",releaseTagId:e.releaseTagId,expectedReleaseTagId:e.expectedReleaseTagId,framework:e.framework,primitive:e.primitive,dryRun:!!r.dryRun,contractsOnly:!!e.contractsOnly},n)}async publishPrivateComponent(e){let r=await this.getAuthToken();if(!r)throw new w(M(this.baseURL),401);try{return await ws(`${this.baseURL}/api/design-systems/${this.ffId}/components`,e,r)}catch(n){throw typeof n.body?.code=="string"&&(n.code=n.body.code),typeof n.body?.correlationId=="string"&&(n.correlationId=n.body.correlationId),n}}async authorizeEject(e={}){return this.sendJson(`${this.baseURL}/api/design-systems/${this.ffId}/eject`,"POST",e)}};module.exports={APIClient:ct};
@@ -1,6 +1,6 @@
1
- var _=Object.create;var m=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var V=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),F=(t,e)=>{for(var r in e)m(t,r,{get:e[r],enumerable:!0})},v=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of L(e))!N.call(t,n)&&n!==r&&m(t,n,{get:()=>e[n],enumerable:!(s=M(e,n))||s.enumerable});return t};var H=(t,e,r)=>(r=t!=null?_($(t)):{},v(e||!t||!t.__esModule?m(r,"default",{value:t,enumerable:!0}):r,t)),J=t=>v(m({},"__esModule",{value:!0}),t);var O=V((ae,P)=>{var u=require("fs"),l=require("path"),{createHash:T}=require("crypto"),G=".frontfriend/design",q=".frontfriend/.gitignore";function W(){return["# Managed by `frontfriend design sync`.","# audit/ holds regenerable capture artifacts (screenshots, probes) \u2014 never commit.","# design/ is the committed read-only contract mirror \u2014 keep it tracked.","audit/","# design-working/ is an explicit, disposable working preview.","design-working/",""].join(`
2
- `)}function f(t){return typeof t!="string"||t.length===0||t.startsWith("/")||t.includes("\\")?!1:t.split("/").every(e=>e!==""&&e!=="."&&e!=="..")}function b(t){let e=t.body.endsWith(`
3
- `)?t.body.slice(0,-1):t.body;return["<!-- frontfriend design mirror \u2014 DO NOT EDIT (overwritten by `frontfriend design sync`)",`slug: ${t.slug}`,`maturity: ${t.maturity}`,`implemented: ${t.implemented}`,`implementation: ${t.implementation||"unknown"}`,`version: ${t.version}`,"-->","",e,""].join(`
4
- `)}function A(t){return[`# Frontfriend design mirror \u2014 ${t.name}`,"","This directory is a READ-ONLY mirror of the Design System design contracts",`(Design System "${t.name}", ff-id \`${t.ff_id}\`) managed on the Frontfriend platform.`,"","Every file here is overwritten by `frontfriend design sync`. Do not edit by","hand: local changes are discarded on the next sync, and files whose contract","was removed upstream are deleted. Edit contracts on the platform instead.",""].join(`
5
- `)}function E({design_system:t,contracts:e}){let r=[...e].filter(n=>f(n.slug)).sort((n,a)=>n.kind.localeCompare(a.kind)||n.slug.localeCompare(a.slug)),s={"README.md":A(t)};for(let n of r)s[n.slug]=b(n);return s}function I(t,e){let r={};for(let[n,a]of Object.entries(t))e[n]!==a&&(r[n]=a);let s=Object.keys(e).filter(n=>!(n in t)).sort();return{writes:r,deletes:s}}var R=t=>T("sha256").update(t).digest("hex");function X(t){return Object.fromEntries(Object.entries(t).filter(([e])=>e!=="README.md"&&f(e)).map(([e,r])=>[e,R(r)]))}function K(t,e){let r=()=>{throw new Error("Invalid or incomplete mirror response. No local files were changed; retry sync.")};(!t||typeof t.design_system?.ff_id!="string"||typeof t.design_system?.name!="string"||!Array.isArray(t.contracts))&&r();let s=new Map;for(let o of t.contracts)(!o||!f(o.slug)||o.slug==="README.md"||typeof o.body!="string"||typeof o.kind!="string"||typeof o.maturity!="string"||typeof o.implemented!="boolean"||!Number.isSafeInteger(o.version)||o.version<1||s.has(o.slug))&&r(),s.set(o.slug,b(o));if(t.protocol===void 0)return t.manifest!==void 0&&r(),I(E(t),e);(t.protocol!==1||!Array.isArray(t.manifest))&&r();let n={"README.md":A(t.design_system)},a=new Set;for(let o of t.manifest){(!o||!f(o.slug)||o.slug==="README.md"||!/^[a-f0-9]{64}$/.test(o.hash)||a.has(o.slug))&&r(),a.add(o.slug);let i=s.get(o.slug)??e[o.slug];(typeof i!="string"||R(i)!==o.hash)&&r(),Object.defineProperty(n,o.slug,{value:i,enumerable:!0})}return[...s.keys()].some(o=>!a.has(o))&&r(),I(n,e)}function Q(t){let e={};if(!u.existsSync(t))return e;let r=s=>{for(let n of u.readdirSync(s,{withFileTypes:!0})){let a=l.join(s,n.name);if(n.isDirectory())r(a);else if(n.isFile()){let o=l.relative(t,a).split(l.sep).join("/");e[o]=u.readFileSync(a,"utf8")}}};return r(t),e}function Y(t,e){for(let[r,s]of Object.entries(e.writes)){let n=l.join(t,...r.split("/"));u.mkdirSync(l.dirname(n),{recursive:!0}),u.writeFileSync(n,s)}for(let r of e.deletes){let s=l.join(t,...r.split("/"));u.rmSync(s,{force:!0});let n=l.dirname(s),a=l.resolve(t);for(;l.resolve(n)!==a&&u.existsSync(n)&&u.readdirSync(n).length===0;)u.rmdirSync(n),n=l.dirname(n)}}function B(t,e,r){if(!e||t.contract_selection!==1||t.selection?.design_snapshot_id!==e.snapshotId||t.selection?.digest!==e.snapshotDigest||t.app?.id!==e.appId||t.design_system?.ff_id!==r)throw new Error("Contract mirror does not match the selected App snapshot.");let s=[...e.sharedContracts,...e.contracts],n=t.manifest??t.contracts,a=new Map(s.map(o=>[o.slug,o]));if(!Array.isArray(n)||!Array.isArray(t.contracts)||n.length!==s.length||new Set(n.map(o=>o.slug)).size!==s.length||n.some(o=>!a.has(o.slug)))throw new Error("Contract mirror inventory does not match the snapshot.");for(let o of t.contracts){let i=a.get(o.slug);if(!i||o.revision_id!==i.revisionId||o.digest!==i.digest||o.version!==i.version||o.kind!==i.kind)throw new Error("Contract body identity does not match its snapshot pin.");let p={appId:e.contracts.some(d=>d.slug===i.slug)?e.appId:null,body:o.body,designSystemId:e.designSystemId,kind:o.kind,maturity:o.maturity,slug:o.slug,title:o.title};if(T("sha256").update(JSON.stringify(p)).digest("hex")!==i.digest)throw new Error("Contract content does not match its immutable digest.")}return s}P.exports={validatePinnedMirror:B,MIRROR_DIR:G,FRONTFRIEND_GITIGNORE_PATH:q,renderFrontfriendGitignore:W,isSafeSlug:f,renderContractFile:b,renderMirrorReadme:A,buildMirrorTree:E,planMirrorSync:I,hashMirrorFile:R,knownMirrorHashes:X,planMirrorResponse:K,readMirrorTree:Q,applyMirrorPlan:Y}});var ne={};F(ne,{adoptionDigest:()=>x,normalizeLock:()=>j,parseApplicationLock:()=>ee,serializeApplicationLock:()=>te,sortedObject:()=>C});module.exports=J(ne);var z=Object.freeze([Object.freeze({framework:"react",primitive:"radix"}),Object.freeze({framework:"react",primitive:"base"}),Object.freeze({framework:"react",primitive:"aria"}),Object.freeze({framework:"vue",primitive:"reka"})]),U=new Set(z.map(t=>`${t.framework}/${t.primitive}`)),w=class extends Error{constructor(e,r,s={}){super(r),this.name="ProjectTargetError",this.code=e,Object.assign(this,s)}};function h(t,e="Project target"){let r=t,s=typeof r?.framework=="string"?r.framework.trim().toLowerCase():"",n=typeof r?.primitive=="string"?r.primitive.trim().toLowerCase():"",a=`${s}/${n}`;if(!s||!n||!U.has(a))throw new w("INVALID_PROJECT_TARGET",`${e} must be exactly one of react/radix, react/base, react/aria, or vue/reka; received ${a}.`,{framework:s||null,primitive:n||null});return{framework:s,primitive:n}}var c=class extends Error{constructor(r,s=[]){super(r);this.code="ADOPTION_CONFLICT";this.name="AdoptionConflictError",this.conflicts=s}};var S=H(require("node:crypto"));function k(t){return S.default.createHash("sha256").update(Buffer.from(t)).digest("hex")}var{isSafeSlug:Z}=O();function C(t){return Object.fromEntries(Object.entries(t).sort(([e],[r])=>e.localeCompare(r)).map(([e,r])=>[e,r&&typeof r=="object"&&!Array.isArray(r)?{...r,...Array.isArray(r.files)?{files:[...r.files].sort((s,n)=>s.path.localeCompare(n.path))}:{}}:r]))}function y(t){return Array.isArray(t)?t.map(y):t&&typeof t=="object"?Object.fromEntries(Object.keys(t).filter(e=>e!=="adoptionDigest").sort().map(e=>[e,y(t[e])])):t}function x(t){return k(JSON.stringify(y(t)))}function j(t){let e=t;if(!e||![1,2,3].includes(Number(e.schemaVersion))||typeof e.components!="object"||e.components===null)throw new c("Unsupported or malformed frontfriend.lock.json.");let r=Object.fromEntries(Object.entries(e.components).map(([i,p])=>{let g=p;if(!g||!["canonical","private"].includes(String(g.source))||typeof g.versionId!="string"||typeof g.semver!="string")throw new c(`Unsupported source kind for ${i}.`);return[i,g]})),s={releaseId:e.releaseId==null?null:String(e.releaseId),tokenVersionId:String(e.tokenVersionId),projectTarget:e.schemaVersion===3&&e.projectTarget===null&&Object.keys(r).length===0?null:h(e.projectTarget,"Application lock target"),components:r};for(let i of Object.values(r)){if(!i.projectTarget)continue;let p=h(i.projectTarget,"Component adoption target");if(!s.projectTarget||p.framework!==s.projectTarget.framework||p.primitive!==s.projectTarget.primitive)throw new c("Component adoption belongs to another Project target.")}if(e.schemaVersion===1)return{...s,projectTarget:h(e.projectTarget,"Application lock target"),schemaVersion:1,components:r};if(typeof e.designSystemId!="string"||!e.designSystemId||typeof e.ffId!="string"||!e.ffId||typeof e.adoptionDigest!="string"||!e.adoptionDigest||typeof e.tokenSourceReleaseId!="string"||!e.tokenSourceReleaseId||!Array.isArray(e.sourceReleaseIds))throw new c("Malformed v2 Frontfriend adoption snapshot.");let n={...s,schemaVersion:e.schemaVersion===3?3:2,...e.schemaVersion===3?{design:e.design}:{},designSystemId:e.designSystemId,ffId:e.ffId,...e.baseLibrary!==void 0?{baseLibrary:e.baseLibrary}:{},...e.baseProvenance!==void 0?{baseProvenance:e.baseProvenance}:{},...e.replacements!==void 0?{replacements:e.replacements}:{},adoptionDigest:e.adoptionDigest,tokenSourceReleaseId:e.tokenSourceReleaseId,sourceReleaseIds:[...new Set(e.sourceReleaseIds.map(String))].sort(),components:r};if(n.baseLibrary!==void 0&&!["frontfriend","shadcn"].includes(n.baseLibrary))throw new c("Unsupported base library in Application lock.");if(n.schemaVersion===3){let i=n.design;if(!i||i.designSystemId!==n.designSystemId||!i.appId||!i.snapshotId||!i.sharedSourceReleaseId||!Array.isArray(i.contracts)||!Array.isArray(i.sharedContracts))throw new c("Malformed Application design adoption.");let p=[...i.sharedContracts,...i.contracts];if(new Set(p.map(d=>d.slug)).size!==p.length||p.some(d=>d.designSystemId!==n.designSystemId||!d.revisionId||!d.contractId||!Z(d.slug)||!d.slug.endsWith(".md")||!Number.isInteger(d.version)||d.version<1||!/^[a-f0-9]{64}$/.test(d.digest)))throw new c("Invalid contract revision pins in the Application lock.");if(i.sharedContracts.some(d=>!["guidelines","design-context","guideline-chapter","layout","pattern"].includes(d.kind))||i.contracts.some(d=>!["app-context","page"].includes(d.kind)))throw new c("Contract pins have invalid shared or App ownership.");if(k(JSON.stringify(y({schemaVersion:1,appId:i.appId,sharedSourceReleaseId:i.sharedSourceReleaseId,contracts:[...i.contracts].sort((d,D)=>d.slug.localeCompare(D.slug))})))!==i.snapshotDigest)throw new c("Application design snapshot digest does not match its manifest.")}else if(e.design!==void 0)throw new c("Contract pins require a schema version 3 Application lock.");let a=Object.values(n.components).map(i=>{if(typeof i.sourceReleaseId!="string"||!i.sourceReleaseId)throw new c("Every v2 component adoption must identify its immutable source Release.");return i.sourceReleaseId}),o=[...new Set([n.tokenSourceReleaseId,...a,...n.design?[n.design.sharedSourceReleaseId]:[]])].sort();if(JSON.stringify(o)!==JSON.stringify(n.sourceReleaseIds))throw new c("The adoption source Releases do not match the token and component provenance.");if(n.releaseId&&(o.length!==1||o[0]!==n.releaseId))throw new c("A lock may reference a Release only when its complete closure matches that Release.");if(x(n)!==n.adoptionDigest)throw new c("The adoption snapshot digest does not match its manifest.");return n}function ee(t){try{return j(typeof t=="string"?JSON.parse(t):t)}catch(e){throw e instanceof c?e:new c(`Invalid frontfriend.lock.json: ${e instanceof Error?e.message:String(e)}`)}}function te(t){let e=j(t);return`${JSON.stringify({...e,components:C(e.components)},null,2)}
6
- `}0&&(module.exports={adoptionDigest,normalizeLock,parseApplicationLock,serializeApplicationLock,sortedObject});
1
+ var V=Object.create;var h=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),G=(e,t)=>{for(var n in t)h(e,n,{get:t[n],enumerable:!0})},E=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of H(t))!z.call(e,r)&&r!==n&&h(e,r,{get:()=>t[r],enumerable:!(s=F(t,r))||s.enumerable});return e};var q=(e,t,n)=>(n=e!=null?V(J(e)):{},E(t||!e||!e.__esModule?h(n,"default",{value:e,enumerable:!0}):n,e)),W=e=>E(h({},"__esModule",{value:!0}),e);var C=U((fe,P)=>{var g=require("fs"),l=require("path"),{createHash:D}=require("crypto"),Q=".frontfriend/design",Y=".frontfriend/.gitignore";function B(){return["# Managed by `frontfriend design sync`.","# audit/ holds regenerable capture artifacts (screenshots, probes) \u2014 never commit.","# design/ is the committed read-only contract mirror \u2014 keep it tracked.","audit/","# design-working/ is an explicit, disposable working preview.","design-working/",""].join(`
2
+ `)}function f(e){return typeof e!="string"||e.length===0||e.startsWith("/")||e.includes("\\")?!1:e.split("/").every(t=>t!==""&&t!=="."&&t!=="..")}function b(e){let t=e.body.endsWith(`
3
+ `)?e.body.slice(0,-1):e.body;return["<!-- frontfriend design mirror \u2014 DO NOT EDIT (overwritten by `frontfriend design sync`)",`slug: ${e.slug}`,`maturity: ${e.maturity}`,`implemented: ${e.implemented}`,`implementation: ${e.implementation||"unknown"}`,`version: ${e.version}`,"-->","",t,""].join(`
4
+ `)}function R(e){return[`# Frontfriend design mirror \u2014 ${e.name}`,"","This directory is a READ-ONLY mirror of the Design System design contracts",`(Design System "${e.name}", ff-id \`${e.ff_id}\`) managed on the Frontfriend platform.`,"","Every file here is overwritten by `frontfriend design sync`. Do not edit by","hand: local changes are discarded on the next sync, and files whose contract","was removed upstream are deleted. Edit contracts on the platform instead.",""].join(`
5
+ `)}function O({design_system:e,contracts:t}){let n=[...t].filter(r=>f(r.slug)).sort((r,a)=>r.kind.localeCompare(a.kind)||r.slug.localeCompare(a.slug)),s={"README.md":R(e)};for(let r of n)s[r.slug]=b(r);return s}function I(e,t){let n={};for(let[r,a]of Object.entries(e))t[r]!==a&&(n[r]=a);let s=Object.keys(t).filter(r=>!(r in e)).sort();return{writes:n,deletes:s}}var j=e=>D("sha256").update(e).digest("hex");function Z(e){return Object.fromEntries(Object.entries(e).filter(([t])=>t!=="README.md"&&f(t)).map(([t,n])=>[t,j(n)]))}function ee(e,t){let n=()=>{throw new Error("Invalid or incomplete mirror response. No local files were changed; retry sync.")};(!e||typeof e.design_system?.ff_id!="string"||typeof e.design_system?.name!="string"||!Array.isArray(e.contracts))&&n();let s=new Map;for(let o of e.contracts)(!o||!f(o.slug)||o.slug==="README.md"||typeof o.body!="string"||typeof o.kind!="string"||typeof o.maturity!="string"||typeof o.implemented!="boolean"||!Number.isSafeInteger(o.version)||o.version<1||s.has(o.slug))&&n(),s.set(o.slug,b(o));if(e.protocol===void 0)return e.manifest!==void 0&&n(),I(O(e),t);(e.protocol!==1||!Array.isArray(e.manifest))&&n();let r={"README.md":R(e.design_system)},a=new Set;for(let o of e.manifest){(!o||!f(o.slug)||o.slug==="README.md"||!/^[a-f0-9]{64}$/.test(o.hash)||a.has(o.slug))&&n(),a.add(o.slug);let i=s.get(o.slug)??t[o.slug];(typeof i!="string"||j(i)!==o.hash)&&n(),Object.defineProperty(r,o.slug,{value:i,enumerable:!0})}return[...s.keys()].some(o=>!a.has(o))&&n(),I(r,t)}function te(e){let t={};if(!g.existsSync(e))return t;let n=s=>{for(let r of g.readdirSync(s,{withFileTypes:!0})){let a=l.join(s,r.name);if(r.isDirectory())n(a);else if(r.isFile()){let o=l.relative(e,a).split(l.sep).join("/");t[o]=g.readFileSync(a,"utf8")}}};return n(e),t}function ne(e,t){for(let[n,s]of Object.entries(t.writes)){let r=l.join(e,...n.split("/"));g.mkdirSync(l.dirname(r),{recursive:!0}),g.writeFileSync(r,s)}for(let n of t.deletes){let s=l.join(e,...n.split("/"));g.rmSync(s,{force:!0});let r=l.dirname(s),a=l.resolve(e);for(;l.resolve(r)!==a&&g.existsSync(r)&&g.readdirSync(r).length===0;)g.rmdirSync(r),r=l.dirname(r)}}function re(e,t,n){if(!t||e.contract_selection!==1||e.selection?.design_snapshot_id!==t.snapshotId||e.selection?.digest!==t.snapshotDigest||e.app?.id!==t.appId||e.design_system?.ff_id!==n)throw new Error("Contract mirror does not match the selected App snapshot.");let s=[...t.sharedContracts,...t.contracts],r=e.manifest??e.contracts,a=new Map(s.map(o=>[o.slug,o]));if(!Array.isArray(r)||!Array.isArray(e.contracts)||r.length!==s.length||new Set(r.map(o=>o.slug)).size!==s.length||r.some(o=>!a.has(o.slug)))throw new Error("Contract mirror inventory does not match the snapshot.");for(let o of e.contracts){let i=a.get(o.slug);if(!i||o.revision_id!==i.revisionId||o.digest!==i.digest||o.version!==i.version||o.kind!==i.kind)throw new Error("Contract body identity does not match its snapshot pin.");let p={appId:t.contracts.some(d=>d.slug===i.slug)?t.appId:null,body:o.body,designSystemId:t.designSystemId,kind:o.kind,maturity:o.maturity,slug:o.slug,title:o.title};if(D("sha256").update(JSON.stringify(p)).digest("hex")!==i.digest)throw new Error("Contract content does not match its immutable digest.")}return s}P.exports={validatePinnedMirror:re,MIRROR_DIR:Q,FRONTFRIEND_GITIGNORE_PATH:Y,renderFrontfriendGitignore:B,isSafeSlug:f,renderContractFile:b,renderMirrorReadme:R,buildMirrorTree:O,planMirrorSync:I,hashMirrorFile:j,knownMirrorHashes:Z,planMirrorResponse:ee,readMirrorTree:te,applyMirrorPlan:ne}});var de={};G(de,{adoptionDigest:()=>k,canonicalApplicationLock:()=>M,canonicalDesignAdoption:()=>_,hasValidAdoptionDigest:()=>$,normalizeLock:()=>v,parseApplicationLock:()=>ae,sameAdoption:()=>ie,serializeApplicationLock:()=>ce,sortContractPins:()=>S,sortedObject:()=>L});module.exports=W(de);var X=Object.freeze([Object.freeze({framework:"react",primitive:"radix"}),Object.freeze({framework:"react",primitive:"base"}),Object.freeze({framework:"react",primitive:"aria"}),Object.freeze({framework:"vue",primitive:"reka"})]),K=new Set(X.map(e=>`${e.framework}/${e.primitive}`)),A=class extends Error{constructor(t,n,s={}){super(n),this.name="ProjectTargetError",this.code=t,Object.assign(this,s)}};function y(e,t="Project target"){let n=e,s=typeof n?.framework=="string"?n.framework.trim().toLowerCase():"",r=typeof n?.primitive=="string"?n.primitive.trim().toLowerCase():"",a=`${s}/${r}`;if(!s||!r||!K.has(a))throw new A("INVALID_PROJECT_TARGET",`${t} must be exactly one of react/radix, react/base, react/aria, or vue/reka; received ${a}.`,{framework:s||null,primitive:r||null});return{framework:s,primitive:r}}var c=class extends Error{constructor(n,s=[]){super(n);this.code="ADOPTION_CONFLICT";this.name="AdoptionConflictError",this.conflicts=s}};var x=q(require("node:crypto"));function w(e){return x.default.createHash("sha256").update(Buffer.from(e)).digest("hex")}var{isSafeSlug:oe}=C();function L(e){return Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,n&&typeof n=="object"&&!Array.isArray(n)?{...n,...Array.isArray(n.files)?{files:[...n.files].sort((s,r)=>s.path.localeCompare(r.path))}:{}}:n]))}function m(e){return Array.isArray(e)?e.map(m):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).filter(t=>t!=="adoptionDigest").sort().map(t=>[t,m(e[t])])):e}var T=(e,t)=>e<t?-1:e>t?1:0;function S(e){return[...e].sort((t,n)=>T(t.slug,n.slug)||T(t.kind,n.kind))}function _(e){return{...e,contracts:S(e.contracts),sharedContracts:S(e.sharedContracts)}}function M(e){return{...e,...e.design?{design:_(e.design)}:{},...Array.isArray(e.sourceReleaseIds)?{sourceReleaseIds:[...new Set(e.sourceReleaseIds)].sort(T)}:{},...e.components?{components:Object.fromEntries(Object.entries(e.components).map(([t,n])=>[t,Array.isArray(n?.files)?{...n,files:[...n.files].sort((s,r)=>s.path.localeCompare(r.path))}:n]))}:{}}}function k(e){return w(JSON.stringify(m(M(e))))}function se(e){return w(JSON.stringify(m(e)))}function $(e){return typeof e.adoptionDigest=="string"&&(k(e)===e.adoptionDigest||se(e)===e.adoptionDigest)}function ie(e,t){return k(e)===k(t)}function v(e){let t=e;if(!t||![1,2,3].includes(Number(t.schemaVersion))||typeof t.components!="object"||t.components===null)throw new c("Unsupported or malformed frontfriend.lock.json.");let n=Object.fromEntries(Object.entries(t.components).map(([i,p])=>{let u=p;if(!u||!["canonical","private"].includes(String(u.source))||typeof u.versionId!="string"||typeof u.semver!="string")throw new c(`Unsupported source kind for ${i}.`);return[i,u]})),s={releaseId:t.releaseId==null?null:String(t.releaseId),tokenVersionId:String(t.tokenVersionId),projectTarget:t.schemaVersion===3&&t.projectTarget===null&&Object.keys(n).length===0?null:y(t.projectTarget,"Application lock target"),components:n};for(let i of Object.values(n)){if(!i.projectTarget)continue;let p=y(i.projectTarget,"Component adoption target");if(!s.projectTarget||p.framework!==s.projectTarget.framework||p.primitive!==s.projectTarget.primitive)throw new c("Component adoption belongs to another Project target.")}if(t.schemaVersion===1)return{...s,projectTarget:y(t.projectTarget,"Application lock target"),schemaVersion:1,components:n};if(typeof t.designSystemId!="string"||!t.designSystemId||typeof t.ffId!="string"||!t.ffId||typeof t.adoptionDigest!="string"||!t.adoptionDigest||typeof t.tokenSourceReleaseId!="string"||!t.tokenSourceReleaseId||!Array.isArray(t.sourceReleaseIds))throw new c("Malformed v2 Frontfriend adoption snapshot.");let r={...s,schemaVersion:t.schemaVersion===3?3:2,...t.schemaVersion===3?{design:t.design}:{},designSystemId:t.designSystemId,ffId:t.ffId,...t.baseLibrary!==void 0?{baseLibrary:t.baseLibrary}:{},...t.baseProvenance!==void 0?{baseProvenance:t.baseProvenance}:{},...t.replacements!==void 0?{replacements:t.replacements}:{},adoptionDigest:t.adoptionDigest,tokenSourceReleaseId:t.tokenSourceReleaseId,sourceReleaseIds:[...new Set(t.sourceReleaseIds.map(String))].sort(),components:n};if(r.baseLibrary!==void 0&&!["frontfriend","shadcn"].includes(r.baseLibrary))throw new c("Unsupported base library in Application lock.");if(r.schemaVersion===3){let i=r.design;if(!i||i.designSystemId!==r.designSystemId||!i.appId||!i.snapshotId||!i.sharedSourceReleaseId||!Array.isArray(i.contracts)||!Array.isArray(i.sharedContracts))throw new c("Malformed Application design adoption.");let p=[...i.sharedContracts,...i.contracts];if(new Set(p.map(d=>d.slug)).size!==p.length||p.some(d=>d.designSystemId!==r.designSystemId||!d.revisionId||!d.contractId||!oe(d.slug)||!d.slug.endsWith(".md")||!Number.isInteger(d.version)||d.version<1||!/^[a-f0-9]{64}$/.test(d.digest)))throw new c("Invalid contract revision pins in the Application lock.");if(i.sharedContracts.some(d=>!["guidelines","design-context","guideline-chapter","layout","pattern"].includes(d.kind))||i.contracts.some(d=>!["app-context","page"].includes(d.kind)))throw new c("Contract pins have invalid shared or App ownership.");if(w(JSON.stringify(m({schemaVersion:1,appId:i.appId,sharedSourceReleaseId:i.sharedSourceReleaseId,contracts:[...i.contracts].sort((d,N)=>d.slug.localeCompare(N.slug))})))!==i.snapshotDigest)throw new c("Application design snapshot digest does not match its manifest.")}else if(t.design!==void 0)throw new c("Contract pins require a schema version 3 Application lock.");let a=Object.values(r.components).map(i=>{if(typeof i.sourceReleaseId!="string"||!i.sourceReleaseId)throw new c("Every v2 component adoption must identify its immutable source Release.");return i.sourceReleaseId}),o=[...new Set([r.tokenSourceReleaseId,...a,...r.design?[r.design.sharedSourceReleaseId]:[]])].sort();if(JSON.stringify(o)!==JSON.stringify(r.sourceReleaseIds))throw new c("The adoption source Releases do not match the token and component provenance.");if(r.releaseId&&(o.length!==1||o[0]!==r.releaseId))throw new c("A lock may reference a Release only when its complete closure matches that Release.");if(!$(r))throw new c("The adoption snapshot digest does not match its manifest.");return r}function ae(e){try{return v(typeof e=="string"?JSON.parse(e):e)}catch(t){throw t instanceof c?t:new c(`Invalid frontfriend.lock.json: ${t instanceof Error?t.message:String(t)}`)}}function ce(e){let t=v(e);return`${JSON.stringify({...t,components:L(t.components)},null,2)}
6
+ `}0&&(module.exports={adoptionDigest,canonicalApplicationLock,canonicalDesignAdoption,hasValidAdoptionDigest,normalizeLock,parseApplicationLock,sameAdoption,serializeApplicationLock,sortContractPins,sortedObject});