@lahat-group/cli 2.0.0 → 2.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,61 +1,70 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
3
- var Nt=Object.create;var ve=Object.defineProperty;var Vt=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var q=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Lt=(n,e)=>()=>(n&&(e=n(n=0)),e);var k=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var Mt=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of It(e))!Ft.call(n,i)&&i!==t&&ve(n,i,{get:()=>e[i],enumerable:!(r=Vt(e,i))||r.enumerable});return n};var Ut=(n,e,t)=>(t=n!=null?Nt(Dt(n)):{},Mt(e||!n||!n.__esModule?ve(t,"default",{value:n,enumerable:!0}):t,n));import Dr from"path";import{fileURLToPath as Lr}from"url";var u=Lt(()=>{"use strict"});var N=k(X=>{"use strict";u();var L=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},Y=class extends L{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};X.CommanderError=L;X.InvalidArgumentError=Y});var M=k(Z=>{"use strict";u();var{InvalidArgumentError:Bt}=N(),Q=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new Bt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Wt(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}Z.Argument=Q;Z.humanReadableArgName=Wt});var te=k($e=>{"use strict";u();var{humanReadableArgName:Jt}=M(),ee=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(i=>!i._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((i,s)=>i.name().localeCompare(s.name())),t}compareOptions(e,t){let r=i=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(i=>!i.hidden),r=e._getHelpOption();if(r&&!r.hidden){let i=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!i&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!i&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let i=r.options.filter(s=>!s.hidden);t.push(...i)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>Jt(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,i)=>Math.max(r,t.subcommandTerm(i).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,i)=>Math.max(r,t.argumentTerm(i).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let i=e.parent;i;i=i.parent)r=i.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),i=t.helpWidth||80,s=2,o=2;function c(b,v){if(v){let K=`${b.padEnd(r+o)}${v}`;return t.wrap(K,i-s,r+o)}return b}function a(b){return b.join(`
4
- `).replace(/^/gm," ".repeat(s))}let l=[`Usage: ${t.commandUsage(e)}`,""],h=t.commandDescription(e);h.length>0&&(l=l.concat([t.wrap(h,i,0),""]));let f=t.visibleArguments(e).map(b=>c(t.argumentTerm(b),t.argumentDescription(b)));f.length>0&&(l=l.concat(["Arguments:",a(f),""]));let w=t.visibleOptions(e).map(b=>c(t.optionTerm(b),t.optionDescription(b)));if(w.length>0&&(l=l.concat(["Options:",a(w),""])),this.showGlobalOptions){let b=t.visibleGlobalOptions(e).map(v=>c(t.optionTerm(v),t.optionDescription(v)));b.length>0&&(l=l.concat(["Global Options:",a(b),""]))}let S=t.visibleCommands(e).map(b=>c(t.subcommandTerm(b),t.subcommandDescription(b)));return S.length>0&&(l=l.concat(["Commands:",a(S),""])),l.join(`
3
+ var Ft=Object.create;var $e=Object.defineProperty;var Lt=Object.getOwnPropertyDescriptor;var Ut=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,Bt=Object.prototype.hasOwnProperty;var N=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Wt=(n,e)=>()=>(n&&(e=n(n=0)),e);var P=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var Jt=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ut(e))!Bt.call(n,i)&&i!==t&&$e(n,i,{get:()=>e[i],enumerable:!(r=Lt(e,i))||r.enumerable});return n};var zt=(n,e,t)=>(t=n!=null?Ft(Mt(n)):{},Jt(e||!n||!n.__esModule?$e(t,"default",{value:n,enumerable:!0}):t,n));import Br from"path";import{fileURLToPath as Jr}from"url";var u=Wt(()=>{"use strict"});var H=P(Q=>{"use strict";u();var U=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},X=class extends U{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Q.CommanderError=U;Q.InvalidArgumentError=X});var M=P(ee=>{"use strict";u();var{InvalidArgumentError:Gt}=H(),Z=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new Gt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Kt(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}ee.Argument=Z;ee.humanReadableArgName=Kt});var re=P(Ee=>{"use strict";u();var{humanReadableArgName:Yt}=M(),te=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(i=>!i._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((i,s)=>i.name().localeCompare(s.name())),t}compareOptions(e,t){let r=i=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(i=>!i.hidden),r=e._getHelpOption();if(r&&!r.hidden){let i=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!i&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!i&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let i=r.options.filter(s=>!s.hidden);t.push(...i)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>Yt(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,i)=>Math.max(r,t.subcommandTerm(i).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,i)=>Math.max(r,t.optionTerm(i).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,i)=>Math.max(r,t.argumentTerm(i).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let i=e.parent;i;i=i.parent)r=i.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),i=t.helpWidth||80,s=2,o=2;function c(b,$){if($){let Y=`${b.padEnd(r+o)}${$}`;return t.wrap(Y,i-s,r+o)}return b}function a(b){return b.join(`
4
+ `).replace(/^/gm," ".repeat(s))}let l=[`Usage: ${t.commandUsage(e)}`,""],h=t.commandDescription(e);h.length>0&&(l=l.concat([t.wrap(h,i,0),""]));let f=t.visibleArguments(e).map(b=>c(t.argumentTerm(b),t.argumentDescription(b)));f.length>0&&(l=l.concat(["Arguments:",a(f),""]));let w=t.visibleOptions(e).map(b=>c(t.optionTerm(b),t.optionDescription(b)));if(w.length>0&&(l=l.concat(["Options:",a(w),""])),this.showGlobalOptions){let b=t.visibleGlobalOptions(e).map($=>c(t.optionTerm($),t.optionDescription($)));b.length>0&&(l=l.concat(["Global Options:",a(b),""]))}let S=t.visibleCommands(e).map(b=>c(t.subcommandTerm(b),t.subcommandDescription(b)));return S.length>0&&(l=l.concat(["Commands:",a(S),""])),l.join(`
5
5
  `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,r,i=40){let s=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",o=new RegExp(`[\\n][${s}]+`);if(e.match(o))return e;let c=t-r;if(c<i)return e;let a=e.slice(0,r),l=e.slice(r).replace(`\r
6
6
  `,`
7
7
  `),h=" ".repeat(r),w="\\s\u200B",S=new RegExp(`
8
- |.{1,${c-1}}([${w}]|$)|[^${w}]+?([${w}]|$)`,"g"),b=l.match(S)||[];return a+b.map((v,K)=>v===`
9
- `?"":(K>0?h:"")+v.trimEnd()).join(`
10
- `)}};$e.Help=ee});var se=k(ie=>{"use strict";u();var{InvalidArgumentError:zt}=N(),re=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=Kt(e);this.short=r.shortFlag,this.long=r.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}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new zt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return Gt(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ne=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let i=this.negativeOptions.get(r).presetArg,s=i!==void 0?i:!1;return t.negate===(s===e)}};function Gt(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Kt(n){let e,t,r=n.split(/[ |,]+/);return r.length>1&&!/^[[<]/.test(r[1])&&(e=r.shift()),t=r.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}ie.Option=re;ie.DualOptions=ne});var ke=k(Se=>{"use strict";u();function Yt(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let r=0;r<=n.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let i=1;i<=n.length;i++){let s=1;n[i-1]===e[r-1]?s=0:s=1,t[i][r]=Math.min(t[i-1][r]+1,t[i][r-1]+1,t[i-1][r-1]+s),i>1&&r>1&&n[i-1]===e[r-2]&&n[i-2]===e[r-1]&&(t[i][r]=Math.min(t[i][r],t[i-2][r-2]+1))}return t[n.length][e.length]}function Xt(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(o=>o.slice(2)));let r=[],i=3,s=.4;return e.forEach(o=>{if(o.length<=1)return;let c=Yt(n,o),a=Math.max(n.length,o.length);(a-c)/a>s&&(c<i?(i=c,r=[o]):c===i&&r.push(o))}),r.sort((o,c)=>o.localeCompare(c)),t&&(r=r.map(o=>`--${o}`)),r.length>1?`
8
+ |.{1,${c-1}}([${w}]|$)|[^${w}]+?([${w}]|$)`,"g"),b=l.match(S)||[];return a+b.map(($,Y)=>$===`
9
+ `?"":(Y>0?h:"")+$.trimEnd()).join(`
10
+ `)}};Ee.Help=te});var oe=P(se=>{"use strict";u();var{InvalidArgumentError:Xt}=H(),ne=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=Zt(e);this.short=r.shortFlag,this.long=r.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}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new Xt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return Qt(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ie=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let i=this.negativeOptions.get(r).presetArg,s=i!==void 0?i:!1;return t.negate===(s===e)}};function Qt(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Zt(n){let e,t,r=n.split(/[ |,]+/);return r.length>1&&!/^[[<]/.test(r[1])&&(e=r.shift()),t=r.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}se.Option=ne;se.DualOptions=ie});var Pe=P(Se=>{"use strict";u();function er(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let r=0;r<=n.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let i=1;i<=n.length;i++){let s=1;n[i-1]===e[r-1]?s=0:s=1,t[i][r]=Math.min(t[i-1][r]+1,t[i][r-1]+1,t[i-1][r-1]+s),i>1&&r>1&&n[i-1]===e[r-2]&&n[i-2]===e[r-1]&&(t[i][r]=Math.min(t[i][r],t[i-2][r-2]+1))}return t[n.length][e.length]}function tr(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(o=>o.slice(2)));let r=[],i=3,s=.4;return e.forEach(o=>{if(o.length<=1)return;let c=er(n,o),a=Math.max(n.length,o.length);(a-c)/a>s&&(c<i?(i=c,r=[o]):c===i&&r.push(o))}),r.sort((o,c)=>o.localeCompare(c)),t&&(r=r.map(o=>`--${o}`)),r.length>1?`
11
11
  (Did you mean one of ${r.join(", ")}?)`:r.length===1?`
12
- (Did you mean ${r[0]}?)`:""}Se.suggestSimilar=Xt});var qe=k(He=>{"use strict";u();var Qt=q("events").EventEmitter,oe=q("child_process"),j=q("path"),ae=q("fs"),g=q("process"),{Argument:Zt,humanReadableArgName:er}=M(),{CommanderError:ce}=N(),{Help:tr}=te(),{Option:Pe,DualOptions:rr}=se(),{suggestSimilar:Te}=ke(),ue=class n extends Qt{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",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._outputConfiguration={writeOut:t=>g.stdout.write(t),writeErr:t=>g.stderr.write(t),getOutHelpWidth:()=>g.stdout.isTTY?g.stdout.columns:void 0,getErrHelpWidth:()=>g.stderr.isTTY?g.stderr.columns:void 0,outputError:(t,r)=>r(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,r){let i=t,s=r;typeof i=="object"&&i!==null&&(s=i,i=null),s=s||{};let[,o,c]=e.match(/([^ ]+) *(.*)/),a=this.createCommand(o);return i&&(a.description(i),a._executableHandler=!0),s.isDefault&&(this._defaultCommandName=a._name),a._hidden=!!(s.noHelp||s.hidden),a._executableFile=s.executableFile||null,c&&a.arguments(c),this._registerCommand(a),a.parent=this,a.copyInheritedSettings(this),i?this:a}createCommand(e){return new n(e)}createHelp(){return Object.assign(new tr,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
13
- - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new Zt(e,t)}argument(e,t,r,i){let s=this.createArgument(e,t);return typeof r=="function"?s.default(i).argParser(r):s.default(r),this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,r,i]=e.match(/([^ ]+) *(.*)/),s=t??"display help for command",o=this.createCommand(r);return o.helpOption(!1),i&&o.arguments(i),s&&o.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=o,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
14
- Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,r){this._exitCallback&&this._exitCallback(new ce(e,t,r)),g.exit(e)}action(e){let t=r=>{let i=this.registeredArguments.length,s=r.slice(0,i);return this._storeOptionsAsProperties?s[i]=this:s[i]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new Pe(e,t)}_callParseArg(e,t,r,i){try{return e.parseArg(t,r)}catch(s){if(s.code==="commander.invalidArgument"){let o=`${i} ${s.message}`;this.error(o,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let r=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${r}'
15
- - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=i=>[i.name()].concat(i.aliases()),r=t(e).find(i=>this._findCommand(i));if(r){let i=t(this._findCommand(r)).join("|"),s=t(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${i}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),r=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let i=(s,o,c)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let a=this.getOptionValue(r);s!==null&&e.parseArg?s=this._callParseArg(e,s,a,o):s!==null&&e.variadic&&(s=e._concatValue(s,a)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(r,s,c)};return this.on("option:"+t,s=>{let o=`error: option '${e.flags}' argument '${s}' is invalid.`;i(s,o,"cli")}),e.envVar&&this.on("optionEnv:"+t,s=>{let o=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;i(s,o,"env")}),this}_optionEx(e,t,r,i,s){if(typeof t=="object"&&t instanceof Pe)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(t,r);if(o.makeOptionMandatory(!!e.mandatory),typeof i=="function")o.default(s).argParser(i);else if(i instanceof RegExp){let c=i;i=(a,l)=>{let h=c.exec(a);return h?h[0]:l},o.default(s).argParser(i)}else o.default(i);return this.addOption(o)}option(e,t,r,i){return this._optionEx({},e,t,r,i)}requiredOption(e,t,r,i){return this._optionEx({mandatory:!0},e,t,r,i)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){g.versions?.electron&&(t.from="electron");let i=g.execArgv??[];(i.includes("-e")||i.includes("--eval")||i.includes("-p")||i.includes("--print"))&&(t.from="eval")}e===void 0&&(e=g.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":g.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,t){let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_executeSubCommand(e,t){t=t.slice();let r=!1,i=[".js",".ts",".tsx",".mjs",".cjs"];function s(h,f){let w=j.resolve(h,f);if(ae.existsSync(w))return w;if(i.includes(j.extname(f)))return;let S=i.find(b=>ae.existsSync(`${w}${b}`));if(S)return`${w}${S}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,c=this._executableDir||"";if(this._scriptPath){let h;try{h=ae.realpathSync(this._scriptPath)}catch{h=this._scriptPath}c=j.resolve(j.dirname(h),c)}if(c){let h=s(c,o);if(!h&&!e._executableFile&&this._scriptPath){let f=j.basename(this._scriptPath,j.extname(this._scriptPath));f!==this._name&&(h=s(c,`${f}-${e._name}`))}o=h||o}r=i.includes(j.extname(o));let a;g.platform!=="win32"?r?(t.unshift(o),t=Re(g.execArgv).concat(t),a=oe.spawn(g.argv[0],t,{stdio:"inherit"})):a=oe.spawn(o,t,{stdio:"inherit"}):(t.unshift(o),t=Re(g.execArgv).concat(t),a=oe.spawn(g.execPath,t,{stdio:"inherit"})),a.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{g.on(f,()=>{a.killed===!1&&a.exitCode===null&&a.kill(f)})});let l=this._exitCallback;a.on("close",h=>{h=h??1,l?l(new ce(h,"commander.executeSubCommandAsync","(close)")):g.exit(h)}),a.on("error",h=>{if(h.code==="ENOENT"){let f=c?`searched for local subcommand relative to directory '${c}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",w=`'${o}' does not exist
12
+ (Did you mean ${r[0]}?)`:""}Se.suggestSimilar=tr});var Ne=P(qe=>{"use strict";u();var rr=N("events").EventEmitter,ae=N("child_process"),A=N("path"),ce=N("fs"),g=N("process"),{Argument:nr,humanReadableArgName:ir}=M(),{CommanderError:ue}=H(),{Help:sr}=re(),{Option:ke,DualOptions:or}=oe(),{suggestSimilar:Re}=Pe(),le=class n extends rr{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",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._outputConfiguration={writeOut:t=>g.stdout.write(t),writeErr:t=>g.stderr.write(t),getOutHelpWidth:()=>g.stdout.isTTY?g.stdout.columns:void 0,getErrHelpWidth:()=>g.stderr.isTTY?g.stderr.columns:void 0,outputError:(t,r)=>r(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,r){let i=t,s=r;typeof i=="object"&&i!==null&&(s=i,i=null),s=s||{};let[,o,c]=e.match(/([^ ]+) *(.*)/),a=this.createCommand(o);return i&&(a.description(i),a._executableHandler=!0),s.isDefault&&(this._defaultCommandName=a._name),a._hidden=!!(s.noHelp||s.hidden),a._executableFile=s.executableFile||null,c&&a.arguments(c),this._registerCommand(a),a.parent=this,a.copyInheritedSettings(this),i?this:a}createCommand(e){return new n(e)}createHelp(){return Object.assign(new sr,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
13
+ - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new nr(e,t)}argument(e,t,r,i){let s=this.createArgument(e,t);return typeof r=="function"?s.default(i).argParser(r):s.default(r),this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,r,i]=e.match(/([^ ]+) *(.*)/),s=t??"display help for command",o=this.createCommand(r);return o.helpOption(!1),i&&o.arguments(i),s&&o.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=o,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
14
+ Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,r){this._exitCallback&&this._exitCallback(new ue(e,t,r)),g.exit(e)}action(e){let t=r=>{let i=this.registeredArguments.length,s=r.slice(0,i);return this._storeOptionsAsProperties?s[i]=this:s[i]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new ke(e,t)}_callParseArg(e,t,r,i){try{return e.parseArg(t,r)}catch(s){if(s.code==="commander.invalidArgument"){let o=`${i} ${s.message}`;this.error(o,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let r=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${r}'
15
+ - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=i=>[i.name()].concat(i.aliases()),r=t(e).find(i=>this._findCommand(i));if(r){let i=t(this._findCommand(r)).join("|"),s=t(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${i}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),r=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let i=(s,o,c)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let a=this.getOptionValue(r);s!==null&&e.parseArg?s=this._callParseArg(e,s,a,o):s!==null&&e.variadic&&(s=e._concatValue(s,a)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(r,s,c)};return this.on("option:"+t,s=>{let o=`error: option '${e.flags}' argument '${s}' is invalid.`;i(s,o,"cli")}),e.envVar&&this.on("optionEnv:"+t,s=>{let o=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;i(s,o,"env")}),this}_optionEx(e,t,r,i,s){if(typeof t=="object"&&t instanceof ke)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(t,r);if(o.makeOptionMandatory(!!e.mandatory),typeof i=="function")o.default(s).argParser(i);else if(i instanceof RegExp){let c=i;i=(a,l)=>{let h=c.exec(a);return h?h[0]:l},o.default(s).argParser(i)}else o.default(i);return this.addOption(o)}option(e,t,r,i){return this._optionEx({},e,t,r,i)}requiredOption(e,t,r,i){return this._optionEx({mandatory:!0},e,t,r,i)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){g.versions?.electron&&(t.from="electron");let i=g.execArgv??[];(i.includes("-e")||i.includes("--eval")||i.includes("-p")||i.includes("--print"))&&(t.from="eval")}e===void 0&&(e=g.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":g.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,t){let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_executeSubCommand(e,t){t=t.slice();let r=!1,i=[".js",".ts",".tsx",".mjs",".cjs"];function s(h,f){let w=A.resolve(h,f);if(ce.existsSync(w))return w;if(i.includes(A.extname(f)))return;let S=i.find(b=>ce.existsSync(`${w}${b}`));if(S)return`${w}${S}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,c=this._executableDir||"";if(this._scriptPath){let h;try{h=ce.realpathSync(this._scriptPath)}catch{h=this._scriptPath}c=A.resolve(A.dirname(h),c)}if(c){let h=s(c,o);if(!h&&!e._executableFile&&this._scriptPath){let f=A.basename(this._scriptPath,A.extname(this._scriptPath));f!==this._name&&(h=s(c,`${f}-${e._name}`))}o=h||o}r=i.includes(A.extname(o));let a;g.platform!=="win32"?r?(t.unshift(o),t=Te(g.execArgv).concat(t),a=ae.spawn(g.argv[0],t,{stdio:"inherit"})):a=ae.spawn(o,t,{stdio:"inherit"}):(t.unshift(o),t=Te(g.execArgv).concat(t),a=ae.spawn(g.execPath,t,{stdio:"inherit"})),a.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{g.on(f,()=>{a.killed===!1&&a.exitCode===null&&a.kill(f)})});let l=this._exitCallback;a.on("close",h=>{h=h??1,l?l(new ue(h,"commander.executeSubCommandAsync","(close)")):g.exit(h)}),a.on("error",h=>{if(h.code==="ENOENT"){let f=c?`searched for local subcommand relative to directory '${c}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",w=`'${o}' does not exist
16
16
  - if '${e._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
17
17
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
18
- - ${f}`;throw new Error(w)}else if(h.code==="EACCES")throw new Error(`'${o}' not executable`);if(!l)g.exit(1);else{let f=new ce(1,"commander.executeSubCommandAsync","(error)");f.nestedError=h,l(f)}}),this.runningCommand=a}_dispatchSubcommand(e,t,r){let i=this._findCommand(e);i||this.help({error:!0});let s;return s=this._chainOrCallSubCommandHook(s,i,"preSubcommand"),s=this._chainOrCall(s,()=>{if(i._executableHandler)this._executeSubCommand(i,t.concat(r));else return i._parseCommand(t,r)}),s}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(r,i,s)=>{let o=i;if(i!==null&&r.parseArg){let c=`error: command-argument value '${i}' is invalid for argument '${r.name()}'.`;o=this._callParseArg(r,i,s,c)}return o};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,i)=>{let s=r.defaultValue;r.variadic?i<this.args.length?(s=this.args.slice(i),r.parseArg&&(s=s.reduce((o,c)=>e(r,c,o),r.defaultValue))):s===void 0&&(s=[]):i<this.args.length&&(s=this.args[i],r.parseArg&&(s=e(r,s,r.defaultValue))),t[i]=s}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let r=e,i=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[t]!==void 0).forEach(s=>{s._lifeCycleHooks[t].forEach(o=>{i.push({hookedCommand:s,callback:o})})}),t==="postAction"&&i.reverse(),i.forEach(s=>{r=this._chainOrCall(r,()=>s.callback(s.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let i=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(s=>{i=this._chainOrCall(i,()=>s(this,t))}),i}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=()=>{r.unknown.length>0&&this.unknownOption(r.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){i(),this._processArguments();let o;return o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent&&(o=this._chainOrCall(o,()=>{this.parent.emit(s,e,t)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent&&this.parent.listenerCount(s))i(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(i(),this._processArguments())}else this.commands.length?(i(),this.help({error:!0})):(i(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let i=r.attributeName();return this.getOptionValue(i)===void 0?!1:this.getOptionValueSource(i)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let i=e.find(s=>r.conflictsWith.includes(s.attributeName()));i&&this._conflictingOption(r,i)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],i=t,s=e.slice();function o(a){return a.length>1&&a[0]==="-"}let c=null;for(;s.length;){let a=s.shift();if(a==="--"){i===r&&i.push(a),i.push(...s);break}if(c&&!o(a)){this.emit(`option:${c.name()}`,a);continue}if(c=null,o(a)){let l=this._findOption(a);if(l){if(l.required){let h=s.shift();h===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,h)}else if(l.optional){let h=null;s.length>0&&!o(s[0])&&(h=s.shift()),this.emit(`option:${l.name()}`,h)}else this.emit(`option:${l.name()}`);c=l.variadic?l:null;continue}}if(a.length>2&&a[0]==="-"&&a[1]!=="-"){let l=this._findOption(`-${a[1]}`);if(l){l.required||l.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${l.name()}`,a.slice(2)):(this.emit(`option:${l.name()}`),s.unshift(`-${a.slice(2)}`));continue}}if(/^--[^=]+=/.test(a)){let l=a.indexOf("="),h=this._findOption(a.slice(0,l));if(h&&(h.required||h.optional)){this.emit(`option:${h.name()}`,a.slice(l+1));continue}}if(o(a)&&(i=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(a)){t.push(a),s.length>0&&r.push(...s);break}else if(this._getHelpCommand()&&a===this._getHelpCommand().name()){t.push(a),s.length>0&&t.push(...s);break}else if(this._defaultCommandName){r.push(a),s.length>0&&r.push(...s);break}}if(this._passThroughOptions){i.push(a),s.length>0&&i.push(...s);break}i.push(a)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let i=this.options[r].attributeName();e[i]=i===this._versionOptionName?this._version:this[i]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
18
+ - ${f}`;throw new Error(w)}else if(h.code==="EACCES")throw new Error(`'${o}' not executable`);if(!l)g.exit(1);else{let f=new ue(1,"commander.executeSubCommandAsync","(error)");f.nestedError=h,l(f)}}),this.runningCommand=a}_dispatchSubcommand(e,t,r){let i=this._findCommand(e);i||this.help({error:!0});let s;return s=this._chainOrCallSubCommandHook(s,i,"preSubcommand"),s=this._chainOrCall(s,()=>{if(i._executableHandler)this._executeSubCommand(i,t.concat(r));else return i._parseCommand(t,r)}),s}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(r,i,s)=>{let o=i;if(i!==null&&r.parseArg){let c=`error: command-argument value '${i}' is invalid for argument '${r.name()}'.`;o=this._callParseArg(r,i,s,c)}return o};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,i)=>{let s=r.defaultValue;r.variadic?i<this.args.length?(s=this.args.slice(i),r.parseArg&&(s=s.reduce((o,c)=>e(r,c,o),r.defaultValue))):s===void 0&&(s=[]):i<this.args.length&&(s=this.args[i],r.parseArg&&(s=e(r,s,r.defaultValue))),t[i]=s}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let r=e,i=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[t]!==void 0).forEach(s=>{s._lifeCycleHooks[t].forEach(o=>{i.push({hookedCommand:s,callback:o})})}),t==="postAction"&&i.reverse(),i.forEach(s=>{r=this._chainOrCall(r,()=>s.callback(s.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let i=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(s=>{i=this._chainOrCall(i,()=>s(this,t))}),i}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=()=>{r.unknown.length>0&&this.unknownOption(r.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){i(),this._processArguments();let o;return o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent&&(o=this._chainOrCall(o,()=>{this.parent.emit(s,e,t)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent&&this.parent.listenerCount(s))i(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(i(),this._processArguments())}else this.commands.length?(i(),this.help({error:!0})):(i(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let i=r.attributeName();return this.getOptionValue(i)===void 0?!1:this.getOptionValueSource(i)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let i=e.find(s=>r.conflictsWith.includes(s.attributeName()));i&&this._conflictingOption(r,i)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],i=t,s=e.slice();function o(a){return a.length>1&&a[0]==="-"}let c=null;for(;s.length;){let a=s.shift();if(a==="--"){i===r&&i.push(a),i.push(...s);break}if(c&&!o(a)){this.emit(`option:${c.name()}`,a);continue}if(c=null,o(a)){let l=this._findOption(a);if(l){if(l.required){let h=s.shift();h===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,h)}else if(l.optional){let h=null;s.length>0&&!o(s[0])&&(h=s.shift()),this.emit(`option:${l.name()}`,h)}else this.emit(`option:${l.name()}`);c=l.variadic?l:null;continue}}if(a.length>2&&a[0]==="-"&&a[1]!=="-"){let l=this._findOption(`-${a[1]}`);if(l){l.required||l.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${l.name()}`,a.slice(2)):(this.emit(`option:${l.name()}`),s.unshift(`-${a.slice(2)}`));continue}}if(/^--[^=]+=/.test(a)){let l=a.indexOf("="),h=this._findOption(a.slice(0,l));if(h&&(h.required||h.optional)){this.emit(`option:${h.name()}`,a.slice(l+1));continue}}if(o(a)&&(i=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(a)){t.push(a),s.length>0&&r.push(...s);break}else if(this._getHelpCommand()&&a===this._getHelpCommand().name()){t.push(a),s.length>0&&t.push(...s);break}else if(this._defaultCommandName){r.push(a),s.length>0&&r.push(...s);break}}if(this._passThroughOptions){i.push(a),s.length>0&&i.push(...s);break}i.push(a)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let i=this.options[r].attributeName();e[i]=i===this._versionOptionName?this._version:this[i]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
19
19
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
20
20
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
21
- `),this.outputHelp({error:!0}));let r=t||{},i=r.exitCode||1,s=r.code||"commander.error";this._exit(i,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in g.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,g.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new rr(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(i=>!t(i)).forEach(i=>{this.setOptionValueWithSource(i,r.implied[i],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=o=>{let c=o.attributeName(),a=this.getOptionValue(c),l=this.options.find(f=>f.negate&&c===f.attributeName()),h=this.options.find(f=>!f.negate&&c===f.attributeName());return l&&(l.presetArg===void 0&&a===!1||l.presetArg!==void 0&&a===l.presetArg)?l:h||o},i=o=>{let c=r(o),a=c.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},s=`error: ${i(e)} cannot be used with ${i(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let i=[],s=this;do{let o=s.createHelp().visibleOptions(s).filter(c=>c.long).map(c=>c.long);i=i.concat(o),s=s.parent}while(s&&!s._enablePositionalOptions);t=Te(e,i)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(s=>{i.push(s.name()),s.alias()&&i.push(s.alias())}),t=Te(e,i)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let i=this.createOption(t,r);return this._versionOptionName=i.attributeName(),this._registerOption(i),this.on("option:"+i.name(),()=>{this._outputConfiguration.writeOut(`${e}
22
- `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let i=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${i}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>er(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=j.basename(e,j.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},r;return t.error?r=i=>this._outputConfiguration.writeErr(i):r=i=>this._outputConfiguration.writeOut(i),t.write=e.write||r,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let i=this.helpInformation(r);if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=g.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
21
+ `),this.outputHelp({error:!0}));let r=t||{},i=r.exitCode||1,s=r.code||"commander.error";this._exit(i,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in g.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,g.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new or(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(i=>!t(i)).forEach(i=>{this.setOptionValueWithSource(i,r.implied[i],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=o=>{let c=o.attributeName(),a=this.getOptionValue(c),l=this.options.find(f=>f.negate&&c===f.attributeName()),h=this.options.find(f=>!f.negate&&c===f.attributeName());return l&&(l.presetArg===void 0&&a===!1||l.presetArg!==void 0&&a===l.presetArg)?l:h||o},i=o=>{let c=r(o),a=c.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},s=`error: ${i(e)} cannot be used with ${i(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let i=[],s=this;do{let o=s.createHelp().visibleOptions(s).filter(c=>c.long).map(c=>c.long);i=i.concat(o),s=s.parent}while(s&&!s._enablePositionalOptions);t=Re(e,i)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(s=>{i.push(s.name()),s.alias()&&i.push(s.alias())}),t=Re(e,i)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let i=this.createOption(t,r);return this._versionOptionName=i.attributeName(),this._registerOption(i),this.on("option:"+i.name(),()=>{this._outputConfiguration.writeOut(`${e}
22
+ `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let i=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${i}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>ir(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=A.basename(e,A.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},r;return t.error?r=i=>this._outputConfiguration.writeErr(i):r=i=>this._outputConfiguration.writeOut(i),t.write=e.write||r,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let i=this.helpInformation(r);if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=g.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
23
23
  Expecting one of '${r.join("', '")}'`);let i=`${e}Help`;return this.on(i,s=>{let o;typeof t=="function"?o=t({error:s.error,command:s.command}):o=t,o&&s.write(`${o}
24
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Re(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",i="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?t=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=s[1],/^\d+$/.test(s[3])?i=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=s[1],r=s[3],i=s[4]),t&&i!=="0"?`${t}=${r}:${parseInt(i)+1}`:e})}He.Command=ue});var De=k(O=>{"use strict";u();var{Argument:Ne}=M(),{Command:le}=qe(),{CommanderError:nr,InvalidArgumentError:Ve}=N(),{Help:ir}=te(),{Option:Ie}=se();O.program=new le;O.createCommand=n=>new le(n);O.createOption=(n,e)=>new Ie(n,e);O.createArgument=(n,e)=>new Ne(n,e);O.Command=le;O.Option=Ie;O.Argument=Ne;O.Help=ir;O.CommanderError=nr;O.InvalidArgumentError=Ve;O.InvalidOptionArgumentError=Ve});u();u();var Fe=Ut(De(),1),{program:y,createCommand:nn,createArgument:sn,createOption:on,CommanderError:an,InvalidArgumentError:cn,InvalidOptionArgumentError:un,Command:ln,Argument:hn,Option:dn,Help:mn}=Fe.default;u();import{existsSync as Or}from"fs";u();u();u();u();var _=class extends Error{response;request;options;constructor(e,t,r){let i=e.status||e.status===0?e.status:"",s=e.statusText??"",o=`${i} ${s}`.trim(),c=o?`status code ${o}`:"an unknown error";super(`Request failed with ${c}: ${t.method} ${t.url}`),this.name="HTTPError",this.response=e,this.request=t,this.options=r}};u();var R=class extends Error{name="NonError";value;constructor(e){let t="Non-error value was thrown";try{typeof e=="string"?t=e:e&&typeof e=="object"&&"message"in e&&typeof e.message=="string"&&(t=e.message)}catch{}super(t),this.value=e}};u();var H=class extends Error{name="ForceRetryError";customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new R(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:"Forced retry",t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};u();u();var he=(()=>{let n=!1,e=!1,t=typeof globalThis.ReadableStream=="function",r=typeof globalThis.Request=="function";if(t&&r)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return n&&!e})(),Le=typeof globalThis.AbortController=="function",U=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Me=typeof globalThis.ReadableStream=="function",Ue=typeof globalThis.FormData=="function",B=["get","post","put","patch","head","delete"],sr=()=>{};sr();var Be={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},W=2147483647,We=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,J=Symbol("stop"),V=class{options;constructor(e){this.options=e}},Je=n=>new V(n),ze={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},Ge={next:!0},Ke={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0};var or=n=>{if(!n)return 0;if(n instanceof FormData){let e=0;for(let[t,r]of n)e+=We,e+=new TextEncoder().encode(`Content-Disposition: form-data; name="${t}"`).length,e+=typeof r=="string"?new TextEncoder().encode(r).length:r.size;return e}if(n instanceof Blob)return n.size;if(n instanceof ArrayBuffer)return n.byteLength;if(typeof n=="string")return new TextEncoder().encode(n).length;if(n instanceof URLSearchParams)return new TextEncoder().encode(n.toString()).length;if("byteLength"in n)return n.byteLength;if(typeof n=="object"&&n!==null)try{let e=JSON.stringify(n);return new TextEncoder().encode(e).length}catch{return 0}return 0},Ye=(n,e,t)=>{let r,i=0;return n.pipeThrough(new TransformStream({transform(s,o){if(o.enqueue(s),r){i+=r.byteLength;let c=e===0?0:i/e;c>=1&&(c=1-Number.EPSILON),t?.({percent:c,totalBytes:Math.max(e,i),transferredBytes:i},r)}r=s},flush(){r&&(i+=r.byteLength,t?.({percent:1,totalBytes:Math.max(e,i),transferredBytes:i},r))}}))},Xe=(n,e)=>{if(!n.body)return n;if(n.status===204)return new Response(null,{status:n.status,statusText:n.statusText,headers:n.headers});let t=Math.max(0,Number(n.headers.get("content-length"))||0);return new Response(Ye(n.body,t,e),{status:n.status,statusText:n.statusText,headers:n.headers})},Qe=(n,e,t)=>{if(!n.body)return n;let r=or(t??n.body);return new Request(n,{duplex:"half",body:Ye(n.body,r,e)})};u();u();var $=n=>n!==null&&typeof n=="object";var I=(...n)=>{for(let e of n)if((!$(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return pe({},...n)},de=(n={},e={})=>{let t=new globalThis.Headers(n),r=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(let[s,o]of i.entries())r&&o==="undefined"||o===void 0?t.delete(s):t.set(s,o);return t};function z(n,e,t){return Object.hasOwn(e,t)&&e[t]===void 0?[]:pe(n[t]??[],e[t]??[])}var me=(n={},e={})=>({beforeRequest:z(n,e,"beforeRequest"),beforeRetry:z(n,e,"beforeRetry"),afterResponse:z(n,e,"afterResponse"),beforeError:z(n,e,"beforeError")}),ar=(n,e)=>{let t=new URLSearchParams;for(let r of[n,e])if(r!==void 0)if(r instanceof URLSearchParams)for(let[i,s]of r.entries())t.append(i,s);else if(Array.isArray(r))for(let i of r){if(!Array.isArray(i)||i.length!==2)throw new TypeError("Array search parameters must be provided in [[key, value], ...] format");t.append(String(i[0]),String(i[1]))}else if($(r))for(let[i,s]of Object.entries(r))s!==void 0&&t.append(i,String(s));else{let i=new URLSearchParams(r);for(let[s,o]of i.entries())t.append(s,o)}return t},pe=(...n)=>{let e={},t={},r={},i,s=[];for(let o of n)if(Array.isArray(o))Array.isArray(e)||(e=[]),e=[...e,...o];else if($(o)){for(let[c,a]of Object.entries(o)){if(c==="signal"&&a instanceof globalThis.AbortSignal){s.push(a);continue}if(c==="context"){if(a!=null&&(!$(a)||Array.isArray(a)))throw new TypeError("The `context` option must be an object");e={...e,context:a==null?{}:{...e.context,...a}};continue}if(c==="searchParams"){a==null?i=void 0:i=i===void 0?a:ar(i,a);continue}$(a)&&c in e&&(a=pe(e[c],a)),e={...e,[c]:a}}$(o.hooks)&&(r=me(r,o.hooks),e.hooks=r),$(o.headers)&&(t=de(t,o.headers),e.headers=t)}return i!==void 0&&(e.searchParams=i),s.length>0&&(s.length===1?e.signal=s[0]:U?e.signal=AbortSignal.any(s):e.signal=s.at(-1)),e};u();var et=n=>B.includes(n)?n.toUpperCase():n,cr=["get","put","head","delete","options","trace"],ur=[408,413,429,500,502,503,504],lr=[413,429,503],Ze={limit:2,methods:cr,statusCodes:ur,afterStatusCodes:lr,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:n=>.3*2**(n-1)*1e3,jitter:void 0,retryOnTimeout:!1},tt=(n={})=>{if(typeof n=="number")return{...Ze,limit:n};if(n.methods&&!Array.isArray(n.methods))throw new Error("retry.methods must be an array");if(n.methods&&=n.methods.map(t=>t.toLowerCase()),n.statusCodes&&!Array.isArray(n.statusCodes))throw new Error("retry.statusCodes must be an array");let e=Object.fromEntries(Object.entries(n).filter(([,t])=>t!==void 0));return{...Ze,...e}};u();u();var P=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};async function fe(n,e,t,r){return new Promise((i,s)=>{let o=setTimeout(()=>{t&&t.abort(),s(new P(n))},r.timeout);r.fetch(n,e).then(i).catch(s).then(()=>{clearTimeout(o)})})}u();async function ge(n,{signal:e}){return new Promise((t,r)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(s),r(e.reason)}let s=setTimeout(()=>{e?.removeEventListener("abort",i),t()},n)})}u();var rt=(n,e)=>{let t={};for(let r in e)Object.hasOwn(e,r)&&!(r in Ke)&&!(r in ze)&&(!(r in n)||r in Ge)&&(t[r]=e[r]);return t},nt=n=>n===void 0?!1:Array.isArray(n)?n.length>0:n instanceof URLSearchParams?n.size>0:typeof n=="object"?Object.keys(n).length>0:typeof n=="string"?n.trim().length>0:!!n;u();function it(n){return n instanceof _||n?.name===_.name}function st(n){return n instanceof P||n?.name===P.name}var D=class n{static create(e,t){let r=new n(e,t),i=async()=>{if(typeof r.#e.timeout=="number"&&r.#e.timeout>W)throw new RangeError(`The \`timeout\` option cannot be greater than ${W}`);await Promise.resolve();let o=await r.#b();for(let c of r.#e.hooks.afterResponse){let a=r.#d(o.clone()),l;try{l=await c(r.request,r.#c(),a,{retryCount:r.#r})}catch(f){throw r.#s(a),r.#s(o),f}if(l instanceof V)throw r.#s(a),r.#s(o),new H(l.options);let h=l instanceof globalThis.Response?l:o;a!==h&&r.#s(a),o!==h&&r.#s(o),o=h}if(r.#d(o),!o.ok&&(typeof r.#e.throwHttpErrors=="function"?r.#e.throwHttpErrors(o.status):r.#e.throwHttpErrors)){let c=new _(o,r.request,r.#c());for(let a of r.#e.hooks.beforeError)c=await a(c,{retryCount:r.#r});throw c}if(r.#e.onDownloadProgress){if(typeof r.#e.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Me)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let c=o.clone();return r.#s(o),Xe(c,r.#e.onDownloadProgress)}return o},s=r.#m(i).finally(()=>{let o=r.#o;r.#l(o?.body??void 0),r.#l(r.request.body??void 0)});for(let[o,c]of Object.entries(Be))o==="bytes"&&typeof globalThis.Response?.prototype?.bytes!="function"||(s[o]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||c);let a=await s;if(o==="json"){if(a.status===204)return"";let l=await a.text();return l===""?"":t.parseJson?t.parseJson(l):JSON.parse(l)}return a[o]()});return s}static#f(e){return e&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)):e}request;#n;#r=0;#t;#e;#o;#i;#a;constructor(e,t={}){if(this.#t=e,this.#e={...t,headers:de(this.#t.headers,t.headers),hooks:me({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:et(t.method??this.#t.method??"GET"),prefixUrl:String(t.prefixUrl||""),retry:tt(t.retry),throwHttpErrors:t.throwHttpErrors??!0,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis),context:t.context??{}},typeof this.#t!="string"&&!(this.#t instanceof URL||this.#t instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this.#e.prefixUrl&&typeof this.#t=="string"){if(this.#t.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this.#e.prefixUrl.endsWith("/")||(this.#e.prefixUrl+="/"),this.#t=this.#e.prefixUrl+this.#t}Le&&U&&(this.#i=this.#e.signal??this.#t.signal,this.#n=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#n.signal]):this.#n.signal),he&&(this.#e.duplex="half"),this.#e.json!==void 0&&(this.#e.body=this.#e.stringifyJson?.(this.#e.json)??JSON.stringify(this.#e.json),this.#e.headers.set("content-type",this.#e.headers.get("content-type")??"application/json"));let r=t.headers&&new globalThis.Headers(t.headers).has("content-type");if(this.#t instanceof globalThis.Request&&(Ue&&this.#e.body instanceof globalThis.FormData||this.#e.body instanceof URLSearchParams)&&!r&&this.#e.headers.delete("content-type"),this.request=new globalThis.Request(this.#t,this.#e),nt(this.#e.searchParams)){let s="?"+(typeof this.#e.searchParams=="string"?this.#e.searchParams.replace(/^\?/,""):new URLSearchParams(n.#f(this.#e.searchParams)).toString()),o=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,s);this.request=new globalThis.Request(o,this.#e)}if(this.#e.onUploadProgress){if(typeof this.#e.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!he)throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#p(this.request,this.#e.body??void 0)}}#u(){let e=this.#e.retry.delay(this.#r),t=e;this.#e.retry.jitter===!0?t=Math.random()*e:typeof this.#e.retry.jitter=="function"&&(t=this.#e.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let r=this.#e.retry.backoffLimit??Number.POSITIVE_INFINITY;return Math.min(r,t)}async#g(e){if(this.#r++,this.#r>this.#e.retry.limit)throw e;let t=e instanceof Error?e:new R(e);if(t instanceof H)return t.customDelay??this.#u();if(!this.#e.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#e.retry.shouldRetry!==void 0){let r=await this.#e.retry.shouldRetry({error:t,retryCount:this.#r});if(r===!1)throw e;if(r===!0)return this.#u()}if(st(e)&&!this.#e.retry.retryOnTimeout)throw e;if(it(e)){if(!this.#e.retry.statusCodes.includes(e.response.status))throw e;let r=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Retry-After")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(r&&this.#e.retry.afterStatusCodes.includes(e.response.status)){let i=Number(r)*1e3;Number.isNaN(i)?i=Date.parse(r)-Date.now():i>=Date.parse("2024-01-01")&&(i-=Date.now());let s=this.#e.retry.maxRetryAfter??i;return i<s?i:s}if(e.response.status===413)throw e}return this.#u()}#d(e){return this.#e.parseJson&&(e.json=async()=>this.#e.parseJson(await e.text())),e}#l(e){e&&e.cancel().catch(()=>{})}#s(e){this.#l(e.body??void 0)}async#m(e){try{return await e()}catch(t){let r=Math.min(await this.#g(t),W);if(this.#r<1)throw t;if(await ge(r,this.#i?{signal:this.#i}:{}),t instanceof H&&t.customRequest){let i=this.#e.signal?new globalThis.Request(t.customRequest,{signal:this.#e.signal}):new globalThis.Request(t.customRequest);this.#h(i)}for(let i of this.#e.hooks.beforeRetry){let s=await i({request:this.request,options:this.#c(),error:t,retryCount:this.#r});if(s instanceof globalThis.Request){this.#h(s);break}if(s instanceof globalThis.Response)return s;if(s===J)return}return this.#m(e)}}async#b(){this.#n?.signal.aborted&&(this.#n=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#n.signal]):this.#n.signal,this.request=new globalThis.Request(this.request,{signal:this.#e.signal}));for(let t of this.#e.hooks.beforeRequest){let r=await t(this.request,this.#c(),{retryCount:this.#r});if(r instanceof Response)return r;if(r instanceof globalThis.Request){this.#h(r);break}}let e=rt(this.request,this.#e);return this.#o=this.request,this.request=this.#o.clone(),this.#e.timeout===!1?this.#e.fetch(this.#o,e):fe(this.#o,e,this.#n,this.#e)}#c(){if(!this.#a){let{hooks:e,...t}=this.#e;this.#a=Object.freeze(t)}return this.#a}#h(e){this.#a=void 0,this.request=this.#p(e)}#p(e,t){return!this.#e.onUploadProgress||!e.body?e:Qe(e,this.#e.onUploadProgress,t??this.#e.body??void 0)}};var be=n=>{let e=(t,r)=>D.create(t,I(n,r));for(let t of B)e[t]=(r,i)=>D.create(r,I(n,i,{method:t}));return e.create=t=>be(I(t)),e.extend=t=>(typeof t=="function"&&(t=t(n??{})),be(I(n,t))),e.stop=J,e.retry=Je,e},hr=be(),F=hr;var dr="https://pro.lahat.group/api";function ye(){return process.env.WARDROBE_API_URL??dr}function C(n){if(!n)throw new Error("Not authenticated. Run `wardrobe login` first.");return F.create({prefixUrl:ye(),headers:{Authorization:`Bearer ${n}`},retry:0})}u();import{readFileSync as mr,writeFileSync as pr,mkdirSync as fr,rmSync as gr,existsSync as br}from"fs";import{homedir as yr}from"os";import{join as ot}from"path";function at(){return process.env.WARDROBE_CONFIG_DIR??ot(yr(),".config","wardrobe")}function we(){return ot(at(),"config.json")}function x(){let n=we();if(!br(n))return null;try{return JSON.parse(mr(n,"utf8"))}catch{return null}}function ct(n){fr(at(),{recursive:!0,mode:448}),pr(we(),JSON.stringify(n,null,2),{mode:384})}function ut(){gr(we(),{force:!0})}u();import{readFileSync as wr}from"fs";function _r(){return new Promise((n,e)=>{let t="";process.stdin.setEncoding("utf8"),process.stdin.on("data",r=>t+=r),process.stdin.on("end",()=>n(t)),process.stdin.on("error",e)})}async function A(n){let e=n==="-"?await _r():wr(n,"utf8");try{return JSON.parse(e)}catch(t){throw new Error(`Failed to parse JSON input: ${t.message}`)}}function p(n,e,t){e?process.stdout.write(JSON.stringify(n,null,2)+`
25
- `):t()}function _e(){return C(x()?.accessToken??null)}async function lt(n={}){let e={};for(let r of["width","height","depth"])n[r]!==void 0&&(e[r]=n[r]);let t=await _e().get("configs/init",{searchParams:e}).json();process.stdout.write(JSON.stringify(t.config,null,2)+`
26
- `)}async function ht(n,e={}){let t=await A(n),r=await _e().post("configs/validate",{json:{config:t}}).json();p(r,!!e.json,()=>{if(r.valid)process.stdout.write(`valid
24
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Te(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",i="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?t=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=s[1],/^\d+$/.test(s[3])?i=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=s[1],r=s[3],i=s[4]),t&&i!=="0"?`${t}=${r}:${parseInt(i)+1}`:e})}qe.Command=le});var De=P(O=>{"use strict";u();var{Argument:He}=M(),{Command:he}=Ne(),{CommanderError:ar,InvalidArgumentError:Ie}=H(),{Help:cr}=re(),{Option:Ve}=oe();O.program=new he;O.createCommand=n=>new he(n);O.createOption=(n,e)=>new Ve(n,e);O.createArgument=(n,e)=>new He(n,e);O.Command=he;O.Option=Ve;O.Argument=He;O.Help=cr;O.CommanderError=ar;O.InvalidArgumentError=Ie;O.InvalidOptionArgumentError=Ie});u();u();var Fe=zt(De(),1),{program:y,createCommand:un,createArgument:ln,createOption:hn,CommanderError:dn,InvalidArgumentError:mn,InvalidOptionArgumentError:pn,Command:fn,Argument:gn,Option:bn,Help:yn}=Fe.default;u();import{existsSync as Ar}from"fs";u();u();u();u();var _=class extends Error{response;request;options;constructor(e,t,r){let i=e.status||e.status===0?e.status:"",s=e.statusText??"",o=`${i} ${s}`.trim(),c=o?`status code ${o}`:"an unknown error";super(`Request failed with ${c}: ${t.method} ${t.url}`),this.name="HTTPError",this.response=e,this.request=t,this.options=r}};u();var T=class extends Error{name="NonError";value;constructor(e){let t="Non-error value was thrown";try{typeof e=="string"?t=e:e&&typeof e=="object"&&"message"in e&&typeof e.message=="string"&&(t=e.message)}catch{}super(t),this.value=e}};u();var q=class extends Error{name="ForceRetryError";customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new T(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:"Forced retry",t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};u();u();var de=(()=>{let n=!1,e=!1,t=typeof globalThis.ReadableStream=="function",r=typeof globalThis.Request=="function";if(t&&r)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return n&&!e})(),Le=typeof globalThis.AbortController=="function",B=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Ue=typeof globalThis.ReadableStream=="function",Me=typeof globalThis.FormData=="function",W=["get","post","put","patch","head","delete"],ur=()=>{};ur();var Be={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},J=2147483647,We=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,z=Symbol("stop"),I=class{options;constructor(e){this.options=e}},Je=n=>new I(n),ze={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},Ge={next:!0},Ke={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0};var lr=n=>{if(!n)return 0;if(n instanceof FormData){let e=0;for(let[t,r]of n)e+=We,e+=new TextEncoder().encode(`Content-Disposition: form-data; name="${t}"`).length,e+=typeof r=="string"?new TextEncoder().encode(r).length:r.size;return e}if(n instanceof Blob)return n.size;if(n instanceof ArrayBuffer)return n.byteLength;if(typeof n=="string")return new TextEncoder().encode(n).length;if(n instanceof URLSearchParams)return new TextEncoder().encode(n.toString()).length;if("byteLength"in n)return n.byteLength;if(typeof n=="object"&&n!==null)try{let e=JSON.stringify(n);return new TextEncoder().encode(e).length}catch{return 0}return 0},Ye=(n,e,t)=>{let r,i=0;return n.pipeThrough(new TransformStream({transform(s,o){if(o.enqueue(s),r){i+=r.byteLength;let c=e===0?0:i/e;c>=1&&(c=1-Number.EPSILON),t?.({percent:c,totalBytes:Math.max(e,i),transferredBytes:i},r)}r=s},flush(){r&&(i+=r.byteLength,t?.({percent:1,totalBytes:Math.max(e,i),transferredBytes:i},r))}}))},Xe=(n,e)=>{if(!n.body)return n;if(n.status===204)return new Response(null,{status:n.status,statusText:n.statusText,headers:n.headers});let t=Math.max(0,Number(n.headers.get("content-length"))||0);return new Response(Ye(n.body,t,e),{status:n.status,statusText:n.statusText,headers:n.headers})},Qe=(n,e,t)=>{if(!n.body)return n;let r=lr(t??n.body);return new Request(n,{duplex:"half",body:Ye(n.body,r,e)})};u();u();var E=n=>n!==null&&typeof n=="object";var V=(...n)=>{for(let e of n)if((!E(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return fe({},...n)},me=(n={},e={})=>{let t=new globalThis.Headers(n),r=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(let[s,o]of i.entries())r&&o==="undefined"||o===void 0?t.delete(s):t.set(s,o);return t};function G(n,e,t){return Object.hasOwn(e,t)&&e[t]===void 0?[]:fe(n[t]??[],e[t]??[])}var pe=(n={},e={})=>({beforeRequest:G(n,e,"beforeRequest"),beforeRetry:G(n,e,"beforeRetry"),afterResponse:G(n,e,"afterResponse"),beforeError:G(n,e,"beforeError")}),hr=(n,e)=>{let t=new URLSearchParams;for(let r of[n,e])if(r!==void 0)if(r instanceof URLSearchParams)for(let[i,s]of r.entries())t.append(i,s);else if(Array.isArray(r))for(let i of r){if(!Array.isArray(i)||i.length!==2)throw new TypeError("Array search parameters must be provided in [[key, value], ...] format");t.append(String(i[0]),String(i[1]))}else if(E(r))for(let[i,s]of Object.entries(r))s!==void 0&&t.append(i,String(s));else{let i=new URLSearchParams(r);for(let[s,o]of i.entries())t.append(s,o)}return t},fe=(...n)=>{let e={},t={},r={},i,s=[];for(let o of n)if(Array.isArray(o))Array.isArray(e)||(e=[]),e=[...e,...o];else if(E(o)){for(let[c,a]of Object.entries(o)){if(c==="signal"&&a instanceof globalThis.AbortSignal){s.push(a);continue}if(c==="context"){if(a!=null&&(!E(a)||Array.isArray(a)))throw new TypeError("The `context` option must be an object");e={...e,context:a==null?{}:{...e.context,...a}};continue}if(c==="searchParams"){a==null?i=void 0:i=i===void 0?a:hr(i,a);continue}E(a)&&c in e&&(a=fe(e[c],a)),e={...e,[c]:a}}E(o.hooks)&&(r=pe(r,o.hooks),e.hooks=r),E(o.headers)&&(t=me(t,o.headers),e.headers=t)}return i!==void 0&&(e.searchParams=i),s.length>0&&(s.length===1?e.signal=s[0]:B?e.signal=AbortSignal.any(s):e.signal=s.at(-1)),e};u();var et=n=>W.includes(n)?n.toUpperCase():n,dr=["get","put","head","delete","options","trace"],mr=[408,413,429,500,502,503,504],pr=[413,429,503],Ze={limit:2,methods:dr,statusCodes:mr,afterStatusCodes:pr,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:n=>.3*2**(n-1)*1e3,jitter:void 0,retryOnTimeout:!1},tt=(n={})=>{if(typeof n=="number")return{...Ze,limit:n};if(n.methods&&!Array.isArray(n.methods))throw new Error("retry.methods must be an array");if(n.methods&&=n.methods.map(t=>t.toLowerCase()),n.statusCodes&&!Array.isArray(n.statusCodes))throw new Error("retry.statusCodes must be an array");let e=Object.fromEntries(Object.entries(n).filter(([,t])=>t!==void 0));return{...Ze,...e}};u();u();var k=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};async function ge(n,e,t,r){return new Promise((i,s)=>{let o=setTimeout(()=>{t&&t.abort(),s(new k(n))},r.timeout);r.fetch(n,e).then(i).catch(s).then(()=>{clearTimeout(o)})})}u();async function be(n,{signal:e}){return new Promise((t,r)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(s),r(e.reason)}let s=setTimeout(()=>{e?.removeEventListener("abort",i),t()},n)})}u();var rt=(n,e)=>{let t={};for(let r in e)Object.hasOwn(e,r)&&!(r in Ke)&&!(r in ze)&&(!(r in n)||r in Ge)&&(t[r]=e[r]);return t},nt=n=>n===void 0?!1:Array.isArray(n)?n.length>0:n instanceof URLSearchParams?n.size>0:typeof n=="object"?Object.keys(n).length>0:typeof n=="string"?n.trim().length>0:!!n;u();function it(n){return n instanceof _||n?.name===_.name}function st(n){return n instanceof k||n?.name===k.name}var D=class n{static create(e,t){let r=new n(e,t),i=async()=>{if(typeof r.#e.timeout=="number"&&r.#e.timeout>J)throw new RangeError(`The \`timeout\` option cannot be greater than ${J}`);await Promise.resolve();let o=await r.#b();for(let c of r.#e.hooks.afterResponse){let a=r.#d(o.clone()),l;try{l=await c(r.request,r.#c(),a,{retryCount:r.#r})}catch(f){throw r.#s(a),r.#s(o),f}if(l instanceof I)throw r.#s(a),r.#s(o),new q(l.options);let h=l instanceof globalThis.Response?l:o;a!==h&&r.#s(a),o!==h&&r.#s(o),o=h}if(r.#d(o),!o.ok&&(typeof r.#e.throwHttpErrors=="function"?r.#e.throwHttpErrors(o.status):r.#e.throwHttpErrors)){let c=new _(o,r.request,r.#c());for(let a of r.#e.hooks.beforeError)c=await a(c,{retryCount:r.#r});throw c}if(r.#e.onDownloadProgress){if(typeof r.#e.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Ue)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let c=o.clone();return r.#s(o),Xe(c,r.#e.onDownloadProgress)}return o},s=r.#m(i).finally(()=>{let o=r.#o;r.#l(o?.body??void 0),r.#l(r.request.body??void 0)});for(let[o,c]of Object.entries(Be))o==="bytes"&&typeof globalThis.Response?.prototype?.bytes!="function"||(s[o]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||c);let a=await s;if(o==="json"){if(a.status===204)return"";let l=await a.text();return l===""?"":t.parseJson?t.parseJson(l):JSON.parse(l)}return a[o]()});return s}static#f(e){return e&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)):e}request;#n;#r=0;#t;#e;#o;#i;#a;constructor(e,t={}){if(this.#t=e,this.#e={...t,headers:me(this.#t.headers,t.headers),hooks:pe({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:et(t.method??this.#t.method??"GET"),prefixUrl:String(t.prefixUrl||""),retry:tt(t.retry),throwHttpErrors:t.throwHttpErrors??!0,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis),context:t.context??{}},typeof this.#t!="string"&&!(this.#t instanceof URL||this.#t instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this.#e.prefixUrl&&typeof this.#t=="string"){if(this.#t.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this.#e.prefixUrl.endsWith("/")||(this.#e.prefixUrl+="/"),this.#t=this.#e.prefixUrl+this.#t}Le&&B&&(this.#i=this.#e.signal??this.#t.signal,this.#n=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#n.signal]):this.#n.signal),de&&(this.#e.duplex="half"),this.#e.json!==void 0&&(this.#e.body=this.#e.stringifyJson?.(this.#e.json)??JSON.stringify(this.#e.json),this.#e.headers.set("content-type",this.#e.headers.get("content-type")??"application/json"));let r=t.headers&&new globalThis.Headers(t.headers).has("content-type");if(this.#t instanceof globalThis.Request&&(Me&&this.#e.body instanceof globalThis.FormData||this.#e.body instanceof URLSearchParams)&&!r&&this.#e.headers.delete("content-type"),this.request=new globalThis.Request(this.#t,this.#e),nt(this.#e.searchParams)){let s="?"+(typeof this.#e.searchParams=="string"?this.#e.searchParams.replace(/^\?/,""):new URLSearchParams(n.#f(this.#e.searchParams)).toString()),o=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,s);this.request=new globalThis.Request(o,this.#e)}if(this.#e.onUploadProgress){if(typeof this.#e.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!de)throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#p(this.request,this.#e.body??void 0)}}#u(){let e=this.#e.retry.delay(this.#r),t=e;this.#e.retry.jitter===!0?t=Math.random()*e:typeof this.#e.retry.jitter=="function"&&(t=this.#e.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let r=this.#e.retry.backoffLimit??Number.POSITIVE_INFINITY;return Math.min(r,t)}async#g(e){if(this.#r++,this.#r>this.#e.retry.limit)throw e;let t=e instanceof Error?e:new T(e);if(t instanceof q)return t.customDelay??this.#u();if(!this.#e.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#e.retry.shouldRetry!==void 0){let r=await this.#e.retry.shouldRetry({error:t,retryCount:this.#r});if(r===!1)throw e;if(r===!0)return this.#u()}if(st(e)&&!this.#e.retry.retryOnTimeout)throw e;if(it(e)){if(!this.#e.retry.statusCodes.includes(e.response.status))throw e;let r=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Retry-After")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(r&&this.#e.retry.afterStatusCodes.includes(e.response.status)){let i=Number(r)*1e3;Number.isNaN(i)?i=Date.parse(r)-Date.now():i>=Date.parse("2024-01-01")&&(i-=Date.now());let s=this.#e.retry.maxRetryAfter??i;return i<s?i:s}if(e.response.status===413)throw e}return this.#u()}#d(e){return this.#e.parseJson&&(e.json=async()=>this.#e.parseJson(await e.text())),e}#l(e){e&&e.cancel().catch(()=>{})}#s(e){this.#l(e.body??void 0)}async#m(e){try{return await e()}catch(t){let r=Math.min(await this.#g(t),J);if(this.#r<1)throw t;if(await be(r,this.#i?{signal:this.#i}:{}),t instanceof q&&t.customRequest){let i=this.#e.signal?new globalThis.Request(t.customRequest,{signal:this.#e.signal}):new globalThis.Request(t.customRequest);this.#h(i)}for(let i of this.#e.hooks.beforeRetry){let s=await i({request:this.request,options:this.#c(),error:t,retryCount:this.#r});if(s instanceof globalThis.Request){this.#h(s);break}if(s instanceof globalThis.Response)return s;if(s===z)return}return this.#m(e)}}async#b(){this.#n?.signal.aborted&&(this.#n=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#n.signal]):this.#n.signal,this.request=new globalThis.Request(this.request,{signal:this.#e.signal}));for(let t of this.#e.hooks.beforeRequest){let r=await t(this.request,this.#c(),{retryCount:this.#r});if(r instanceof Response)return r;if(r instanceof globalThis.Request){this.#h(r);break}}let e=rt(this.request,this.#e);return this.#o=this.request,this.request=this.#o.clone(),this.#e.timeout===!1?this.#e.fetch(this.#o,e):ge(this.#o,e,this.#n,this.#e)}#c(){if(!this.#a){let{hooks:e,...t}=this.#e;this.#a=Object.freeze(t)}return this.#a}#h(e){this.#a=void 0,this.request=this.#p(e)}#p(e,t){return!this.#e.onUploadProgress||!e.body?e:Qe(e,this.#e.onUploadProgress,t??this.#e.body??void 0)}};var ye=n=>{let e=(t,r)=>D.create(t,V(n,r));for(let t of W)e[t]=(r,i)=>D.create(r,V(n,i,{method:t}));return e.create=t=>ye(V(t)),e.extend=t=>(typeof t=="function"&&(t=t(n??{})),ye(V(n,t))),e.stop=z,e.retry=Je,e},fr=ye(),F=fr;var gr="https://pro.lahat.group/api";function we(){return process.env.WARDROBE_API_URL??gr}function C(n){if(!n)throw new Error("Not authenticated. Run `wardrobe login` first.");return F.create({prefixUrl:we(),headers:{Authorization:`Bearer ${n}`},retry:0})}u();import{readFileSync as br,writeFileSync as yr,mkdirSync as wr,rmSync as _r,existsSync as jr}from"fs";import{homedir as Or}from"os";import{join as ot}from"path";function at(){return process.env.WARDROBE_CONFIG_DIR??ot(Or(),".config","wardrobe")}function _e(){return ot(at(),"config.json")}function x(){let n=_e();if(!jr(n))return null;try{return JSON.parse(br(n,"utf8"))}catch{return null}}function ct(n){wr(at(),{recursive:!0,mode:448}),yr(_e(),JSON.stringify(n,null,2),{mode:384})}function ut(){_r(_e(),{force:!0})}u();import{readFileSync as xr}from"fs";function Cr(){return new Promise((n,e)=>{let t="";process.stdin.setEncoding("utf8"),process.stdin.on("data",r=>t+=r),process.stdin.on("end",()=>n(t)),process.stdin.on("error",e)})}async function v(n){let e=n==="-"?await Cr():xr(n,"utf8");try{return JSON.parse(e)}catch(t){throw new Error(`Failed to parse JSON input: ${t.message}`)}}function p(n,e,t){e?process.stdout.write(JSON.stringify(n,null,2)+`
25
+ `):t()}function je(){return C(x()?.accessToken??null)}async function lt(n={}){let e={};for(let r of["width","height","depth"])n[r]!==void 0&&(e[r]=n[r]);let t=await je().get("configs/init",{searchParams:e}).json();process.stdout.write(JSON.stringify(t.config,null,2)+`
26
+ `)}async function ht(n,e={}){let t=await v(n),r=await je().post("configs/validate",{json:{config:t}}).json();p(r,!!e.json,()=>{if(r.valid)process.stdout.write(`valid
27
27
  `);else for(let i of r.errors)process.stdout.write(`${i.severity}: ${i.path} \u2014 ${i.message}
28
- `)}),r.valid||(process.exitCode=1)}async function dt(n,e={}){let t=_e(),r=n==="-"||Or(n)?await A(n):(await t.get(`designs/${n}`).json()).config,i=await t.post("configs/describe",{json:{config:r,locale:e.locale??"en"}}).json();p(i.lines,!!e.json,()=>process.stdout.write(i.lines.join(`
28
+ `)}),r.valid||(process.exitCode=1)}async function dt(n,e={}){let t=je(),r=n==="-"||Ar(n)?await v(n):(await t.get(`designs/${n}`).json()).config,i=await t.post("configs/describe",{json:{config:r,locale:e.locale??"en"}}).json();p(i.lines,!!e.json,()=>process.stdout.write(i.lines.join(`
29
29
  `)+`
30
- `))}u();import{spawn as xr}from"child_process";import{setTimeout as Cr}from"timers/promises";function jr(n){let e=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open";try{xr(e,[n],{stdio:"ignore",detached:!0}).unref()}catch{}}async function mt(n={}){let e=ye(),t=await F.post(`${e}/auth/device/code`,{retry:0}).json(),r=`${t.verification_uri}?code=${encodeURIComponent(t.user_code)}`;n.json||(process.stdout.write(`
30
+ `))}u();import{spawn as vr}from"child_process";import{setTimeout as $r}from"timers/promises";function Er(n){let e=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open";try{vr(e,[n],{stdio:"ignore",detached:!0}).unref()}catch{}}async function mt(n={}){let e=we(),t=await F.post(`${e}/auth/device/code`,{retry:0}).json(),r=`${t.verification_uri}?code=${encodeURIComponent(t.user_code)}`;n.json||(process.stdout.write(`
31
31
  To authorize this CLI, visit:
32
32
  ${t.verification_uri}
33
33
  `),process.stdout.write(`and enter code: ${t.user_code}
34
34
 
35
- `),jr(r));let i=t.interval,s=Date.now()+t.expires_in*1e3;for(;Date.now()<s;){await Cr(i*1e3);try{let o=await F.post(`${e}/auth/device/token`,{json:{device_code:t.device_code},retry:0}).json();ct({...x(),accessToken:o.access_token,apiUrl:e}),p({status:"authorized",scopes:o.scopes},!!n.json,()=>process.stdout.write(`Authorized. Agent key saved.
35
+ `),Er(r));let i=t.interval,s=Date.now()+t.expires_in*1e3;for(;Date.now()<s;){await $r(i*1e3);try{let o=await F.post(`${e}/auth/device/token`,{json:{device_code:t.device_code},retry:0}).json();ct({...x(),accessToken:o.access_token,apiUrl:e}),p({status:"authorized",scopes:o.scopes},!!n.json,()=>process.stdout.write(`Authorized. Agent key saved.
36
36
  `));return}catch(o){let a=(o instanceof _?await o.response.json().catch(()=>({})):{}).error;if(a==="authorization_pending")continue;if(a==="slow_down"||o instanceof _&&o.response.status===429){i+=5;continue}throw new Error(`Login failed: ${a??o.message}`)}}throw new Error("Login timed out. Run `wardrobe login` again.")}u();async function pt(n={}){let t=await C(x()?.accessToken??null).get("auth/me").json();p(t,!!n.json,()=>{process.stdout.write(`${t.displayName} <${t.email}> \u2014 account role: ${t.role}
37
37
  `),t.agent&&process.stdout.write(`Agent key scopes: ${t.agent.scopes.join(", ")}
38
38
  `)})}function ft(n={}){ut(),p({status:"logged_out"},!!n.json,()=>process.stdout.write(`Logged out.
39
- `))}u();u();import{writeFileSync as gt}from"fs";function E(){return C(x()?.accessToken??null)}function Oe(n){let e=(n??"").replace(/\D/g,"");return e.startsWith("972")?`0${e.slice(3)}`:e}async function bt(n,e={}){let t=await E().get(`projects/${n}`).json();p(t,!!e.json,()=>{process.stdout.write(`${t.id} ${t.name}
39
+ `))}u();u();import{writeFileSync as gt}from"fs";function j(){return C(x()?.accessToken??null)}function Oe(n){let e=(n??"").replace(/\D/g,"");return e.startsWith("972")?`0${e.slice(3)}`:e}async function bt(n,e={}){let t=await j().get(`projects/${n}`).json();p(t,!!e.json,()=>{process.stdout.write(`${t.id} ${t.name}
40
40
  `),t.customer&&process.stdout.write(`customer: ${t.customer.customerName??"\u2014"} ${t.customer.phoneNumber??""}
41
41
  `),t.createdBy&&process.stdout.write(`designer: ${t.createdBy.displayName??"\u2014"} (${t.createdBy.id??""})
42
- `)})}async function yt(n,e={}){let t=await E().get(`projects/${n}/members`).json();p(t.members,!!e.json,()=>{for(let r of t.members)process.stdout.write(`${r.userId} ${r.role} ${r.displayName??r.email??""}
43
- `)})}async function wt(n={}){let e=await E().get("customers").json();p(e.customers,!!n.json,()=>{for(let t of e.customers)process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""}
44
- `)})}async function _t(n,e={}){let t=await E().get(`customers/${n}`).json();p(t,!!e.json,()=>process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""} ${t.email??""}
45
- `))}async function Ot(n,e={}){let r=(await E().get(`customers/${n}/projects`).json()).projects??[];p(r,!!e.json,()=>{for(let i of r)process.stdout.write(`${i.id} ${i.name}
46
- `)})}async function xt(n={}){if(!n.project)throw new Error("--project <id> is required.");let e=n.open?"orders/open":"orders",t=await E().get(e,{searchParams:{projectId:n.project}}).json(),r=Array.isArray(t?.orders)?t.orders:t?[t]:[];p(n.open?t:r,!!n.json,()=>{if(r.length===0){process.stdout.write(`no orders
47
- `);return}for(let i of r){let s=i.totalPrice!==void 0?`${i.totalPrice} ${i.currency??"NIS"}`:"";process.stdout.write(`${i.id??""} #${i.orderNumber??"\u2014"} rev${i.revisionNumber??1} ${i.status??""} ${s}
48
- `)}})}async function Ct(n,e={}){let t=e.out??`order-${n}.pdf`,r=Buffer.from(await E().get(`orders/${n}/pdf`).arrayBuffer());gt(t,r),p({path:t,bytes:r.length},!!e.json,()=>process.stdout.write(`${t} ${r.length} bytes
49
- `))}async function jt(n,e={}){let t=e.out??`design-${n}.jpg`,r=Buffer.from(await E().get(`designs/${n}/thumbnail`).arrayBuffer());gt(t,r),p({path:t,bytes:r.length},!!e.json,()=>process.stdout.write(`${t} ${r.length} bytes
50
- `))}async function At(n={}){let e=await E().get("help-texts").json();p(e,!!n.json,()=>process.stdout.write(`${Object.keys(e).length} help text(s)
51
- `))}function xe(){return C(x()?.accessToken??null)}async function Et(n,e={}){let t=await A(n),r=await xe().post("price",{json:{config:t}}).json();p(r,!!e.json,()=>process.stdout.write(`${r.total} ${r.currency}
52
- `))}async function vt(n={}){if(!n.project)throw new Error("--project <id> is required.");let e=await xe().get("designs",{searchParams:{projectId:n.project}}).json();p(e.designs,!!n.json,()=>{for(let t of e.designs)process.stdout.write(`${t.id} ${t.name}
53
- `)})}async function $t(n={}){let t=(await xe().get("projects").json()).projects;if(n.phone){let r=Oe(n.phone);t=t.filter(i=>Oe(i.customer?.phoneNumber)===r)}if(n.designer){let r=n.designer.toLowerCase();t=t.filter(i=>i.createdBy?.id===n.designer||(i.createdBy?.displayName??"").toLowerCase().includes(r))}p(t,!!n.json,()=>{for(let r of t){let i=r.createdBy?.displayName?` ${r.createdBy.displayName}`:"",s=r.customer?.customerName?` ${r.customer.customerName}`:"";process.stdout.write(`${r.id} ${r.name}${s}${i}
54
- `)}})}u();function Ce(){return C(x()?.accessToken??null)}async function St(n,e={}){let t=await A(n),r=await Ce().post("price",{json:{config:t},searchParams:{preview:"bom"}}).json();p(r,!!e.json,()=>{process.stdout.write(`${r.total} ${r.currency}
42
+ `)})}async function yt(n,e={}){let t=await j().get(`projects/${n}/members`).json();p(t.members,!!e.json,()=>{for(let r of t.members)process.stdout.write(`${r.userId} ${r.role} ${r.displayName??r.email??""}
43
+ `)})}async function wt(n={}){let e=await j().get("customers").json();p(e.customers,!!n.json,()=>{for(let t of e.customers)process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""}
44
+ `)})}async function _t(n,e={}){let t=await j().get(`customers/${n}`).json();p(t,!!e.json,()=>process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""} ${t.email??""}
45
+ `))}async function jt(n,e={}){let r=(await j().get(`customers/${n}/projects`).json()).projects??[];p(r,!!e.json,()=>{for(let i of r)process.stdout.write(`${i.id} ${i.name}
46
+ `)})}async function Ot(n={}){if(n.open&&!n.project)throw new Error("--open requires --project <id>.");let e,t=null;if(n.project)n.open?(t=(await j().get("orders/open",{searchParams:{projectId:n.project}}).json()).order,e=t?[t]:[]):e=(await j().get("orders",{searchParams:{projectId:n.project}}).json()).orders??[];else{let r={};n.limit!==void 0&&(r.limit=n.limit),n.since!==void 0&&(r.updatedSince=n.since),e=(await j().get("orders",{searchParams:r}).json()).orders??[]}p(n.open?{order:t}:e,!!n.json,()=>{if(e.length===0){process.stdout.write(`no orders
47
+ `);return}for(let r of e){let i=r.totalPrice!==void 0?`${r.totalPrice} ${r.currency??"NIS"}`:"";process.stdout.write(`${r.id??""} #${r.orderNumber??"\u2014"} rev${r.revisionNumber??1} ${r.status??""} ${i}
48
+ `)}})}async function xt(n,e={}){let t=e.out??`order-${n}.pdf`,r=Buffer.from(await j().get(`orders/${n}/pdf`).arrayBuffer());gt(t,r),p({path:t,bytes:r.length},!!e.json,()=>process.stdout.write(`${t} ${r.length} bytes
49
+ `))}async function Ct(n,e={}){let t=e.out??`design-${n}.jpg`,r=Buffer.from(await j().get(`designs/${n}/thumbnail`).arrayBuffer());gt(t,r),p({path:t,bytes:r.length},!!e.json,()=>process.stdout.write(`${t} ${r.length} bytes
50
+ `))}async function At(n={}){let e={};n.limit!==void 0&&(e.limit=n.limit),n.since!==void 0&&(e.createdSince=n.since);let t=await j().get("users",{searchParams:e}).json();p(t.users,!!n.json,()=>{if(t.users.length===0){process.stdout.write(`no users
51
+ `);return}for(let r of t.users)process.stdout.write(`${r.id??""} ${r.email??""} ${r.displayName??""} ${r.role??""} ${r.createdAt??""}
52
+ `)})}async function vt(n,e={}){if(!n)throw new Error("phone is required.");let t=await j().get("users/by-phone",{searchParams:{phone:n}}).json();p(t.users,!!e.json,()=>{if(t.users.length===0){process.stdout.write(`no matching user
53
+ `);return}for(let r of t.users)process.stdout.write(`${r.id??""} ${r.email??""} ${r.displayName??""} ${r.role??""}
54
+ `)})}async function $t(n={}){let e=await j().get("help-texts").json();p(e,!!n.json,()=>process.stdout.write(`${Object.keys(e).length} help text(s)
55
+ `))}function L(){return C(x()?.accessToken??null)}async function Et(n,e={}){let t=await v(n),r=await L().post("price",{json:{config:t}}).json();p(r,!!e.json,()=>process.stdout.write(`${r.total} ${r.currency}
56
+ `))}async function St(n={}){let e={};n.project?e.projectId=n.project:(n.limit!==void 0&&(e.limit=n.limit),n.since!==void 0&&(e.updatedSince=n.since));let t=await L().get("designs",{searchParams:e}).json();p(t.designs,!!n.json,()=>{if(t.designs.length===0){process.stdout.write(`no designs
57
+ `);return}for(let r of t.designs){let i=n.project?"":` ${r.projectId??""}`;process.stdout.write(`${r.id} ${r.name}${i}
58
+ `)}})}async function Pt(n={}){if(n.project){let r=await L().get(`quotations/project/${n.project}`).json();p(r,!!n.json,()=>{process.stdout.write(`quote #${r.quoteNumber}, ${r.revisionNumber} revision(s)
59
+ `);for(let i of r.revisions)process.stdout.write(`rev${i.revisionNumber} ${i.totalPrice+i.serviceTotal} ${i.currency} ${i.at}
60
+ `)});return}let e={};n.limit!==void 0&&(e.limit=n.limit),n.since!==void 0&&(e.updatedSince=n.since);let t=await L().get("quotations",{searchParams:e}).json();p(t.quotations,!!n.json,()=>{if(t.quotations.length===0){process.stdout.write(`no quotations
61
+ `);return}for(let r of t.quotations){let i=r.totalPrice!==null?`${r.totalPrice+(r.serviceTotal??0)} ${r.currency??"NIS"}`:"";process.stdout.write(`${r.projectId} quote #${r.quoteNumber} rev${r.revisionNumber} ${i} ${r.generatedAt??""}
62
+ `)}})}async function kt(n={}){let t=(await L().get("projects").json()).projects;if(n.phone){let r=Oe(n.phone);t=t.filter(i=>Oe(i.customer?.phoneNumber)===r)}if(n.designer){let r=n.designer.toLowerCase();t=t.filter(i=>i.createdBy?.id===n.designer||(i.createdBy?.displayName??"").toLowerCase().includes(r))}p(t,!!n.json,()=>{for(let r of t){let i=r.createdBy?.displayName?` ${r.createdBy.displayName}`:"",s=r.customer?.customerName?` ${r.customer.customerName}`:"";process.stdout.write(`${r.id} ${r.name}${s}${i}
63
+ `)}})}u();function xe(){return C(x()?.accessToken??null)}async function Rt(n,e={}){let t=await v(n),r=await xe().post("price",{json:{config:t},searchParams:{preview:"bom"}}).json();p(r,!!e.json,()=>{process.stdout.write(`${r.total} ${r.currency}
55
64
  `);for(let i of r.bomPreview?.lines??[])process.stdout.write(` ${i.qty}\xD7 ${i.part} (${i.sku}) ${i.widthMm}\xD7${i.heightMm}mm
56
- `)})}async function je(n,e={}){if(!e.project)throw new Error("--project <id> is required.");let t=await A(n),r=await Ce().post("designs",{json:{projectId:e.project,name:e.name??"CLI design",config:t}}).json();p(r,!!e.json,()=>process.stdout.write(`${r.id}
57
- `))}async function kt(n,e={}){if(!e.file&&!e.name)throw new Error("Nothing to update \u2014 pass --file <config> and/or --name <name>.");let t=Ce(),r=await t.get(`designs/${n}`).json(),i={};e.file&&(i.config=await A(e.file)),e.name&&(i.name=e.name),r.version!==void 0&&(i.version=r.version);let s=await t.put(`designs/${n}`,{json:i}).json();p(s,!!e.json,()=>process.stdout.write(`${s.id} v${s.version??"?"}
58
- `))}u();import{fileURLToPath as Ar}from"url";import{dirname as Pt,join as T}from"path";import{homedir as Er}from"os";import{existsSync as vr,mkdirSync as $r,readdirSync as Sr,copyFileSync as kr,statSync as Pr}from"fs";function Tr(){let n=Pt(Ar(import.meta.url));for(let e=0;e<6;e++){let t=T(n,"skill");if(vr(T(t,"SKILL.md")))return t;n=Pt(n)}throw new Error("Bundled SKILL.md not found next to the CLI package")}function Rr(n){let e=n?T(process.cwd(),".claude"):T(Er(),".claude");return T(e,"skills","wardrobe-configurator")}function Hr(n={}){let e=n.sourceDir??Tr(),t=n.targetDir??Rr(!!n.project);$r(t,{recursive:!0});let r=[];for(let i of Sr(e)){let s=T(e,i);Pr(s).isFile()&&(kr(s,T(t,i)),r.push(i))}return{target:t,files:r}}function Tt(n){let e=Hr({project:n.project});p(e,!!n.json,()=>{process.stdout.write(`Installed ${e.files.length} file(s) to ${e.target}
65
+ `)})}async function Ce(n,e={}){if(!e.project)throw new Error("--project <id> is required.");let t=await v(n),r=await xe().post("designs",{json:{projectId:e.project,name:e.name??"CLI design",config:t}}).json();p(r,!!e.json,()=>process.stdout.write(`${r.id}
66
+ `))}async function Tt(n,e={}){if(!e.file&&!e.name)throw new Error("Nothing to update \u2014 pass --file <config> and/or --name <name>.");let t=xe(),r=await t.get(`designs/${n}`).json(),i={};e.file&&(i.config=await v(e.file)),e.name&&(i.name=e.name),r.version!==void 0&&(i.version=r.version);let s=await t.put(`designs/${n}`,{json:i}).json();p(s,!!e.json,()=>process.stdout.write(`${s.id} v${s.version??"?"}
67
+ `))}u();import{fileURLToPath as Sr}from"url";import{dirname as qt,join as R}from"path";import{homedir as Pr}from"os";import{existsSync as kr,mkdirSync as Rr,readdirSync as Tr,copyFileSync as qr,statSync as Nr}from"fs";function Hr(){let n=qt(Sr(import.meta.url));for(let e=0;e<6;e++){let t=R(n,"skill");if(kr(R(t,"SKILL.md")))return t;n=qt(n)}throw new Error("Bundled SKILL.md not found next to the CLI package")}function Ir(n){let e=n?R(process.cwd(),".claude"):R(Pr(),".claude");return R(e,"skills","wardrobe-configurator")}function Vr(n={}){let e=n.sourceDir??Hr(),t=n.targetDir??Ir(!!n.project);Rr(t,{recursive:!0});let r=[];for(let i of Tr(e)){let s=R(e,i);Nr(s).isFile()&&(qr(s,R(t,i)),r.push(i))}return{target:t,files:r}}function Nt(n){let e=Vr({project:n.project});p(e,!!n.json,()=>{process.stdout.write(`Installed ${e.files.length} file(s) to ${e.target}
59
68
  `),process.stdout.write(`Restart Claude Code, then invoke /wardrobe-configurator
60
- `)})}u();async function qr(n){if(!(n instanceof _))return null;try{return await n.response.json()}catch{return null}}async function Rt(n,e){let t=await qr(n);if(e)return JSON.stringify(t?{error:t.error??"request_failed",...t}:{error:n.message},null,2);if(!t)return`Error: ${n.message}`;let r=[t.error??"Request failed"];return t.detail&&r.push(t.detail),t.fix_hint&&r.push(`fix: ${t.fix_hint}`),t.issues&&r.push(JSON.stringify(t.issues)),`Error: ${r.join(" \u2014 ")}`}u();var Ht="2.0.0";y.name("wardrobe").description("Wardrobe configurator CLI").version(Ht);y.command("login").description("Authenticate via the OAuth device flow").option("--json","machine-readable output").action(n=>mt(n));y.command("whoami").description("Show the authenticated user").option("--json","machine-readable output").action(n=>pt(n));y.command("logout").description("Remove the stored agent key").option("--json","machine-readable output").action(n=>ft(n));y.command("init").description("Emit a fresh, valid WardrobeConfig JSON (via the API)").option("--width <cm>","total width in cm",n=>Number(n)).option("--height <cm>","height in cm",n=>Number(n)).option("--depth <cm>","depth in cm",n=>Number(n)).action(n=>lt(n));y.command("validate <file>").description("Validate a config against the live rules (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>ht(n,e));y.command("describe <idOrFile>").description("Describe a config (local file/-) or saved design (id), via the API").option("--locale <locale>","en or he","en").option("--json","machine-readable output").action((n,e)=>dt(n,e));y.command("price <file>").description("Price a config via the API (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>Et(n,e));y.command("plan <file>").description("Dry-run: price a config + BOM preview (mutates nothing)").option("--json","machine-readable output").action((n,e)=>St(n,e));y.command("apply <file>").description("Save a config as a design (file or - for stdin)").requiredOption("--project <id>","project id").option("--name <name>","design name").option("--json","machine-readable output").action((n,e)=>je(n,e));var G=y.command("designs").description("Manage saved designs");G.command("list").description("List designs in a project").requiredOption("--project <id>","project id").option("--json","machine-readable output").action(n=>vt(n));G.command("create <file>").description("Save a config as a new design in a project (same as `apply`)").requiredOption("--project <id>","project id").option("--name <name>","design name").option("--json","machine-readable output").action((n,e)=>je(n,e));G.command("update <id>").description("Revise a saved design (config and/or name)").option("--file <file>","new config JSON (file or - for stdin)").option("--name <name>","new design name").option("--json","machine-readable output").action((n,e)=>kt(n,e));G.command("thumbnail <id>").description("Download a design's thumbnail image").option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>jt(n,e));var Ae=y.command("projects").description("Manage projects");Ae.command("list").description("List accessible projects").option("--phone <number>","filter by the customer's phone number").option("--designer <idOrName>","filter by the designer who owns the project").option("--json","machine-readable output").action(n=>$t(n));Ae.command("get <id>").description("Show one project").option("--json","machine-readable output").action((n,e)=>bt(n,e));Ae.command("members <id>").description("List a project's owner and members").option("--json","machine-readable output").action((n,e)=>yt(n,e));var Ee=y.command("customers").description("Read customers");Ee.command("list").description("List your customers").option("--json","machine-readable output").action(n=>wt(n));Ee.command("get <id>").description("Show one customer").option("--json","machine-readable output").action((n,e)=>_t(n,e));Ee.command("projects <id>").description("List a customer's projects").option("--json","machine-readable output").action((n,e)=>Ot(n,e));var qt=y.command("orders").description("Read orders");qt.command("list").description("List a project's orders").requiredOption("--project <id>","project id").option("--open","only the project's active (non-cancelled) order").option("--json","machine-readable output").action(n=>xt(n));qt.command("pdf <id>").description("Download an order PDF").option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>Ct(n,e));y.command("help-texts").description("Read the help-text table").option("--json","machine-readable output").action(n=>At(n));var Nr=y.command("skill").description("Manage the bundled Claude Skill");Nr.command("install").description("Install the wardrobe-configurator Skill for Claude Code").option("--project","install into ./.claude/skills instead of ~/.claude/skills").option("--json","machine-readable output").action(n=>Tt(n));y.parseAsync().catch(async n=>{let e=await Rt(n,process.argv.includes("--json"));process.stderr.write(`${e}
69
+ `)})}u();async function Dr(n){if(!(n instanceof _))return null;try{return await n.response.json()}catch{return null}}async function Ht(n,e){let t=await Dr(n);if(e)return JSON.stringify(t?{error:t.error??"request_failed",...t}:{error:n.message},null,2);if(!t)return`Error: ${n.message}`;let r=[t.error??"Request failed"];return t.detail&&r.push(t.detail),t.fix_hint&&r.push(`fix: ${t.fix_hint}`),t.issues&&r.push(JSON.stringify(t.issues)),`Error: ${r.join(" \u2014 ")}`}u();var It="2.0.1";y.name("wardrobe").description("Wardrobe configurator CLI").version(It);y.command("login").description("Authenticate via the OAuth device flow").option("--json","machine-readable output").action(n=>mt(n));y.command("whoami").description("Show the authenticated user").option("--json","machine-readable output").action(n=>pt(n));y.command("logout").description("Remove the stored agent key").option("--json","machine-readable output").action(n=>ft(n));y.command("init").description("Emit a fresh, valid WardrobeConfig JSON (via the API)").option("--width <cm>","total width in cm",n=>Number(n)).option("--height <cm>","height in cm",n=>Number(n)).option("--depth <cm>","depth in cm",n=>Number(n)).action(n=>lt(n));y.command("validate <file>").description("Validate a config against the live rules (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>ht(n,e));y.command("describe <idOrFile>").description("Describe a config (local file/-) or saved design (id), via the API").option("--locale <locale>","en or he","en").option("--json","machine-readable output").action((n,e)=>dt(n,e));y.command("price <file>").description("Price a config via the API (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>Et(n,e));y.command("plan <file>").description("Dry-run: price a config + BOM preview (mutates nothing)").option("--json","machine-readable output").action((n,e)=>Rt(n,e));y.command("apply <file>").description("Save a config as a design (file or - for stdin)").requiredOption("--project <id>","project id").option("--name <name>","design name").option("--json","machine-readable output").action((n,e)=>Ce(n,e));var K=y.command("designs").description("Manage saved designs");K.command("list").description("List designs in a project, or the newest across every project with --project omitted").option("--project <id>","project id").option("--limit <n>","cross-project mode only: max rows (default 20, max 100)",n=>Number(n)).option("--since <iso>","cross-project mode only: only designs updated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(n=>St(n));K.command("create <file>").description("Save a config as a new design in a project (same as `apply`)").requiredOption("--project <id>","project id").option("--name <name>","design name").option("--json","machine-readable output").action((n,e)=>Ce(n,e));K.command("update <id>").description("Revise a saved design (config and/or name)").option("--file <file>","new config JSON (file or - for stdin)").option("--name <name>","new design name").option("--json","machine-readable output").action((n,e)=>Tt(n,e));K.command("thumbnail <id>").description("Download a design's thumbnail image").option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>Ct(n,e));var Ae=y.command("projects").description("Manage projects");Ae.command("list").description("List accessible projects").option("--phone <number>","filter by the customer's phone number").option("--designer <idOrName>","filter by the designer who owns the project").option("--json","machine-readable output").action(n=>kt(n));Ae.command("get <id>").description("Show one project").option("--json","machine-readable output").action((n,e)=>bt(n,e));Ae.command("members <id>").description("List a project's owner and members").option("--json","machine-readable output").action((n,e)=>yt(n,e));var ve=y.command("customers").description("Read customers");ve.command("list").description("List your customers").option("--json","machine-readable output").action(n=>wt(n));ve.command("get <id>").description("Show one customer").option("--json","machine-readable output").action((n,e)=>_t(n,e));ve.command("projects <id>").description("List a customer's projects").option("--json","machine-readable output").action((n,e)=>jt(n,e));var Vt=y.command("orders").description("Read orders");Vt.command("list").description("List a project's orders, or the newest-updated across every project with --project omitted").option("--project <id>","project id").option("--open","only the project's active (non-cancelled) order (requires --project)").option("--limit <n>","cross-project mode only: max rows (default 20, max 100)",n=>Number(n)).option("--since <iso>","cross-project mode only: only orders updated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(n=>Ot(n));Vt.command("pdf <id>").description("Download an order PDF").option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>xt(n,e));var Fr=y.command("quotations").description("Read quotations (requires quotations:read)");Fr.command("list").description("Show a project's quote history, or the newest-generated across every project with --project omitted").option("--project <id>","project id").option("--limit <n>","cross-project mode only: max rows (default 20, max 100)",n=>Number(n)).option("--since <iso>","cross-project mode only: only quotations generated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(n=>Pt(n));var Dt=y.command("users").description("Read registered accounts (requires staff:read)");Dt.command("list").description("List registered users, newest-registered first").option("--limit <n>","max rows (default 20, max 100)",n=>Number(n)).option("--since <iso>","only users registered at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(n=>At(n));Dt.command("by-phone <phone>").description("Find the account(s) tied to a phone number (the linked client, plus any designer who owns a project for that customer)").option("--json","machine-readable output").action((n,e)=>vt(n,e));y.command("help-texts").description("Read the help-text table").option("--json","machine-readable output").action(n=>$t(n));var Lr=y.command("skill").description("Manage the bundled Claude Skill");Lr.command("install").description("Install the wardrobe-configurator Skill for Claude Code").option("--project","install into ./.claude/skills instead of ~/.claude/skills").option("--json","machine-readable output").action(n=>Nt(n));y.parseAsync().catch(async n=>{let e=await Ht(n,process.argv.includes("--json"));process.stderr.write(`${e}
61
70
  `),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lahat-group/cli",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "CLI + Claude Skill to build, validate, price, and save wardrobe designs.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/skill/SKILL.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wardrobe-configurator
3
- description: Use when the user wants to build, configure, validate, price, or order a wardrobe/closet design from the terminal — phrases like "configure a wardrobe", "price a design", "build a closet layout", "validate my wardrobe config" — OR wants to look up existing wardrobe data: projects, customers, designers, orders and their PDFs, e.g. "which projects does this designer have", "find the customer with phone 05x", "who is on this project", "what is the status of this order", "download the order PDF". Drives the `wardrobe` CLI (HTTP client over the configurator API); a WardrobeConfig JSON file on disk is the unit of work for design verbs, and every lookup verb is read-only.
3
+ description: Use when the user wants to build, configure, validate, price, or order a wardrobe/closet design from the terminal — phrases like "configure a wardrobe", "price a design", "build a closet layout", "validate my wardrobe config" — OR wants to look up existing wardrobe data: projects, customers, designers, orders, quotations and their PDFs, or (staff only) registered users across the whole system, e.g. "which projects does this designer have", "find the customer with phone 05x", "who is on this project", "what is the status of this order", "download the order PDF", "who signed up recently", "which account owns this phone number", "what's the latest quote we generated". Drives the `wardrobe` CLI (HTTP client over the configurator API); a WardrobeConfig JSON file on disk is the unit of work for design verbs, and every lookup verb is read-only.
4
4
  ---
5
5
 
6
6
  # Wardrobe Configurator CLI
@@ -71,7 +71,7 @@ or a saved design id.
71
71
  ## Reading what exists
72
72
 
73
73
  Every read the key can reach has a verb. **All of them are GETs** — the CLI can read
74
- customers and orders but never create or change them (`customers:write`,
74
+ customers, orders and quotations but never create or change them (`customers:write`,
75
75
  `orders:write` and `quotations:write` are not on the CLI's key, so those routes
76
76
  answer `403 insufficient_scope` whoever signed in).
77
77
 
@@ -86,32 +86,67 @@ answer `403 insufficient_scope` whoever signed in).
86
86
  | `wardrobe customers get <id>` | One customer |
87
87
  | `wardrobe customers projects <id>` | That customer's projects |
88
88
  | `wardrobe designs list --project <id>` | Designs saved in a project |
89
+ | `wardrobe designs list` | The newest designs across every project you can see (all yours, or the whole tenant with `staff:read`) |
90
+ | `wardrobe designs list --limit <n>` `--since <ISO>` | Same, paged — `--limit` caps rows (default 20, max 100), `--since` filters by `updatedAt >=` |
89
91
  | `wardrobe designs thumbnail <id> --out f.jpg` | The design's rendered thumbnail |
90
92
  | `wardrobe orders list --project <id>` | Every order the project has had |
91
93
  | `wardrobe orders list --project <id> --open` | Only its active (non-cancelled) order |
94
+ | `wardrobe orders list` | The newest-**updated** orders across every project you can see — "what moved", not "what's new": a status change or a revision surfaces an old order here too |
95
+ | `wardrobe orders list --limit <n>` `--since <ISO>` | Same, paged (`--since` filters by `updatedAt >=`) |
92
96
  | `wardrobe orders pdf <id> --out f.pdf` | The order PDF |
97
+ | `wardrobe quotations list --project <id>` | That project's quote number + full revision history |
98
+ | `wardrobe quotations list` | Every quotation you can see, **newest-generated first** — this is "latest quotes generation" |
99
+ | `wardrobe quotations list --limit <n>` `--since <ISO>` | Same, paged (`--since` filters by `updatedAt >=`, i.e. last generated at/after) |
100
+ | `wardrobe users list` | Registered accounts, **newest-registered first** — staff only, see below |
101
+ | `wardrobe users list --limit <n>` `--since <ISO>` | Same, paged (`--since` filters by `createdAt >=`) — `--limit 5` with no `--since` is "the latest registered users"; omit both, paging with `--since` off the last row's timestamp, for "every user in the system" |
102
+ | `wardrobe users by-phone <number>` | The account(s) tied to that phone number: the linked client account plus every designer who owns a project for a customer with it — staff only |
93
103
  | `wardrobe help-texts` | The help-text table |
94
104
 
95
105
  `projects list` already returns each project's **customer and owning designer inline** —
96
106
  so "who is the customer on each of this designer's projects" is one call plus a filter,
97
107
  never one call per project. Prefer `--phone` / `--designer` over fetching and grepping.
98
108
 
109
+ Every cross-project/cross-tenant list (`designs`, `orders`, `quotations`, `users`) takes
110
+ `--limit` (1–100, default 20) and a `--since` cursor — pass the last row's timestamp
111
+ back as `--since` to page further instead of guessing an offset. A malformed `--since` or
112
+ an out-of-range `--limit` is a `400`, not a silently-ignored filter — read the error
113
+ rather than retrying blind.
114
+
99
115
  ### What you can see is not what exists
100
116
 
101
117
  The list is bounded by the key, so an empty result is as often a **visibility** answer as
102
118
  a data one. `wardrobe whoami --json` reports the truth under `agent.scopes` and `role`:
103
119
 
104
- - An ordinary designer or client sees **their own** projects plus ones they were invited
105
- to. A project belonging to someone else answers `403 Forbidden`, not `404`.
120
+ - An ordinary designer or client sees **their own** projects, designs, orders and
121
+ quotations, plus ones they were invited to. A project belonging to someone else
122
+ answers `403 Forbidden`, not `404`. `wardrobe users list` and `users by-phone` answer
123
+ `403 Forbidden` outright — there is no per-row visibility to fall back to; the whole
124
+ surface is staff-only (see below).
106
125
  - A key approved by an **admin or support** user *and* carrying **`staff:read`** sees
107
- **every** project, customer and order in the system. That scope is granted only to
126
+ **every** project, customer, order and quotation in the system — and can use
127
+ `wardrobe users list` / `users by-phone` at all. That scope is granted only to
108
128
  staff, only for GETs, and is listed by name on the consent screen. The same approver
109
129
  also receives **`staff:write`**, which lets `designs create` / `designs update` land in
110
- a project the admin does not own. A key logged in before 2026-09-05 lacks it — a `403
111
- Forbidden` on a write to someone else's project means `wardrobe login` again.
130
+ a project the admin does not own. A key logged in before 2026-09-05 lacks `staff:read`
131
+ and before 2026-09-12 lacks `quotations:read` — a `403 insufficient_scope` on
132
+ `quotations list`, or a `403 Forbidden` on a write to someone else's project, means
133
+ `wardrobe login` again.
112
134
 
113
135
  Never tell a user something does not exist when you only know your key cannot see it.
114
- Say which it is: `403 Forbidden` means the row is someone else's, `404` means it is gone.
136
+ Say which it is: `403 Forbidden` means the row is someone else's (or, for `users`, that
137
+ your key isn't staff at all), `404` means it is gone.
138
+
139
+ ### `wardrobe users` is a directory lookup, not a customer lookup
140
+
141
+ `users list` / `users by-phone` read the `User` **account** table — designers, admins,
142
+ support and self-serve clients who can sign in — not the per-project `Customer` contact
143
+ card `wardrobe customers` reads. A phone number usually resolves to a **designer**
144
+ (whoever owns the project for the customer with that number), occasionally to a
145
+ **client** account too (if that customer accepted a project invitation and has their own
146
+ login). It is normal for `users by-phone` to return more than one account, or to return
147
+ zero when the number belongs to a customer nobody has invited to sign in — that is not
148
+ an error, and it does not mean the phone number is unknown; check `wardrobe projects list
149
+ --phone <number>` for the project/customer side of the same question.
115
150
 
116
151
  ### Not available here
117
152
 
@@ -119,8 +154,6 @@ Don't reach for these; they are not CLI verbs and not agent-reachable:
119
154
 
120
155
  - **Anything under `/admin`**, plus commissions and invitations — barred to every agent
121
156
  key at the mount (`403 agent_not_permitted`). No scope unlocks them.
122
- - **Quotation history.** `POST /quotations/pdf` is open to other clients, but reading a
123
- project's past quotes is JWT-only — a human in the web app.
124
157
  - **Manufacturing-files export.** Staff-only, through the web app.
125
158
 
126
159
  ## WardrobeConfig shape (top-level)
@@ -147,10 +180,11 @@ Prefer generating the skeleton with `wardrobe init` rather than hand-writing it
147
180
 
148
181
  - **The CLI can read orders but never place one.** Its key carries `profile:read`,
149
182
  `projects:read`, `customers:read`, `designs:read`, `designs:write`, `orders:read`,
150
- `price:read` (+ `staff:read` and `staff:write` for staff) — **every write beyond designs is absent**,
151
- and so is every admin scope. `wardrobe orders list` and `orders pdf` work; creating
152
- or changing an order, a customer or a quotation answers `403 insufficient_scope`.
153
- Don't attempt it, and don't attempt admin/catalog operations.
183
+ `price:read`, `quotations:read` (+ `staff:read` and `staff:write` for staff) —
184
+ **every write beyond designs is absent**, and so is every admin scope. `wardrobe
185
+ orders list`, `orders pdf` and `quotations list` work; creating or changing an order,
186
+ a customer or a quotation answers `403 insufficient_scope`. Don't attempt it, and
187
+ don't attempt admin/catalog operations.
154
188
  - To turn a saved design into an order, direct the **human** to the web app: they
155
189
  open the project, review the design, and complete the **verify-details** flow —
156
190
  which computes the final price, freezes the PDF, and advances the order. Only a