dodopayments-cli 3.0.0 → 3.0.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/dist/index.js CHANGED
@@ -1,6 +1,57 @@
1
1
  #!/usr/bin/env node
2
+ if (typeof Bun === 'undefined') {
3
+ const { spawnSync } = await import('node:child_process');
4
+ const { existsSync } = await import('node:fs');
5
+ const { fileURLToPath } = await import('node:url');
6
+ const path = await import('node:path');
7
+ const os = await import('node:os');
8
+
9
+ const scriptPath = fileURLToPath(import.meta.url);
10
+ const isWindows = process.platform === 'win32';
11
+
12
+ const which = spawnSync(isWindows ? 'where' : 'which', ['bun'], { encoding: 'utf8' });
13
+ let bun = null;
14
+ if (which.status === 0 && which.stdout) {
15
+ const first = which.stdout.split(/\r?\n/).find(Boolean);
16
+ if (first && existsSync(first)) bun = first;
17
+ }
18
+ if (!bun) {
19
+ const candidates = [
20
+ path.join(os.homedir(), '.bun', 'bin', isWindows ? 'bun.exe' : 'bun'),
21
+ '/usr/local/bin/bun',
22
+ '/opt/homebrew/bin/bun',
23
+ ];
24
+ for (const c of candidates) {
25
+ if (existsSync(c)) { bun = c; break; }
26
+ }
27
+ }
28
+
29
+ if (!bun) {
30
+ process.stderr.write(
31
+ 'dodopayments-cli requires the Bun runtime when installed via npm/bun.\n' +
32
+ '\n' +
33
+ 'Install Bun: https://bun.com/docs/installation\n' +
34
+ 'Or download a standalone binary (no runtime required):\n' +
35
+ ' https://github.com/dodopayments/dodopayments-cli/releases\n'
36
+ );
37
+ process.exit(1);
38
+ }
39
+
40
+ const child = spawnSync(bun, [scriptPath, ...process.argv.slice(2)], {
41
+ stdio: 'inherit',
42
+ env: process.env,
43
+ });
44
+ if (child.error) {
45
+ process.stderr.write('Failed to launch bun: ' + child.error.message + '\n');
46
+ process.exit(1);
47
+ }
48
+ if (typeof child.signal === 'string' && child.signal) {
49
+ process.kill(process.pid, child.signal);
50
+ }
51
+ process.exit(child.status ?? 0);
52
+ }
2
53
  // @bun
