@photon-ai/cli 2.1.0 → 2.3.0-staging.42193655517.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/photon.js +74 -74
- package/package.json +3 -2
package/dist/photon.js
CHANGED
|
@@ -1,90 +1,90 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as O4}from"node:module";var R4=Object.create;var{getPrototypeOf:L4,defineProperty:N1,getOwnPropertyNames:f4}=Object;var S4=Object.prototype.hasOwnProperty;function _4(D){return this[D]}var k4,P4,ID=(D,F,B)=>{var E=D!=null&&typeof D==="object";if(E){var Z=F?k4??=new WeakMap:P4??=new WeakMap,J=Z.get(D);if(J)return J}B=D!=null?R4(L4(D)):{};let Y=F||!D||!D.__esModule?N1(B,"default",{value:D,enumerable:!0}):B;for(let H of f4(D))if(!S4.call(Y,H))N1(Y,H,{get:_4.bind(D,H),enumerable:!0});if(E)Z.set(D,Y);return Y};var w=(D,F)=>()=>(F||D((F={exports:{}}).exports,F),F.exports);var hD=O4(import.meta.url);var L0=w((fZ,V1)=>{var v2=[],M1=0,e=(D,F)=>{if(M1>=F)v2.push(D)};e.WARN=1;e.INFO=2;e.DEBUG=3;e.reset=()=>{v2=[]};e.setDebugLevel=(D)=>{M1=D};e.warn=(D)=>e(D,e.WARN);e.info=(D)=>e(D,e.INFO);e.debug=(D)=>e(D,e.DEBUG);e.debugMessages=()=>v2;V1.exports=e});var j1=w((SZ,A1)=>{A1.exports=({onlyFirst:D=!1}={})=>{let F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(F,D?void 0:"g")}});var I1=w((_Z,T1)=>{var y4=j1();T1.exports=(D)=>typeof D==="string"?D.replace(y4(),""):D});var L1=w((kZ,h2)=>{var R1=(D)=>{if(Number.isNaN(D))return!1;if(D>=4352&&(D<=4447||D===9001||D===9002||11904<=D&&D<=12871&&D!==12351||12880<=D&&D<=19903||19968<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65131||65281<=D&&D<=65376||65504<=D&&D<=65510||110592<=D&&D<=110593||127488<=D&&D<=127569||131072<=D&&D<=262141))return!0;return!1};h2.exports=R1;h2.exports.default=R1});var S1=w((PZ,f1)=>{f1.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var k1=w((OZ,g2)=>{var w4=I1(),x4=L1(),b4=S1(),_1=(D)=>{if(typeof D!=="string"||D.length===0)return 0;if(D=w4(D),D.length===0)return 0;D=D.replace(b4()," ");let F=0;for(let B=0;B<D.length;B++){let E=D.codePointAt(B);if(E<=31||E>=127&&E<=159)continue;if(E>=768&&E<=879)continue;if(E>65535)B++;F+=x4(E)?2:1}return F};g2.exports=_1;g2.exports.default=_1});var m2=w((yZ,w1)=>{var P1=k1();function f0(D){return D?/\u001b\[((?:\d*;){0,5}\d*)m/g:/\u001b\[(?:\d*;){0,5}\d*m/g}function MD(D){let F=f0();return(""+D).replace(F,"").split(`
|
|
3
|
-
`).reduce(function(
|
|
4
|
-
`);let
|
|
5
|
-
`)!=-1,
|
|
6
|
-
`))}wrapLines(D){let F=
|
|
2
|
+
import{createRequire as x4}from"node:module";var S4=Object.create;var{getPrototypeOf:_4,defineProperty:V1,getOwnPropertyNames:k4}=Object;var f4=Object.prototype.hasOwnProperty;function O4(D){return this[D]}var P4,y4,ID=(D,F,B)=>{var Z=D!=null&&typeof D==="object";if(Z){var E=F?P4??=new WeakMap:y4??=new WeakMap,Y=E.get(D);if(Y)return Y}B=D!=null?S4(_4(D)):{};let J=F||!D||!D.__esModule?V1(B,"default",{value:D,enumerable:!0}):B;for(let X of k4(D))if(!f4.call(J,X))V1(J,X,{get:O4.bind(D,X),enumerable:!0});if(Z)E.set(D,J);return J};var x=(D,F)=>()=>(F||D((F={exports:{}}).exports,F),F.exports);var hD=x4(import.meta.url);var R0=x((vE,A1)=>{var v2=[],u1=0,e=(D,F)=>{if(u1>=F)v2.push(D)};e.WARN=1;e.INFO=2;e.DEBUG=3;e.reset=()=>{v2=[]};e.setDebugLevel=(D)=>{u1=D};e.warn=(D)=>e(D,e.WARN);e.info=(D)=>e(D,e.INFO);e.debug=(D)=>e(D,e.DEBUG);e.debugMessages=()=>v2;A1.exports=e});var T1=x((hE,j1)=>{j1.exports=({onlyFirst:D=!1}={})=>{let F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(F,D?void 0:"g")}});var L1=x((gE,I1)=>{var w4=T1();I1.exports=(D)=>typeof D==="string"?D.replace(w4(),""):D});var S1=x((mE,h2)=>{var R1=(D)=>{if(Number.isNaN(D))return!1;if(D>=4352&&(D<=4447||D===9001||D===9002||11904<=D&&D<=12871&&D!==12351||12880<=D&&D<=19903||19968<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65131||65281<=D&&D<=65376||65504<=D&&D<=65510||110592<=D&&D<=110593||127488<=D&&D<=127569||131072<=D&&D<=262141))return!0;return!1};h2.exports=R1;h2.exports.default=R1});var k1=x((cE,_1)=>{_1.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var O1=x((dE,g2)=>{var b4=L1(),v4=S1(),h4=k1(),f1=(D)=>{if(typeof D!=="string"||D.length===0)return 0;if(D=b4(D),D.length===0)return 0;D=D.replace(h4()," ");let F=0;for(let B=0;B<D.length;B++){let Z=D.codePointAt(B);if(Z<=31||Z>=127&&Z<=159)continue;if(Z>=768&&Z<=879)continue;if(Z>65535)B++;F+=v4(Z)?2:1}return F};g2.exports=f1;g2.exports.default=f1});var m2=x((lE,w1)=>{var P1=O1();function S0(D){return D?/\u001b\[((?:\d*;){0,5}\d*)m/g:/\u001b\[(?:\d*;){0,5}\d*m/g}function VD(D){let F=S0();return(""+D).replace(F,"").split(`
|
|
3
|
+
`).reduce(function(E,Y){return P1(Y)>E?P1(Y):E},0)}function J0(D,F){return Array(F+1).join(D)}function g4(D,F,B,Z){let E=VD(D);if(F+1>=E){let Y=F-E;switch(Z){case"right":{D=J0(B,Y)+D;break}case"center":{let J=Math.ceil(Y/2),X=Y-J;D=J0(B,X)+D+J0(B,J);break}default:{D=D+J0(B,Y);break}}}return D}var rD={};function X0(D,F,B){F="\x1B["+F+"m",B="\x1B["+B+"m",rD[F]={set:D,to:!0},rD[B]={set:D,to:!1},rD[D]={on:F,off:B}}X0("bold",1,22);X0("italics",3,23);X0("underline",4,24);X0("inverse",7,27);X0("strikethrough",9,29);function y1(D,F){let B=F[1]?parseInt(F[1].split(";")[0]):0;if(B>=30&&B<=39||B>=90&&B<=97){D.lastForegroundAdded=F[0];return}if(B>=40&&B<=49||B>=100&&B<=107){D.lastBackgroundAdded=F[0];return}if(B===0){for(let E in D)if(Object.prototype.hasOwnProperty.call(D,E))delete D[E];return}let Z=rD[F[0]];if(Z)D[Z.set]=Z.to}function m4(D){let F=S0(!0),B=F.exec(D),Z={};while(B!==null)y1(Z,B),B=F.exec(D);return Z}function x1(D,F){let{lastBackgroundAdded:B,lastForegroundAdded:Z}=D;if(delete D.lastBackgroundAdded,delete D.lastForegroundAdded,Object.keys(D).forEach(function(E){if(D[E])F+=rD[E].off}),B&&B!="\x1B[49m")F+="\x1B[49m";if(Z&&Z!="\x1B[39m")F+="\x1B[39m";return F}function c4(D,F){let{lastBackgroundAdded:B,lastForegroundAdded:Z}=D;if(delete D.lastBackgroundAdded,delete D.lastForegroundAdded,Object.keys(D).forEach(function(E){if(D[E])F=rD[E].on+F}),B&&B!="\x1B[49m")F=B+F;if(Z&&Z!="\x1B[39m")F=Z+F;return F}function d4(D,F){if(D.length===VD(D))return D.substr(0,F);while(VD(D)>F)D=D.slice(0,-1);return D}function l4(D,F){let B=S0(!0),Z=D.split(S0()),E=0,Y=0,J="",X,H={};while(Y<F){X=B.exec(D);let Q=Z[E];if(E++,Y+VD(Q)>F)Q=d4(Q,F-Y);if(J+=Q,Y+=VD(Q),Y<F){if(!X)break;J+=X[0],y1(H,X)}}return x1(H,J)}function p4(D,F,B){if(B=B||"…",VD(D)<=F)return D;F-=VD(B);let E=l4(D,F);E+=B;let Y="\x1B]8;;\x07";if(D.includes(Y)&&!E.includes(Y))E+=Y;return E}function a4(){return{chars:{top:"─","top-mid":"┬","top-left":"┌","top-right":"┐",bottom:"─","bottom-mid":"┴","bottom-left":"└","bottom-right":"┘",left:"│","left-mid":"├",mid:"─","mid-mid":"┼",right:"│","right-mid":"┤",middle:"│"},truncate:"…",colWidths:[],rowHeights:[],colAligns:[],rowAligns:[],style:{"padding-left":1,"padding-right":1,head:["red"],border:["grey"],compact:!1},head:[]}}function i4(D,F){D=D||{},F=F||a4();let B=Object.assign({},F,D);return B.chars=Object.assign({},F.chars,D.chars),B.style=Object.assign({},F.style,D.style),B}function n4(D,F){let B=[],Z=F.split(/(\s+)/g),E=[],Y=0,J;for(let X=0;X<Z.length;X+=2){let H=Z[X],Q=Y+VD(H);if(Y>0&&J)Q+=J.length;if(Q>D){if(Y!==0)B.push(E.join(""));E=[H],Y=VD(H)}else E.push(J||"",H),Y=Q;J=Z[X+1]}if(Y)B.push(E.join(""));return B}function r4(D,F){let B=[],Z="";function E(J,X){if(Z.length&&X)Z+=X;Z+=J;while(Z.length>D)B.push(Z.slice(0,D)),Z=Z.slice(D)}let Y=F.split(/(\s+)/g);for(let J=0;J<Y.length;J+=2)E(Y[J],J&&Y[J-1]);if(Z.length)B.push(Z);return B}function s4(D,F,B=!0){let Z=[];F=F.split(`
|
|
4
|
+
`);let E=B?n4:r4;for(let Y=0;Y<F.length;Y++)Z.push.apply(Z,E(D,F[Y]));return Z}function o4(D){let F={},B=[];for(let Z=0;Z<D.length;Z++){let E=c4(F,D[Z]);F=m4(E);let Y=Object.assign({},F);B.push(x1(Y,E))}return B}function t4(D,F){return["\x1B]","8",";",";",D||F,"\x07",F,"\x1B]","8",";",";","\x07"].join("")}w1.exports={strlen:VD,repeat:J0,pad:g4,truncate:p4,mergeOptions:i4,wordWrap:s4,colorizeLines:o4,hyperlink:t4}});var g1=x((pE,h1)=>{var v1={};h1.exports=v1;var b1={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(b1).forEach(function(D){var F=b1[D],B=v1[D]=[];B.open="\x1B["+F[0]+"m",B.close="\x1B["+F[1]+"m"})});var c1=x((aE,m1)=>{m1.exports=function(D,F){F=F||process.argv;var B=F.indexOf("--"),Z=/^-{1,2}/.test(D)?"":"--",E=F.indexOf(Z+D);return E!==-1&&(B===-1?!0:E<B)}});var l1=x((iE,d1)=>{var e4=hD("os"),CD=c1(),BD=process.env,sD=void 0;if(CD("no-color")||CD("no-colors")||CD("color=false"))sD=!1;else if(CD("color")||CD("colors")||CD("color=true")||CD("color=always"))sD=!0;if("FORCE_COLOR"in BD)sD=BD.FORCE_COLOR.length===0||parseInt(BD.FORCE_COLOR,10)!==0;function D9(D){if(D===0)return!1;return{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3}}function F9(D){if(sD===!1)return 0;if(CD("color=16m")||CD("color=full")||CD("color=truecolor"))return 3;if(CD("color=256"))return 2;if(D&&!D.isTTY&&sD!==!0)return 0;var F=sD?1:0;if(process.platform==="win32"){var B=e4.release().split(".");if(Number(process.versions.node.split(".")[0])>=8&&Number(B[0])>=10&&Number(B[2])>=10586)return Number(B[2])>=14931?3:2;return 1}if("CI"in BD){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(E){return E in BD})||BD.CI_NAME==="codeship")return 1;return F}if("TEAMCITY_VERSION"in BD)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(BD.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in BD){var Z=parseInt((BD.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(BD.TERM_PROGRAM){case"iTerm.app":return Z>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(BD.TERM))return 2;if(/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(BD.TERM))return 1;if("COLORTERM"in BD)return 1;if(BD.TERM==="dumb")return F;return F}function c2(D){var F=F9(D);return D9(F)}d1.exports={supportsColor:c2,stdout:c2(process.stdout),stderr:c2(process.stderr)}});var a1=x((nE,p1)=>{p1.exports=function(F,B){var Z="";F=F||"Run the trap, drop the bass",F=F.split("");var E={a:["@","Ą","Ⱥ","Ʌ","Δ","Λ","Д"],b:["ß","Ɓ","Ƀ","ɮ","β","฿"],c:["©","Ȼ","Ͼ"],d:["Ð","Ɗ","Ԁ","ԁ","Ԃ","ԃ"],e:["Ë","ĕ","Ǝ","ɘ","Σ","ξ","Ҽ","੬"],f:["Ӻ"],g:["ɢ"],h:["Ħ","ƕ","Ң","Һ","Ӈ","Ԋ"],i:["༏"],j:["Ĵ"],k:["ĸ","Ҡ","Ӄ","Ԟ"],l:["Ĺ"],m:["ʍ","Ӎ","ӎ","Ԡ","ԡ","൩"],n:["Ñ","ŋ","Ɲ","Ͷ","Π","Ҋ"],o:["Ø","õ","ø","Ǿ","ʘ","Ѻ","ם","","๏"],p:["Ƿ","Ҏ"],q:["্"],r:["®","Ʀ","Ȑ","Ɍ","ʀ","Я"],s:["§","Ϟ","ϟ","Ϩ"],t:["Ł","Ŧ","ͳ"],u:["Ʊ","Ս"],v:["ט"],w:["Ш","Ѡ","Ѽ","൰"],x:["Ҳ","Ӿ","Ӽ","ӽ"],y:["¥","Ұ","Ӌ"],z:["Ƶ","ɀ"]};return F.forEach(function(Y){Y=Y.toLowerCase();var J=E[Y]||[" "],X=Math.floor(Math.random()*J.length);if(typeof E[Y]<"u")Z+=E[Y][X];else Z+=Y}),Z}});var n1=x((rE,i1)=>{i1.exports=function(F,B){F=F||" he is here ";var Z={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"],mid:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͜","͝","͞","͟","͠","͢","̸","̷","͡"," ҉"]},E=[].concat(Z.up,Z.down,Z.mid);function Y(H){var Q=Math.floor(Math.random()*H);return Q}function J(H){var Q=!1;return E.filter(function(G){Q=G===H}),Q}function X(H,Q){var G="",K,W;Q=Q||{},Q.up=typeof Q.up<"u"?Q.up:!0,Q.mid=typeof Q.mid<"u"?Q.mid:!0,Q.down=typeof Q.down<"u"?Q.down:!0,Q.size=typeof Q.size<"u"?Q.size:"maxi",H=H.split("");for(W in H){if(J(W))continue;switch(G=G+H[W],K={up:0,down:0,mid:0},Q.size){case"mini":K.up=Y(8),K.mid=Y(2),K.down=Y(8);break;case"maxi":K.up=Y(16)+3,K.mid=Y(4)+1,K.down=Y(64)+3;break;default:K.up=Y(8)+1,K.mid=Y(6)/2,K.down=Y(8)+1;break}var q=["up","mid","down"];for(var C in q){var U=q[C];for(var V=0;V<=K[U];V++)if(Q[U])G=G+Z[U][Y(Z[U].length)]}}return G}return X(F,B)}});var s1=x((sE,r1)=>{r1.exports=function(D){return function(F,B,Z){if(F===" ")return F;switch(B%3){case 0:return D.red(F);case 1:return D.white(F);case 2:return D.blue(F)}}}});var t1=x((oE,o1)=>{o1.exports=function(D){return function(F,B,Z){return B%2===0?F:D.inverse(F)}}});var D3=x((tE,e1)=>{e1.exports=function(D){var F=["red","yellow","green","blue","magenta"];return function(B,Z,E){if(B===" ")return B;else return D[F[Z++%F.length]](B)}}});var B3=x((eE,F3)=>{F3.exports=function(D){var F=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(B,Z,E){return B===" "?B:D[F[Math.round(Math.random()*(F.length-2))]](B)}}});var X3=x((FY,J3)=>{var h={};J3.exports=h;h.themes={};var B9=hD("util"),mD=h.styles=g1(),Z3=Object.defineProperties,Z9=new RegExp(/[\r\n]+/g);h.supportsColor=l1().supportsColor;if(typeof h.enabled>"u")h.enabled=h.supportsColor()!==!1;h.enable=function(){h.enabled=!0};h.disable=function(){h.enabled=!1};h.stripColors=h.strip=function(D){return(""+D).replace(/\x1B\[\d+m/g,"")};var DY=h.stylize=function(F,B){if(!h.enabled)return F+"";var Z=mD[B];if(!Z&&B in h)return h[B](F);return Z.open+F+Z.close},E9=/[|\\{}()[\]^$+*?.]/g,Y9=function(D){if(typeof D!=="string")throw TypeError("Expected a string");return D.replace(E9,"\\$&")};function E3(D){var F=function B(){return X9.apply(B,arguments)};return F._styles=D,F.__proto__=J9,F}var Y3=function(){var D={};return mD.grey=mD.gray,Object.keys(mD).forEach(function(F){mD[F].closeRe=new RegExp(Y9(mD[F].close),"g"),D[F]={get:function(){return E3(this._styles.concat(F))}}}),D}(),J9=Z3(function(){},Y3);function X9(){var D=Array.prototype.slice.call(arguments),F=D.map(function(J){if(J!=null&&J.constructor===String)return J;else return B9.inspect(J)}).join(" ");if(!h.enabled||!F)return F;var B=F.indexOf(`
|
|
5
|
+
`)!=-1,Z=this._styles,E=Z.length;while(E--){var Y=mD[Z[E]];if(F=Y.open+F.replace(Y.closeRe,Y.open)+Y.close,B)F=F.replace(Z9,function(J){return Y.close+J+Y.open})}return F}h.setTheme=function(D){if(typeof D==="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var F in D)(function(B){h[B]=function(Z){if(typeof D[B]==="object"){var E=Z;for(var Y in D[B])E=h[D[B][Y]](E);return E}return h[D[B]](Z)}})(F)};function Q9(){var D={};return Object.keys(Y3).forEach(function(F){D[F]={get:function(){return E3([F])}}}),D}var H9=function(F,B){var Z=B.split("");return Z=Z.map(F),Z.join("")};h.trap=a1();h.zalgo=n1();h.maps={};h.maps.america=s1()(h);h.maps.zebra=t1()(h);h.maps.rainbow=D3()(h);h.maps.random=B3()(h);for(d2 in h.maps)(function(D){h[D]=function(F){return H9(h.maps[D],F)}})(d2);var d2;Z3(h,Q9())});var H3=x((BY,Q3)=>{var G9=X3();Q3.exports=G9});var C3=x((ZY,f0)=>{var{info:K9,debug:z3}=R0(),XD=m2();class Q0{constructor(D){this.setOptions(D),this.x=null,this.y=null}setOptions(D){if(["boolean","number","bigint","string"].indexOf(typeof D)!==-1)D={content:""+D};D=D||{},this.options=D;let F=D.content;if(["boolean","number","bigint","string"].indexOf(typeof F)!==-1)this.content=String(F);else if(!F)this.content=this.options.href||"";else throw Error("Content needs to be a primitive, got: "+typeof F);if(this.colSpan=D.colSpan||1,this.rowSpan=D.rowSpan||1,this.options.href)Object.defineProperty(this,"href",{get(){return this.options.href}})}mergeTableOptions(D,F){this.cells=F;let B=this.options.chars||{},Z=D.chars,E=this.chars={};C9.forEach(function(X){l2(B,Z,X,E)}),this.truncate=this.options.truncate||D.truncate;let Y=this.options.style=this.options.style||{},J=D.style;l2(Y,J,"padding-left",this),l2(Y,J,"padding-right",this),this.head=Y.head||J.head,this.border=Y.border||J.border,this.fixedWidth=D.colWidths[this.x],this.lines=this.computeLines(D),this.desiredWidth=XD.strlen(this.content)+this.paddingLeft+this.paddingRight,this.desiredHeight=this.lines.length}computeLines(D){let F=D.wordWrap||D.textWrap,{wordWrap:B=F}=this.options;if(this.fixedWidth&&B){if(this.fixedWidth-=this.paddingLeft+this.paddingRight,this.colSpan){let Y=1;while(Y<this.colSpan)this.fixedWidth+=D.colWidths[this.x+Y],Y++}let{wrapOnWordBoundary:Z=!0}=D,{wrapOnWordBoundary:E=Z}=this.options;return this.wrapLines(XD.wordWrap(this.fixedWidth,this.content,E))}return this.wrapLines(this.content.split(`
|
|
6
|
+
`))}wrapLines(D){let F=XD.colorizeLines(D);if(this.href)return F.map((B)=>XD.hyperlink(this.href,B));return F}init(D){let F=this.x,B=this.y;this.widths=D.colWidths.slice(F,F+this.colSpan),this.heights=D.rowHeights.slice(B,B+this.rowSpan),this.width=this.widths.reduce(K3,-1),this.height=this.heights.reduce(K3,-1),this.hAlign=this.options.hAlign||D.colAligns[F],this.vAlign=this.options.vAlign||D.rowAligns[B],this.drawRight=F+this.colSpan==D.colWidths.length}draw(D,F){if(D=="top")return this.drawTop(this.drawRight);if(D=="bottom")return this.drawBottom(this.drawRight);let B=XD.truncate(this.content,10,this.truncate);if(!D)K9(`${this.y}-${this.x}: ${this.rowSpan-D}x${this.colSpan} Cell ${B}`);let Z=Math.max(this.height-this.lines.length,0),E;switch(this.vAlign){case"center":E=Math.ceil(Z/2);break;case"bottom":E=Z;break;default:E=0}if(D<E||D>=E+this.lines.length)return this.drawEmpty(this.drawRight,F);let Y=this.lines.length>this.height&&D+1>=this.height;return this.drawLine(D-E,this.drawRight,Y,F)}drawTop(D){let F=[];if(this.cells)this.widths.forEach(function(B,Z){F.push(this._topLeftChar(Z)),F.push(XD.repeat(this.chars[this.y==0?"top":"mid"],B))},this);else F.push(this._topLeftChar(0)),F.push(XD.repeat(this.chars[this.y==0?"top":"mid"],this.width));if(D)F.push(this.chars[this.y==0?"topRight":"rightMid"]);return this.wrapWithStyleColors("border",F.join(""))}_topLeftChar(D){let F=this.x+D,B;if(this.y==0)B=F==0?"topLeft":D==0?"topMid":"top";else if(F==0)B="leftMid";else if(B=D==0?"midMid":"bottomMid",this.cells){if(this.cells[this.y-1][F]instanceof Q0.ColSpanCell)B=D==0?"topMid":"mid";if(D==0){let E=1;while(this.cells[this.y][F-E]instanceof Q0.ColSpanCell)E++;if(this.cells[this.y][F-E]instanceof Q0.RowSpanCell)B="leftMid"}}return this.chars[B]}wrapWithStyleColors(D,F){if(this[D]&&this[D].length)try{let B=H3();for(let Z=this[D].length-1;Z>=0;Z--)B=B[this[D][Z]];return B(F)}catch(B){return F}else return F}drawLine(D,F,B,Z){let E=this.chars[this.x==0?"left":"middle"];if(this.x&&Z&&this.cells){let K=this.cells[this.y+Z][this.x-1];while(K instanceof _0)K=this.cells[K.y][K.x-1];if(!(K instanceof k0))E=this.chars.rightMid}let Y=XD.repeat(" ",this.paddingLeft),J=F?this.chars.right:"",X=XD.repeat(" ",this.paddingRight),H=this.lines[D],Q=this.width-(this.paddingLeft+this.paddingRight);if(B)H+=this.truncate||"…";let G=XD.truncate(H,Q,this.truncate);return G=XD.pad(G,Q," ",this.hAlign),G=Y+G+X,this.stylizeLine(E,G,J)}stylizeLine(D,F,B){if(D=this.wrapWithStyleColors("border",D),B=this.wrapWithStyleColors("border",B),this.y===0)F=this.wrapWithStyleColors("head",F);return D+F+B}drawBottom(D){let F=this.chars[this.x==0?"bottomLeft":"bottomMid"],B=XD.repeat(this.chars.bottom,this.width),Z=D?this.chars.bottomRight:"";return this.wrapWithStyleColors("border",F+B+Z)}drawEmpty(D,F){let B=this.chars[this.x==0?"left":"middle"];if(this.x&&F&&this.cells){let Y=this.cells[this.y+F][this.x-1];while(Y instanceof _0)Y=this.cells[Y.y][Y.x-1];if(!(Y instanceof k0))B=this.chars.rightMid}let Z=D?this.chars.right:"",E=XD.repeat(" ",this.width);return this.stylizeLine(B,E,Z)}}class _0{constructor(){}draw(D){if(typeof D==="number")z3(`${this.y}-${this.x}: 1x1 ColSpanCell`);return""}init(){}mergeTableOptions(){}}class k0{constructor(D){this.originalCell=D}init(D){let F=this.y,B=this.originalCell.y;this.cellOffset=F-B,this.offset=z9(D.rowHeights,B,this.cellOffset)}draw(D){if(D=="top")return this.originalCell.draw(this.offset,this.cellOffset);if(D=="bottom")return this.originalCell.draw("bottom");return z3(`${this.y}-${this.x}: 1x${this.colSpan} RowSpanCell for ${this.originalCell.content}`),this.originalCell.draw(this.offset+1+D)}mergeTableOptions(){}}function G3(...D){return D.filter((F)=>F!==void 0&&F!==null).shift()}function l2(D,F,B,Z){let E=B.split("-");if(E.length>1)E[1]=E[1].charAt(0).toUpperCase()+E[1].substr(1),E=E.join(""),Z[E]=G3(D[E],D[B],F[E],F[B]);else Z[B]=G3(D[B],F[B])}function z9(D,F,B){let Z=D[F];for(let E=1;E<B;E++)Z+=1+D[F+E];return Z}function K3(D,F){return D+F+1}var C9=["top","top-mid","top-left","top-right","bottom","bottom-mid","bottom-left","bottom-right","left","left-mid","mid","mid-mid","right","right-mid","middle"];f0.exports=Q0;f0.exports.ColSpanCell=_0;f0.exports.RowSpanCell=k0});var $3=x((EY,W3)=>{var{warn:q9,debug:W9}=R0(),p2=C3(),{ColSpanCell:$9,RowSpanCell:U9}=p2;(function(){function D(q,C){if(q[C]>0)return D(q,C+1);return C}function F(q){let C={};q.forEach(function(U,V){let I=0;U.forEach(function(u){u.y=V,u.x=V?D(C,I):I;let N=u.rowSpan||1,M=u.colSpan||1;if(N>1)for(let L=0;L<M;L++)C[u.x+L]=N;I=u.x+M}),Object.keys(C).forEach((u)=>{if(C[u]--,C[u]<1)delete C[u]})})}function B(q){let C=0;return q.forEach(function(U){U.forEach(function(V){C=Math.max(C,V.x+(V.colSpan||1))})}),C}function Z(q){return q.length}function E(q,C){let U=q.y,V=q.y-1+(q.rowSpan||1),I=C.y,u=C.y-1+(C.rowSpan||1),N=!(U>u||I>V),M=q.x,L=q.x-1+(q.colSpan||1),S=C.x,R=C.x-1+(C.colSpan||1),O=!(M>R||S>L);return N&&O}function Y(q,C,U){let V=Math.min(q.length-1,U),I={x:C,y:U};for(let u=0;u<=V;u++){let N=q[u];for(let M=0;M<N.length;M++)if(E(I,N[M]))return!0}return!1}function J(q,C,U,V){for(let I=U;I<V;I++)if(Y(q,I,C))return!1;return!0}function X(q){q.forEach(function(C,U){C.forEach(function(V){for(let I=1;I<V.rowSpan;I++){let u=new U9(V);u.x=V.x,u.y=V.y+I,u.colSpan=V.colSpan,Q(u,q[U+I])}})})}function H(q){for(let C=q.length-1;C>=0;C--){let U=q[C];for(let V=0;V<U.length;V++){let I=U[V];for(let u=1;u<I.colSpan;u++){let N=new $9;N.x=I.x+u,N.y=I.y,U.splice(V+1,0,N)}}}}function Q(q,C){let U=0;while(U<C.length&&C[U].x<q.x)U++;C.splice(U,0,q)}function G(q){let C=Z(q),U=B(q);W9(`Max rows: ${C}; Max cols: ${U}`);for(let V=0;V<C;V++)for(let I=0;I<U;I++)if(!Y(q,I,V)){let u={x:I,y:V,colSpan:1,rowSpan:1};I++;while(I<U&&!Y(q,I,V))u.colSpan++,I++;let N=V+1;while(N<C&&J(q,N,u.x,u.x+u.colSpan))u.rowSpan++,N++;let M=new p2(u);M.x=u.x,M.y=u.y,q9(`Missing cell at ${M.y}-${M.x}.`),Q(M,q[V])}}function K(q){return q.map(function(C){if(!Array.isArray(C)){let U=Object.keys(C)[0];if(C=C[U],Array.isArray(C))C=C.slice(),C.unshift(U);else C=[U,C]}return C.map(function(U){return new p2(U)})})}function W(q){let C=K(q);return F(C),G(C),X(C),H(C),C}W3.exports={makeTableLayout:W,layoutTable:F,addRowSpanCells:X,maxWidth:B,fillInTable:G,computeWidths:q3("colSpan","desiredWidth","x",1),computeHeights:q3("rowSpan","desiredHeight","y",1)}})();function q3(D,F,B,Z){return function(E,Y){let J=[],X=[],H={};Y.forEach(function(Q){Q.forEach(function(G){if((G[D]||1)>1)X.push(G);else J[G[B]]=Math.max(J[G[B]]||0,G[F]||0,Z)})}),E.forEach(function(Q,G){if(typeof Q==="number")J[G]=Q});for(let Q=X.length-1;Q>=0;Q--){let G=X[Q],K=G[D],W=G[B],q=J[W],C=typeof E[W]==="number"?0:1;if(typeof q==="number"){for(let U=1;U<K;U++)if(q+=1+J[W+U],typeof E[W+U]!=="number")C++}else if(q=F==="desiredWidth"?G.desiredWidth-1:1,!H[W]||H[W]<q)H[W]=q;if(G[F]>q){let U=0;while(C>0&&G[F]>q){if(typeof E[W+U]!=="number"){let V=Math.round((G[F]-q)/C);q+=V,J[W+U]+=V,C--}U++}}}Object.assign(E,J,H);for(let Q=0;Q<E.length;Q++)E[Q]=Math.max(Z,E[Q]||0)}}});var M3=x((YY,U3)=>{var LD=R0(),M9=m2(),a2=$3();class n2 extends Array{constructor(D){super();let F=M9.mergeOptions(D);if(Object.defineProperty(this,"options",{value:F,enumerable:F.debug}),F.debug){switch(typeof F.debug){case"boolean":LD.setDebugLevel(LD.WARN);break;case"number":LD.setDebugLevel(F.debug);break;case"string":LD.setDebugLevel(parseInt(F.debug,10));break;default:LD.setDebugLevel(LD.WARN),LD.warn(`Debug option is expected to be boolean, number, or string. Received a ${typeof F.debug}`)}Object.defineProperty(this,"messages",{get(){return LD.debugMessages()}})}}toString(){let D=this,F=this.options.head&&this.options.head.length;if(F){if(D=[this.options.head],this.length)D.push.apply(D,this)}else this.options.style.head=[];let B=a2.makeTableLayout(D);B.forEach(function(E){E.forEach(function(Y){Y.mergeTableOptions(this.options,B)},this)},this),a2.computeWidths(this.options.colWidths,B),a2.computeHeights(this.options.rowHeights,B),B.forEach(function(E){E.forEach(function(Y){Y.init(this.options)},this)},this);let Z=[];for(let E=0;E<B.length;E++){let Y=B[E],J=this.options.rowHeights[E];if(E===0||!this.options.style.compact||E==1&&F)i2(Y,"top",Z);for(let X=0;X<J;X++)i2(Y,X,Z);if(E+1==B.length)i2(Y,"bottom",Z)}return Z.join(`
|
|
7
7
|
`)}get width(){return this.toString().split(`
|
|
8
|
-
`)[0].length}}n2.reset=()=>RD.reset();function i2(D,F,B){let E=[];D.forEach(function(J){E.push(J.draw(F))});let Z=E.join("");if(Z.length)B.push(Z)}W3.exports=n2});var s2=w((sZ,r2)=>{var O0=process||{},U3=O0.argv||[],P0=O0.env||{},$9=!(!!P0.NO_COLOR||U3.includes("--no-color"))&&(!!P0.FORCE_COLOR||U3.includes("--color")||O0.platform==="win32"||(O0.stdout||{}).isTTY&&P0.TERM!=="dumb"||!!P0.CI),U9=(D,F,B=D)=>(E)=>{let Z=""+E,J=Z.indexOf(F,D.length);return~J?D+N9(Z,F,B,J)+F:D+Z+F},N9=(D,F,B,E)=>{let Z="",J=0;do Z+=D.substring(J,E)+B,J=E+F.length,E=D.indexOf(F,J);while(~E);return Z+D.substring(J)},N3=(D=$9)=>{let F=D?U9:()=>String;return{isColorSupported:D,reset:F("\x1B[0m","\x1B[0m"),bold:F("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:F("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:F("\x1B[3m","\x1B[23m"),underline:F("\x1B[4m","\x1B[24m"),inverse:F("\x1B[7m","\x1B[27m"),hidden:F("\x1B[8m","\x1B[28m"),strikethrough:F("\x1B[9m","\x1B[29m"),black:F("\x1B[30m","\x1B[39m"),red:F("\x1B[31m","\x1B[39m"),green:F("\x1B[32m","\x1B[39m"),yellow:F("\x1B[33m","\x1B[39m"),blue:F("\x1B[34m","\x1B[39m"),magenta:F("\x1B[35m","\x1B[39m"),cyan:F("\x1B[36m","\x1B[39m"),white:F("\x1B[37m","\x1B[39m"),gray:F("\x1B[90m","\x1B[39m"),bgBlack:F("\x1B[40m","\x1B[49m"),bgRed:F("\x1B[41m","\x1B[49m"),bgGreen:F("\x1B[42m","\x1B[49m"),bgYellow:F("\x1B[43m","\x1B[49m"),bgBlue:F("\x1B[44m","\x1B[49m"),bgMagenta:F("\x1B[45m","\x1B[49m"),bgCyan:F("\x1B[46m","\x1B[49m"),bgWhite:F("\x1B[47m","\x1B[49m"),blackBright:F("\x1B[90m","\x1B[39m"),redBright:F("\x1B[91m","\x1B[39m"),greenBright:F("\x1B[92m","\x1B[39m"),yellowBright:F("\x1B[93m","\x1B[39m"),blueBright:F("\x1B[94m","\x1B[39m"),magentaBright:F("\x1B[95m","\x1B[39m"),cyanBright:F("\x1B[96m","\x1B[39m"),whiteBright:F("\x1B[97m","\x1B[39m"),bgBlackBright:F("\x1B[100m","\x1B[49m"),bgRedBright:F("\x1B[101m","\x1B[49m"),bgGreenBright:F("\x1B[102m","\x1B[49m"),bgYellowBright:F("\x1B[103m","\x1B[49m"),bgBlueBright:F("\x1B[104m","\x1B[49m"),bgMagentaBright:F("\x1B[105m","\x1B[49m"),bgCyanBright:F("\x1B[106m","\x1B[49m"),bgWhiteBright:F("\x1B[107m","\x1B[49m")}};r2.exports=N3();r2.exports.createColors=N3});var o2=w((ZJ,A3)=>{var I9=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};A3.exports=I9});var t2=w((JJ,j3)=>{var R9=Number.MAX_SAFE_INTEGER||9007199254740991,L9=["major","premajor","minor","preminor","patch","prepatch","prerelease"];j3.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:R9,RELEASE_TYPES:L9,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var I3=w((VD,T3)=>{var{MAX_SAFE_COMPONENT_LENGTH:e2,MAX_SAFE_BUILD_LENGTH:f9,MAX_LENGTH:S9}=t2(),_9=o2();VD=T3.exports={};var k9=VD.re=[],P9=VD.safeRe=[],j=VD.src=[],O9=VD.safeSrc=[],T=VD.t={},y9=0,DF="[a-zA-Z0-9-]",w9=[["\\s",1],["\\d",S9],[DF,f9]],x9=(D)=>{for(let[F,B]of w9)D=D.split(`${F}*`).join(`${F}{0,${B}}`).split(`${F}+`).join(`${F}{1,${B}}`);return D},O=(D,F,B)=>{let E=x9(F),Z=y9++;_9(D,Z,F),T[D]=Z,j[Z]=F,O9[Z]=E,k9[Z]=new RegExp(F,B?"g":void 0),P9[Z]=new RegExp(E,B?"g":void 0)};O("NUMERICIDENTIFIER","0|[1-9]\\d*");O("NUMERICIDENTIFIERLOOSE","\\d+");O("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${DF}*`);O("MAINVERSION",`(${j[T.NUMERICIDENTIFIER]})\\.(${j[T.NUMERICIDENTIFIER]})\\.(${j[T.NUMERICIDENTIFIER]})`);O("MAINVERSIONLOOSE",`(${j[T.NUMERICIDENTIFIERLOOSE]})\\.(${j[T.NUMERICIDENTIFIERLOOSE]})\\.(${j[T.NUMERICIDENTIFIERLOOSE]})`);O("PRERELEASEIDENTIFIER",`(?:${j[T.NONNUMERICIDENTIFIER]}|${j[T.NUMERICIDENTIFIER]})`);O("PRERELEASEIDENTIFIERLOOSE",`(?:${j[T.NONNUMERICIDENTIFIER]}|${j[T.NUMERICIDENTIFIERLOOSE]})`);O("PRERELEASE",`(?:-(${j[T.PRERELEASEIDENTIFIER]}(?:\\.${j[T.PRERELEASEIDENTIFIER]})*))`);O("PRERELEASELOOSE",`(?:-?(${j[T.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${j[T.PRERELEASEIDENTIFIERLOOSE]})*))`);O("BUILDIDENTIFIER",`${DF}+`);O("BUILD",`(?:\\+(${j[T.BUILDIDENTIFIER]}(?:\\.${j[T.BUILDIDENTIFIER]})*))`);O("FULLPLAIN",`v?${j[T.MAINVERSION]}${j[T.PRERELEASE]}?${j[T.BUILD]}?`);O("FULL",`^${j[T.FULLPLAIN]}$`);O("LOOSEPLAIN",`[v=\\s]*${j[T.MAINVERSIONLOOSE]}${j[T.PRERELEASELOOSE]}?${j[T.BUILD]}?`);O("LOOSE",`^${j[T.LOOSEPLAIN]}$`);O("GTLT","((?:<|>)?=?)");O("XRANGEIDENTIFIERLOOSE",`${j[T.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);O("XRANGEIDENTIFIER",`${j[T.NUMERICIDENTIFIER]}|x|X|\\*`);O("XRANGEPLAIN",`[v=\\s]*(${j[T.XRANGEIDENTIFIER]})(?:\\.(${j[T.XRANGEIDENTIFIER]})(?:\\.(${j[T.XRANGEIDENTIFIER]})(?:${j[T.PRERELEASE]})?${j[T.BUILD]}?)?)?`);O("XRANGEPLAINLOOSE",`[v=\\s]*(${j[T.XRANGEIDENTIFIERLOOSE]})(?:\\.(${j[T.XRANGEIDENTIFIERLOOSE]})(?:\\.(${j[T.XRANGEIDENTIFIERLOOSE]})(?:${j[T.PRERELEASELOOSE]})?${j[T.BUILD]}?)?)?`);O("XRANGE",`^${j[T.GTLT]}\\s*${j[T.XRANGEPLAIN]}$`);O("XRANGELOOSE",`^${j[T.GTLT]}\\s*${j[T.XRANGEPLAINLOOSE]}$`);O("COERCEPLAIN",`(^|[^\\d])(\\d{1,${e2}})(?:\\.(\\d{1,${e2}}))?(?:\\.(\\d{1,${e2}}))?`);O("COERCE",`${j[T.COERCEPLAIN]}(?:$|[^\\d])`);O("COERCEFULL",j[T.COERCEPLAIN]+`(?:${j[T.PRERELEASE]})?(?:${j[T.BUILD]})?(?:$|[^\\d])`);O("COERCERTL",j[T.COERCE],!0);O("COERCERTLFULL",j[T.COERCEFULL],!0);O("LONETILDE","(?:~>?)");O("TILDETRIM",`(\\s*)${j[T.LONETILDE]}\\s+`,!0);VD.tildeTrimReplace="$1~";O("TILDE",`^${j[T.LONETILDE]}${j[T.XRANGEPLAIN]}$`);O("TILDELOOSE",`^${j[T.LONETILDE]}${j[T.XRANGEPLAINLOOSE]}$`);O("LONECARET","(?:\\^)");O("CARETTRIM",`(\\s*)${j[T.LONECARET]}\\s+`,!0);VD.caretTrimReplace="$1^";O("CARET",`^${j[T.LONECARET]}${j[T.XRANGEPLAIN]}$`);O("CARETLOOSE",`^${j[T.LONECARET]}${j[T.XRANGEPLAINLOOSE]}$`);O("COMPARATORLOOSE",`^${j[T.GTLT]}\\s*(${j[T.LOOSEPLAIN]})$|^$`);O("COMPARATOR",`^${j[T.GTLT]}\\s*(${j[T.FULLPLAIN]})$|^$`);O("COMPARATORTRIM",`(\\s*)${j[T.GTLT]}\\s*(${j[T.LOOSEPLAIN]}|${j[T.XRANGEPLAIN]})`,!0);VD.comparatorTrimReplace="$1$2$3";O("HYPHENRANGE",`^\\s*(${j[T.XRANGEPLAIN]})\\s+-\\s+(${j[T.XRANGEPLAIN]})\\s*$`);O("HYPHENRANGELOOSE",`^\\s*(${j[T.XRANGEPLAINLOOSE]})\\s+-\\s+(${j[T.XRANGEPLAINLOOSE]})\\s*$`);O("STAR","(<|>)?=?\\s*\\*");O("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");O("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var L3=w((YJ,R3)=>{var b9=Object.freeze({loose:!0}),v9=Object.freeze({}),h9=(D)=>{if(!D)return v9;if(typeof D!=="object")return b9;return D};R3.exports=h9});var k3=w((HJ,_3)=>{var f3=/^[0-9]+$/,S3=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let B=f3.test(D),E=f3.test(F);if(B&&E)D=+D,F=+F;return D===F?0:B&&!E?-1:E&&!B?1:D<F?-1:1},g9=(D,F)=>S3(F,D);_3.exports={compareIdentifiers:S3,rcompareIdentifiers:g9}});var BF=w((XJ,O3)=>{var y0=o2(),{MAX_LENGTH:P3,MAX_SAFE_INTEGER:w0}=t2(),{safeRe:x0,t:b0}=I3(),m9=L3(),{compareIdentifiers:FF}=k3(),c9=(D,F)=>{let B=F.split(".");if(B.length>D.length)return!1;for(let E=0;E<B.length;E++)if(FF(D[E],B[E])!==0)return!1;return!0};class qD{constructor(D,F){if(F=m9(F),D instanceof qD)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else D=D.version;else if(typeof D!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof D}".`);if(D.length>P3)throw TypeError(`version is longer than ${P3} characters`);y0("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let B=D.trim().match(F.loose?x0[b0.LOOSE]:x0[b0.FULL]);if(!B)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+B[1],this.minor=+B[2],this.patch=+B[3],this.major>w0||this.major<0)throw TypeError("Invalid major version");if(this.minor>w0||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>w0||this.patch<0)throw TypeError("Invalid patch version");if(!B[4])this.prerelease=[];else this.prerelease=B[4].split(".").map((E)=>{if(/^[0-9]+$/.test(E)){let Z=+E;if(Z>=0&&Z<w0)return Z}return E});this.build=B[5]?B[5].split("."):[],this.format()}format(){if(this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length)this.version+=`-${this.prerelease.join(".")}`;return this.version}toString(){return this.version}compare(D){if(y0("SemVer.compare",this.version,this.options,D),!(D instanceof qD)){if(typeof D==="string"&&D===this.version)return 0;D=new qD(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof qD))D=new qD(D,this.options);if(this.major<D.major)return-1;if(this.major>D.major)return 1;if(this.minor<D.minor)return-1;if(this.minor>D.minor)return 1;if(this.patch<D.patch)return-1;if(this.patch>D.patch)return 1;return 0}comparePre(D){if(!(D instanceof qD))D=new qD(D,this.options);if(this.prerelease.length&&!D.prerelease.length)return-1;else if(!this.prerelease.length&&D.prerelease.length)return 1;else if(!this.prerelease.length&&!D.prerelease.length)return 0;let F=0;do{let B=this.prerelease[F],E=D.prerelease[F];if(y0("prerelease compare",F,B,E),B===void 0&&E===void 0)return 0;else if(E===void 0)return 1;else if(B===void 0)return-1;else if(B===E)continue;else return FF(B,E)}while(++F)}compareBuild(D){if(!(D instanceof qD))D=new qD(D,this.options);let F=0;do{let B=this.build[F],E=D.build[F];if(y0("build compare",F,B,E),B===void 0&&E===void 0)return 0;else if(E===void 0)return 1;else if(B===void 0)return-1;else if(B===E)continue;else return FF(B,E)}while(++F)}inc(D,F,B){if(D.startsWith("pre")){if(!F&&B===!1)throw Error("invalid increment argument: identifier is empty");if(F){let E=`-${F}`.match(this.options.loose?x0[b0.PRERELEASELOOSE]:x0[b0.PRERELEASE]);if(!E||E[1]!==F)throw Error(`invalid identifier: ${F}`)}}switch(D){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",F,B);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",F,B);break;case"prepatch":this.prerelease.length=0,this.inc("patch",F,B),this.inc("pre",F,B);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",F,B);this.inc("pre",F,B);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let E=Number(B)?1:0;if(this.prerelease.length===0)this.prerelease=[E];else{let Z=this.prerelease.length;while(--Z>=0)if(typeof this.prerelease[Z]==="number")this.prerelease[Z]++,Z=-2;if(Z===-1){if(F===this.prerelease.join(".")&&B===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(E)}}if(F){let Z=[F,E];if(B===!1)Z=[F];if(c9(this.prerelease,F)){let J=this.prerelease[F.split(".").length];if(isNaN(J))this.prerelease=Z}else this.prerelease=Z}break}default:throw Error(`invalid increment argument: ${D}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}O3.exports=qD});var x3=w((QJ,w3)=>{var y3=BF(),d9=(D,F,B)=>new y3(D,B).compare(new y3(F,B));w3.exports=d9});var v3=w((CJ,b3)=>{var l9=x3(),p9=(D,F,B)=>l9(D,F,B)>0;b3.exports=p9});var m3=w((GJ,g3)=>{var h3=BF(),a9=(D,F,B=!1)=>{if(D instanceof h3)return D;try{return new h3(D,F)}catch(E){if(!B)return null;throw E}};g3.exports=a9});var d3=w((KJ,c3)=>{var i9=m3(),n9=(D,F)=>{let B=i9(D,F);return B?B.version:null};c3.exports=n9});var Q0=w((J5)=>{class YF extends Error{constructor(D,F,B){super(B);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=F,this.exitCode=D,this.nestedError=void 0}}class s3 extends YF{constructor(D){super(1,"commander.invalidArgument",D);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}J5.CommanderError=YF;J5.InvalidArgumentError=s3});var h0=w((C5)=>{var{InvalidArgumentError:X5}=Q0();class o3{constructor(D,F){switch(this.description=F||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,D[0]){case"<":this.required=!0,this._name=D.slice(1,-1);break;case"[":this.required=!1,this._name=D.slice(1,-1);break;default:this.required=!0,this._name=D;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(D,F){if(F===this.defaultValue||!Array.isArray(F))return[D];return F.push(D),F}default(D,F){return this.defaultValue=D,this.defaultValueDescription=F,this}argParser(D){return this.parseArg=D,this}choices(D){return this.argChoices=D.slice(),this.parseArg=(F,B)=>{if(!this.argChoices.includes(F))throw new X5(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(F,B);return F},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function Q5(D){let F=D.name()+(D.variadic===!0?"...":"");return D.required?"<"+F+">":"["+F+"]"}C5.Argument=o3;C5.humanReadableArgName=Q5});var HF=w((q5)=>{var{humanReadableArgName:z5}=h0();class t3{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(D){this.helpWidth=this.helpWidth??D.helpWidth??80}visibleCommands(D){let F=D.commands.filter((E)=>!E._hidden),B=D._getHelpCommand();if(B&&!B._hidden)F.push(B);if(this.sortSubcommands)F.sort((E,Z)=>{return E.name().localeCompare(Z.name())});return F}compareOptions(D,F){let B=(E)=>{return E.short?E.short.replace(/^-/,""):E.long.replace(/^--/,"")};return B(D).localeCompare(B(F))}visibleOptions(D){let F=D.options.filter((E)=>!E.hidden),B=D._getHelpOption();if(B&&!B.hidden){let E=B.short&&D._findOption(B.short),Z=B.long&&D._findOption(B.long);if(!E&&!Z)F.push(B);else if(B.long&&!Z)F.push(D.createOption(B.long,B.description));else if(B.short&&!E)F.push(D.createOption(B.short,B.description))}if(this.sortOptions)F.sort(this.compareOptions);return F}visibleGlobalOptions(D){if(!this.showGlobalOptions)return[];let F=[];for(let B=D.parent;B;B=B.parent){let E=B.options.filter((Z)=>!Z.hidden);F.push(...E)}if(this.sortOptions)F.sort(this.compareOptions);return F}visibleArguments(D){if(D._argsDescription)D.registeredArguments.forEach((F)=>{F.description=F.description||D._argsDescription[F.name()]||""});if(D.registeredArguments.find((F)=>F.description))return D.registeredArguments;return[]}subcommandTerm(D){let F=D.registeredArguments.map((B)=>z5(B)).join(" ");return D._name+(D._aliases[0]?"|"+D._aliases[0]:"")+(D.options.length?" [options]":"")+(F?" "+F:"")}optionTerm(D){return D.flags}argumentTerm(D){return D.name()}longestSubcommandTermLength(D,F){return F.visibleCommands(D).reduce((B,E)=>{return Math.max(B,this.displayWidth(F.styleSubcommandTerm(F.subcommandTerm(E))))},0)}longestOptionTermLength(D,F){return F.visibleOptions(D).reduce((B,E)=>{return Math.max(B,this.displayWidth(F.styleOptionTerm(F.optionTerm(E))))},0)}longestGlobalOptionTermLength(D,F){return F.visibleGlobalOptions(D).reduce((B,E)=>{return Math.max(B,this.displayWidth(F.styleOptionTerm(F.optionTerm(E))))},0)}longestArgumentTermLength(D,F){return F.visibleArguments(D).reduce((B,E)=>{return Math.max(B,this.displayWidth(F.styleArgumentTerm(F.argumentTerm(E))))},0)}commandUsage(D){let F=D._name;if(D._aliases[0])F=F+"|"+D._aliases[0];let B="";for(let E=D.parent;E;E=E.parent)B=E.name()+" "+B;return B+F+" "+D.usage()}commandDescription(D){return D.description()}subcommandDescription(D){return D.summary()||D.description()}optionDescription(D){let F=[];if(D.argChoices)F.push(`choices: ${D.argChoices.map((B)=>JSON.stringify(B)).join(", ")}`);if(D.defaultValue!==void 0){if(D.required||D.optional||D.isBoolean()&&typeof D.defaultValue==="boolean")F.push(`default: ${D.defaultValueDescription||JSON.stringify(D.defaultValue)}`)}if(D.presetArg!==void 0&&D.optional)F.push(`preset: ${JSON.stringify(D.presetArg)}`);if(D.envVar!==void 0)F.push(`env: ${D.envVar}`);if(F.length>0){let B=`(${F.join(", ")})`;if(D.description)return`${D.description} ${B}`;return B}return D.description}argumentDescription(D){let F=[];if(D.argChoices)F.push(`choices: ${D.argChoices.map((B)=>JSON.stringify(B)).join(", ")}`);if(D.defaultValue!==void 0)F.push(`default: ${D.defaultValueDescription||JSON.stringify(D.defaultValue)}`);if(F.length>0){let B=`(${F.join(", ")})`;if(D.description)return`${D.description} ${B}`;return B}return D.description}formatItemList(D,F,B){if(F.length===0)return[];return[B.styleTitle(D),...F,""]}groupItems(D,F,B){let E=new Map;return D.forEach((Z)=>{let J=B(Z);if(!E.has(J))E.set(J,[])}),F.forEach((Z)=>{let J=B(Z);if(!E.has(J))E.set(J,[]);E.get(J).push(Z)}),E}formatHelp(D,F){let B=F.padWidth(D,F),E=F.helpWidth??80;function Z(C,G){return F.formatItem(C,B,G,F)}let J=[`${F.styleTitle("Usage:")} ${F.styleUsage(F.commandUsage(D))}`,""],Y=F.commandDescription(D);if(Y.length>0)J=J.concat([F.boxWrap(F.styleCommandDescription(Y),E),""]);let H=F.visibleArguments(D).map((C)=>{return Z(F.styleArgumentTerm(F.argumentTerm(C)),F.styleArgumentDescription(F.argumentDescription(C)))});if(J=J.concat(this.formatItemList("Arguments:",H,F)),this.groupItems(D.options,F.visibleOptions(D),(C)=>C.helpGroupHeading??"Options:").forEach((C,G)=>{let u=C.map((q)=>{return Z(F.styleOptionTerm(F.optionTerm(q)),F.styleOptionDescription(F.optionDescription(q)))});J=J.concat(this.formatItemList(G,u,F))}),F.showGlobalOptions){let C=F.visibleGlobalOptions(D).map((G)=>{return Z(F.styleOptionTerm(F.optionTerm(G)),F.styleOptionDescription(F.optionDescription(G)))});J=J.concat(this.formatItemList("Global Options:",C,F))}return this.groupItems(D.commands,F.visibleCommands(D),(C)=>C.helpGroup()||"Commands:").forEach((C,G)=>{let u=C.map((q)=>{return Z(F.styleSubcommandTerm(F.subcommandTerm(q)),F.styleSubcommandDescription(F.subcommandDescription(q)))});J=J.concat(this.formatItemList(G,u,F))}),J.join(`
|
|
9
|
-
`)}displayWidth(D){return
|
|
10
|
-
`+" ".repeat(F+
|
|
11
|
-
${
|
|
12
|
-
`)}}function
|
|
8
|
+
`)[0].length}}n2.reset=()=>LD.reset();function i2(D,F,B){let Z=[];D.forEach(function(Y){Z.push(Y.draw(F))});let E=Z.join("");if(E.length)B.push(E)}U3.exports=n2});var s2=x((JY,r2)=>{var P0=process||{},N3=P0.argv||[],O0=P0.env||{},N9=!(!!O0.NO_COLOR||N3.includes("--no-color"))&&(!!O0.FORCE_COLOR||N3.includes("--color")||P0.platform==="win32"||(P0.stdout||{}).isTTY&&O0.TERM!=="dumb"||!!O0.CI),V9=(D,F,B=D)=>(Z)=>{let E=""+Z,Y=E.indexOf(F,D.length);return~Y?D+u9(E,F,B,Y)+F:D+E+F},u9=(D,F,B,Z)=>{let E="",Y=0;do E+=D.substring(Y,Z)+B,Y=Z+F.length,Z=D.indexOf(F,Y);while(~Z);return E+D.substring(Y)},V3=(D=N9)=>{let F=D?V9:()=>String;return{isColorSupported:D,reset:F("\x1B[0m","\x1B[0m"),bold:F("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:F("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:F("\x1B[3m","\x1B[23m"),underline:F("\x1B[4m","\x1B[24m"),inverse:F("\x1B[7m","\x1B[27m"),hidden:F("\x1B[8m","\x1B[28m"),strikethrough:F("\x1B[9m","\x1B[29m"),black:F("\x1B[30m","\x1B[39m"),red:F("\x1B[31m","\x1B[39m"),green:F("\x1B[32m","\x1B[39m"),yellow:F("\x1B[33m","\x1B[39m"),blue:F("\x1B[34m","\x1B[39m"),magenta:F("\x1B[35m","\x1B[39m"),cyan:F("\x1B[36m","\x1B[39m"),white:F("\x1B[37m","\x1B[39m"),gray:F("\x1B[90m","\x1B[39m"),bgBlack:F("\x1B[40m","\x1B[49m"),bgRed:F("\x1B[41m","\x1B[49m"),bgGreen:F("\x1B[42m","\x1B[49m"),bgYellow:F("\x1B[43m","\x1B[49m"),bgBlue:F("\x1B[44m","\x1B[49m"),bgMagenta:F("\x1B[45m","\x1B[49m"),bgCyan:F("\x1B[46m","\x1B[49m"),bgWhite:F("\x1B[47m","\x1B[49m"),blackBright:F("\x1B[90m","\x1B[39m"),redBright:F("\x1B[91m","\x1B[39m"),greenBright:F("\x1B[92m","\x1B[39m"),yellowBright:F("\x1B[93m","\x1B[39m"),blueBright:F("\x1B[94m","\x1B[39m"),magentaBright:F("\x1B[95m","\x1B[39m"),cyanBright:F("\x1B[96m","\x1B[39m"),whiteBright:F("\x1B[97m","\x1B[39m"),bgBlackBright:F("\x1B[100m","\x1B[49m"),bgRedBright:F("\x1B[101m","\x1B[49m"),bgGreenBright:F("\x1B[102m","\x1B[49m"),bgYellowBright:F("\x1B[103m","\x1B[49m"),bgBlueBright:F("\x1B[104m","\x1B[49m"),bgMagentaBright:F("\x1B[105m","\x1B[49m"),bgCyanBright:F("\x1B[106m","\x1B[49m"),bgWhiteBright:F("\x1B[107m","\x1B[49m")}};r2.exports=V3();r2.exports.createColors=V3});var o2=x((qY,j3)=>{var R9=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};j3.exports=R9});var t2=x((WY,T3)=>{var S9=Number.MAX_SAFE_INTEGER||9007199254740991,_9=["major","premajor","minor","preminor","patch","prepatch","prerelease"];T3.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:S9,RELEASE_TYPES:_9,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var L3=x((uD,I3)=>{var{MAX_SAFE_COMPONENT_LENGTH:e2,MAX_SAFE_BUILD_LENGTH:k9,MAX_LENGTH:f9}=t2(),O9=o2();uD=I3.exports={};var P9=uD.re=[],y9=uD.safeRe=[],j=uD.src=[],x9=uD.safeSrc=[],T=uD.t={},w9=0,DF="[a-zA-Z0-9-]",b9=[["\\s",1],["\\d",f9],[DF,k9]],v9=(D)=>{for(let[F,B]of b9)D=D.split(`${F}*`).join(`${F}{0,${B}}`).split(`${F}+`).join(`${F}{1,${B}}`);return D},P=(D,F,B)=>{let Z=v9(F),E=w9++;O9(D,E,F),T[D]=E,j[E]=F,x9[E]=Z,P9[E]=new RegExp(F,B?"g":void 0),y9[E]=new RegExp(Z,B?"g":void 0)};P("NUMERICIDENTIFIER","0|[1-9]\\d*");P("NUMERICIDENTIFIERLOOSE","\\d+");P("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${DF}*`);P("MAINVERSION",`(${j[T.NUMERICIDENTIFIER]})\\.(${j[T.NUMERICIDENTIFIER]})\\.(${j[T.NUMERICIDENTIFIER]})`);P("MAINVERSIONLOOSE",`(${j[T.NUMERICIDENTIFIERLOOSE]})\\.(${j[T.NUMERICIDENTIFIERLOOSE]})\\.(${j[T.NUMERICIDENTIFIERLOOSE]})`);P("PRERELEASEIDENTIFIER",`(?:${j[T.NONNUMERICIDENTIFIER]}|${j[T.NUMERICIDENTIFIER]})`);P("PRERELEASEIDENTIFIERLOOSE",`(?:${j[T.NONNUMERICIDENTIFIER]}|${j[T.NUMERICIDENTIFIERLOOSE]})`);P("PRERELEASE",`(?:-(${j[T.PRERELEASEIDENTIFIER]}(?:\\.${j[T.PRERELEASEIDENTIFIER]})*))`);P("PRERELEASELOOSE",`(?:-?(${j[T.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${j[T.PRERELEASEIDENTIFIERLOOSE]})*))`);P("BUILDIDENTIFIER",`${DF}+`);P("BUILD",`(?:\\+(${j[T.BUILDIDENTIFIER]}(?:\\.${j[T.BUILDIDENTIFIER]})*))`);P("FULLPLAIN",`v?${j[T.MAINVERSION]}${j[T.PRERELEASE]}?${j[T.BUILD]}?`);P("FULL",`^${j[T.FULLPLAIN]}$`);P("LOOSEPLAIN",`[v=\\s]*${j[T.MAINVERSIONLOOSE]}${j[T.PRERELEASELOOSE]}?${j[T.BUILD]}?`);P("LOOSE",`^${j[T.LOOSEPLAIN]}$`);P("GTLT","((?:<|>)?=?)");P("XRANGEIDENTIFIERLOOSE",`${j[T.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);P("XRANGEIDENTIFIER",`${j[T.NUMERICIDENTIFIER]}|x|X|\\*`);P("XRANGEPLAIN",`[v=\\s]*(${j[T.XRANGEIDENTIFIER]})(?:\\.(${j[T.XRANGEIDENTIFIER]})(?:\\.(${j[T.XRANGEIDENTIFIER]})(?:${j[T.PRERELEASE]})?${j[T.BUILD]}?)?)?`);P("XRANGEPLAINLOOSE",`[v=\\s]*(${j[T.XRANGEIDENTIFIERLOOSE]})(?:\\.(${j[T.XRANGEIDENTIFIERLOOSE]})(?:\\.(${j[T.XRANGEIDENTIFIERLOOSE]})(?:${j[T.PRERELEASELOOSE]})?${j[T.BUILD]}?)?)?`);P("XRANGE",`^${j[T.GTLT]}\\s*${j[T.XRANGEPLAIN]}$`);P("XRANGELOOSE",`^${j[T.GTLT]}\\s*${j[T.XRANGEPLAINLOOSE]}$`);P("COERCEPLAIN",`(^|[^\\d])(\\d{1,${e2}})(?:\\.(\\d{1,${e2}}))?(?:\\.(\\d{1,${e2}}))?`);P("COERCE",`${j[T.COERCEPLAIN]}(?:$|[^\\d])`);P("COERCEFULL",j[T.COERCEPLAIN]+`(?:${j[T.PRERELEASE]})?(?:${j[T.BUILD]})?(?:$|[^\\d])`);P("COERCERTL",j[T.COERCE],!0);P("COERCERTLFULL",j[T.COERCEFULL],!0);P("LONETILDE","(?:~>?)");P("TILDETRIM",`(\\s*)${j[T.LONETILDE]}\\s+`,!0);uD.tildeTrimReplace="$1~";P("TILDE",`^${j[T.LONETILDE]}${j[T.XRANGEPLAIN]}$`);P("TILDELOOSE",`^${j[T.LONETILDE]}${j[T.XRANGEPLAINLOOSE]}$`);P("LONECARET","(?:\\^)");P("CARETTRIM",`(\\s*)${j[T.LONECARET]}\\s+`,!0);uD.caretTrimReplace="$1^";P("CARET",`^${j[T.LONECARET]}${j[T.XRANGEPLAIN]}$`);P("CARETLOOSE",`^${j[T.LONECARET]}${j[T.XRANGEPLAINLOOSE]}$`);P("COMPARATORLOOSE",`^${j[T.GTLT]}\\s*(${j[T.LOOSEPLAIN]})$|^$`);P("COMPARATOR",`^${j[T.GTLT]}\\s*(${j[T.FULLPLAIN]})$|^$`);P("COMPARATORTRIM",`(\\s*)${j[T.GTLT]}\\s*(${j[T.LOOSEPLAIN]}|${j[T.XRANGEPLAIN]})`,!0);uD.comparatorTrimReplace="$1$2$3";P("HYPHENRANGE",`^\\s*(${j[T.XRANGEPLAIN]})\\s+-\\s+(${j[T.XRANGEPLAIN]})\\s*$`);P("HYPHENRANGELOOSE",`^\\s*(${j[T.XRANGEPLAINLOOSE]})\\s+-\\s+(${j[T.XRANGEPLAINLOOSE]})\\s*$`);P("STAR","(<|>)?=?\\s*\\*");P("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");P("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var S3=x(($Y,R3)=>{var h9=Object.freeze({loose:!0}),g9=Object.freeze({}),m9=(D)=>{if(!D)return g9;if(typeof D!=="object")return h9;return D};R3.exports=m9});var O3=x((UY,f3)=>{var _3=/^[0-9]+$/,k3=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let B=_3.test(D),Z=_3.test(F);if(B&&Z)D=+D,F=+F;return D===F?0:B&&!Z?-1:Z&&!B?1:D<F?-1:1},c9=(D,F)=>k3(F,D);f3.exports={compareIdentifiers:k3,rcompareIdentifiers:c9}});var BF=x((MY,y3)=>{var y0=o2(),{MAX_LENGTH:P3,MAX_SAFE_INTEGER:x0}=t2(),{safeRe:w0,t:b0}=L3(),d9=S3(),{compareIdentifiers:FF}=O3(),l9=(D,F)=>{let B=F.split(".");if(B.length>D.length)return!1;for(let Z=0;Z<B.length;Z++)if(FF(D[Z],B[Z])!==0)return!1;return!0};class qD{constructor(D,F){if(F=d9(F),D instanceof qD)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else D=D.version;else if(typeof D!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof D}".`);if(D.length>P3)throw TypeError(`version is longer than ${P3} characters`);y0("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let B=D.trim().match(F.loose?w0[b0.LOOSE]:w0[b0.FULL]);if(!B)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+B[1],this.minor=+B[2],this.patch=+B[3],this.major>x0||this.major<0)throw TypeError("Invalid major version");if(this.minor>x0||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>x0||this.patch<0)throw TypeError("Invalid patch version");if(!B[4])this.prerelease=[];else this.prerelease=B[4].split(".").map((Z)=>{if(/^[0-9]+$/.test(Z)){let E=+Z;if(E>=0&&E<x0)return E}return Z});this.build=B[5]?B[5].split("."):[],this.format()}format(){if(this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length)this.version+=`-${this.prerelease.join(".")}`;return this.version}toString(){return this.version}compare(D){if(y0("SemVer.compare",this.version,this.options,D),!(D instanceof qD)){if(typeof D==="string"&&D===this.version)return 0;D=new qD(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof qD))D=new qD(D,this.options);if(this.major<D.major)return-1;if(this.major>D.major)return 1;if(this.minor<D.minor)return-1;if(this.minor>D.minor)return 1;if(this.patch<D.patch)return-1;if(this.patch>D.patch)return 1;return 0}comparePre(D){if(!(D instanceof qD))D=new qD(D,this.options);if(this.prerelease.length&&!D.prerelease.length)return-1;else if(!this.prerelease.length&&D.prerelease.length)return 1;else if(!this.prerelease.length&&!D.prerelease.length)return 0;let F=0;do{let B=this.prerelease[F],Z=D.prerelease[F];if(y0("prerelease compare",F,B,Z),B===void 0&&Z===void 0)return 0;else if(Z===void 0)return 1;else if(B===void 0)return-1;else if(B===Z)continue;else return FF(B,Z)}while(++F)}compareBuild(D){if(!(D instanceof qD))D=new qD(D,this.options);let F=0;do{let B=this.build[F],Z=D.build[F];if(y0("build compare",F,B,Z),B===void 0&&Z===void 0)return 0;else if(Z===void 0)return 1;else if(B===void 0)return-1;else if(B===Z)continue;else return FF(B,Z)}while(++F)}inc(D,F,B){if(D.startsWith("pre")){if(!F&&B===!1)throw Error("invalid increment argument: identifier is empty");if(F){let Z=`-${F}`.match(this.options.loose?w0[b0.PRERELEASELOOSE]:w0[b0.PRERELEASE]);if(!Z||Z[1]!==F)throw Error(`invalid identifier: ${F}`)}}switch(D){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",F,B);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",F,B);break;case"prepatch":this.prerelease.length=0,this.inc("patch",F,B),this.inc("pre",F,B);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",F,B);this.inc("pre",F,B);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let Z=Number(B)?1:0;if(this.prerelease.length===0)this.prerelease=[Z];else{let E=this.prerelease.length;while(--E>=0)if(typeof this.prerelease[E]==="number")this.prerelease[E]++,E=-2;if(E===-1){if(F===this.prerelease.join(".")&&B===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(Z)}}if(F){let E=[F,Z];if(B===!1)E=[F];if(l9(this.prerelease,F)){let Y=this.prerelease[F.split(".").length];if(isNaN(Y))this.prerelease=E}else this.prerelease=E}break}default:throw Error(`invalid increment argument: ${D}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}y3.exports=qD});var b3=x((NY,w3)=>{var x3=BF(),p9=(D,F,B)=>new x3(D,B).compare(new x3(F,B));w3.exports=p9});var h3=x((VY,v3)=>{var a9=b3(),i9=(D,F,B)=>a9(D,F,B)>0;v3.exports=i9});var c3=x((uY,m3)=>{var g3=BF(),n9=(D,F,B=!1)=>{if(D instanceof g3)return D;try{return new g3(D,F)}catch(Z){if(!B)return null;throw Z}};m3.exports=n9});var l3=x((AY,d3)=>{var r9=c3(),s9=(D,F)=>{let B=r9(D,F);return B?B.version:null};d3.exports=s9});var H0=x((X5)=>{class JF extends Error{constructor(D,F,B){super(B);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=F,this.exitCode=D,this.nestedError=void 0}}class o3 extends JF{constructor(D){super(1,"commander.invalidArgument",D);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}X5.CommanderError=JF;X5.InvalidArgumentError=o3});var h0=x((z5)=>{var{InvalidArgumentError:G5}=H0();class t3{constructor(D,F){switch(this.description=F||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,D[0]){case"<":this.required=!0,this._name=D.slice(1,-1);break;case"[":this.required=!1,this._name=D.slice(1,-1);break;default:this.required=!0,this._name=D;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(D,F){if(F===this.defaultValue||!Array.isArray(F))return[D];return F.push(D),F}default(D,F){return this.defaultValue=D,this.defaultValueDescription=F,this}argParser(D){return this.parseArg=D,this}choices(D){return this.argChoices=D.slice(),this.parseArg=(F,B)=>{if(!this.argChoices.includes(F))throw new G5(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(F,B);return F},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function K5(D){let F=D.name()+(D.variadic===!0?"...":"");return D.required?"<"+F+">":"["+F+"]"}z5.Argument=t3;z5.humanReadableArgName=K5});var XF=x(($5)=>{var{humanReadableArgName:W5}=h0();class e3{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(D){this.helpWidth=this.helpWidth??D.helpWidth??80}visibleCommands(D){let F=D.commands.filter((Z)=>!Z._hidden),B=D._getHelpCommand();if(B&&!B._hidden)F.push(B);if(this.sortSubcommands)F.sort((Z,E)=>{return Z.name().localeCompare(E.name())});return F}compareOptions(D,F){let B=(Z)=>{return Z.short?Z.short.replace(/^-/,""):Z.long.replace(/^--/,"")};return B(D).localeCompare(B(F))}visibleOptions(D){let F=D.options.filter((Z)=>!Z.hidden),B=D._getHelpOption();if(B&&!B.hidden){let Z=B.short&&D._findOption(B.short),E=B.long&&D._findOption(B.long);if(!Z&&!E)F.push(B);else if(B.long&&!E)F.push(D.createOption(B.long,B.description));else if(B.short&&!Z)F.push(D.createOption(B.short,B.description))}if(this.sortOptions)F.sort(this.compareOptions);return F}visibleGlobalOptions(D){if(!this.showGlobalOptions)return[];let F=[];for(let B=D.parent;B;B=B.parent){let Z=B.options.filter((E)=>!E.hidden);F.push(...Z)}if(this.sortOptions)F.sort(this.compareOptions);return F}visibleArguments(D){if(D._argsDescription)D.registeredArguments.forEach((F)=>{F.description=F.description||D._argsDescription[F.name()]||""});if(D.registeredArguments.find((F)=>F.description))return D.registeredArguments;return[]}subcommandTerm(D){let F=D.registeredArguments.map((B)=>W5(B)).join(" ");return D._name+(D._aliases[0]?"|"+D._aliases[0]:"")+(D.options.length?" [options]":"")+(F?" "+F:"")}optionTerm(D){return D.flags}argumentTerm(D){return D.name()}longestSubcommandTermLength(D,F){return F.visibleCommands(D).reduce((B,Z)=>{return Math.max(B,this.displayWidth(F.styleSubcommandTerm(F.subcommandTerm(Z))))},0)}longestOptionTermLength(D,F){return F.visibleOptions(D).reduce((B,Z)=>{return Math.max(B,this.displayWidth(F.styleOptionTerm(F.optionTerm(Z))))},0)}longestGlobalOptionTermLength(D,F){return F.visibleGlobalOptions(D).reduce((B,Z)=>{return Math.max(B,this.displayWidth(F.styleOptionTerm(F.optionTerm(Z))))},0)}longestArgumentTermLength(D,F){return F.visibleArguments(D).reduce((B,Z)=>{return Math.max(B,this.displayWidth(F.styleArgumentTerm(F.argumentTerm(Z))))},0)}commandUsage(D){let F=D._name;if(D._aliases[0])F=F+"|"+D._aliases[0];let B="";for(let Z=D.parent;Z;Z=Z.parent)B=Z.name()+" "+B;return B+F+" "+D.usage()}commandDescription(D){return D.description()}subcommandDescription(D){return D.summary()||D.description()}optionDescription(D){let F=[];if(D.argChoices)F.push(`choices: ${D.argChoices.map((B)=>JSON.stringify(B)).join(", ")}`);if(D.defaultValue!==void 0){if(D.required||D.optional||D.isBoolean()&&typeof D.defaultValue==="boolean")F.push(`default: ${D.defaultValueDescription||JSON.stringify(D.defaultValue)}`)}if(D.presetArg!==void 0&&D.optional)F.push(`preset: ${JSON.stringify(D.presetArg)}`);if(D.envVar!==void 0)F.push(`env: ${D.envVar}`);if(F.length>0){let B=`(${F.join(", ")})`;if(D.description)return`${D.description} ${B}`;return B}return D.description}argumentDescription(D){let F=[];if(D.argChoices)F.push(`choices: ${D.argChoices.map((B)=>JSON.stringify(B)).join(", ")}`);if(D.defaultValue!==void 0)F.push(`default: ${D.defaultValueDescription||JSON.stringify(D.defaultValue)}`);if(F.length>0){let B=`(${F.join(", ")})`;if(D.description)return`${D.description} ${B}`;return B}return D.description}formatItemList(D,F,B){if(F.length===0)return[];return[B.styleTitle(D),...F,""]}groupItems(D,F,B){let Z=new Map;return D.forEach((E)=>{let Y=B(E);if(!Z.has(Y))Z.set(Y,[])}),F.forEach((E)=>{let Y=B(E);if(!Z.has(Y))Z.set(Y,[]);Z.get(Y).push(E)}),Z}formatHelp(D,F){let B=F.padWidth(D,F),Z=F.helpWidth??80;function E(G,K){return F.formatItem(G,B,K,F)}let Y=[`${F.styleTitle("Usage:")} ${F.styleUsage(F.commandUsage(D))}`,""],J=F.commandDescription(D);if(J.length>0)Y=Y.concat([F.boxWrap(F.styleCommandDescription(J),Z),""]);let X=F.visibleArguments(D).map((G)=>{return E(F.styleArgumentTerm(F.argumentTerm(G)),F.styleArgumentDescription(F.argumentDescription(G)))});if(Y=Y.concat(this.formatItemList("Arguments:",X,F)),this.groupItems(D.options,F.visibleOptions(D),(G)=>G.helpGroupHeading??"Options:").forEach((G,K)=>{let W=G.map((q)=>{return E(F.styleOptionTerm(F.optionTerm(q)),F.styleOptionDescription(F.optionDescription(q)))});Y=Y.concat(this.formatItemList(K,W,F))}),F.showGlobalOptions){let G=F.visibleGlobalOptions(D).map((K)=>{return E(F.styleOptionTerm(F.optionTerm(K)),F.styleOptionDescription(F.optionDescription(K)))});Y=Y.concat(this.formatItemList("Global Options:",G,F))}return this.groupItems(D.commands,F.visibleCommands(D),(G)=>G.helpGroup()||"Commands:").forEach((G,K)=>{let W=G.map((q)=>{return E(F.styleSubcommandTerm(F.subcommandTerm(q)),F.styleSubcommandDescription(F.subcommandDescription(q)))});Y=Y.concat(this.formatItemList(K,W,F))}),Y.join(`
|
|
9
|
+
`)}displayWidth(D){return D8(D).length}styleTitle(D){return D}styleUsage(D){return D.split(" ").map((F)=>{if(F==="[options]")return this.styleOptionText(F);if(F==="[command]")return this.styleSubcommandText(F);if(F[0]==="["||F[0]==="<")return this.styleArgumentText(F);return this.styleCommandText(F)}).join(" ")}styleCommandDescription(D){return this.styleDescriptionText(D)}styleOptionDescription(D){return this.styleDescriptionText(D)}styleSubcommandDescription(D){return this.styleDescriptionText(D)}styleArgumentDescription(D){return this.styleDescriptionText(D)}styleDescriptionText(D){return D}styleOptionTerm(D){return this.styleOptionText(D)}styleSubcommandTerm(D){return D.split(" ").map((F)=>{if(F==="[options]")return this.styleOptionText(F);if(F[0]==="["||F[0]==="<")return this.styleArgumentText(F);return this.styleSubcommandText(F)}).join(" ")}styleArgumentTerm(D){return this.styleArgumentText(D)}styleOptionText(D){return D}styleArgumentText(D){return D}styleSubcommandText(D){return D}styleCommandText(D){return D}padWidth(D,F){return Math.max(F.longestOptionTermLength(D,F),F.longestGlobalOptionTermLength(D,F),F.longestSubcommandTermLength(D,F),F.longestArgumentTermLength(D,F))}preformatted(D){return/\n[^\S\r\n]/.test(D)}formatItem(D,F,B,Z){let Y=" ".repeat(2);if(!B)return Y+D;let J=D.padEnd(F+D.length-Z.displayWidth(D)),X=2,Q=(this.helpWidth??80)-F-X-2,G;if(Q<this.minWidthToWrap||Z.preformatted(B))G=B;else G=Z.boxWrap(B,Q).replace(/\n/g,`
|
|
10
|
+
`+" ".repeat(F+X));return Y+J+" ".repeat(X)+G.replace(/\n/g,`
|
|
11
|
+
${Y}`)}boxWrap(D,F){if(F<this.minWidthToWrap)return D;let B=D.split(/\r\n|\n/),Z=/[\s]*[^\s]+/g,E=[];return B.forEach((Y)=>{let J=Y.match(Z);if(J===null){E.push("");return}let X=[J.shift()],H=this.displayWidth(X[0]);J.forEach((Q)=>{let G=this.displayWidth(Q);if(H+G<=F){X.push(Q),H+=G;return}E.push(X.join(""));let K=Q.trimStart();X=[K],H=this.displayWidth(K)}),E.push(X.join(""))}),E.join(`
|
|
12
|
+
`)}}function D8(D){let F=/\x1b\[\d*(;\d*)*m/g;return D.replace(F,"")}$5.Help=e3;$5.stripColor=D8});var QF=x((u5)=>{var{InvalidArgumentError:N5}=H0();class B8{constructor(D,F){this.flags=D,this.description=F||"",this.required=D.includes("<"),this.optional=D.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(D),this.mandatory=!1;let B=V5(D);if(this.short=B.shortFlag,this.long=B.longFlag,this.negate=!1,this.long)this.negate=this.long.startsWith("--no-");this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(D,F){return this.defaultValue=D,this.defaultValueDescription=F,this}preset(D){return this.presetArg=D,this}conflicts(D){return this.conflictsWith=this.conflictsWith.concat(D),this}implies(D){let F=D;if(typeof D==="string")F={[D]:!0};return this.implied=Object.assign(this.implied||{},F),this}env(D){return this.envVar=D,this}argParser(D){return this.parseArg=D,this}makeOptionMandatory(D=!0){return this.mandatory=!!D,this}hideHelp(D=!0){return this.hidden=!!D,this}_collectValue(D,F){if(F===this.defaultValue||!Array.isArray(F))return[D];return F.push(D),F}choices(D){return this.argChoices=D.slice(),this.parseArg=(F,B)=>{if(!this.argChoices.includes(F))throw new N5(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(F,B);return F},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return F8(this.name().replace(/^no-/,""));return F8(this.name())}helpGroup(D){return this.helpGroupHeading=D,this}is(D){return this.short===D||this.long===D}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class Z8{constructor(D){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,D.forEach((F)=>{if(F.negate)this.negativeOptions.set(F.attributeName(),F);else this.positiveOptions.set(F.attributeName(),F)}),this.negativeOptions.forEach((F,B)=>{if(this.positiveOptions.has(B))this.dualOptions.add(B)})}valueFromOption(D,F){let B=F.attributeName();if(!this.dualOptions.has(B))return!0;let Z=this.negativeOptions.get(B).presetArg,E=Z!==void 0?Z:!1;return F.negate===(E===D)}}function F8(D){return D.split("-").reduce((F,B)=>{return F+B[0].toUpperCase()+B.slice(1)})}function V5(D){let F,B,Z=/^-[^-]$/,E=/^--[^-]/,Y=D.split(/[ |,]+/).concat("guard");if(Z.test(Y[0]))F=Y.shift();if(E.test(Y[0]))B=Y.shift();if(!F&&Z.test(Y[0]))F=Y.shift();if(!F&&E.test(Y[0]))F=B,B=Y.shift();if(Y[0].startsWith("-")){let J=Y[0],X=`option creation failed due to '${J}' in option flags '${D}'`;if(/^-[^-][^-]/.test(J))throw Error(`${X}
|
|
13
13
|
- a short flag is a single dash and a single character
|
|
14
14
|
- either use a single dash and a single character (for a short flag)
|
|
15
|
-
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(
|
|
16
|
-
- too many short flags`);if(
|
|
17
|
-
- too many long flags`);throw Error(`${
|
|
18
|
-
- unrecognised flag format`)}if(F===void 0&&B===void 0)throw Error(`option creation failed due to no flags found in '${D}'.`);return{shortFlag:F,longFlag:B}}
|
|
19
|
-
(Did you mean one of ${
|
|
20
|
-
(Did you mean ${
|
|
21
|
-
- specify the name in Command constructor or using .name()`);if(F=F||{},F.isDefault)this._defaultCommandName=D._name;if(F.noHelp||F.hidden)D._hidden=!0;return this._registerCommand(D),D.parent=this,D._checkForBrokenPassThrough(),this}createArgument(D,F){return new
|
|
22
|
-
Expecting one of '${B.join("', '")}'`);if(this._lifeCycleHooks[D])this._lifeCycleHooks[D].push(F);else this._lifeCycleHooks[D]=[F];return this}exitOverride(D){if(D)this._exitCallback=D;else this._exitCallback=(F)=>{if(F.code!=="commander.executeSubCommandAsync")throw F};return this}_exit(D,F,B){if(this._exitCallback)this._exitCallback(new
|
|
23
|
-
- already used by option '${F.flags}'`)}this._initOptionGroup(D),this.options.push(D)}_registerCommand(D){let F=(
|
|
24
|
-
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(D,F,B){if(g0.existsSync(D))return;let
|
|
15
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(Z.test(J))throw Error(`${X}
|
|
16
|
+
- too many short flags`);if(E.test(J))throw Error(`${X}
|
|
17
|
+
- too many long flags`);throw Error(`${X}
|
|
18
|
+
- unrecognised flag format`)}if(F===void 0&&B===void 0)throw Error(`option creation failed due to no flags found in '${D}'.`);return{shortFlag:F,longFlag:B}}u5.Option=B8;u5.DualOptions=Z8});var E8=x((L5)=>{function T5(D,F){if(Math.abs(D.length-F.length)>3)return Math.max(D.length,F.length);let B=[];for(let Z=0;Z<=D.length;Z++)B[Z]=[Z];for(let Z=0;Z<=F.length;Z++)B[0][Z]=Z;for(let Z=1;Z<=F.length;Z++)for(let E=1;E<=D.length;E++){let Y=1;if(D[E-1]===F[Z-1])Y=0;else Y=1;if(B[E][Z]=Math.min(B[E-1][Z]+1,B[E][Z-1]+1,B[E-1][Z-1]+Y),E>1&&Z>1&&D[E-1]===F[Z-2]&&D[E-2]===F[Z-1])B[E][Z]=Math.min(B[E][Z],B[E-2][Z-2]+1)}return B[D.length][F.length]}function I5(D,F){if(!F||F.length===0)return"";F=Array.from(new Set(F));let B=D.startsWith("--");if(B)D=D.slice(2),F=F.map((J)=>J.slice(2));let Z=[],E=3,Y=0.4;if(F.forEach((J)=>{if(J.length<=1)return;let X=T5(D,J),H=Math.max(D.length,J.length);if((H-X)/H>Y){if(X<E)E=X,Z=[J];else if(X===E)Z.push(J)}}),Z.sort((J,X)=>J.localeCompare(X)),B)Z=Z.map((J)=>`--${J}`);if(Z.length>1)return`
|
|
19
|
+
(Did you mean one of ${Z.join(", ")}?)`;if(Z.length===1)return`
|
|
20
|
+
(Did you mean ${Z[0]}?)`;return""}L5.suggestSimilar=I5});var Q8=x((y5)=>{var S5=hD("node:events").EventEmitter,HF=hD("node:child_process"),SD=hD("node:path"),g0=hD("node:fs"),c=hD("node:process"),{Argument:_5,humanReadableArgName:k5}=h0(),{CommanderError:GF}=H0(),{Help:f5,stripColor:O5}=XF(),{Option:Y8,DualOptions:P5}=QF(),{suggestSimilar:J8}=E8();class zF extends S5{constructor(D){super();this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=D||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:(F)=>c.stdout.write(F),writeErr:(F)=>c.stderr.write(F),outputError:(F,B)=>B(F),getOutHelpWidth:()=>c.stdout.isTTY?c.stdout.columns:void 0,getErrHelpWidth:()=>c.stderr.isTTY?c.stderr.columns:void 0,getOutHasColors:()=>KF()??(c.stdout.isTTY&&c.stdout.hasColors?.()),getErrHasColors:()=>KF()??(c.stderr.isTTY&&c.stderr.hasColors?.()),stripColor:(F)=>O5(F)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(D){return this._outputConfiguration=D._outputConfiguration,this._helpOption=D._helpOption,this._helpCommand=D._helpCommand,this._helpConfiguration=D._helpConfiguration,this._exitCallback=D._exitCallback,this._storeOptionsAsProperties=D._storeOptionsAsProperties,this._combineFlagAndOptionalValue=D._combineFlagAndOptionalValue,this._allowExcessArguments=D._allowExcessArguments,this._enablePositionalOptions=D._enablePositionalOptions,this._showHelpAfterError=D._showHelpAfterError,this._showSuggestionAfterError=D._showSuggestionAfterError,this}_getCommandAndAncestors(){let D=[];for(let F=this;F;F=F.parent)D.push(F);return D}command(D,F,B){let Z=F,E=B;if(typeof Z==="object"&&Z!==null)E=Z,Z=null;E=E||{};let[,Y,J]=D.match(/([^ ]+) *(.*)/),X=this.createCommand(Y);if(Z)X.description(Z),X._executableHandler=!0;if(E.isDefault)this._defaultCommandName=X._name;if(X._hidden=!!(E.noHelp||E.hidden),X._executableFile=E.executableFile||null,J)X.arguments(J);if(this._registerCommand(X),X.parent=this,X.copyInheritedSettings(this),Z)return this;return X}createCommand(D){return new zF(D)}createHelp(){return Object.assign(new f5,this.configureHelp())}configureHelp(D){if(D===void 0)return this._helpConfiguration;return this._helpConfiguration=D,this}configureOutput(D){if(D===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...D},this}showHelpAfterError(D=!0){if(typeof D!=="string")D=!!D;return this._showHelpAfterError=D,this}showSuggestionAfterError(D=!0){return this._showSuggestionAfterError=!!D,this}addCommand(D,F){if(!D._name)throw Error(`Command passed to .addCommand() must have a name
|
|
21
|
+
- specify the name in Command constructor or using .name()`);if(F=F||{},F.isDefault)this._defaultCommandName=D._name;if(F.noHelp||F.hidden)D._hidden=!0;return this._registerCommand(D),D.parent=this,D._checkForBrokenPassThrough(),this}createArgument(D,F){return new _5(D,F)}argument(D,F,B,Z){let E=this.createArgument(D,F);if(typeof B==="function")E.default(Z).argParser(B);else E.default(B);return this.addArgument(E),this}arguments(D){return D.trim().split(/ +/).forEach((F)=>{this.argument(F)}),this}addArgument(D){let F=this.registeredArguments.slice(-1)[0];if(F?.variadic)throw Error(`only the last argument can be variadic '${F.name()}'`);if(D.required&&D.defaultValue!==void 0&&D.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${D.name()}'`);return this.registeredArguments.push(D),this}helpCommand(D,F){if(typeof D==="boolean"){if(this._addImplicitHelpCommand=D,D&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let B=D??"help [command]",[,Z,E]=B.match(/([^ ]+) *(.*)/),Y=F??"display help for command",J=this.createCommand(Z);if(J.helpOption(!1),E)J.arguments(E);if(Y)J.description(Y);if(this._addImplicitHelpCommand=!0,this._helpCommand=J,D||F)this._initCommandGroup(J);return this}addHelpCommand(D,F){if(typeof D!=="object")return this.helpCommand(D,F),this;return this._addImplicitHelpCommand=!0,this._helpCommand=D,this._initCommandGroup(D),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(D,F){let B=["preSubcommand","preAction","postAction"];if(!B.includes(D))throw Error(`Unexpected value for event passed to hook : '${D}'.
|
|
22
|
+
Expecting one of '${B.join("', '")}'`);if(this._lifeCycleHooks[D])this._lifeCycleHooks[D].push(F);else this._lifeCycleHooks[D]=[F];return this}exitOverride(D){if(D)this._exitCallback=D;else this._exitCallback=(F)=>{if(F.code!=="commander.executeSubCommandAsync")throw F};return this}_exit(D,F,B){if(this._exitCallback)this._exitCallback(new GF(D,F,B));c.exit(D)}action(D){let F=(B)=>{let Z=this.registeredArguments.length,E=B.slice(0,Z);if(this._storeOptionsAsProperties)E[Z]=this;else E[Z]=this.opts();return E.push(this),D.apply(this,E)};return this._actionHandler=F,this}createOption(D,F){return new Y8(D,F)}_callParseArg(D,F,B,Z){try{return D.parseArg(F,B)}catch(E){if(E.code==="commander.invalidArgument"){let Y=`${Z} ${E.message}`;this.error(Y,{exitCode:E.exitCode,code:E.code})}throw E}}_registerOption(D){let F=D.short&&this._findOption(D.short)||D.long&&this._findOption(D.long);if(F){let B=D.long&&this._findOption(D.long)?D.long:D.short;throw Error(`Cannot add option '${D.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${B}'
|
|
23
|
+
- already used by option '${F.flags}'`)}this._initOptionGroup(D),this.options.push(D)}_registerCommand(D){let F=(Z)=>{return[Z.name()].concat(Z.aliases())},B=F(D).find((Z)=>this._findCommand(Z));if(B){let Z=F(this._findCommand(B)).join("|"),E=F(D).join("|");throw Error(`cannot add command '${E}' as already have command '${Z}'`)}this._initCommandGroup(D),this.commands.push(D)}addOption(D){this._registerOption(D);let F=D.name(),B=D.attributeName();if(D.negate){let E=D.long.replace(/^--no-/,"--");if(!this._findOption(E))this.setOptionValueWithSource(B,D.defaultValue===void 0?!0:D.defaultValue,"default")}else if(D.defaultValue!==void 0)this.setOptionValueWithSource(B,D.defaultValue,"default");let Z=(E,Y,J)=>{if(E==null&&D.presetArg!==void 0)E=D.presetArg;let X=this.getOptionValue(B);if(E!==null&&D.parseArg)E=this._callParseArg(D,E,X,Y);else if(E!==null&&D.variadic)E=D._collectValue(E,X);if(E==null)if(D.negate)E=!1;else if(D.isBoolean()||D.optional)E=!0;else E="";this.setOptionValueWithSource(B,E,J)};if(this.on("option:"+F,(E)=>{let Y=`error: option '${D.flags}' argument '${E}' is invalid.`;Z(E,Y,"cli")}),D.envVar)this.on("optionEnv:"+F,(E)=>{let Y=`error: option '${D.flags}' value '${E}' from env '${D.envVar}' is invalid.`;Z(E,Y,"env")});return this}_optionEx(D,F,B,Z,E){if(typeof F==="object"&&F instanceof Y8)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let Y=this.createOption(F,B);if(Y.makeOptionMandatory(!!D.mandatory),typeof Z==="function")Y.default(E).argParser(Z);else if(Z instanceof RegExp){let J=Z;Z=(X,H)=>{let Q=J.exec(X);return Q?Q[0]:H},Y.default(E).argParser(Z)}else Y.default(Z);return this.addOption(Y)}option(D,F,B,Z){return this._optionEx({},D,F,B,Z)}requiredOption(D,F,B,Z){return this._optionEx({mandatory:!0},D,F,B,Z)}combineFlagAndOptionalValue(D=!0){return this._combineFlagAndOptionalValue=!!D,this}allowUnknownOption(D=!0){return this._allowUnknownOption=!!D,this}allowExcessArguments(D=!0){return this._allowExcessArguments=!!D,this}enablePositionalOptions(D=!0){return this._enablePositionalOptions=!!D,this}passThroughOptions(D=!0){return this._passThroughOptions=!!D,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(D=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!D,this}getOptionValue(D){if(this._storeOptionsAsProperties)return this[D];return this._optionValues[D]}setOptionValue(D,F){return this.setOptionValueWithSource(D,F,void 0)}setOptionValueWithSource(D,F,B){if(this._storeOptionsAsProperties)this[D]=F;else this._optionValues[D]=F;return this._optionValueSources[D]=B,this}getOptionValueSource(D){return this._optionValueSources[D]}getOptionValueSourceWithGlobals(D){let F;return this._getCommandAndAncestors().forEach((B)=>{if(B.getOptionValueSource(D)!==void 0)F=B.getOptionValueSource(D)}),F}_prepareUserArgs(D,F){if(D!==void 0&&!Array.isArray(D))throw Error("first parameter to parse must be array or undefined");if(F=F||{},D===void 0&&F.from===void 0){if(c.versions?.electron)F.from="electron";let Z=c.execArgv??[];if(Z.includes("-e")||Z.includes("--eval")||Z.includes("-p")||Z.includes("--print"))F.from="eval"}if(D===void 0)D=c.argv;this.rawArgs=D.slice();let B;switch(F.from){case void 0:case"node":this._scriptPath=D[1],B=D.slice(2);break;case"electron":if(c.defaultApp)this._scriptPath=D[1],B=D.slice(2);else B=D.slice(1);break;case"user":B=D.slice(0);break;case"eval":B=D.slice(1);break;default:throw Error(`unexpected parse option { from: '${F.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",B}parse(D,F){this._prepareForParse();let B=this._prepareUserArgs(D,F);return this._parseCommand([],B),this}async parseAsync(D,F){this._prepareForParse();let B=this._prepareUserArgs(D,F);return await this._parseCommand([],B),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
24
|
+
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(D,F,B){if(g0.existsSync(D))return;let Z=F?`searched for local subcommand relative to directory '${F}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",E=`'${D}' does not exist
|
|
25
25
|
- if '${B}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
26
26
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
27
|
-
- ${
|
|
27
|
+
- ${Z}`;throw Error(E)}_executeSubCommand(D,F){F=F.slice();let B=!1,Z=[".js",".ts",".tsx",".mjs",".cjs"];function E(Q,G){let K=SD.resolve(Q,G);if(g0.existsSync(K))return K;if(Z.includes(SD.extname(G)))return;let W=Z.find((q)=>g0.existsSync(`${K}${q}`));if(W)return`${K}${W}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let Y=D._executableFile||`${this._name}-${D._name}`,J=this._executableDir||"";if(this._scriptPath){let Q;try{Q=g0.realpathSync(this._scriptPath)}catch{Q=this._scriptPath}J=SD.resolve(SD.dirname(Q),J)}if(J){let Q=E(J,Y);if(!Q&&!D._executableFile&&this._scriptPath){let G=SD.basename(this._scriptPath,SD.extname(this._scriptPath));if(G!==this._name)Q=E(J,`${G}-${D._name}`)}Y=Q||Y}B=Z.includes(SD.extname(Y));let X;if(c.platform!=="win32")if(B)F.unshift(Y),F=X8(c.execArgv).concat(F),X=HF.spawn(c.argv[0],F,{stdio:"inherit"});else X=HF.spawn(Y,F,{stdio:"inherit"});else this._checkForMissingExecutable(Y,J,D._name),F.unshift(Y),F=X8(c.execArgv).concat(F),X=HF.spawn(c.execPath,F,{stdio:"inherit"});if(!X.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((G)=>{c.on(G,()=>{if(X.killed===!1&&X.exitCode===null)X.kill(G)})});let H=this._exitCallback;X.on("close",(Q)=>{if(Q=Q??1,!H)c.exit(Q);else H(new GF(Q,"commander.executeSubCommandAsync","(close)"))}),X.on("error",(Q)=>{if(Q.code==="ENOENT")this._checkForMissingExecutable(Y,J,D._name);else if(Q.code==="EACCES")throw Error(`'${Y}' not executable`);if(!H)c.exit(1);else{let G=new GF(1,"commander.executeSubCommandAsync","(error)");G.nestedError=Q,H(G)}}),this.runningCommand=X}_dispatchSubcommand(D,F,B){let Z=this._findCommand(D);if(!Z)this.help({error:!0});Z._prepareForParse();let E;return E=this._chainOrCallSubCommandHook(E,Z,"preSubcommand"),E=this._chainOrCall(E,()=>{if(Z._executableHandler)this._executeSubCommand(Z,F.concat(B));else return Z._parseCommand(F,B)}),E}_dispatchHelpCommand(D){if(!D)this.help();let F=this._findCommand(D);if(F&&!F._executableHandler)F.help();return this._dispatchSubcommand(D,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((D,F)=>{if(D.required&&this.args[F]==null)this.missingArgument(D.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let D=(B,Z,E)=>{let Y=Z;if(Z!==null&&B.parseArg){let J=`error: command-argument value '${Z}' is invalid for argument '${B.name()}'.`;Y=this._callParseArg(B,Z,E,J)}return Y};this._checkNumberOfArguments();let F=[];this.registeredArguments.forEach((B,Z)=>{let E=B.defaultValue;if(B.variadic){if(Z<this.args.length){if(E=this.args.slice(Z),B.parseArg)E=E.reduce((Y,J)=>{return D(B,J,Y)},B.defaultValue)}else if(E===void 0)E=[]}else if(Z<this.args.length){if(E=this.args[Z],B.parseArg)E=D(B,E,B.defaultValue)}F[Z]=E}),this.processedArgs=F}_chainOrCall(D,F){if(D?.then&&typeof D.then==="function")return D.then(()=>F());return F()}_chainOrCallHooks(D,F){let B=D,Z=[];if(this._getCommandAndAncestors().reverse().filter((E)=>E._lifeCycleHooks[F]!==void 0).forEach((E)=>{E._lifeCycleHooks[F].forEach((Y)=>{Z.push({hookedCommand:E,callback:Y})})}),F==="postAction")Z.reverse();return Z.forEach((E)=>{B=this._chainOrCall(B,()=>{return E.callback(E.hookedCommand,this)})}),B}_chainOrCallSubCommandHook(D,F,B){let Z=D;if(this._lifeCycleHooks[B]!==void 0)this._lifeCycleHooks[B].forEach((E)=>{Z=this._chainOrCall(Z,()=>{return E(this,F)})});return Z}_parseCommand(D,F){let B=this.parseOptions(F);if(this._parseOptionsEnv(),this._parseOptionsImplied(),D=D.concat(B.operands),F=B.unknown,this.args=D.concat(F),D&&this._findCommand(D[0]))return this._dispatchSubcommand(D[0],D.slice(1),F);if(this._getHelpCommand()&&D[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(D[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(F),this._dispatchSubcommand(this._defaultCommandName,D,F);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(B.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let Z=()=>{if(B.unknown.length>0)this.unknownOption(B.unknown[0])},E=`command:${this.name()}`;if(this._actionHandler){Z(),this._processArguments();let Y;if(Y=this._chainOrCallHooks(Y,"preAction"),Y=this._chainOrCall(Y,()=>this._actionHandler(this.processedArgs)),this.parent)Y=this._chainOrCall(Y,()=>{this.parent.emit(E,D,F)});return Y=this._chainOrCallHooks(Y,"postAction"),Y}if(this.parent?.listenerCount(E))Z(),this._processArguments(),this.parent.emit(E,D,F);else if(D.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",D,F);if(this.listenerCount("command:*"))this.emit("command:*",D,F);else if(this.commands.length)this.unknownCommand();else Z(),this._processArguments()}else if(this.commands.length)Z(),this.help({error:!0});else Z(),this._processArguments()}_findCommand(D){if(!D)return;return this.commands.find((F)=>F._name===D||F._aliases.includes(D))}_findOption(D){return this.options.find((F)=>F.is(D))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((D)=>{D.options.forEach((F)=>{if(F.mandatory&&D.getOptionValue(F.attributeName())===void 0)D.missingMandatoryOptionValue(F)})})}_checkForConflictingLocalOptions(){let D=this.options.filter((B)=>{let Z=B.attributeName();if(this.getOptionValue(Z)===void 0)return!1;return this.getOptionValueSource(Z)!=="default"});D.filter((B)=>B.conflictsWith.length>0).forEach((B)=>{let Z=D.find((E)=>B.conflictsWith.includes(E.attributeName()));if(Z)this._conflictingOption(B,Z)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((D)=>{D._checkForConflictingLocalOptions()})}parseOptions(D){let F=[],B=[],Z=F;function E(Q){return Q.length>1&&Q[0]==="-"}let Y=(Q)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(Q))return!1;return!this._getCommandAndAncestors().some((G)=>G.options.map((K)=>K.short).some((K)=>/^-\d$/.test(K)))},J=null,X=null,H=0;while(H<D.length||X){let Q=X??D[H++];if(X=null,Q==="--"){if(Z===B)Z.push(Q);Z.push(...D.slice(H));break}if(J&&(!E(Q)||Y(Q))){this.emit(`option:${J.name()}`,Q);continue}if(J=null,E(Q)){let G=this._findOption(Q);if(G){if(G.required){let K=D[H++];if(K===void 0)this.optionMissingArgument(G);this.emit(`option:${G.name()}`,K)}else if(G.optional){let K=null;if(H<D.length&&(!E(D[H])||Y(D[H])))K=D[H++];this.emit(`option:${G.name()}`,K)}else this.emit(`option:${G.name()}`);J=G.variadic?G:null;continue}}if(Q.length>2&&Q[0]==="-"&&Q[1]!=="-"){let G=this._findOption(`-${Q[1]}`);if(G){if(G.required||G.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${G.name()}`,Q.slice(2));else this.emit(`option:${G.name()}`),X=`-${Q.slice(2)}`;continue}}if(/^--[^=]+=/.test(Q)){let G=Q.indexOf("="),K=this._findOption(Q.slice(0,G));if(K&&(K.required||K.optional)){this.emit(`option:${K.name()}`,Q.slice(G+1));continue}}if(Z===F&&E(Q)&&!(this.commands.length===0&&Y(Q)))Z=B;if((this._enablePositionalOptions||this._passThroughOptions)&&F.length===0&&B.length===0){if(this._findCommand(Q)){F.push(Q),B.push(...D.slice(H));break}else if(this._getHelpCommand()&&Q===this._getHelpCommand().name()){F.push(Q,...D.slice(H));break}else if(this._defaultCommandName){B.push(Q,...D.slice(H));break}}if(this._passThroughOptions){Z.push(Q,...D.slice(H));break}Z.push(Q)}return{operands:F,unknown:B}}opts(){if(this._storeOptionsAsProperties){let D={},F=this.options.length;for(let B=0;B<F;B++){let Z=this.options[B].attributeName();D[Z]=Z===this._versionOptionName?this._version:this[Z]}return D}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((D,F)=>Object.assign(D,F.opts()),{})}error(D,F){if(this._outputConfiguration.outputError(`${D}
|
|
28
28
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
29
29
|
`);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
|
|
30
|
-
`),this.outputHelp({error:!0});let B=F||{},
|
|
31
|
-
`),this._exit(0,"commander.version",D)}),this}description(D,F){if(D===void 0&&F===void 0)return this._description;if(this._description=D,F)this._argsDescription=F;return this}summary(D){if(D===void 0)return this._summary;return this._summary=D,this}alias(D){if(D===void 0)return this._aliases[0];let F=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)F=this.commands[this.commands.length-1];if(D===F._name)throw Error("Command alias can't be the same as its name");let B=this.parent?._findCommand(D);if(B){let
|
|
32
|
-
Expecting one of '${B.join("', '")}'`);let
|
|
33
|
-
`)}),this}_outputHelpIfRequested(D){let F=this._getHelpOption();if(F&&D.find((E)=>F.is(E)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function Y8(D){return D.map((F)=>{if(!F.startsWith("--inspect"))return F;let B,E="127.0.0.1",Z="9229",J;if((J=F.match(/^(--inspect(-brk)?)$/))!==null)B=J[1];else if((J=F.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(B=J[1],/^\d+$/.test(J[3]))Z=J[3];else E=J[3];else if((J=F.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)B=J[1],E=J[3],Z=J[4];if(B&&Z!=="0")return`${B}=${E}:${parseInt(Z)+1}`;return F})}function GF(){if(c.env.NO_COLOR||c.env.FORCE_COLOR==="0"||c.env.FORCE_COLOR==="false")return!1;if(c.env.FORCE_COLOR||c.env.CLICOLOR_FORCE!==void 0)return!0;return}P5.Command=KF;P5.useColor=GF});var qF=w((b5)=>{var{Argument:X8}=h0(),{Command:zF}=H8(),{CommanderError:w5,InvalidArgumentError:Q8}=Q0(),{Help:x5}=HF(),{Option:C8}=XF();b5.program=new zF;b5.createCommand=(D)=>new zF(D);b5.createOption=(D,F)=>new C8(D,F);b5.createArgument=(D,F)=>new X8(D,F);b5.Command=zF;b5.Option=C8;b5.Argument=X8;b5.Help=x5;b5.CommanderError=w5;b5.InvalidArgumentError=Q8;b5.InvalidOptionArgumentError=Q8});var K8=w((QD,G8)=>{var uD=qF();QD=G8.exports={};QD.program=new uD.Command;QD.Argument=uD.Argument;QD.Command=uD.Command;QD.CommanderError=uD.CommanderError;QD.Help=uD.Help;QD.InvalidArgumentError=uD.InvalidArgumentError;QD.InvalidOptionArgumentError=uD.InvalidArgumentError;QD.Option=uD.Option;QD.createCommand=(D)=>new uD.Command(D);QD.createOption=(D,F)=>new uD.Option(D,F);QD.createArgument=(D,F)=>new uD.Argument(D,F)});var fF=w((OY,m8)=>{var LF={to(D,F){if(!F)return`\x1B[${D+1}G`;return`\x1B[${F+1};${D+1}H`},move(D,F){let B="";if(D<0)B+=`\x1B[${-D}D`;else if(D>0)B+=`\x1B[${D}C`;if(F<0)B+=`\x1B[${-F}A`;else if(F>0)B+=`\x1B[${F}B`;return B},up:(D=1)=>`\x1B[${D}A`,down:(D=1)=>`\x1B[${D}B`,forward:(D=1)=>`\x1B[${D}C`,backward:(D=1)=>`\x1B[${D}D`,nextLine:(D=1)=>"\x1B[E".repeat(D),prevLine:(D=1)=>"\x1B[F".repeat(D),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},L7={up:(D=1)=>"\x1B[S".repeat(D),down:(D=1)=>"\x1B[T".repeat(D)},f7={screen:"\x1B[2J",up:(D=1)=>"\x1B[1J".repeat(D),down:(D=1)=>"\x1B[J".repeat(D),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(D){let F="";for(let B=0;B<D;B++)F+=this.line+(B<D-1?LF.up():"");if(D)F+=LF.left;return F}};m8.exports={cursor:LF,scroll:L7,erase:f7,beep:"\x07"}});class J0 extends Error{envName;constructor(D){super(`Not authenticated for backend "${D}".`);this.envName=D;this.name="NotAuthenticatedError"}}class nD extends Error{constructor(){super("Authorization was denied.");this.name="DeviceFlowDenied"}}class gD extends Error{constructor(){super("Device code expired.");this.name="DeviceFlowExpired"}}class k extends Error{envName;constructor(D){super(`Session expired for "${D}".`);this.envName=D;this.name="SessionExpiredError"}}var M3=ID($3(),1),s=ID(s2(),1),K={bold:s.default.bold,dim:s.default.dim,italic:s.default.italic,underline:s.default.underline,cyan:s.default.cyan,green:s.default.green,yellow:s.default.yellow,red:s.default.red,gray:s.default.gray,blue:s.default.blue,magenta:s.default.magenta,success:(D)=>s.default.green(`✓ ${D}`),error:(D)=>s.default.red(`✗ ${D}`),info:(D)=>s.default.cyan(`◆ ${D}`),warn:(D)=>s.default.yellow(`! ${D}`),hint:(D)=>s.default.dim(D)};function KD(D,F){let B=new M3.default({head:D.map((E)=>K.bold(E)),style:{head:[],border:["gray"]}});for(let E of F)B.push(E);console.log(B.toString())}function b(D){console.log(JSON.stringify(D,null,2))}function _(D){if(D instanceof Error)return D.message;if(typeof D==="string")return D;if(typeof D==="object"&&D!==null){let F=D,B=F.status?` [${F.status}]`:"";if(typeof F.value==="string")return F.value+B;if(typeof F.value==="object"&&F.value!==null){let E=F.value;if(E.error)return String(E.error)+B;if(E.message)return String(E.message)+B}return JSON.stringify(F.value??D)+B}return String(D)}function W(D,F={}){if(console.error(K.error(D)),F.hint)console.error(K.hint(` Hint: ${F.hint}`));if(F.context)console.error(K.dim(` ${F.context}`));process.exit(F.code??1)}import T9 from"update-notifier";var M9=()=>Boolean(process.stdout.isTTY),V9=()=>Boolean(process.stdin.isTTY),A9=()=>Boolean(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI||process.env.BUILDKITE||process.env.TF_BUILD);var XD=()=>M9()&&V9()&&!A9();var ED={name:"@photon-ai/cli",version:"2.1.0",description:"Photon CLI — typed terminal UI for the Photon Dashboard. Binary: `photon` (alias `pho`).",keywords:["photon","cli","dashboard","spectrum","messaging","imessage","developer-tools"],author:"Photon",license:"MIT",homepage:"https://github.com/photon-hq/cli#readme",repository:{type:"git",url:"git+https://github.com/photon-hq/cli.git"},bugs:{url:"https://github.com/photon-hq/cli/issues"},type:"module",bin:{photon:"./dist/photon.js",pho:"./dist/photon.js"},files:["dist","README.md"],publishConfig:{access:"public"},engines:{bun:">=1.3.0",node:">=18.0.0"},scripts:{start:"bun run src/index.ts",dev:"bun run --watch src/index.ts",build:"bun build ./src/index.ts --outfile dist/photon.js --target node --minify --external update-notifier && chmod +x dist/photon.js",compile:"bun build ./src/index.ts --compile --outfile dist/photon",typecheck:"tsc --noEmit",test:"bun test",check:"bun run typecheck && bun test && bun run build",manifest:"bun run scripts/generate-route-manifest.ts",prepublishOnly:"bun run typecheck && bun run build"},devDependencies:{"@photon-ai/dashboard-api":"1.6.12","@types/bun":"latest","@types/node":"^25.6.2","@types/semver":"^7.7.1","@types/update-notifier":"^6.0.8",elysia:"1.4.28",typescript:"^5"},dependencies:{"@clack/prompts":"^1.2.0","@commander-js/extra-typings":"^14.0.0","@elysiajs/eden":"1.4.9","better-auth":"1.4.18","cli-table3":"^0.6.5",commander:"^14.0.3",open:"^11.0.0",picocolors:"^1.1.1",semver:"^7.8.5","update-notifier":"^7.3.1"}};function V3(D={}){if(!(D.interactive??XD)())return;if(process.env.PHOTON_NO_UPDATE_NOTIFIER==="1")return;(D.createNotifier??T9)({pkg:{name:ED.name,version:ED.version},updateCheckInterval:86400000}).notify({defer:!0,isGlobal:!0})}var a3=ID(v3(),1),v0=ID(d3(),1);import{spawn as p3}from"node:child_process";import{createHash as r9}from"node:crypto";import LD from"node:fs";import EF from"node:path";import s9 from"update-notifier";var ZF=["npm","pnpm","yarn","bun"];async function o9(){let D=process.env.NO_UPDATE_NOTIFIER;process.env.NO_UPDATE_NOTIFIER="1";let F;try{({latest:F}=await s9({pkg:{name:ED.name,version:ED.version}}).fetchInfo())}catch(B){throw Error("Could not reach the Photon update registry.",{cause:B})}finally{if(D===void 0)delete process.env.NO_UPDATE_NOTIFIER;else process.env.NO_UPDATE_NOTIFIER=D}if(!v0.default(F))throw Error("The Photon update registry returned an invalid version.");return F}function JF(D){try{return LD.realpathSync.native(D)}catch{return EF.resolve(D)}}function t9(D=process.argv[1]??"",F=process.execPath,B=process.env){if(!D)return{kind:"unknown",entryPath:D};let E=EF.resolve(D),Z=JF(D),J=JF(F),Y=D.replaceAll("\\","/");if(Z===J||Y.startsWith("/$bunfs/root/"))return{kind:"standalone",entryPath:EF.resolve(F)};let H=Z.replaceAll("\\","/").toLowerCase();if(H.includes("/.npm/_npx/")||H.includes("/.bun/install/cache/@photon-ai/cli@")||H.includes("/node_modules/.cache/bunx-")||H.includes("/tmp/dlx-")&&H.includes("/node_modules/"))return{kind:"ephemeral",entryPath:E};if(H.includes("/.bun/install/global/"))return{kind:"bun",entryPath:E};if(H.includes("/pnpm/global/")||H.includes("/.pnpm/global/"))return{kind:"pnpm",entryPath:E};if(H.includes("/.config/yarn/global/")||H.includes("/yarn/global/"))return{kind:"yarn",entryPath:E};if(H.includes("/lib/node_modules/@photon-ai/cli/")||H.includes("/npm/node_modules/@photon-ai/cli/"))return{kind:"npm",entryPath:E};let Q=/^yarn\/(\d+)(?:\.|\s|$)/i.exec(B.npm_config_user_agent??"")?.[1];if(Q&&Number(Q)>=2){let X=(B.INIT_CWD??"").replaceAll("\\","/"),C=/\/dlx-[^/]+(?:\/|$)/i;if(C.test(Y)&&(Y.includes("/.yarn/")||C.test(X)))return{kind:"yarn-dlx",entryPath:E};return{kind:"yarn-berry",entryPath:E}}if(!H.includes("/node_modules/@photon-ai/cli/"))return{kind:"development",entryPath:E};return{kind:"unknown",entryPath:E}}function i3(D){if(ZF.includes(D))return D;throw Error(`Unknown installer "${D}". Expected one of: ${ZF.join(", ")}.`)}function e9(D,F,B=!1){let E=`${ED.name}@${F}`,Z=B?["--force"]:[];if(D==="npm")return{command:D,args:["install","--global",...Z,E]};if(D==="yarn")return{command:D,args:["global","add",...Z,E]};return{command:D,args:["add","--global",...Z,E]}}async function D5(D,F){await new Promise((B,E)=>{let Z=p3(D.command,D.args,{shell:!1,stdio:F?["ignore","ignore","pipe"]:"inherit"}),J="";Z.stderr?.on("data",(Y)=>{J=(J+String(Y)).slice(-8192)}),Z.on("error",(Y)=>{E(Error(`Could not start ${D.command}. Make sure it is installed and on PATH.`,{cause:Y}))}),Z.on("close",(Y,H)=>{if(Y===0){B();return}let Q=J.trim(),X=H?`signal ${H}`:`exit code ${Y??"unknown"}`;E(Error(`The ${D.command} updater failed with ${X}.${Q?` ${Q}`:""}`))})})}async function F5(D,F){let B=await new Promise((E,Z)=>{let J=p3(process.execPath,[D,"--version"],{shell:!1,stdio:["ignore","pipe","pipe"],env:{...process.env,PHOTON_NO_UPDATE_NOTIFIER:"1"}}),Y="",H="";J.stdout.on("data",(Q)=>{Y=(Y+String(Q)).slice(-8192)}),J.stderr.on("data",(Q)=>{H=(H+String(Q)).slice(-8192)}),J.on("error",(Q)=>{Z(Error("Could not launch the updated Photon executable.",{cause:Q}))}),J.on("close",(Q,X)=>{if(Q===0){E(Y.trim());return}let C=X?`signal ${X}`:`exit code ${Q??"unknown"}`;Z(Error(`The updated Photon executable failed with ${C}.${H.trim()?` ${H.trim()}`:""}`))})});if(B!==F)throw Error(`The installer completed, but ${D} reports ${B||"no version"} instead of ${F}.`)}function B5(){let D=process.platform==="darwin"?"darwin":process.platform;if(D!=="darwin"&&D!=="linux")throw Error(`Standalone updates are not supported on ${process.platform}.`);if(process.arch!=="arm64"&&process.arch!=="x64")throw Error(`Standalone updates are not supported on ${process.arch}.`);return`photon-${D}-${process.arch}`}async function E5(D,F,B={}){let E=B5(),J=`${(B.releaseBase??"https://github.com/photon-hq/cli/releases/download").replace(/\/$/,"")}/v${F}/${E}`,Y={signal:AbortSignal.timeout(60000)},H,Q;try{[H,Q]=await Promise.all([fetch(J,Y),fetch(`${J}.sha256`,Y)])}catch(z){throw Error("Could not reach the Photon release downloads.",{cause:z})}if(!H.ok||!Q.ok)throw Error(`Could not download Photon ${F} (${H.status}/${Q.status}).`);let X;try{X=await Q.text()}catch(z){throw Error("Could not read the Photon release checksum.",{cause:z})}let C=X.trim().split(/\s+/,1)[0]?.toLowerCase();if(!C||!/^[a-f0-9]{64}$/.test(C))throw Error("The standalone checksum file is invalid.");let G=JF(D),u=`${G}.update-${process.pid}-${Date.now()}`,q;try{if(!H.body)throw Error("The standalone download returned an empty body.");let z;try{let $=LD.statSync(G).mode&511;q=LD.openSync(u,"wx",$||493);let M=r9("sha256"),I=H.body.getReader();while(!0){let{done:V,value:N}=await I.read();if(V)break;M.update(N);let U=0;while(U<N.byteLength){let R=LD.writeSync(q,N,U,N.byteLength-U);if(R===0)throw Error("Writing the update made no progress.");U+=R}}LD.fsyncSync(q),LD.closeSync(q),q=void 0,z=M.digest("hex")}catch($){throw Error(`Could not stage the Photon update beside ${G}. Check the download and file permissions.`,{cause:$})}if(z!==C)throw Error("The downloaded Photon binary failed checksum verification.");try{LD.renameSync(u,G)}catch($){throw Error(`Could not replace ${G}. Check that the file is writable.`,{cause:$})}}finally{if(q!==void 0)try{LD.closeSync(q)}catch{}try{LD.rmSync(u,{force:!0})}catch{}}}function n3(D){return D.slice(2).find((B)=>!B.startsWith("-"))==="update"}function l3(D){if(D.kind==="npm"||D.kind==="pnpm"||D.kind==="yarn"||D.kind==="bun"||D.kind==="standalone")return D.kind;if(D.kind==="ephemeral")throw Error(`A one-off Photon invocation cannot update itself. Run your package runner with ${ED.name}@latest instead.`);if(D.kind==="development")throw Error("A development checkout cannot update itself. Update the checkout with Git instead.");if(D.kind==="yarn-dlx")throw Error(`A Yarn dlx invocation cannot update itself. Run \`yarn dlx --package ${ED.name}@latest photon\` instead.`);if(D.kind==="yarn-berry")throw Error(`Yarn 2+ does not provide global installs. Run \`yarn up ${ED.name}\` from the project that owns this dependency.`);throw Error(`Cannot detect this Photon installation automatically. Re-run with --installer ${ZF.join("|")}.`)}function Z5(D,F){if(!F)return l3(D);if(D.kind==="unknown")return F;if(D.kind===F)return F;if(D.kind==="development"||D.kind==="ephemeral")return l3(D);throw Error(`This Photon invocation was detected as ${D.kind}; refusing to update a different ${F} installation.`)}async function r3(D={},F={}){let B=F.currentVersion??ED.version,E=await(F.latestVersion??o9)();if(!v0.default(B)||!v0.default(E))throw Error("Cannot compare invalid Photon release versions.");let Z=a3.default(E,B);if(!Z&&!D.force)return{status:"up-to-date",currentVersion:B,latestVersion:E,installer:null};if(D.check)return{status:Z?"update-available":"up-to-date",currentVersion:B,latestVersion:E,installer:null};let J=F.installation??t9(),Y=Z5(J,D.installer),H=Z?E:B;if(Y==="standalone")await(F.replaceStandalone??E5)(J.entryPath,H);else await(F.runInstaller??D5)(e9(Y,H,D.force),D.quiet??!1),await(F.verifyInstalled??F5)(J.entryPath,H);return{status:Z?"updated":"reinstalled",currentVersion:B,latestVersion:E,installer:Y}}var z8=ID(K8(),1),{program:LJ,createCommand:fJ,createArgument:SJ,createOption:_J,CommanderError:kJ,InvalidArgumentError:PJ,InvalidOptionArgumentError:OJ,Command:q8,Argument:yJ,Option:wJ,Help:xJ}=z8.default;import{existsSync as u8,renameSync as r5}from"node:fs";import W8 from"node:os";import oD from"node:path";var $8="https://app.photon.codes";function s5(D){return D??process.env.PHOTON_API_HOST??$8}function uF(D){try{return new URL(D).origin}catch{throw Error(`Invalid API host URL: "${D}". Must include scheme — e.g. https://your.host.tld.`)}}function U8(D){let F=uF(s5(D));return{name:o5(F),url:F}}function o5(D){let F;try{F=new URL(D)}catch{throw Error(`Invalid API host URL: "${D}". Must include scheme — e.g. https://your.host.tld.`)}if(F.origin===$8)return"production";let B=F.hostname.toLowerCase().replace(/[[\]]/g,"").replace(/[.:%]/g,"_"),E=F.port?`_${F.port}`:"",Z=`${B}${E}`;if(Z.length>64)throw Error(`API host "${D}" produces a key longer than 64 characters (got ${Z.length}). Use a shorter hostname or alias the host in your local hosts file / DNS.`);return Z}var t5=/^[a-z0-9_][a-z0-9_-]{0,63}$/;function e5(D){if(!t5.test(D))throw Error(`Invalid environment key "${D}" — must be 1-64 chars, `+"start with a-z, 0-9, or '_', and only contain a-z, 0-9, '-', '_'.")}function m0(){let D=process.env.PHOTON_CONFIG_DIR??process.env.DASHBOARD_CONFIG_DIR;if(D)return D;let F=process.env.XDG_CONFIG_HOME,B=F?oD.join(F,"photon"):oD.join(W8.homedir(),".config","photon"),E=F?oD.join(F,"photon-dashboard"):oD.join(W8.homedir(),".config","photon-dashboard"),Z=B;if(!u8(B)&&u8(E))try{r5(E,B)}catch{Z=E}return Z}var WF=()=>oD.join(m0(),"credentials"),c0=(D)=>{return e5(D),oD.join(WF(),`${D}.json`)};async function JD(D){return U8(D)}import{chmod as D7,mkdir as F7,readdir as B7,readFile as E7,unlink as Z7,writeFile as J7}from"node:fs/promises";import{dirname as Y7}from"node:path";async function tD(D){try{let F=await E7(c0(D),"utf-8");return JSON.parse(F)}catch{return null}}async function N8(D){let F=c0(D.envName);await F7(Y7(F),{recursive:!0}),await J7(F,JSON.stringify(D,null,2)+`
|
|
34
|
-
`,"utf-8"),await
|
|
35
|
-
`),
|
|
30
|
+
`),this.outputHelp({error:!0});let B=F||{},Z=B.exitCode||1,E=B.code||"commander.error";this._exit(Z,E,D)}_parseOptionsEnv(){this.options.forEach((D)=>{if(D.envVar&&D.envVar in c.env){let F=D.attributeName();if(this.getOptionValue(F)===void 0||["default","config","env"].includes(this.getOptionValueSource(F)))if(D.required||D.optional)this.emit(`optionEnv:${D.name()}`,c.env[D.envVar]);else this.emit(`optionEnv:${D.name()}`)}})}_parseOptionsImplied(){let D=new P5(this.options),F=(B)=>{return this.getOptionValue(B)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(B))};this.options.filter((B)=>B.implied!==void 0&&F(B.attributeName())&&D.valueFromOption(this.getOptionValue(B.attributeName()),B)).forEach((B)=>{Object.keys(B.implied).filter((Z)=>!F(Z)).forEach((Z)=>{this.setOptionValueWithSource(Z,B.implied[Z],"implied")})})}missingArgument(D){let F=`error: missing required argument '${D}'`;this.error(F,{code:"commander.missingArgument"})}optionMissingArgument(D){let F=`error: option '${D.flags}' argument missing`;this.error(F,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(D){let F=`error: required option '${D.flags}' not specified`;this.error(F,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(D,F){let B=(Y)=>{let J=Y.attributeName(),X=this.getOptionValue(J),H=this.options.find((G)=>G.negate&&J===G.attributeName()),Q=this.options.find((G)=>!G.negate&&J===G.attributeName());if(H&&(H.presetArg===void 0&&X===!1||H.presetArg!==void 0&&X===H.presetArg))return H;return Q||Y},Z=(Y)=>{let J=B(Y),X=J.attributeName();if(this.getOptionValueSource(X)==="env")return`environment variable '${J.envVar}'`;return`option '${J.flags}'`},E=`error: ${Z(D)} cannot be used with ${Z(F)}`;this.error(E,{code:"commander.conflictingOption"})}unknownOption(D){if(this._allowUnknownOption)return;let F="";if(D.startsWith("--")&&this._showSuggestionAfterError){let Z=[],E=this;do{let Y=E.createHelp().visibleOptions(E).filter((J)=>J.long).map((J)=>J.long);Z=Z.concat(Y),E=E.parent}while(E&&!E._enablePositionalOptions);F=J8(D,Z)}let B=`error: unknown option '${D}'${F}`;this.error(B,{code:"commander.unknownOption"})}_excessArguments(D){if(this._allowExcessArguments)return;let F=this.registeredArguments.length,B=F===1?"":"s",E=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${F} argument${B} but got ${D.length}.`;this.error(E,{code:"commander.excessArguments"})}unknownCommand(){let D=this.args[0],F="";if(this._showSuggestionAfterError){let Z=[];this.createHelp().visibleCommands(this).forEach((E)=>{if(Z.push(E.name()),E.alias())Z.push(E.alias())}),F=J8(D,Z)}let B=`error: unknown command '${D}'${F}`;this.error(B,{code:"commander.unknownCommand"})}version(D,F,B){if(D===void 0)return this._version;this._version=D,F=F||"-V, --version",B=B||"output the version number";let Z=this.createOption(F,B);return this._versionOptionName=Z.attributeName(),this._registerOption(Z),this.on("option:"+Z.name(),()=>{this._outputConfiguration.writeOut(`${D}
|
|
31
|
+
`),this._exit(0,"commander.version",D)}),this}description(D,F){if(D===void 0&&F===void 0)return this._description;if(this._description=D,F)this._argsDescription=F;return this}summary(D){if(D===void 0)return this._summary;return this._summary=D,this}alias(D){if(D===void 0)return this._aliases[0];let F=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)F=this.commands[this.commands.length-1];if(D===F._name)throw Error("Command alias can't be the same as its name");let B=this.parent?._findCommand(D);if(B){let Z=[B.name()].concat(B.aliases()).join("|");throw Error(`cannot add alias '${D}' to command '${this.name()}' as already have command '${Z}'`)}return F._aliases.push(D),this}aliases(D){if(D===void 0)return this._aliases;return D.forEach((F)=>this.alias(F)),this}usage(D){if(D===void 0){if(this._usage)return this._usage;let F=this.registeredArguments.map((B)=>{return k5(B)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?F:[]).join(" ")}return this._usage=D,this}name(D){if(D===void 0)return this._name;return this._name=D,this}helpGroup(D){if(D===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=D,this}commandsGroup(D){if(D===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=D,this}optionsGroup(D){if(D===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=D,this}_initOptionGroup(D){if(this._defaultOptionGroup&&!D.helpGroupHeading)D.helpGroup(this._defaultOptionGroup)}_initCommandGroup(D){if(this._defaultCommandGroup&&!D.helpGroup())D.helpGroup(this._defaultCommandGroup)}nameFromFilename(D){return this._name=SD.basename(D,SD.extname(D)),this}executableDir(D){if(D===void 0)return this._executableDir;return this._executableDir=D,this}helpInformation(D){let F=this.createHelp(),B=this._getOutputContext(D);F.prepareContext({error:B.error,helpWidth:B.helpWidth,outputHasColors:B.hasColors});let Z=F.formatHelp(this,F);if(B.hasColors)return Z;return this._outputConfiguration.stripColor(Z)}_getOutputContext(D){D=D||{};let F=!!D.error,B,Z,E;if(F)B=(J)=>this._outputConfiguration.writeErr(J),Z=this._outputConfiguration.getErrHasColors(),E=this._outputConfiguration.getErrHelpWidth();else B=(J)=>this._outputConfiguration.writeOut(J),Z=this._outputConfiguration.getOutHasColors(),E=this._outputConfiguration.getOutHelpWidth();return{error:F,write:(J)=>{if(!Z)J=this._outputConfiguration.stripColor(J);return B(J)},hasColors:Z,helpWidth:E}}outputHelp(D){let F;if(typeof D==="function")F=D,D=void 0;let B=this._getOutputContext(D),Z={error:B.error,write:B.write,command:this};this._getCommandAndAncestors().reverse().forEach((Y)=>Y.emit("beforeAllHelp",Z)),this.emit("beforeHelp",Z);let E=this.helpInformation({error:B.error});if(F){if(E=F(E),typeof E!=="string"&&!Buffer.isBuffer(E))throw Error("outputHelp callback must return a string or a Buffer")}if(B.write(E),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",Z),this._getCommandAndAncestors().forEach((Y)=>Y.emit("afterAllHelp",Z))}helpOption(D,F){if(typeof D==="boolean"){if(D){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption(D??"-h, --help",F??"display help for command"),D||F)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(D){return this._helpOption=D,this._initOptionGroup(D),this}help(D){this.outputHelp(D);let F=Number(c.exitCode??0);if(F===0&&D&&typeof D!=="function"&&D.error)F=1;this._exit(F,"commander.help","(outputHelp)")}addHelpText(D,F){let B=["beforeAll","before","after","afterAll"];if(!B.includes(D))throw Error(`Unexpected value for position to addHelpText.
|
|
32
|
+
Expecting one of '${B.join("', '")}'`);let Z=`${D}Help`;return this.on(Z,(E)=>{let Y;if(typeof F==="function")Y=F({error:E.error,command:E.command});else Y=F;if(Y)E.write(`${Y}
|
|
33
|
+
`)}),this}_outputHelpIfRequested(D){let F=this._getHelpOption();if(F&&D.find((Z)=>F.is(Z)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function X8(D){return D.map((F)=>{if(!F.startsWith("--inspect"))return F;let B,Z="127.0.0.1",E="9229",Y;if((Y=F.match(/^(--inspect(-brk)?)$/))!==null)B=Y[1];else if((Y=F.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(B=Y[1],/^\d+$/.test(Y[3]))E=Y[3];else Z=Y[3];else if((Y=F.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)B=Y[1],Z=Y[3],E=Y[4];if(B&&E!=="0")return`${B}=${Z}:${parseInt(E)+1}`;return F})}function KF(){if(c.env.NO_COLOR||c.env.FORCE_COLOR==="0"||c.env.FORCE_COLOR==="false")return!1;if(c.env.FORCE_COLOR||c.env.CLICOLOR_FORCE!==void 0)return!0;return}y5.Command=zF;y5.useColor=KF});var qF=x((h5)=>{var{Argument:H8}=h0(),{Command:CF}=Q8(),{CommanderError:b5,InvalidArgumentError:G8}=H0(),{Help:v5}=XF(),{Option:K8}=QF();h5.program=new CF;h5.createCommand=(D)=>new CF(D);h5.createOption=(D,F)=>new K8(D,F);h5.createArgument=(D,F)=>new H8(D,F);h5.Command=CF;h5.Option=K8;h5.Argument=H8;h5.Help=v5;h5.CommanderError=b5;h5.InvalidArgumentError=G8;h5.InvalidOptionArgumentError=G8});var C8=x((HD,z8)=>{var WD=qF();HD=z8.exports={};HD.program=new WD.Command;HD.Argument=WD.Argument;HD.Command=WD.Command;HD.CommanderError=WD.CommanderError;HD.Help=WD.Help;HD.InvalidArgumentError=WD.InvalidArgumentError;HD.InvalidOptionArgumentError=WD.InvalidArgumentError;HD.Option=WD.Option;HD.createCommand=(D)=>new WD.Command(D);HD.createOption=(D,F)=>new WD.Option(D,F);HD.createArgument=(D,F)=>new WD.Argument(D,F)});var SF=x((dJ,c8)=>{var RF={to(D,F){if(!F)return`\x1B[${D+1}G`;return`\x1B[${F+1};${D+1}H`},move(D,F){let B="";if(D<0)B+=`\x1B[${-D}D`;else if(D>0)B+=`\x1B[${D}C`;if(F<0)B+=`\x1B[${-F}A`;else if(F>0)B+=`\x1B[${F}B`;return B},up:(D=1)=>`\x1B[${D}A`,down:(D=1)=>`\x1B[${D}B`,forward:(D=1)=>`\x1B[${D}C`,backward:(D=1)=>`\x1B[${D}D`,nextLine:(D=1)=>"\x1B[E".repeat(D),prevLine:(D=1)=>"\x1B[F".repeat(D),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},_7={up:(D=1)=>"\x1B[S".repeat(D),down:(D=1)=>"\x1B[T".repeat(D)},k7={screen:"\x1B[2J",up:(D=1)=>"\x1B[1J".repeat(D),down:(D=1)=>"\x1B[J".repeat(D),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(D){let F="";for(let B=0;B<D;B++)F+=this.line+(B<D-1?RF.up():"");if(D)F+=RF.left;return F}};c8.exports={cursor:RF,scroll:_7,erase:k7,beep:"\x07"}});class Y0 extends Error{envName;constructor(D){super(`Not authenticated for backend "${D}".`);this.envName=D;this.name="NotAuthenticatedError"}}class nD extends Error{constructor(){super("Authorization was denied.");this.name="DeviceFlowDenied"}}class gD extends Error{constructor(){super("Device code expired.");this.name="DeviceFlowExpired"}}class f extends Error{envName;constructor(D){super(`Session expired for "${D}".`);this.envName=D;this.name="SessionExpiredError"}}var u3=ID(M3(),1),s=ID(s2(),1),z={bold:s.default.bold,dim:s.default.dim,italic:s.default.italic,underline:s.default.underline,cyan:s.default.cyan,green:s.default.green,yellow:s.default.yellow,red:s.default.red,gray:s.default.gray,blue:s.default.blue,magenta:s.default.magenta,success:(D)=>s.default.green(`✓ ${D}`),error:(D)=>s.default.red(`✗ ${D}`),info:(D)=>s.default.cyan(`◆ ${D}`),warn:(D)=>s.default.yellow(`! ${D}`),hint:(D)=>s.default.dim(D)};function zD(D,F){let B=new u3.default({head:D.map((Z)=>z.bold(Z)),style:{head:[],border:["gray"]}});for(let Z of F)B.push(Z);console.log(B.toString())}function w(D){console.log(JSON.stringify(D,null,2))}function k(D){if(D instanceof Error)return D.message;if(typeof D==="string")return D;if(typeof D==="object"&&D!==null){let F=D,B=F.status?` [${F.status}]`:"";if(typeof F.value==="string")return F.value+B;if(typeof F.value==="object"&&F.value!==null){let Z=F.value;if(Z.error)return String(Z.error)+B;if(Z.message)return String(Z.message)+B}return JSON.stringify(F.value??D)+B}return String(D)}function $(D,F={}){if(console.error(z.error(D)),F.hint)console.error(z.hint(` Hint: ${F.hint}`));if(F.context)console.error(z.dim(` ${F.context}`));process.exit(F.code??1)}import L9 from"update-notifier";var A9=()=>Boolean(process.stdout.isTTY),j9=()=>Boolean(process.stdin.isTTY),T9=()=>Boolean(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI||process.env.BUILDKITE||process.env.TF_BUILD);var QD=()=>A9()&&j9()&&!T9();var ZD={name:"@photon-ai/cli",version:"2.3.0-staging.42193655517.1",description:"Photon CLI — typed terminal UI for the Photon Dashboard. Binary: `photon` (alias `pho`).",keywords:["photon","cli","dashboard","spectrum","messaging","imessage","developer-tools"],author:"Photon",license:"MIT",homepage:"https://github.com/photon-hq/cli#readme",repository:{type:"git",url:"git+https://github.com/photon-hq/cli.git"},bugs:{url:"https://github.com/photon-hq/cli/issues"},type:"module",bin:{photon:"./dist/photon.js",pho:"./dist/photon.js"},files:["dist","README.md"],publishConfig:{access:"public"},engines:{bun:">=1.3.0",node:">=18.0.0"},scripts:{start:"bun run src/index.ts",dev:"bun run --watch src/index.ts",build:"bun build ./src/index.ts --outfile dist/photon.js --target node --minify --external update-notifier && chmod +x dist/photon.js",compile:"bun build ./src/index.ts --compile --outfile dist/photon",typecheck:"tsc --noEmit",test:"bun test",check:"bun run typecheck && bun test && bun run build",manifest:"bun run scripts/generate-route-manifest.ts",prepublishOnly:"bun run typecheck && bun run build","docs:reference":"bun run scripts/export-docs.ts"},devDependencies:{"@photon-ai/dashboard-api":"1.6.12","@types/bun":"latest","@types/node":"^25.6.2","@types/semver":"^7.7.1","@types/update-notifier":"^6.0.8",elysia:"1.4.28",typescript:"^5"},dependencies:{"@clack/prompts":"^1.2.0","@commander-js/extra-typings":"^14.0.0","@elysiajs/eden":"1.4.9","better-auth":"1.4.18","cli-table3":"^0.6.5",commander:"^14.0.3",open:"^11.0.0",picocolors:"^1.1.1",semver:"^7.8.5","update-notifier":"^7.3.1"}};function A3(D={}){if(!(D.interactive??QD)())return;if(process.env.PHOTON_NO_UPDATE_NOTIFIER==="1")return;(D.createNotifier??L9)({pkg:{name:ZD.name,version:ZD.version},updateCheckInterval:86400000}).notify({defer:!0,isGlobal:!0})}var i3=ID(h3(),1),v0=ID(l3(),1);import{spawn as a3}from"node:child_process";import{createHash as o9}from"node:crypto";import RD from"node:fs";import ZF from"node:path";import t9 from"update-notifier";var EF=["npm","pnpm","yarn","bun"];async function e9(){let D=process.env.NO_UPDATE_NOTIFIER;process.env.NO_UPDATE_NOTIFIER="1";let F;try{({latest:F}=await t9({pkg:{name:ZD.name,version:ZD.version}}).fetchInfo())}catch(B){throw Error("Could not reach the Photon update registry.",{cause:B})}finally{if(D===void 0)delete process.env.NO_UPDATE_NOTIFIER;else process.env.NO_UPDATE_NOTIFIER=D}if(!v0.default(F))throw Error("The Photon update registry returned an invalid version.");return F}function YF(D){try{return RD.realpathSync.native(D)}catch{return ZF.resolve(D)}}function D5(D=process.argv[1]??"",F=process.execPath,B=process.env){if(!D)return{kind:"unknown",entryPath:D};let Z=ZF.resolve(D),E=YF(D),Y=YF(F),J=D.replaceAll("\\","/");if(E===Y||J.startsWith("/$bunfs/root/"))return{kind:"standalone",entryPath:ZF.resolve(F)};let X=E.replaceAll("\\","/").toLowerCase();if(X.includes("/.npm/_npx/")||X.includes("/.bun/install/cache/@photon-ai/cli@")||X.includes("/node_modules/.cache/bunx-")||X.includes("/tmp/dlx-")&&X.includes("/node_modules/"))return{kind:"ephemeral",entryPath:Z};if(X.includes("/.bun/install/global/"))return{kind:"bun",entryPath:Z};if(X.includes("/pnpm/global/")||X.includes("/.pnpm/global/"))return{kind:"pnpm",entryPath:Z};if(X.includes("/.config/yarn/global/")||X.includes("/yarn/global/"))return{kind:"yarn",entryPath:Z};if(X.includes("/lib/node_modules/@photon-ai/cli/")||X.includes("/npm/node_modules/@photon-ai/cli/"))return{kind:"npm",entryPath:Z};let H=/^yarn\/(\d+)(?:\.|\s|$)/i.exec(B.npm_config_user_agent??"")?.[1];if(H&&Number(H)>=2){let Q=(B.INIT_CWD??"").replaceAll("\\","/"),G=/\/dlx-[^/]+(?:\/|$)/i;if(G.test(J)&&(J.includes("/.yarn/")||G.test(Q)))return{kind:"yarn-dlx",entryPath:Z};return{kind:"yarn-berry",entryPath:Z}}if(!X.includes("/node_modules/@photon-ai/cli/"))return{kind:"development",entryPath:Z};return{kind:"unknown",entryPath:Z}}function n3(D){if(EF.includes(D))return D;throw Error(`Unknown installer "${D}". Expected one of: ${EF.join(", ")}.`)}function F5(D,F,B=!1){let Z=`${ZD.name}@${F}`,E=B?["--force"]:[];if(D==="npm")return{command:D,args:["install","--global",...E,Z]};if(D==="yarn")return{command:D,args:["global","add",...E,Z]};return{command:D,args:["add","--global",...E,Z]}}async function B5(D,F){await new Promise((B,Z)=>{let E=a3(D.command,D.args,{shell:!1,stdio:F?["ignore","ignore","pipe"]:"inherit"}),Y="";E.stderr?.on("data",(J)=>{Y=(Y+String(J)).slice(-8192)}),E.on("error",(J)=>{Z(Error(`Could not start ${D.command}. Make sure it is installed and on PATH.`,{cause:J}))}),E.on("close",(J,X)=>{if(J===0){B();return}let H=Y.trim(),Q=X?`signal ${X}`:`exit code ${J??"unknown"}`;Z(Error(`The ${D.command} updater failed with ${Q}.${H?` ${H}`:""}`))})})}async function Z5(D,F){let B=await new Promise((Z,E)=>{let Y=a3(process.execPath,[D,"--version"],{shell:!1,stdio:["ignore","pipe","pipe"],env:{...process.env,PHOTON_NO_UPDATE_NOTIFIER:"1"}}),J="",X="";Y.stdout.on("data",(H)=>{J=(J+String(H)).slice(-8192)}),Y.stderr.on("data",(H)=>{X=(X+String(H)).slice(-8192)}),Y.on("error",(H)=>{E(Error("Could not launch the updated Photon executable.",{cause:H}))}),Y.on("close",(H,Q)=>{if(H===0){Z(J.trim());return}let G=Q?`signal ${Q}`:`exit code ${H??"unknown"}`;E(Error(`The updated Photon executable failed with ${G}.${X.trim()?` ${X.trim()}`:""}`))})});if(B!==F)throw Error(`The installer completed, but ${D} reports ${B||"no version"} instead of ${F}.`)}function E5(){let D=process.platform==="darwin"?"darwin":process.platform;if(D!=="darwin"&&D!=="linux")throw Error(`Standalone updates are not supported on ${process.platform}.`);if(process.arch!=="arm64"&&process.arch!=="x64")throw Error(`Standalone updates are not supported on ${process.arch}.`);return`photon-${D}-${process.arch}`}async function Y5(D,F,B={}){let Z=E5(),Y=`${(B.releaseBase??"https://github.com/photon-hq/cli/releases/download").replace(/\/$/,"")}/v${F}/${Z}`,J={signal:AbortSignal.timeout(60000)},X,H;try{[X,H]=await Promise.all([fetch(Y,J),fetch(`${Y}.sha256`,J)])}catch(C){throw Error("Could not reach the Photon release downloads.",{cause:C})}if(!X.ok||!H.ok)throw Error(`Could not download Photon ${F} (${X.status}/${H.status}).`);let Q;try{Q=await H.text()}catch(C){throw Error("Could not read the Photon release checksum.",{cause:C})}let G=Q.trim().split(/\s+/,1)[0]?.toLowerCase();if(!G||!/^[a-f0-9]{64}$/.test(G))throw Error("The standalone checksum file is invalid.");let K=YF(D),W=`${K}.update-${process.pid}-${Date.now()}`,q;try{if(!X.body)throw Error("The standalone download returned an empty body.");let C;try{let U=RD.statSync(K).mode&511;q=RD.openSync(W,"wx",U||493);let V=o9("sha256"),I=X.body.getReader();while(!0){let{done:u,value:N}=await I.read();if(u)break;V.update(N);let M=0;while(M<N.byteLength){let L=RD.writeSync(q,N,M,N.byteLength-M);if(L===0)throw Error("Writing the update made no progress.");M+=L}}RD.fsyncSync(q),RD.closeSync(q),q=void 0,C=V.digest("hex")}catch(U){throw Error(`Could not stage the Photon update beside ${K}. Check the download and file permissions.`,{cause:U})}if(C!==G)throw Error("The downloaded Photon binary failed checksum verification.");try{RD.renameSync(W,K)}catch(U){throw Error(`Could not replace ${K}. Check that the file is writable.`,{cause:U})}}finally{if(q!==void 0)try{RD.closeSync(q)}catch{}try{RD.rmSync(W,{force:!0})}catch{}}}function r3(D){return D.slice(2).find((B)=>!B.startsWith("-"))==="update"}function p3(D){if(D.kind==="npm"||D.kind==="pnpm"||D.kind==="yarn"||D.kind==="bun"||D.kind==="standalone")return D.kind;if(D.kind==="ephemeral")throw Error(`A one-off Photon invocation cannot update itself. Run your package runner with ${ZD.name}@latest instead.`);if(D.kind==="development")throw Error("A development checkout cannot update itself. Update the checkout with Git instead.");if(D.kind==="yarn-dlx")throw Error(`A Yarn dlx invocation cannot update itself. Run \`yarn dlx --package ${ZD.name}@latest photon\` instead.`);if(D.kind==="yarn-berry")throw Error(`Yarn 2+ does not provide global installs. Run \`yarn up ${ZD.name}\` from the project that owns this dependency.`);throw Error(`Cannot detect this Photon installation automatically. Re-run with --installer ${EF.join("|")}.`)}function J5(D,F){if(!F)return p3(D);if(D.kind==="unknown")return F;if(D.kind===F)return F;if(D.kind==="development"||D.kind==="ephemeral")return p3(D);throw Error(`This Photon invocation was detected as ${D.kind}; refusing to update a different ${F} installation.`)}async function s3(D={},F={}){let B=F.currentVersion??ZD.version,Z=await(F.latestVersion??e9)();if(!v0.default(B)||!v0.default(Z))throw Error("Cannot compare invalid Photon release versions.");let E=i3.default(Z,B);if(!E&&!D.force)return{status:"up-to-date",currentVersion:B,latestVersion:Z,installer:null};if(D.check)return{status:E?"update-available":"up-to-date",currentVersion:B,latestVersion:Z,installer:null};let Y=F.installation??D5(),J=J5(Y,D.installer),X=E?Z:B;if(J==="standalone")await(F.replaceStandalone??Y5)(Y.entryPath,X);else await(F.runInstaller??B5)(F5(J,X,D.force),D.quiet??!1),await(F.verifyInstalled??Z5)(Y.entryPath,X);return{status:E?"updated":"reinstalled",currentVersion:B,latestVersion:Z,installer:J}}var q8=ID(C8(),1),{program:bY,createCommand:vY,createArgument:hY,createOption:gY,CommanderError:mY,InvalidArgumentError:cY,InvalidOptionArgumentError:dY,Command:W8,Argument:lY,Option:pY,Help:aY}=q8.default;import{existsSync as $8,renameSync as o5}from"node:fs";import U8 from"node:os";import oD from"node:path";var M8="https://app.photon.codes";function t5(D){return D??process.env.PHOTON_API_HOST??M8}function WF(D){try{return new URL(D).origin}catch{throw Error(`Invalid API host URL: "${D}". Must include scheme — e.g. https://your.host.tld.`)}}function N8(D){let F=WF(t5(D));return{name:e5(F),url:F}}function e5(D){let F;try{F=new URL(D)}catch{throw Error(`Invalid API host URL: "${D}". Must include scheme — e.g. https://your.host.tld.`)}if(F.origin===M8)return"production";let B=F.hostname.toLowerCase().replace(/[[\]]/g,"").replace(/[.:%]/g,"_"),Z=F.port?`_${F.port}`:"",E=`${B}${Z}`;if(E.length>64)throw Error(`API host "${D}" produces a key longer than 64 characters (got ${E.length}). Use a shorter hostname or alias the host in your local hosts file / DNS.`);return E}var D7=/^[a-z0-9_][a-z0-9_-]{0,63}$/;function F7(D){if(!D7.test(D))throw Error(`Invalid environment key "${D}" — must be 1-64 chars, `+"start with a-z, 0-9, or '_', and only contain a-z, 0-9, '-', '_'.")}function m0(){let D=process.env.PHOTON_CONFIG_DIR??process.env.DASHBOARD_CONFIG_DIR;if(D)return D;let F=process.env.XDG_CONFIG_HOME,B=F?oD.join(F,"photon"):oD.join(U8.homedir(),".config","photon"),Z=F?oD.join(F,"photon-dashboard"):oD.join(U8.homedir(),".config","photon-dashboard"),E=B;if(!$8(B)&&$8(Z))try{o5(Z,B)}catch{E=Z}return E}var $F=()=>oD.join(m0(),"credentials"),c0=(D)=>{return F7(D),oD.join($F(),`${D}.json`)};async function YD(D){return N8(D)}import{chmod as B7,mkdir as Z7,readdir as E7,readFile as Y7,unlink as J7,writeFile as X7}from"node:fs/promises";import{dirname as Q7}from"node:path";async function tD(D){try{let F=await Y7(c0(D),"utf-8");return JSON.parse(F)}catch{return null}}async function V8(D){let F=c0(D.envName);await Z7(Q7(F),{recursive:!0}),await X7(F,JSON.stringify(D,null,2)+`
|
|
34
|
+
`,"utf-8"),await B7(F,384)}async function u8(D){let F=c0(D);try{await J7(F)}catch(B){if(B.code!=="ENOENT")throw B}}async function d0(){try{return(await E7($F())).filter((F)=>F.endsWith(".json")).map((F)=>F.slice(0,-5)).sort()}catch(D){if(D.code==="ENOENT")return[];throw D}}function A8(D){D.command("auth").description("inspect authentication state across backends").command("status").description("show login status for every backend you've authenticated against").option("--json","output JSON").action(async(B)=>{let Z=await YD(),E=await d0(),Y=Array.from(new Set([Z.name,...E])).sort(),J=await Promise.all(Y.map(async(Q)=>{let G=await tD(Q);if(!G)return{name:Q,url:Q===Z.name?Z.url:null,loggedIn:!1,user:null,issuedAt:null,corrupt:E.includes(Q)};return{name:Q,url:G.apiUrl,loggedIn:!0,user:G.user,issuedAt:G.issuedAt,corrupt:!1}}));if(B.json)return w(J);let X=J.map((Q)=>[Q.name===Z.name?z.green("●"):" ",Q.name,Q.url??z.dim("—"),Q.loggedIn?z.green(Q.user?.email??"yes"):Q.corrupt?z.yellow("corrupt"):z.dim("no"),Q.issuedAt?new Date(Q.issuedAt).toLocaleDateString():z.dim("—")]);zD(["","key","url","logged in","since"],X);let H=J.filter((Q)=>Q.corrupt).map((Q)=>Q.name);if(H.length>0)console.log(),console.log(z.warn(`Credentials file for ${H.join(", ")} is unreadable. Re-login with \`photon login --api-host <url>\`.`))})}var fD=class extends Error{constructor(D,F){super(F+"");this.status=D,this.value=F}},H7=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,G7=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,K7=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,z7=(D)=>D.trim().length!==0&&!Number.isNaN(Number(D)),l0=(D,F)=>{if(typeof D!="string"||F?.parseDate===!1)return null;let B=D.replace(/"/g,"");if(H7.test(B)||G7.test(B)||K7.test(B)){let Z=new Date(B);if(!Number.isNaN(Z.getTime()))return Z}return null},C7=(D)=>{let F=D.charCodeAt(0),B=D.charCodeAt(D.length-1);return F===123&&B===125||F===91&&B===93},q7=(D,F)=>JSON.parse(D,(B,Z)=>{return l0(Z,F)||Z}),cD=(D,F)=>{if(!D)return D;if(z7(D))return+D;if(D==="true")return!0;if(D==="false")return!1;if(F?.parseDate!==!1){let B=l0(D,F);if(B)return B}if(C7(D))try{return q7(D,F)}catch{}return D},UF=(D,F)=>{let B=D.data.toString();return B==="null"?null:cD(B,F)};var W7=class{constructor(D){this.url=D,this.ws=new WebSocket(D)}ws;send(D){return Array.isArray(D)?(D.forEach((F)=>this.send(F)),this):(this.ws.send(typeof D=="object"?JSON.stringify(D):D.toString()),this)}on(D,F,B){return this.addEventListener(D,F,B)}off(D,F,B){return this.ws.removeEventListener(D,F,B),this}subscribe(D,F){return this.addEventListener("message",D,F)}addEventListener(D,F,B){return this.ws.addEventListener(D,(Z)=>{if(D==="message"){let E=UF(Z);F({...Z,data:E})}else F(Z)},B),this}removeEventListener(D,F,B){return this.off(D,F,B),this}close(){return this.ws.close(),this}},$7=["get","post","put","delete","patch","options","head","connect","subscribe"],j8=(D,F)=>typeof F=="function"?F(D):F===!0,L8=["localhost","127.0.0.1","0.0.0.0"],NF=typeof FileList>"u",p0=(D)=>NF?D instanceof Blob:D instanceof FileList||D instanceof File,U7=(D)=>{if(!D)return!1;for(let F in D)if(p0(D[F])||Array.isArray(D[F])&&D[F].find(p0))return!0;return!1},MF=(D)=>NF?D:new Promise((F)=>{let B=new FileReader;B.onload=()=>{let Z=new File([B.result],D.name,{lastModified:D.lastModified,type:D.type});F(Z)},B.readAsArrayBuffer(D)}),dD=async(D,F,B={},Z={})=>{if(Array.isArray(D)){for(let E of D)if(!Array.isArray(E))Z=await dD(E,F,B,Z);else{let Y=E[0];if(typeof Y=="string")Z[Y.toLowerCase()]=E[1];else for(let[J,X]of Y)Z[J.toLowerCase()]=X}return Z}if(!D)return Z;switch(typeof D){case"function":if(D instanceof Headers)return dD(D,F,B,Z);let E=await D(F,B);return E?dD(E,F,B,Z):Z;case"object":if(D instanceof Headers)return D.forEach((Y,J)=>{Z[J.toLowerCase()]=Y}),Z;for(let[Y,J]of Object.entries(D))Z[Y.toLowerCase()]=J;return Z;default:return Z}};function R8(D,F){let B=D.split(`
|
|
35
|
+
`),Z={};for(let E of B){if(!E||E.startsWith(":"))continue;let Y=E.indexOf(":");if(Y>0){let J=E.slice(0,Y).trim(),X=E.slice(Y+1).replace(/^ /,"");Z[J]=X&&cD(X,F)}}return Object.keys(Z).length>0?Z:null}function*T8(D,F){let B;for(;(B=D.value.indexOf(`
|
|
36
36
|
|
|
37
|
-
`))!==-1;){let E=D.value.slice(0,B);if(D.value=D.value.slice(B+2),E.trim()){let Z=R8(E,F);Z&&(yield Z)}}}async function*T8(D,F){let B=D.body;if(!B)return;let E=B.getReader(),Z=new TextDecoder("utf-8");if(D.headers.get("Content-Type")?.startsWith("text/event-stream")){let J={value:""};try{for(;;){let{done:H,value:Q}=await E.read();if(H)break;let X=typeof Q=="string"?Q:Z.decode(Q,{stream:!0});J.value+=X,yield*j8(J,F)}let Y=Z.decode();if(Y&&(J.value+=Y),yield*j8(J,F),J.value.trim()){let H=R8(J.value,F);H&&(yield H)}}finally{E.releaseLock()}}else try{for(;;){let{done:J,value:Y}=await E.read();if(J)break;yield cD(typeof Y=="string"?Y:Z.decode(Y,{stream:!0}),{parseDate:F?.parseDate})}}finally{E.releaseLock()}}var C0=(D,F,B=[],E)=>new Proxy(()=>{},{get(Z,J){if(J==="~path")return"/"+B.join("/");if(!(B.length===0&&(J==="then"||J==="catch"||J==="finally")))return C0(D,F,[...B,J],E)},apply(Z,J,[Y,H]){if(!Y||H||typeof Y=="object"&&Object.keys(Y).length!==1||q7.includes(B.at(-1))){let Q=[...B],X=Q.pop(),C="/"+Q.join("/"),{fetcher:G=fetch,headers:u,onRequest:q,onResponse:z,fetch:$}=F,M=X==="get"||X==="head"||X==="subscribe",I=M?Y?.query:H?.query,V="";if(I){let N=(U,R)=>{R!=null&&(R instanceof Date&&(R=R.toISOString()),V+=(V?"&":"?")+`${encodeURIComponent(U)}=${encodeURIComponent(typeof R=="object"?JSON.stringify(R):R+"")}`)};for(let[U,R]of Object.entries(I)){if(Array.isArray(R)){for(let f of R)N(U,f);continue}N(U,R)}}if(X==="subscribe"){let N=D.replace(/^([^]+):\/\//,D.startsWith("https://")?"wss://":D.startsWith("http://")||I8.find((U)=>D.includes(U))?"ws://":"wss://")+C+V;return new z7(N)}return(async()=>{u=await dD(u,C,H);let N={method:X?.toUpperCase(),body:Y,...$,headers:u};N.headers={...u,...await dD(M?Y?.headers:H?.headers,C,N)};let U=M&&typeof Y=="object"?Y.fetch:H?.fetch,R=(M&&typeof Y=="object"?Y.throwHttpError:H?.throwHttpError)??F.throwHttpError;if(N={...N,...U},M&&delete N.body,q){Array.isArray(q)||(q=[q]);for(let d of q){let v=await d(C,N);typeof v=="object"&&(N={...N,...v,headers:{...N.headers,...await dD(v.headers,C,N)}})}}if(M&&delete N.body,u7(Y)){let d=new FormData,v=(x)=>{if(typeof x=="string"||p0(x))return!1;if(typeof x=="object"){if(x!==null)return!0;if(x instanceof Date)return!1}return!1},FD=async(x)=>x instanceof File?await UF(x):v(x)?JSON.stringify(x):x;for(let[x,S]of Object.entries(N.body)){if(Array.isArray(S)){if(S.some((g)=>typeof g=="object"&&g!==null&&!p0(g)))d.append(x,JSON.stringify(S));else for(let g=0;g<S.length;g++){let n=S[g],YD=await FD(n);d.append(x,YD)}continue}if(NF){if(Array.isArray(S))for(let g of S)d.append(x,await FD(g));else d.append(x,await FD(S));continue}if(S instanceof File){d.append(x,await UF(S));continue}if(S instanceof FileList){for(let g=0;g<S.length;g++)d.append(x,await UF(S[g]));continue}d.append(x,await FD(S))}N.body=d}else typeof Y=="object"?(N.headers["content-type"]="application/json",N.body=JSON.stringify(Y)):Y!=null&&(N.headers["content-type"]="text/plain");if(M&&delete N.body,q){Array.isArray(q)||(q=[q]);for(let d of q){let v=await d(C,N);typeof v=="object"&&(N={...N,...v,headers:{...N.headers,...await dD(v.headers,C,N)}})}}H?.headers?.["content-type"]&&(N.headers["content-type"]=H?.headers["content-type"]);let f=D+C+V,L;try{L=await(E?.handle(new Request(f,N))??G(f,N))}catch(d){let v=new kD(503,d);if(A8(v,R))throw v;return{data:null,error:v,response:void 0,status:503,headers:void 0}}let P=null,i=null;if(z){Array.isArray(z)||(z=[z]);for(let d of z)try{let v=await d(L.clone());if(v!=null){P=v;break}}catch(v){v instanceof kD?i=v:i=new kD(422,v);break}}if(P!==null)return{data:P,error:i,response:L,status:L.status,headers:L.headers};switch(L.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":P=T8(L,{parseDate:F.parseDate});break;case"application/json":P=JSON.parse(await L.text(),(v,FD)=>{if(typeof FD!="string")return FD;return l0(FD,{parseDate:F.parseDate})||FD});break;case"application/octet-stream":P=await L.arrayBuffer();break;case"multipart/form-data":let d=await L.formData();P={},d.forEach((v,FD)=>{P[FD]=v});break;default:L.headers.get("content-type")?.startsWith("text/")&&L.headers.get("transfer-encoding")==="chunked"&&!L.headers.has("content-length")?P=T8(L,{parseDate:F.parseDate}):P=await L.text().then((v)=>cD(v,{parseDate:F.parseDate}))}if(L.status>=300||L.status<200){if(i=new kD(L.status,P),A8(i,R))throw i;P=null}return{data:P,error:i,response:L,status:L.status,headers:L.headers}})()}return typeof Y=="object"?C0(D,F,[...B,Object.values(Y)[0]],E):C0(D,F,B)}}),MF=(D,F={})=>typeof D=="string"?(F.keepDomain||(D.includes("://")||(D=(I8.find((B)=>D.includes(B))?"http://":"https://")+D),D.endsWith("/")&&(D=D.slice(0,-1))),C0(D,F)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),C0("http://e.ly",F,[],D));var PD=ID(s2(),1),a0=process.env.PHOTON_DEBUG==="1"||process.env.PHOTON_DEBUG==="true";function L8(D){a0=D}function f8(){return a0}function W7(...D){if(!a0)return;let F=PD.default.dim(`[debug ${new Date().toISOString()}]`);console.error(F,...D)}function VF(D){if(!a0)return;let F=D.status>=500?PD.default.red:D.status>=400?PD.default.yellow:D.status>=200?PD.default.green:PD.default.dim;W7(PD.default.bold(D.method.padEnd(6)),F(String(D.status)),D.url,PD.default.dim(`${D.durationMs}ms`))}async function y(D={}){let F=D.url?{name:"custom",url:uF(D.url)}:await JD(D.apiHost),B=D.token??process.env.PHOTON_TOKEN??process.env.DASHBOARD_TOKEN,E=D.url||B?null:await tD(F.name);if(D.requireAuth&&!E&&!B)throw new J0(F.name);let Z=B??E?.accessToken,J={};if(Z)J.Authorization=`Bearer ${Z}`;let Y=f8()?$7():fetch;return{api:MF(F.url,{headers:J,fetcher:Y}),env:F,creds:E}}function $7(){return Object.assign(async(D,F)=>{let B=performance.now(),E=typeof D==="string"?D:D instanceof URL?D.toString():D.url,Z=(F?.method??(D instanceof Request?D.method:void 0)??"GET").toUpperCase();try{let J=await fetch(D,F);return VF({method:Z,url:E,status:J.status,durationMs:Math.round(performance.now()-B)}),J}catch(J){throw VF({method:Z,url:E,status:0,durationMs:Math.round(performance.now()-B)}),J}},typeof fetch.preconnect==="function"?{preconnect:fetch.preconnect.bind(fetch)}:{})}async function m(D){let F=await JD(D.apiHost),B=D.flagProjectId?.trim();if(B)return{projectId:B,env:F};let E=process.env.PHOTON_PROJECT_ID?.trim();if(E)return{projectId:E,env:F};W(`No project specified for backend "${F.name}".`,{hint:"Pass `--project <id>`, or set `PHOTON_PROJECT_ID` in your shell."})}import{styleText as _F}from"node:util";import{stdout as OF,stdin as p8}from"node:process";import*as yD from"node:readline";import S7 from"node:readline";var S8=(D)=>{return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109},_8=(D)=>{return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510},k8=(D)=>{return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9800&&D<=9811||D===9855||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12771||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=19903||D>=19968&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101632&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129672||D>=129680&&D<=129725||D>=129727&&D<=129733||D>=129742&&D<=129755||D>=129760&&D<=129768||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141};var AF=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,i0=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,n0=/\t{1,1000}/y,jF=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,r0=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,U7=/\p{M}+/gu,N7={limit:1/0,ellipsis:""},P8=(D,F={},B={})=>{let E=F.limit??1/0,Z=F.ellipsis??"",J=F?.ellipsisWidth??(Z?P8(Z,N7,B).width:0),Y=B.ansiWidth??0,H=B.controlWidth??0,Q=B.tabWidth??8,X=B.ambiguousWidth??1,C=B.emojiWidth??2,G=B.fullWidthWidth??2,u=B.regularWidth??1,q=B.wideWidth??2,z=0,$=0,M=D.length,I=0,V=!1,N=M,U=Math.max(0,E-J),R=0,f=0,L=0,P=0;D:while(!0){if(f>R||$>=M&&$>z){let i=D.slice(R,f)||D.slice(z,$);I=0;for(let d of i.replaceAll(U7,"")){let v=d.codePointAt(0)||0;if(_8(v))P=G;else if(k8(v))P=q;else if(X!==u&&S8(v))P=X;else P=u;if(L+P>U)N=Math.min(N,Math.max(R,z)+I);if(L+P>E){V=!0;break D}I+=d.length,L+=P}R=f=0}if($>=M)break;if(r0.lastIndex=$,r0.test(D)){if(I=r0.lastIndex-$,P=I*u,L+P>U)N=Math.min(N,$+Math.floor((U-L)/u));if(L+P>E){V=!0;break}L+=P,R=z,f=$,$=z=r0.lastIndex;continue}if(AF.lastIndex=$,AF.test(D)){if(L+Y>U)N=Math.min(N,$);if(L+Y>E){V=!0;break}L+=Y,R=z,f=$,$=z=AF.lastIndex;continue}if(i0.lastIndex=$,i0.test(D)){if(I=i0.lastIndex-$,P=I*H,L+P>U)N=Math.min(N,$+Math.floor((U-L)/H));if(L+P>E){V=!0;break}L+=P,R=z,f=$,$=z=i0.lastIndex;continue}if(n0.lastIndex=$,n0.test(D)){if(I=n0.lastIndex-$,P=I*Q,L+P>U)N=Math.min(N,$+Math.floor((U-L)/Q));if(L+P>E){V=!0;break}L+=P,R=z,f=$,$=z=n0.lastIndex;continue}if(jF.lastIndex=$,jF.test(D)){if(L+C>U)N=Math.min(N,$);if(L+C>E){V=!0;break}L+=C,R=z,f=$,$=z=jF.lastIndex;continue}$+=1}return{width:V?U:L,index:V?N:M,truncated:V,ellipsed:V&&E>=J}},O8=P8;var M7={limit:1/0,ellipsis:"",ellipsisWidth:0},V7=(D,F={})=>{return O8(D,M7,F).width},AD=V7;var s0="\x1B",v8="",A7=39,IF="\x07",h8="[",j7="]",g8="m",RF=`${j7}8;;`,y8=new RegExp(`(?:\\${h8}(?<code>\\d+)m|\\${RF}(?<uri>.*)${IF})`,"y"),w8=(D)=>{if(D>=30&&D<=37)return 39;if(D>=90&&D<=97)return 39;if(D>=40&&D<=47)return 49;if(D>=100&&D<=107)return 49;if(D===1||D===2)return 22;if(D===3)return 23;if(D===4)return 24;if(D===7)return 27;if(D===8)return 28;if(D===9)return 29;if(D===0)return 0;return},x8=(D)=>`${s0}${h8}${D}${g8}`,b8=(D)=>`${s0}${RF}${D}${IF}`,TF=(D,F,B)=>{let E=F[Symbol.iterator](),Z=!1,J=!1,Y=D.at(-1),H=Y===void 0?0:AD(Y),Q=E.next(),X=E.next(),C=0;while(!Q.done){let G=Q.value,u=AD(G);if(H+u<=B)D[D.length-1]+=G;else D.push(G),H=0;if(G===s0||G===v8)Z=!0,J=F.startsWith(RF,C+1);if(Z){if(J){if(G===IF)Z=!1,J=!1}else if(G===g8)Z=!1}else if(H+=u,H===B&&!X.done)D.push(""),H=0;Q=X,X=E.next(),C+=G.length}if(Y=D.at(-1),!H&&Y!==void 0&&Y.length&&D.length>1)D[D.length-2]+=D.pop()},T7=(D)=>{let F=D.split(" "),B=F.length;while(B){if(AD(F[B-1]))break;B--}if(B===F.length)return D;return F.slice(0,B).join(" ")+F.slice(B).join("")},I7=(D,F,B={})=>{if(B.trim!==!1&&D.trim()==="")return"";let E="",Z,J,Y=D.split(" "),H=[""],Q=0;for(let G=0;G<Y.length;G++){let u=Y[G];if(B.trim!==!1){let z=H.at(-1)??"",$=z.trimStart();if(z.length!==$.length)H[H.length-1]=$,Q=AD($)}if(G!==0){if(Q>=F&&(B.wordWrap===!1||B.trim===!1))H.push(""),Q=0;if(Q||B.trim===!1)H[H.length-1]+=" ",Q++}let q=AD(u);if(B.hard&&q>F){let z=F-Q,$=1+Math.floor((q-z-1)/F);if(Math.floor((q-1)/F)<$)H.push("");TF(H,u,F),Q=AD(H.at(-1)??"");continue}if(Q+q>F&&Q&&q){if(B.wordWrap===!1&&Q<F){TF(H,u,F),Q=AD(H.at(-1)??"");continue}H.push(""),Q=0}if(Q+q>F&&B.wordWrap===!1){TF(H,u,F),Q=AD(H.at(-1)??"");continue}H[H.length-1]+=u,Q+=q}if(B.trim!==!1)H=H.map((G)=>T7(G));let X=H.join(`
|
|
38
|
-
`),
|
|
39
|
-
`){if(
|
|
40
|
-
`){if(
|
|
41
|
-
`)}var DD=ID(
|
|
42
|
-
`),
|
|
43
|
-
`),
|
|
44
|
-
`).map((J
|
|
45
|
-
`)}var D0=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(D,F=!0){let{input:B=
|
|
46
|
-
`),o0(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let D=
|
|
47
|
-
`).length-1;this.output.write(DD.cursor.move(-999,D*-1))}render(){let D=
|
|
48
|
-
`);this.output.write(Y
|
|
49
|
-
`).slice(
|
|
50
|
-
`)),this._prevFrame=D;return}}this.output.write(DD.erase.down())}this.output.write(D),this.state==="initial"&&(this.state="active"),this._prevFrame=D}}};function y7(D,F){if(D===void 0||F.length===0)return 0;let B=F.findIndex((E)=>E.value===D);return B!==-1?B:0}function w7(D,F){return(F.label??String(F.value)).toLowerCase().includes(D.toLowerCase())}function x7(D,F){if(F)return D?F:F[0]}var b7=class extends D0{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#F=0;#Y="";#D;#J;#H;get cursor(){return this.#F}get userInputWithCursor(){if(!this.userInput)return _F(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let D=this.userInput.slice(0,this._cursor),[F,...B]=this.userInput.slice(this._cursor);return`${D}${_F("inverse",F)}${B.join("")}`}get options(){return typeof this.#J=="function"?this.#J():this.#J}constructor(D){super(D),this.#J=D.options,this.#H=D.placeholder;let F=this.options;this.filteredOptions=[...F],this.multiple=D.multiple===!0,this.#D=typeof D.options=="function"?D.filter:D.filter??w7;let B;if(D.initialValue&&Array.isArray(D.initialValue)?this.multiple?B=D.initialValue:B=D.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(B=[this.options[0].value]),B)for(let E of B){let Z=F.findIndex((J)=>J.value===E);Z!==-1&&(this.toggleSelected(E),this.#F=Z)}this.focusedValue=this.options[this.#F]?.value,this.on("key",(E,Z)=>this.#B(E,Z)),this.on("userInput",(E)=>this.#E(E))}_isActionKey(D,F){return D==="\t"||this.multiple&&this.isNavigating&&F.name==="space"&&D!==void 0&&D!==""}#B(D,F){let B=F.name==="up",E=F.name==="down",Z=F.name==="return",J=this.userInput===""||this.userInput==="\t",Y=this.#H,H=this.options,Q=Y!==void 0&&Y!==""&&H.some((X)=>!X.disabled&&(this.#D?this.#D(Y,X):!0));if(F.name==="tab"&&J&&Q){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(Y,!0),this.isNavigating=!1;return}B||E?(this.#F=eD(this.#F,B?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#F]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):Z?this.value=x7(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(F.name==="tab"||this.isNavigating&&F.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(D){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(D)?this.selectedValues=this.selectedValues.filter((F)=>F!==D):this.selectedValues=[...this.selectedValues,D]:this.selectedValues=[D])}#E(D){if(D!==this.#Y){this.#Y=D;let F=this.options;D&&this.#D?this.filteredOptions=F.filter((Z)=>this.#D?.(D,Z)):this.filteredOptions=[...F];let B=y7(this.focusedValue,this.filteredOptions);this.#F=eD(B,0,this.filteredOptions);let E=this.filteredOptions[this.#F];E&&!E.disabled?this.focusedValue=E.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class xF extends D0{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(D){super(D,!1),this.value=!!D.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(F)=>{this.output.write(DD.cursor.move(0,-1)),this.value=F,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var v7={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function d8(D){return[...D].map((F)=>v7[F])}function h7(D){let F=new Intl.DateTimeFormat(D,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),B=[],E="/";for(let Z of F)Z.type==="literal"?E=Z.value.trim()||Z.value:(Z.type==="year"||Z.type==="month"||Z.type==="day")&&B.push({type:Z.type,len:Z.type==="year"?4:2});return{segments:B,separator:E}}function SF(D){return Number.parseInt((D||"0").replace(/_/g,"0"),10)||0}function t0(D){return{year:SF(D.year),month:SF(D.month),day:SF(D.day)}}function PF(D,F){return new Date(D||2001,F||1,0).getDate()}function i8(D){let{year:F,month:B,day:E}=t0(D);if(!F||F<0||F>9999||!B||B<1||B>12||!E||E<1)return;let Z=new Date(Date.UTC(F,B-1,E));if(!(Z.getUTCFullYear()!==F||Z.getUTCMonth()!==B-1||Z.getUTCDate()!==E))return{year:F,month:B,day:E}}function l8(D){let F=i8(D);return F?new Date(Date.UTC(F.year,F.month-1,F.day)):void 0}function g7(D,F,B,E){let Z=B?{year:B.getUTCFullYear(),month:B.getUTCMonth()+1,day:B.getUTCDate()}:null,J=E?{year:E.getUTCFullYear(),month:E.getUTCMonth()+1,day:E.getUTCDate()}:null;return D==="year"?{min:Z?.year??1,max:J?.year??9999}:D==="month"?{min:Z&&F.year===Z.year?Z.month:1,max:J&&F.year===J.year?J.month:12}:{min:Z&&F.year===Z.year&&F.month===Z.month?Z.day:1,max:J&&F.year===J.year&&F.month===J.month?J.day:PF(F.year,F.month)}}class n8 extends D0{#F;#Y;#D;#J;#H;#B={segmentIndex:0,positionInSegment:0};#E=!0;#Z=null;inlineError="";get segmentCursor(){return{...this.#B}}get segmentValues(){return{...this.#D}}get segments(){return this.#F}get separator(){return this.#Y}get formattedValue(){return this.#G(this.#D)}#G(D){return this.#F.map((F)=>D[F.type]).join(this.#Y)}#X(){this._setUserInput(this.#G(this.#D)),this._setValue(l8(this.#D)??void 0)}constructor(D){let F=D.format?{segments:d8(D.format),separator:D.separator??"/"}:h7(D.locale),B=D.separator??F.separator,E=D.format?d8(D.format):F.segments,Z=D.initialValue??D.defaultValue,J=Z?{year:String(Z.getUTCFullYear()).padStart(4,"0"),month:String(Z.getUTCMonth()+1).padStart(2,"0"),day:String(Z.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},Y=E.map((H)=>J[H.type]).join(B);super({...D,initialUserInput:Y},!1),this.#F=E,this.#Y=B,this.#D=J,this.#J=D.minDate,this.#H=D.maxDate,this.#X(),this.on("cursor",(H)=>this.#q(H)),this.on("key",(H,Q)=>this.#u(H,Q)),this.on("finalize",()=>this.#W(D))}#Q(){let D=Math.max(0,Math.min(this.#B.segmentIndex,this.#F.length-1)),F=this.#F[D];if(F)return this.#B.positionInSegment=Math.max(0,Math.min(this.#B.positionInSegment,F.len-1)),{segment:F,index:D}}#C(D){this.inlineError="",this.#Z=null;let F=this.#Q();F&&(this.#B.segmentIndex=Math.max(0,Math.min(this.#F.length-1,F.index+D)),this.#B.positionInSegment=0,this.#E=!0)}#K(D){let F=this.#Q();if(!F)return;let{segment:B}=F,E=this.#D[B.type],Z=!E||E.replace(/_/g,"")==="",J=Number.parseInt((E||"0").replace(/_/g,"0"),10)||0,Y=g7(B.type,t0(this.#D),this.#J,this.#H),H;Z?H=D===1?Y.min:Y.max:H=Math.max(Math.min(Y.max,J+D),Y.min),this.#D={...this.#D,[B.type]:H.toString().padStart(B.len,"0")},this.#E=!0,this.#Z=null,this.#X()}#q(D){if(D)switch(D){case"right":return this.#C(1);case"left":return this.#C(-1);case"up":return this.#K(1);case"down":return this.#K(-1)}}#u(D,F){if(F?.name==="backspace"||F?.sequence===""||F?.sequence==="\b"||D===""||D==="\b"){this.inlineError="";let B=this.#Q();if(!B)return;if(!this.#D[B.segment.type].replace(/_/g,"")){this.#C(-1);return}this.#D[B.segment.type]="_".repeat(B.segment.len),this.#E=!0,this.#B.positionInSegment=0,this.#X();return}if(F?.name==="tab"){this.inlineError="";let B=this.#Q();if(!B)return;let E=F.shift?-1:1,Z=B.index+E;Z>=0&&Z<this.#F.length&&(this.#B.segmentIndex=Z,this.#B.positionInSegment=0,this.#E=!0);return}if(D&&/^[0-9]$/.test(D)){let B=this.#Q();if(!B)return;let{segment:E}=B,Z=!this.#D[E.type].replace(/_/g,"");if(this.#E&&this.#Z!==null&&!Z){let u=this.#Z+D,q={...this.#D,[E.type]:u},z=this.#z(q,E);if(z){this.inlineError=z,this.#Z=null,this.#E=!1;return}this.inlineError="",this.#D[E.type]=u,this.#Z=null,this.#E=!1,this.#X(),B.index<this.#F.length-1&&(this.#B.segmentIndex=B.index+1,this.#B.positionInSegment=0,this.#E=!0);return}this.#E&&!Z&&(this.#D[E.type]="_".repeat(E.len),this.#B.positionInSegment=0),this.#E=!1,this.#Z=null;let J=this.#D[E.type],Y=J.indexOf("_"),H=Y>=0?Y:Math.min(this.#B.positionInSegment,E.len-1);if(H<0||H>=E.len)return;let Q=J.slice(0,H)+D+J.slice(H+1),X=!1;if(H===0&&J==="__"&&(E.type==="month"||E.type==="day")){let u=Number.parseInt(D,10);Q=`0${D}`,X=u<=(E.type==="month"?1:2)}if(E.type==="year"&&(Q=(J.replace(/_/g,"")+D).padStart(E.len,"_")),!Q.includes("_")){let u={...this.#D,[E.type]:Q},q=this.#z(u,E);if(q){this.inlineError=q;return}}this.inlineError="",this.#D[E.type]=Q;let C=Q.includes("_")?void 0:i8(this.#D);if(C){let{year:u,month:q}=C,z=PF(u,q);this.#D={year:String(Math.max(0,Math.min(9999,u))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,q))).padStart(2,"0"),day:String(Math.max(1,Math.min(z,C.day))).padStart(2,"0")}}this.#X();let G=Q.indexOf("_");X?(this.#E=!0,this.#Z=D):G>=0?this.#B.positionInSegment=G:Y>=0&&B.index<this.#F.length-1?(this.#B.segmentIndex=B.index+1,this.#B.positionInSegment=0,this.#E=!0):this.#B.positionInSegment=Math.min(H+1,E.len-1)}}#z(D,F){let{month:B,day:E}=t0(D);if(F.type==="month"&&(B<0||B>12))return o.date.messages.invalidMonth;if(F.type==="day"&&(E<0||E>31))return o.date.messages.invalidDay(31,"any month")}#W(D){let{year:F,month:B,day:E}=t0(this.#D);if(F&&B&&E){let Z=PF(F,B);this.#D={...this.#D,day:String(Math.min(E,Z)).padStart(2,"0")}}this.value=l8(this.#D)??D.defaultValue??void 0}}class r8 extends D0{options;cursor=0;#F;getGroupItems(D){return this.options.filter((F)=>F.group===D)}isGroupSelected(D){let F=this.getGroupItems(D),B=this.value;return B===void 0?!1:F.every((E)=>B.includes(E.value))}toggleValue(){let D=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),D.group===!0){let F=D.value,B=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter((E)=>B.findIndex((Z)=>Z.value===E)===-1):this.value=[...this.value,...B.map((E)=>E.value)],this.value=Array.from(new Set(this.value))}else{let F=this.value.includes(D.value);this.value=F?this.value.filter((B)=>B!==D.value):[...this.value,D.value]}}constructor(D){super(D,!1);let{options:F}=D;this.#F=D.selectableGroups!==!1,this.options=Object.entries(F).flatMap(([B,E])=>[{value:B,group:!0,label:B},...E.map((Z)=>({...Z,group:B}))]),this.value=[...D.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:B})=>B===D.cursorAt),this.#F?0:1),this.on("cursor",(B)=>{switch(B){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let E=this.options[this.cursor]?.group===!0;!this.#F&&E&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let E=this.options[this.cursor]?.group===!0;!this.#F&&E&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}}class bF extends D0{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(D){super(D,!1),this.options=D.options;let F=this.options.findIndex(({value:E})=>E===D.initialValue),B=F===-1?0:F;this.cursor=this.options[B].disabled?eD(B,1,this.options):B,this.changeValue(),this.on("cursor",(E)=>{switch(E){case"left":case"up":this.cursor=eD(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=eD(this.cursor,1,this.options);break}this.changeValue()})}}class vF extends D0{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let D=this.userInput;if(this.cursor>=D.length)return`${this.userInput}█`;let F=D.slice(0,this.cursor),[B,...E]=D.slice(this.cursor);return`${F}${_F("inverse",B)}${E.join("")}`}get cursor(){return this._cursor}constructor(D){super({...D,initialUserInput:D.initialUserInput??D.initialValue}),this.on("userInput",(F)=>{this._setValue(F)}),this.on("finalize",()=>{this.value||(this.value=D.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as A,stripVTControlCharacters as nY}from"node:util";import WD from"node:process";var K0=ID(fF(),1);function m7(){return WD.platform!=="win32"?WD.env.TERM!=="linux":!!WD.env.CI||!!WD.env.WT_SESSION||!!WD.env.TERMINUS_SUBLIME||WD.env.ConEmuTask==="{cmd::Cmder}"||WD.env.TERM_PROGRAM==="Terminus-Sublime"||WD.env.TERM_PROGRAM==="vscode"||WD.env.TERM==="xterm-256color"||WD.env.TERM==="alacritty"||WD.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var hF=m7(),c7=()=>process.env.CI==="true";var p=(D,F)=>hF?D:F,d7=p("◆","*"),s8=p("■","x"),o8=p("▲","x"),mF=p("◇","o"),l7=p("┌","T"),a=p("│","|"),z0=p("└","—"),tY=p("┐","T"),eY=p("┘","—"),gF=p("●",">"),F2=p("○"," "),DH=p("◻","[•]"),FH=p("◼","[+]"),BH=p("◻","[ ]"),EH=p("▪","•"),ZH=p("─","-"),JH=p("╮","+"),YH=p("├","+"),HH=p("╯","+"),XH=p("╰","+"),QH=p("╭","+"),p7=p("●","•"),a7=p("◆","*"),i7=p("▲","!"),n7=p("■","x"),cF=(D)=>{switch(D){case"initial":case"active":return A("cyan",d7);case"cancel":return A("red",s8);case"error":return A("yellow",o8);case"submit":return A("green",mF)}},r7=(D)=>{switch(D){case"initial":case"active":return A("cyan",a);case"cancel":return A("red",a);case"error":return A("yellow",a);case"submit":return A("green",a)}},s7=(D,F,B,E,Z)=>{let J=F,Y=0;for(let H=B;H<E;H++){let Q=D[H];if(J=J-Q.length,Y++,J<=Z)break}return{lineCount:J,removals:Y}},o7=({cursor:D,options:F,style:B,output:E=process.stdout,maxItems:Z=Number.POSITIVE_INFINITY,columnPadding:J=0,rowPadding:Y=4})=>{let H=e0(E)-J,Q=wF(E),X=A("dim","..."),C=Math.max(Q-Y,0),G=Math.max(Math.min(Z,C),5),u=0;D>=G-3&&(u=Math.max(Math.min(D-G+3,F.length-G),0));let q=G<F.length&&u>0,z=G<F.length&&u+G<F.length,$=Math.min(u+G,F.length),M=[],I=0;q&&I++,z&&I++;let V=u+(q?1:0),N=$-(z?1:0);for(let R=V;R<N;R++){let f=OD(B(F[R],R===D),H,{hard:!0,trim:!1}).split(`
|
|
51
|
-
`);
|
|
52
|
-
`:""}${
|
|
53
|
-
`,
|
|
54
|
-
${A("gray",a)}`:""}`}default:{let
|
|
37
|
+
`))!==-1;){let Z=D.value.slice(0,B);if(D.value=D.value.slice(B+2),Z.trim()){let E=R8(Z,F);E&&(yield E)}}}async function*I8(D,F){let B=D.body;if(!B)return;let Z=B.getReader(),E=new TextDecoder("utf-8");if(D.headers.get("Content-Type")?.startsWith("text/event-stream")){let Y={value:""};try{for(;;){let{done:X,value:H}=await Z.read();if(X)break;let Q=typeof H=="string"?H:E.decode(H,{stream:!0});Y.value+=Q,yield*T8(Y,F)}let J=E.decode();if(J&&(Y.value+=J),yield*T8(Y,F),Y.value.trim()){let X=R8(Y.value,F);X&&(yield X)}}finally{Z.releaseLock()}}else try{for(;;){let{done:Y,value:J}=await Z.read();if(Y)break;yield cD(typeof J=="string"?J:E.decode(J,{stream:!0}),{parseDate:F?.parseDate})}}finally{Z.releaseLock()}}var G0=(D,F,B=[],Z)=>new Proxy(()=>{},{get(E,Y){if(Y==="~path")return"/"+B.join("/");if(!(B.length===0&&(Y==="then"||Y==="catch"||Y==="finally")))return G0(D,F,[...B,Y],Z)},apply(E,Y,[J,X]){if(!J||X||typeof J=="object"&&Object.keys(J).length!==1||$7.includes(B.at(-1))){let H=[...B],Q=H.pop(),G="/"+H.join("/"),{fetcher:K=fetch,headers:W,onRequest:q,onResponse:C,fetch:U}=F,V=Q==="get"||Q==="head"||Q==="subscribe",I=V?J?.query:X?.query,u="";if(I){let N=(M,L)=>{L!=null&&(L instanceof Date&&(L=L.toISOString()),u+=(u?"&":"?")+`${encodeURIComponent(M)}=${encodeURIComponent(typeof L=="object"?JSON.stringify(L):L+"")}`)};for(let[M,L]of Object.entries(I)){if(Array.isArray(L)){for(let S of L)N(M,S);continue}N(M,L)}}if(Q==="subscribe"){let N=D.replace(/^([^]+):\/\//,D.startsWith("https://")?"wss://":D.startsWith("http://")||L8.find((M)=>D.includes(M))?"ws://":"wss://")+G+u;return new W7(N)}return(async()=>{W=await dD(W,G,X);let N={method:Q?.toUpperCase(),body:J,...U,headers:W};N.headers={...W,...await dD(V?J?.headers:X?.headers,G,N)};let M=V&&typeof J=="object"?J.fetch:X?.fetch,L=(V&&typeof J=="object"?J.throwHttpError:X?.throwHttpError)??F.throwHttpError;if(N={...N,...M},V&&delete N.body,q){Array.isArray(q)||(q=[q]);for(let d of q){let v=await d(G,N);typeof v=="object"&&(N={...N,...v,headers:{...N.headers,...await dD(v.headers,G,N)}})}}if(V&&delete N.body,U7(J)){let d=new FormData,v=(b)=>{if(typeof b=="string"||p0(b))return!1;if(typeof b=="object"){if(b!==null)return!0;if(b instanceof Date)return!1}return!1},FD=async(b)=>b instanceof File?await MF(b):v(b)?JSON.stringify(b):b;for(let[b,_]of Object.entries(N.body)){if(Array.isArray(_)){if(_.some((g)=>typeof g=="object"&&g!==null&&!p0(g)))d.append(b,JSON.stringify(_));else for(let g=0;g<_.length;g++){let n=_[g],JD=await FD(n);d.append(b,JD)}continue}if(NF){if(Array.isArray(_))for(let g of _)d.append(b,await FD(g));else d.append(b,await FD(_));continue}if(_ instanceof File){d.append(b,await MF(_));continue}if(_ instanceof FileList){for(let g=0;g<_.length;g++)d.append(b,await MF(_[g]));continue}d.append(b,await FD(_))}N.body=d}else typeof J=="object"?(N.headers["content-type"]="application/json",N.body=JSON.stringify(J)):J!=null&&(N.headers["content-type"]="text/plain");if(V&&delete N.body,q){Array.isArray(q)||(q=[q]);for(let d of q){let v=await d(G,N);typeof v=="object"&&(N={...N,...v,headers:{...N.headers,...await dD(v.headers,G,N)}})}}X?.headers?.["content-type"]&&(N.headers["content-type"]=X?.headers["content-type"]);let S=D+G+u,R;try{R=await(Z?.handle(new Request(S,N))??K(S,N))}catch(d){let v=new fD(503,d);if(j8(v,L))throw v;return{data:null,error:v,response:void 0,status:503,headers:void 0}}let O=null,i=null;if(C){Array.isArray(C)||(C=[C]);for(let d of C)try{let v=await d(R.clone());if(v!=null){O=v;break}}catch(v){v instanceof fD?i=v:i=new fD(422,v);break}}if(O!==null)return{data:O,error:i,response:R,status:R.status,headers:R.headers};switch(R.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":O=I8(R,{parseDate:F.parseDate});break;case"application/json":O=JSON.parse(await R.text(),(v,FD)=>{if(typeof FD!="string")return FD;return l0(FD,{parseDate:F.parseDate})||FD});break;case"application/octet-stream":O=await R.arrayBuffer();break;case"multipart/form-data":let d=await R.formData();O={},d.forEach((v,FD)=>{O[FD]=v});break;default:R.headers.get("content-type")?.startsWith("text/")&&R.headers.get("transfer-encoding")==="chunked"&&!R.headers.has("content-length")?O=I8(R,{parseDate:F.parseDate}):O=await R.text().then((v)=>cD(v,{parseDate:F.parseDate}))}if(R.status>=300||R.status<200){if(i=new fD(R.status,O),j8(i,L))throw i;O=null}return{data:O,error:i,response:R,status:R.status,headers:R.headers}})()}return typeof J=="object"?G0(D,F,[...B,Object.values(J)[0]],Z):G0(D,F,B)}}),VF=(D,F={})=>typeof D=="string"?(F.keepDomain||(D.includes("://")||(D=(L8.find((B)=>D.includes(B))?"http://":"https://")+D),D.endsWith("/")&&(D=D.slice(0,-1))),G0(D,F)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),G0("http://e.ly",F,[],D));var OD=ID(s2(),1),a0=process.env.PHOTON_DEBUG==="1"||process.env.PHOTON_DEBUG==="true";function S8(D){a0=D}function _8(){return a0}function M7(...D){if(!a0)return;let F=OD.default.dim(`[debug ${new Date().toISOString()}]`);console.error(F,...D)}function uF(D){if(!a0)return;let F=D.status>=500?OD.default.red:D.status>=400?OD.default.yellow:D.status>=200?OD.default.green:OD.default.dim;M7(OD.default.bold(D.method.padEnd(6)),F(String(D.status)),D.url,OD.default.dim(`${D.durationMs}ms`))}async function y(D={}){let F=D.url?{name:"custom",url:WF(D.url)}:await YD(D.apiHost),B=D.token??process.env.PHOTON_TOKEN??process.env.DASHBOARD_TOKEN,Z=D.url||B?null:await tD(F.name);if(D.requireAuth&&!Z&&!B)throw new Y0(F.name);let E=B??Z?.accessToken,Y={};if(E)Y.Authorization=`Bearer ${E}`;let J=_8()?N7():fetch;return{api:VF(F.url,{headers:Y,fetcher:J}),env:F,creds:Z}}function N7(){return Object.assign(async(D,F)=>{let B=performance.now(),Z=typeof D==="string"?D:D instanceof URL?D.toString():D.url,E=(F?.method??(D instanceof Request?D.method:void 0)??"GET").toUpperCase();try{let Y=await fetch(D,F);return uF({method:E,url:Z,status:Y.status,durationMs:Math.round(performance.now()-B)}),Y}catch(Y){throw uF({method:E,url:Z,status:0,durationMs:Math.round(performance.now()-B)}),Y}},typeof fetch.preconnect==="function"?{preconnect:fetch.preconnect.bind(fetch)}:{})}async function m(D){let F=await YD(D.apiHost),B=D.flagProjectId?.trim();if(B)return{projectId:B,env:F};let Z=process.env.PHOTON_PROJECT_ID?.trim();if(Z)return{projectId:Z,env:F};$(`No project specified for backend "${F.name}".`,{hint:"Pass `--project <id>`, or set `PHOTON_PROJECT_ID` in your shell."})}import{styleText as kF}from"node:util";import{stdout as PF,stdin as a8}from"node:process";import*as yD from"node:readline";import f7 from"node:readline";var k8=(D)=>{return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109},f8=(D)=>{return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510},O8=(D)=>{return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9800&&D<=9811||D===9855||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12771||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=19903||D>=19968&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101632&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129672||D>=129680&&D<=129725||D>=129727&&D<=129733||D>=129742&&D<=129755||D>=129760&&D<=129768||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141};var AF=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,i0=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,n0=/\t{1,1000}/y,jF=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,r0=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,V7=/\p{M}+/gu,u7={limit:1/0,ellipsis:""},P8=(D,F={},B={})=>{let Z=F.limit??1/0,E=F.ellipsis??"",Y=F?.ellipsisWidth??(E?P8(E,u7,B).width:0),J=B.ansiWidth??0,X=B.controlWidth??0,H=B.tabWidth??8,Q=B.ambiguousWidth??1,G=B.emojiWidth??2,K=B.fullWidthWidth??2,W=B.regularWidth??1,q=B.wideWidth??2,C=0,U=0,V=D.length,I=0,u=!1,N=V,M=Math.max(0,Z-Y),L=0,S=0,R=0,O=0;D:while(!0){if(S>L||U>=V&&U>C){let i=D.slice(L,S)||D.slice(C,U);I=0;for(let d of i.replaceAll(V7,"")){let v=d.codePointAt(0)||0;if(f8(v))O=K;else if(O8(v))O=q;else if(Q!==W&&k8(v))O=Q;else O=W;if(R+O>M)N=Math.min(N,Math.max(L,C)+I);if(R+O>Z){u=!0;break D}I+=d.length,R+=O}L=S=0}if(U>=V)break;if(r0.lastIndex=U,r0.test(D)){if(I=r0.lastIndex-U,O=I*W,R+O>M)N=Math.min(N,U+Math.floor((M-R)/W));if(R+O>Z){u=!0;break}R+=O,L=C,S=U,U=C=r0.lastIndex;continue}if(AF.lastIndex=U,AF.test(D)){if(R+J>M)N=Math.min(N,U);if(R+J>Z){u=!0;break}R+=J,L=C,S=U,U=C=AF.lastIndex;continue}if(i0.lastIndex=U,i0.test(D)){if(I=i0.lastIndex-U,O=I*X,R+O>M)N=Math.min(N,U+Math.floor((M-R)/X));if(R+O>Z){u=!0;break}R+=O,L=C,S=U,U=C=i0.lastIndex;continue}if(n0.lastIndex=U,n0.test(D)){if(I=n0.lastIndex-U,O=I*H,R+O>M)N=Math.min(N,U+Math.floor((M-R)/H));if(R+O>Z){u=!0;break}R+=O,L=C,S=U,U=C=n0.lastIndex;continue}if(jF.lastIndex=U,jF.test(D)){if(R+G>M)N=Math.min(N,U);if(R+G>Z){u=!0;break}R+=G,L=C,S=U,U=C=jF.lastIndex;continue}U+=1}return{width:u?M:R,index:u?N:V,truncated:u,ellipsed:u&&Z>=Y}},y8=P8;var A7={limit:1/0,ellipsis:"",ellipsisWidth:0},j7=(D,F={})=>{return y8(D,A7,F).width},AD=j7;var s0="\x1B",h8="",T7=39,IF="\x07",g8="[",I7="]",m8="m",LF=`${I7}8;;`,x8=new RegExp(`(?:\\${g8}(?<code>\\d+)m|\\${LF}(?<uri>.*)${IF})`,"y"),w8=(D)=>{if(D>=30&&D<=37)return 39;if(D>=90&&D<=97)return 39;if(D>=40&&D<=47)return 49;if(D>=100&&D<=107)return 49;if(D===1||D===2)return 22;if(D===3)return 23;if(D===4)return 24;if(D===7)return 27;if(D===8)return 28;if(D===9)return 29;if(D===0)return 0;return},b8=(D)=>`${s0}${g8}${D}${m8}`,v8=(D)=>`${s0}${LF}${D}${IF}`,TF=(D,F,B)=>{let Z=F[Symbol.iterator](),E=!1,Y=!1,J=D.at(-1),X=J===void 0?0:AD(J),H=Z.next(),Q=Z.next(),G=0;while(!H.done){let K=H.value,W=AD(K);if(X+W<=B)D[D.length-1]+=K;else D.push(K),X=0;if(K===s0||K===h8)E=!0,Y=F.startsWith(LF,G+1);if(E){if(Y){if(K===IF)E=!1,Y=!1}else if(K===m8)E=!1}else if(X+=W,X===B&&!Q.done)D.push(""),X=0;H=Q,Q=Z.next(),G+=K.length}if(J=D.at(-1),!X&&J!==void 0&&J.length&&D.length>1)D[D.length-2]+=D.pop()},L7=(D)=>{let F=D.split(" "),B=F.length;while(B){if(AD(F[B-1]))break;B--}if(B===F.length)return D;return F.slice(0,B).join(" ")+F.slice(B).join("")},R7=(D,F,B={})=>{if(B.trim!==!1&&D.trim()==="")return"";let Z="",E,Y,J=D.split(" "),X=[""],H=0;for(let K=0;K<J.length;K++){let W=J[K];if(B.trim!==!1){let C=X.at(-1)??"",U=C.trimStart();if(C.length!==U.length)X[X.length-1]=U,H=AD(U)}if(K!==0){if(H>=F&&(B.wordWrap===!1||B.trim===!1))X.push(""),H=0;if(H||B.trim===!1)X[X.length-1]+=" ",H++}let q=AD(W);if(B.hard&&q>F){let C=F-H,U=1+Math.floor((q-C-1)/F);if(Math.floor((q-1)/F)<U)X.push("");TF(X,W,F),H=AD(X.at(-1)??"");continue}if(H+q>F&&H&&q){if(B.wordWrap===!1&&H<F){TF(X,W,F),H=AD(X.at(-1)??"");continue}X.push(""),H=0}if(H+q>F&&B.wordWrap===!1){TF(X,W,F),H=AD(X.at(-1)??"");continue}X[X.length-1]+=W,H+=q}if(B.trim!==!1)X=X.map((K)=>L7(K));let Q=X.join(`
|
|
38
|
+
`),G=!1;for(let K=0;K<Q.length;K++){let W=Q[K];if(Z+=W,!G)G=W>="\uD800"&&W<="\uDBFF";else continue;if(W===s0||W===h8){x8.lastIndex=K+1;let C=x8.exec(Q)?.groups;if(C?.code!==void 0){let U=Number.parseFloat(C.code);E=U===T7?void 0:U}else if(C?.uri!==void 0)Y=C.uri.length===0?void 0:C.uri}if(Q[K+1]===`
|
|
39
|
+
`){if(Y)Z+=v8("");let q=E?w8(E):void 0;if(E&&q)Z+=b8(q)}else if(W===`
|
|
40
|
+
`){if(E&&w8(E))Z+=b8(E);if(Y)Z+=v8(Y)}}return Z},S7=/\r?\n/;function PD(D,F,B){return String(D).normalize().split(S7).map((Z)=>R7(Z,F,B)).join(`
|
|
41
|
+
`)}var DD=ID(SF(),1);import{ReadStream as d8}from"node:tty";function eD(D,F,B){if(!B.some((J)=>!J.disabled))return D;let Z=D+F,E=Math.max(B.length-1,0),Y=Z<0?E:Z>E?0:Z;return B[Y].disabled?eD(Y,F<0?-1:1,B):Y}var O7=["up","down","left","right","space","enter","cancel"],P7=["January","February","March","April","May","June","July","August","September","October","November","December"],o={actions:new Set(O7),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...P7],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(D,F)=>`There are only ${D} days in ${F}`,afterMin:(D)=>`Date must be on or after ${D.toISOString().slice(0,10)}`,beforeMax:(D)=>`Date must be on or before ${D.toISOString().slice(0,10)}`}}};function yF(D,F){if(typeof D=="string")return o.aliases.get(D)===F;for(let B of D)if(B!==void 0&&yF(B,F))return!0;return!1}function y7(D,F){if(D===F)return;let B=D.split(`
|
|
42
|
+
`),Z=F.split(`
|
|
43
|
+
`),E=Math.max(B.length,Z.length),Y=[];for(let J=0;J<E;J++)B[J]!==Z[J]&&Y.push(J);return{lines:Y,numLinesBefore:B.length,numLinesAfter:Z.length,numLines:E}}var x7=globalThis.process.platform.startsWith("win"),fF=Symbol("clack:cancel");function t(D){return D===fF}function o0(D,F){let B=D;B.isTTY&&B.setRawMode(F)}function i8({input:D=a8,output:F=PF,overwrite:B=!0,hideCursor:Z=!0}={}){let E=yD.createInterface({input:D,output:F,prompt:"",tabSize:1});yD.emitKeypressEvents(D,E),D instanceof d8&&D.isTTY&&D.setRawMode(!0);let Y=(J,{name:X,sequence:H})=>{let Q=String(J);if(yF([Q,X,H],"cancel")){Z&&F.write(DD.cursor.show),process.exit(0);return}if(!B)return;yD.moveCursor(F,X==="return"?0:-1,X==="return"?-1:0,()=>{yD.clearLine(F,1,()=>{D.once("keypress",Y)})})};return Z&&F.write(DD.cursor.hide),D.once("keypress",Y),()=>{D.off("keypress",Y),Z&&F.write(DD.cursor.show),D instanceof d8&&D.isTTY&&!x7&&D.setRawMode(!1),E.terminal=!1,E.close()}}var e0=(D)=>("columns"in D)&&typeof D.columns=="number"?D.columns:80,xF=(D)=>("rows"in D)&&typeof D.rows=="number"?D.rows:20;function K0(D,F,B,Z=B){let E=e0(D??PF);return PD(F,E-B.length,{hard:!0,trim:!1}).split(`
|
|
44
|
+
`).map((Y,J)=>`${J===0?Z:B}${Y}`).join(`
|
|
45
|
+
`)}var D0=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(D,F=!0){let{input:B=a8,output:Z=PF,render:E,signal:Y,...J}=D;this.opts=J,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=E.bind(this),this._track=F,this._abortSignal=Y,this.input=B,this.output=Z}unsubscribe(){this._subscribers.clear()}setSubscriber(D,F){let B=this._subscribers.get(D)??[];B.push(F),this._subscribers.set(D,B)}on(D,F){this.setSubscriber(D,{cb:F})}once(D,F){this.setSubscriber(D,{cb:F,once:!0})}emit(D,...F){let B=this._subscribers.get(D)??[],Z=[];for(let E of B)E.cb(...F),E.once&&Z.push(()=>B.splice(B.indexOf(E),1));for(let E of Z)E()}prompt(){return new Promise((D)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),D(fF);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=f7.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),o0(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(DD.cursor.show),this.output.off("resize",this.render),o0(this.input,!1),D(this.value)}),this.once("cancel",()=>{this.output.write(DD.cursor.show),this.output.off("resize",this.render),o0(this.input,!1),D(fF)})})}_isActionKey(D,F){return D==="\t"}_setValue(D){this.value=D,this.emit("value",this.value)}_setUserInput(D,F){this.userInput=D??"",this.emit("userInput",this.userInput),F&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(D,F){if(this._track&&F.name!=="return"&&(F.name&&this._isActionKey(D,F)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),F?.name&&(!this._track&&o.aliases.has(F.name)&&this.emit("cursor",o.aliases.get(F.name)),o.actions.has(F.name)&&this.emit("cursor",F.name)),D&&(D.toLowerCase()==="y"||D.toLowerCase()==="n")&&this.emit("confirm",D.toLowerCase()==="y"),this.emit("key",D?.toLowerCase(),F),F?.name==="return"){if(this.opts.validate){let B=this.opts.validate(this.value);B&&(this.error=B instanceof Error?B.message:B,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}yF([D,F?.name,F?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
46
|
+
`),o0(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let D=PD(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
47
|
+
`).length-1;this.output.write(DD.cursor.move(-999,D*-1))}render(){let D=PD(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(D!==this._prevFrame){if(this.state==="initial")this.output.write(DD.cursor.hide);else{let F=y7(this._prevFrame,D),B=xF(this.output);if(this.restoreCursor(),F){let Z=Math.max(0,F.numLinesAfter-B),E=Math.max(0,F.numLinesBefore-B),Y=F.lines.find((J)=>J>=Z);if(Y===void 0){this._prevFrame=D;return}if(F.lines.length===1){this.output.write(DD.cursor.move(0,Y-E)),this.output.write(DD.erase.lines(1));let J=D.split(`
|
|
48
|
+
`);this.output.write(J[Y]),this._prevFrame=D,this.output.write(DD.cursor.move(0,J.length-Y-1));return}else if(F.lines.length>1){if(Z<E)Y=Z;else{let X=Y-E;X>0&&this.output.write(DD.cursor.move(0,X))}this.output.write(DD.erase.down());let J=D.split(`
|
|
49
|
+
`).slice(Y);this.output.write(J.join(`
|
|
50
|
+
`)),this._prevFrame=D;return}}this.output.write(DD.erase.down())}this.output.write(D),this.state==="initial"&&(this.state="active"),this._prevFrame=D}}};function w7(D,F){if(D===void 0||F.length===0)return 0;let B=F.findIndex((Z)=>Z.value===D);return B!==-1?B:0}function b7(D,F){return(F.label??String(F.value)).toLowerCase().includes(D.toLowerCase())}function v7(D,F){if(F)return D?F:F[0]}var h7=class extends D0{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#F=0;#J="";#D;#Y;#X;get cursor(){return this.#F}get userInputWithCursor(){if(!this.userInput)return kF(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let D=this.userInput.slice(0,this._cursor),[F,...B]=this.userInput.slice(this._cursor);return`${D}${kF("inverse",F)}${B.join("")}`}get options(){return typeof this.#Y=="function"?this.#Y():this.#Y}constructor(D){super(D),this.#Y=D.options,this.#X=D.placeholder;let F=this.options;this.filteredOptions=[...F],this.multiple=D.multiple===!0,this.#D=typeof D.options=="function"?D.filter:D.filter??b7;let B;if(D.initialValue&&Array.isArray(D.initialValue)?this.multiple?B=D.initialValue:B=D.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(B=[this.options[0].value]),B)for(let Z of B){let E=F.findIndex((Y)=>Y.value===Z);E!==-1&&(this.toggleSelected(Z),this.#F=E)}this.focusedValue=this.options[this.#F]?.value,this.on("key",(Z,E)=>this.#B(Z,E)),this.on("userInput",(Z)=>this.#Z(Z))}_isActionKey(D,F){return D==="\t"||this.multiple&&this.isNavigating&&F.name==="space"&&D!==void 0&&D!==""}#B(D,F){let B=F.name==="up",Z=F.name==="down",E=F.name==="return",Y=this.userInput===""||this.userInput==="\t",J=this.#X,X=this.options,H=J!==void 0&&J!==""&&X.some((Q)=>!Q.disabled&&(this.#D?this.#D(J,Q):!0));if(F.name==="tab"&&Y&&H){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(J,!0),this.isNavigating=!1;return}B||Z?(this.#F=eD(this.#F,B?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#F]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):E?this.value=v7(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(F.name==="tab"||this.isNavigating&&F.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(D){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(D)?this.selectedValues=this.selectedValues.filter((F)=>F!==D):this.selectedValues=[...this.selectedValues,D]:this.selectedValues=[D])}#Z(D){if(D!==this.#J){this.#J=D;let F=this.options;D&&this.#D?this.filteredOptions=F.filter((E)=>this.#D?.(D,E)):this.filteredOptions=[...F];let B=w7(this.focusedValue,this.filteredOptions);this.#F=eD(B,0,this.filteredOptions);let Z=this.filteredOptions[this.#F];Z&&!Z.disabled?this.focusedValue=Z.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class wF extends D0{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(D){super(D,!1),this.value=!!D.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(F)=>{this.output.write(DD.cursor.move(0,-1)),this.value=F,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var g7={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function l8(D){return[...D].map((F)=>g7[F])}function m7(D){let F=new Intl.DateTimeFormat(D,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),B=[],Z="/";for(let E of F)E.type==="literal"?Z=E.value.trim()||E.value:(E.type==="year"||E.type==="month"||E.type==="day")&&B.push({type:E.type,len:E.type==="year"?4:2});return{segments:B,separator:Z}}function _F(D){return Number.parseInt((D||"0").replace(/_/g,"0"),10)||0}function t0(D){return{year:_F(D.year),month:_F(D.month),day:_F(D.day)}}function OF(D,F){return new Date(D||2001,F||1,0).getDate()}function n8(D){let{year:F,month:B,day:Z}=t0(D);if(!F||F<0||F>9999||!B||B<1||B>12||!Z||Z<1)return;let E=new Date(Date.UTC(F,B-1,Z));if(!(E.getUTCFullYear()!==F||E.getUTCMonth()!==B-1||E.getUTCDate()!==Z))return{year:F,month:B,day:Z}}function p8(D){let F=n8(D);return F?new Date(Date.UTC(F.year,F.month-1,F.day)):void 0}function c7(D,F,B,Z){let E=B?{year:B.getUTCFullYear(),month:B.getUTCMonth()+1,day:B.getUTCDate()}:null,Y=Z?{year:Z.getUTCFullYear(),month:Z.getUTCMonth()+1,day:Z.getUTCDate()}:null;return D==="year"?{min:E?.year??1,max:Y?.year??9999}:D==="month"?{min:E&&F.year===E.year?E.month:1,max:Y&&F.year===Y.year?Y.month:12}:{min:E&&F.year===E.year&&F.month===E.month?E.day:1,max:Y&&F.year===Y.year&&F.month===Y.month?Y.day:OF(F.year,F.month)}}class r8 extends D0{#F;#J;#D;#Y;#X;#B={segmentIndex:0,positionInSegment:0};#Z=!0;#E=null;inlineError="";get segmentCursor(){return{...this.#B}}get segmentValues(){return{...this.#D}}get segments(){return this.#F}get separator(){return this.#J}get formattedValue(){return this.#K(this.#D)}#K(D){return this.#F.map((F)=>D[F.type]).join(this.#J)}#Q(){this._setUserInput(this.#K(this.#D)),this._setValue(p8(this.#D)??void 0)}constructor(D){let F=D.format?{segments:l8(D.format),separator:D.separator??"/"}:m7(D.locale),B=D.separator??F.separator,Z=D.format?l8(D.format):F.segments,E=D.initialValue??D.defaultValue,Y=E?{year:String(E.getUTCFullYear()).padStart(4,"0"),month:String(E.getUTCMonth()+1).padStart(2,"0"),day:String(E.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},J=Z.map((X)=>Y[X.type]).join(B);super({...D,initialUserInput:J},!1),this.#F=Z,this.#J=B,this.#D=Y,this.#Y=D.minDate,this.#X=D.maxDate,this.#Q(),this.on("cursor",(X)=>this.#q(X)),this.on("key",(X,H)=>this.#W(X,H)),this.on("finalize",()=>this.#$(D))}#H(){let D=Math.max(0,Math.min(this.#B.segmentIndex,this.#F.length-1)),F=this.#F[D];if(F)return this.#B.positionInSegment=Math.max(0,Math.min(this.#B.positionInSegment,F.len-1)),{segment:F,index:D}}#G(D){this.inlineError="",this.#E=null;let F=this.#H();F&&(this.#B.segmentIndex=Math.max(0,Math.min(this.#F.length-1,F.index+D)),this.#B.positionInSegment=0,this.#Z=!0)}#z(D){let F=this.#H();if(!F)return;let{segment:B}=F,Z=this.#D[B.type],E=!Z||Z.replace(/_/g,"")==="",Y=Number.parseInt((Z||"0").replace(/_/g,"0"),10)||0,J=c7(B.type,t0(this.#D),this.#Y,this.#X),X;E?X=D===1?J.min:J.max:X=Math.max(Math.min(J.max,Y+D),J.min),this.#D={...this.#D,[B.type]:X.toString().padStart(B.len,"0")},this.#Z=!0,this.#E=null,this.#Q()}#q(D){if(D)switch(D){case"right":return this.#G(1);case"left":return this.#G(-1);case"up":return this.#z(1);case"down":return this.#z(-1)}}#W(D,F){if(F?.name==="backspace"||F?.sequence===""||F?.sequence==="\b"||D===""||D==="\b"){this.inlineError="";let B=this.#H();if(!B)return;if(!this.#D[B.segment.type].replace(/_/g,"")){this.#G(-1);return}this.#D[B.segment.type]="_".repeat(B.segment.len),this.#Z=!0,this.#B.positionInSegment=0,this.#Q();return}if(F?.name==="tab"){this.inlineError="";let B=this.#H();if(!B)return;let Z=F.shift?-1:1,E=B.index+Z;E>=0&&E<this.#F.length&&(this.#B.segmentIndex=E,this.#B.positionInSegment=0,this.#Z=!0);return}if(D&&/^[0-9]$/.test(D)){let B=this.#H();if(!B)return;let{segment:Z}=B,E=!this.#D[Z.type].replace(/_/g,"");if(this.#Z&&this.#E!==null&&!E){let W=this.#E+D,q={...this.#D,[Z.type]:W},C=this.#C(q,Z);if(C){this.inlineError=C,this.#E=null,this.#Z=!1;return}this.inlineError="",this.#D[Z.type]=W,this.#E=null,this.#Z=!1,this.#Q(),B.index<this.#F.length-1&&(this.#B.segmentIndex=B.index+1,this.#B.positionInSegment=0,this.#Z=!0);return}this.#Z&&!E&&(this.#D[Z.type]="_".repeat(Z.len),this.#B.positionInSegment=0),this.#Z=!1,this.#E=null;let Y=this.#D[Z.type],J=Y.indexOf("_"),X=J>=0?J:Math.min(this.#B.positionInSegment,Z.len-1);if(X<0||X>=Z.len)return;let H=Y.slice(0,X)+D+Y.slice(X+1),Q=!1;if(X===0&&Y==="__"&&(Z.type==="month"||Z.type==="day")){let W=Number.parseInt(D,10);H=`0${D}`,Q=W<=(Z.type==="month"?1:2)}if(Z.type==="year"&&(H=(Y.replace(/_/g,"")+D).padStart(Z.len,"_")),!H.includes("_")){let W={...this.#D,[Z.type]:H},q=this.#C(W,Z);if(q){this.inlineError=q;return}}this.inlineError="",this.#D[Z.type]=H;let G=H.includes("_")?void 0:n8(this.#D);if(G){let{year:W,month:q}=G,C=OF(W,q);this.#D={year:String(Math.max(0,Math.min(9999,W))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,q))).padStart(2,"0"),day:String(Math.max(1,Math.min(C,G.day))).padStart(2,"0")}}this.#Q();let K=H.indexOf("_");Q?(this.#Z=!0,this.#E=D):K>=0?this.#B.positionInSegment=K:J>=0&&B.index<this.#F.length-1?(this.#B.segmentIndex=B.index+1,this.#B.positionInSegment=0,this.#Z=!0):this.#B.positionInSegment=Math.min(X+1,Z.len-1)}}#C(D,F){let{month:B,day:Z}=t0(D);if(F.type==="month"&&(B<0||B>12))return o.date.messages.invalidMonth;if(F.type==="day"&&(Z<0||Z>31))return o.date.messages.invalidDay(31,"any month")}#$(D){let{year:F,month:B,day:Z}=t0(this.#D);if(F&&B&&Z){let E=OF(F,B);this.#D={...this.#D,day:String(Math.min(Z,E)).padStart(2,"0")}}this.value=p8(this.#D)??D.defaultValue??void 0}}class s8 extends D0{options;cursor=0;#F;getGroupItems(D){return this.options.filter((F)=>F.group===D)}isGroupSelected(D){let F=this.getGroupItems(D),B=this.value;return B===void 0?!1:F.every((Z)=>B.includes(Z.value))}toggleValue(){let D=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),D.group===!0){let F=D.value,B=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter((Z)=>B.findIndex((E)=>E.value===Z)===-1):this.value=[...this.value,...B.map((Z)=>Z.value)],this.value=Array.from(new Set(this.value))}else{let F=this.value.includes(D.value);this.value=F?this.value.filter((B)=>B!==D.value):[...this.value,D.value]}}constructor(D){super(D,!1);let{options:F}=D;this.#F=D.selectableGroups!==!1,this.options=Object.entries(F).flatMap(([B,Z])=>[{value:B,group:!0,label:B},...Z.map((E)=>({...E,group:B}))]),this.value=[...D.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:B})=>B===D.cursorAt),this.#F?0:1),this.on("cursor",(B)=>{switch(B){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let Z=this.options[this.cursor]?.group===!0;!this.#F&&Z&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let Z=this.options[this.cursor]?.group===!0;!this.#F&&Z&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}}class bF extends D0{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(D){super(D,!1),this.options=D.options;let F=this.options.findIndex(({value:Z})=>Z===D.initialValue),B=F===-1?0:F;this.cursor=this.options[B].disabled?eD(B,1,this.options):B,this.changeValue(),this.on("cursor",(Z)=>{switch(Z){case"left":case"up":this.cursor=eD(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=eD(this.cursor,1,this.options);break}this.changeValue()})}}class vF extends D0{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let D=this.userInput;if(this.cursor>=D.length)return`${this.userInput}█`;let F=D.slice(0,this.cursor),[B,...Z]=D.slice(this.cursor);return`${F}${kF("inverse",B)}${Z.join("")}`}get cursor(){return this._cursor}constructor(D){super({...D,initialUserInput:D.initialUserInput??D.initialValue}),this.on("userInput",(F)=>{this._setValue(F)}),this.on("finalize",()=>{this.value||(this.value=D.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as A,stripVTControlCharacters as EX}from"node:util";import $D from"node:process";var z0=ID(SF(),1);function d7(){return $D.platform!=="win32"?$D.env.TERM!=="linux":!!$D.env.CI||!!$D.env.WT_SESSION||!!$D.env.TERMINUS_SUBLIME||$D.env.ConEmuTask==="{cmd::Cmder}"||$D.env.TERM_PROGRAM==="Terminus-Sublime"||$D.env.TERM_PROGRAM==="vscode"||$D.env.TERM==="xterm-256color"||$D.env.TERM==="alacritty"||$D.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var hF=d7(),l7=()=>process.env.CI==="true";var p=(D,F)=>hF?D:F,p7=p("◆","*"),o8=p("■","x"),t8=p("▲","x"),mF=p("◇","o"),a7=p("┌","T"),a=p("│","|"),C0=p("└","—"),QX=p("┐","T"),HX=p("┘","—"),gF=p("●",">"),F2=p("○"," "),GX=p("◻","[•]"),KX=p("◼","[+]"),zX=p("◻","[ ]"),CX=p("▪","•"),qX=p("─","-"),WX=p("╮","+"),$X=p("├","+"),UX=p("╯","+"),MX=p("╰","+"),NX=p("╭","+"),i7=p("●","•"),n7=p("◆","*"),r7=p("▲","!"),s7=p("■","x"),cF=(D)=>{switch(D){case"initial":case"active":return A("cyan",p7);case"cancel":return A("red",o8);case"error":return A("yellow",t8);case"submit":return A("green",mF)}},o7=(D)=>{switch(D){case"initial":case"active":return A("cyan",a);case"cancel":return A("red",a);case"error":return A("yellow",a);case"submit":return A("green",a)}},t7=(D,F,B,Z,E)=>{let Y=F,J=0;for(let X=B;X<Z;X++){let H=D[X];if(Y=Y-H.length,J++,Y<=E)break}return{lineCount:Y,removals:J}},e7=({cursor:D,options:F,style:B,output:Z=process.stdout,maxItems:E=Number.POSITIVE_INFINITY,columnPadding:Y=0,rowPadding:J=4})=>{let X=e0(Z)-Y,H=xF(Z),Q=A("dim","..."),G=Math.max(H-J,0),K=Math.max(Math.min(E,G),5),W=0;D>=K-3&&(W=Math.max(Math.min(D-K+3,F.length-K),0));let q=K<F.length&&W>0,C=K<F.length&&W+K<F.length,U=Math.min(W+K,F.length),V=[],I=0;q&&I++,C&&I++;let u=W+(q?1:0),N=U-(C?1:0);for(let L=u;L<N;L++){let S=PD(B(F[L],L===D),X,{hard:!0,trim:!1}).split(`
|
|
51
|
+
`);V.push(S),I+=S.length}if(I>G){let L=0,S=0,R=I,O=D-u,i=(d,v)=>t7(V,R,d,v,G);q?({lineCount:R,removals:L}=i(0,O),R>G&&({lineCount:R,removals:S}=i(O+1,V.length))):({lineCount:R,removals:S}=i(O+1,V.length),R>G&&({lineCount:R,removals:L}=i(0,O))),L>0&&(q=!0,V.splice(0,L)),S>0&&(C=!0,V.splice(V.length-S,S))}let M=[];q&&M.push(Q);for(let L of V)for(let S of L)M.push(S);return C&&M.push(Q),M};var B2=(D)=>{let F=D.active??"Yes",B=D.inactive??"No";return new wF({active:F,inactive:B,signal:D.signal,input:D.input,output:D.output,initialValue:D.initialValue??!0,render(){let Z=D.withGuide??o.withGuide,E=`${cF(this.state)} `,Y=Z?`${A("gray",a)} `:"",J=K0(D.output,D.message,Y,E),X=`${Z?`${A("gray",a)}
|
|
52
|
+
`:""}${J}
|
|
53
|
+
`,H=this.value?F:B;switch(this.state){case"submit":{let Q=Z?`${A("gray",a)} `:"";return`${X}${Q}${A("dim",H)}`}case"cancel":{let Q=Z?`${A("gray",a)} `:"";return`${X}${Q}${A(["strikethrough","dim"],H)}${Z?`
|
|
54
|
+
${A("gray",a)}`:""}`}default:{let Q=Z?`${A("cyan",a)} `:"",G=Z?A("cyan",C0):"";return`${X}${Q}${this.value?`${A("green",gF)} ${F}`:`${A("dim",F2)} ${A("dim",F)}`}${D.vertical?Z?`
|
|
55
55
|
${A("cyan",a)} `:`
|
|
56
56
|
`:` ${A("dim","/")} `}${this.value?`${A("dim",F2)} ${A("dim",B)}`:`${A("green",gF)} ${B}`}
|
|
57
|
-
${
|
|
58
|
-
`}}}}).prompt()};var
|
|
59
|
-
`);if(
|
|
57
|
+
${G}
|
|
58
|
+
`}}}}).prompt()};var xD={message:(D=[],{symbol:F=A("gray",a),secondarySymbol:B=A("gray",a),output:Z=process.stdout,spacing:E=1,withGuide:Y}={})=>{let J=[],X=Y??o.withGuide,H=X?B:"",Q=X?`${F} `:"",G=X?`${B} `:"";for(let W=0;W<E;W++)J.push(H);let K=Array.isArray(D)?D:D.split(`
|
|
59
|
+
`);if(K.length>0){let[W,...q]=K;W.length>0?J.push(`${Q}${W}`):J.push(X?F:"");for(let C of q)C.length>0?J.push(`${G}${C}`):J.push(X?B:"")}Z.write(`${J.join(`
|
|
60
60
|
`)}
|
|
61
|
-
`)},info:(D,F)=>{
|
|
62
|
-
`)},
|
|
63
|
-
${A("gray",
|
|
61
|
+
`)},info:(D,F)=>{xD.message(D,{...F,symbol:A("blue",i7)})},success:(D,F)=>{xD.message(D,{...F,symbol:A("green",n7)})},step:(D,F)=>{xD.message(D,{...F,symbol:A("green",mF)})},warn:(D,F)=>{xD.message(D,{...F,symbol:A("yellow",r7)})},warning:(D,F)=>{xD.warn(D,F)},error:(D,F)=>{xD.message(D,{...F,symbol:A("red",s7)})}};var Z2=(D="",F)=>{let B=F?.output??process.stdout,Z=F?.withGuide??o.withGuide?`${A("gray",a7)} `:"";B.write(`${Z}${D}
|
|
62
|
+
`)},E2=(D="",F)=>{let B=F?.output??process.stdout,Z=F?.withGuide??o.withGuide?`${A("gray",a)}
|
|
63
|
+
${A("gray",C0)} `:"";B.write(`${Z}${D}
|
|
64
64
|
|
|
65
|
-
`)};var
|
|
66
|
-
`);let
|
|
67
|
-
`);
|
|
68
|
-
`);let g=0,n=0;
|
|
69
|
-
`):B.write(`${
|
|
70
|
-
`)),
|
|
65
|
+
`)};var DB=(D)=>A("magenta",D),e8=({indicator:D="dots",onCancel:F,output:B=process.stdout,cancelMessage:Z,errorMessage:E,frames:Y=hF?["◒","◐","◓","◑"]:["•","o","O","0"],delay:J=hF?80:120,signal:X,...H}={})=>{let Q=l7(),G,K,W=!1,q=!1,C="",U,V=performance.now(),I=e0(B),u=H?.styleFrame??DB,N=(_)=>{let g=_>1?E??o.messages.error:Z??o.messages.cancel;q=_===1,W&&(b(g,_),q&&typeof F=="function"&&F())},M=()=>N(2),L=()=>N(1),S=()=>{process.on("uncaughtExceptionMonitor",M),process.on("unhandledRejection",M),process.on("SIGINT",L),process.on("SIGTERM",L),process.on("exit",N),X&&X.addEventListener("abort",L)},R=()=>{process.removeListener("uncaughtExceptionMonitor",M),process.removeListener("unhandledRejection",M),process.removeListener("SIGINT",L),process.removeListener("SIGTERM",L),process.removeListener("exit",N),X&&X.removeEventListener("abort",L)},O=()=>{if(U===void 0)return;Q&&B.write(`
|
|
66
|
+
`);let _=PD(U,I,{hard:!0,trim:!1}).split(`
|
|
67
|
+
`);_.length>1&&B.write(z0.cursor.up(_.length-1)),B.write(z0.cursor.to(0)),B.write(z0.erase.down())},i=(_)=>_.replace(/\.+$/,""),d=(_)=>{let g=(performance.now()-_)/1000,n=Math.floor(g/60),JD=Math.floor(g%60);return n>0?`[${n}m ${JD}s]`:`[${JD}s]`},v=H.withGuide??o.withGuide,FD=(_="")=>{W=!0,G=i8({output:B}),C=i(_),V=performance.now(),v&&B.write(`${A("gray",a)}
|
|
68
|
+
`);let g=0,n=0;S(),K=setInterval(()=>{if(Q&&C===U)return;O(),U=C;let JD=u(Y[g]),L0;if(Q)L0=`${JD} ${C}...`;else if(D==="timer")L0=`${JD} ${C} ${d(V)}`;else{let R4=".".repeat(Math.floor(n)).slice(0,3);L0=`${JD} ${C}${R4}`}let L4=PD(L0,I,{hard:!0,trim:!1});B.write(L4),g=g+1<Y.length?g+1:0,n=n<4?n+0.125:0},J)},b=(_="",g=0,n=!1)=>{if(!W)return;W=!1,clearInterval(K),O();let JD=g===0?A("green",mF):g===1?A("red",o8):A("red",t8);C=_??C,n||(D==="timer"?B.write(`${JD} ${C} ${d(V)}
|
|
69
|
+
`):B.write(`${JD} ${C}
|
|
70
|
+
`)),R(),G()};return{start:FD,stop:(_="")=>b(_,0),message:(_="")=>{C=i(_??C)},cancel:(_="")=>b(_,1),error:(_="")=>b(_,2),clear:()=>b("",0,!0),get isCancelled(){return q}}},VX={light:p("─","-"),heavy:p("━","="),block:p("█","#")};var D2=(D,F)=>D.includes(`
|
|
71
71
|
`)?D.split(`
|
|
72
72
|
`).map((B)=>F(B)).join(`
|
|
73
|
-
`):F(D),
|
|
74
|
-
`:""}${
|
|
75
|
-
`;switch(this.state){case"submit":{let
|
|
76
|
-
${A("gray",a)}`:""}`}default:{let
|
|
77
|
-
`).length,
|
|
78
|
-
${
|
|
79
|
-
${Q}
|
|
80
|
-
`}}}}).prompt()};var GH=`${A("gray",a)} `;var SD=(D)=>new vF({validate:D.validate,placeholder:D.placeholder,defaultValue:D.defaultValue,initialValue:D.initialValue,output:D.output,signal:D.signal,input:D.input,render(){let F=D?.withGuide??o.withGuide,B=`${`${F?`${A("gray",a)}
|
|
81
|
-
`:""}${cF(this.state)} `}${D.message}
|
|
82
|
-
`,E=D.placeholder?A("inverse",D.placeholder[0])+A("dim",D.placeholder.slice(1)):A(["inverse","hidden"],"_"),Z=this.userInput?this.userInputWithCursor:E,J=this.value??"";switch(this.state){case"error":{let Y=this.error?` ${A("yellow",this.error)}`:"",H=F?`${A("yellow",a)} `:"",Q=F?A("yellow",z0):"";return`${B.trim()}
|
|
83
|
-
${H}${Z}
|
|
84
|
-
${Q}${Y}
|
|
85
|
-
`}case"submit":{let Y=J?` ${A("dim",J)}`:"",H=F?A("gray",a):"";return`${B}${H}${Y}`}case"cancel":{let Y=J?` ${A(["strikethrough","dim"],J)}`:"",H=F?A("gray",a):"";return`${B}${H}${Y}${J.trim()?`
|
|
86
|
-
${H}`:""}`}default:{let Y=F?`${A("cyan",a)} `:"",H=F?A("cyan",z0):"";return`${B}${Y}${Z}
|
|
73
|
+
`):F(D),Y2=(D)=>{let F=(B,Z)=>{let E=B.label??String(B.value);switch(Z){case"disabled":return`${A("gray",F2)} ${D2(E,(Y)=>A("gray",Y))}${B.hint?` ${A("dim",`(${B.hint??"disabled"})`)}`:""}`;case"selected":return`${D2(E,(Y)=>A("dim",Y))}`;case"active":return`${A("green",gF)} ${E}${B.hint?` ${A("dim",`(${B.hint})`)}`:""}`;case"cancelled":return`${D2(E,(Y)=>A(["strikethrough","dim"],Y))}`;default:return`${A("dim",F2)} ${D2(E,(Y)=>A("dim",Y))}`}};return new bF({options:D.options,signal:D.signal,input:D.input,output:D.output,initialValue:D.initialValue,render(){let B=D.withGuide??o.withGuide,Z=`${cF(this.state)} `,E=`${o7(this.state)} `,Y=K0(D.output,D.message,E,Z),J=`${B?`${A("gray",a)}
|
|
74
|
+
`:""}${Y}
|
|
75
|
+
`;switch(this.state){case"submit":{let X=B?`${A("gray",a)} `:"",H=K0(D.output,F(this.options[this.cursor],"selected"),X);return`${J}${H}`}case"cancel":{let X=B?`${A("gray",a)} `:"",H=K0(D.output,F(this.options[this.cursor],"cancelled"),X);return`${J}${H}${B?`
|
|
76
|
+
${A("gray",a)}`:""}`}default:{let X=B?`${A("cyan",a)} `:"",H=B?A("cyan",C0):"",Q=J.split(`
|
|
77
|
+
`).length,G=B?2:1;return`${J}${X}${e7({output:D.output,cursor:this.cursor,options:this.options,maxItems:D.maxItems,columnPadding:X.length,rowPadding:Q+G,style:(K,W)=>F(K,K.disabled?"disabled":W?"active":"inactive")}).join(`
|
|
78
|
+
${X}`)}
|
|
87
79
|
${H}
|
|
88
|
-
`}}}}).prompt()
|
|
89
|
-
|
|
90
|
-
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as VB}from"node:util";import{execFile as AB}from"node:child_process";var jB=VB(AB),H2={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},X2=new Map(Object.entries(H2));class C6 extends Error{}async function oF(D=jB){let{stdout:F}=await D("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),B=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(F);if(!B)throw new C6(`Cannot find Windows browser in stdout: ${JSON.stringify(F)}`);let{id:E}=B.groups,Z=E.lastIndexOf("."),J=E.lastIndexOf("-"),Y=Z===-1?void 0:E.slice(0,Z),H=J===-1?void 0:E.slice(0,J);return H2[E]??H2[Y]??H2[H]??{name:E,id:E}}var RB=TB(IB),LB=(D)=>D.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(F)=>F.toUpperCase());async function eF(){if(tF.platform==="darwin"){let D=await rF();return{name:await sF(D),id:D}}if(tF.platform==="linux"){let{stdout:D}=await RB("xdg-mime",["query","default","x-scheme-handler/http"]),F=D.trim();return{name:LB(F.replace(/.desktop$/,"").replace("-"," ")),id:F}}if(tF.platform==="win32")return oF();throw Error("Only macOS, Linux, and Windows are supported")}import D1 from"node:process";var fB=Boolean(D1.env.SSH_CONNECTION||D1.env.SSH_CLIENT||D1.env.SSH_TTY),G6=fB;var Q2=Symbol("fallbackAttempt"),B1=import.meta.url?W6.dirname(SB(import.meta.url)):"",K6=W6.join(B1,"xdg-open"),{platform:F0,arch:z6}=F1,q6=async(D,F)=>{if(D.length===0)return;let B=[];for(let E of D)try{return await F(E)}catch(Z){B.push(Z)}throw AggregateError(B,"Failed to open in all supported apps")},C2=async(D)=>{D={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...D};let F=D[Q2]===!0;if(delete D[Q2],Array.isArray(D.app))return q6(D.app,(X)=>C2({...D,app:X,[Q2]:!0}));let{name:B,arguments:E=[]}=D.app??{};if(E=[...E],Array.isArray(B))return q6(B,(X)=>C2({...D,app:{name:X,arguments:E},[Q2]:!0}));if(B==="browser"||B==="browserPrivate"){let X={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},C={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},G;if(_D){let u=await H6();G=X2.get(u)??{}}else G=await eF();if(G.id in X){let u=X[G.id.toLowerCase()];if(B==="browserPrivate"){if(u==="safari")throw Error("Safari doesn't support opening in private mode via command line");E.push(C[u])}return C2({...D,app:{name:B0[u],arguments:E}})}throw Error(`${G.name} is not supported as a default browser`)}let Z,J=[],Y={},H=!1;if(_D&&!lD()&&!G6&&!B)H=await Y6();if(F0==="darwin"){if(Z="open",D.wait)J.push("--wait-apps");if(D.background)J.push("--background");if(D.newInstance)J.push("--new");if(B)J.push("-a",B)}else if(F0==="win32"||H){if(Z=await Y2(),J.push(...CD.argumentsPrefix),!_D)Y.windowsVerbatimArguments=!0;if(_D&&D.target)D.target=await X6(D.target);let X=["$ProgressPreference = 'SilentlyContinue';","Start"];if(D.wait)X.push("-Wait");if(B){if(X.push(CD.escapeArgument(B)),D.target)E.push(D.target)}else if(D.target)X.push(CD.escapeArgument(D.target));if(E.length>0)E=E.map((C)=>CD.escapeArgument(C)),X.push("-ArgumentList",E.join(","));if(D.target=CD.encodeCommand(X.join(" ")),!D.wait)Y.stdio="ignore"}else{if(B)Z=B;else{let X=!B1||B1==="/",C=!1;try{await kB.access(K6,PB.X_OK),C=!0}catch{}Z=F1.versions.electron??(F0==="android"||X||!C)?"xdg-open":K6}if(E.length>0)J.push(...E);if(!D.wait)Y.stdio="ignore",Y.detached=!0}if(F0==="darwin"&&E.length>0)J.push("--args",...E);if(D.target)J.push(D.target);let Q=_B.spawn(Z,J,Y);if(D.wait)return new Promise((X,C)=>{Q.once("error",C),Q.once("close",(G)=>{if(!D.allowNonzeroExitCode&&G!==0){C(Error(`Exited with code ${G}`));return}X(Q)})});if(F)return new Promise((X,C)=>{Q.once("error",C),Q.once("spawn",()=>{Q.once("close",(G)=>{if(Q.off("error",C),G!==0){C(Error(`Exited with code ${G}`));return}Q.unref(),X(Q)})})});return Q.unref(),new Promise((X,C)=>{Q.once("error",C),Q.once("spawn",()=>{Q.off("error",C),X(Q)})})},OB=(D,F)=>{if(typeof D!=="string")throw TypeError("Expected a `target`");return C2({...F,target:D})};function u6(D){if(typeof D==="string"||Array.isArray(D))return D;let{[z6]:F}=D;if(!F)throw Error(`${z6} is not supported`);return F}function q0({[F0]:D},{wsl:F}={}){if(F&&_D)return u6(F);if(!D)throw Error(`${F0} is not supported`);return u6(D)}var B0={browser:"browser",browserPrivate:"browserPrivate"};pD(B0,"chrome",()=>q0({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));pD(B0,"brave",()=>q0({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));pD(B0,"firefox",()=>q0({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));pD(B0,"edge",()=>q0({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));pD(B0,"safari",()=>q0({darwin:"Safari"}));var G2=OB;async function u0(D,F={}){let B=F.label??"Open";if(console.log(`${K.dim(B+":")} ${K.underline(K.cyan(D))}`),F.noBrowser)return"skipped";try{return await G2(D),"opened"}catch{return"failed"}}var K2="The API response format may have changed — try updating the CLI.";function z2(D,F){if(D==null)return[];if(Array.isArray(D))return D;W(`Unexpected API response: expected an array of ${F}.`,{hint:K2})}function $6(D,F){if(D==null)return{};if(!Array.isArray(D)&&typeof D==="object"&&Object.values(D).every((B)=>typeof B==="boolean"))return D;W(`Unexpected API response: expected a ${F} object.`,{hint:K2})}function q2(D,F,B=F){if(D==null)return[];if(Array.isArray(D)||typeof D!=="object")W(`Unexpected API response: expected an array of ${B}.`,{hint:K2});let E=D[F];if(!Array.isArray(E))W(`Unexpected API response: expected an array of ${B}.`,{hint:K2});return E}function yB(D){return z2(D,"plans")}var xD=["pro","business","enterprise"];async function aD(D,F){let{data:B,error:E,status:Z}=await D.api.billing.plans.get();if(Z===401)throw new k(F);if(E)W(`Failed to list plans: ${_(E)}`);return yB(B)}async function U6(D,F,B){let{data:E,error:Z,status:J}=await D.api.projects({id:F}).subscription.get();if(J===401)throw new k(B);if(Z){let Y=typeof J==="number"?J:0;if(!(Y===0||Y>=500))W(`Failed to fetch subscription: ${_(Z)}`);return console.error(K.warn(`Could not read subscription for project ${F}: ${_(Z)}. Subscription state unknown.`)),{tier:"unknown",status:null}}return E??{}}function u2(D,F){let B=F.toLowerCase();for(let E of D){if(!E.name.toLowerCase().includes(B))continue;if(!E.prices?.length)continue;return E}return null}function W2(D){let F=D.toLowerCase();for(let B of xD)if(F.includes(B))return B;return}async function $2(D){if(!XD())W("Cannot prompt for a plan in non-interactive mode.",{hint:"Pass a tier (pro / business / enterprise) or --plan <price-id>."});let F=D.filter((Z)=>Z.prices&&Z.prices.length>0);if(F.length===0)W("No subscription plans available.",{hint:"Contact support if you expected plans to be listed."});let B=[];for(let Z of F)for(let J of Z.prices??[])B.push({value:{plan:Z,price:J},label:`${Z.name} — ${wB(J)}`,hint:Z.description});let E=await J2({message:"Pick a plan",options:B});if(t(E))W("Aborted.");return E}function W0({explicitNoBrowser:D,json:F}){if(F||D)return!0;return!XD()}async function U2(D){let{data:F,error:B,status:E}=await D.api.api.billing.checkout.post({projectId:D.projectId,priceId:D.priceId,quantity:D.quantity});if(E===401)throw new k(D.envName);if(B)W(`Failed to start checkout: ${_(B)}`);let Z=F;if(Z.error)W(Z.error);if(!Z.url)W("Server did not return a checkout URL.");let J={action:"checkout",url:Z.url,...D.tierLabel?{tier:D.tierLabel}:{}};if(D.json)return b(J),J;if(await u0(J.url,{noBrowser:D.noBrowser,label:"Stripe checkout"})==="failed")console.log(K.warn("Could not open browser automatically — copy the URL above."));return J}async function N2(D){let{data:F,error:B,status:E}=await D.api.api.projects({id:D.projectId}).subscription.manage.post();if(E===401)throw new k(D.envName);if(B)W(`Failed to open portal: ${_(B)}`);let Z=F;if(Z.error)W(Z.error);if(!Z.url)W("Server did not return a portal URL.");let J={action:"manage",url:Z.url};if(D.json)return b(J),J;if(await u0(J.url,{noBrowser:D.noBrowser,label:"Stripe portal"})==="failed")console.log(K.warn("Could not open browser automatically — copy the URL above."));return J}function wB(D){if(D.unit_amount==null)return"—";let F=D.currency.toUpperCase(),B=2;try{B=new Intl.NumberFormat("en-US",{style:"currency",currency:F}).resolvedOptions().maximumFractionDigits??2}catch{}let E=10**B,Z=(D.unit_amount/E).toFixed(B),J=D.recurring?.interval;return J?`${Z} ${F} / ${J}`:`${Z} ${F}`}var N6=ID(qF(),1),{program:OX,createCommand:yX,createArgument:wX,createOption:xX,CommanderError:bX,InvalidArgumentError:E1,InvalidOptionArgumentError:vX,Command:hX,Argument:gX,Option:mX,Help:cX}=N6.default;function M2(D){if(!/^\d+$/.test(D))throw new E1(`must be a positive integer (got "${D}")`);let F=Number.parseInt(D,10);if(!Number.isSafeInteger(F)||F<1)throw new E1(`must be a positive integer (got "${D}")`);return F}function M6(D){let F=D.command("billing").description("view + manage your project's subscription");xB(F),bB(F),vB(F),gB(F)}function xB(D){D.command("plans").description("list available subscription plans").option("-p, --project <id>","project id (accepted for parity with other billing commands; not used)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),Z=await aD(B,E.name);if(F.json)return b(Z);if(Z.length===0){console.log(K.dim("No plans available."));return}let J=Z.flatMap((Y)=>(Y.prices??[{id:"—",unit_amount:null,currency:"—",recurring:null}]).map((H)=>[Y.name,H.id,mB(H),H.recurring?.interval??K.dim("—")]));KD(["plan","price id","price","interval"],J)})}function bB(D){D.command("show").description("show the project's current subscription (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{projectId:B,env:E}=await m({flagProjectId:F.project,apiHost:F.apiHost}),{api:Z}=await y({apiHost:E.url,token:F.token,requireAuth:!0}),{data:J,error:Y,status:H}=await Z.api.projects({id:B}).subscription.get();if(H===401)throw new k(E.name);if(Y)W(`Failed to fetch subscription: ${_(Y)}`);if(F.json)return b(J??{});let Q=J??{};if(console.log(K.bold("Subscription")),console.log(` ${K.dim("tier".padEnd(8))} ${cB(Q.tier)}`),console.log(` ${K.dim("status".padEnd(8))} ${dB(Q.status??null)}`),Q.subscriptionId)console.log(` ${K.dim("id".padEnd(8))} ${Q.subscriptionId}`);if(Q.tier==="unknown")console.log(),console.log(K.warn('Server returned tier "unknown". This is a known issue (architecture-review S3) — the subscription may still be active.'))})}function vB(D){D.command("checkout [tier]").description("start a subscription checkout (interactive picker when no tier / --plan)").option("--plan <price-id>","Stripe price id (escape hatch; overrides tier picker)").option("--qty <n>","quantity",M2).option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url,tier?}) and skip browser open").action(async(F,B)=>{let E=hB(F);if(F&&!E)W(`Unknown tier "${F}".`,{hint:`Use one of: ${xD.join(", ")} — or pass --plan <price-id>.`});let{projectId:Z,env:J}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:J.url,token:B.token,requireAuth:!0}),H=W0({explicitNoBrowser:B.browser===!1,json:B.json??!1}),Q,X;if(B.plan)Q=B.plan;else if(E){let C=await aD(Y,J.name),G=u2(C,E),u=G?.prices?.length===1?G.prices[0]:void 0;if(!G||!G.prices?.length)W(`No plan matching tier "${E}".`,{hint:"List options with `photon billing plans`."});if(!u)W(`Tier "${E}" has multiple billing intervals.`,{hint:"Pass --plan <price-id> to choose, or omit the tier to use the interactive picker."});Q=u.id,X=E}else{let C=await aD(Y,J.name),G=await $2(C);Q=G.price.id,X=W2(G.plan.name)}await U2({api:Y,projectId:Z,priceId:Q,quantity:B.qty,envName:J.name,json:B.json??!1,noBrowser:H,tierLabel:X})})}function hB(D){if(!D)return;let F=D.trim().toLowerCase();return xD.includes(F)?F:void 0}function gB(D){D.command("manage").alias("portal").description("open the Stripe customer portal for this project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url}) and skip browser open").action(async(F)=>{let{projectId:B,env:E}=await m({flagProjectId:F.project,apiHost:F.apiHost}),{api:Z}=await y({apiHost:E.url,token:F.token,requireAuth:!0}),J=W0({explicitNoBrowser:F.browser===!1,json:F.json??!1});await N2({api:Z,projectId:B,envName:E.name,json:F.json??!1,noBrowser:J})})}function mB(D){if(D.unit_amount==null)return K.dim("—");let F=D.currency.toUpperCase(),B=2;try{B=new Intl.NumberFormat("en-US",{style:"currency",currency:F}).resolvedOptions().maximumFractionDigits??2}catch{}let E=10**B;return`${(D.unit_amount/E).toFixed(B)} ${F}`}function cB(D){if(!D)return K.dim("—");if(D==="free")return K.dim(D);if(D==="unknown")return K.yellow(D);return K.green(D)}function dB(D){if(!D)return K.dim("—");switch(D){case"active":return K.green(D);case"past_due":case"unpaid":return K.red(D);case"trialing":return K.cyan(D);case"canceled":return K.dim(D);default:return D}}function V6(D){D.command("config").description("inspect Photon CLI configuration").command("show",{isDefault:!0}).description("dump the active configuration (no secrets printed)").option("--json","output JSON").action(async(B)=>{let E=await JD(),Z=await d0(),J=process.env.PHOTON_PROJECT_ID?.trim()||null,Y={configDir:m0(),currentEnv:{name:E.name,url:E.url},activeProject:J,authedEnvs:Z};if(B.json)return b(Y);console.log(K.bold("Photon CLI configuration")),console.log();let H=18;Q("config dir",Y.configDir),Q("active backend",`${K.bold(Y.currentEnv.name)} ${K.dim(`(${Y.currentEnv.url})`)}`),Q("active project",J?`${K.bold(J)} ${K.dim("(via $PHOTON_PROJECT_ID)")}`:K.dim("(none — pass --project <id> or set $PHOTON_PROJECT_ID)")),Q("logged-in keys",Z.length>0?Z.join(", "):K.dim("none"));function Q(X,C){console.log(` ${K.dim(X.padEnd(H))} ${C}`)}})}function A6(D){D.command("env").description("show the active backend (set via PHOTON_API_HOST or --api-host)").command("current",{isDefault:!0}).description("print the resolved API host").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").action(async(B)=>{let E=await JD(B.apiHost);console.log(`${K.bold(E.name)} ${K.dim(`(${E.url})`)}`)})}var V2=Symbol.for("better-auth:broadcast-channel"),lB=()=>Math.floor(Date.now()/1000),pB=class{listeners=new Set;name;constructor(D="better-auth.message"){this.name=D}subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}post(D){if(typeof window>"u")return;try{localStorage.setItem(this.name,JSON.stringify({...D,timestamp:lB()}))}catch{}}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};let D=(F)=>{if(F.key!==this.name)return;let B=JSON.parse(F.newValue??"{}");if(B?.event!=="session"||!B?.data)return;this.listeners.forEach((E)=>E(B))};return window.addEventListener("storage",D),()=>{window.removeEventListener("storage",D)}}};function $0(D="better-auth.message"){if(!globalThis[V2])globalThis[V2]=new pB(D);return globalThis[V2]}var A2=Symbol.for("better-auth:focus-manager"),aB=class{listeners=new Set;subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}setFocused(D){this.listeners.forEach((F)=>F(D))}setup(){if(typeof window>"u"||typeof document>"u"||typeof window.addEventListener>"u")return()=>{};let D=()=>{if(document.visibilityState==="visible")this.setFocused(!0)};return document.addEventListener("visibilitychange",D,!1),()=>{document.removeEventListener("visibilitychange",D,!1)}}};function Z1(){if(!globalThis[A2])globalThis[A2]=new aB;return globalThis[A2]}var j2=Symbol.for("better-auth:online-manager"),iB=class{listeners=new Set;isOnline=typeof navigator<"u"?navigator.onLine:!0;subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}setOnline(D){this.isOnline=D,this.listeners.forEach((F)=>F(D))}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};let D=()=>this.setOnline(!0),F=()=>this.setOnline(!1);return window.addEventListener("online",D,!1),window.addEventListener("offline",F,!1),()=>{window.removeEventListener("online",D,!1),window.removeEventListener("offline",F,!1)}}};function T2(){if(!globalThis[j2])globalThis[j2]=new iB;return globalThis[j2]}var U0=Symbol("clean");var $D=[],bD=0,I2=4,nB=globalThis.nanostoresGlobal||={epoch:0},N0=(D)=>{let F=[],B={get(){if(!B.lc)B.listen(()=>{})();return B.value},init:D,lc:0,listen(E){return B.lc=F.push(E),()=>{for(let J=bD+I2;J<$D.length;)if($D[J]===E)$D.splice(J,I2);else J+=I2;let Z=F.indexOf(E);if(~Z){if(F.splice(Z,1),!--B.lc)B.off()}}},notify(E,Z){nB.epoch++;let J=!$D.length;for(let Y of F)$D.push(Y,B.value,E,Z);if(J){for(bD=0;bD<$D.length;bD+=I2)$D[bD]($D[bD+1],$D[bD+2],$D[bD+3]);$D.length=0}},off(){},set(E){let Z=B.value;if(Z!==E)B.value=E,B.notify(Z)},subscribe(E){let Z=B.listen(E);return E(B.value),Z},value:D};return B[U0]=()=>{F=[],B.lc=0,B.off()},B};var rB=5,E0=6,R2=10,sB=(D,F,B,E)=>{if(D.events=D.events||{},!D.events[B+R2])D.events[B+R2]=E((Z)=>{D.events[B].reduceRight((J,Y)=>(Y(J),J),{shared:{},...Z})});return D.events[B]=D.events[B]||[],D.events[B].push(F),()=>{let Z=D.events[B],J=Z.indexOf(F);if(Z.splice(J,1),!Z.length)delete D.events[B],D.events[B+R2](),delete D.events[B+R2]}};var j6=1000,M0=(D,F)=>{return sB(D,(E)=>{let Z=F(E);if(Z)D.events[E0].push(Z)},rB,(E)=>{let Z=D.listen;D.listen=(...Y)=>{if(!D.lc&&!D.active)D.active=!0,E();return Z(...Y)};let J=D.off;D.events[E0]=[],D.off=()=>{J(),setTimeout(()=>{if(D.active&&!D.lc){D.active=!1;for(let Y of D.events[E0])Y();D.events[E0]=[]}},j6)};{let Y=D[U0];D[U0]=()=>{for(let H of D.events[E0])H();D.events[E0]=[],D.active=!1,Y()}}return()=>{D.listen=Z,D.off=J}})};var oB=()=>typeof window>"u",L2=(D,F,B,E)=>{let Z=N0({data:null,error:null,isPending:!0,isRefetching:!1,refetch:(H)=>J(H)}),J=async(H)=>{return new Promise((Q)=>{let X=typeof E==="function"?E({data:Z.get().data,error:Z.get().error,isPending:Z.get().isPending}):E;B(F,{...X,query:{...X?.query,...H?.query},async onSuccess(C){Z.set({data:C.data,error:null,isPending:!1,isRefetching:!1,refetch:Z.value.refetch}),await X?.onSuccess?.(C)},async onError(C){let{request:G}=C,u=typeof G.retry==="number"?G.retry:G.retry?.attempts,q=G.retryAttempt||0;if(u&&q<u)return;Z.set({error:C.error,data:null,isPending:!1,isRefetching:!1,refetch:Z.value.refetch}),await X?.onError?.(C)},async onRequest(C){let G=Z.get();Z.set({isPending:G.data===null,data:G.data,error:null,isRefetching:!0,refetch:Z.value.refetch}),await X?.onRequest?.(C)}}).catch((C)=>{Z.set({error:C,data:null,isPending:!1,isRefetching:!1,refetch:Z.value.refetch})}).finally(()=>{Q(void 0)})})};D=Array.isArray(D)?D:[D];let Y=!1;for(let H of D)H.subscribe(async()=>{if(oB())return;if(Y)await J();else M0(Z,()=>{let Q=setTimeout(async()=>{if(!Y)await J(),Y=!0},0);return()=>{Z.off(),H.off(),clearTimeout(Q)}})});return Z};var Z0=()=>Math.floor(Date.now()/1000),tB=5;function J1(D){let{sessionAtom:F,sessionSignal:B,$fetch:E,options:Z={}}=D,J=Z.sessionOptions?.refetchInterval??0,Y=Z.sessionOptions?.refetchOnWindowFocus??!0,H=Z.sessionOptions?.refetchWhenOffline??!1,Q={lastSync:0,lastSessionRequest:0,cachedSession:void 0},X=()=>{return H||T2().isOnline},C=(V)=>{if(!X())return;if(V?.event==="storage"){Q.lastSync=Z0(),B.set(!B.get());return}let N=F.get();if(V?.event==="poll"){Q.lastSessionRequest=Z0(),E("/get-session").then((U)=>{if(U.error)F.set({...N,data:null,error:U.error});else F.set({...N,data:U.data,error:null});Q.lastSync=Z0(),B.set(!B.get())}).catch(()=>{});return}if(V?.event==="visibilitychange"){if(Z0()-Q.lastSessionRequest<tB)return;Q.lastSessionRequest=Z0()}if(N?.data===null||N?.data===void 0||V?.event==="visibilitychange")Q.lastSync=Z0(),B.set(!B.get())},G=(V)=>{$0().post({event:"session",data:{trigger:V},clientId:Math.random().toString(36).substring(7)})},u=()=>{if(J&&J>0)Q.pollInterval=setInterval(()=>{if(F.get()?.data)C({event:"poll"})},J*1000)},q=()=>{Q.unsubscribeBroadcast=$0().subscribe(()=>{C({event:"storage"})})},z=()=>{if(!Y)return;Q.unsubscribeFocus=Z1().subscribe(()=>{C({event:"visibilitychange"})})},$=()=>{Q.unsubscribeOnline=T2().subscribe((V)=>{if(V)C({event:"visibilitychange"})})};return{init:()=>{u(),q(),z(),$(),$0().setup(),Z1().setup(),T2().setup()},cleanup:()=>{if(Q.pollInterval)clearInterval(Q.pollInterval),Q.pollInterval=void 0;if(Q.unsubscribeBroadcast)Q.unsubscribeBroadcast(),Q.unsubscribeBroadcast=void 0;if(Q.unsubscribeFocus)Q.unsubscribeFocus(),Q.unsubscribeFocus=void 0;if(Q.unsubscribeOnline)Q.unsubscribeOnline(),Q.unsubscribeOnline=void 0;Q.lastSync=0,Q.lastSessionRequest=0,Q.cachedSession=void 0},triggerRefetch:C,broadcastSessionUpdate:G}}var f2=Object.create(null),V0=(D)=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(D?f2:globalThis),ZD=new Proxy(f2,{get(D,F){return V0()[F]??f2[F]},has(D,F){return F in V0()||F in f2},set(D,F,B){let E=V0(!0);return E[F]=B,!0},deleteProperty(D,F){if(!F)return!1;let B=V0(!0);return delete B[F],!0},ownKeys(){let D=V0(!0);return Object.keys(D)}});var eB=typeof process<"u"&&process.env&&"development"||"";function l(D,F){if(typeof process<"u"&&process.env)return process.env[D]??F;if(typeof Deno<"u")return Deno.env.get(D)??F;if(typeof Bun<"u")return Bun.env[D]??F;return F}var DE=Object.freeze({get BETTER_AUTH_SECRET(){return l("BETTER_AUTH_SECRET")},get AUTH_SECRET(){return l("AUTH_SECRET")},get BETTER_AUTH_TELEMETRY(){return l("BETTER_AUTH_TELEMETRY")},get BETTER_AUTH_TELEMETRY_ID(){return l("BETTER_AUTH_TELEMETRY_ID")},get NODE_ENV(){return l("NODE_ENV","development")},get PACKAGE_VERSION(){return l("PACKAGE_VERSION","0.0.0")},get BETTER_AUTH_TELEMETRY_ENDPOINT(){return l("BETTER_AUTH_TELEMETRY_ENDPOINT","")}});var A0=1,r=4,jD=8,GD=24,T6={eterm:r,cons25:r,console:r,cygwin:r,dtterm:r,gnome:r,hurd:r,jfbterm:r,konsole:r,kterm:r,mlterm:r,mosh:GD,putty:r,st:r,"rxvt-unicode-24bit":GD,terminator:GD,"xterm-kitty":GD},FE=new Map(Object.entries({APPVEYOR:jD,BUILDKITE:jD,CIRCLECI:GD,DRONE:jD,GITEA_ACTIONS:GD,GITHUB_ACTIONS:GD,GITLAB_CI:jD,TRAVIS:jD})),BE=[/ansi/,/color/,/linux/,/direct/,/^con[0-9]*x[0-9]/,/^rxvt/,/^screen/,/^xterm/,/^vt100/,/^vt220/];function Y1(){if(l("FORCE_COLOR")!==void 0)switch(l("FORCE_COLOR")){case"":case"1":case"true":return r;case"2":return jD;case"3":return GD;default:return A0}if(l("NODE_DISABLE_COLORS")!==void 0&&l("NODE_DISABLE_COLORS")!==""||l("NO_COLOR")!==void 0&&l("NO_COLOR")!==""||l("TERM")==="dumb")return A0;if(l("TMUX"))return GD;if("TF_BUILD"in ZD&&"AGENT_NAME"in ZD)return r;if("CI"in ZD){for(let{0:D,1:F}of FE)if(D in ZD)return F;if(l("CI_NAME")==="codeship")return jD;return A0}if("TEAMCITY_VERSION"in ZD)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(l("TEAMCITY_VERSION"))!==null?r:A0;switch(l("TERM_PROGRAM")){case"iTerm.app":if(!l("TERM_PROGRAM_VERSION")||/^[0-2]\./.exec(l("TERM_PROGRAM_VERSION"))!==null)return jD;return GD;case"HyperTerm":case"MacTerm":return GD;case"Apple_Terminal":return jD}if(l("COLORTERM")==="truecolor"||l("COLORTERM")==="24bit")return GD;if(l("TERM")){if(/truecolor/.exec(l("TERM"))!==null)return GD;if(/^xterm-256/.exec(l("TERM"))!==null)return jD;let D=l("TERM").toLowerCase();if(T6[D])return T6[D];if(BE.some((F)=>F.exec(D)!==null))return r}if(l("COLORTERM"))return r;return A0}var UD={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",undim:"\x1B[22m",underscore:"\x1B[4m",blink:"\x1B[5m",reverse:"\x1B[7m",hidden:"\x1B[8m",fg:{black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m"},bg:{black:"\x1B[40m",red:"\x1B[41m",green:"\x1B[42m",yellow:"\x1B[43m",blue:"\x1B[44m",magenta:"\x1B[45m",cyan:"\x1B[46m",white:"\x1B[47m"}},S2=["debug","info","success","warn","error"];function I6(D,F){return S2.indexOf(F)>=S2.indexOf(D)}var EE={info:UD.fg.blue,success:UD.fg.green,warn:UD.fg.yellow,error:UD.fg.red,debug:UD.fg.magenta},ZE=(D,F,B)=>{let E=new Date().toISOString();if(B)return`${UD.dim}${E}${UD.reset} ${EE[D]}${D.toUpperCase()}${UD.reset} ${UD.bright}[Better Auth]:${UD.reset} ${F}`;return`${E} ${D.toUpperCase()} [Better Auth]: ${F}`},R6=(D)=>{let F=D?.disabled!==!0,B=D?.level??"warn",E=D?.disableColors!==void 0?!D.disableColors:Y1()!==1,Z=(J,Y,H=[])=>{if(!F||!I6(B,J))return;let Q=ZE(J,Y,E);if(!D||typeof D.log!=="function"){if(J==="error")console.error(Q,...H);else if(J==="warn")console.warn(Q,...H);else console.log(Q,...H);return}D.log(J==="success"?"info":J,Y,...H)};return{...Object.fromEntries(S2.map((J)=>[J,(...[Y,...H])=>Z(J,Y,H)])),get level(){return B}}},L6=R6();function H1(D){return D}function X1(D){return D.charAt(0).toUpperCase()+D.slice(1)}var JE=H1({USER_NOT_FOUND:"User not found",FAILED_TO_CREATE_USER:"Failed to create user",FAILED_TO_CREATE_SESSION:"Failed to create session",FAILED_TO_UPDATE_USER:"Failed to update user",FAILED_TO_GET_SESSION:"Failed to get session",INVALID_PASSWORD:"Invalid password",INVALID_EMAIL:"Invalid email",INVALID_EMAIL_OR_PASSWORD:"Invalid email or password",SOCIAL_ACCOUNT_ALREADY_LINKED:"Social account already linked",PROVIDER_NOT_FOUND:"Provider not found",INVALID_TOKEN:"Invalid token",ID_TOKEN_NOT_SUPPORTED:"id_token not supported",FAILED_TO_GET_USER_INFO:"Failed to get user info",USER_EMAIL_NOT_FOUND:"User email not found",EMAIL_NOT_VERIFIED:"Email not verified",PASSWORD_TOO_SHORT:"Password too short",PASSWORD_TOO_LONG:"Password too long",USER_ALREADY_EXISTS:"User already exists.",USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL:"User already exists. Use another email.",EMAIL_CAN_NOT_BE_UPDATED:"Email can not be updated",CREDENTIAL_ACCOUNT_NOT_FOUND:"Credential account not found",SESSION_EXPIRED:"Session expired. Re-authenticate to perform this action.",FAILED_TO_UNLINK_LAST_ACCOUNT:"You can't unlink your last account",ACCOUNT_NOT_FOUND:"Account not found",USER_ALREADY_HAS_PASSWORD:"User already has a password. Provide that to delete the account.",CROSS_SITE_NAVIGATION_LOGIN_BLOCKED:"Cross-site navigation login blocked. This request appears to be a CSRF attack.",VERIFICATION_EMAIL_NOT_ENABLED:"Verification email isn't enabled",EMAIL_ALREADY_VERIFIED:"Email is already verified",EMAIL_MISMATCH:"Email mismatch",SESSION_NOT_FRESH:"Session is not fresh",LINKED_ACCOUNT_ALREADY_EXISTS:"Linked account already exists",INVALID_ORIGIN:"Invalid origin",INVALID_CALLBACK_URL:"Invalid callbackURL",INVALID_REDIRECT_URL:"Invalid redirectURL",INVALID_ERROR_CALLBACK_URL:"Invalid errorCallbackURL",INVALID_NEW_USER_CALLBACK_URL:"Invalid newUserCallbackURL",MISSING_OR_NULL_ORIGIN:"Missing or null Origin",CALLBACK_URL_REQUIRED:"callbackURL is required",FAILED_TO_CREATE_VERIFICATION:"Unable to create verification",FIELD_NOT_ALLOWED:"Field not allowed to be set",ASYNC_VALIDATION_NOT_SUPPORTED:"Async validation is not supported",VALIDATION_ERROR:"Validation Error",MISSING_FIELD:"Field is required"});var vD=class extends Error{constructor(D,F){super(D,F);this.name="BetterAuthError",this.message=D,this.stack=""}};function YE(D){try{return(new URL(D).pathname.replace(/\/+$/,"")||"/")!=="/"}catch{throw new vD(`Invalid base URL: ${D}. Please provide a valid base URL.`)}}function HE(D){try{let F=new URL(D);if(F.protocol!=="http:"&&F.protocol!=="https:")throw new vD(`Invalid base URL: ${D}. URL must include 'http://' or 'https://'`)}catch(F){if(F instanceof vD)throw F;throw new vD(`Invalid base URL: ${D}. Please provide a valid base URL.`,{cause:F})}}function j0(D,F="/api/auth"){if(HE(D),YE(D))return D;let B=D.replace(/\/+$/,"");if(!F||F==="/")return B;return F=F.startsWith("/")?F:`/${F}`,`${B}${F}`}function f6(D,F){if(!D||D.trim()==="")return!1;if(F==="proto")return D==="http"||D==="https";if(F==="host"){if([/\.\./,/\0/,/[\s]/,/^[.]/,/[<>'"]/,/javascript:/i,/file:/i,/data:/i].some((B)=>B.test(D)))return!1;return/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/.test(D)||/^(\d{1,3}\.){3}\d{1,3}(:[0-9]{1,5})?$/.test(D)||/^\[[0-9a-fA-F:]+\](:[0-9]{1,5})?$/.test(D)||/^localhost(:[0-9]{1,5})?$/i.test(D)}return!1}function S6(D,F,B,E,Z){if(D)return j0(D,F);if(E!==!1){let H=ZD.BETTER_AUTH_URL||ZD.NEXT_PUBLIC_BETTER_AUTH_URL||ZD.PUBLIC_BETTER_AUTH_URL||ZD.NUXT_PUBLIC_BETTER_AUTH_URL||ZD.NUXT_PUBLIC_AUTH_URL||(ZD.BASE_URL!=="/"?ZD.BASE_URL:void 0);if(H)return j0(H,F)}let J=B?.headers.get("x-forwarded-host"),Y=B?.headers.get("x-forwarded-proto");if(J&&Y&&Z){if(f6(Y,"proto")&&f6(J,"host"))try{return j0(`${Y}://${J}`,F)}catch(H){}}if(B){let H=XE(B.url);if(!H)throw new vD("Could not get origin from request. Please provide a valid base URL.");return j0(H,F)}if(typeof window<"u"&&window.location)return j0(window.location.origin,F)}function XE(D){try{let F=new URL(D);return F.origin==="null"?null:F.origin}catch{return null}}var _6={id:"redirect",name:"Redirect",hooks:{onSuccess(D){if(D.data?.url&&D.data?.redirect){if(typeof window<"u"&&window.location){if(window.location)try{window.location.href=D.data.url}catch{}}}}}};var QE={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},CE=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,k6={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:Number.POSITIVE_INFINITY,"-infinity":Number.NEGATIVE_INFINITY},GE=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function KE(D){return D instanceof Date&&!isNaN(D.getTime())}function zE(D){let F=GE.exec(D);if(!F)return null;let[,B,E,Z,J,Y,H,Q,X,C,G]=F,u=new Date(Date.UTC(parseInt(B,10),parseInt(E,10)-1,parseInt(Z,10),parseInt(J,10),parseInt(Y,10),parseInt(H,10),Q?parseInt(Q.padEnd(3,"0"),10):0));if(X){let q=(parseInt(C,10)*60+parseInt(G,10))*(X==="+"?-1:1);u.setUTCMinutes(u.getUTCMinutes()+q)}return KE(u)?u:null}function qE(D,F={}){let{strict:B=!1,warnings:E=!1,reviver:Z,parseDates:J=!0}=F;if(typeof D!=="string")return D;let Y=D.trim();if(Y.length>0&&Y[0]==='"'&&Y.endsWith('"')&&!Y.slice(1,-1).includes('"'))return Y.slice(1,-1);let H=Y.toLowerCase();if(H.length<=9&&H in k6)return k6[H];if(!CE.test(Y)){if(B)throw SyntaxError("[better-json] Invalid JSON");return D}if(Object.entries(QE).some(([Q,X])=>{let C=X.test(Y);if(C&&E)console.warn(`[better-json] Detected potential prototype pollution attempt using ${Q} pattern`);return C})&&B)throw Error("[better-json] Potential prototype pollution attempt detected");try{return JSON.parse(Y,(X,C)=>{if(X==="__proto__"||X==="constructor"&&C&&typeof C==="object"&&"prototype"in C){if(E)console.warn(`[better-json] Dropping "${X}" key to prevent prototype pollution`);return}if(J&&typeof C==="string"){let G=zE(C);if(G)return G}return Z?Z(X,C):C})}catch(Q){if(B)throw Q;return D}}function P6(D,F={strict:!0}){return qE(D,F)}function O6(D,F){let B=N0(!1),E=L2(B,"/get-session",D,{method:"GET"});return M0(E,()=>{let Z=J1({sessionAtom:E,sessionSignal:B,$fetch:D,options:F});return Z.init(),()=>{Z.cleanup()}}),{session:E,$sessionSignal:B}}function Q1(D){if(D===null||typeof D!=="object")return!1;let F=Object.getPrototypeOf(D);if(F!==null&&F!==Object.prototype&&Object.getPrototypeOf(F)!==null)return!1;if(Symbol.iterator in D)return!1;if(Symbol.toStringTag in D)return Object.prototype.toString.call(D)==="[object Module]";return!0}function C1(D,F,B=".",E){if(!Q1(F))return C1(D,{},B,E);let Z={...F};for(let J of Object.keys(D)){if(J==="__proto__"||J==="constructor")continue;let Y=D[J];if(Y===null||Y===void 0)continue;if(E&&E(Z,J,Y,B))continue;if(Array.isArray(Y)&&Array.isArray(Z[J]))Z[J]=[...Y,...Z[J]];else if(Q1(Y)&&Q1(Z[J]))Z[J]=C1(Y,Z[J],(B?`${B}.`:"")+J.toString(),E);else Z[J]=Y}return Z}function G1(D){return(...F)=>F.reduce((B,E)=>C1(B,E,"",D),{})}var y6=G1(),CG=G1((D,F,B)=>{if(D[F]!==void 0&&typeof B==="function")return D[F]=B(D[F]),!0}),GG=G1((D,F,B)=>{if(Array.isArray(D[F])&&typeof B==="function")return D[F]=B(D[F]),!0});var{defineProperty:uE,defineProperties:WE,getOwnPropertyDescriptors:$E,getOwnPropertySymbols:w6}=Object,UE=Object.prototype.hasOwnProperty,NE=Object.prototype.propertyIsEnumerable,x6=(D,F,B)=>(F in D)?uE(D,F,{enumerable:!0,configurable:!0,writable:!0,value:B}):D[F]=B,ND=(D,F)=>{for(var B in F||(F={}))if(UE.call(F,B))x6(D,B,F[B]);if(w6){for(var B of w6(F))if(NE.call(F,B))x6(D,B,F[B])}return D},TD=(D,F)=>WE(D,$E(F)),ME=class extends Error{constructor(D,F,B){super(F||D.toString(),{cause:B});this.status=D,this.statusText=F,this.error=B,Error.captureStackTrace(this,this.constructor)}},VE=async(D,F)=>{var B,E,Z,J,Y,H;let Q=F||{},X={onRequest:[F==null?void 0:F.onRequest],onResponse:[F==null?void 0:F.onResponse],onSuccess:[F==null?void 0:F.onSuccess],onError:[F==null?void 0:F.onError],onRetry:[F==null?void 0:F.onRetry]};if(!F||!(F==null?void 0:F.plugins))return{url:D,options:Q,hooks:X};for(let C of(F==null?void 0:F.plugins)||[]){if(C.init){let G=await((B=C.init)==null?void 0:B.call(C,D.toString(),F));Q=G.options||Q,D=G.url}X.onRequest.push((E=C.hooks)==null?void 0:E.onRequest),X.onResponse.push((Z=C.hooks)==null?void 0:Z.onResponse),X.onSuccess.push((J=C.hooks)==null?void 0:J.onSuccess),X.onError.push((Y=C.hooks)==null?void 0:Y.onError),X.onRetry.push((H=C.hooks)==null?void 0:H.onRetry)}return{url:D,options:Q,hooks:X}},b6=class{constructor(D){this.options=D}shouldAttemptRetry(D,F){if(this.options.shouldRetry)return Promise.resolve(D<this.options.attempts&&this.options.shouldRetry(F));return Promise.resolve(D<this.options.attempts)}getDelay(){return this.options.delay}},AE=class{constructor(D){this.options=D}shouldAttemptRetry(D,F){if(this.options.shouldRetry)return Promise.resolve(D<this.options.attempts&&this.options.shouldRetry(F));return Promise.resolve(D<this.options.attempts)}getDelay(D){return Math.min(this.options.maxDelay,this.options.baseDelay*2**D)}};function jE(D){if(typeof D==="number")return new b6({type:"linear",attempts:D,delay:1000});switch(D.type){case"linear":return new b6(D);case"exponential":return new AE(D);default:throw Error("Invalid retry strategy")}}var TE=async(D)=>{let F={},B=async(E)=>typeof E==="function"?await E():E;if(D==null?void 0:D.auth){if(D.auth.type==="Bearer"){let E=await B(D.auth.token);if(!E)return F;F.authorization=`Bearer ${E}`}else if(D.auth.type==="Basic"){let[E,Z]=await Promise.all([B(D.auth.username),B(D.auth.password)]);if(!E||!Z)return F;F.authorization=`Basic ${btoa(`${E}:${Z}`)}`}else if(D.auth.type==="Custom"){let[E,Z]=await Promise.all([B(D.auth.prefix),B(D.auth.value)]);if(!Z)return F;F.authorization=`${E!=null?E:""} ${Z}`}}return F},IE=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function RE(D){let F=D.headers.get("content-type"),B=new Set(["image/svg","application/xml","application/xhtml","application/html"]);if(!F)return"json";let E=F.split(";").shift()||"";if(IE.test(E))return"json";if(B.has(E)||E.startsWith("text/"))return"text";return"blob"}function LE(D){try{return JSON.parse(D),!0}catch(F){return!1}}function K1(D){if(D===void 0)return!1;let F=typeof D;if(F==="string"||F==="number"||F==="boolean"||F===null)return!0;if(F!=="object")return!1;if(Array.isArray(D))return!0;if(D.buffer)return!1;return D.constructor&&D.constructor.name==="Object"||typeof D.toJSON==="function"}function v6(D){try{return JSON.parse(D)}catch(F){return D}}function h6(D){return typeof D==="function"}function fE(D){if(D==null?void 0:D.customFetchImpl)return D.customFetchImpl;if(typeof globalThis<"u"&&h6(globalThis.fetch))return globalThis.fetch;if(typeof window<"u"&&h6(window.fetch))return window.fetch;throw Error("No fetch implementation found")}async function SE(D){let F=new Headers(D==null?void 0:D.headers),B=await TE(D);for(let[E,Z]of Object.entries(B||{}))F.set(E,Z);if(!F.has("content-type")){let E=_E(D==null?void 0:D.body);if(E)F.set("content-type",E)}return F}function _E(D){if(K1(D))return"application/json";return null}function kE(D){if(!(D==null?void 0:D.body))return null;let F=new Headers(D==null?void 0:D.headers);if(K1(D.body)&&!F.has("content-type")){for(let[B,E]of Object.entries(D==null?void 0:D.body))if(E instanceof Date)D.body[B]=E.toISOString();return JSON.stringify(D.body)}if(F.has("content-type")&&F.get("content-type")==="application/x-www-form-urlencoded"){if(K1(D.body))return new URLSearchParams(D.body).toString();return D.body}return D.body}function PE(D,F){var B;if(F==null?void 0:F.method)return F.method.toUpperCase();if(D.startsWith("@")){let E=(B=D.split("@")[1])==null?void 0:B.split("/")[0];if(!g6.includes(E))return(F==null?void 0:F.body)?"POST":"GET";return E.toUpperCase()}return(F==null?void 0:F.body)?"POST":"GET"}function OE(D,F){let B;if(!(D==null?void 0:D.signal)&&(D==null?void 0:D.timeout))B=setTimeout(()=>F==null?void 0:F.abort(),D==null?void 0:D.timeout);return{abortTimeout:B,clearTimeout:()=>{if(B)clearTimeout(B)}}}var yE=class D extends Error{constructor(F,B){super(B||JSON.stringify(F,null,2));this.issues=F,Object.setPrototypeOf(this,D.prototype)}};async function _2(D,F){let B=await D["~standard"].validate(F);if(B.issues)throw new yE(B.issues);return B.value}var g6=["get","post","put","patch","delete"];var wE=(D)=>({id:"apply-schema",name:"Apply Schema",version:"1.0.0",async init(F,B){var E,Z,J,Y;let H=((Z=(E=D.plugins)==null?void 0:E.find((Q)=>{var X;return((X=Q.schema)==null?void 0:X.config)?F.startsWith(Q.schema.config.baseURL||"")||F.startsWith(Q.schema.config.prefix||""):!1}))==null?void 0:Z.schema)||D.schema;if(H){let Q=F;if((J=H.config)==null?void 0:J.prefix){if(Q.startsWith(H.config.prefix)){if(Q=Q.replace(H.config.prefix,""),H.config.baseURL)F=F.replace(H.config.prefix,H.config.baseURL)}}if((Y=H.config)==null?void 0:Y.baseURL){if(Q.startsWith(H.config.baseURL))Q=Q.replace(H.config.baseURL,"")}let X=H.schema[Q];if(X){let C=TD(ND({},B),{method:X.method,output:X.output});if(!(B==null?void 0:B.disableValidation))C=TD(ND({},C),{body:X.input?await _2(X.input,B==null?void 0:B.body):B==null?void 0:B.body,params:X.params?await _2(X.params,B==null?void 0:B.params):B==null?void 0:B.params,query:X.query?await _2(X.query,B==null?void 0:B.query):B==null?void 0:B.query});return{url:F,options:C}}}return{url:F,options:B}}}),m6=(D)=>{async function F(B,E){let Z=TD(ND(ND({},D),E),{plugins:[...(D==null?void 0:D.plugins)||[],wE(D||{}),...(E==null?void 0:E.plugins)||[]]});if(D==null?void 0:D.catchAllError)try{return await z1(B,Z)}catch(J){return{data:null,error:{status:500,statusText:"Fetch Error",message:"Fetch related error. Captured by catchAllError option. See error property for more details.",error:J}}}return await z1(B,Z)}return F};function xE(D,F){let{baseURL:B,params:E,query:Z}=F||{query:{},params:{},baseURL:""},J=D.startsWith("http")?D.split("/").slice(0,3).join("/"):B||"";if(D.startsWith("@")){let G=D.toString().split("@")[1].split("/")[0];if(g6.includes(G))D=D.replace(`@${G}/`,"/")}if(!J.endsWith("/"))J+="/";let[Y,H]=D.replace(J,"").split("?"),Q=new URLSearchParams(H);for(let[G,u]of Object.entries(Z||{})){if(u==null)continue;let q;if(typeof u==="string")q=u;else if(Array.isArray(u)){for(let z of u)Q.append(G,z);continue}else q=JSON.stringify(u);Q.set(G,q)}if(E)if(Array.isArray(E)){let G=Y.split("/").filter((u)=>u.startsWith(":"));for(let[u,q]of G.entries()){let z=E[u];Y=Y.replace(q,z)}}else for(let[G,u]of Object.entries(E))Y=Y.replace(`:${G}`,String(u));if(Y=Y.split("/").map(encodeURIComponent).join("/"),Y.startsWith("/"))Y=Y.slice(1);let X=Q.toString();if(X=X.length>0?`?${X}`.replace(/\+/g,"%20"):"",!J.startsWith("http"))return`${J}${Y}${X}`;return new URL(`${Y}${X}`,J)}var z1=async(D,F)=>{var B,E,Z,J,Y,H,Q,X;let{hooks:C,url:G,options:u}=await VE(D,F),q=fE(u),z=new AbortController,$=(B=u.signal)!=null?B:z.signal,M=xE(G,u),I=kE(u),V=await SE(u),N=PE(G,u),U=TD(ND({},u),{url:M,headers:V,body:I,method:N,signal:$});for(let x of C.onRequest)if(x){let S=await x(U);if(typeof S==="object"&&S!==null)U=S}if("pipeTo"in U&&typeof U.pipeTo==="function"||typeof((E=F==null?void 0:F.body)==null?void 0:E.pipe)==="function"){if(!("duplex"in U))U.duplex="half"}let{clearTimeout:R}=OE(u,z),f=await q(U.url,U);R();let L={response:f,request:U};for(let x of C.onResponse)if(x){let S=await x(TD(ND({},L),{response:((Z=F==null?void 0:F.hookOptions)==null?void 0:Z.cloneResponse)?f.clone():f}));if(S instanceof Response)f=S;else if(typeof S==="object"&&S!==null)f=S.response}if(f.ok){if(U.method==="HEAD")return{data:"",error:null};let S=RE(f),g={data:null,response:f,request:U};if(S==="json"||S==="text"){let n=await f.text(),YD=(J=U.jsonParser)!=null?J:v6;g.data=await YD(n)}else g.data=await f[S]();if(U==null?void 0:U.output){if(U.output&&!U.disableValidation)g.data=await _2(U.output,g.data)}for(let n of C.onSuccess)if(n)await n(TD(ND({},g),{response:((Y=F==null?void 0:F.hookOptions)==null?void 0:Y.cloneResponse)?f.clone():f}));if(F==null?void 0:F.throw)return g.data;return{data:g.data,error:null}}let P=(H=F==null?void 0:F.jsonParser)!=null?H:v6,i=await f.text(),d=LE(i),v=d?await P(i):null,FD={response:f,responseText:i,request:U,error:TD(ND({},v),{status:f.status,statusText:f.statusText})};for(let x of C.onError)if(x)await x(TD(ND({},FD),{response:((Q=F==null?void 0:F.hookOptions)==null?void 0:Q.cloneResponse)?f.clone():f}));if(F==null?void 0:F.retry){let x=jE(F.retry),S=(X=F.retryAttempt)!=null?X:0;if(await x.shouldAttemptRetry(S,f)){for(let n of C.onRetry)if(n)await n(L);let g=x.getDelay(S);return await new Promise((n)=>setTimeout(n,g)),await z1(D,TD(ND({},F),{retryAttempt:S+1}))}}if(F==null?void 0:F.throw)throw new ME(f.status,f.statusText,d?v:i);return{data:null,error:TD(ND({},v),{status:f.status,statusText:f.statusText})}};var c6=(D,F)=>{let B="credentials"in Request.prototype,E=S6(D?.baseURL,D?.basePath,void 0,F)??"/api/auth",Z=D?.plugins?.flatMap((U)=>U.fetchPlugins).filter((U)=>U!==void 0)||[],J={id:"lifecycle-hooks",name:"lifecycle-hooks",hooks:{onSuccess:D?.fetchOptions?.onSuccess,onError:D?.fetchOptions?.onError,onRequest:D?.fetchOptions?.onRequest,onResponse:D?.fetchOptions?.onResponse}},{onSuccess:Y,onError:H,onRequest:Q,onResponse:X,...C}=D?.fetchOptions||{},G=m6({baseURL:E,...B?{credentials:"include"}:{},method:"GET",jsonParser(U){if(!U)return null;return P6(U,{strict:!1})},customFetchImpl:fetch,...C,plugins:[J,...C.plugins||[],...D?.disableDefaultFetchPlugins?[]:[_6],...Z]}),{$sessionSignal:u,session:q}=O6(G,D),z=D?.plugins||[],$={},M={$sessionSignal:u,session:q},I={"/sign-out":"POST","/revoke-sessions":"POST","/revoke-other-sessions":"POST","/delete-user":"POST"},V=[{signal:"$sessionSignal",matcher(U){return U==="/sign-out"||U==="/update-user"||U==="/sign-up/email"||U==="/sign-in/email"||U==="/delete-user"||U==="/verify-email"||U==="/revoke-sessions"||U==="/revoke-session"||U==="/change-email"}}];for(let U of z){if(U.getAtoms)Object.assign(M,U.getAtoms?.(G));if(U.pathMethods)Object.assign(I,U.pathMethods);if(U.atomListeners)V.push(...U.atomListeners)}let N={notify:(U)=>{M[U].set(!M[U].get())},listen:(U,R)=>{M[U].subscribe(R)},atoms:M};for(let U of z)if(U.getActions)$=y6(U.getActions?.(G,N,D)??{},$);return{get baseURL(){return E},pluginsActions:$,pluginsAtoms:M,pluginPathMethods:I,atomListeners:V,$fetch:G,$store:N}};function d6(D){return typeof D==="object"&&D!==null&&"get"in D&&typeof D.get==="function"&&"lc"in D&&typeof D.lc==="number"}function bE(D,F,B){let E=F[D],{fetchOptions:Z,query:J,...Y}=B||{};if(E)return E;if(Z?.method)return Z.method;if(Y&&Object.keys(Y).length>0)return"POST";return"GET"}function l6(D,F,B,E,Z){function J(Y=[]){return new Proxy(function(){},{get(H,Q){if(typeof Q!=="string")return;if(Q==="then"||Q==="catch"||Q==="finally")return;let X=[...Y,Q],C=D;for(let G of X)if(C&&typeof C==="object"&&G in C)C=C[G];else{C=void 0;break}if(typeof C==="function")return C;if(d6(C))return C;return J(X)},apply:async(H,Q,X)=>{let C="/"+Y.map((V)=>V.replace(/[A-Z]/g,(N)=>`-${N.toLowerCase()}`)).join("/"),G=X[0]||{},u=X[1]||{},{query:q,fetchOptions:z,...$}=G,M={...u,...z},I=bE(C,B,G);return await F(C,{...M,body:I==="GET"?void 0:{...$,...M?.body||{}},query:q||M?.query,method:I,async onSuccess(V){if(await M?.onSuccess?.(V),!Z||M.disableSignal)return;let N=Z.filter((R)=>R.matcher(C));if(!N.length)return;let U=new Set;for(let R of N){let f=E[R.signal];if(!f)return;if(U.has(R.signal))continue;U.add(R.signal);let L=f.get();setTimeout(()=>{f.set(!L)},10)}}})}})}return J()}function q1(D){let{pluginPathMethods:F,pluginsActions:B,pluginsAtoms:E,$fetch:Z,atomListeners:J,$store:Y}=c6(D),H={};for(let[Q,X]of Object.entries(E))H[`use${X1(Q)}`]=X;return l6({...B,...H,$fetch:Z,$store:Y},Z,F,E,J)}function p6(D){return{authorize(F,B="AND"){let E=!1;for(let[Z,J]of Object.entries(F)){let Y=D[Z];if(!Y)return{success:!1,error:`You are not allowed to access resource: ${Z}`};if(Array.isArray(J))E=J.every((H)=>Y.includes(H));else if(typeof J==="object"){let H=J;if(H.connector==="OR")E=H.actions.some((Q)=>Y.includes(Q));else E=H.actions.every((Q)=>Y.includes(Q))}else throw new vD("Invalid access control request");if(E&&B==="OR")return{success:E};if(!E&&B==="AND")return{success:!1,error:`unauthorized to access resource "${Z}"`}}if(E)return{success:E};return{success:!1,error:"Not authorized"}},statements:D}}function T0(D){return{newRole(F){return p6(F)},statements:D}}var a6={user:["create","list","set-role","ban","impersonate","delete","set-password","get","update"],session:["list","revoke","delete"]},u1=T0(a6),i6=u1.newRole({user:["create","list","set-role","ban","impersonate","delete","set-password","get","update"],session:["list","revoke","delete"]}),n6=u1.newRole({user:[],session:[]});var W1=()=>{return{id:"device-authorization",$InferServerPlugin:{},pathMethods:{"/device/code":"POST","/device/token":"POST","/device":"GET","/device/approve":"POST","/device/deny":"POST"}}};var r6={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"],team:["create","update","delete"],ac:["create","read","update","delete"]},k2=T0(r6),s6=k2.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"],team:["create","update","delete"],ac:["create","read","update","delete"]}),o6=k2.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"],team:["create","update","delete"],ac:["create","read","update","delete"]}),t6=k2.newRole({organization:[],member:[],invitation:[],team:[],ac:["read"]});var $1="photon-cli",e6="openid profile email";function P2(D){return q1({baseURL:D,plugins:[W1()]})}function D4(D){D.command("login").description("authenticate via the device authorization flow").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("--no-browser","don't auto-open the verification URL").action(async(F)=>{try{await mE(F)}catch(B){if(B instanceof nD||B instanceof gD)W(B.message);throw B}})}async function mE({apiHost:D,browser:F=!0}){let B=await JD(D);console.log(K.info(`Authenticating to ${K.bold(B.name)} ${K.dim(`(${B.url})`)}`));let E=P2(B.url),Z;try{Z=await E.device.code({client_id:$1,scope:e6})}catch($){W(`Could not reach ${B.url} — ${$ instanceof Error?$.message:String($)}`)}if(Z.error||!Z.data)W(`Failed to start device flow: ${_(Z.error)}`);let{device_code:J,user_code:Y,verification_uri:H,verification_uri_complete:Q,interval:X=5,expires_in:C=1800}=Z.data;if(console.log(),console.log(` ${K.dim("Visit:")} ${K.underline(K.cyan(H))}`),console.log(` ${K.dim("Code: ")} ${K.bold(Y)}`),console.log(),F){let $=Q??H;try{await G2($),console.log(K.dim(` Opened ${$}`))}catch{}}else console.log(K.dim(" --no-browser set; open the URL above manually"));console.log();let G=t8();G.start(`Waiting for approval (polling every ${X}s)`);let u=await cE({auth:E,deviceCode:J,initialInterval:X,expiresInSec:C,onSlowDown:($)=>{G.message(`Server asked us to slow down — polling every ${$}s`)}}).catch(($)=>{throw G.error($ instanceof Error?$.message:"Failed"),$});G.stop("Authorized");let z=(await E.getSession({fetchOptions:{headers:{Authorization:`Bearer ${u}`}}})).data?.user;if(!z)W("Token issued but session lookup failed — server might be misconfigured.");await N8({accessToken:u,user:{id:z.id,email:z.email,name:z.name},envName:B.name,apiUrl:B.url,issuedAt:new Date().toISOString()}),console.log(),console.log(K.success(`Logged in to ${K.bold(B.name)} as ${K.bold(z.email)}`))}async function cE(D){let F=D.initialInterval,B=Date.now()+D.expiresInSec*1000;while(Date.now()<B){await new Promise((Y)=>setTimeout(Y,F*1000));let E=await D.auth.device.token({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:D.deviceCode,client_id:$1});if(E.data?.access_token)return E.data.access_token;let Z=dE(E.error);if(lE(E.error)===429){F+=10,D.onSlowDown(F);continue}switch(Z){case"authorization_pending":continue;case"slow_down":F+=5,D.onSlowDown(F);continue;case"access_denied":throw new nD;case"expired_token":throw new gD;default:throw Error(`Device flow error: ${_(E.error)}`)}}throw new gD}function dE(D){if(D&&typeof D==="object"&&"error"in D){let F=D.error;return typeof F==="string"?F:void 0}return}function lE(D){if(D&&typeof D==="object"&&"status"in D){let F=D.status;return typeof F==="number"?F:void 0}return}function F4(D){D.command("logout").description("clear stored credentials for the active backend").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").action(async(F)=>{let B=await JD(F.apiHost),E=await tD(B.name);if(!E){console.log(K.dim(`Not logged in to ${K.bold(B.name)} — nothing to do.`));return}try{await P2(E.apiUrl).signOut({fetchOptions:{headers:{Authorization:`Bearer ${E.accessToken}`}}})}catch{}await M8(B.name),console.log(K.success(`Logged out of ${K.bold(B.name)}`))})}function B4(D){D.command("ping").description("hit the Photon Dashboard /api/health endpoint").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-u, --url <url>","raw API URL (bypasses env resolution)").action(async(F)=>{let{api:B,env:E}=await y({apiHost:F.apiHost,url:F.url});console.log(K.dim(`→ ${E.url}`));let Z=performance.now(),{data:J,error:Y,status:H}=await B.api.health.get(),Q=Math.round(performance.now()-Z);if(Y)console.error(K.error(`${H} (${Q}ms): ${_(Y)}`)),process.exit(1);console.log(K.success(`${H} (${Q}ms): ${JSON.stringify(J)}`))})}var pE=["developer","organization"];function Z4(D){let F=D.command("profile").description("view or manage your developer / organization profile");aE(F),iE(F),rE(F)}function aE(D){D.command("show",{isDefault:!0}).description("show your profile").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,creds:E,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:J,error:Y}=await B.api.profile.get();if(Y){if(Y.status===401)throw new k(Z.name);W(`Failed to fetch profile: ${_(Y)}`)}if(F.json){b({user:E?.user??null,profile:J});return}if(E)console.log(K.bold(E.user.name)+K.dim(` <${E.user.email}>`));else console.log(K.dim(`token-authenticated on env ${Z.name}`));if(console.log(),!J){console.log(K.dim("No profile yet.")),console.log(K.hint("Set one up: `photon profile init`."));return}console.log(K.bold(`${J.type} profile`));let H=[["companyName",J.companyName],["platforms",J.platforms],["background",J.background],["referralSource",J.referralSource]],Q=Math.max(...H.map(([X])=>X.length));for(let[X,C]of H)console.log(` ${K.dim(X.padEnd(Q))} ${oE(C)}`)})}function iE(D){D.command("init").description("set up your developer or organization profile").option("--type <type>","developer | organization").option("--platforms <list>","comma-separated platforms you're building on").option("--background <text>","what you're building").option("--company-name <name>","organization: company name").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),Z=await B.api.profile.get();if(Z.status===401)throw new k(E.name);if(Z.error)W(`Failed to check existing profile: ${_(Z.error)}`);if(Z.data)W("A profile already exists for this account.",{hint:"Use `photon profile update` to change it."});let J=await nE(F);if(await J4(B,E.name,J),F.json){b({profile:J});return}console.log(K.success(`Created ${J.type} profile.`))})}async function nE(D){if(!XD())return{type:O2(D.type,{required:!0}),platforms:D.platforms!==void 0?I0(D.platforms):void 0,background:D.background,companyName:D.companyName};E2(K.cyan("Set up your profile"));let F=O2(D.type);if(!F){let J=await J2({message:"What kind of profile?",options:[{value:"developer",label:"Developer",hint:"individual contributor"},{value:"organization",label:"Organization",hint:"company / team"}]});if(t(J))W("Aborted.");F=J}let B=D.platforms!==void 0?I0(D.platforms):await sE("Platforms you're building on (comma-separated)",void 0,!0),E=await E4("What are you building?",D.background),Z=F==="organization"?await E4("Company name",D.companyName):D.companyName;return Z2(K.dim("Submitting…")),{type:F,platforms:B.length>0?B:void 0,background:E,companyName:Z}}function rE(D){D.command("update").alias("edit").description("update your existing profile (preserves unchanged fields)").option("--type <type>","developer | organization").option("--platforms <list>","comma-separated platforms you're building on").option("--background <text>","what you're building").option("--company-name <name>","organization: company name").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{if(!(F.type!==void 0||F.platforms!==void 0||F.background!==void 0||F.companyName!==void 0))W("Nothing to update.",{hint:"Pass at least one field flag — see `photon profile update --help`."});let{api:E,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),J=await E.api.profile.get();if(J.status===401)throw new k(Z.name);if(J.error)W(`Failed to fetch profile: ${_(J.error)}`);let Y=J.data;if(!Y)W("No profile to update.",{hint:"Create one first: `photon profile init`."});let H={type:F.type!==void 0?O2(F.type,{required:!0}):O2(Y.type)??void 0,platforms:F.platforms!==void 0?I0(F.platforms):Y.platforms??void 0,background:F.background??Y.background??void 0,companyName:F.companyName??Y.companyName??void 0};if(await J4(E,Z.name,H),F.json)return b({profile:H});console.log(K.success("Profile updated."))})}async function J4(D,F,B){let E={};if(B.type!==void 0)E.type=B.type;if(B.platforms!==void 0)E.platforms=B.platforms;if(B.background!==void 0)E.background=B.background;if(B.companyName!==void 0)E.companyName=B.companyName;let Z=await D.api.onboarding.details.post(E);if(Z.status===401)throw new k(F);if(Z.error)W(`Failed to save profile: ${_(Z.error)}`)}function O2(D,{required:F=!1}={}){if(D===void 0||D===""){if(F)W("--type is required (developer | organization).");return}if(!pE.includes(D))W(`Unknown profile type "${D}". Use "developer" or "organization".`);return D}async function E4(D,F){if(F!==void 0)return F;let B=await SD({message:D,placeholder:"(skip)"});if(t(B))W("Aborted.");let E=B?.trim();return E?E:void 0}async function sE(D,F,B=!1){if(F!==void 0)return I0(F);let E=await SD({message:D,placeholder:B?"(skip)":void 0});if(t(E))W("Aborted.");return I0(E??"")}function I0(D){return D.split(",").map((F)=>F.trim()).filter(Boolean)}function oE(D){if(D===null||D===void 0||D==="")return K.dim("—");if(Array.isArray(D))return D.length>0?D.join(", "):K.dim("—");if(typeof D==="boolean")return D?K.green("yes"):K.dim("no");if(D instanceof Date)return D.toLocaleString();if(typeof D==="object")return JSON.stringify(D);return String(D)}async function iD(D){if(D.yes)return;if(!XD())W("Confirmation required for this destructive action.",{hint:D.fallbackHint??"Pass --yes to confirm."});let F=await B2({message:D.message,initialValue:!1});if(t(F)||!F)W("Aborted.")}var y2=["imessage","whatsapp_business","voice"];function X4(D){let F=D.command("projects").alias("project").description("manage your Photon Dashboard projects");tE(F),eE(F),DZ(F),FZ(F),ZZ(F),JZ(F),YZ(F),HZ(F),XZ(F),CZ(F)}function tE(D){D.command("list",{isDefault:!0}).alias("ls").description("list your projects").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:Z,error:J}=await B.api.projects.get();if(J){if(J.status===401)throw new k(E.name);W(`Failed to list projects: ${_(J)}`)}let Y=z2(Z,"projects");if(F.json){b(Y);return}if(Y.length===0){console.log(K.dim("No projects yet.")),console.log(K.hint("Create one with `photon projects create`."));return}let H=Y.map((Q)=>[GZ(Q.id,8),Q.name,Q.location,Q4(Q.status),Q.platforms.length>0?Q.platforms.join(", "):K.dim("—"),new Date(Q.updatedAt).toLocaleDateString()]);KD(["id","name","location","status","platforms","updated"],H)})}function eE(D){D.command("show [id]").alias("get").description("show details for one project (defaults to $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{projectId:E,env:Z}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).get();if(Q===401)throw new k(Z.name);if(Q===404||!H&&!Y)W(`Project not found: ${E}`,{hint:"List your projects with `photon projects ls`."});if(H)W(`Failed to fetch project: ${_(H)}`);if(B.json){b(Y);return}if(!Y)return;let X=Y;console.log(K.bold(X.name)+K.dim(` (${X.id})`)),console.log(),KZ([["status",Q4(X.status)],["location",X.location],["owner",X.isOwner?K.green("yes"):K.dim("no")],["template",X.template?"yes":"no"],["observability",X.observability?"yes":"no"],["slackChannelId",X.slackChannelId??K.dim("—")],["slackTeamId",X.slackTeamId??K.dim("—")],["createdAt",new Date(X.createdAt).toLocaleString()],["updatedAt",new Date(X.updatedAt).toLocaleString()]])})}function DZ(D){D.command("secret [id]").alias("get-secret").description("print the project's Spectrum API secret (defaults to $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{projectId:E,env:Z}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).get();if(Q===401)throw new k(Z.name);if(Q===404||!H&&!Y)W(`Project not found: ${E}`,{hint:"List your projects with `photon projects ls`."});if(H)W(`Failed to fetch project: ${_(H)}`);if(!Y)return;if(!Y.projectSecret)W("This project has no API secret yet.",{hint:`Generate one with \`photon projects regenerate-secret ${E}\`.`});if(B.json){b({id:E,projectSecret:Y.projectSecret});return}console.log(Y.projectSecret)})}function FZ(D){D.command("create").alias("new").description("create a new project").option("-n, --name <name>","project name").option("-l, --location <location>",'location (default: "United States")').option("--platforms <list>",`comma-separated platforms (${y2.join(", ")})`).option("--template","use as template").option("--observability","enable observability").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let B=await BZ(F),{api:E,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:J,error:Y,status:H}=await E.api.projects.post({name:B.name,location:B.location,platforms:B.platforms,template:B.template,observability:B.observability});if(H===401)throw new k(Z.name);if(Y)W(`Failed to create project: ${_(Y)}`);let Q=J;if(Q.error)W(Q.error);if(!Q.id)W("Server did not return a project id.");if(F.json){b({id:Q.id,name:B.name,env:Z.name});return}console.log(K.success(`Created ${K.bold(B.name)} ${K.dim(`(${Q.id})`)} on ${K.bold(Z.name)}`)),console.log(K.dim(` To make this the active project: export PHOTON_PROJECT_ID='${Q.id}'`))})}function U1(D){let F=D.split(",").map((E)=>E.trim()).filter(Boolean),B=F.filter((E)=>!y2.includes(E));if(B.length>0)W(`Unknown platform(s): ${B.join(", ")}.`,{hint:`Valid platforms: ${y2.join(", ")}.`});return[...new Set(F)]}async function BZ(D){if(!XD()){if(!D.name?.trim())W("--name is required in non-interactive mode.",{hint:"Run from a terminal for the interactive prompt, or pass --name <name>."});return{name:D.name.trim(),location:D.location??"United States",platforms:D.platforms!==void 0?U1(D.platforms):[],template:D.template??!1,observability:D.observability??!1}}E2(K.cyan("Create a new project"));let F=D.name?.trim();if(!F){let Y=await SD({message:"Project name",validate:(H)=>H&&H.trim()?void 0:"Project name is required"});if(t(Y))W("Aborted.");F=Y.trim()}let B=D.location;if(B===void 0){let Y=await SD({message:"Location",placeholder:"United States",defaultValue:"United States"});if(t(Y))W("Aborted.");B=Y||"United States"}let E=D.platforms!==void 0?U1(D.platforms):U1(await EZ(`Platforms (comma-separated: ${y2.join(", ")})`,void 0,!0)),Z=D.template??await Y4("Use as template?",!1),J=D.observability??await Y4("Enable observability?",!1);return Z2(K.dim("Submitting…")),{name:F,location:B,platforms:E,template:Z,observability:J}}async function EZ(D,F,B=!1){if(F!==void 0)return F;let E=await SD({message:D,placeholder:B?"(skip)":void 0});if(t(E))W("Aborted.");return E??""}async function Y4(D,F){let B=await B2({message:D,initialValue:F});if(t(B))W("Aborted.");return Boolean(B)}function ZZ(D){D.command("update [id]").alias("edit").alias("rename").description("rename a project (defaults to $PHOTON_PROJECT_ID)").option("-n, --name <name>","new name").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let E=B.name?.trim();if(!E)W("--name is required.",{hint:"Pass a non-empty name, e.g. `photon projects update --name 'New Name'`."});let{projectId:Z,env:J}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:J.url,token:B.token,requireAuth:!0}),{error:H,status:Q,data:X}=await Y.api.projects({id:Z}).patch({name:E});if(Q===401)throw new k(J.name);if(H)W(`Failed to update project: ${_(H)}`);let C=X;if(C.error)W(C.error);if(B.json){b({id:Z,name:E});return}console.log(K.success(`Updated ${K.bold(E)} ${K.dim(`(${Z})`)}`))})}function JZ(D){D.command("delete [id]").alias("rm").alias("remove").description("permanently delete a project (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(F,B)=>{let{projectId:E,env:Z}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),Y=await J.api.projects({id:E}).get();if(Y.status===401)throw new k(Z.name);if(Y.status===404||!Y.error&&!Y.data)W(`Project not found: ${E}`,{hint:"Already deleted? `photon projects ls` to confirm."});if(Y.error)W(`Failed to look up project: ${_(Y.error)}`);if(!Y.data)return;let H=Y.data;await iD({message:`Delete project ${K.bold(H.name)} (${E})? This cannot be undone.`,yes:B.yes??!1,fallbackHint:`Pass --yes to delete ${H.name}.`});let{error:Q,status:X}=await J.api.projects({id:E}).delete();if(X===401)throw new k(Z.name);if(Q)W(`Failed to delete project: ${_(Q)}`);if(console.log(K.success(`Deleted ${K.bold(H.name)} ${K.dim(`(${E})`)}`)),process.env.PHOTON_PROJECT_ID===E)console.error(K.warn("Active project just deleted. Run `unset PHOTON_PROJECT_ID` to clear."))})}function YZ(D){D.command("regenerate-secret [id]").alias("rotate-secret").description("rotate the project's Spectrum API secret (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").option("--json","output JSON").action(async(F,B)=>{let{projectId:E,env:Z}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0});await iD({message:`Rotate the API secret for project ${E}? Existing integrations using the old secret will stop working immediately.`,yes:B.yes??!1,fallbackHint:"Pass --yes to rotate the secret."});let{data:Y,error:H,status:Q}=await J.api.projects({id:E})["regenerate-secret"].post();if(Q===401)throw new k(Z.name);if(H)W(`Failed to rotate secret: ${_(H)}`);let X=Y;if(X.error)W(X.error);if(!X.projectSecret)W("Server did not return a new secret.");if(B.json){b({id:E,projectSecret:X.projectSecret});return}console.log(K.success(`New secret for ${E}:`)),console.log(` ${K.bold(X.projectSecret)}`),wD.warn("This is shown once. Store it somewhere safe — re-rotating is the only way to recover.")})}function HZ(D){D.command("open [id]").description("open the project in the dashboard web UI (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("--no-browser","print the URL instead of launching a browser").action(async(F,B)=>{let{projectId:E,env:Z}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),J=new URL(`/dashboard/${E}`,Z.url).toString();await u0(J,{noBrowser:!B.browser,label:"URL"})})}function XZ(D){D.command("upgrade [id] [tier]").description("subscribe / pay for a project (smart-routes to Stripe checkout or billing portal)").option("--plan <price-id>","Stripe price id (escape hatch; overrides tier picker)").option("--qty <n>","quantity (default 1)",M2).option("--checkout","force checkout flow (even if currently subscribed)").option("--manage","force Stripe portal (downgrade / cancel / change card)").option("-p, --project <id>","project id (overrides positional [id] and $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url,tier?}) and skip browser open").action(async(F,B,E)=>{if(E.checkout&&E.manage)W("--checkout and --manage are mutually exclusive.");let Z=F,J=H4(B);if(!J&&Z&&QZ(Z)&&!B)J=H4(Z),Z=void 0;if(B&&!J)W(`Unknown tier "${B}".`,{hint:`Use one of: ${xD.join(", ")} — or pass --plan <price-id>.`});let{projectId:Y,env:H}=await m({flagProjectId:E.project??Z,apiHost:E.apiHost}),{api:Q}=await y({apiHost:H.url,token:E.token,requireAuth:!0}),X=W0({explicitNoBrowser:E.browser===!1,json:E.json??!1}),C;if(E.manage)C="manage";else if(E.checkout||E.plan||J)C="checkout";else{let q=await U6(Q,Y,H.name);if(q.tier==="unknown")W(`Cannot determine the subscription state of project ${Y}.`,{hint:"Re-run with --checkout to subscribe, or --manage to open the Stripe portal."});if(C=q.status==="active"||q.status==="past_due"?"manage":"checkout",C==="manage"&&!E.json)console.log(K.info(`Project ${K.bold(Y)} is on ${q.tier??"—"} (${q.status??"—"}). Opening Stripe portal…`)),console.log(K.dim(" To pick a different plan instead, re-run with --checkout."))}if(C==="manage"){await N2({api:Q,projectId:Y,envName:H.name,json:E.json??!1,noBrowser:X});return}let G,u;if(E.plan)G=E.plan;else if(J){let q=await aD(Q,H.name),z=u2(q,J),$=z?.prices?.length===1?z.prices[0]:void 0;if(!z||!z.prices?.length)W(`No plan matching tier "${J}".`,{hint:"List options with `photon billing plans`."});if(!$)W(`Tier "${J}" has multiple billing intervals.`,{hint:"Pass --plan <price-id> to choose, or omit the tier to use the interactive picker."});G=$.id,u=J}else{let q=await aD(Q,H.name),z=await $2(q);G=z.price.id,u=W2(z.plan.name)}await U2({api:Q,projectId:Y,priceId:G,quantity:E.qty,envName:H.name,json:E.json??!1,noBrowser:X,tierLabel:u})})}function QZ(D){return xD.includes(D.trim().toLowerCase())}function H4(D){if(!D)return;let F=D.trim().toLowerCase();return xD.includes(F)?F:void 0}function CZ(D){D.command("check-phone <number>").description("check whether a phone number is available on Spectrum").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{api:E,env:Z}=await y({apiHost:B.apiHost,token:B.token,requireAuth:!0}),{data:J,error:Y,status:H}=await E.api.projects["check-availability"].get({query:{phoneNumber:F}});if(H===401)throw new k(Z.name);if(Y)W(`Failed to check phone availability: ${_(Y)}`);if(B.json){b(J);return}if(J.available)console.log(K.success(`${F} is available.`));else console.log(K.warn(`${F} is taken.`))})}function Q4(D){switch(D){case"running":return K.green(D);case"paused":return K.yellow(D);case"error":return K.red(D);default:return D}}function GZ(D,F){return D.length>F?`${D.slice(0,F)}…`:D}function KZ(D){let F=Math.max(...D.map(([B])=>B.length));for(let[B,E]of D)console.log(` ${K.dim(B.padEnd(F))} ${E}`)}var zZ={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif"},qZ=new Set([".svg",".svgz"]),uZ=/^\s*(?:<\?xml[\s\S]*?\?>\s*)?(?:<!--[\s\S]*?-->\s*)*<svg(?:\s|>)/i,WZ=4100,$Z=(D)=>{let F=D.replaceAll("\\","/").split("/").at(-1)??D,B=F.lastIndexOf(".");return B===-1?"":F.slice(B).toLowerCase()},UZ=(D)=>uZ.test(new TextDecoder().decode(D.subarray(0,WZ))),C4=(D,F)=>{if(qZ.has(D)||F&&UZ(F))W("SVG avatars are not supported.",{hint:"Convert the image to PNG, JPEG, or WebP before uploading."})};async function w2(D){let F=$Z(D);C4(F);let B=Bun.file(D);if(!await B.exists())W(`File not found: ${D}`);let E=new Uint8Array(await B.arrayBuffer());return C4(F,E),{body:E,contentType:zZ[F]??"application/octet-stream",size:E.byteLength}}async function x2(D,F,B){console.log(K.dim(`Uploading ${D} (${(B.size/1024).toFixed(1)} KB)…`));let E=await fetch(F,{method:"PUT",body:B.body,headers:{"Content-Type":B.contentType}});if(!E.ok)W(`Upload failed: ${E.status} ${E.statusText}`)}function G4(D){D.command("avatar").description("manage the Spectrum avatar image").command("upload <file>").description("upload an image as the Spectrum avatar").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(B,E)=>{let Z=await w2(B),{projectId:J,env:Y}=await m({flagProjectId:E.project,apiHost:E.apiHost}),{api:H}=await y({apiHost:Y.url,token:E.token,requireAuth:!0}),Q=await H.api.projects({id:J}).spectrum.avatar.upload.post({contentType:Z.contentType});if(Q.status===401)throw new k(Y.name);if(Q.error)W(`Failed to get upload URL: ${_(Q.error)}`);let X=Q.data;if(X.error)W(X.error);if(!X.uploadUrl||!X.key)W("Server did not return uploadUrl + key.");await x2(B,X.uploadUrl,Z);let C=await H.api.projects({id:J}).spectrum.avatar.commit.post({key:X.key});if(C.status===401)throw new k(Y.name);if(C.error)W(`Uploaded, but commit failed: ${_(C.error)}`);let G=C.data;if(G.error)W(G.error);if(!G.avatarUrl)W("Server did not return an avatar URL after commit.");let u=G.avatarUrl;console.log(K.success(`Uploaded avatar from ${B}`)),console.log(K.dim(` URL: ${u}`))})}function K4(D){D.command("profile").description("manage a dedicated iMessage line profile").command("update <line-id>").alias("edit").description("update a line profile name (preserves unset fields)").option("--first-name <name>").option("--last-name <name>").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(E,Z)=>{let J=Z.firstName!==void 0?{firstName:Z.firstName,...Z.lastName!==void 0?{lastName:Z.lastName}:{}}:Z.lastName!==void 0?{lastName:Z.lastName}:W("Nothing to update.",{hint:"Pass --first-name and/or --last-name."}),{projectId:Y,env:H}=await m({flagProjectId:Z.project,apiHost:Z.apiHost}),{api:Q}=await y({apiHost:H.url,token:Z.token,requireAuth:!0}),{data:X,error:C,status:G}=await Q.api.projects({id:Y}).lines({lineId:E}).profile.patch(J);if(G===401)throw new k(H.name);if(C)W(`Failed to update line profile: ${_(C)}`);if(!X?.succeed)W("Failed to update line profile: empty API response.");if(Z.json)return b(X.data);console.log(K.success(`Updated profile for line ${E}.`))}),D.command("avatar").description("manage a dedicated iMessage line avatar").command("upload <line-id> <file>").description("upload an image as a line avatar").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(E,Z,J)=>{let Y=await w2(Z),{projectId:H,env:Q}=await m({flagProjectId:J.project,apiHost:J.apiHost}),{api:X}=await y({apiHost:Q.url,token:J.token,requireAuth:!0}),C=await X.api.projects({id:H}).lines({lineId:E}).profile.avatar.upload.post({contentType:Y.contentType});if(C.status===401)throw new k(Q.name);if(C.error)W(`Failed to get line avatar upload URL: ${_(C.error)}`);if(!C.data?.succeed)W("Failed to get line avatar upload URL: empty API response.");let G=C.data.data;if(!G.uploadUrl||!G.key)W("Server did not return uploadUrl + key.");await x2(Z,G.uploadUrl,Y);let u=await X.api.projects({id:H}).lines({lineId:E}).profile.avatar.commit.post({key:G.key});if(u.status===401)throw new k(Q.name);if(u.error)W(`Uploaded, but commit failed: ${_(u.error)}`);if(!u.data?.succeed)W("Uploaded, but commit failed: empty API response.");let q=u.data.data.avatarUrl;if(!q)W("Server did not return an avatar URL after commit.");console.log(K.success(`Uploaded avatar for line ${E}.`)),console.log(K.dim(` URL: ${q}`))})}function z4(D){let F=D.command("lines").description("manage Spectrum phone lines on a project");K4(F),F.command("list",{isDefault:!0}).alias("ls").description("list lines for the active project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).lines.get();if(Q===401)throw new k(Z.name);if(H)W(`Failed to list lines: ${_(H)}`);let X=q2(Y,"lines");if(B.json)return b(X);if(X.length===0){console.log(K.dim("No lines yet.")),console.log(K.hint("Add one with `photon spectrum lines add`."));return}let C=X.map((G)=>[NZ(G.id,10),G.platform??"—",("phoneNumber"in G?G.phoneNumber:G.displayPhoneNumber)??K.dim("—"),G.status??K.dim("—")]);KD(["id","platform","number","status"],C)}),F.command("add").alias("create").description("add a new line (currently iMessage only)").option("--platform <name>","platform (only 'imessage' supported today)","imessage").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{if(B.platform!=="imessage")W(`Unsupported platform "${B.platform}".`,{hint:"The server currently only accepts 'imessage'."});let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).lines.post({platform:"imessage"});if(Q===401)throw new k(Z.name);if(H)W(`Failed to add line: ${_(H)}`);let X=Y;if(X.error)W(X.error);if(B.json)return b(X.line??{});console.log(K.success(`Added ${X.line?.platform??"imessage"} line${X.line?.id?K.dim(` (${X.line.id})`):""}`))}),F.command("remove <line-id>").alias("rm").alias("delete").description("remove a line").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(B,E)=>{let{projectId:Z,env:J}=await m({flagProjectId:E.project,apiHost:E.apiHost}),{api:Y}=await y({apiHost:J.url,token:E.token,requireAuth:!0});await iD({message:`Remove line ${B} from project ${Z}?`,yes:E.yes??!1,fallbackHint:`Pass --yes to remove line ${B}.`});let{error:H,status:Q}=await Y.api.projects({id:Z}).lines({lineId:B}).delete();if(Q===401)throw new k(J.name);if(H)W(`Failed to remove line: ${_(H)}`);console.log(K.success(`Removed line ${B}`))})}function NZ(D,F){return D.length>F?`${D.slice(0,F)}…`:D}function u4(D){let F=D.command("platforms").description("manage Spectrum platform integrations on a project");F.command("list",{isDefault:!0}).alias("ls").description("list platforms and their enabled state").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).platforms.get();if(Q===401)throw new k(Z.name);if(H)W(`Failed to list platforms: ${_(H)}`);let X=$6(Y,"platform map");if(B.json)return b(X);let C=Object.entries(X);if(C.length===0){console.log(K.dim("No platforms configured for this project."));return}let G=C.sort(([u],[q])=>u.localeCompare(q)).map(([u,q])=>[u,q?K.green("on"):K.dim("off")]);KD(["platform","state"],G)}),F.command("enable <name>").description("enable a platform").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B,E)=>{await q4(B,!0,E)}),F.command("disable <name>").description("disable a platform").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B,E)=>{await q4(B,!1,E)})}async function q4(D,F,B){let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).platforms.toggle.post({platformId:D,enabled:F});if(Q===401)throw new k(Z.name);if(H)W(`Failed to ${F?"enable":"disable"} ${D}: ${_(H)}`);let X=Y;if(X.error)W(X.error,{hint:X.error==="Unsupported platform"?"Run `photon spectrum platforms ls` to see available platforms.":void 0});if(B.json)return b(X.platforms??{});console.log(K.success(`${F?"Enabled":"Disabled"} ${K.bold(D)}`))}function W4(D){let F=D.command("profile").description("view or update the Spectrum profile");F.command("show",{isDefault:!0}).description("show the Spectrum profile").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).spectrum.profile.get();if(Q===401)throw new k(Z.name);if(H)W(`Failed to fetch Spectrum profile: ${_(H)}`);if(B.json)return b(Y??{});if(!Y||typeof Y!=="object"){console.log(K.dim("No Spectrum profile."));return}let X=Object.entries(Y).filter(([G])=>!["id","projectId"].includes(G));if(X.length===0){console.log(K.dim("Empty Spectrum profile."));return}let C=Math.max(...X.map(([G])=>G.length));for(let[G,u]of X)console.log(` ${K.dim(G.padEnd(C))} ${MZ(u)}`)}),F.command("update").alias("edit").description("update the Spectrum profile (preserves unset fields)").option("--first-name <name>").option("--last-name <name>").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{if(!(B.firstName!==void 0||B.lastName!==void 0))W("Nothing to update.",{hint:"Pass at least one of --first-name / --last-name."});let{projectId:Z,env:J}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:J.url,token:B.token,requireAuth:!0}),H={};if(B.firstName!==void 0)H.firstName=B.firstName;if(B.lastName!==void 0)H.lastName=B.lastName;let{data:Q,error:X,status:C}=await Y.api.projects({id:Z}).spectrum.profile.patch(H);if(C===401)throw new k(J.name);if(X)W(`Failed to update Spectrum profile: ${_(X)}`);let G=Q;if(G.error)W(G.error);if(B.json)return b(G.profile??{});console.log(K.success("Spectrum profile updated."))}),F.command("sync").description("sync the project profile to every dedicated iMessage line").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).spectrum.profile.sync.post();if(Q===401)throw new k(Z.name);if(H)W(`Failed to trigger Spectrum profile sync: ${_(H)}`);if(!Y?.succeed)W("Failed to trigger Spectrum profile sync: empty API response.");if(B.json){b(Y.data);return}let{targetedLineCount:X}=Y.data;console.log(K.success(`Profile synced. ${X} ${X===1?"line":"lines"} updated.`))})}function MZ(D){if(D===null||D===void 0||D==="")return K.dim("—");if(typeof D==="boolean")return D?K.green("yes"):K.dim("no");if(typeof D==="object")return JSON.stringify(D);return String(D)}function U4(D){let F=D.command("users").description("manage Spectrum users on a project");F.command("list",{isDefault:!0}).alias("ls").description("list Spectrum users for the active project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),{data:Y,error:H,status:Q}=await J.api.projects({id:E}).spectrum.users.get();if(Q===401)throw new k(Z.name);if(H)W(`Failed to list users: ${_(H)}`);let X=q2(Y,"users");if(B.json)return b(X);if(X.length===0){console.log(K.dim("No Spectrum users yet.")),console.log(K.hint("Add one with `photon spectrum users add`."));return}let C=X.map((G)=>[AZ(G.id,10),$4(G),G.email??K.dim("—"),G.phoneNumber??K.dim("—")]);KD(["id","name","email","phone"],C)}),F.command("add").alias("create").description("add a Spectrum user to the active project").option("--first-name <name>","first name").option("--last-name <name>","last name").option("--email <email>","email address").option("--phone <number>","phone number (E.164)").option("--invite","send an onboarding invite to this user").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:E,env:Z}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Z.url,token:B.token,requireAuth:!0}),Y=await VZ(B),{data:H,error:Q,status:X}=await J.api.projects({id:E}).spectrum.users.post({firstName:Y.firstName,lastName:Y.lastName,email:Y.email,phoneNumber:Y.phone,sendInvite:B.invite??!1});if(X===401)throw new k(Z.name);if(Q)W(`Failed to add user: ${_(Q)}`);let C=H;if(C.error)W(C.error);if(B.json)return b(C.user??{});let G=C.user;if(console.log(K.success(`Added ${$4(G??Y)} ${G?.id?K.dim(`(${G.id})`):""}`)),B.invite)console.log(K.dim(" Invite sent."))}),F.command("remove <user-id>").alias("rm").alias("delete").description("remove a Spectrum user").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(B,E)=>{let{projectId:Z,env:J}=await m({flagProjectId:E.project,apiHost:E.apiHost}),{api:Y}=await y({apiHost:J.url,token:E.token,requireAuth:!0});await iD({message:`Remove user ${B} from project ${Z}?`,yes:E.yes??!1,fallbackHint:`Pass --yes to remove user ${B}.`});let{error:H,status:Q}=await Y.api.projects({id:Z}).spectrum.users({userId:B}).delete();if(Q===401)throw new k(J.name);if(H)W(`Failed to remove user: ${_(H)}`);console.log(K.success(`Removed user ${B}`))})}async function VZ(D){if(!XD()){let F=[];if(!D.firstName)F.push("--first-name");if(!D.lastName)F.push("--last-name");if(!D.email)F.push("--email");if(!D.phone)F.push("--phone");if(F.length>0)W(`Missing required flags in non-interactive mode: ${F.join(", ")}`);return{firstName:D.firstName,lastName:D.lastName,email:D.email,phone:D.phone}}return{firstName:D.firstName??await b2("First name"),lastName:D.lastName??await b2("Last name"),email:D.email??await b2("Email"),phone:D.phone??await b2("Phone (E.164, e.g. +14155551234)")}}async function b2(D){let F=await SD({message:D,validate:(B)=>B&&B.trim()?void 0:"Required"});if(t(F))W("Aborted.");return F.trim()}function $4(D){let F=[D.firstName,D.lastName].filter(Boolean);return F.length>0?F.join(" "):K.dim("(no name)")}function AZ(D,F){return D.length>F?`${D.slice(0,F)}…`:D}function N4(D){let F=D.command("spectrum").description("manage Spectrum users, lines, platforms, and profile");W4(F),U4(F),z4(F),u4(F),G4(F)}function M4(D){D.command("update").description("update Photon to the latest release").option("--check","check for an update without installing it").option("--force","reinstall even when this version is current").option("--installer <name>","override package-manager detection (npm, pnpm, yarn Classic, bun)").option("--json","output machine-readable JSON").action(async(F)=>{if(F.check&&F.force)throw Error("--check and --force cannot be used together.");let B=F.installer?i3(F.installer):void 0;if(!F.json)console.log(K.info(F.check?"Checking for Photon updates…":"Updating Photon…"));let E=await r3({check:F.check,force:F.force,installer:B,quiet:F.json});if(F.json){b(E);return}if(E.status==="up-to-date"){console.log(K.success(`Photon ${E.currentVersion} is up to date.`));return}if(E.status==="update-available"){console.log(K.warn(`Update available: ${E.currentVersion} → ${E.latestVersion}`)),console.log(K.hint(" Run `photon update` to install it."));return}if(E.status==="reinstalled"){console.log(K.success(`Reinstalled Photon ${E.currentVersion} with ${E.installer}.`));return}console.log(K.success(`Updated Photon ${E.currentVersion} → ${E.latestVersion} with ${E.installer}.`))})}function A4(D){D.command("whoami").description("show the user authenticated for the active backend").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(F)=>{let{api:B,env:E,creds:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:J,error:Y,status:H}=await B.api.profile.get();if(H===401)throw new k(E.name);if(Y)W(`Failed to fetch profile: ${_(Y)}`);if(!Z){if(console.log(K.dim(`authenticated via token on backend ${E.name} (${E.url})`)),J&&typeof J==="object"){let X=V4(J);if(X)console.log(K.dim(`profile: ${X}`))}return}let Q=Z.user;if(console.log(K.bold(Q.name)+K.dim(` <${Q.email}>`)),console.log(K.dim(`backend: ${E.name} (${E.url})`)),console.log(K.dim(`signed in: ${new Date(Z.issuedAt).toLocaleString()}`)),J&&typeof J==="object"){let X=V4(J);if(X)console.log(K.dim(`profile: ${X}`))}})}function V4(D){if(!D||typeof D!=="object")return null;let F=D;if(F.type==="developer"||F.type==="organization")return F.type;return null}function j4(){let D=new q8().name("photon").description("Photon CLI — bring your agents to any interface").version(ED.version,"-v, --version","output the current version").option("--debug","verbose output incl. HTTP request/response").hook("preAction",(F)=>{let B=F.opts();L8(!!B.debug)});return B4(D),A6(D),D4(D),F4(D),A4(D),M4(D),Z4(D),X4(D),N4(D),M6(D),V8(D),V6(D),D}if(!n3(process.argv))V3();var jZ=j4();jZ.parseAsync(process.argv).catch(TZ);function TZ(D){if(D instanceof J0||D instanceof k){let F=D.envName==="production"?"":` --api-host <url> # for "${D.envName}"`;W(D.message,{hint:`Run \`photon login${F}\`.`})}if(D instanceof nD)W(D.message,{hint:"Re-run `photon login` if this was unintentional."});if(D instanceof gD)W(D.message,{hint:"Re-run `photon login` and approve more quickly."});if(D instanceof Error){if(/Unable to connect|fetch failed|ECONNREFUSED/i.test(D.message))W(D.message,{hint:"Check your connection, or set PHOTON_API_HOST / pass --api-host <url> to target a reachable backend."});W(D.message)}W(String(D))}
|
|
80
|
+
`}}}}).prompt()};var uX=`${A("gray",a)} `;var _D=(D)=>new vF({validate:D.validate,placeholder:D.placeholder,defaultValue:D.defaultValue,initialValue:D.initialValue,output:D.output,signal:D.signal,input:D.input,render(){let F=D?.withGuide??o.withGuide,B=`${`${F?`${A("gray",a)}
|
|
81
|
+
`:""}${cF(this.state)} `}${D.message}
|
|
82
|
+
`,Z=D.placeholder?A("inverse",D.placeholder[0])+A("dim",D.placeholder.slice(1)):A(["inverse","hidden"],"_"),E=this.userInput?this.userInputWithCursor:Z,Y=this.value??"";switch(this.state){case"error":{let J=this.error?` ${A("yellow",this.error)}`:"",X=F?`${A("yellow",a)} `:"",H=F?A("yellow",C0):"";return`${B.trim()}
|
|
83
|
+
${X}${E}
|
|
84
|
+
${H}${J}
|
|
85
|
+
`}case"submit":{let J=Y?` ${A("dim",Y)}`:"",X=F?A("gray",a):"";return`${B}${X}${J}`}case"cancel":{let J=Y?` ${A(["strikethrough","dim"],Y)}`:"",X=F?A("gray",a):"";return`${B}${X}${J}${Y.trim()?`
|
|
86
|
+
${X}`:""}`}default:{let J=F?`${A("cyan",a)} `:"",X=F?A("cyan",C0):"";return`${B}${J}${E}
|
|
87
|
+
${X}
|
|
88
|
+
`}}}}).prompt();import F1 from"node:process";import U6 from"node:path";import{fileURLToPath as fB}from"node:url";import OB from"node:child_process";import PB,{constants as yB}from"node:fs/promises";import{promisify as GB}from"node:util";import KB from"node:child_process";import nF,{constants as J6}from"node:fs/promises";import B6 from"node:process";import YB from"node:os";import aF from"node:fs";import ZB from"node:fs";import D6 from"node:fs";var dF;function FB(){try{return D6.statSync("/.dockerenv"),!0}catch{return!1}}function BB(){try{return D6.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function lF(){if(dF===void 0)dF=FB()||BB();return dF}var pF,EB=()=>{try{return ZB.statSync("/run/.containerenv"),!0}catch{return!1}};function lD(){if(pF===void 0)pF=EB()||lF();return pF}var F6=()=>{if(B6.platform!=="linux")return!1;if(YB.release().toLowerCase().includes("microsoft")){if(lD())return!1;return!0}try{if(aF.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!lD()}catch{}if(aF.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||aF.existsSync("/run/WSL"))return!lD();return!1},kD=B6.env.__IS_WSL_TEST__?F6:F6();import Z6 from"node:process";import{Buffer as JB}from"node:buffer";import{promisify as XB}from"node:util";import QB from"node:child_process";var HB=XB(QB.execFile),iF=()=>`${Z6.env.SYSTEMROOT||Z6.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;var GD=async(D,F={})=>{let{powerShellPath:B,...Z}=F,E=GD.encodeCommand(D);return HB(B??iF(),[...GD.argumentsPrefix,E],{encoding:"utf8",...Z})};GD.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];GD.encodeCommand=(D)=>JB.from(D,"utf16le").toString("base64");GD.escapeArgument=(D)=>`'${String(D).replaceAll("'","''")}'`;function E6(D){for(let F of D.split(`
|
|
89
|
+
`)){if(/^\s*#/.test(F))continue;let B=/^\s*root\s*=\s*(?<mountPoint>"[^"]*"|'[^']*'|[^#]*)/.exec(F);if(!B)continue;return B.groups.mountPoint.trim().replaceAll(/^["']|["']$/g,"")}}var zB=GB(KB.execFile),CB=(()=>{let F;return async function(){if(F)return F;let B="/etc/wsl.conf",Z=!1;try{await nF.access(B,J6.F_OK),Z=!0}catch{}if(!Z)return"/mnt/";let E=await nF.readFile(B,{encoding:"utf8"}),Y=E6(E);if(Y===void 0)return"/mnt/";return F=Y,F=F.endsWith("/")?F:`${F}/`,F}})(),qB=async()=>{return`${await CB()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},J2=kD?qB:iF,Y6,X6=async()=>{return Y6??=(async()=>{try{let D=await J2();return await nF.access(D,J6.X_OK),!0}catch{return!1}})(),Y6},Q6=async()=>{let D=await J2(),F=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:B}=await GD(F,{powerShellPath:D});return B.trim()},H6=async(D)=>{if(/^[a-z]+:\/\//i.test(D))return D;try{let{stdout:F}=await zB("wslpath",["-aw",D],{encoding:"utf8"});return F.trim()}catch{return D}};function pD(D,F,B){let Z=(E)=>Object.defineProperty(D,F,{value:E,enumerable:!0,writable:!0});return Object.defineProperty(D,F,{configurable:!0,enumerable:!0,get(){let E=B();return Z(E),E},set(E){Z(E)}}),D}import{promisify as LB}from"node:util";import tF from"node:process";import{execFile as RB}from"node:child_process";import{promisify as WB}from"node:util";import $B from"node:process";import{execFile as UB}from"node:child_process";var MB=WB(UB);async function rF(){if($B.platform!=="darwin")throw Error("macOS only");let{stdout:D}=await MB("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),B=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(D)?.groups.id??"com.apple.Safari";if(B==="com.apple.safari")return"com.apple.Safari";return B}import NB from"node:process";import{promisify as VB}from"node:util";import{execFile as uB,execFileSync as BQ}from"node:child_process";var AB=VB(uB);async function G6(D,{humanReadableOutput:F=!0,signal:B}={}){if(NB.platform!=="darwin")throw Error("macOS only");let Z=F?[]:["-ss"],E={};if(B)E.signal=B;let{stdout:Y}=await AB("osascript",["-e",D,Z],E);return Y.trim()}async function sF(D){return G6(`tell application "Finder" to set app_path to application file id "${D}" as string
|
|
90
|
+
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as jB}from"node:util";import{execFile as TB}from"node:child_process";var IB=jB(TB),X2={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Q2=new Map(Object.entries(X2));class K6 extends Error{}async function oF(D=IB){let{stdout:F}=await D("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),B=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(F);if(!B)throw new K6(`Cannot find Windows browser in stdout: ${JSON.stringify(F)}`);let{id:Z}=B.groups,E=Z.lastIndexOf("."),Y=Z.lastIndexOf("-"),J=E===-1?void 0:Z.slice(0,E),X=Y===-1?void 0:Z.slice(0,Y);return X2[Z]??X2[J]??X2[X]??{name:Z,id:Z}}var SB=LB(RB),_B=(D)=>D.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(F)=>F.toUpperCase());async function eF(){if(tF.platform==="darwin"){let D=await rF();return{name:await sF(D),id:D}}if(tF.platform==="linux"){let{stdout:D}=await SB("xdg-mime",["query","default","x-scheme-handler/http"]),F=D.trim();return{name:_B(F.replace(/.desktop$/,"").replace("-"," ")),id:F}}if(tF.platform==="win32")return oF();throw Error("Only macOS, Linux, and Windows are supported")}import D1 from"node:process";var kB=Boolean(D1.env.SSH_CONNECTION||D1.env.SSH_CLIENT||D1.env.SSH_TTY),z6=kB;var H2=Symbol("fallbackAttempt"),B1=import.meta.url?U6.dirname(fB(import.meta.url)):"",C6=U6.join(B1,"xdg-open"),{platform:F0,arch:q6}=F1,W6=async(D,F)=>{if(D.length===0)return;let B=[];for(let Z of D)try{return await F(Z)}catch(E){B.push(E)}throw AggregateError(B,"Failed to open in all supported apps")},G2=async(D)=>{D={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...D};let F=D[H2]===!0;if(delete D[H2],Array.isArray(D.app))return W6(D.app,(Q)=>G2({...D,app:Q,[H2]:!0}));let{name:B,arguments:Z=[]}=D.app??{};if(Z=[...Z],Array.isArray(B))return W6(B,(Q)=>G2({...D,app:{name:Q,arguments:Z},[H2]:!0}));if(B==="browser"||B==="browserPrivate"){let Q={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},G={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},K;if(kD){let W=await Q6();K=Q2.get(W)??{}}else K=await eF();if(K.id in Q){let W=Q[K.id.toLowerCase()];if(B==="browserPrivate"){if(W==="safari")throw Error("Safari doesn't support opening in private mode via command line");Z.push(G[W])}return G2({...D,app:{name:B0[W],arguments:Z}})}throw Error(`${K.name} is not supported as a default browser`)}let E,Y=[],J={},X=!1;if(kD&&!lD()&&!z6&&!B)X=await X6();if(F0==="darwin"){if(E="open",D.wait)Y.push("--wait-apps");if(D.background)Y.push("--background");if(D.newInstance)Y.push("--new");if(B)Y.push("-a",B)}else if(F0==="win32"||X){if(E=await J2(),Y.push(...GD.argumentsPrefix),!kD)J.windowsVerbatimArguments=!0;if(kD&&D.target)D.target=await H6(D.target);let Q=["$ProgressPreference = 'SilentlyContinue';","Start"];if(D.wait)Q.push("-Wait");if(B){if(Q.push(GD.escapeArgument(B)),D.target)Z.push(D.target)}else if(D.target)Q.push(GD.escapeArgument(D.target));if(Z.length>0)Z=Z.map((G)=>GD.escapeArgument(G)),Q.push("-ArgumentList",Z.join(","));if(D.target=GD.encodeCommand(Q.join(" ")),!D.wait)J.stdio="ignore"}else{if(B)E=B;else{let Q=!B1||B1==="/",G=!1;try{await PB.access(C6,yB.X_OK),G=!0}catch{}E=F1.versions.electron??(F0==="android"||Q||!G)?"xdg-open":C6}if(Z.length>0)Y.push(...Z);if(!D.wait)J.stdio="ignore",J.detached=!0}if(F0==="darwin"&&Z.length>0)Y.push("--args",...Z);if(D.target)Y.push(D.target);let H=OB.spawn(E,Y,J);if(D.wait)return new Promise((Q,G)=>{H.once("error",G),H.once("close",(K)=>{if(!D.allowNonzeroExitCode&&K!==0){G(Error(`Exited with code ${K}`));return}Q(H)})});if(F)return new Promise((Q,G)=>{H.once("error",G),H.once("spawn",()=>{H.once("close",(K)=>{if(H.off("error",G),K!==0){G(Error(`Exited with code ${K}`));return}H.unref(),Q(H)})})});return H.unref(),new Promise((Q,G)=>{H.once("error",G),H.once("spawn",()=>{H.off("error",G),Q(H)})})},xB=(D,F)=>{if(typeof D!=="string")throw TypeError("Expected a `target`");return G2({...F,target:D})};function $6(D){if(typeof D==="string"||Array.isArray(D))return D;let{[q6]:F}=D;if(!F)throw Error(`${q6} is not supported`);return F}function q0({[F0]:D},{wsl:F}={}){if(F&&kD)return $6(F);if(!D)throw Error(`${F0} is not supported`);return $6(D)}var B0={browser:"browser",browserPrivate:"browserPrivate"};pD(B0,"chrome",()=>q0({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));pD(B0,"brave",()=>q0({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));pD(B0,"firefox",()=>q0({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));pD(B0,"edge",()=>q0({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));pD(B0,"safari",()=>q0({darwin:"Safari"}));var K2=xB;async function W0(D,F={}){let B=F.label??"Open";if(console.log(`${z.dim(B+":")} ${z.underline(z.cyan(D))}`),F.noBrowser)return"skipped";try{return await K2(D),"opened"}catch{return"failed"}}var z2="The API response format may have changed — try updating the CLI.";function C2(D,F){if(D==null)return[];if(Array.isArray(D))return D;$(`Unexpected API response: expected an array of ${F}.`,{hint:z2})}function M6(D,F){if(D==null)return{};if(!Array.isArray(D)&&typeof D==="object"&&Object.values(D).every((B)=>typeof B==="boolean"))return D;$(`Unexpected API response: expected a ${F} object.`,{hint:z2})}function q2(D,F,B=F){if(D==null)return[];if(Array.isArray(D)||typeof D!=="object")$(`Unexpected API response: expected an array of ${B}.`,{hint:z2});let Z=D[F];if(!Array.isArray(Z))$(`Unexpected API response: expected an array of ${B}.`,{hint:z2});return Z}function wB(D){return C2(D,"plans")}var wD=["pro","business","enterprise"];async function aD(D,F){let{data:B,error:Z,status:E}=await D.api.billing.plans.get();if(E===401)throw new f(F);if(Z)$(`Failed to list plans: ${k(Z)}`);return wB(B)}async function N6(D,F,B){let{data:Z,error:E,status:Y}=await D.api.projects({id:F}).subscription.get();if(Y===401)throw new f(B);if(E){let J=typeof Y==="number"?Y:0;if(!(J===0||J>=500))$(`Failed to fetch subscription: ${k(E)}`);return console.error(z.warn(`Could not read subscription for project ${F}: ${k(E)}. Subscription state unknown.`)),{tier:"unknown",status:null}}return Z??{}}function W2(D,F){let B=F.toLowerCase();for(let Z of D){if(!Z.name.toLowerCase().includes(B))continue;if(!Z.prices?.length)continue;return Z}return null}function $2(D){let F=D.toLowerCase();for(let B of wD)if(F.includes(B))return B;return}async function U2(D){if(!QD())$("Cannot prompt for a plan in non-interactive mode.",{hint:"Pass a tier (pro / business / enterprise) or --plan <price-id>."});let F=D.filter((E)=>E.prices&&E.prices.length>0);if(F.length===0)$("No subscription plans available.",{hint:"Contact support if you expected plans to be listed."});let B=[];for(let E of F)for(let Y of E.prices??[])B.push({value:{plan:E,price:Y},label:`${E.name} — ${bB(Y)}`,hint:E.description});let Z=await Y2({message:"Pick a plan",options:B});if(t(Z))$("Aborted.");return Z}function $0({explicitNoBrowser:D,json:F}){if(F||D)return!0;return!QD()}async function M2(D){let{data:F,error:B,status:Z}=await D.api.api.billing.checkout.post({projectId:D.projectId,priceId:D.priceId,quantity:D.quantity});if(Z===401)throw new f(D.envName);if(B)$(`Failed to start checkout: ${k(B)}`);let E=F;if(E.error)$(E.error);if(!E.url)$("Server did not return a checkout URL.");let Y={action:"checkout",url:E.url,...D.tierLabel?{tier:D.tierLabel}:{}};if(D.json)return w(Y),Y;if(await W0(Y.url,{noBrowser:D.noBrowser,label:"Stripe checkout"})==="failed")console.log(z.warn("Could not open browser automatically — copy the URL above."));return Y}async function N2(D){let{data:F,error:B,status:Z}=await D.api.api.projects({id:D.projectId}).subscription.manage.post();if(Z===401)throw new f(D.envName);if(B)$(`Failed to open portal: ${k(B)}`);let E=F;if(E.error)$(E.error);if(!E.url)$("Server did not return a portal URL.");let Y={action:"manage",url:E.url};if(D.json)return w(Y),Y;if(await W0(Y.url,{noBrowser:D.noBrowser,label:"Stripe portal"})==="failed")console.log(z.warn("Could not open browser automatically — copy the URL above."));return Y}function bB(D){if(D.unit_amount==null)return"—";let F=D.currency.toUpperCase(),B=2;try{B=new Intl.NumberFormat("en-US",{style:"currency",currency:F}).resolvedOptions().maximumFractionDigits??2}catch{}let Z=10**B,E=(D.unit_amount/Z).toFixed(B),Y=D.recurring?.interval;return Y?`${E} ${F} / ${Y}`:`${E} ${F}`}var V6=ID(qF(),1),{program:dQ,createCommand:lQ,createArgument:pQ,createOption:aQ,CommanderError:iQ,InvalidArgumentError:Z1,InvalidOptionArgumentError:nQ,Command:rQ,Argument:sQ,Option:oQ,Help:tQ}=V6.default;function V2(D){if(!/^\d+$/.test(D))throw new Z1(`must be a positive integer (got "${D}")`);let F=Number.parseInt(D,10);if(!Number.isSafeInteger(F)||F<1)throw new Z1(`must be a positive integer (got "${D}")`);return F}function u6(D){let F=D.command("billing").description("view + manage your project's subscription");vB(F),hB(F),gB(F),cB(F)}function vB(D){D.command("plans").description("list available subscription plans").option("-p, --project <id>","project id (accepted for parity with other billing commands; not used)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),E=await aD(B,Z.name);if(F.json)return w(E);if(E.length===0){console.log(z.dim("No plans available."));return}let Y=E.flatMap((J)=>(J.prices??[{id:"—",unit_amount:null,currency:"—",recurring:null}]).map((X)=>[J.name,X.id,dB(X),X.recurring?.interval??z.dim("—")]));zD(["plan","price id","price","interval"],Y)})}function hB(D){D.command("show").description("show the project's current subscription (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{projectId:B,env:Z}=await m({flagProjectId:F.project,apiHost:F.apiHost}),{api:E}=await y({apiHost:Z.url,token:F.token,requireAuth:!0}),{data:Y,error:J,status:X}=await E.api.projects({id:B}).subscription.get();if(X===401)throw new f(Z.name);if(J)$(`Failed to fetch subscription: ${k(J)}`);if(F.json)return w(Y??{});let H=Y??{};if(console.log(z.bold("Subscription")),console.log(` ${z.dim("tier".padEnd(8))} ${lB(H.tier)}`),console.log(` ${z.dim("status".padEnd(8))} ${pB(H.status??null)}`),H.subscriptionId)console.log(` ${z.dim("id".padEnd(8))} ${H.subscriptionId}`);if(H.tier==="unknown")console.log(),console.log(z.warn('Server returned tier "unknown". This is a known issue (architecture-review S3) — the subscription may still be active.'))})}function gB(D){D.command("checkout [tier]").description("start a subscription checkout (interactive picker when no tier / --plan)").option("--plan <price-id>","Stripe price id (escape hatch; overrides tier picker)").option("--qty <n>","quantity",V2).option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url,tier?}) and skip browser open").action(async(F,B)=>{let Z=mB(F);if(F&&!Z)$(`Unknown tier "${F}".`,{hint:`Use one of: ${wD.join(", ")} — or pass --plan <price-id>.`});let{projectId:E,env:Y}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Y.url,token:B.token,requireAuth:!0}),X=$0({explicitNoBrowser:B.browser===!1,json:B.json??!1}),H,Q;if(B.plan)H=B.plan;else if(Z){let G=await aD(J,Y.name),K=W2(G,Z),W=K?.prices?.length===1?K.prices[0]:void 0;if(!K||!K.prices?.length)$(`No plan matching tier "${Z}".`,{hint:"List options with `photon billing plans`."});if(!W)$(`Tier "${Z}" has multiple billing intervals.`,{hint:"Pass --plan <price-id> to choose, or omit the tier to use the interactive picker."});H=W.id,Q=Z}else{let G=await aD(J,Y.name),K=await U2(G);H=K.price.id,Q=$2(K.plan.name)}await M2({api:J,projectId:E,priceId:H,quantity:B.qty,envName:Y.name,json:B.json??!1,noBrowser:X,tierLabel:Q})})}function mB(D){if(!D)return;let F=D.trim().toLowerCase();return wD.includes(F)?F:void 0}function cB(D){D.command("manage").alias("portal").description("open the Stripe customer portal for this project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url}) and skip browser open").action(async(F)=>{let{projectId:B,env:Z}=await m({flagProjectId:F.project,apiHost:F.apiHost}),{api:E}=await y({apiHost:Z.url,token:F.token,requireAuth:!0}),Y=$0({explicitNoBrowser:F.browser===!1,json:F.json??!1});await N2({api:E,projectId:B,envName:Z.name,json:F.json??!1,noBrowser:Y})})}function dB(D){if(D.unit_amount==null)return z.dim("—");let F=D.currency.toUpperCase(),B=2;try{B=new Intl.NumberFormat("en-US",{style:"currency",currency:F}).resolvedOptions().maximumFractionDigits??2}catch{}let Z=10**B;return`${(D.unit_amount/Z).toFixed(B)} ${F}`}function lB(D){if(!D)return z.dim("—");if(D==="free")return z.dim(D);if(D==="unknown")return z.yellow(D);return z.green(D)}function pB(D){if(!D)return z.dim("—");switch(D){case"active":return z.green(D);case"past_due":case"unpaid":return z.red(D);case"trialing":return z.cyan(D);case"canceled":return z.dim(D);default:return D}}function A6(D){D.command("config").description("inspect Photon CLI configuration").command("show",{isDefault:!0}).description("dump the active configuration (no secrets printed)").option("--json","output JSON").action(async(B)=>{let Z=await YD(),E=await d0(),Y=process.env.PHOTON_PROJECT_ID?.trim()||null,J={configDir:m0(),currentEnv:{name:Z.name,url:Z.url},activeProject:Y,authedEnvs:E};if(B.json)return w(J);console.log(z.bold("Photon CLI configuration")),console.log();let X=18;H("config dir",J.configDir),H("active backend",`${z.bold(J.currentEnv.name)} ${z.dim(`(${J.currentEnv.url})`)}`),H("active project",Y?`${z.bold(Y)} ${z.dim("(via $PHOTON_PROJECT_ID)")}`:z.dim("(none — pass --project <id> or set $PHOTON_PROJECT_ID)")),H("logged-in keys",E.length>0?E.join(", "):z.dim("none"));function H(Q,G){console.log(` ${z.dim(Q.padEnd(X))} ${G}`)}})}function j6(D){D.command("env").description("show the active backend (set via PHOTON_API_HOST or --api-host)").command("current",{isDefault:!0}).description("print the resolved API host").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").action(async(B)=>{let Z=await YD(B.apiHost);console.log(`${z.bold(Z.name)} ${z.dim(`(${Z.url})`)}`)})}var u2=Symbol.for("better-auth:broadcast-channel"),aB=()=>Math.floor(Date.now()/1000),iB=class{listeners=new Set;name;constructor(D="better-auth.message"){this.name=D}subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}post(D){if(typeof window>"u")return;try{localStorage.setItem(this.name,JSON.stringify({...D,timestamp:aB()}))}catch{}}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};let D=(F)=>{if(F.key!==this.name)return;let B=JSON.parse(F.newValue??"{}");if(B?.event!=="session"||!B?.data)return;this.listeners.forEach((Z)=>Z(B))};return window.addEventListener("storage",D),()=>{window.removeEventListener("storage",D)}}};function U0(D="better-auth.message"){if(!globalThis[u2])globalThis[u2]=new iB(D);return globalThis[u2]}var A2=Symbol.for("better-auth:focus-manager"),nB=class{listeners=new Set;subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}setFocused(D){this.listeners.forEach((F)=>F(D))}setup(){if(typeof window>"u"||typeof document>"u"||typeof window.addEventListener>"u")return()=>{};let D=()=>{if(document.visibilityState==="visible")this.setFocused(!0)};return document.addEventListener("visibilitychange",D,!1),()=>{document.removeEventListener("visibilitychange",D,!1)}}};function E1(){if(!globalThis[A2])globalThis[A2]=new nB;return globalThis[A2]}var j2=Symbol.for("better-auth:online-manager"),rB=class{listeners=new Set;isOnline=typeof navigator<"u"?navigator.onLine:!0;subscribe(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}setOnline(D){this.isOnline=D,this.listeners.forEach((F)=>F(D))}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};let D=()=>this.setOnline(!0),F=()=>this.setOnline(!1);return window.addEventListener("online",D,!1),window.addEventListener("offline",F,!1),()=>{window.removeEventListener("online",D,!1),window.removeEventListener("offline",F,!1)}}};function T2(){if(!globalThis[j2])globalThis[j2]=new rB;return globalThis[j2]}var M0=Symbol("clean");var UD=[],bD=0,I2=4,sB=globalThis.nanostoresGlobal||={epoch:0},N0=(D)=>{let F=[],B={get(){if(!B.lc)B.listen(()=>{})();return B.value},init:D,lc:0,listen(Z){return B.lc=F.push(Z),()=>{for(let Y=bD+I2;Y<UD.length;)if(UD[Y]===Z)UD.splice(Y,I2);else Y+=I2;let E=F.indexOf(Z);if(~E){if(F.splice(E,1),!--B.lc)B.off()}}},notify(Z,E){sB.epoch++;let Y=!UD.length;for(let J of F)UD.push(J,B.value,Z,E);if(Y){for(bD=0;bD<UD.length;bD+=I2)UD[bD](UD[bD+1],UD[bD+2],UD[bD+3]);UD.length=0}},off(){},set(Z){let E=B.value;if(E!==Z)B.value=Z,B.notify(E)},subscribe(Z){let E=B.listen(Z);return Z(B.value),E},value:D};return B[M0]=()=>{F=[],B.lc=0,B.off()},B};var oB=5,Z0=6,L2=10,tB=(D,F,B,Z)=>{if(D.events=D.events||{},!D.events[B+L2])D.events[B+L2]=Z((E)=>{D.events[B].reduceRight((Y,J)=>(J(Y),Y),{shared:{},...E})});return D.events[B]=D.events[B]||[],D.events[B].push(F),()=>{let E=D.events[B],Y=E.indexOf(F);if(E.splice(Y,1),!E.length)delete D.events[B],D.events[B+L2](),delete D.events[B+L2]}};var T6=1000,V0=(D,F)=>{return tB(D,(Z)=>{let E=F(Z);if(E)D.events[Z0].push(E)},oB,(Z)=>{let E=D.listen;D.listen=(...J)=>{if(!D.lc&&!D.active)D.active=!0,Z();return E(...J)};let Y=D.off;D.events[Z0]=[],D.off=()=>{Y(),setTimeout(()=>{if(D.active&&!D.lc){D.active=!1;for(let J of D.events[Z0])J();D.events[Z0]=[]}},T6)};{let J=D[M0];D[M0]=()=>{for(let X of D.events[Z0])X();D.events[Z0]=[],D.active=!1,J()}}return()=>{D.listen=E,D.off=Y}})};var eB=()=>typeof window>"u",R2=(D,F,B,Z)=>{let E=N0({data:null,error:null,isPending:!0,isRefetching:!1,refetch:(X)=>Y(X)}),Y=async(X)=>{return new Promise((H)=>{let Q=typeof Z==="function"?Z({data:E.get().data,error:E.get().error,isPending:E.get().isPending}):Z;B(F,{...Q,query:{...Q?.query,...X?.query},async onSuccess(G){E.set({data:G.data,error:null,isPending:!1,isRefetching:!1,refetch:E.value.refetch}),await Q?.onSuccess?.(G)},async onError(G){let{request:K}=G,W=typeof K.retry==="number"?K.retry:K.retry?.attempts,q=K.retryAttempt||0;if(W&&q<W)return;E.set({error:G.error,data:null,isPending:!1,isRefetching:!1,refetch:E.value.refetch}),await Q?.onError?.(G)},async onRequest(G){let K=E.get();E.set({isPending:K.data===null,data:K.data,error:null,isRefetching:!0,refetch:E.value.refetch}),await Q?.onRequest?.(G)}}).catch((G)=>{E.set({error:G,data:null,isPending:!1,isRefetching:!1,refetch:E.value.refetch})}).finally(()=>{H(void 0)})})};D=Array.isArray(D)?D:[D];let J=!1;for(let X of D)X.subscribe(async()=>{if(eB())return;if(J)await Y();else V0(E,()=>{let H=setTimeout(async()=>{if(!J)await Y(),J=!0},0);return()=>{E.off(),X.off(),clearTimeout(H)}})});return E};var E0=()=>Math.floor(Date.now()/1000),DZ=5;function Y1(D){let{sessionAtom:F,sessionSignal:B,$fetch:Z,options:E={}}=D,Y=E.sessionOptions?.refetchInterval??0,J=E.sessionOptions?.refetchOnWindowFocus??!0,X=E.sessionOptions?.refetchWhenOffline??!1,H={lastSync:0,lastSessionRequest:0,cachedSession:void 0},Q=()=>{return X||T2().isOnline},G=(u)=>{if(!Q())return;if(u?.event==="storage"){H.lastSync=E0(),B.set(!B.get());return}let N=F.get();if(u?.event==="poll"){H.lastSessionRequest=E0(),Z("/get-session").then((M)=>{if(M.error)F.set({...N,data:null,error:M.error});else F.set({...N,data:M.data,error:null});H.lastSync=E0(),B.set(!B.get())}).catch(()=>{});return}if(u?.event==="visibilitychange"){if(E0()-H.lastSessionRequest<DZ)return;H.lastSessionRequest=E0()}if(N?.data===null||N?.data===void 0||u?.event==="visibilitychange")H.lastSync=E0(),B.set(!B.get())},K=(u)=>{U0().post({event:"session",data:{trigger:u},clientId:Math.random().toString(36).substring(7)})},W=()=>{if(Y&&Y>0)H.pollInterval=setInterval(()=>{if(F.get()?.data)G({event:"poll"})},Y*1000)},q=()=>{H.unsubscribeBroadcast=U0().subscribe(()=>{G({event:"storage"})})},C=()=>{if(!J)return;H.unsubscribeFocus=E1().subscribe(()=>{G({event:"visibilitychange"})})},U=()=>{H.unsubscribeOnline=T2().subscribe((u)=>{if(u)G({event:"visibilitychange"})})};return{init:()=>{W(),q(),C(),U(),U0().setup(),E1().setup(),T2().setup()},cleanup:()=>{if(H.pollInterval)clearInterval(H.pollInterval),H.pollInterval=void 0;if(H.unsubscribeBroadcast)H.unsubscribeBroadcast(),H.unsubscribeBroadcast=void 0;if(H.unsubscribeFocus)H.unsubscribeFocus(),H.unsubscribeFocus=void 0;if(H.unsubscribeOnline)H.unsubscribeOnline(),H.unsubscribeOnline=void 0;H.lastSync=0,H.lastSessionRequest=0,H.cachedSession=void 0},triggerRefetch:G,broadcastSessionUpdate:K}}var S2=Object.create(null),u0=(D)=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(D?S2:globalThis),ED=new Proxy(S2,{get(D,F){return u0()[F]??S2[F]},has(D,F){return F in u0()||F in S2},set(D,F,B){let Z=u0(!0);return Z[F]=B,!0},deleteProperty(D,F){if(!F)return!1;let B=u0(!0);return delete B[F],!0},ownKeys(){let D=u0(!0);return Object.keys(D)}});var FZ=typeof process<"u"&&process.env&&"development"||"";function l(D,F){if(typeof process<"u"&&process.env)return process.env[D]??F;if(typeof Deno<"u")return Deno.env.get(D)??F;if(typeof Bun<"u")return Bun.env[D]??F;return F}var BZ=Object.freeze({get BETTER_AUTH_SECRET(){return l("BETTER_AUTH_SECRET")},get AUTH_SECRET(){return l("AUTH_SECRET")},get BETTER_AUTH_TELEMETRY(){return l("BETTER_AUTH_TELEMETRY")},get BETTER_AUTH_TELEMETRY_ID(){return l("BETTER_AUTH_TELEMETRY_ID")},get NODE_ENV(){return l("NODE_ENV","development")},get PACKAGE_VERSION(){return l("PACKAGE_VERSION","0.0.0")},get BETTER_AUTH_TELEMETRY_ENDPOINT(){return l("BETTER_AUTH_TELEMETRY_ENDPOINT","")}});var A0=1,r=4,jD=8,KD=24,I6={eterm:r,cons25:r,console:r,cygwin:r,dtterm:r,gnome:r,hurd:r,jfbterm:r,konsole:r,kterm:r,mlterm:r,mosh:KD,putty:r,st:r,"rxvt-unicode-24bit":KD,terminator:KD,"xterm-kitty":KD},ZZ=new Map(Object.entries({APPVEYOR:jD,BUILDKITE:jD,CIRCLECI:KD,DRONE:jD,GITEA_ACTIONS:KD,GITHUB_ACTIONS:KD,GITLAB_CI:jD,TRAVIS:jD})),EZ=[/ansi/,/color/,/linux/,/direct/,/^con[0-9]*x[0-9]/,/^rxvt/,/^screen/,/^xterm/,/^vt100/,/^vt220/];function J1(){if(l("FORCE_COLOR")!==void 0)switch(l("FORCE_COLOR")){case"":case"1":case"true":return r;case"2":return jD;case"3":return KD;default:return A0}if(l("NODE_DISABLE_COLORS")!==void 0&&l("NODE_DISABLE_COLORS")!==""||l("NO_COLOR")!==void 0&&l("NO_COLOR")!==""||l("TERM")==="dumb")return A0;if(l("TMUX"))return KD;if("TF_BUILD"in ED&&"AGENT_NAME"in ED)return r;if("CI"in ED){for(let{0:D,1:F}of ZZ)if(D in ED)return F;if(l("CI_NAME")==="codeship")return jD;return A0}if("TEAMCITY_VERSION"in ED)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(l("TEAMCITY_VERSION"))!==null?r:A0;switch(l("TERM_PROGRAM")){case"iTerm.app":if(!l("TERM_PROGRAM_VERSION")||/^[0-2]\./.exec(l("TERM_PROGRAM_VERSION"))!==null)return jD;return KD;case"HyperTerm":case"MacTerm":return KD;case"Apple_Terminal":return jD}if(l("COLORTERM")==="truecolor"||l("COLORTERM")==="24bit")return KD;if(l("TERM")){if(/truecolor/.exec(l("TERM"))!==null)return KD;if(/^xterm-256/.exec(l("TERM"))!==null)return jD;let D=l("TERM").toLowerCase();if(I6[D])return I6[D];if(EZ.some((F)=>F.exec(D)!==null))return r}if(l("COLORTERM"))return r;return A0}var MD={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",undim:"\x1B[22m",underscore:"\x1B[4m",blink:"\x1B[5m",reverse:"\x1B[7m",hidden:"\x1B[8m",fg:{black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m"},bg:{black:"\x1B[40m",red:"\x1B[41m",green:"\x1B[42m",yellow:"\x1B[43m",blue:"\x1B[44m",magenta:"\x1B[45m",cyan:"\x1B[46m",white:"\x1B[47m"}},_2=["debug","info","success","warn","error"];function L6(D,F){return _2.indexOf(F)>=_2.indexOf(D)}var YZ={info:MD.fg.blue,success:MD.fg.green,warn:MD.fg.yellow,error:MD.fg.red,debug:MD.fg.magenta},JZ=(D,F,B)=>{let Z=new Date().toISOString();if(B)return`${MD.dim}${Z}${MD.reset} ${YZ[D]}${D.toUpperCase()}${MD.reset} ${MD.bright}[Better Auth]:${MD.reset} ${F}`;return`${Z} ${D.toUpperCase()} [Better Auth]: ${F}`},R6=(D)=>{let F=D?.disabled!==!0,B=D?.level??"warn",Z=D?.disableColors!==void 0?!D.disableColors:J1()!==1,E=(Y,J,X=[])=>{if(!F||!L6(B,Y))return;let H=JZ(Y,J,Z);if(!D||typeof D.log!=="function"){if(Y==="error")console.error(H,...X);else if(Y==="warn")console.warn(H,...X);else console.log(H,...X);return}D.log(Y==="success"?"info":Y,J,...X)};return{...Object.fromEntries(_2.map((Y)=>[Y,(...[J,...X])=>E(Y,J,X)])),get level(){return B}}},S6=R6();function X1(D){return D}function Q1(D){return D.charAt(0).toUpperCase()+D.slice(1)}var XZ=X1({USER_NOT_FOUND:"User not found",FAILED_TO_CREATE_USER:"Failed to create user",FAILED_TO_CREATE_SESSION:"Failed to create session",FAILED_TO_UPDATE_USER:"Failed to update user",FAILED_TO_GET_SESSION:"Failed to get session",INVALID_PASSWORD:"Invalid password",INVALID_EMAIL:"Invalid email",INVALID_EMAIL_OR_PASSWORD:"Invalid email or password",SOCIAL_ACCOUNT_ALREADY_LINKED:"Social account already linked",PROVIDER_NOT_FOUND:"Provider not found",INVALID_TOKEN:"Invalid token",ID_TOKEN_NOT_SUPPORTED:"id_token not supported",FAILED_TO_GET_USER_INFO:"Failed to get user info",USER_EMAIL_NOT_FOUND:"User email not found",EMAIL_NOT_VERIFIED:"Email not verified",PASSWORD_TOO_SHORT:"Password too short",PASSWORD_TOO_LONG:"Password too long",USER_ALREADY_EXISTS:"User already exists.",USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL:"User already exists. Use another email.",EMAIL_CAN_NOT_BE_UPDATED:"Email can not be updated",CREDENTIAL_ACCOUNT_NOT_FOUND:"Credential account not found",SESSION_EXPIRED:"Session expired. Re-authenticate to perform this action.",FAILED_TO_UNLINK_LAST_ACCOUNT:"You can't unlink your last account",ACCOUNT_NOT_FOUND:"Account not found",USER_ALREADY_HAS_PASSWORD:"User already has a password. Provide that to delete the account.",CROSS_SITE_NAVIGATION_LOGIN_BLOCKED:"Cross-site navigation login blocked. This request appears to be a CSRF attack.",VERIFICATION_EMAIL_NOT_ENABLED:"Verification email isn't enabled",EMAIL_ALREADY_VERIFIED:"Email is already verified",EMAIL_MISMATCH:"Email mismatch",SESSION_NOT_FRESH:"Session is not fresh",LINKED_ACCOUNT_ALREADY_EXISTS:"Linked account already exists",INVALID_ORIGIN:"Invalid origin",INVALID_CALLBACK_URL:"Invalid callbackURL",INVALID_REDIRECT_URL:"Invalid redirectURL",INVALID_ERROR_CALLBACK_URL:"Invalid errorCallbackURL",INVALID_NEW_USER_CALLBACK_URL:"Invalid newUserCallbackURL",MISSING_OR_NULL_ORIGIN:"Missing or null Origin",CALLBACK_URL_REQUIRED:"callbackURL is required",FAILED_TO_CREATE_VERIFICATION:"Unable to create verification",FIELD_NOT_ALLOWED:"Field not allowed to be set",ASYNC_VALIDATION_NOT_SUPPORTED:"Async validation is not supported",VALIDATION_ERROR:"Validation Error",MISSING_FIELD:"Field is required"});var vD=class extends Error{constructor(D,F){super(D,F);this.name="BetterAuthError",this.message=D,this.stack=""}};function QZ(D){try{return(new URL(D).pathname.replace(/\/+$/,"")||"/")!=="/"}catch{throw new vD(`Invalid base URL: ${D}. Please provide a valid base URL.`)}}function HZ(D){try{let F=new URL(D);if(F.protocol!=="http:"&&F.protocol!=="https:")throw new vD(`Invalid base URL: ${D}. URL must include 'http://' or 'https://'`)}catch(F){if(F instanceof vD)throw F;throw new vD(`Invalid base URL: ${D}. Please provide a valid base URL.`,{cause:F})}}function j0(D,F="/api/auth"){if(HZ(D),QZ(D))return D;let B=D.replace(/\/+$/,"");if(!F||F==="/")return B;return F=F.startsWith("/")?F:`/${F}`,`${B}${F}`}function _6(D,F){if(!D||D.trim()==="")return!1;if(F==="proto")return D==="http"||D==="https";if(F==="host"){if([/\.\./,/\0/,/[\s]/,/^[.]/,/[<>'"]/,/javascript:/i,/file:/i,/data:/i].some((B)=>B.test(D)))return!1;return/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/.test(D)||/^(\d{1,3}\.){3}\d{1,3}(:[0-9]{1,5})?$/.test(D)||/^\[[0-9a-fA-F:]+\](:[0-9]{1,5})?$/.test(D)||/^localhost(:[0-9]{1,5})?$/i.test(D)}return!1}function k6(D,F,B,Z,E){if(D)return j0(D,F);if(Z!==!1){let X=ED.BETTER_AUTH_URL||ED.NEXT_PUBLIC_BETTER_AUTH_URL||ED.PUBLIC_BETTER_AUTH_URL||ED.NUXT_PUBLIC_BETTER_AUTH_URL||ED.NUXT_PUBLIC_AUTH_URL||(ED.BASE_URL!=="/"?ED.BASE_URL:void 0);if(X)return j0(X,F)}let Y=B?.headers.get("x-forwarded-host"),J=B?.headers.get("x-forwarded-proto");if(Y&&J&&E){if(_6(J,"proto")&&_6(Y,"host"))try{return j0(`${J}://${Y}`,F)}catch(X){}}if(B){let X=GZ(B.url);if(!X)throw new vD("Could not get origin from request. Please provide a valid base URL.");return j0(X,F)}if(typeof window<"u"&&window.location)return j0(window.location.origin,F)}function GZ(D){try{let F=new URL(D);return F.origin==="null"?null:F.origin}catch{return null}}var f6={id:"redirect",name:"Redirect",hooks:{onSuccess(D){if(D.data?.url&&D.data?.redirect){if(typeof window<"u"&&window.location){if(window.location)try{window.location.href=D.data.url}catch{}}}}}};var KZ={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},zZ=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,O6={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:Number.POSITIVE_INFINITY,"-infinity":Number.NEGATIVE_INFINITY},CZ=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function qZ(D){return D instanceof Date&&!isNaN(D.getTime())}function WZ(D){let F=CZ.exec(D);if(!F)return null;let[,B,Z,E,Y,J,X,H,Q,G,K]=F,W=new Date(Date.UTC(parseInt(B,10),parseInt(Z,10)-1,parseInt(E,10),parseInt(Y,10),parseInt(J,10),parseInt(X,10),H?parseInt(H.padEnd(3,"0"),10):0));if(Q){let q=(parseInt(G,10)*60+parseInt(K,10))*(Q==="+"?-1:1);W.setUTCMinutes(W.getUTCMinutes()+q)}return qZ(W)?W:null}function $Z(D,F={}){let{strict:B=!1,warnings:Z=!1,reviver:E,parseDates:Y=!0}=F;if(typeof D!=="string")return D;let J=D.trim();if(J.length>0&&J[0]==='"'&&J.endsWith('"')&&!J.slice(1,-1).includes('"'))return J.slice(1,-1);let X=J.toLowerCase();if(X.length<=9&&X in O6)return O6[X];if(!zZ.test(J)){if(B)throw SyntaxError("[better-json] Invalid JSON");return D}if(Object.entries(KZ).some(([H,Q])=>{let G=Q.test(J);if(G&&Z)console.warn(`[better-json] Detected potential prototype pollution attempt using ${H} pattern`);return G})&&B)throw Error("[better-json] Potential prototype pollution attempt detected");try{return JSON.parse(J,(Q,G)=>{if(Q==="__proto__"||Q==="constructor"&&G&&typeof G==="object"&&"prototype"in G){if(Z)console.warn(`[better-json] Dropping "${Q}" key to prevent prototype pollution`);return}if(Y&&typeof G==="string"){let K=WZ(G);if(K)return K}return E?E(Q,G):G})}catch(H){if(B)throw H;return D}}function P6(D,F={strict:!0}){return $Z(D,F)}function y6(D,F){let B=N0(!1),Z=R2(B,"/get-session",D,{method:"GET"});return V0(Z,()=>{let E=Y1({sessionAtom:Z,sessionSignal:B,$fetch:D,options:F});return E.init(),()=>{E.cleanup()}}),{session:Z,$sessionSignal:B}}function H1(D){if(D===null||typeof D!=="object")return!1;let F=Object.getPrototypeOf(D);if(F!==null&&F!==Object.prototype&&Object.getPrototypeOf(F)!==null)return!1;if(Symbol.iterator in D)return!1;if(Symbol.toStringTag in D)return Object.prototype.toString.call(D)==="[object Module]";return!0}function G1(D,F,B=".",Z){if(!H1(F))return G1(D,{},B,Z);let E={...F};for(let Y of Object.keys(D)){if(Y==="__proto__"||Y==="constructor")continue;let J=D[Y];if(J===null||J===void 0)continue;if(Z&&Z(E,Y,J,B))continue;if(Array.isArray(J)&&Array.isArray(E[Y]))E[Y]=[...J,...E[Y]];else if(H1(J)&&H1(E[Y]))E[Y]=G1(J,E[Y],(B?`${B}.`:"")+Y.toString(),Z);else E[Y]=J}return E}function K1(D){return(...F)=>F.reduce((B,Z)=>G1(B,Z,"",D),{})}var x6=K1(),VK=K1((D,F,B)=>{if(D[F]!==void 0&&typeof B==="function")return D[F]=B(D[F]),!0}),uK=K1((D,F,B)=>{if(Array.isArray(D[F])&&typeof B==="function")return D[F]=B(D[F]),!0});var{defineProperty:UZ,defineProperties:MZ,getOwnPropertyDescriptors:NZ,getOwnPropertySymbols:w6}=Object,VZ=Object.prototype.hasOwnProperty,uZ=Object.prototype.propertyIsEnumerable,b6=(D,F,B)=>(F in D)?UZ(D,F,{enumerable:!0,configurable:!0,writable:!0,value:B}):D[F]=B,ND=(D,F)=>{for(var B in F||(F={}))if(VZ.call(F,B))b6(D,B,F[B]);if(w6){for(var B of w6(F))if(uZ.call(F,B))b6(D,B,F[B])}return D},TD=(D,F)=>MZ(D,NZ(F)),AZ=class extends Error{constructor(D,F,B){super(F||D.toString(),{cause:B});this.status=D,this.statusText=F,this.error=B,Error.captureStackTrace(this,this.constructor)}},jZ=async(D,F)=>{var B,Z,E,Y,J,X;let H=F||{},Q={onRequest:[F==null?void 0:F.onRequest],onResponse:[F==null?void 0:F.onResponse],onSuccess:[F==null?void 0:F.onSuccess],onError:[F==null?void 0:F.onError],onRetry:[F==null?void 0:F.onRetry]};if(!F||!(F==null?void 0:F.plugins))return{url:D,options:H,hooks:Q};for(let G of(F==null?void 0:F.plugins)||[]){if(G.init){let K=await((B=G.init)==null?void 0:B.call(G,D.toString(),F));H=K.options||H,D=K.url}Q.onRequest.push((Z=G.hooks)==null?void 0:Z.onRequest),Q.onResponse.push((E=G.hooks)==null?void 0:E.onResponse),Q.onSuccess.push((Y=G.hooks)==null?void 0:Y.onSuccess),Q.onError.push((J=G.hooks)==null?void 0:J.onError),Q.onRetry.push((X=G.hooks)==null?void 0:X.onRetry)}return{url:D,options:H,hooks:Q}},v6=class{constructor(D){this.options=D}shouldAttemptRetry(D,F){if(this.options.shouldRetry)return Promise.resolve(D<this.options.attempts&&this.options.shouldRetry(F));return Promise.resolve(D<this.options.attempts)}getDelay(){return this.options.delay}},TZ=class{constructor(D){this.options=D}shouldAttemptRetry(D,F){if(this.options.shouldRetry)return Promise.resolve(D<this.options.attempts&&this.options.shouldRetry(F));return Promise.resolve(D<this.options.attempts)}getDelay(D){return Math.min(this.options.maxDelay,this.options.baseDelay*2**D)}};function IZ(D){if(typeof D==="number")return new v6({type:"linear",attempts:D,delay:1000});switch(D.type){case"linear":return new v6(D);case"exponential":return new TZ(D);default:throw Error("Invalid retry strategy")}}var LZ=async(D)=>{let F={},B=async(Z)=>typeof Z==="function"?await Z():Z;if(D==null?void 0:D.auth){if(D.auth.type==="Bearer"){let Z=await B(D.auth.token);if(!Z)return F;F.authorization=`Bearer ${Z}`}else if(D.auth.type==="Basic"){let[Z,E]=await Promise.all([B(D.auth.username),B(D.auth.password)]);if(!Z||!E)return F;F.authorization=`Basic ${btoa(`${Z}:${E}`)}`}else if(D.auth.type==="Custom"){let[Z,E]=await Promise.all([B(D.auth.prefix),B(D.auth.value)]);if(!E)return F;F.authorization=`${Z!=null?Z:""} ${E}`}}return F},RZ=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function SZ(D){let F=D.headers.get("content-type"),B=new Set(["image/svg","application/xml","application/xhtml","application/html"]);if(!F)return"json";let Z=F.split(";").shift()||"";if(RZ.test(Z))return"json";if(B.has(Z)||Z.startsWith("text/"))return"text";return"blob"}function _Z(D){try{return JSON.parse(D),!0}catch(F){return!1}}function z1(D){if(D===void 0)return!1;let F=typeof D;if(F==="string"||F==="number"||F==="boolean"||F===null)return!0;if(F!=="object")return!1;if(Array.isArray(D))return!0;if(D.buffer)return!1;return D.constructor&&D.constructor.name==="Object"||typeof D.toJSON==="function"}function h6(D){try{return JSON.parse(D)}catch(F){return D}}function g6(D){return typeof D==="function"}function kZ(D){if(D==null?void 0:D.customFetchImpl)return D.customFetchImpl;if(typeof globalThis<"u"&&g6(globalThis.fetch))return globalThis.fetch;if(typeof window<"u"&&g6(window.fetch))return window.fetch;throw Error("No fetch implementation found")}async function fZ(D){let F=new Headers(D==null?void 0:D.headers),B=await LZ(D);for(let[Z,E]of Object.entries(B||{}))F.set(Z,E);if(!F.has("content-type")){let Z=OZ(D==null?void 0:D.body);if(Z)F.set("content-type",Z)}return F}function OZ(D){if(z1(D))return"application/json";return null}function PZ(D){if(!(D==null?void 0:D.body))return null;let F=new Headers(D==null?void 0:D.headers);if(z1(D.body)&&!F.has("content-type")){for(let[B,Z]of Object.entries(D==null?void 0:D.body))if(Z instanceof Date)D.body[B]=Z.toISOString();return JSON.stringify(D.body)}if(F.has("content-type")&&F.get("content-type")==="application/x-www-form-urlencoded"){if(z1(D.body))return new URLSearchParams(D.body).toString();return D.body}return D.body}function yZ(D,F){var B;if(F==null?void 0:F.method)return F.method.toUpperCase();if(D.startsWith("@")){let Z=(B=D.split("@")[1])==null?void 0:B.split("/")[0];if(!m6.includes(Z))return(F==null?void 0:F.body)?"POST":"GET";return Z.toUpperCase()}return(F==null?void 0:F.body)?"POST":"GET"}function xZ(D,F){let B;if(!(D==null?void 0:D.signal)&&(D==null?void 0:D.timeout))B=setTimeout(()=>F==null?void 0:F.abort(),D==null?void 0:D.timeout);return{abortTimeout:B,clearTimeout:()=>{if(B)clearTimeout(B)}}}var wZ=class D extends Error{constructor(F,B){super(B||JSON.stringify(F,null,2));this.issues=F,Object.setPrototypeOf(this,D.prototype)}};async function k2(D,F){let B=await D["~standard"].validate(F);if(B.issues)throw new wZ(B.issues);return B.value}var m6=["get","post","put","patch","delete"];var bZ=(D)=>({id:"apply-schema",name:"Apply Schema",version:"1.0.0",async init(F,B){var Z,E,Y,J;let X=((E=(Z=D.plugins)==null?void 0:Z.find((H)=>{var Q;return((Q=H.schema)==null?void 0:Q.config)?F.startsWith(H.schema.config.baseURL||"")||F.startsWith(H.schema.config.prefix||""):!1}))==null?void 0:E.schema)||D.schema;if(X){let H=F;if((Y=X.config)==null?void 0:Y.prefix){if(H.startsWith(X.config.prefix)){if(H=H.replace(X.config.prefix,""),X.config.baseURL)F=F.replace(X.config.prefix,X.config.baseURL)}}if((J=X.config)==null?void 0:J.baseURL){if(H.startsWith(X.config.baseURL))H=H.replace(X.config.baseURL,"")}let Q=X.schema[H];if(Q){let G=TD(ND({},B),{method:Q.method,output:Q.output});if(!(B==null?void 0:B.disableValidation))G=TD(ND({},G),{body:Q.input?await k2(Q.input,B==null?void 0:B.body):B==null?void 0:B.body,params:Q.params?await k2(Q.params,B==null?void 0:B.params):B==null?void 0:B.params,query:Q.query?await k2(Q.query,B==null?void 0:B.query):B==null?void 0:B.query});return{url:F,options:G}}}return{url:F,options:B}}}),c6=(D)=>{async function F(B,Z){let E=TD(ND(ND({},D),Z),{plugins:[...(D==null?void 0:D.plugins)||[],bZ(D||{}),...(Z==null?void 0:Z.plugins)||[]]});if(D==null?void 0:D.catchAllError)try{return await C1(B,E)}catch(Y){return{data:null,error:{status:500,statusText:"Fetch Error",message:"Fetch related error. Captured by catchAllError option. See error property for more details.",error:Y}}}return await C1(B,E)}return F};function vZ(D,F){let{baseURL:B,params:Z,query:E}=F||{query:{},params:{},baseURL:""},Y=D.startsWith("http")?D.split("/").slice(0,3).join("/"):B||"";if(D.startsWith("@")){let K=D.toString().split("@")[1].split("/")[0];if(m6.includes(K))D=D.replace(`@${K}/`,"/")}if(!Y.endsWith("/"))Y+="/";let[J,X]=D.replace(Y,"").split("?"),H=new URLSearchParams(X);for(let[K,W]of Object.entries(E||{})){if(W==null)continue;let q;if(typeof W==="string")q=W;else if(Array.isArray(W)){for(let C of W)H.append(K,C);continue}else q=JSON.stringify(W);H.set(K,q)}if(Z)if(Array.isArray(Z)){let K=J.split("/").filter((W)=>W.startsWith(":"));for(let[W,q]of K.entries()){let C=Z[W];J=J.replace(q,C)}}else for(let[K,W]of Object.entries(Z))J=J.replace(`:${K}`,String(W));if(J=J.split("/").map(encodeURIComponent).join("/"),J.startsWith("/"))J=J.slice(1);let Q=H.toString();if(Q=Q.length>0?`?${Q}`.replace(/\+/g,"%20"):"",!Y.startsWith("http"))return`${Y}${J}${Q}`;return new URL(`${J}${Q}`,Y)}var C1=async(D,F)=>{var B,Z,E,Y,J,X,H,Q;let{hooks:G,url:K,options:W}=await jZ(D,F),q=kZ(W),C=new AbortController,U=(B=W.signal)!=null?B:C.signal,V=vZ(K,W),I=PZ(W),u=await fZ(W),N=yZ(K,W),M=TD(ND({},W),{url:V,headers:u,body:I,method:N,signal:U});for(let b of G.onRequest)if(b){let _=await b(M);if(typeof _==="object"&&_!==null)M=_}if("pipeTo"in M&&typeof M.pipeTo==="function"||typeof((Z=F==null?void 0:F.body)==null?void 0:Z.pipe)==="function"){if(!("duplex"in M))M.duplex="half"}let{clearTimeout:L}=xZ(W,C),S=await q(M.url,M);L();let R={response:S,request:M};for(let b of G.onResponse)if(b){let _=await b(TD(ND({},R),{response:((E=F==null?void 0:F.hookOptions)==null?void 0:E.cloneResponse)?S.clone():S}));if(_ instanceof Response)S=_;else if(typeof _==="object"&&_!==null)S=_.response}if(S.ok){if(M.method==="HEAD")return{data:"",error:null};let _=SZ(S),g={data:null,response:S,request:M};if(_==="json"||_==="text"){let n=await S.text(),JD=(Y=M.jsonParser)!=null?Y:h6;g.data=await JD(n)}else g.data=await S[_]();if(M==null?void 0:M.output){if(M.output&&!M.disableValidation)g.data=await k2(M.output,g.data)}for(let n of G.onSuccess)if(n)await n(TD(ND({},g),{response:((J=F==null?void 0:F.hookOptions)==null?void 0:J.cloneResponse)?S.clone():S}));if(F==null?void 0:F.throw)return g.data;return{data:g.data,error:null}}let O=(X=F==null?void 0:F.jsonParser)!=null?X:h6,i=await S.text(),d=_Z(i),v=d?await O(i):null,FD={response:S,responseText:i,request:M,error:TD(ND({},v),{status:S.status,statusText:S.statusText})};for(let b of G.onError)if(b)await b(TD(ND({},FD),{response:((H=F==null?void 0:F.hookOptions)==null?void 0:H.cloneResponse)?S.clone():S}));if(F==null?void 0:F.retry){let b=IZ(F.retry),_=(Q=F.retryAttempt)!=null?Q:0;if(await b.shouldAttemptRetry(_,S)){for(let n of G.onRetry)if(n)await n(R);let g=b.getDelay(_);return await new Promise((n)=>setTimeout(n,g)),await C1(D,TD(ND({},F),{retryAttempt:_+1}))}}if(F==null?void 0:F.throw)throw new AZ(S.status,S.statusText,d?v:i);return{data:null,error:TD(ND({},v),{status:S.status,statusText:S.statusText})}};var d6=(D,F)=>{let B="credentials"in Request.prototype,Z=k6(D?.baseURL,D?.basePath,void 0,F)??"/api/auth",E=D?.plugins?.flatMap((M)=>M.fetchPlugins).filter((M)=>M!==void 0)||[],Y={id:"lifecycle-hooks",name:"lifecycle-hooks",hooks:{onSuccess:D?.fetchOptions?.onSuccess,onError:D?.fetchOptions?.onError,onRequest:D?.fetchOptions?.onRequest,onResponse:D?.fetchOptions?.onResponse}},{onSuccess:J,onError:X,onRequest:H,onResponse:Q,...G}=D?.fetchOptions||{},K=c6({baseURL:Z,...B?{credentials:"include"}:{},method:"GET",jsonParser(M){if(!M)return null;return P6(M,{strict:!1})},customFetchImpl:fetch,...G,plugins:[Y,...G.plugins||[],...D?.disableDefaultFetchPlugins?[]:[f6],...E]}),{$sessionSignal:W,session:q}=y6(K,D),C=D?.plugins||[],U={},V={$sessionSignal:W,session:q},I={"/sign-out":"POST","/revoke-sessions":"POST","/revoke-other-sessions":"POST","/delete-user":"POST"},u=[{signal:"$sessionSignal",matcher(M){return M==="/sign-out"||M==="/update-user"||M==="/sign-up/email"||M==="/sign-in/email"||M==="/delete-user"||M==="/verify-email"||M==="/revoke-sessions"||M==="/revoke-session"||M==="/change-email"}}];for(let M of C){if(M.getAtoms)Object.assign(V,M.getAtoms?.(K));if(M.pathMethods)Object.assign(I,M.pathMethods);if(M.atomListeners)u.push(...M.atomListeners)}let N={notify:(M)=>{V[M].set(!V[M].get())},listen:(M,L)=>{V[M].subscribe(L)},atoms:V};for(let M of C)if(M.getActions)U=x6(M.getActions?.(K,N,D)??{},U);return{get baseURL(){return Z},pluginsActions:U,pluginsAtoms:V,pluginPathMethods:I,atomListeners:u,$fetch:K,$store:N}};function l6(D){return typeof D==="object"&&D!==null&&"get"in D&&typeof D.get==="function"&&"lc"in D&&typeof D.lc==="number"}function hZ(D,F,B){let Z=F[D],{fetchOptions:E,query:Y,...J}=B||{};if(Z)return Z;if(E?.method)return E.method;if(J&&Object.keys(J).length>0)return"POST";return"GET"}function p6(D,F,B,Z,E){function Y(J=[]){return new Proxy(function(){},{get(X,H){if(typeof H!=="string")return;if(H==="then"||H==="catch"||H==="finally")return;let Q=[...J,H],G=D;for(let K of Q)if(G&&typeof G==="object"&&K in G)G=G[K];else{G=void 0;break}if(typeof G==="function")return G;if(l6(G))return G;return Y(Q)},apply:async(X,H,Q)=>{let G="/"+J.map((u)=>u.replace(/[A-Z]/g,(N)=>`-${N.toLowerCase()}`)).join("/"),K=Q[0]||{},W=Q[1]||{},{query:q,fetchOptions:C,...U}=K,V={...W,...C},I=hZ(G,B,K);return await F(G,{...V,body:I==="GET"?void 0:{...U,...V?.body||{}},query:q||V?.query,method:I,async onSuccess(u){if(await V?.onSuccess?.(u),!E||V.disableSignal)return;let N=E.filter((L)=>L.matcher(G));if(!N.length)return;let M=new Set;for(let L of N){let S=Z[L.signal];if(!S)return;if(M.has(L.signal))continue;M.add(L.signal);let R=S.get();setTimeout(()=>{S.set(!R)},10)}}})}})}return Y()}function q1(D){let{pluginPathMethods:F,pluginsActions:B,pluginsAtoms:Z,$fetch:E,atomListeners:Y,$store:J}=d6(D),X={};for(let[H,Q]of Object.entries(Z))X[`use${Q1(H)}`]=Q;return p6({...B,...X,$fetch:E,$store:J},E,F,Z,Y)}function a6(D){return{authorize(F,B="AND"){let Z=!1;for(let[E,Y]of Object.entries(F)){let J=D[E];if(!J)return{success:!1,error:`You are not allowed to access resource: ${E}`};if(Array.isArray(Y))Z=Y.every((X)=>J.includes(X));else if(typeof Y==="object"){let X=Y;if(X.connector==="OR")Z=X.actions.some((H)=>J.includes(H));else Z=X.actions.every((H)=>J.includes(H))}else throw new vD("Invalid access control request");if(Z&&B==="OR")return{success:Z};if(!Z&&B==="AND")return{success:!1,error:`unauthorized to access resource "${E}"`}}if(Z)return{success:Z};return{success:!1,error:"Not authorized"}},statements:D}}function T0(D){return{newRole(F){return a6(F)},statements:D}}var i6={user:["create","list","set-role","ban","impersonate","delete","set-password","get","update"],session:["list","revoke","delete"]},W1=T0(i6),n6=W1.newRole({user:["create","list","set-role","ban","impersonate","delete","set-password","get","update"],session:["list","revoke","delete"]}),r6=W1.newRole({user:[],session:[]});var $1=()=>{return{id:"device-authorization",$InferServerPlugin:{},pathMethods:{"/device/code":"POST","/device/token":"POST","/device":"GET","/device/approve":"POST","/device/deny":"POST"}}};var s6={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"],team:["create","update","delete"],ac:["create","read","update","delete"]},f2=T0(s6),o6=f2.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"],team:["create","update","delete"],ac:["create","read","update","delete"]}),t6=f2.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"],team:["create","update","delete"],ac:["create","read","update","delete"]}),e6=f2.newRole({organization:[],member:[],invitation:[],team:[],ac:["read"]});var U1="photon-cli",D4="openid profile email";function O2(D){return q1({baseURL:D,plugins:[$1()]})}function F4(D){D.command("login").description("authenticate via the device authorization flow").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("--no-browser","don't auto-open the verification URL").action(async(F)=>{try{await dZ(F)}catch(B){if(B instanceof nD||B instanceof gD)$(B.message);throw B}})}async function dZ({apiHost:D,browser:F=!0}){let B=await YD(D);console.log(z.info(`Authenticating to ${z.bold(B.name)} ${z.dim(`(${B.url})`)}`));let Z=O2(B.url),E;try{E=await Z.device.code({client_id:U1,scope:D4})}catch(U){$(`Could not reach ${B.url} — ${U instanceof Error?U.message:String(U)}`)}if(E.error||!E.data)$(`Failed to start device flow: ${k(E.error)}`);let{device_code:Y,user_code:J,verification_uri:X,verification_uri_complete:H,interval:Q=5,expires_in:G=1800}=E.data;if(console.log(),console.log(` ${z.dim("Visit:")} ${z.underline(z.cyan(X))}`),console.log(` ${z.dim("Code: ")} ${z.bold(J)}`),console.log(),F){let U=H??X;try{await K2(U),console.log(z.dim(` Opened ${U}`))}catch{}}else console.log(z.dim(" --no-browser set; open the URL above manually"));console.log();let K=e8();K.start(`Waiting for approval (polling every ${Q}s)`);let W=await lZ({auth:Z,deviceCode:Y,initialInterval:Q,expiresInSec:G,onSlowDown:(U)=>{K.message(`Server asked us to slow down — polling every ${U}s`)}}).catch((U)=>{throw K.error(U instanceof Error?U.message:"Failed"),U});K.stop("Authorized");let C=(await Z.getSession({fetchOptions:{headers:{Authorization:`Bearer ${W}`}}})).data?.user;if(!C)$("Token issued but session lookup failed — server might be misconfigured.");await V8({accessToken:W,user:{id:C.id,email:C.email,name:C.name},envName:B.name,apiUrl:B.url,issuedAt:new Date().toISOString()}),console.log(),console.log(z.success(`Logged in to ${z.bold(B.name)} as ${z.bold(C.email)}`))}async function lZ(D){let F=D.initialInterval,B=Date.now()+D.expiresInSec*1000;while(Date.now()<B){await new Promise((J)=>setTimeout(J,F*1000));let Z=await D.auth.device.token({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:D.deviceCode,client_id:U1});if(Z.data?.access_token)return Z.data.access_token;let E=pZ(Z.error);if(aZ(Z.error)===429){F+=10,D.onSlowDown(F);continue}switch(E){case"authorization_pending":continue;case"slow_down":F+=5,D.onSlowDown(F);continue;case"access_denied":throw new nD;case"expired_token":throw new gD;default:throw Error(`Device flow error: ${k(Z.error)}`)}}throw new gD}function pZ(D){if(D&&typeof D==="object"&&"error"in D){let F=D.error;return typeof F==="string"?F:void 0}return}function aZ(D){if(D&&typeof D==="object"&&"status"in D){let F=D.status;return typeof F==="number"?F:void 0}return}function B4(D){D.command("logout").description("clear stored credentials for the active backend").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").action(async(F)=>{let B=await YD(F.apiHost),Z=await tD(B.name);if(!Z){console.log(z.dim(`Not logged in to ${z.bold(B.name)} — nothing to do.`));return}try{await O2(Z.apiUrl).signOut({fetchOptions:{headers:{Authorization:`Bearer ${Z.accessToken}`}}})}catch{}await u8(B.name),console.log(z.success(`Logged out of ${z.bold(B.name)}`))})}function Z4(D){D.command("ping").description("hit the Photon Dashboard /api/health endpoint").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-u, --url <url>","raw API URL (bypasses env resolution)").action(async(F)=>{let{api:B,env:Z}=await y({apiHost:F.apiHost,url:F.url});console.log(z.dim(`→ ${Z.url}`));let E=performance.now(),{data:Y,error:J,status:X}=await B.api.health.get(),H=Math.round(performance.now()-E);if(J)console.error(z.error(`${X} (${H}ms): ${k(J)}`)),process.exit(1);console.log(z.success(`${X} (${H}ms): ${JSON.stringify(Y)}`))})}var iZ=["developer","organization"];function Y4(D){let F=D.command("profile").description("view or manage your developer / organization profile");nZ(F),rZ(F),oZ(F)}function nZ(D){D.command("show",{isDefault:!0}).description("show your profile").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,creds:Z,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:Y,error:J}=await B.api.profile.get();if(J){if(J.status===401)throw new f(E.name);$(`Failed to fetch profile: ${k(J)}`)}if(F.json){w({user:Z?.user??null,profile:Y});return}if(Z)console.log(z.bold(Z.user.name)+z.dim(` <${Z.user.email}>`));else console.log(z.dim(`token-authenticated on env ${E.name}`));if(console.log(),!Y){console.log(z.dim("No profile yet.")),console.log(z.hint("Set one up: `photon profile init`."));return}console.log(z.bold(`${Y.type} profile`));let X=[["companyName",Y.companyName],["platforms",Y.platforms],["background",Y.background],["referralSource",Y.referralSource]],H=Math.max(...X.map(([Q])=>Q.length));for(let[Q,G]of X)console.log(` ${z.dim(Q.padEnd(H))} ${eZ(G)}`)})}function rZ(D){D.command("init").description("set up your developer or organization profile").option("--type <type>","developer | organization").option("--platforms <list>","comma-separated platforms you're building on").option("--background <text>","what you're building").option("--company-name <name>","organization: company name").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),E=await B.api.profile.get();if(E.status===401)throw new f(Z.name);if(E.error)$(`Failed to check existing profile: ${k(E.error)}`);if(E.data)$("A profile already exists for this account.",{hint:"Use `photon profile update` to change it."});let Y=await sZ(F);if(await J4(B,Z.name,Y),F.json){w({profile:Y});return}console.log(z.success(`Created ${Y.type} profile.`))})}async function sZ(D){if(!QD())return{type:P2(D.type,{required:!0}),platforms:D.platforms!==void 0?I0(D.platforms):void 0,background:D.background,companyName:D.companyName};Z2(z.cyan("Set up your profile"));let F=P2(D.type);if(!F){let Y=await Y2({message:"What kind of profile?",options:[{value:"developer",label:"Developer",hint:"individual contributor"},{value:"organization",label:"Organization",hint:"company / team"}]});if(t(Y))$("Aborted.");F=Y}let B=D.platforms!==void 0?I0(D.platforms):await tZ("Platforms you're building on (comma-separated)",void 0,!0),Z=await E4("What are you building?",D.background),E=F==="organization"?await E4("Company name",D.companyName):D.companyName;return E2(z.dim("Submitting…")),{type:F,platforms:B.length>0?B:void 0,background:Z,companyName:E}}function oZ(D){D.command("update").alias("edit").description("update your existing profile (preserves unchanged fields)").option("--type <type>","developer | organization").option("--platforms <list>","comma-separated platforms you're building on").option("--background <text>","what you're building").option("--company-name <name>","organization: company name").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{if(!(F.type!==void 0||F.platforms!==void 0||F.background!==void 0||F.companyName!==void 0))$("Nothing to update.",{hint:"Pass at least one field flag — see `photon profile update --help`."});let{api:Z,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),Y=await Z.api.profile.get();if(Y.status===401)throw new f(E.name);if(Y.error)$(`Failed to fetch profile: ${k(Y.error)}`);let J=Y.data;if(!J)$("No profile to update.",{hint:"Create one first: `photon profile init`."});let X={type:F.type!==void 0?P2(F.type,{required:!0}):P2(J.type)??void 0,platforms:F.platforms!==void 0?I0(F.platforms):J.platforms??void 0,background:F.background??J.background??void 0,companyName:F.companyName??J.companyName??void 0};if(await J4(Z,E.name,X),F.json)return w({profile:X});console.log(z.success("Profile updated."))})}async function J4(D,F,B){let Z={};if(B.type!==void 0)Z.type=B.type;if(B.platforms!==void 0)Z.platforms=B.platforms;if(B.background!==void 0)Z.background=B.background;if(B.companyName!==void 0)Z.companyName=B.companyName;let E=await D.api.onboarding.details.post(Z);if(E.status===401)throw new f(F);if(E.error)$(`Failed to save profile: ${k(E.error)}`)}function P2(D,{required:F=!1}={}){if(D===void 0||D===""){if(F)$("--type is required (developer | organization).");return}if(!iZ.includes(D))$(`Unknown profile type "${D}". Use "developer" or "organization".`);return D}async function E4(D,F){if(F!==void 0)return F;let B=await _D({message:D,placeholder:"(skip)"});if(t(B))$("Aborted.");let Z=B?.trim();return Z?Z:void 0}async function tZ(D,F,B=!1){if(F!==void 0)return I0(F);let Z=await _D({message:D,placeholder:B?"(skip)":void 0});if(t(Z))$("Aborted.");return I0(Z??"")}function I0(D){return D.split(",").map((F)=>F.trim()).filter(Boolean)}function eZ(D){if(D===null||D===void 0||D==="")return z.dim("—");if(Array.isArray(D))return D.length>0?D.join(", "):z.dim("—");if(typeof D==="boolean")return D?z.green("yes"):z.dim("no");if(D instanceof Date)return D.toLocaleString();if(typeof D==="object")return JSON.stringify(D);return String(D)}async function iD(D){if(D.yes)return;if(!QD())$("Confirmation required for this destructive action.",{hint:D.fallbackHint??"Pass --yes to confirm."});let F=await B2({message:D.message,initialValue:!1});if(t(F)||!F)$("Aborted.")}var y2=["imessage","whatsapp_business","voice"],H4={owner_phone_missing:{code:"owner_phone_missing",message:"Your project was created without a connected phone. Add a phone number to your Photon account or connect a dedicated line."},shared_line_unavailable:{code:"shared_line_unavailable",message:"We couldn't connect your phone to a shared iMessage line. You can add another phone or connect a dedicated line."},owner_enrollment_failed:{code:"owner_enrollment_failed",message:"We couldn't connect your phone to a shared iMessage line. Try again with another phone or connect a dedicated line."}};function DE(D){return typeof D==="string"&&Object.prototype.hasOwnProperty.call(H4,D)}function FE(D){if(D.warning&&typeof D.warning==="object"){let F=D.warning;if(DE(F.code))return H4[F.code]}return}function G4(D){let F=D.command("projects").alias("project").description("manage your Photon Dashboard projects");BE(F),ZE(F),EE(F),YE(F),QE(F),HE(F),GE(F),KE(F),zE(F),qE(F)}function BE(D){D.command("list",{isDefault:!0}).alias("ls").description("list your projects").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let{api:B,env:Z}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:E,error:Y}=await B.api.projects.get();if(Y){if(Y.status===401)throw new f(Z.name);$(`Failed to list projects: ${k(Y)}`)}let J=C2(E,"projects");if(F.json){w(J);return}if(J.length===0){console.log(z.dim("No projects yet.")),console.log(z.hint("Create one with `photon projects create`."));return}let X=J.map((H)=>[WE(H.id,8),H.name,H.location,K4(H.status),H.platforms.length>0?H.platforms.join(", "):z.dim("—"),new Date(H.updatedAt).toLocaleDateString()]);zD(["id","name","location","status","platforms","updated"],X)})}function ZE(D){D.command("show [id]").alias("get").description("show details for one project (defaults to $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{projectId:Z,env:E}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).get();if(H===401)throw new f(E.name);if(H===404||!X&&!J)$(`Project not found: ${Z}`,{hint:"List your projects with `photon projects ls`."});if(X)$(`Failed to fetch project: ${k(X)}`);if(B.json){w(J);return}if(!J)return;let Q=J;console.log(z.bold(Q.name)+z.dim(` (${Q.id})`)),console.log(),$E([["status",K4(Q.status)],["location",Q.location],["owner",Q.isOwner?z.green("yes"):z.dim("no")],["template",Q.template?"yes":"no"],["observability",Q.observability?"yes":"no"],["slackChannelId",Q.slackChannelId??z.dim("—")],["slackTeamId",Q.slackTeamId??z.dim("—")],["createdAt",new Date(Q.createdAt).toLocaleString()],["updatedAt",new Date(Q.updatedAt).toLocaleString()]])})}function EE(D){D.command("secret [id]").alias("get-secret").description("print the project's Spectrum API secret (defaults to $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{projectId:Z,env:E}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).get();if(H===401)throw new f(E.name);if(H===404||!X&&!J)$(`Project not found: ${Z}`,{hint:"List your projects with `photon projects ls`."});if(X)$(`Failed to fetch project: ${k(X)}`);if(!J)return;if(!J.projectSecret)$("This project has no API secret yet.",{hint:`Generate one with \`photon projects regenerate-secret ${Z}\`.`});if(B.json){w({id:Z,projectSecret:J.projectSecret});return}console.log(J.projectSecret)})}function YE(D){D.command("create").alias("new").description("create a new project").option("-n, --name <name>","project name").option("-l, --location <location>",'location (default: "United States")').option("--platforms <list>",`comma-separated platforms (${y2.join(", ")})`).option("--template","use as template").option("--observability","enable observability").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F)=>{let B=await JE(F),{api:Z,env:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:Y,error:J,status:X}=await Z.api.projects.post({name:B.name,location:B.location,platforms:B.platforms,template:B.template,observability:B.observability});if(X===401)throw new f(E.name);if(J)$(`Failed to create project: ${k(J)}`);if(!Y)$("Server did not return a project result.");let H=Y;if(H.error)$(H.error);if(!H.id)$("Server did not return a project id.");let Q=FE(H);if(F.json){w({id:H.id,name:B.name,env:E.name,...Q?{warning:Q}:{}});return}if(console.log(z.success(`Created ${z.bold(B.name)} ${z.dim(`(${H.id})`)} on ${z.bold(E.name)}`)),B.platforms.length===0)console.log(z.dim(" No platforms enabled.")),console.log(z.dim(" See accepted platform names with `photon projects create --help`.")),console.log(z.dim(` Enable one with \`photon spectrum platforms enable <platform-name> --project '${H.id}'\`.`));if(Q)console.error(z.warn(Q.message));console.log(z.dim(` To make this the active project: export PHOTON_PROJECT_ID='${H.id}'`))})}function M1(D){let F=D.split(",").map((Z)=>Z.trim()).filter(Boolean),B=F.filter((Z)=>!y2.includes(Z));if(B.length>0)$(`Unknown platform(s): ${B.join(", ")}.`,{hint:`Valid platforms: ${y2.join(", ")}.`});return[...new Set(F)]}async function JE(D){if(!QD()){if(!D.name?.trim())$("--name is required in non-interactive mode.",{hint:"Run from a terminal for the interactive prompt, or pass --name <name>."});return{name:D.name.trim(),location:D.location??"United States",platforms:D.platforms!==void 0?M1(D.platforms):[],template:D.template??!1,observability:D.observability??!1}}Z2(z.cyan("Create a new project"));let F=D.name?.trim();if(!F){let J=await _D({message:"Project name",validate:(X)=>X&&X.trim()?void 0:"Project name is required"});if(t(J))$("Aborted.");F=J.trim()}let B=D.location;if(B===void 0){let J=await _D({message:"Location",placeholder:"United States",defaultValue:"United States"});if(t(J))$("Aborted.");B=J||"United States"}let Z=D.platforms!==void 0?M1(D.platforms):M1(await XE(`Platforms (comma-separated: ${y2.join(", ")})`,void 0,!0)),E=D.template??await X4("Use as template?",!1),Y=D.observability??await X4("Enable observability?",!1);return E2(z.dim("Submitting…")),{name:F,location:B,platforms:Z,template:E,observability:Y}}async function XE(D,F,B=!1){if(F!==void 0)return F;let Z=await _D({message:D,placeholder:B?"(skip)":void 0});if(t(Z))$("Aborted.");return Z??""}async function X4(D,F){let B=await B2({message:D,initialValue:F});if(t(B))$("Aborted.");return Boolean(B)}function QE(D){D.command("update [id]").alias("edit").alias("rename").description("rename a project (defaults to $PHOTON_PROJECT_ID)").option("-n, --name <name>","new name").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let Z=B.name?.trim();if(!Z)$("--name is required.",{hint:"Pass a non-empty name, e.g. `photon projects update --name 'New Name'`."});let{projectId:E,env:Y}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Y.url,token:B.token,requireAuth:!0}),{error:X,status:H,data:Q}=await J.api.projects({id:E}).patch({name:Z});if(H===401)throw new f(Y.name);if(X)$(`Failed to update project: ${k(X)}`);let G=Q;if(G.error)$(G.error);if(B.json){w({id:E,name:Z});return}console.log(z.success(`Updated ${z.bold(Z)} ${z.dim(`(${E})`)}`))})}function HE(D){D.command("delete [id]").alias("rm").alias("remove").description("permanently delete a project (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(F,B)=>{let{projectId:Z,env:E}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),J=await Y.api.projects({id:Z}).get();if(J.status===401)throw new f(E.name);if(J.status===404||!J.error&&!J.data)$(`Project not found: ${Z}`,{hint:"Already deleted? `photon projects ls` to confirm."});if(J.error)$(`Failed to look up project: ${k(J.error)}`);if(!J.data)return;let X=J.data;await iD({message:`Delete project ${z.bold(X.name)} (${Z})? This cannot be undone.`,yes:B.yes??!1,fallbackHint:`Pass --yes to delete ${X.name}.`});let{error:H,status:Q}=await Y.api.projects({id:Z}).delete();if(Q===401)throw new f(E.name);if(H)$(`Failed to delete project: ${k(H)}`);if(console.log(z.success(`Deleted ${z.bold(X.name)} ${z.dim(`(${Z})`)}`)),process.env.PHOTON_PROJECT_ID===Z)console.error(z.warn("Active project just deleted. Run `unset PHOTON_PROJECT_ID` to clear."))})}function GE(D){D.command("regenerate-secret [id]").alias("rotate-secret").description("rotate the project's Spectrum API secret (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").option("--json","output JSON").action(async(F,B)=>{let{projectId:Z,env:E}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0});await iD({message:`Rotate the API secret for project ${Z}? Existing integrations using the old secret will stop working immediately.`,yes:B.yes??!1,fallbackHint:"Pass --yes to rotate the secret."});let{data:J,error:X,status:H}=await Y.api.projects({id:Z})["regenerate-secret"].post();if(H===401)throw new f(E.name);if(X)$(`Failed to rotate secret: ${k(X)}`);let Q=J;if(Q.error)$(Q.error);if(!Q.projectSecret)$("Server did not return a new secret.");if(B.json){w({id:Z,projectSecret:Q.projectSecret});return}console.log(z.success(`New secret for ${Z}:`)),console.log(` ${z.bold(Q.projectSecret)}`),xD.warn("This is shown once. Store it somewhere safe — re-rotating is the only way to recover.")})}function KE(D){D.command("open [id]").description("open the project in the dashboard web UI (defaults to $PHOTON_PROJECT_ID)").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("--no-browser","print the URL instead of launching a browser").action(async(F,B)=>{let{projectId:Z,env:E}=await m({flagProjectId:F??B.project,apiHost:B.apiHost}),Y=new URL(`/dashboard/${Z}`,E.url).toString();await W0(Y,{noBrowser:!B.browser,label:"URL"})})}function zE(D){D.command("upgrade [id] [tier]").description("subscribe / pay for a project (smart-routes to Stripe checkout or billing portal)").option("--plan <price-id>","Stripe price id (escape hatch; overrides tier picker)").option("--qty <n>","quantity (default 1)",V2).option("--checkout","force checkout flow (even if currently subscribed)").option("--manage","force Stripe portal (downgrade / cancel / change card)").option("-p, --project <id>","project id (overrides positional [id] and $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--no-browser","print the URL instead of launching a browser").option("--json","output JSON ({action,url,tier?}) and skip browser open").action(async(F,B,Z)=>{if(Z.checkout&&Z.manage)$("--checkout and --manage are mutually exclusive.");let E=F,Y=Q4(B);if(!Y&&E&&CE(E)&&!B)Y=Q4(E),E=void 0;if(B&&!Y)$(`Unknown tier "${B}".`,{hint:`Use one of: ${wD.join(", ")} — or pass --plan <price-id>.`});let{projectId:J,env:X}=await m({flagProjectId:Z.project??E,apiHost:Z.apiHost}),{api:H}=await y({apiHost:X.url,token:Z.token,requireAuth:!0}),Q=$0({explicitNoBrowser:Z.browser===!1,json:Z.json??!1}),G;if(Z.manage)G="manage";else if(Z.checkout||Z.plan||Y)G="checkout";else{let q=await N6(H,J,X.name);if(q.tier==="unknown")$(`Cannot determine the subscription state of project ${J}.`,{hint:"Re-run with --checkout to subscribe, or --manage to open the Stripe portal."});if(G=q.status==="active"||q.status==="past_due"?"manage":"checkout",G==="manage"&&!Z.json)console.log(z.info(`Project ${z.bold(J)} is on ${q.tier??"—"} (${q.status??"—"}). Opening Stripe portal…`)),console.log(z.dim(" To pick a different plan instead, re-run with --checkout."))}if(G==="manage"){await N2({api:H,projectId:J,envName:X.name,json:Z.json??!1,noBrowser:Q});return}let K,W;if(Z.plan)K=Z.plan;else if(Y){let q=await aD(H,X.name),C=W2(q,Y),U=C?.prices?.length===1?C.prices[0]:void 0;if(!C||!C.prices?.length)$(`No plan matching tier "${Y}".`,{hint:"List options with `photon billing plans`."});if(!U)$(`Tier "${Y}" has multiple billing intervals.`,{hint:"Pass --plan <price-id> to choose, or omit the tier to use the interactive picker."});K=U.id,W=Y}else{let q=await aD(H,X.name),C=await U2(q);K=C.price.id,W=$2(C.plan.name)}await M2({api:H,projectId:J,priceId:K,quantity:Z.qty,envName:X.name,json:Z.json??!1,noBrowser:Q,tierLabel:W})})}function CE(D){return wD.includes(D.trim().toLowerCase())}function Q4(D){if(!D)return;let F=D.trim().toLowerCase();return wD.includes(F)?F:void 0}function qE(D){D.command("check-phone <number>").description("check whether a phone number is available on Spectrum").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(F,B)=>{let{api:Z,env:E}=await y({apiHost:B.apiHost,token:B.token,requireAuth:!0}),{data:Y,error:J,status:X}=await Z.api.projects["check-availability"].get({query:{phoneNumber:F}});if(X===401)throw new f(E.name);if(J)$(`Failed to check phone availability: ${k(J)}`);if(B.json){w(Y);return}if(Y.available)console.log(z.success(`${F} is available.`));else console.log(z.warn(`${F} is taken.`))})}function K4(D){switch(D){case"running":return z.green(D);case"paused":return z.yellow(D);case"error":return z.red(D);default:return D}}function WE(D,F){return D.length>F?`${D.slice(0,F)}…`:D}function $E(D){let F=Math.max(...D.map(([B])=>B.length));for(let[B,Z]of D)console.log(` ${z.dim(B.padEnd(F))} ${Z}`)}var UE={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif"},ME=new Set([".svg",".svgz"]),NE=/^\s*(?:<\?xml[\s\S]*?\?>\s*)?(?:<!--[\s\S]*?-->\s*)*<svg(?:\s|>)/i,VE=4100,uE=(D)=>{let F=D.replaceAll("\\","/").split("/").at(-1)??D,B=F.lastIndexOf(".");return B===-1?"":F.slice(B).toLowerCase()},AE=(D)=>NE.test(new TextDecoder().decode(D.subarray(0,VE))),z4=(D,F)=>{if(ME.has(D)||F&&AE(F))$("SVG avatars are not supported.",{hint:"Convert the image to PNG, JPEG, or WebP before uploading."})};async function x2(D){let F=uE(D);z4(F);let B=Bun.file(D);if(!await B.exists())$(`File not found: ${D}`);let Z=new Uint8Array(await B.arrayBuffer());return z4(F,Z),{body:Z,contentType:UE[F]??"application/octet-stream",size:Z.byteLength}}async function w2(D,F,B){console.log(z.dim(`Uploading ${D} (${(B.size/1024).toFixed(1)} KB)…`));let Z=await fetch(F,{method:"PUT",body:B.body,headers:{"Content-Type":B.contentType}});if(!Z.ok)$(`Upload failed: ${Z.status} ${Z.statusText}`)}function C4(D){D.command("avatar").description("manage the Spectrum avatar image").command("upload <file>").description("upload an image as the Spectrum avatar").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(B,Z)=>{let E=await x2(B),{projectId:Y,env:J}=await m({flagProjectId:Z.project,apiHost:Z.apiHost}),{api:X}=await y({apiHost:J.url,token:Z.token,requireAuth:!0}),H=await X.api.projects({id:Y}).spectrum.avatar.upload.post({contentType:E.contentType});if(H.status===401)throw new f(J.name);if(H.error)$(`Failed to get upload URL: ${k(H.error)}`);let Q=H.data;if(Q.error)$(Q.error);if(!Q.uploadUrl||!Q.key)$("Server did not return uploadUrl + key.");await w2(B,Q.uploadUrl,E);let G=await X.api.projects({id:Y}).spectrum.avatar.commit.post({key:Q.key});if(G.status===401)throw new f(J.name);if(G.error)$(`Uploaded, but commit failed: ${k(G.error)}`);let K=G.data;if(K.error)$(K.error);if(!K.avatarUrl)$("Server did not return an avatar URL after commit.");let W=K.avatarUrl;console.log(z.success(`Uploaded avatar from ${B}`)),console.log(z.dim(` URL: ${W}`))})}function q4(D){D.command("profile").description("manage a dedicated iMessage line profile").command("update <line-id>").alias("edit").description("update a line profile name (preserves unset fields)").option("--first-name <name>").option("--last-name <name>").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(Z,E)=>{let Y=E.firstName!==void 0?{firstName:E.firstName,...E.lastName!==void 0?{lastName:E.lastName}:{}}:E.lastName!==void 0?{lastName:E.lastName}:$("Nothing to update.",{hint:"Pass --first-name and/or --last-name."}),{projectId:J,env:X}=await m({flagProjectId:E.project,apiHost:E.apiHost}),{api:H}=await y({apiHost:X.url,token:E.token,requireAuth:!0}),{data:Q,error:G,status:K}=await H.api.projects({id:J}).lines({lineId:Z}).profile.patch(Y);if(K===401)throw new f(X.name);if(G)$(`Failed to update line profile: ${k(G)}`);if(!Q?.succeed)$("Failed to update line profile: empty API response.");if(E.json)return w(Q.data);console.log(z.success(`Updated profile for line ${Z}.`))}),D.command("avatar").description("manage a dedicated iMessage line avatar").command("upload <line-id> <file>").description("upload an image as a line avatar").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(Z,E,Y)=>{let J=await x2(E),{projectId:X,env:H}=await m({flagProjectId:Y.project,apiHost:Y.apiHost}),{api:Q}=await y({apiHost:H.url,token:Y.token,requireAuth:!0}),G=await Q.api.projects({id:X}).lines({lineId:Z}).profile.avatar.upload.post({contentType:J.contentType});if(G.status===401)throw new f(H.name);if(G.error)$(`Failed to get line avatar upload URL: ${k(G.error)}`);if(!G.data?.succeed)$("Failed to get line avatar upload URL: empty API response.");let K=G.data.data;if(!K.uploadUrl||!K.key)$("Server did not return uploadUrl + key.");await w2(E,K.uploadUrl,J);let W=await Q.api.projects({id:X}).lines({lineId:Z}).profile.avatar.commit.post({key:K.key});if(W.status===401)throw new f(H.name);if(W.error)$(`Uploaded, but commit failed: ${k(W.error)}`);if(!W.data?.succeed)$("Uploaded, but commit failed: empty API response.");let q=W.data.data.avatarUrl;if(!q)$("Server did not return an avatar URL after commit.");console.log(z.success(`Uploaded avatar for line ${Z}.`)),console.log(z.dim(` URL: ${q}`))})}function W4(D){let F=D.command("lines").description("manage Spectrum phone lines on a project");q4(F),F.command("list",{isDefault:!0}).alias("ls").description("list lines for the active project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).lines.get();if(H===401)throw new f(E.name);if(X)$(`Failed to list lines: ${k(X)}`);let Q=q2(J,"lines");if(B.json)return w(Q);if(Q.length===0){console.log(z.dim("No lines yet.")),console.log(z.hint("Add one with `photon spectrum lines add`."));return}let G=Q.map((K)=>[jE(K.id,10),K.platform??"—",("phoneNumber"in K?K.phoneNumber:K.displayPhoneNumber)??z.dim("—"),K.status??z.dim("—")]);zD(["id","platform","number","status"],G)}),F.command("add").alias("create").description("add a new line (currently iMessage only)").option("--platform <name>","platform (only 'imessage' supported today)","imessage").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{if(B.platform!=="imessage")$(`Unsupported platform "${B.platform}".`,{hint:"The server currently only accepts 'imessage'."});let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).lines.post({platform:"imessage"});if(H===401)throw new f(E.name);if(X)$(`Failed to add line: ${k(X)}`);let Q=J;if(Q.error)$(Q.error);if(B.json)return w(Q.line??{});console.log(z.success(`Added ${Q.line?.platform??"imessage"} line${Q.line?.id?z.dim(` (${Q.line.id})`):""}`))}),F.command("remove <line-id>").alias("rm").alias("delete").description("remove a line").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(B,Z)=>{let{projectId:E,env:Y}=await m({flagProjectId:Z.project,apiHost:Z.apiHost}),{api:J}=await y({apiHost:Y.url,token:Z.token,requireAuth:!0});await iD({message:`Remove line ${B} from project ${E}?`,yes:Z.yes??!1,fallbackHint:`Pass --yes to remove line ${B}.`});let{error:X,status:H}=await J.api.projects({id:E}).lines({lineId:B}).delete();if(H===401)throw new f(Y.name);if(X)$(`Failed to remove line: ${k(X)}`);console.log(z.success(`Removed line ${B}`))})}function jE(D,F){return D.length>F?`${D.slice(0,F)}…`:D}var TE={code:"imessage_connection_missing",message:"iMessage was enabled without a connected phone. Add another phone or connect a dedicated line."};function IE(D){if(!(D&&typeof D==="object"))return;return D.code==="imessage_connection_missing"?TE:void 0}function U4(D){let F=D.command("platforms").description("manage Spectrum platform integrations on a project");F.command("list",{isDefault:!0}).alias("ls").description("list platforms and their enabled state").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).platforms.get();if(H===401)throw new f(E.name);if(X)$(`Failed to list platforms: ${k(X)}`);let Q=M6(J,"platform map");if(B.json)return w(Q);let G=Object.entries(Q);if(G.length===0){console.log(z.dim("No platforms configured for this project."));return}let K=G.sort(([W],[q])=>W.localeCompare(q)).map(([W,q])=>[W,q?z.green("on"):z.dim("off")]);zD(["platform","state"],K)}),F.command("enable <name>").description("enable a platform").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B,Z)=>{await $4(B,!0,Z)}),F.command("disable <name>").description("disable a platform").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B,Z)=>{await $4(B,!1,Z)})}async function $4(D,F,B){let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).platforms.toggle.post({platformId:D,enabled:F});if(H===401)throw new f(E.name);if(X)$(`Failed to ${F?"enable":"disable"} ${D}: ${k(X)}`);if(!J)$("Server did not return a platform result.");let Q=J;if(Q.error)$(Q.error,{hint:Q.error==="Unsupported platform"?"Run `photon spectrum platforms ls` to see available platforms.":void 0});let G=D==="imessage"&&F?IE(Q.warning):void 0;if(B.json)return w(G?{platforms:Q.platforms??{},warning:G}:Q.platforms??{});if(console.log(z.success(`${F?"Enabled":"Disabled"} ${z.bold(D)}`)),G)console.error(z.warn(G.message))}function M4(D){let F=D.command("profile").description("view or update the Spectrum profile");F.command("show",{isDefault:!0}).description("show the Spectrum profile").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).spectrum.profile.get();if(H===401)throw new f(E.name);if(X)$(`Failed to fetch Spectrum profile: ${k(X)}`);if(B.json)return w(J??{});if(!J||typeof J!=="object"){console.log(z.dim("No Spectrum profile."));return}let Q=Object.entries(J).filter(([K])=>!["id","projectId"].includes(K));if(Q.length===0){console.log(z.dim("Empty Spectrum profile."));return}let G=Math.max(...Q.map(([K])=>K.length));for(let[K,W]of Q)console.log(` ${z.dim(K.padEnd(G))} ${LE(W)}`)}),F.command("update").alias("edit").description("update the Spectrum profile (preserves unset fields)").option("--first-name <name>").option("--last-name <name>").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{if(!(B.firstName!==void 0||B.lastName!==void 0))$("Nothing to update.",{hint:"Pass at least one of --first-name / --last-name."});let{projectId:E,env:Y}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:J}=await y({apiHost:Y.url,token:B.token,requireAuth:!0}),X={};if(B.firstName!==void 0)X.firstName=B.firstName;if(B.lastName!==void 0)X.lastName=B.lastName;let{data:H,error:Q,status:G}=await J.api.projects({id:E}).spectrum.profile.patch(X);if(G===401)throw new f(Y.name);if(Q)$(`Failed to update Spectrum profile: ${k(Q)}`);let K=H;if(K.error)$(K.error);if(B.json)return w(K.profile??{});console.log(z.success("Spectrum profile updated."))}),F.command("sync").description("sync the project profile to every dedicated iMessage line").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).spectrum.profile.sync.post();if(H===401)throw new f(E.name);if(X)$(`Failed to trigger Spectrum profile sync: ${k(X)}`);if(!J?.succeed)$("Failed to trigger Spectrum profile sync: empty API response.");if(B.json){w(J.data);return}let{targetedLineCount:Q}=J.data;console.log(z.success(`Profile synced. ${Q} ${Q===1?"line":"lines"} updated.`))})}function LE(D){if(D===null||D===void 0||D==="")return z.dim("—");if(typeof D==="boolean")return D?z.green("yes"):z.dim("no");if(typeof D==="object")return JSON.stringify(D);return String(D)}function V4(D){let F=D.command("users").description("manage Spectrum users on a project");F.command("list",{isDefault:!0}).alias("ls").description("list Spectrum users for the active project").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),{data:J,error:X,status:H}=await Y.api.projects({id:Z}).spectrum.users.get();if(H===401)throw new f(E.name);if(X)$(`Failed to list users: ${k(X)}`);let Q=q2(J,"users");if(B.json)return w(Q);if(Q.length===0){console.log(z.dim("No Spectrum users yet.")),console.log(z.hint("Add one with `photon spectrum users add`."));return}let G=Q.map((K)=>[OE(K.id,10),N4(K),K.email??z.dim("—"),K.phoneNumber??z.dim("—")]);zD(["id","name","email","phone"],G)}),F.command("add").alias("create").description("add a Spectrum user to the active project").option("--first-name <name>","first name").option("--last-name <name>","last name").option("--email <email>","email address").option("--phone <number>","phone number (E.164)").option("--invite","send an onboarding invite to this user").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("--json","output JSON").action(async(B)=>{let{projectId:Z,env:E}=await m({flagProjectId:B.project,apiHost:B.apiHost}),{api:Y}=await y({apiHost:E.url,token:B.token,requireAuth:!0}),J=await fE(B),{data:X,error:H,status:Q}=await Y.api.projects({id:Z}).spectrum.users.post({firstName:J.firstName,lastName:J.lastName,email:J.email,phoneNumber:J.phone,sendInvite:B.invite??!1});if(Q===401)throw new f(E.name);if(H)N1(H,B.json??!1);let G=RE(X);if(!G)N1("Server did not return a valid Spectrum user result.",B.json??!1);if("error"in G)N1({code:"shared_user_create_failed",message:G.error},B.json??!1);if(B.json)return w(G.user);let K=G.user;if(console.log(z.success(`Added ${N4(K)} ${z.dim(`(${K.id})`)}`)),B.invite)console.log(z.dim(" Invite sent."))}),F.command("remove <user-id>").alias("rm").alias("delete").description("remove a Spectrum user").option("-p, --project <id>","project id (overrides $PHOTON_PROJECT_ID)").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").option("-y, --yes","skip confirmation").action(async(B,Z)=>{let{projectId:E,env:Y}=await m({flagProjectId:Z.project,apiHost:Z.apiHost}),{api:J}=await y({apiHost:Y.url,token:Z.token,requireAuth:!0});await iD({message:`Remove user ${B} from project ${E}?`,yes:Z.yes??!1,fallbackHint:`Pass --yes to remove user ${B}.`});let{error:X,status:H}=await J.api.projects({id:E}).spectrum.users({userId:B}).delete();if(H===401)throw new f(Y.name);if(X)$(`Failed to remove user: ${k(X)}`);console.log(z.success(`Removed user ${B}`))})}function RE(D){if(!(D&&typeof D==="object")||Array.isArray(D))return null;let F=D;if(typeof F.error==="string")return{error:F.error};if(F.success!==!0||!(F.user&&typeof F.user==="object")||Array.isArray(F.user)||typeof F.user.id!=="string")return null;return{success:!0,user:F.user}}function SE(D){return D==="imessage_not_enabled"||D==="shared_line_unavailable"||D==="shared_user_create_failed"}function _E(D){let F=[D],B=new Set;while(F.length>0){let Z=F.shift();if(!(Z&&typeof Z==="object")||B.has(Z))continue;B.add(Z);let E=Z;if(SE(E.code)&&typeof E.message==="string")return{code:E.code,message:E.message};for(let Y of["value","message","error","cause"])if(E[Y]&&typeof E[Y]==="object")F.push(E[Y])}return null}var kE="This phone couldn't be connected to a shared iMessage line. Try another phone or connect a dedicated line.";function N1(D,F){let B=_E(D)??{code:"shared_user_create_failed",message:k(D)},Z=B.code==="shared_line_unavailable"?{...B,message:kE}:B;if(F)w({error:Z}),process.exit(1);$(`Failed to add user: ${Z.message}`)}async function fE(D){if(!QD()){let F=[];if(!D.firstName)F.push("--first-name");if(!D.lastName)F.push("--last-name");if(!D.email)F.push("--email");if(!D.phone)F.push("--phone");if(F.length>0)$(`Missing required flags in non-interactive mode: ${F.join(", ")}`);return{firstName:D.firstName,lastName:D.lastName,email:D.email,phone:D.phone}}return{firstName:D.firstName??await b2("First name"),lastName:D.lastName??await b2("Last name"),email:D.email??await b2("Email"),phone:D.phone??await b2("Phone (E.164, e.g. +14155551234)")}}async function b2(D){let F=await _D({message:D,validate:(B)=>B&&B.trim()?void 0:"Required"});if(t(F))$("Aborted.");return F.trim()}function N4(D){let F=[D.firstName,D.lastName].filter(Boolean);return F.length>0?F.join(" "):z.dim("(no name)")}function OE(D,F){return D.length>F?`${D.slice(0,F)}…`:D}function u4(D){let F=D.command("spectrum").description("manage Spectrum users, lines, platforms, and profile");M4(F),V4(F),W4(F),U4(F),C4(F)}function A4(D){D.command("update").description("update Photon to the latest release").option("--check","check for an update without installing it").option("--force","reinstall even when this version is current").option("--installer <name>","override package-manager detection (npm, pnpm, yarn Classic, bun)").option("--json","output machine-readable JSON").action(async(F)=>{if(F.check&&F.force)throw Error("--check and --force cannot be used together.");let B=F.installer?n3(F.installer):void 0;if(!F.json)console.log(z.info(F.check?"Checking for Photon updates…":"Updating Photon…"));let Z=await s3({check:F.check,force:F.force,installer:B,quiet:F.json});if(F.json){w(Z);return}if(Z.status==="up-to-date"){console.log(z.success(`Photon ${Z.currentVersion} is up to date.`));return}if(Z.status==="update-available"){console.log(z.warn(`Update available: ${Z.currentVersion} → ${Z.latestVersion}`)),console.log(z.hint(" Run `photon update` to install it."));return}if(Z.status==="reinstalled"){console.log(z.success(`Reinstalled Photon ${Z.currentVersion} with ${Z.installer}.`));return}console.log(z.success(`Updated Photon ${Z.currentVersion} → ${Z.latestVersion} with ${Z.installer}.`))})}function T4(D){D.command("whoami").description("show the user authenticated for the active backend").option("--api-host <url>","API host URL (defaults to PHOTON_API_HOST or built-in production)").option("-t, --token <token>","API token (overrides stored creds)").action(async(F)=>{let{api:B,env:Z,creds:E}=await y({apiHost:F.apiHost,token:F.token,requireAuth:!0}),{data:Y,error:J,status:X}=await B.api.profile.get();if(X===401)throw new f(Z.name);if(J)$(`Failed to fetch profile: ${k(J)}`);if(!E){if(console.log(z.dim(`authenticated via token on backend ${Z.name} (${Z.url})`)),Y&&typeof Y==="object"){let Q=j4(Y);if(Q)console.log(z.dim(`profile: ${Q}`))}return}let H=E.user;if(console.log(z.bold(H.name)+z.dim(` <${H.email}>`)),console.log(z.dim(`backend: ${Z.name} (${Z.url})`)),console.log(z.dim(`signed in: ${new Date(E.issuedAt).toLocaleString()}`)),Y&&typeof Y==="object"){let Q=j4(Y);if(Q)console.log(z.dim(`profile: ${Q}`))}})}function j4(D){if(!D||typeof D!=="object")return null;let F=D;if(F.type==="developer"||F.type==="organization")return F.type;return null}function I4(){let D=new W8().name("photon").description("Photon CLI — bring your agents to any interface").version(ZD.version,"-v, --version","output the current version").option("--debug","verbose output incl. HTTP request/response").hook("preAction",(F)=>{let B=F.opts();S8(!!B.debug)});return Z4(D),j6(D),F4(D),B4(D),T4(D),A4(D),Y4(D),G4(D),u4(D),u6(D),A8(D),A6(D),D}if(!r3(process.argv))A3();var PE=I4();PE.parseAsync(process.argv).catch(yE);function yE(D){if(D instanceof Y0||D instanceof f){let F=D.envName==="production"?"":` --api-host <url> # for "${D.envName}"`;$(D.message,{hint:`Run \`photon login${F}\`.`})}if(D instanceof nD)$(D.message,{hint:"Re-run `photon login` if this was unintentional."});if(D instanceof gD)$(D.message,{hint:"Re-run `photon login` and approve more quickly."});if(D instanceof Error){if(/Unable to connect|fetch failed|ECONNREFUSED/i.test(D.message))$(D.message,{hint:"Check your connection, or set PHOTON_API_HOST / pass --api-host <url> to target a reachable backend."});$(D.message)}$(String(D))}
|