3
- var au=Object.create;var{getPrototypeOf:_u,defineProperty:cQ,getOwnPropertyNames:Yu}=Object;var Qu=Object.prototype.hasOwnProperty;function Iu(A){return this[A]}var Ju,Xu,QF=(A,q,g)=>{var F=A!=null&&typeof A==="object";if(F){var E=q?Ju??=new WeakMap:Xu??=new WeakMap,K=E.get(A);if(K)return K}g=A!=null?au(_u(A)):{};let H=q||!A||!A.__esModule?cQ(g,"default",{value:A,enumerable:!0}):g;for(let j of Yu(A))if(!Qu.call(H,j))cQ(H,j,{get:Iu.bind(A,j),enumerable:!0});if(F)E.set(A,H);return H};var ZA=(A,q)=>()=>(q||A((q={exports:{}}).exports,q),q.exports);var Mu=(A)=>A;function Nu(A,q){this[A]=Mu.bind(null,q)}var Cq=(A,q)=>{for(var g in q)cQ(A,g,{get:q[g],enumerable:!0,configurable:!0,set:Nu.bind(q,g)})};var T=(A,q)=>()=>(A&&(q=A(A=0)),q);var pq=(A)=>Promise.all(A),Qg=import.meta.require;var ZE="3.0.0";var Nj=()=>{};var _P=ZA((v_A,Su)=>{Su.exports=Qg("./keytar-4z5sa3wk.node")});var QP=ZA((C_A,YP)=>{var n$=_P();function IF(A,q){if(!A||A.length<=0)throw Error(q+" is required.")}YP.exports={getPassword:function(A,q){return IF(A,"Service"),IF(q,"Account"),n$.getPassword(A,q)},setPassword:function(A,q,g){return IF(A,"Service"),IF(q,"Account"),IF(g,"Password"),n$.setPassword(A,q,g)},deletePassword:function(A,q){return IF(A,"Service"),IF(q,"Account"),n$.deletePassword(A,q)},findPassword:function(A){return IF(A,"Service"),n$.findPassword(A)},findCredentials:function(A){return IF(A,"Service"),n$.findCredentials(A)}}});import Vu from"os";import IP from"path";import tQ from"fs";function JP(A){QG=A}async function XP(){if(tQ.existsSync(iQ))try{let A=tQ.readFileSync(iQ,"utf-8"),q=JSON.parse(A);for(let g of Sj){let F=q[g];if(F)await KH.default.setPassword(Wj,g,F)}}catch{}finally{tQ.rmSync(iQ,{force:!0})}}function uQ(A){return Sj.filter((q)=>{let g=A[q];return typeof g==="string"&&g.length>0})}async function MP(A){if(uQ(A).length===0){await l$();return}for(let g of Sj){let F=A[g];if(F)await KH.default.setPassword(Wj,g,F);else await KH.default.deletePassword(Wj,g)}}async function d$(){await XP();for(let A of Sj)if(await KH.default.getPassword(Wj,A))return!0;return!1}async function IG(){await XP();let A={},q=!1;for(let g of Sj){let F=await KH.default.getPassword(Wj,g);if(F)A[g]=F,q=!0}if(!q)throw Error("CONFIG_NOT_FOUND");return A}async function NP(A,q){let g={};if(await d$())try{g=await IG()}catch{g={}}g[A]=q,await MP(g)}async function l$(){for(let A of Sj)await KH.default.deletePassword(Wj,A)}async function WP(A){if(!await d$())return{hadInvalidConfig:!1,removedModes:[]};let q;try{q=await IG()}catch{return await l$(),{hadInvalidConfig:!0,removedModes:[]}}let g=uQ(q);if(A==="all")return await l$(),{hadInvalidConfig:!1,removedModes:g};if(!Object.prototype.hasOwnProperty.call(q,A))return{hadInvalidConfig:!1,removedModes:[]};return delete q[A],await MP(q),{hadInvalidConfig:!1,removedModes:[A]}}async function JF(A,q=!0){if(QG){let K=await IG();return{mode:QG,apiKey:K[QG]}}if(!await d$())throw Error("Sign in first. Run /login to get started.");let g;try{g=await IG()}catch{throw await l$(),Error("Couldn't load credentials. Run /login to retry.")}let F=uQ(g);if(F.length===0)throw await l$(),Error("No valid credentials. Run /login to retry.");if(F.length===1||!q){let K=F[0];return{mode:K,apiKey:g[K]}}if(!A)throw Error("Multiple environments configured. Run the CLI without arguments to choose one.");let E=await A.promptSelect("Environment",F.map((K)=>({label:K==="test_mode"?"Test Mode":"Live Mode",value:K})));return{mode:E,apiKey:g[E]}}var KH,Wj="dodopayments-cli",xu,iQ,Sj,QG=null;var HH=T(()=>{KH=QF(QP(),1),xu=IP.join(Vu.homedir(),".dodopayments"),iQ=IP.join(xu,"api-key"),Sj=["test_mode","live_mode"]});var VP="./highlights-ghv9g403.scm";var SP=()=>{};var TP="./tree-sitter-javascript-nd0q4pe9.wasm";var xP=()=>{};var RP="./highlights-eq9cgrbb.scm";var PP=()=>{};var wP="./tree-sitter-typescript-zxjzwt75.wasm";var hP=()=>{};var zP="./highlights-r812a2qc.scm";var BP=()=>{};var kP="./tree-sitter-markdown-411r6y9b.wasm";var bP=()=>{};var vP="./injections-73j83es3.scm";var DP=()=>{};var fP="./highlights-x6tmsnaa.scm";var CP=()=>{};var yP="./tree-sitter-markdown_inline-j5349f42.wasm";var cP=()=>{};var iP="./highlights-hk7bwhj4.scm";var tP=()=>{};var mP="./tree-sitter-zig-e78zbjpm.wasm";var uP=()=>{};import{EventEmitter as lu}from"events";import{Buffer as Fm}from"buffer";import{Buffer as CG}from"buffer";import{EventEmitter as ym}from"events";import{resolve as TE,dirname as PE}from"path";import{fileURLToPath as RE}from"url";import{resolve as F5,isAbsolute as mm,parse as nm}from"path";import{existsSync as lm}from"fs";import{basename as dm,join as rm}from"path";import K5 from"os";import HK from"path";import{EventEmitter as em}from"events";import H5 from"path";import{readFile as AR,writeFile as qR,mkdir as gn}from"fs/promises";import*as Xq from"path";import{mkdir as j5,readFile as oQ,writeFile as sQ}from"fs/promises";import*as YH from"path";import{readdir as En}from"fs/promises";import{mkdir as Un,writeFile as $n}from"fs/promises";import{dirname as On}from"path";import{fileURLToPath as Zn}from"url";import{fileURLToPath as Dn}from"url";import{existsSync as gl,writeFileSync as El}from"fs";import{EventEmitter as Fl}from"events";import{EventEmitter as Pl}from"events";import Bl from"util";import{EventEmitter as zl}from"events";import{EventEmitter as IR}from"events";import{Console as bl}from"console";import kl from"fs";import Dl from"path";import k5 from"util";import{Writable as vl}from"stream";import{EventEmitter as Cl}from"events";import{EventEmitter as SR}from"events";function cu(A,q){this[A]=fu.bind(null,q)}function mu(A){function q(E,K,H){let j=E[K];E[K]=function(){for(var U=arguments.length,$=Array(U),Z=0;Z<U;Z++)$[Z]=arguments[Z];return H.call(this,j,...$)}}for(let E of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let K={[Pg.Point]:A.Node.prototype[E],[Pg.Percent]:A.Node.prototype[`${E}Percent`],[Pg.Auto]:A.Node.prototype[`${E}Auto`]};q(A.Node.prototype,E,function(H){for(var j=arguments.length,U=Array(j>1?j-1:0),$=1;$<j;$++)U[$-1]=arguments[$];let Z=U.pop(),G,L;if(Z==="auto")G=Pg.Auto,L=void 0;else if(typeof Z==="object")G=Z.unit,L=Z.valueOf();else if(G=typeof Z==="string"&&Z.endsWith("%")?Pg.Percent:Pg.Point,L=parseFloat(Z),Z!==void 0&&!Number.isNaN(Z)&&Number.isNaN(L))throw Error(`Invalid value ${Z} for ${E}`);if(!K[G])throw Error(`Failed to execute "${E}": Unsupported unit '${Z}'`);if(L!==void 0)return K[G].call(this,...U,L);else return K[G].call(this,...U)})}function g(E){return A.MeasureCallback.implement({measure:function(){let{width:K,height:H}=E(...arguments);return{width:K??NaN,height:H??NaN}}})}q(A.Node.prototype,"setMeasureFunc",function(E,K){if(K)return E.call(this,g(K));else return this.unsetMeasureFunc()});function F(E){return A.DirtiedCallback.implement({dirtied:E})}return q(A.Node.prototype,"setDirtiedFunc",function(E,K){E.call(this,F(K))}),q(A.Config.prototype,"free",function(){A.Config.destroy(this)}),q(A.Node,"create",(E,K)=>{return K?A.Node.createWithConfig(K):A.Node.createDefault()}),q(A.Node.prototype,"free",function(){A.Node.destroy(this)}),q(A.Node.prototype,"freeRecursive",function(){for(let E=0,K=this.getChildCount();E<K;++E)this.getChild(0).freeRecursive();this.free()}),q(A.Node.prototype,"calculateLayout",function(E){let K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:wE.LTR;return E.call(this,K,H,j)}),{Config:A.Config,Node:A.Node,...uu}}function RG(A){return typeof A==="string"&&f5.includes(A)}function GK(A,q="single"){if(RG(A))return A;if(A!==void 0&&A!==null)console.warn(`Invalid borderStyle "${A}", falling back to "${q}". Valid values are: ${f5.join(", ")}`);return q}function J1(A){let q=[];if(A.top)q.push("top");if(A.right)q.push("right");if(A.bottom)q.push("bottom");if(A.left)q.push("left");return q.length>0?q:!1}function wj(A){return A===!0?{top:!0,right:!0,bottom:!0,left:!0}:Array.isArray(A)?{top:A.includes("top"),right:A.includes("right"),bottom:A.includes("bottom"),left:A.includes("left")}:{top:!1,right:!1,bottom:!1,left:!1}}function SF(A){let q=new Uint32Array(11);return q[0]=A.topLeft.codePointAt(0),q[1]=A.topRight.codePointAt(0),q[2]=A.bottomLeft.codePointAt(0),q[3]=A.bottomRight.codePointAt(0),q[4]=A.horizontal.codePointAt(0),q[5]=A.vertical.codePointAt(0),q[6]=A.topT.codePointAt(0),q[7]=A.bottomT.codePointAt(0),q[8]=A.leftT.codePointAt(0),q[9]=A.rightT.codePointAt(0),q[10]=A.cross.codePointAt(0),q}class aH{name;ctrl;meta;shift;option;sequence;number;raw;eventType;source;code;super;hyper;capsLock;numLock;baseCode;repeated;_defaultPrevented=!1;_propagationStopped=!1;constructor(A){this.name=A.name,this.ctrl=A.ctrl,this.meta=A.meta,this.shift=A.shift,this.option=A.option,this.sequence=A.sequence,this.number=A.number,this.raw=A.raw,this.eventType=A.eventType,this.source=A.source,this.code=A.code,this.super=A.super,this.hyper=A.hyper,this.capsLock=A.capsLock,this.numLock=A.numLock,this.baseCode=A.baseCode,this.repeated=A.repeated}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}class aO{type="paste";bytes;metadata;_defaultPrevented=!1;_propagationStopped=!1;constructor(A,q){this.bytes=A,this.metadata=q}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}function r$(A,q=0){return(q&255|(A&255)<<8)>>>0}function KK(A){return Math.round(Math.max(0,Math.min(1,Number.isFinite(A)?A:0))*255)}function JG(A){return Math.round(Math.max(0,Math.min(255,Number.isFinite(A)?A:0)))}function p$(A,q,g,F,E){return new Uint16Array([JG(A)&255|(E>>>0&255)<<8,JG(q)&255|(E>>>8&255)<<8,JG(g)&255|(E>>>16&255)<<8,JG(F)&255|(E>>>24&255)<<8])}function du(A){let[q,g,F]=IO(A);return PA.fromInts(q,g,F)}function QO(A){if(!Number.isInteger(A)||A<0||A>255)throw RangeError(`Indexed color must be an integer in the range 0..255, got ${A}`);return A}function IO(A){let q=QO(A);if(q<dP.length)return dP[q];if(q<232){let F=q-16,E=Math.floor(F/36),K=Math.floor(F/6)%6,H=F%6;return[nQ[E],nQ[K],nQ[H]]}let g=8+(q-232)*10;return[g,g,g]}class PA{buffer;constructor(A){this.buffer=new Uint16Array(4),this.buffer.set(A.subarray(0,4))}static fromArray(A){return new PA(A)}static fromValues(A,q,g,F=1){return new PA(p$(KK(A),KK(q),KK(g),KK(F),r$(nP)))}static clone(A){return new PA(A.buffer)}static fromInts(A,q,g,F=255){return new PA(p$(A,q,g,F,r$(nP)))}static fromHex(A){return zj(A)}static fromIndex(A,q){let g=QO(A),F=q?k(q):du(g),[E,K,H,j]=F.toInts();return new PA(p$(E,K,H,j,r$(lP,g)))}static defaultForeground(A){let q=A?k(A):PA.fromInts(..._O),[g,F,E,K]=q.toInts();return new PA(p$(g,F,E,K,r$(mQ)))}static defaultBackground(A){let q=A?k(A):PA.fromInts(...YO),[g,F,E,K]=q.toInts();return new PA(p$(g,F,E,K,r$(mQ)))}toInts(){return[this.buffer[0]&255,this.buffer[1]&255,this.buffer[2]&255,this.buffer[3]&255]}get r(){return(this.buffer[0]&255)/255}set r(A){this.buffer[0]=this.buffer[0]&65280|KK(A)}get g(){return(this.buffer[1]&255)/255}set g(A){this.buffer[1]=this.buffer[1]&65280|KK(A)}get b(){return(this.buffer[2]&255)/255}set b(A){this.buffer[2]=this.buffer[2]&65280|KK(A)}get a(){return(this.buffer[3]&255)/255}set a(A){this.buffer[3]=this.buffer[3]&65280|KK(A)}get meta(){return(this.buffer[0]>>>8|this.buffer[1]>>>8<<8|this.buffer[2]>>>8<<16|this.buffer[3]>>>8<<24)>>>0}get intent(){switch(this.meta>>>8&255){case lP:return"indexed";case mQ:return"default";default:return"rgb"}}get slot(){return this.meta&255}map(A){return[A(this.r),A(this.g),A(this.b),A(this.a)]}toString(){return`rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`}equals(A){if(!A)return!1;return this.buffer[0]===A.buffer[0]&&this.buffer[1]===A.buffer[1]&&this.buffer[2]===A.buffer[2]&&this.buffer[3]===A.buffer[3]}}function gO(A){if(A==null)return null;return{rgba:k(A)}}function zj(A){if(A=A.replace(/^#/,""),A.length===3)A=A[0]+A[0]+A[1]+A[1]+A[2]+A[2];else if(A.length===4)A=A[0]+A[0]+A[1]+A[1]+A[2]+A[2]+A[3]+A[3];if(!/^[0-9A-Fa-f]{6}$/.test(A)&&!/^[0-9A-Fa-f]{8}$/.test(A))return console.warn(`Invalid hex color: ${A}, defaulting to magenta`),PA.fromValues(1,0,1,1);let q=parseInt(A.substring(0,2),16),g=parseInt(A.substring(2,4),16),F=parseInt(A.substring(4,6),16),E=A.length===8?parseInt(A.substring(6,8),16):255;return PA.fromInts(q,g,F,E)}function X1(A){let[q,g,F,E]=A.toInts();return"#"+(E===255?[q,g,F]:[q,g,F,E]).map((H)=>H.toString(16).padStart(2,"0")).join("")}function M1(A,q,g){let F=0,E=0,K=0,H=Math.floor(A/60)%6,j=A/60-Math.floor(A/60),U=g*(1-q),$=g*(1-j*q),Z=g*(1-(1-j)*q);switch(H){case 0:F=g,E=Z,K=U;break;case 1:F=$,E=g,K=U;break;case 2:F=U,E=g,K=Z;break;case 3:F=U,E=$,K=g;break;case 4:F=Z,E=U,K=g;break;case 5:F=g,E=U,K=$;break}return PA.fromValues(F,E,K,1)}function k(A){if(typeof A==="string"){let q=A.toLowerCase();if(q==="transparent")return PA.fromValues(0,0,0,0);if(rP[q])return zj(rP[q]);return zj(A)}return A}function gm(A){let q=[],g=0,F=/<c(\d+)>(.*?)<\/c\d+>/g,E=0,K;while((K=F.exec(A))!==null){if(K.index>E){let U=A.slice(E,K.index);if(U)q.push({text:U,colorIndex:0})}let H=parseInt(K[1])-1,j=K[2];q.push({text:j,colorIndex:Math.max(0,H)}),E=K.index+K[0].length}if(E<A.length){let H=A.slice(E);if(H)q.push({text:H,colorIndex:0})}return q}function N1(A){if(!lQ[A]){let q=hG[A],g={};for(let[F,E]of Object.entries(q.chars))g[F]=E.map((K)=>gm(K));lQ[A]={...q,colors:q.colors||1,chars:g}}return lQ[A]}function aK({text:A,font:q="tiny"}){let g=N1(q);if(!g)return console.warn(`Font '${q}' not found`),{width:0,height:0};let F=0;for(let E=0;E<A.length;E++){let K=A[E].toUpperCase(),H=g.chars[K];if(!H){let U=g.chars[" "];if(U&&U[0]){let $=0;for(let Z of U[0])$+=Z.text.length;F+=$}else F+=1;continue}let j=0;if(H[0])for(let U of H[0])j+=U.text.length;if(F+=j,E<A.length-1)F+=g.letterspace_size}return{width:F,height:g.lines}}function JO(A,q="tiny"){let g=N1(q);if(!g)return[0];let F=[0],E=0;for(let K=0;K<A.length;K++){let H=A[K].toUpperCase(),j=g.chars[H],U=0;if(!j){let $=g.chars[" "];if($&&$[0])for(let Z of $[0])U+=Z.text.length;else U=1}else if(j[0])for(let $ of j[0])U+=$.text.length;if(E+=U,K<A.length-1)E+=g.letterspace_size;F.push(E)}return F}function Bj(A,q,g="tiny"){let F=JO(q,g);if(A<0)return 0;for(let E=0;E<F.length-1;E++){let K=F[E],H=F[E+1];if(A>=K&&A<H){let j=K+(H-K)/2;return A<j?E:E+1}}if(F.length>0&&A>=F[F.length-1])return q.length;return 0}function yj(A,{text:q,x:g=0,y:F=0,color:E=[PA.fromInts(255,255,255,255)],backgroundColor:K=PA.fromInts(0,0,0,255),font:H="tiny"}){let{width:j,height:U}=A,$=N1(H);if(!$)return console.warn(`Font '${H}' not found`),{width:0,height:0};let Z=Array.isArray(E)?E:[E];if(F<0||F+$.lines>U)return{width:0,height:$.lines};let G=g,L=g;for(let a=0;a<q.length;a++){let _=q[a].toUpperCase(),Y=$.chars[_];if(!Y){let I=$.chars[" "];if(I&&I[0]){let J=0;for(let X of I[0])J+=X.text.length;G+=J}else G+=1;continue}let Q=0;if(Y[0])for(let I of Y[0])Q+=I.text.length;if(G>=j)break;if(G+Q<0){G+=Q+$.letterspace_size;continue}for(let I=0;I<$.lines&&I<Y.length;I++){let J=Y[I],X=F+I;if(X>=0&&X<U){let M=G;for(let N of J){let P=Z[N.colorIndex]||Z[0];for(let x=0;x<N.text.length;x++){let w=M+x;if(w>=0&&w<j){let B=N.text[x];if(B!==" ")A.setCellWithAlphaBlending(w,X,B,k(P),k(K))}}M+=N.text.length}}}if(G+=Q,a<q.length-1)G+=$.letterspace_size}return{width:G-L,height:$.lines}}function S1(A){return A&wG}function F6({bold:A=!1,italic:q=!1,underline:g=!1,dim:F=!1,blink:E=!1,inverse:K=!1,hidden:H=!1,strikethrough:j=!1}={}){let U=pA.NONE;if(A)U|=pA.BOLD;if(q)U|=pA.ITALIC;if(g)U|=pA.UNDERLINE;if(F)U|=pA.DIM;if(E)U|=pA.BLINK;if(K)U|=pA.INVERSE;if(H)U|=pA.HIDDEN;if(j)U|=pA.STRIKETHROUGH;return U}function V1(A,q){let g=A&Em,F=(q&y5)<<c5;return g|F}function x1(A){return A>>>c5&y5}function T1(A,q=10){function g(E,K="",H="",j=!0,U=0){if(U>=q)return[`${K}${E.id} ... (max depth reached)`];let $=[],Z=E.getChildren();if($.push(`${K}${E.id}`),Z.length>0){let G=Z.length-1;Z.forEach((L,a)=>{let _=a===G,Y=_?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",Q=H+(j?" ":"\u2502 "),I=g(L,Q+Y,Q,_,U+1);$.push(...I)})}return $}let F=g(A);console.log(`Renderable Tree:
54
+ var au=Object.create;var{getPrototypeOf:_u,defineProperty:cQ,getOwnPropertyNames:Yu}=Object;var Qu=Object.prototype.hasOwnProperty;function Iu(A){return this[A]}var Ju,Xu,QF=(A,q,g)=>{var F=A!=null&&typeof A==="object";if(F){var E=q?Ju??=new WeakMap:Xu??=new WeakMap,K=E.get(A);if(K)return K}g=A!=null?au(_u(A)):{};let H=q||!A||!A.__esModule?cQ(g,"default",{value:A,enumerable:!0}):g;for(let j of Yu(A))if(!Qu.call(H,j))cQ(H,j,{get:Iu.bind(A,j),enumerable:!0});if(F)E.set(A,H);return H};var ZA=(A,q)=>()=>(q||A((q={exports:{}}).exports,q),q.exports);var Mu=(A)=>A;function Nu(A,q){this[A]=Mu.bind(null,q)}var Cq=(A,q)=>{for(var g in q)cQ(A,g,{get:q[g],enumerable:!0,configurable:!0,set:Nu.bind(q,g)})};var T=(A,q)=>()=>(A&&(q=A(A=0)),q);var pq=(A)=>Promise.all(A),Qg=import.meta.require;var ZE="3.0.1";var Nj=()=>{};var _P=ZA((v_A,Su)=>{Su.exports=Qg("./keytar-4z5sa3wk.node")});var QP=ZA((C_A,YP)=>{var n$=_P();function IF(A,q){if(!A||A.length<=0)throw Error(q+" is required.")}YP.exports={getPassword:function(A,q){return IF(A,"Service"),IF(q,"Account"),n$.getPassword(A,q)},setPassword:function(A,q,g){return IF(A,"Service"),IF(q,"Account"),IF(g,"Password"),n$.setPassword(A,q,g)},deletePassword:function(A,q){return IF(A,"Service"),IF(q,"Account"),n$.deletePassword(A,q)},findPassword:function(A){return IF(A,"Service"),n$.findPassword(A)},findCredentials:function(A){return IF(A,"Service"),n$.findCredentials(A)}}});import Vu from"os";import IP from"path";import tQ from"fs";function JP(A){QG=A}async function XP(){if(tQ.existsSync(iQ))try{let A=tQ.readFileSync(iQ,"utf-8"),q=JSON.parse(A);for(let g of Sj){let F=q[g];if(F)await KH.default.setPassword(Wj,g,F)}}catch{}finally{tQ.rmSync(iQ,{force:!0})}}function uQ(A){return Sj.filter((q)=>{let g=A[q];return typeof g==="string"&&g.length>0})}async function MP(A){if(uQ(A).length===0){await l$();return}for(let g of Sj){let F=A[g];if(F)await KH.default.setPassword(Wj,g,F);else await KH.default.deletePassword(Wj,g)}}async function d$(){await XP();for(let A of Sj)if(await KH.default.getPassword(Wj,A))return!0;return!1}async function IG(){await XP();let A={},q=!1;for(let g of Sj){let F=await KH.default.getPassword(Wj,g);if(F)A[g]=F,q=!0}if(!q)throw Error("CONFIG_NOT_FOUND");return A}async function NP(A,q){let g={};if(await d$())try{g=await IG()}catch{g={}}g[A]=q,await MP(g)}async function l$(){for(let A of Sj)await KH.default.deletePassword(Wj,A)}async function WP(A){if(!await d$())return{hadInvalidConfig:!1,removedModes:[]};let q;try{q=await IG()}catch{return await l$(),{hadInvalidConfig:!0,removedModes:[]}}let g=uQ(q);if(A==="all")return await l$(),{hadInvalidConfig:!1,removedModes:g};if(!Object.prototype.hasOwnProperty.call(q,A))return{hadInvalidConfig:!1,removedModes:[]};return delete q[A],await MP(q),{hadInvalidConfig:!1,removedModes:[A]}}async function JF(A,q=!0){if(QG){let K=await IG();return{mode:QG,apiKey:K[QG]}}if(!await d$())throw Error("Sign in first. Run /login to get started.");let g;try{g=await IG()}catch{throw await l$(),Error("Couldn't load credentials. Run /login to retry.")}let F=uQ(g);if(F.length===0)throw await l$(),Error("No valid credentials. Run /login to retry.");if(F.length===1||!q){let K=F[0];return{mode:K,apiKey:g[K]}}if(!A)throw Error("Multiple environments configured. Run the CLI without arguments to choose one.");let E=await A.promptSelect("Environment",F.map((K)=>({label:K==="test_mode"?"Test Mode":"Live Mode",value:K})));return{mode:E,apiKey:g[E]}}var KH,Wj="dodopayments-cli",xu,iQ,Sj,QG=null;var HH=T(()=>{KH=QF(QP(),1),xu=IP.join(Vu.homedir(),".dodopayments"),iQ=IP.join(xu,"api-key"),Sj=["test_mode","live_mode"]});var VP="./highlights-ghv9g403.scm";var SP=()=>{};var TP="./tree-sitter-javascript-nd0q4pe9.wasm";var xP=()=>{};var RP="./highlights-eq9cgrbb.scm";var PP=()=>{};var wP="./tree-sitter-typescript-zxjzwt75.wasm";var hP=()=>{};var zP="./highlights-r812a2qc.scm";var BP=()=>{};var kP="./tree-sitter-markdown-411r6y9b.wasm";var bP=()=>{};var vP="./injections-73j83es3.scm";var DP=()=>{};var fP="./highlights-x6tmsnaa.scm";var CP=()=>{};var yP="./tree-sitter-markdown_inline-j5349f42.wasm";var cP=()=>{};var iP="./highlights-hk7bwhj4.scm";var tP=()=>{};var mP="./tree-sitter-zig-e78zbjpm.wasm";var uP=()=>{};import{EventEmitter as lu}from"events";import{Buffer as Fm}from"buffer";import{Buffer as CG}from"buffer";import{EventEmitter as ym}from"events";import{resolve as TE,dirname as PE}from"path";import{fileURLToPath as RE}from"url";import{resolve as F5,isAbsolute as mm,parse as nm}from"path";import{existsSync as lm}from"fs";import{basename as dm,join as rm}from"path";import K5 from"os";import HK from"path";import{EventEmitter as em}from"events";import H5 from"path";import{readFile as AR,writeFile as qR,mkdir as gn}from"fs/promises";import*as Xq from"path";import{mkdir as j5,readFile as oQ,writeFile as sQ}from"fs/promises";import*as YH from"path";import{readdir as En}from"fs/promises";import{mkdir as Un,writeFile as $n}from"fs/promises";import{dirname as On}from"path";import{fileURLToPath as Zn}from"url";import{fileURLToPath as Dn}from"url";import{existsSync as gl,writeFileSync as El}from"fs";import{EventEmitter as Fl}from"events";import{EventEmitter as Pl}from"events";import Bl from"util";import{EventEmitter as zl}from"events";import{EventEmitter as IR}from"events";import{Console as bl}from"console";import kl from"fs";import Dl from"path";import k5 from"util";import{Writable as vl}from"stream";import{EventEmitter as Cl}from"events";import{EventEmitter as SR}from"events";function cu(A,q){this[A]=fu.bind(null,q)}function mu(A){function q(E,K,H){let j=E[K];E[K]=function(){for(var U=arguments.length,$=Array(U),Z=0;Z<U;Z++)$[Z]=arguments[Z];return H.call(this,j,...$)}}for(let E of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let K={[Pg.Point]:A.Node.prototype[E],[Pg.Percent]:A.Node.prototype[`${E}Percent`],[Pg.Auto]:A.Node.prototype[`${E}Auto`]};q(A.Node.prototype,E,function(H){for(var j=arguments.length,U=Array(j>1?j-1:0),$=1;$<j;$++)U[$-1]=arguments[$];let Z=U.pop(),G,L;if(Z==="auto")G=Pg.Auto,L=void 0;else if(typeof Z==="object")G=Z.unit,L=Z.valueOf();else if(G=typeof Z==="string"&&Z.endsWith("%")?Pg.Percent:Pg.Point,L=parseFloat(Z),Z!==void 0&&!Number.isNaN(Z)&&Number.isNaN(L))throw Error(`Invalid value ${Z} for ${E}`);if(!K[G])throw Error(`Failed to execute "${E}": Unsupported unit '${Z}'`);if(L!==void 0)return K[G].call(this,...U,L);else return K[G].call(this,...U)})}function g(E){return A.MeasureCallback.implement({measure:function(){let{width:K,height:H}=E(...arguments);return{width:K??NaN,height:H??NaN}}})}q(A.Node.prototype,"setMeasureFunc",function(E,K){if(K)return E.call(this,g(K));else return this.unsetMeasureFunc()});function F(E){return A.DirtiedCallback.implement({dirtied:E})}return q(A.Node.prototype,"setDirtiedFunc",function(E,K){E.call(this,F(K))}),q(A.Config.prototype,"free",function(){A.Config.destroy(this)}),q(A.Node,"create",(E,K)=>{return K?A.Node.createWithConfig(K):A.Node.createDefault()}),q(A.Node.prototype,"free",function(){A.Node.destroy(this)}),q(A.Node.prototype,"freeRecursive",function(){for(let E=0,K=this.getChildCount();E<K;++E)this.getChild(0).freeRecursive();this.free()}),q(A.Node.prototype,"calculateLayout",function(E){let K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:wE.LTR;return E.call(this,K,H,j)}),{Config:A.Config,Node:A.Node,...uu}}function RG(A){return typeof A==="string"&&f5.includes(A)}function GK(A,q="single"){if(RG(A))return A;if(A!==void 0&&A!==null)console.warn(`Invalid borderStyle "${A}", falling back to "${q}". Valid values are: ${f5.join(", ")}`);return q}function J1(A){let q=[];if(A.top)q.push("top");if(A.right)q.push("right");if(A.bottom)q.push("bottom");if(A.left)q.push("left");return q.length>0?q:!1}function wj(A){return A===!0?{top:!0,right:!0,bottom:!0,left:!0}:Array.isArray(A)?{top:A.includes("top"),right:A.includes("right"),bottom:A.includes("bottom"),left:A.includes("left")}:{top:!1,right:!1,bottom:!1,left:!1}}function SF(A){let q=new Uint32Array(11);return q[0]=A.topLeft.codePointAt(0),q[1]=A.topRight.codePointAt(0),q[2]=A.bottomLeft.codePointAt(0),q[3]=A.bottomRight.codePointAt(0),q[4]=A.horizontal.codePointAt(0),q[5]=A.vertical.codePointAt(0),q[6]=A.topT.codePointAt(0),q[7]=A.bottomT.codePointAt(0),q[8]=A.leftT.codePointAt(0),q[9]=A.rightT.codePointAt(0),q[10]=A.cross.codePointAt(0),q}class aH{name;ctrl;meta;shift;option;sequence;number;raw;eventType;source;code;super;hyper;capsLock;numLock;baseCode;repeated;_defaultPrevented=!1;_propagationStopped=!1;constructor(A){this.name=A.name,this.ctrl=A.ctrl,this.meta=A.meta,this.shift=A.shift,this.option=A.option,this.sequence=A.sequence,this.number=A.number,this.raw=A.raw,this.eventType=A.eventType,this.source=A.source,this.code=A.code,this.super=A.super,this.hyper=A.hyper,this.capsLock=A.capsLock,this.numLock=A.numLock,this.baseCode=A.baseCode,this.repeated=A.repeated}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}class aO{type="paste";bytes;metadata;_defaultPrevented=!1;_propagationStopped=!1;constructor(A,q){this.bytes=A,this.metadata=q}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}function r$(A,q=0){return(q&255|(A&255)<<8)>>>0}function KK(A){return Math.round(Math.max(0,Math.min(1,Number.isFinite(A)?A:0))*255)}function JG(A){return Math.round(Math.max(0,Math.min(255,Number.isFinite(A)?A:0)))}function p$(A,q,g,F,E){return new Uint16Array([JG(A)&255|(E>>>0&255)<<8,JG(q)&255|(E>>>8&255)<<8,JG(g)&255|(E>>>16&255)<<8,JG(F)&255|(E>>>24&255)<<8])}function du(A){let[q,g,F]=IO(A);return PA.fromInts(q,g,F)}function QO(A){if(!Number.isInteger(A)||A<0||A>255)throw RangeError(`Indexed color must be an integer in the range 0..255, got ${A}`);return A}function IO(A){let q=QO(A);if(q<dP.length)return dP[q];if(q<232){let F=q-16,E=Math.floor(F/36),K=Math.floor(F/6)%6,H=F%6;return[nQ[E],nQ[K],nQ[H]]}let g=8+(q-232)*10;return[g,g,g]}class PA{buffer;constructor(A){this.buffer=new Uint16Array(4),this.buffer.set(A.subarray(0,4))}static fromArray(A){return new PA(A)}static fromValues(A,q,g,F=1){return new PA(p$(KK(A),KK(q),KK(g),KK(F),r$(nP)))}static clone(A){return new PA(A.buffer)}static fromInts(A,q,g,F=255){return new PA(p$(A,q,g,F,r$(nP)))}static fromHex(A){return zj(A)}static fromIndex(A,q){let g=QO(A),F=q?k(q):du(g),[E,K,H,j]=F.toInts();return new PA(p$(E,K,H,j,r$(lP,g)))}static defaultForeground(A){let q=A?k(A):PA.fromInts(..._O),[g,F,E,K]=q.toInts();return new PA(p$(g,F,E,K,r$(mQ)))}static defaultBackground(A){let q=A?k(A):PA.fromInts(...YO),[g,F,E,K]=q.toInts();return new PA(p$(g,F,E,K,r$(mQ)))}toInts(){return[this.buffer[0]&255,this.buffer[1]&255,this.buffer[2]&255,this.buffer[3]&255]}get r(){return(this.buffer[0]&255)/255}set r(A){this.buffer[0]=this.buffer[0]&65280|KK(A)}get g(){return(this.buffer[1]&255)/255}set g(A){this.buffer[1]=this.buffer[1]&65280|KK(A)}get b(){return(this.buffer[2]&255)/255}set b(A){this.buffer[2]=this.buffer[2]&65280|KK(A)}get a(){return(this.buffer[3]&255)/255}set a(A){this.buffer[3]=this.buffer[3]&65280|KK(A)}get meta(){return(this.buffer[0]>>>8|this.buffer[1]>>>8<<8|this.buffer[2]>>>8<<16|this.buffer[3]>>>8<<24)>>>0}get intent(){switch(this.meta>>>8&255){case lP:return"indexed";case mQ:return"default";default:return"rgb"}}get slot(){return this.meta&255}map(A){return[A(this.r),A(this.g),A(this.b),A(this.a)]}toString(){return`rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`}equals(A){if(!A)return!1;return this.buffer[0]===A.buffer[0]&&this.buffer[1]===A.buffer[1]&&this.buffer[2]===A.buffer[2]&&this.buffer[3]===A.buffer[3]}}function gO(A){if(A==null)return null;return{rgba:k(A)}}function zj(A){if(A=A.replace(/^#/,""),A.length===3)A=A[0]+A[0]+A[1]+A[1]+A[2]+A[2];else if(A.length===4)A=A[0]+A[0]+A[1]+A[1]+A[2]+A[2]+A[3]+A[3];if(!/^[0-9A-Fa-f]{6}$/.test(A)&&!/^[0-9A-Fa-f]{8}$/.test(A))return console.warn(`Invalid hex color: ${A}, defaulting to magenta`),PA.fromValues(1,0,1,1);let q=parseInt(A.substring(0,2),16),g=parseInt(A.substring(2,4),16),F=parseInt(A.substring(4,6),16),E=A.length===8?parseInt(A.substring(6,8),16):255;return PA.fromInts(q,g,F,E)}function X1(A){let[q,g,F,E]=A.toInts();return"#"+(E===255?[q,g,F]:[q,g,F,E]).map((H)=>H.toString(16).padStart(2,"0")).join("")}function M1(A,q,g){let F=0,E=0,K=0,H=Math.floor(A/60)%6,j=A/60-Math.floor(A/60),U=g*(1-q),$=g*(1-j*q),Z=g*(1-(1-j)*q);switch(H){case 0:F=g,E=Z,K=U;break;case 1:F=$,E=g,K=U;break;case 2:F=U,E=g,K=Z;break;case 3:F=U,E=$,K=g;break;case 4:F=Z,E=U,K=g;break;case 5:F=g,E=U,K=$;break}return PA.fromValues(F,E,K,1)}function k(A){if(typeof A==="string"){let q=A.toLowerCase();if(q==="transparent")return PA.fromValues(0,0,0,0);if(rP[q])return zj(rP[q]);return zj(A)}return A}function gm(A){let q=[],g=0,F=/<c(\d+)>(.*?)<\/c\d+>/g,E=0,K;while((K=F.exec(A))!==null){if(K.index>E){let U=A.slice(E,K.index);if(U)q.push({text:U,colorIndex:0})}let H=parseInt(K[1])-1,j=K[2];q.push({text:j,colorIndex:Math.max(0,H)}),E=K.index+K[0].length}if(E<A.length){let H=A.slice(E);if(H)q.push({text:H,colorIndex:0})}return q}function N1(A){if(!lQ[A]){let q=hG[A],g={};for(let[F,E]of Object.entries(q.chars))g[F]=E.map((K)=>gm(K));lQ[A]={...q,colors:q.colors||1,chars:g}}return lQ[A]}function aK({text:A,font:q="tiny"}){let g=N1(q);if(!g)return console.warn(`Font '${q}' not found`),{width:0,height:0};let F=0;for(let E=0;E<A.length;E++){let K=A[E].toUpperCase(),H=g.chars[K];if(!H){let U=g.chars[" "];if(U&&U[0]){let $=0;for(let Z of U[0])$+=Z.text.length;F+=$}else F+=1;continue}let j=0;if(H[0])for(let U of H[0])j+=U.text.length;if(F+=j,E<A.length-1)F+=g.letterspace_size}return{width:F,height:g.lines}}function JO(A,q="tiny"){let g=N1(q);if(!g)return[0];let F=[0],E=0;for(let K=0;K<A.length;K++){let H=A[K].toUpperCase(),j=g.chars[H],U=0;if(!j){let $=g.chars[" "];if($&&$[0])for(let Z of $[0])U+=Z.text.length;else U=1}else if(j[0])for(let $ of j[0])U+=$.text.length;if(E+=U,K<A.length-1)E+=g.letterspace_size;F.push(E)}return F}function Bj(A,q,g="tiny"){let F=JO(q,g);if(A<0)return 0;for(let E=0;E<F.length-1;E++){let K=F[E],H=F[E+1];if(A>=K&&A<H){let j=K+(H-K)/2;return A<j?E:E+1}}if(F.length>0&&A>=F[F.length-1])return q.length;return 0}function yj(A,{text:q,x:g=0,y:F=0,color:E=[PA.fromInts(255,255,255,255)],backgroundColor:K=PA.fromInts(0,0,0,255),font:H="tiny"}){let{width:j,height:U}=A,$=N1(H);if(!$)return console.warn(`Font '${H}' not found`),{width:0,height:0};let Z=Array.isArray(E)?E:[E];if(F<0||F+$.lines>U)return{width:0,height:$.lines};let G=g,L=g;for(let a=0;a<q.length;a++){let _=q[a].toUpperCase(),Y=$.chars[_];if(!Y){let I=$.chars[" "];if(I&&I[0]){let J=0;for(let X of I[0])J+=X.text.length;G+=J}else G+=1;continue}let Q=0;if(Y[0])for(let I of Y[0])Q+=I.text.length;if(G>=j)break;if(G+Q<0){G+=Q+$.letterspace_size;continue}for(let I=0;I<$.lines&&I<Y.length;I++){let J=Y[I],X=F+I;if(X>=0&&X<U){let M=G;for(let N of J){let P=Z[N.colorIndex]||Z[0];for(let x=0;x<N.text.length;x++){let w=M+x;if(w>=0&&w<j){let B=N.text[x];if(B!==" ")A.setCellWithAlphaBlending(w,X,B,k(P),k(K))}}M+=N.text.length}}}if(G+=Q,a<q.length-1)G+=$.letterspace_size}return{width:G-L,height:$.lines}}function S1(A){return A&wG}function F6({bold:A=!1,italic:q=!1,underline:g=!1,dim:F=!1,blink:E=!1,inverse:K=!1,hidden:H=!1,strikethrough:j=!1}={}){let U=pA.NONE;if(A)U|=pA.BOLD;if(q)U|=pA.ITALIC;if(g)U|=pA.UNDERLINE;if(F)U|=pA.DIM;if(E)U|=pA.BLINK;if(K)U|=pA.INVERSE;if(H)U|=pA.HIDDEN;if(j)U|=pA.STRIKETHROUGH;return U}function V1(A,q){let g=A&Em,F=(q&y5)<<c5;return g|F}function x1(A){return A>>>c5&y5}function T1(A,q=10){function g(E,K="",H="",j=!0,U=0){if(U>=q)return[`${K}${E.id} ... (max depth reached)`];let $=[],Z=E.getChildren();if($.push(`${K}${E.id}`),Z.length>0){let G=Z.length-1;Z.forEach((L,a)=>{let _=a===G,Y=_?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",Q=H+(j?" ":"\u2502 "),I=g(L,Q+Y,Q,_,U+1);$.push(...I)})}return $}let F=g(A);console.log(`Renderable Tree:
4
55
  `+F.join(`
5
56
  `))}function bG(A){return A&&A[t5]}function LK(A){return new d6([{__isChunk:!0,text:A}])}function oA(A,q){if(typeof A==="object"&&"__isChunk"in A){let g=A,F=q.fg?k(q.fg):g.fg,E=q.bg?k(q.bg):g.bg,K=F6(q),H=g.attributes?g.attributes|K:K;return{__isChunk:!0,text:g.text,fg:F,bg:E,attributes:H,link:g.link}}else{let g=String(A),F=q.fg?k(q.fg):void 0,E=q.bg?k(q.bg):void 0,K=F6(q);return{__isChunk:!0,text:g,fg:F,bg:E,attributes:K}}}function j4(A,...q){let g=[];for(let F=0;F<A.length;F++){let E=A[F];if(E)g.push({__isChunk:!0,text:E,attributes:0});let K=q[F];if(typeof K==="object"&&"__isChunk"in K)g.push(K);else if(K!==void 0){let H=String(K);g.push({__isChunk:!0,text:H,attributes:0})}}return new d6(g)}function i5(A,q,g=[]){let F=[];if(A.type==="text"){let E=g.length>0?g:["default"],K=q.mergeStyles(...E);F.push({__isChunk:!0,text:A.value,fg:K.fg,bg:K.bg,attributes:K.attributes})}else if(A.type==="element"){let E=[...g];if(A.properties?.className){let K=A.properties.className.split(" ");for(let H of K)E.push(H)}for(let K of A.children)F.push(...i5(K,q,E))}return F}function U4(A,q){let g=i5(A,q);return new d6(g)}class _K{now(){if(!globalThis.performance||typeof globalThis.performance.now!=="function")throw Error("SystemClock requires globalThis.performance.now()");return globalThis.performance.now()}setTimeout(A,q){return globalThis.setTimeout(A,q)}clearTimeout(A){globalThis.clearTimeout(A)}setInterval(A,q){return globalThis.setInterval(A,q)}clearInterval(A){globalThis.clearInterval(A)}}function u5(A){return{shift:!!(A&1),alt:!!(A&2),ctrl:!!(A&4),super:!!(A&8),hyper:!!(A&16),meta:!!(A&32),capsLock:!!(A&64),numLock:!!(A&128)}}function Um(A){let g=/^\x1b\[(\d+);(\d+):(\d+)([A-Z~])$/.exec(A);if(!g)return null;let F=g[1],E=g[2],K=g[3],H=g[4],j;if(H==="~")j=jm[F];else{if(F!=="1")return null;j=Hm[H]}if(!j)return null;let U={name:j,ctrl:!1,meta:!1,shift:!1,option:!1,number:!1,sequence:A,raw:A,eventType:"press",source:"kitty",super:!1,hyper:!1,capsLock:!1,numLock:!1};if(E){let $=parseInt(E,10);if(!isNaN($)&&$>1){let Z=u5($-1);U.shift=Z.shift,U.ctrl=Z.ctrl,U.meta=Z.alt||Z.meta,U.option=Z.alt,U.super=Z.super,U.hyper=Z.hyper,U.capsLock=Z.capsLock,U.numLock=Z.numLock}}if(K==="1"||!K)U.eventType="press";else if(K==="2")U.eventType="press",U.repeated=!0;else if(K==="3")U.eventType="release";return U}function $m(A){let q=Um(A);if(q)return q;let F=/^\x1b\[([^\x1b]+)u$/.exec(A);if(!F)return null;let K=F[1].split(";");if(K.length<1)return null;let H={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,number:!1,sequence:A,raw:A,eventType:"press",source:"kitty",super:!1,hyper:!1,capsLock:!1,numLock:!1},j="",U=K[0]?.split(":")||[],$=U[0];if(!$)return null;let Z=parseInt($,10);if(isNaN(Z))return null;let G,L;if(U[1]){let _=parseInt(U[1],10);if(!isNaN(_)&&_>0&&_<=1114111)G=_}if(U[2]){let _=parseInt(U[2],10);if(!isNaN(_)&&_>0&&_<=1114111)L=_}let a=O1[Z];if(a)H.name=a,H.code=`[${Z}u`;else if(Z===0)H.name="";else if(Z>0&&Z<=1114111){let _=String.fromCodePoint(Z);if(H.name=_,L)H.baseCode=L}else return null;if(K[1]){let _=K[1].split(":"),Y=_[0],Q=_[1];if(Y){let I=parseInt(Y,10);if(!isNaN(I)&&I>1){let J=u5(I-1);H.shift=J.shift,H.ctrl=J.ctrl,H.meta=J.alt||J.meta,H.option=J.alt,H.super=J.super,H.hyper=J.hyper,H.capsLock=J.capsLock,H.numLock=J.numLock}}if(Q==="1"||!Q)H.eventType="press";else if(Q==="2")H.eventType="press",H.repeated=!0;else if(Q==="3")H.eventType="release";else H.eventType="press"}if(K[2]){let _=K[2].split(":");for(let Y of _){let Q=parseInt(Y,10);if(!isNaN(Q)&&Q>0&&Q<=1114111)j+=String.fromCodePoint(Q)}}if(j===""){if(H.name.length>0&&!O1[Z])if(H.shift&&G)j=String.fromCodePoint(G);else if(H.shift&&H.name.length===1)j=H.name.toLocaleUpperCase();else j=H.name}if(H.name===" "&&H.shift&&!H.ctrl&&!H.meta)j=" ";if(j){if(Z===0)H.name=j;H.sequence=j}if(Z===0&&j==="")return null;return H}class XO{tick(A){return 1}reset(){}}class vG{opts;lastTickTime=0;velocityHistory=[];historySize=3;streakTimeout=150;minTickInterval=6;constructor(A={}){this.opts=A}tick(A=Date.now()){let q=this.opts.A??0.8,g=this.opts.tau??3,F=this.opts.maxMultiplier??6,E=this.lastTickTime?A-this.lastTickTime:1/0;if(E===1/0||E>this.streakTimeout)return this.lastTickTime=A,this.velocityHistory=[],1;if(E<this.minTickInterval)return 1;if(this.lastTickTime=A,this.velocityHistory.push(E),this.velocityHistory.length>this.historySize)this.velocityHistory.shift();let U=100/(this.velocityHistory.reduce((Z,G)=>Z+G,0)/this.velocityHistory.length)/g,$=1+q*(Math.exp(U)-1);return Math.min($,F)}reset(){this.lastTickTime=0,this.velocityHistory=[]}}function FO(A){if(A==null)return gq.Auto;switch(A.toLowerCase()){case"auto":return gq.Auto;case"flex-start":return gq.FlexStart;case"center":return gq.Center;case"flex-end":return gq.FlexEnd;case"stretch":return gq.Stretch;case"baseline":return gq.Baseline;case"space-between":return gq.SpaceBetween;case"space-around":return gq.SpaceAround;case"space-evenly":return gq.SpaceEvenly;default:return gq.Auto}}function KO(A){if(A==null)return gq.Stretch;switch(A.toLowerCase()){case"auto":return gq.Auto;case"flex-start":return gq.FlexStart;case"center":return gq.Center;case"flex-end":return gq.FlexEnd;case"stretch":return gq.Stretch;case"baseline":return gq.Baseline;case"space-between":return gq.SpaceBetween;case"space-around":return gq.SpaceAround;case"space-evenly":return gq.SpaceEvenly;default:return gq.Stretch}}function O4(A){if(A==null)return ZH.BorderBox;switch(A.toLowerCase()){case"border-box":return ZH.BorderBox;case"content-box":return ZH.ContentBox;default:return ZH.BorderBox}}function Z4(A){if(A==null)return LH.Width;switch(A.toLowerCase()){case"width":return LH.Width;case"height":return LH.Height;default:return LH.Width}}function L4(A){if(A==null)return wE.LTR;switch(A.toLowerCase()){case"inherit":return wE.Inherit;case"ltr":return wE.LTR;case"rtl":return wE.RTL;default:return wE.LTR}}function G4(A){if(A==null)return i6.Flex;switch(A.toLowerCase()){case"flex":return i6.Flex;case"none":return i6.None;case"contents":return i6.Contents;default:return i6.Flex}}function a4(A){if(A==null)return XA.All;switch(A.toLowerCase()){case"left":return XA.Left;case"top":return XA.Top;case"right":return XA.Right;case"bottom":return XA.Bottom;case"start":return XA.Start;case"end":return XA.End;case"horizontal":return XA.Horizontal;case"vertical":return XA.Vertical;case"all":return XA.All;default:return XA.All}}function HO(A){if(A==null)return aE.Column;switch(A.toLowerCase()){case"column":return aE.Column;case"column-reverse":return aE.ColumnReverse;case"row":return aE.Row;case"row-reverse":return aE.RowReverse;default:return aE.Column}}function _4(A){if(A==null)return E6.All;switch(A.toLowerCase()){case"column":return E6.Column;case"row":return E6.Row;case"all":return E6.All;default:return E6.All}}function jO(A){if(A==null)return q6.FlexStart;switch(A.toLowerCase()){case"flex-start":return q6.FlexStart;case"center":return q6.Center;case"flex-end":return q6.FlexEnd;case"space-between":return q6.SpaceBetween;case"space-around":return q6.SpaceAround;case"space-evenly":return q6.SpaceEvenly;default:return q6.FlexStart}}function Y4(A){if(A==null)return g6.Info;switch(A.toLowerCase()){case"error":return g6.Error;case"warn":return g6.Warn;case"info":return g6.Info;case"debug":return g6.Debug;case"verbose":return g6.Verbose;case"fatal":return g6.Fatal;default:return g6.Info}}function Q4(A){if(A==null)return Rg.Undefined;switch(A.toLowerCase()){case"undefined":return Rg.Undefined;case"exactly":return Rg.Exactly;case"at-most":return Rg.AtMost;default:return Rg.Undefined}}function UO(A){if(A==null)return MF.Visible;switch(A.toLowerCase()){case"visible":return MF.Visible;case"hidden":return MF.Hidden;case"scroll":return MF.Scroll;default:return MF.Visible}}function $O(A){if(A==null)return NF.Relative;switch(A.toLowerCase()){case"static":return NF.Static;case"relative":return NF.Relative;case"absolute":return NF.Absolute;default:return NF.Static}}function I4(A){if(A==null)return Pg.Point;switch(A.toLowerCase()){case"undefined":return Pg.Undefined;case"point":return Pg.Point;case"percent":return Pg.Percent;case"auto":return Pg.Auto;default:return Pg.Point}}function OO(A){if(A==null)return WF.NoWrap;switch(A.toLowerCase()){case"no-wrap":return WF.NoWrap;case"wrap":return WF.Wrap;case"wrap-reverse":return WF.WrapReverse;default:return WF.NoWrap}}class n5{renderable;relativeX;relativeY;constructor(A,q,g){this.renderable=A,this.relativeX=q-this.renderable.x,this.relativeY=g-this.renderable.y}get x(){return this.renderable.x+this.relativeX}get y(){return this.renderable.y+this.relativeY}}class MO{_anchor;_focus;_selectedRenderables=[];_touchedRenderables=[];_isActive=!0;_isDragging=!0;_isStart=!1;constructor(A,q,g){this._anchor=new n5(A,q.x,q.y),this._focus={...g}}get isStart(){return this._isStart}set isStart(A){this._isStart=A}get anchor(){return{x:this._anchor.x,y:this._anchor.y}}get focus(){return{...this._focus}}set focus(A){this._focus={...A}}get isActive(){return this._isActive}set isActive(A){this._isActive=A}get isDragging(){return this._isDragging}set isDragging(A){this._isDragging=A}get bounds(){let A=Math.min(this._anchor.x,this._focus.x),q=Math.max(this._anchor.x,this._focus.x),g=Math.min(this._anchor.y,this._focus.y),F=Math.max(this._anchor.y,this._focus.y),E=q-A+1,K=F-g+1;return{x:A,y:g,width:E,height:K}}updateSelectedRenderables(A){this._selectedRenderables=A}get selectedRenderables(){return this._selectedRenderables}updateTouchedRenderables(A){this._touchedRenderables=A}get touchedRenderables(){return this._touchedRenderables}getSelectedText(){return this._selectedRenderables.sort((q,g)=>{let F=q.y,E=g.y;if(F!==E)return F-E;return q.x-g.x}).filter((q)=>!q.isDestroyed).map((q)=>q.getSelectedText()).filter((q)=>q).join(`
6
57
  `)}}function JH(A,q,g){if(!A?.isActive)return null;return{anchorX:A.anchor.x-q,anchorY:A.anchor.y-g,focusX:A.focus.x-q,focusY:A.focus.y-g,isActive:!0}}class NO{getText;getFont;localSelection=null;constructor(A,q){this.getText=A,this.getFont=q}hasSelection(){return this.localSelection!==null}getSelection(){return this.localSelection}shouldStartSelection(A,q,g,F){if(A<0||A>=g||q<0||q>=F)return!1;let E=this.getText(),K=this.getFont(),H=Bj(A,E,K);return H>=0&&H<=E.length}onLocalSelectionChanged(A,q,g){let F=this.localSelection;if(!A?.isActive)return this.localSelection=null,F!==null;let E=this.getText(),K=this.getFont(),H={x:A.anchorX,y:A.anchorY},j={x:A.focusX,y:A.focusY};if(g-1<H.y||0>j.y)return this.localSelection=null,F!==null;let U=0,$=E.length;if(H.y>g-1)return this.localSelection=null,F!==null;else if(H.y>=0&&H.y<=g-1){if(H.x>0)U=Bj(H.x,E,K)}if(j.y<0)return this.localSelection=null,F!==null;else if(j.y>=0&&j.y<=g-1)if(j.x>=0)$=Bj(j.x,E,K);else $=0;if(U<$&&U>=0&&$<=E.length)this.localSelection={start:U,end:$};else this.localSelection=null;return F?.start!==this.localSelection?.start||F?.end!==this.localSelection?.end}}function XH(A,q){let g=globalThis[J4]??={};if(!(A in g))g[A]=q();return g[A]}function _m(A){let q=globalThis[J4];if(q&&A in q)delete q[A]}function Ym(A){let q=globalThis[J4];return q&&A in q}function oq(A){let q=BE[A.name];if(q){if(q.description!==A.description||q.type!==A.type||q.default!==A.default)throw Error(`Environment variable "${A.name}" is already registered with different configuration. Existing: ${JSON.stringify(q)}, New: ${JSON.stringify(A)}`);return}BE[A.name]=A}function Qm(A){let q=A.toLowerCase();return["true","1","on","yes"].includes(q)}function Im(A){let q=process.env[A.name];if(q===void 0&&A.default!==void 0)return A.default;if(q===void 0)throw Error(`Required environment variable ${A.name} is not set. ${A.description}`);switch(A.type){case"boolean":return typeof q==="boolean"?q:Qm(q);case"number":let g=Number(q);if(isNaN(g))throw Error(`Environment variable ${A.name} must be a valid number, got: ${q}`);return g;case"string":default:return q}}class l5{parsedValues=new Map;get(A){if(this.parsedValues.has(A))return this.parsedValues.get(A);if(!(A in BE))throw Error(`Environment variable ${A} is not registered.`);try{let q=Im(BE[A]);return this.parsedValues.set(A,q),q}catch(q){throw Error(`Failed to parse env var ${A}: ${q instanceof Error?q.message:String(q)}`)}}has(A){return A in BE}clearCache(){this.parsedValues.clear()}}function X4(){e$.clearCache()}function M4(){let A=Object.values(BE);if(A.length===0)return`# Environment Variables
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dodopayments-cli",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Official Dodo Payments CLI — manage payments, customers, products, subscriptions, and webhooks from your terminal. Includes an interactive TUI, an AI assistant powered by MCP, and offline webhook testing.",
5
5
  "keywords": [
6
6
  "dodopayments",
package/scripts/build.ts CHANGED
@@ -6,8 +6,20 @@
6
6
  *
7
7
  * The runtime path uses bunfig.toml's preload instead -- both code paths
8
8
  * end up registering the same plugin, just at different lifecycles.
9
+ *
10
+ * After bundling, we inject a tiny Node-compatible prelude that re-execs
11
+ * the bundle under Bun if it's launched by Node. This is required because
12
+ * `target: 'bun'` emits Bun-only runtime APIs (e.g. `import.meta.require`)
13
+ * and our native deps (@opentui/core, keytar) load through Bun's loader.
14
+ *
15
+ * Without this prelude, `bun install -g dodopayments-cli` works on disk
16
+ * but the symlinked `dodo` binary is invoked via `#!/usr/bin/env node`,
17
+ * which crashes immediately with "Qg is not a function" because Node has
18
+ * no `import.meta.require`. The prelude makes Node hand control off to
19
+ * Bun transparently, and gives a clear error if Bun isn't installed.
9
20
  */
10
21
 
22
+ import { readFileSync, writeFileSync } from 'node:fs';
11
23
  import solidPlugin from '@opentui/solid/bun-plugin';
12
24
 
13
25
  const result = await Bun.build({
@@ -25,7 +37,100 @@ if (!result.success) {
25
37
  }
26
38
 
27
39
  const main = result.outputs.find((o) => o.kind === 'entry-point');
28
- if (main) {
29
- const sizeKb = (main.size / 1024).toFixed(0);
30
- console.log(`\u2713 Built ${main.path} (${sizeKb} KB)`);
40
+ if (!main) {
41
+ console.error('Build succeeded but no entry-point output was produced.');
42
+ process.exit(1);
31
43
  }
44
+
45
+ const outPath = main.path;
46
+
47
+ /**
48
+ * Node-safe prelude. Must contain ZERO Bun-only APIs.
49
+ *
50
+ * Why this works:
51
+ * - Top-level await in ESM BLOCKS subsequent top-level statements
52
+ * until it resolves. So under Node, the `await import(...)` inside
53
+ * the `if` block runs to completion (and calls process.exit) before
54
+ * any of the bundle's Bun-only top-level code is reached.
55
+ * - Under Bun, the `if` is skipped and the bundle runs normally.
56
+ *
57
+ * Why not wrap the rest of the bundle in `else { ... }`:
58
+ * - The bundle contains top-level `import ...` declarations, which
59
+ * are syntactically forbidden inside a block. So we cannot wrap.
60
+ * Instead we rely on `process.exit()` inside the `if` to keep Node
61
+ * from ever continuing past it.
62
+ *
63
+ * Bun detection:
64
+ * - `typeof Bun !== 'undefined'` is the documented way to detect Bun.
65
+ * Node has no such global. Deno also lacks it; Deno would also fail
66
+ * on other Bun-only bits below, so the explicit error message is
67
+ * the correct outcome for any non-Bun runtime.
68
+ */
69
+ const prelude = `if (typeof Bun === 'undefined') {
70
+ const { spawnSync } = await import('node:child_process');
71
+ const { existsSync } = await import('node:fs');
72
+ const { fileURLToPath } = await import('node:url');
73
+ const path = await import('node:path');
74
+ const os = await import('node:os');
75
+
76
+ const scriptPath = fileURLToPath(import.meta.url);
77
+ const isWindows = process.platform === 'win32';
78
+
79
+ const which = spawnSync(isWindows ? 'where' : 'which', ['bun'], { encoding: 'utf8' });
80
+ let bun = null;
81
+ if (which.status === 0 && which.stdout) {
82
+ const first = which.stdout.split(/\\r?\\n/).find(Boolean);
83
+ if (first && existsSync(first)) bun = first;
84
+ }
85
+ if (!bun) {
86
+ const candidates = [
87
+ path.join(os.homedir(), '.bun', 'bin', isWindows ? 'bun.exe' : 'bun'),
88
+ '/usr/local/bin/bun',
89
+ '/opt/homebrew/bin/bun',
90
+ ];
91
+ for (const c of candidates) {
92
+ if (existsSync(c)) { bun = c; break; }
93
+ }
94
+ }
95
+
96
+ if (!bun) {
97
+ process.stderr.write(
98
+ 'dodopayments-cli requires the Bun runtime when installed via npm/bun.\\n' +
99
+ '\\n' +
100
+ 'Install Bun: https://bun.com/docs/installation\\n' +
101
+ 'Or download a standalone binary (no runtime required):\\n' +
102
+ ' https://github.com/dodopayments/dodopayments-cli/releases\\n'
103
+ );
104
+ process.exit(1);
105
+ }
106
+
107
+ const child = spawnSync(bun, [scriptPath, ...process.argv.slice(2)], {
108
+ stdio: 'inherit',
109
+ env: process.env,
110
+ });
111
+ if (child.error) {
112
+ process.stderr.write('Failed to launch bun: ' + child.error.message + '\\n');
113
+ process.exit(1);
114
+ }
115
+ if (typeof child.signal === 'string' && child.signal) {
116
+ process.kill(process.pid, child.signal);
117
+ }
118
+ process.exit(child.status ?? 0);
119
+ }
120
+ `;
121
+
122
+ const original = readFileSync(outPath, 'utf8');
123
+
124
+ // Splice the prelude immediately after the shebang (Bun emits it on line 1
125
+ // when bundling an executable). Everything below the shebang is untouched.
126
+ const newlineIdx = original.indexOf('\n');
127
+ const firstLine = newlineIdx >= 0 ? original.slice(0, newlineIdx) : '';
128
+ const hasShebang = firstLine.startsWith('#!');
129
+ const shebang = hasShebang ? firstLine : '';
130
+ const body = hasShebang ? original.slice(newlineIdx + 1) : original;
131
+
132
+ const patched = (shebang ? `${shebang}\n` : '') + prelude + body;
133
+ writeFileSync(outPath, patched);
134
+
135
+ const sizeKb = (Buffer.byteLength(patched, 'utf8') / 1024).toFixed(0);
136
+ console.log(`\u2713 Built ${outPath} (${sizeKb} KB)`);