@lahat-group/cli 2.1.0 → 2.1.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.
Files changed (2) hide show
  1. package/dist/index.js +59 -59
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,87 +1,87 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
3
- var on=Object.create;var Ne=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var an=Object.getOwnPropertyNames;var cn=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty;var V=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var ln=(r,e)=>()=>(r&&(e=r(r=0)),e);var k=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var dn=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of an(e))!un.call(r,i)&&i!==t&&Ne(r,i,{get:()=>e[i],enumerable:!(n=sn(e,i))||n.enumerable});return r};var hn=(r,e,t)=>(t=r!=null?on(cn(r)):{},dn(e||!r||!r.__esModule?Ne(t,"default",{value:r,enumerable:!0}):t,r));import lr from"path";import{fileURLToPath as hr}from"url";var u=ln(()=>{"use strict"});var F=k(re=>{"use strict";u();var J=class extends Error{constructor(e,t,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},ne=class extends J{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};re.CommanderError=J;re.InvalidArgumentError=ne});var z=k(oe=>{"use strict";u();var{InvalidArgumentError:mn}=F(),ie=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,n)=>{if(!this.argChoices.includes(t))throw new mn(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,n):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function pn(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}oe.Argument=ie;oe.humanReadableArgName=pn});var ae=k(Ie=>{"use strict";u();var{humanReadableArgName:fn}=z(),se=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),n=e._getHelpCommand();return n&&!n._hidden&&t.push(n),this.sortSubcommands&&t.sort((i,o)=>i.name().localeCompare(o.name())),t}compareOptions(e,t){let n=i=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return n(e).localeCompare(n(t))}visibleOptions(e){let t=e.options.filter(i=>!i.hidden),n=e._getHelpOption();if(n&&!n.hidden){let i=n.short&&e._findOption(n.short),o=n.long&&e._findOption(n.long);!i&&!o?t.push(n):n.long&&!o?t.push(e.createOption(n.long,n.description)):n.short&&!i&&t.push(e.createOption(n.short,n.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let n=e.parent;n;n=n.parent){let i=n.options.filter(o=>!o.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(n=>fn(n)).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((n,i)=>Math.max(n,t.subcommandTerm(i).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((n,i)=>Math.max(n,t.optionTerm(i).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((n,i)=>Math.max(n,t.optionTerm(i).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((n,i)=>Math.max(n,t.argumentTerm(i).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let n="";for(let i=e.parent;i;i=i.parent)n=i.name()+" "+n;return n+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(n=>JSON.stringify(n)).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(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let n=`(${t.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}formatHelp(e,t){let n=t.padWidth(e,t),i=t.helpWidth||80,o=2,s=2;function c(y,A){if(A){let te=`${y.padEnd(n+s)}${A}`;return t.wrap(te,i-o,n+s)}return y}function a(y){return y.join(`
3
+ var ir=Object.create;var Ne=Object.defineProperty;var or=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ar=Object.getPrototypeOf,cr=Object.prototype.hasOwnProperty;var V=(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 ur=(n,e)=>()=>(n&&(e=n(n=0)),e);var k=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var lr=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!cr.call(n,i)&&i!==t&&Ne(n,i,{get:()=>e[i],enumerable:!(r=or(e,i))||r.enumerable});return n};var dr=(n,e,t)=>(t=n!=null?ir(ar(n)):{},lr(e||!n||!n.__esModule?Ne(t,"default",{value:n,enumerable:!0}):t,n));import ln from"path";import{fileURLToPath as hn}from"url";var u=ur(()=>{"use strict"});var F=k(ne=>{"use strict";u();var J=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}},re=class extends J{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};ne.CommanderError=J;ne.InvalidArgumentError=re});var z=k(oe=>{"use strict";u();var{InvalidArgumentError:hr}=F(),ie=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 hr(`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 mr(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}oe.Argument=ie;oe.humanReadableArgName=mr});var ae=k(Ie=>{"use strict";u();var{humanReadableArgName:pr}=z(),se=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,o)=>i.name().localeCompare(o.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),o=r.long&&e._findOption(r.long);!i&&!o?t.push(r):r.long&&!o?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(o=>!o.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=>pr(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,o=2,s=2;function c(y,A){if(A){let te=`${y.padEnd(r+s)}${A}`;return t.wrap(te,i-o,r+s)}return y}function a(y){return y.join(`
4
4
  `).replace(/^/gm," ".repeat(o))}let l=[`Usage: ${t.commandUsage(e)}`,""],d=t.commandDescription(e);d.length>0&&(l=l.concat([t.wrap(d,i,0),""]));let f=t.visibleArguments(e).map(y=>c(t.argumentTerm(y),t.argumentDescription(y)));f.length>0&&(l=l.concat(["Arguments:",a(f),""]));let v=t.visibleOptions(e).map(y=>c(t.optionTerm(y),t.optionDescription(y)));if(v.length>0&&(l=l.concat(["Options:",a(v),""])),this.showGlobalOptions){let y=t.visibleGlobalOptions(e).map(A=>c(t.optionTerm(A),t.optionDescription(A)));y.length>0&&(l=l.concat(["Global Options:",a(y),""]))}let P=t.visibleCommands(e).map(y=>c(t.subcommandTerm(y),t.subcommandDescription(y)));return P.length>0&&(l=l.concat(["Commands:",a(P),""])),l.join(`
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,n,i=40){let o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",s=new RegExp(`[\\n][${o}]+`);if(e.match(s))return e;let c=t-n;if(c<i)return e;let a=e.slice(0,n),l=e.slice(n).replace(`\r
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 o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",s=new RegExp(`[\\n][${o}]+`);if(e.match(s))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
- `),d=" ".repeat(n),v="\\s\u200B",P=new RegExp(`
7
+ `),d=" ".repeat(r),v="\\s\u200B",P=new RegExp(`
8
8
  |.{1,${c-1}}([${v}]|$)|[^${v}]+?([${v}]|$)`,"g"),y=l.match(P)||[];return a+y.map((A,te)=>A===`
9
9
  `?"":(te>0?d:"")+A.trimEnd()).join(`
10
- `)}};Ie.Help=se});var de=k(le=>{"use strict";u();var{InvalidArgumentError:gn}=F(),ce=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 n=yn(e);this.short=n.shortFlag,this.long=n.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,n)=>{if(!this.argChoices.includes(t))throw new gn(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,n):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return bn(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ue=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,n)=>{this.positiveOptions.has(n)&&this.dualOptions.add(n)})}valueFromOption(e,t){let n=t.attributeName();if(!this.dualOptions.has(n))return!0;let i=this.negativeOptions.get(n).presetArg,o=i!==void 0?i:!1;return t.negate===(o===e)}};function bn(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function yn(r){let e,t,n=r.split(/[ |,]+/);return n.length>1&&!/^[[<]/.test(n[1])&&(e=n.shift()),t=n.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}le.Option=ce;le.DualOptions=ue});var He=k(De=>{"use strict";u();function wn(r,e){if(Math.abs(r.length-e.length)>3)return Math.max(r.length,e.length);let t=[];for(let n=0;n<=r.length;n++)t[n]=[n];for(let n=0;n<=e.length;n++)t[0][n]=n;for(let n=1;n<=e.length;n++)for(let i=1;i<=r.length;i++){let o=1;r[i-1]===e[n-1]?o=0:o=1,t[i][n]=Math.min(t[i-1][n]+1,t[i][n-1]+1,t[i-1][n-1]+o),i>1&&n>1&&r[i-1]===e[n-2]&&r[i-2]===e[n-1]&&(t[i][n]=Math.min(t[i][n],t[i-2][n-2]+1))}return t[r.length][e.length]}function _n(r,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=r.startsWith("--");t&&(r=r.slice(2),e=e.map(s=>s.slice(2)));let n=[],i=3,o=.4;return e.forEach(s=>{if(s.length<=1)return;let c=wn(r,s),a=Math.max(r.length,s.length);(a-c)/a>o&&(c<i?(i=c,n=[s]):c===i&&n.push(s))}),n.sort((s,c)=>s.localeCompare(c)),t&&(n=n.map(s=>`--${s}`)),n.length>1?`
11
- (Did you mean one of ${n.join(", ")}?)`:n.length===1?`
12
- (Did you mean ${n[0]}?)`:""}De.suggestSimilar=_n});var Be=k(Me=>{"use strict";u();var jn=V("events").EventEmitter,he=V("child_process"),$=V("path"),me=V("fs"),g=V("process"),{Argument:vn,humanReadableArgName:On}=z(),{CommanderError:pe}=F(),{Help:xn}=ae(),{Option:Ve,DualOptions:$n}=de(),{suggestSimilar:Fe}=He(),fe=class r extends jn{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,n)=>n(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,n){let i=t,o=n;typeof i=="object"&&i!==null&&(o=i,i=null),o=o||{};let[,s,c]=e.match(/([^ ]+) *(.*)/),a=this.createCommand(s);return i&&(a.description(i),a._executableHandler=!0),o.isDefault&&(this._defaultCommandName=a._name),a._hidden=!!(o.noHelp||o.hidden),a._executableFile=o.executableFile||null,c&&a.arguments(c),this._registerCommand(a),a.parent=this,a.copyInheritedSettings(this),i?this:a}createCommand(e){return new r(e)}createHelp(){return Object.assign(new xn,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 vn(e,t)}argument(e,t,n,i){let o=this.createArgument(e,t);return typeof n=="function"?o.default(i).argParser(n):o.default(n),this.addArgument(o),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[,n,i]=e.match(/([^ ]+) *(.*)/),o=t??"display help for command",s=this.createCommand(n);return s.helpOption(!1),i&&s.arguments(i),o&&s.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=s,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 n=["preSubcommand","preAction","postAction"];if(!n.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
14
- Expecting one of '${n.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,n){this._exitCallback&&this._exitCallback(new pe(e,t,n)),g.exit(e)}action(e){let t=n=>{let i=this.registeredArguments.length,o=n.slice(0,i);return this._storeOptionsAsProperties?o[i]=this:o[i]=this.opts(),o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new Ve(e,t)}_callParseArg(e,t,n,i){try{return e.parseArg(t,n)}catch(o){if(o.code==="commander.invalidArgument"){let s=`${i} ${o.message}`;this.error(s,{exitCode:o.exitCode,code:o.code})}throw o}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let n=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 '${n}'
15
- - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=i=>[i.name()].concat(i.aliases()),n=t(e).find(i=>this._findCommand(i));if(n){let i=t(this._findCommand(n)).join("|"),o=t(e).join("|");throw new Error(`cannot add command '${o}' as already have command '${i}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),n=e.attributeName();if(e.negate){let o=e.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(n,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(n,e.defaultValue,"default");let i=(o,s,c)=>{o==null&&e.presetArg!==void 0&&(o=e.presetArg);let a=this.getOptionValue(n);o!==null&&e.parseArg?o=this._callParseArg(e,o,a,s):o!==null&&e.variadic&&(o=e._concatValue(o,a)),o==null&&(e.negate?o=!1:e.isBoolean()||e.optional?o=!0:o=""),this.setOptionValueWithSource(n,o,c)};return this.on("option:"+t,o=>{let s=`error: option '${e.flags}' argument '${o}' is invalid.`;i(o,s,"cli")}),e.envVar&&this.on("optionEnv:"+t,o=>{let s=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;i(o,s,"env")}),this}_optionEx(e,t,n,i,o){if(typeof t=="object"&&t instanceof Ve)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(t,n);if(s.makeOptionMandatory(!!e.mandatory),typeof i=="function")s.default(o).argParser(i);else if(i instanceof RegExp){let c=i;i=(a,l)=>{let d=c.exec(a);return d?d[0]:l},s.default(o).argParser(i)}else s.default(i);return this.addOption(s)}option(e,t,n,i){return this._optionEx({},e,t,n,i)}requiredOption(e,t,n,i){return this._optionEx({mandatory:!0},e,t,n,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,n){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=n,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(n=>{n.getOptionValueSource(e)!==void 0&&(t=n.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 n;switch(t.from){case void 0:case"node":this._scriptPath=e[1],n=e.slice(2);break;case"electron":g.defaultApp?(this._scriptPath=e[1],n=e.slice(2)):n=e.slice(1);break;case"user":n=e.slice(0);break;case"eval":n=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",n}parse(e,t){let n=this._prepareUserArgs(e,t);return this._parseCommand([],n),this}async parseAsync(e,t){let n=this._prepareUserArgs(e,t);return await this._parseCommand([],n),this}_executeSubCommand(e,t){t=t.slice();let n=!1,i=[".js",".ts",".tsx",".mjs",".cjs"];function o(d,f){let v=$.resolve(d,f);if(me.existsSync(v))return v;if(i.includes($.extname(f)))return;let P=i.find(y=>me.existsSync(`${v}${y}`));if(P)return`${v}${P}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=e._executableFile||`${this._name}-${e._name}`,c=this._executableDir||"";if(this._scriptPath){let d;try{d=me.realpathSync(this._scriptPath)}catch{d=this._scriptPath}c=$.resolve($.dirname(d),c)}if(c){let d=o(c,s);if(!d&&!e._executableFile&&this._scriptPath){let f=$.basename(this._scriptPath,$.extname(this._scriptPath));f!==this._name&&(d=o(c,`${f}-${e._name}`))}s=d||s}n=i.includes($.extname(s));let a;g.platform!=="win32"?n?(t.unshift(s),t=Le(g.execArgv).concat(t),a=he.spawn(g.argv[0],t,{stdio:"inherit"})):a=he.spawn(s,t,{stdio:"inherit"}):(t.unshift(s),t=Le(g.execArgv).concat(t),a=he.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",d=>{d=d??1,l?l(new pe(d,"commander.executeSubCommandAsync","(close)")):g.exit(d)}),a.on("error",d=>{if(d.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",v=`'${s}' does not exist
10
+ `)}};Ie.Help=se});var de=k(le=>{"use strict";u();var{InvalidArgumentError:fr}=F(),ce=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=br(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 fr(`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 gr(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ue=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,o=i!==void 0?i:!1;return t.negate===(o===e)}};function gr(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function br(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}}le.Option=ce;le.DualOptions=ue});var He=k(De=>{"use strict";u();function yr(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 o=1;n[i-1]===e[r-1]?o=0:o=1,t[i][r]=Math.min(t[i-1][r]+1,t[i][r-1]+1,t[i-1][r-1]+o),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 wr(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(s=>s.slice(2)));let r=[],i=3,o=.4;return e.forEach(s=>{if(s.length<=1)return;let c=yr(n,s),a=Math.max(n.length,s.length);(a-c)/a>o&&(c<i?(i=c,r=[s]):c===i&&r.push(s))}),r.sort((s,c)=>s.localeCompare(c)),t&&(r=r.map(s=>`--${s}`)),r.length>1?`
11
+ (Did you mean one of ${r.join(", ")}?)`:r.length===1?`
12
+ (Did you mean ${r[0]}?)`:""}De.suggestSimilar=wr});var Be=k(Me=>{"use strict";u();var _r=V("events").EventEmitter,he=V("child_process"),$=V("path"),me=V("fs"),g=V("process"),{Argument:jr,humanReadableArgName:vr}=z(),{CommanderError:pe}=F(),{Help:Or}=ae(),{Option:Ve,DualOptions:xr}=de(),{suggestSimilar:Fe}=He(),fe=class n extends _r{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,o=r;typeof i=="object"&&i!==null&&(o=i,i=null),o=o||{};let[,s,c]=e.match(/([^ ]+) *(.*)/),a=this.createCommand(s);return i&&(a.description(i),a._executableHandler=!0),o.isDefault&&(this._defaultCommandName=a._name),a._hidden=!!(o.noHelp||o.hidden),a._executableFile=o.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 Or,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 jr(e,t)}argument(e,t,r,i){let o=this.createArgument(e,t);return typeof r=="function"?o.default(i).argParser(r):o.default(r),this.addArgument(o),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(/([^ ]+) *(.*)/),o=t??"display help for command",s=this.createCommand(r);return s.helpOption(!1),i&&s.arguments(i),o&&s.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=s,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 pe(e,t,r)),g.exit(e)}action(e){let t=r=>{let i=this.registeredArguments.length,o=r.slice(0,i);return this._storeOptionsAsProperties?o[i]=this:o[i]=this.opts(),o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new Ve(e,t)}_callParseArg(e,t,r,i){try{return e.parseArg(t,r)}catch(o){if(o.code==="commander.invalidArgument"){let s=`${i} ${o.message}`;this.error(s,{exitCode:o.exitCode,code:o.code})}throw o}}_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("|"),o=t(e).join("|");throw new Error(`cannot add command '${o}' 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 o=e.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let i=(o,s,c)=>{o==null&&e.presetArg!==void 0&&(o=e.presetArg);let a=this.getOptionValue(r);o!==null&&e.parseArg?o=this._callParseArg(e,o,a,s):o!==null&&e.variadic&&(o=e._concatValue(o,a)),o==null&&(e.negate?o=!1:e.isBoolean()||e.optional?o=!0:o=""),this.setOptionValueWithSource(r,o,c)};return this.on("option:"+t,o=>{let s=`error: option '${e.flags}' argument '${o}' is invalid.`;i(o,s,"cli")}),e.envVar&&this.on("optionEnv:"+t,o=>{let s=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;i(o,s,"env")}),this}_optionEx(e,t,r,i,o){if(typeof t=="object"&&t instanceof Ve)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(t,r);if(s.makeOptionMandatory(!!e.mandatory),typeof i=="function")s.default(o).argParser(i);else if(i instanceof RegExp){let c=i;i=(a,l)=>{let d=c.exec(a);return d?d[0]:l},s.default(o).argParser(i)}else s.default(i);return this.addOption(s)}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 o(d,f){let v=$.resolve(d,f);if(me.existsSync(v))return v;if(i.includes($.extname(f)))return;let P=i.find(y=>me.existsSync(`${v}${y}`));if(P)return`${v}${P}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=e._executableFile||`${this._name}-${e._name}`,c=this._executableDir||"";if(this._scriptPath){let d;try{d=me.realpathSync(this._scriptPath)}catch{d=this._scriptPath}c=$.resolve($.dirname(d),c)}if(c){let d=o(c,s);if(!d&&!e._executableFile&&this._scriptPath){let f=$.basename(this._scriptPath,$.extname(this._scriptPath));f!==this._name&&(d=o(c,`${f}-${e._name}`))}s=d||s}r=i.includes($.extname(s));let a;g.platform!=="win32"?r?(t.unshift(s),t=Le(g.execArgv).concat(t),a=he.spawn(g.argv[0],t,{stdio:"inherit"})):a=he.spawn(s,t,{stdio:"inherit"}):(t.unshift(s),t=Le(g.execArgv).concat(t),a=he.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",d=>{d=d??1,l?l(new pe(d,"commander.executeSubCommandAsync","(close)")):g.exit(d)}),a.on("error",d=>{if(d.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",v=`'${s}' 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(v)}else if(d.code==="EACCES")throw new Error(`'${s}' not executable`);if(!l)g.exit(1);else{let f=new pe(1,"commander.executeSubCommandAsync","(error)");f.nestedError=d,l(f)}}),this.runningCommand=a}_dispatchSubcommand(e,t,n){let i=this._findCommand(e);i||this.help({error:!0});let o;return o=this._chainOrCallSubCommandHook(o,i,"preSubcommand"),o=this._chainOrCall(o,()=>{if(i._executableHandler)this._executeSubCommand(i,t.concat(n));else return i._parseCommand(t,n)}),o}_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=(n,i,o)=>{let s=i;if(i!==null&&n.parseArg){let c=`error: command-argument value '${i}' is invalid for argument '${n.name()}'.`;s=this._callParseArg(n,i,o,c)}return s};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((n,i)=>{let o=n.defaultValue;n.variadic?i<this.args.length?(o=this.args.slice(i),n.parseArg&&(o=o.reduce((s,c)=>e(n,c,s),n.defaultValue))):o===void 0&&(o=[]):i<this.args.length&&(o=this.args[i],n.parseArg&&(o=e(n,o,n.defaultValue))),t[i]=o}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let n=e,i=[];return this._getCommandAndAncestors().reverse().filter(o=>o._lifeCycleHooks[t]!==void 0).forEach(o=>{o._lifeCycleHooks[t].forEach(s=>{i.push({hookedCommand:o,callback:s})})}),t==="postAction"&&i.reverse(),i.forEach(o=>{n=this._chainOrCall(n,()=>o.callback(o.hookedCommand,this))}),n}_chainOrCallSubCommandHook(e,t,n){let i=e;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(o=>{i=this._chainOrCall(i,()=>o(this,t))}),i}_parseCommand(e,t){let n=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(n.operands),t=n.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(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){i(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(o,e,t)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent&&this.parent.listenerCount(o))i(),this._processArguments(),this.parent.emit(o,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(n=>{let i=n.attributeName();return this.getOptionValue(i)===void 0?!1:this.getOptionValueSource(i)!=="default"});e.filter(n=>n.conflictsWith.length>0).forEach(n=>{let i=e.find(o=>n.conflictsWith.includes(o.attributeName()));i&&this._conflictingOption(n,i)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],n=[],i=t,o=e.slice();function s(a){return a.length>1&&a[0]==="-"}let c=null;for(;o.length;){let a=o.shift();if(a==="--"){i===n&&i.push(a),i.push(...o);break}if(c&&!s(a)){this.emit(`option:${c.name()}`,a);continue}if(c=null,s(a)){let l=this._findOption(a);if(l){if(l.required){let d=o.shift();d===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,d)}else if(l.optional){let d=null;o.length>0&&!s(o[0])&&(d=o.shift()),this.emit(`option:${l.name()}`,d)}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()}`),o.unshift(`-${a.slice(2)}`));continue}}if(/^--[^=]+=/.test(a)){let l=a.indexOf("="),d=this._findOption(a.slice(0,l));if(d&&(d.required||d.optional)){this.emit(`option:${d.name()}`,a.slice(l+1));continue}}if(s(a)&&(i=n),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&n.length===0){if(this._findCommand(a)){t.push(a),o.length>0&&n.push(...o);break}else if(this._getHelpCommand()&&a===this._getHelpCommand().name()){t.push(a),o.length>0&&t.push(...o);break}else if(this._defaultCommandName){n.push(a),o.length>0&&n.push(...o);break}}if(this._passThroughOptions){i.push(a),o.length>0&&i.push(...o);break}i.push(a)}return{operands:t,unknown:n}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let n=0;n<t;n++){let i=this.options[n].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(v)}else if(d.code==="EACCES")throw new Error(`'${s}' not executable`);if(!l)g.exit(1);else{let f=new pe(1,"commander.executeSubCommandAsync","(error)");f.nestedError=d,l(f)}}),this.runningCommand=a}_dispatchSubcommand(e,t,r){let i=this._findCommand(e);i||this.help({error:!0});let o;return o=this._chainOrCallSubCommandHook(o,i,"preSubcommand"),o=this._chainOrCall(o,()=>{if(i._executableHandler)this._executeSubCommand(i,t.concat(r));else return i._parseCommand(t,r)}),o}_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,o)=>{let s=i;if(i!==null&&r.parseArg){let c=`error: command-argument value '${i}' is invalid for argument '${r.name()}'.`;s=this._callParseArg(r,i,o,c)}return s};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,i)=>{let o=r.defaultValue;r.variadic?i<this.args.length?(o=this.args.slice(i),r.parseArg&&(o=o.reduce((s,c)=>e(r,c,s),r.defaultValue))):o===void 0&&(o=[]):i<this.args.length&&(o=this.args[i],r.parseArg&&(o=e(r,o,r.defaultValue))),t[i]=o}),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(o=>o._lifeCycleHooks[t]!==void 0).forEach(o=>{o._lifeCycleHooks[t].forEach(s=>{i.push({hookedCommand:o,callback:s})})}),t==="postAction"&&i.reverse(),i.forEach(o=>{r=this._chainOrCall(r,()=>o.callback(o.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let i=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(o=>{i=this._chainOrCall(i,()=>o(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])},o=`command:${this.name()}`;if(this._actionHandler){i(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(o,e,t)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent&&this.parent.listenerCount(o))i(),this._processArguments(),this.parent.emit(o,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(o=>r.conflictsWith.includes(o.attributeName()));i&&this._conflictingOption(r,i)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],i=t,o=e.slice();function s(a){return a.length>1&&a[0]==="-"}let c=null;for(;o.length;){let a=o.shift();if(a==="--"){i===r&&i.push(a),i.push(...o);break}if(c&&!s(a)){this.emit(`option:${c.name()}`,a);continue}if(c=null,s(a)){let l=this._findOption(a);if(l){if(l.required){let d=o.shift();d===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,d)}else if(l.optional){let d=null;o.length>0&&!s(o[0])&&(d=o.shift()),this.emit(`option:${l.name()}`,d)}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()}`),o.unshift(`-${a.slice(2)}`));continue}}if(/^--[^=]+=/.test(a)){let l=a.indexOf("="),d=this._findOption(a.slice(0,l));if(d&&(d.required||d.optional)){this.emit(`option:${d.name()}`,a.slice(l+1));continue}}if(s(a)&&(i=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(a)){t.push(a),o.length>0&&r.push(...o);break}else if(this._getHelpCommand()&&a===this._getHelpCommand().name()){t.push(a),o.length>0&&t.push(...o);break}else if(this._defaultCommandName){r.push(a),o.length>0&&r.push(...o);break}}if(this._passThroughOptions){i.push(a),o.length>0&&i.push(...o);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 n=t||{},i=n.exitCode||1,o=n.code||"commander.error";this._exit(i,o,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 $n(this.options),t=n=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter(n=>n.implied!==void 0&&t(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(n=>{Object.keys(n.implied).filter(i=>!t(i)).forEach(i=>{this.setOptionValueWithSource(i,n.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 n=s=>{let c=s.attributeName(),a=this.getOptionValue(c),l=this.options.find(f=>f.negate&&c===f.attributeName()),d=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:d||s},i=s=>{let c=n(s),a=c.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},o=`error: ${i(e)} cannot be used with ${i(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let i=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter(c=>c.long).map(c=>c.long);i=i.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);t=Fe(e,i)}let n=`error: unknown option '${e}'${t}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,n=t===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${n} but got ${e.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(o=>{i.push(o.name()),o.alias()&&i.push(o.alias())}),t=Fe(e,i)}let n=`error: unknown command '${e}'${t}`;this.error(n,{code:"commander.unknownCommand"})}version(e,t,n){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",n=n||"output the version number";let i=this.createOption(t,n);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 n=this.parent?._findCommand(e);if(n){let i=[n.name()].concat(n.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(n=>On(n));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=$.basename(e,$.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},n;return t.error?n=i=>this._outputConfiguration.writeErr(i):n=i=>this._outputConfiguration.writeOut(i),t.write=e.write||n,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let n=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let i=this.helpInformation(n);if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");n.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",n))}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 n=["beforeAll","before","after","afterAll"];if(!n.includes(e))throw new Error(`Unexpected value for position to addHelpText.
23
- Expecting one of '${n.join("', '")}'`);let i=`${e}Help`;return this.on(i,o=>{let s;typeof t=="function"?s=t({error:o.error,command:o.command}):s=t,s&&o.write(`${s}
24
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Le(r){return r.map(e=>{if(!e.startsWith("--inspect"))return e;let t,n="127.0.0.1",i="9229",o;return(o=e.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?i=o[3]:n=o[3]):(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],n=o[3],i=o[4]),t&&i!=="0"?`${t}=${n}:${parseInt(i)+1}`:e})}Me.Command=fe});var ze=k(x=>{"use strict";u();var{Argument:Ue}=z(),{Command:ge}=Be(),{CommanderError:Cn,InvalidArgumentError:We}=F(),{Help:An}=ae(),{Option:Je}=de();x.program=new ge;x.createCommand=r=>new ge(r);x.createOption=(r,e)=>new Je(r,e);x.createArgument=(r,e)=>new Ue(r,e);x.Command=ge;x.Option=Je;x.Argument=Ue;x.Help=An;x.CommanderError=Cn;x.InvalidArgumentError=We;x.InvalidOptionArgumentError=We});u();u();var Ge=hn(ze(),1),{program:b,createCommand:Sr,createArgument:Er,createOption:Pr,CommanderError:kr,InvalidArgumentError:Tr,InvalidOptionArgumentError:Rr,Command:qr,Argument:Nr,Option:Ir,Help:Dr}=Ge.default;u();import{existsSync as Un}from"fs";u();u();u();u();var O=class extends Error{response;request;options;constructor(e,t,n){let i=e.status||e.status===0?e.status:"",o=e.statusText??"",s=`${i} ${o}`.trim(),c=s?`status code ${s}`:"an unknown error";super(`Request failed with ${c}: ${t.method} ${t.url}`),this.name="HTTPError",this.response=e,this.request=t,this.options=n}};u();var I=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 D=class extends Error{name="ForceRetryError";customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new I(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 be=(()=>{let r=!1,e=!1,t=typeof globalThis.ReadableStream=="function",n=typeof globalThis.Request=="function";if(t&&n)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return r=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return r&&!e})(),Ke=typeof globalThis.AbortController=="function",G=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Ye=typeof globalThis.ReadableStream=="function",Qe=typeof globalThis.FormData=="function",K=["get","post","put","patch","head","delete"],Sn=()=>{};Sn();var Xe={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},Y=2147483647,Ze=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,Q=Symbol("stop"),L=class{options;constructor(e){this.options=e}},et=r=>new L(r),tt={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},nt={next:!0},rt={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 En=r=>{if(!r)return 0;if(r instanceof FormData){let e=0;for(let[t,n]of r)e+=Ze,e+=new TextEncoder().encode(`Content-Disposition: form-data; name="${t}"`).length,e+=typeof n=="string"?new TextEncoder().encode(n).length:n.size;return e}if(r instanceof Blob)return r.size;if(r instanceof ArrayBuffer)return r.byteLength;if(typeof r=="string")return new TextEncoder().encode(r).length;if(r instanceof URLSearchParams)return new TextEncoder().encode(r.toString()).length;if("byteLength"in r)return r.byteLength;if(typeof r=="object"&&r!==null)try{let e=JSON.stringify(r);return new TextEncoder().encode(e).length}catch{return 0}return 0},it=(r,e,t)=>{let n,i=0;return r.pipeThrough(new TransformStream({transform(o,s){if(s.enqueue(o),n){i+=n.byteLength;let c=e===0?0:i/e;c>=1&&(c=1-Number.EPSILON),t?.({percent:c,totalBytes:Math.max(e,i),transferredBytes:i},n)}n=o},flush(){n&&(i+=n.byteLength,t?.({percent:1,totalBytes:Math.max(e,i),transferredBytes:i},n))}}))},ot=(r,e)=>{if(!r.body)return r;if(r.status===204)return new Response(null,{status:r.status,statusText:r.statusText,headers:r.headers});let t=Math.max(0,Number(r.headers.get("content-length"))||0);return new Response(it(r.body,t,e),{status:r.status,statusText:r.statusText,headers:r.headers})},st=(r,e,t)=>{if(!r.body)return r;let n=En(t??r.body);return new Request(r,{duplex:"half",body:it(r.body,n,e)})};u();u();var S=r=>r!==null&&typeof r=="object";var M=(...r)=>{for(let e of r)if((!S(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return _e({},...r)},ye=(r={},e={})=>{let t=new globalThis.Headers(r),n=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(let[o,s]of i.entries())n&&s==="undefined"||s===void 0?t.delete(o):t.set(o,s);return t};function X(r,e,t){return Object.hasOwn(e,t)&&e[t]===void 0?[]:_e(r[t]??[],e[t]??[])}var we=(r={},e={})=>({beforeRequest:X(r,e,"beforeRequest"),beforeRetry:X(r,e,"beforeRetry"),afterResponse:X(r,e,"afterResponse"),beforeError:X(r,e,"beforeError")}),Pn=(r,e)=>{let t=new URLSearchParams;for(let n of[r,e])if(n!==void 0)if(n instanceof URLSearchParams)for(let[i,o]of n.entries())t.append(i,o);else if(Array.isArray(n))for(let i of n){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(S(n))for(let[i,o]of Object.entries(n))o!==void 0&&t.append(i,String(o));else{let i=new URLSearchParams(n);for(let[o,s]of i.entries())t.append(o,s)}return t},_e=(...r)=>{let e={},t={},n={},i,o=[];for(let s of r)if(Array.isArray(s))Array.isArray(e)||(e=[]),e=[...e,...s];else if(S(s)){for(let[c,a]of Object.entries(s)){if(c==="signal"&&a instanceof globalThis.AbortSignal){o.push(a);continue}if(c==="context"){if(a!=null&&(!S(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:Pn(i,a);continue}S(a)&&c in e&&(a=_e(e[c],a)),e={...e,[c]:a}}S(s.hooks)&&(n=we(n,s.hooks),e.hooks=n),S(s.headers)&&(t=ye(t,s.headers),e.headers=t)}return i!==void 0&&(e.searchParams=i),o.length>0&&(o.length===1?e.signal=o[0]:G?e.signal=AbortSignal.any(o):e.signal=o.at(-1)),e};u();var ct=r=>K.includes(r)?r.toUpperCase():r,kn=["get","put","head","delete","options","trace"],Tn=[408,413,429,500,502,503,504],Rn=[413,429,503],at={limit:2,methods:kn,statusCodes:Tn,afterStatusCodes:Rn,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:r=>.3*2**(r-1)*1e3,jitter:void 0,retryOnTimeout:!1},ut=(r={})=>{if(typeof r=="number")return{...at,limit:r};if(r.methods&&!Array.isArray(r.methods))throw new Error("retry.methods must be an array");if(r.methods&&=r.methods.map(t=>t.toLowerCase()),r.statusCodes&&!Array.isArray(r.statusCodes))throw new Error("retry.statusCodes must be an array");let e=Object.fromEntries(Object.entries(r).filter(([,t])=>t!==void 0));return{...at,...e}};u();u();var T=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};async function je(r,e,t,n){return new Promise((i,o)=>{let s=setTimeout(()=>{t&&t.abort(),o(new T(r))},n.timeout);n.fetch(r,e).then(i).catch(o).then(()=>{clearTimeout(s)})})}u();async function ve(r,{signal:e}){return new Promise((t,n)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(o),n(e.reason)}let o=setTimeout(()=>{e?.removeEventListener("abort",i),t()},r)})}u();var lt=(r,e)=>{let t={};for(let n in e)Object.hasOwn(e,n)&&!(n in rt)&&!(n in tt)&&(!(n in r)||n in nt)&&(t[n]=e[n]);return t},dt=r=>r===void 0?!1:Array.isArray(r)?r.length>0:r instanceof URLSearchParams?r.size>0:typeof r=="object"?Object.keys(r).length>0:typeof r=="string"?r.trim().length>0:!!r;u();function ht(r){return r instanceof O||r?.name===O.name}function mt(r){return r instanceof T||r?.name===T.name}var B=class r{static create(e,t){let n=new r(e,t),i=async()=>{if(typeof n.#e.timeout=="number"&&n.#e.timeout>Y)throw new RangeError(`The \`timeout\` option cannot be greater than ${Y}`);await Promise.resolve();let s=await n.#b();for(let c of n.#e.hooks.afterResponse){let a=n.#h(s.clone()),l;try{l=await c(n.request,n.#c(),a,{retryCount:n.#n})}catch(f){throw n.#o(a),n.#o(s),f}if(l instanceof L)throw n.#o(a),n.#o(s),new D(l.options);let d=l instanceof globalThis.Response?l:s;a!==d&&n.#o(a),s!==d&&n.#o(s),s=d}if(n.#h(s),!s.ok&&(typeof n.#e.throwHttpErrors=="function"?n.#e.throwHttpErrors(s.status):n.#e.throwHttpErrors)){let c=new O(s,n.request,n.#c());for(let a of n.#e.hooks.beforeError)c=await a(c,{retryCount:n.#n});throw c}if(n.#e.onDownloadProgress){if(typeof n.#e.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Ye)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let c=s.clone();return n.#o(s),ot(c,n.#e.onDownloadProgress)}return s},o=n.#m(i).finally(()=>{let s=n.#s;n.#l(s?.body??void 0),n.#l(n.request.body??void 0)});for(let[s,c]of Object.entries(Xe))s==="bytes"&&typeof globalThis.Response?.prototype?.bytes!="function"||(o[s]=async()=>{n.request.headers.set("accept",n.request.headers.get("accept")||c);let a=await o;if(s==="json"){if(a.status===204)return"";let l=await a.text();return l===""?"":t.parseJson?t.parseJson(l):JSON.parse(l)}return a[s]()});return o}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;#r;#n=0;#t;#e;#s;#i;#a;constructor(e,t={}){if(this.#t=e,this.#e={...t,headers:ye(this.#t.headers,t.headers),hooks:we({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:ct(t.method??this.#t.method??"GET"),prefixUrl:String(t.prefixUrl||""),retry:ut(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}Ke&&G&&(this.#i=this.#e.signal??this.#t.signal,this.#r=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#r.signal]):this.#r.signal),be&&(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 n=t.headers&&new globalThis.Headers(t.headers).has("content-type");if(this.#t instanceof globalThis.Request&&(Qe&&this.#e.body instanceof globalThis.FormData||this.#e.body instanceof URLSearchParams)&&!n&&this.#e.headers.delete("content-type"),this.request=new globalThis.Request(this.#t,this.#e),dt(this.#e.searchParams)){let o="?"+(typeof this.#e.searchParams=="string"?this.#e.searchParams.replace(/^\?/,""):new URLSearchParams(r.#f(this.#e.searchParams)).toString()),s=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);this.request=new globalThis.Request(s,this.#e)}if(this.#e.onUploadProgress){if(typeof this.#e.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!be)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.#n),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 n=this.#e.retry.backoffLimit??Number.POSITIVE_INFINITY;return Math.min(n,t)}async#g(e){if(this.#n++,this.#n>this.#e.retry.limit)throw e;let t=e instanceof Error?e:new I(e);if(t instanceof D)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 n=await this.#e.retry.shouldRetry({error:t,retryCount:this.#n});if(n===!1)throw e;if(n===!0)return this.#u()}if(mt(e)&&!this.#e.retry.retryOnTimeout)throw e;if(ht(e)){if(!this.#e.retry.statusCodes.includes(e.response.status))throw e;let n=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(n&&this.#e.retry.afterStatusCodes.includes(e.response.status)){let i=Number(n)*1e3;Number.isNaN(i)?i=Date.parse(n)-Date.now():i>=Date.parse("2024-01-01")&&(i-=Date.now());let o=this.#e.retry.maxRetryAfter??i;return i<o?i:o}if(e.response.status===413)throw e}return this.#u()}#h(e){return this.#e.parseJson&&(e.json=async()=>this.#e.parseJson(await e.text())),e}#l(e){e&&e.cancel().catch(()=>{})}#o(e){this.#l(e.body??void 0)}async#m(e){try{return await e()}catch(t){let n=Math.min(await this.#g(t),Y);if(this.#n<1)throw t;if(await ve(n,this.#i?{signal:this.#i}:{}),t instanceof D&&t.customRequest){let i=this.#e.signal?new globalThis.Request(t.customRequest,{signal:this.#e.signal}):new globalThis.Request(t.customRequest);this.#d(i)}for(let i of this.#e.hooks.beforeRetry){let o=await i({request:this.request,options:this.#c(),error:t,retryCount:this.#n});if(o instanceof globalThis.Request){this.#d(o);break}if(o instanceof globalThis.Response)return o;if(o===Q)return}return this.#m(e)}}async#b(){this.#r?.signal.aborted&&(this.#r=new globalThis.AbortController,this.#e.signal=this.#i?AbortSignal.any([this.#i,this.#r.signal]):this.#r.signal,this.request=new globalThis.Request(this.request,{signal:this.#e.signal}));for(let t of this.#e.hooks.beforeRequest){let n=await t(this.request,this.#c(),{retryCount:this.#n});if(n instanceof Response)return n;if(n instanceof globalThis.Request){this.#d(n);break}}let e=lt(this.request,this.#e);return this.#s=this.request,this.request=this.#s.clone(),this.#e.timeout===!1?this.#e.fetch(this.#s,e):je(this.#s,e,this.#r,this.#e)}#c(){if(!this.#a){let{hooks:e,...t}=this.#e;this.#a=Object.freeze(t)}return this.#a}#d(e){this.#a=void 0,this.request=this.#p(e)}#p(e,t){return!this.#e.onUploadProgress||!e.body?e:st(e,this.#e.onUploadProgress,t??this.#e.body??void 0)}};var Oe=r=>{let e=(t,n)=>B.create(t,M(r,n));for(let t of K)e[t]=(n,i)=>B.create(n,M(r,i,{method:t}));return e.create=t=>Oe(M(t)),e.extend=t=>(typeof t=="function"&&(t=t(r??{})),Oe(M(r,t))),e.stop=Q,e.retry=et,e},qn=Oe(),U=qn;var Nn="https://pro.lahat.group/api";function xe(){return process.env.WARDROBE_API_URL??Nn}function j(r){if(!r)throw new Error("Not authenticated. Run `wardrobe login` first.");return U.create({prefixUrl:xe(),headers:{Authorization:`Bearer ${r}`},retry:0})}u();import{readFileSync as In,writeFileSync as Dn,mkdirSync as Hn,rmSync as Vn,existsSync as Fn}from"fs";import{homedir as Ln}from"os";import{join as pt}from"path";function ft(){return process.env.WARDROBE_CONFIG_DIR??pt(Ln(),".config","wardrobe")}function $e(){return pt(ft(),"config.json")}function _(){let r=$e();if(!Fn(r))return null;try{return JSON.parse(In(r,"utf8"))}catch{return null}}function gt(r){Hn(ft(),{recursive:!0,mode:448}),Dn($e(),JSON.stringify(r,null,2),{mode:384})}function bt(){Vn($e(),{force:!0})}u();import{readFileSync as Mn}from"fs";function Bn(){return new Promise((r,e)=>{let t="";process.stdin.setEncoding("utf8"),process.stdin.on("data",n=>t+=n),process.stdin.on("end",()=>r(t)),process.stdin.on("error",e)})}async function C(r){let e=r==="-"?await Bn():Mn(r,"utf8");try{return JSON.parse(e)}catch(t){throw new Error(`Failed to parse JSON input: ${t.message}`)}}function h(r,e,t){e?process.stdout.write(JSON.stringify(r,null,2)+`
25
- `):t()}function Ce(){return j(_()?.accessToken??null)}async function yt(r={}){let e={};for(let n of["width","height","depth"])r[n]!==void 0&&(e[n]=r[n]);let t=await Ce().get("configs/init",{searchParams:e}).json();process.stdout.write(JSON.stringify(t.config,null,2)+`
26
- `)}async function wt(r,e={}){let t=await C(r),n=await Ce().post("configs/validate",{json:{config:t}}).json();h(n,!!e.json,()=>{if(n.valid)process.stdout.write(`valid
27
- `);else for(let i of n.errors)process.stdout.write(`${i.severity}: ${i.path} \u2014 ${i.message}
28
- `)}),n.valid||(process.exitCode=1)}async function _t(r,e={}){let t=Ce(),n=r==="-"||Un(r)?await C(r):(await t.get(`designs/${r}`).json()).config,i=await t.post("configs/describe",{json:{config:n,locale:e.locale??"en"}}).json();h(i.lines,!!e.json,()=>process.stdout.write(i.lines.join(`
21
+ `),this.outputHelp({error:!0}));let r=t||{},i=r.exitCode||1,o=r.code||"commander.error";this._exit(i,o,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 xr(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=s=>{let c=s.attributeName(),a=this.getOptionValue(c),l=this.options.find(f=>f.negate&&c===f.attributeName()),d=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:d||s},i=s=>{let c=r(s),a=c.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},o=`error: ${i(e)} cannot be used with ${i(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let i=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter(c=>c.long).map(c=>c.long);i=i.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);t=Fe(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",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(o=>{i.push(o.name()),o.alias()&&i.push(o.alias())}),t=Fe(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=>vr(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=$.basename(e,$.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(o=>o.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(o=>o.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
+ Expecting one of '${r.join("', '")}'`);let i=`${e}Help`;return this.on(i,o=>{let s;typeof t=="function"?s=t({error:o.error,command:o.command}):s=t,s&&o.write(`${s}
24
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(i=>t.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Le(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",i="9229",o;return(o=e.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?i=o[3]:r=o[3]):(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],r=o[3],i=o[4]),t&&i!=="0"?`${t}=${r}:${parseInt(i)+1}`:e})}Me.Command=fe});var ze=k(x=>{"use strict";u();var{Argument:Ue}=z(),{Command:ge}=Be(),{CommanderError:$r,InvalidArgumentError:We}=F(),{Help:Cr}=ae(),{Option:Je}=de();x.program=new ge;x.createCommand=n=>new ge(n);x.createOption=(n,e)=>new Je(n,e);x.createArgument=(n,e)=>new Ue(n,e);x.Command=ge;x.Option=Je;x.Argument=Ue;x.Help=Cr;x.CommanderError=$r;x.InvalidArgumentError=We;x.InvalidOptionArgumentError=We});u();u();var Ge=dr(ze(),1),{program:b,createCommand:Sn,createArgument:En,createOption:Pn,CommanderError:kn,InvalidArgumentError:Tn,InvalidOptionArgumentError:Rn,Command:qn,Argument:Nn,Option:In,Help:Dn}=Ge.default;u();import{existsSync as Br}from"fs";u();u();u();u();var O=class extends Error{response;request;options;constructor(e,t,r){let i=e.status||e.status===0?e.status:"",o=e.statusText??"",s=`${i} ${o}`.trim(),c=s?`status code ${s}`:"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 I=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 D=class extends Error{name="ForceRetryError";customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new I(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 be=(()=>{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})(),Ke=typeof globalThis.AbortController=="function",G=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Ye=typeof globalThis.ReadableStream=="function",Qe=typeof globalThis.FormData=="function",K=["get","post","put","patch","head","delete"],Ar=()=>{};Ar();var Xe={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},Y=2147483647,Ze=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,Q=Symbol("stop"),L=class{options;constructor(e){this.options=e}},et=n=>new L(n),tt={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},rt={next:!0},nt={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 Sr=n=>{if(!n)return 0;if(n instanceof FormData){let e=0;for(let[t,r]of n)e+=Ze,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},it=(n,e,t)=>{let r,i=0;return n.pipeThrough(new TransformStream({transform(o,s){if(s.enqueue(o),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=o},flush(){r&&(i+=r.byteLength,t?.({percent:1,totalBytes:Math.max(e,i),transferredBytes:i},r))}}))},ot=(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(it(n.body,t,e),{status:n.status,statusText:n.statusText,headers:n.headers})},st=(n,e,t)=>{if(!n.body)return n;let r=Sr(t??n.body);return new Request(n,{duplex:"half",body:it(n.body,r,e)})};u();u();var S=n=>n!==null&&typeof n=="object";var M=(...n)=>{for(let e of n)if((!S(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return _e({},...n)},ye=(n={},e={})=>{let t=new globalThis.Headers(n),r=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(let[o,s]of i.entries())r&&s==="undefined"||s===void 0?t.delete(o):t.set(o,s);return t};function X(n,e,t){return Object.hasOwn(e,t)&&e[t]===void 0?[]:_e(n[t]??[],e[t]??[])}var we=(n={},e={})=>({beforeRequest:X(n,e,"beforeRequest"),beforeRetry:X(n,e,"beforeRetry"),afterResponse:X(n,e,"afterResponse"),beforeError:X(n,e,"beforeError")}),Er=(n,e)=>{let t=new URLSearchParams;for(let r of[n,e])if(r!==void 0)if(r instanceof URLSearchParams)for(let[i,o]of r.entries())t.append(i,o);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(S(r))for(let[i,o]of Object.entries(r))o!==void 0&&t.append(i,String(o));else{let i=new URLSearchParams(r);for(let[o,s]of i.entries())t.append(o,s)}return t},_e=(...n)=>{let e={},t={},r={},i,o=[];for(let s of n)if(Array.isArray(s))Array.isArray(e)||(e=[]),e=[...e,...s];else if(S(s)){for(let[c,a]of Object.entries(s)){if(c==="signal"&&a instanceof globalThis.AbortSignal){o.push(a);continue}if(c==="context"){if(a!=null&&(!S(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:Er(i,a);continue}S(a)&&c in e&&(a=_e(e[c],a)),e={...e,[c]:a}}S(s.hooks)&&(r=we(r,s.hooks),e.hooks=r),S(s.headers)&&(t=ye(t,s.headers),e.headers=t)}return i!==void 0&&(e.searchParams=i),o.length>0&&(o.length===1?e.signal=o[0]:G?e.signal=AbortSignal.any(o):e.signal=o.at(-1)),e};u();var ct=n=>K.includes(n)?n.toUpperCase():n,Pr=["get","put","head","delete","options","trace"],kr=[408,413,429,500,502,503,504],Tr=[413,429,503],at={limit:2,methods:Pr,statusCodes:kr,afterStatusCodes:Tr,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:n=>.3*2**(n-1)*1e3,jitter:void 0,retryOnTimeout:!1},ut=(n={})=>{if(typeof n=="number")return{...at,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{...at,...e}};u();u();var T=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name="TimeoutError",this.request=e}};async function je(n,e,t,r){return new Promise((i,o)=>{let s=setTimeout(()=>{t&&t.abort(),o(new T(n))},r.timeout);r.fetch(n,e).then(i).catch(o).then(()=>{clearTimeout(s)})})}u();async function ve(n,{signal:e}){return new Promise((t,r)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(o),r(e.reason)}let o=setTimeout(()=>{e?.removeEventListener("abort",i),t()},n)})}u();var lt=(n,e)=>{let t={};for(let r in e)Object.hasOwn(e,r)&&!(r in nt)&&!(r in tt)&&(!(r in n)||r in rt)&&(t[r]=e[r]);return t},dt=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 ht(n){return n instanceof O||n?.name===O.name}function mt(n){return n instanceof T||n?.name===T.name}var B=class n{static create(e,t){let r=new n(e,t),i=async()=>{if(typeof r.#e.timeout=="number"&&r.#e.timeout>Y)throw new RangeError(`The \`timeout\` option cannot be greater than ${Y}`);await Promise.resolve();let s=await r.#b();for(let c of r.#e.hooks.afterResponse){let a=r.#h(s.clone()),l;try{l=await c(r.request,r.#c(),a,{retryCount:r.#r})}catch(f){throw r.#o(a),r.#o(s),f}if(l instanceof L)throw r.#o(a),r.#o(s),new D(l.options);let d=l instanceof globalThis.Response?l:s;a!==d&&r.#o(a),s!==d&&r.#o(s),s=d}if(r.#h(s),!s.ok&&(typeof r.#e.throwHttpErrors=="function"?r.#e.throwHttpErrors(s.status):r.#e.throwHttpErrors)){let c=new O(s,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(!Ye)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let c=s.clone();return r.#o(s),ot(c,r.#e.onDownloadProgress)}return s},o=r.#m(i).finally(()=>{let s=r.#s;r.#l(s?.body??void 0),r.#l(r.request.body??void 0)});for(let[s,c]of Object.entries(Xe))s==="bytes"&&typeof globalThis.Response?.prototype?.bytes!="function"||(o[s]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||c);let a=await o;if(s==="json"){if(a.status===204)return"";let l=await a.text();return l===""?"":t.parseJson?t.parseJson(l):JSON.parse(l)}return a[s]()});return o}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;#s;#i;#a;constructor(e,t={}){if(this.#t=e,this.#e={...t,headers:ye(this.#t.headers,t.headers),hooks:we({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:ct(t.method??this.#t.method??"GET"),prefixUrl:String(t.prefixUrl||""),retry:ut(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}Ke&&G&&(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),be&&(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&&(Qe&&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),dt(this.#e.searchParams)){let o="?"+(typeof this.#e.searchParams=="string"?this.#e.searchParams.replace(/^\?/,""):new URLSearchParams(n.#f(this.#e.searchParams)).toString()),s=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);this.request=new globalThis.Request(s,this.#e)}if(this.#e.onUploadProgress){if(typeof this.#e.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!be)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 I(e);if(t instanceof D)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(mt(e)&&!this.#e.retry.retryOnTimeout)throw e;if(ht(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 o=this.#e.retry.maxRetryAfter??i;return i<o?i:o}if(e.response.status===413)throw e}return this.#u()}#h(e){return this.#e.parseJson&&(e.json=async()=>this.#e.parseJson(await e.text())),e}#l(e){e&&e.cancel().catch(()=>{})}#o(e){this.#l(e.body??void 0)}async#m(e){try{return await e()}catch(t){let r=Math.min(await this.#g(t),Y);if(this.#r<1)throw t;if(await ve(r,this.#i?{signal:this.#i}:{}),t instanceof D&&t.customRequest){let i=this.#e.signal?new globalThis.Request(t.customRequest,{signal:this.#e.signal}):new globalThis.Request(t.customRequest);this.#d(i)}for(let i of this.#e.hooks.beforeRetry){let o=await i({request:this.request,options:this.#c(),error:t,retryCount:this.#r});if(o instanceof globalThis.Request){this.#d(o);break}if(o instanceof globalThis.Response)return o;if(o===Q)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.#d(r);break}}let e=lt(this.request,this.#e);return this.#s=this.request,this.request=this.#s.clone(),this.#e.timeout===!1?this.#e.fetch(this.#s,e):je(this.#s,e,this.#n,this.#e)}#c(){if(!this.#a){let{hooks:e,...t}=this.#e;this.#a=Object.freeze(t)}return this.#a}#d(e){this.#a=void 0,this.request=this.#p(e)}#p(e,t){return!this.#e.onUploadProgress||!e.body?e:st(e,this.#e.onUploadProgress,t??this.#e.body??void 0)}};var Oe=n=>{let e=(t,r)=>B.create(t,M(n,r));for(let t of K)e[t]=(r,i)=>B.create(r,M(n,i,{method:t}));return e.create=t=>Oe(M(t)),e.extend=t=>(typeof t=="function"&&(t=t(n??{})),Oe(M(n,t))),e.stop=Q,e.retry=et,e},Rr=Oe(),U=Rr;var qr="https://pro.lahat.group/api";function xe(){return process.env.WARDROBE_API_URL??qr}function j(n){if(!n)throw new Error("Not authenticated. Run `wardrobe login` first.");return U.create({prefixUrl:xe(),headers:{Authorization:`Bearer ${n}`},retry:0})}u();import{readFileSync as Nr,writeFileSync as Ir,mkdirSync as Dr,rmSync as Hr,existsSync as Vr}from"fs";import{homedir as Fr}from"os";import{join as pt}from"path";function ft(){return process.env.WARDROBE_CONFIG_DIR??pt(Fr(),".config","wardrobe")}function $e(){return pt(ft(),"config.json")}function _(){let n=$e();if(!Vr(n))return null;try{return JSON.parse(Nr(n,"utf8"))}catch{return null}}function gt(n){Dr(ft(),{recursive:!0,mode:448}),Ir($e(),JSON.stringify(n,null,2),{mode:384})}function bt(){Hr($e(),{force:!0})}u();import{readFileSync as Lr}from"fs";function Mr(){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 C(n){let e=n==="-"?await Mr():Lr(n,"utf8");try{return JSON.parse(e)}catch(t){throw new Error(`Failed to parse JSON input: ${t.message}`)}}function h(n,e,t){e?process.stdout.write(JSON.stringify(n,null,2)+`
25
+ `):t()}function Ce(){return j(_()?.accessToken??null)}async function yt(n={}){let e={};for(let r of["width","height","depth"])n[r]!==void 0&&(e[r]=n[r]);let t=await Ce().get("configs/init",{searchParams:e}).json();process.stdout.write(JSON.stringify(t.config,null,2)+`
26
+ `)}async function wt(n,e={}){let t=await C(n),r=await Ce().post("configs/validate",{json:{config:t}}).json();h(r,!!e.json,()=>{if(r.valid)process.stdout.write(`valid
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 _t(n,e={}){let t=Ce(),r=n==="-"||Br(n)?await C(n):(await t.get(`designs/${n}`).json()).config,i=await t.post("configs/describe",{json:{config:r,locale:e.locale??"en"}}).json();h(i.lines,!!e.json,()=>process.stdout.write(i.lines.join(`
29
29
  `)+`
30
- `))}u();import{spawn as Wn}from"child_process";import{setTimeout as Jn}from"timers/promises";function zn(r){let e=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open";try{Wn(e,[r],{stdio:"ignore",detached:!0}).unref()}catch{}}async function jt(r={}){let e=xe(),t=await U.post(`${e}/auth/device/code`,{retry:0}).json(),n=`${t.verification_uri}?code=${encodeURIComponent(t.user_code)}`;r.json||(process.stdout.write(`
30
+ `))}u();import{spawn as Ur}from"child_process";import{setTimeout as Wr}from"timers/promises";function Jr(n){let e=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open";try{Ur(e,[n],{stdio:"ignore",detached:!0}).unref()}catch{}}async function jt(n={}){let e=xe(),t=await U.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
- `),zn(n));let i=t.interval,o=Date.now()+t.expires_in*1e3;for(;Date.now()<o;){await Jn(i*1e3);try{let s=await U.post(`${e}/auth/device/token`,{json:{device_code:t.device_code},retry:0}).json();gt({..._(),accessToken:s.access_token,apiUrl:e}),h({status:"authorized",scopes:s.scopes},!!r.json,()=>process.stdout.write(`Authorized. Agent key saved.
36
- `));return}catch(s){let a=(s instanceof O?await s.response.json().catch(()=>({})):{}).error;if(a==="authorization_pending")continue;if(a==="slow_down"||s instanceof O&&s.response.status===429){i+=5;continue}throw new Error(`Login failed: ${a??s.message}`)}}throw new Error("Login timed out. Run `wardrobe login` again.")}u();async function vt(r={}){let t=await j(_()?.accessToken??null).get("auth/me").json();h(t,!!r.json,()=>{process.stdout.write(`${t.displayName} <${t.email}> \u2014 account role: ${t.role}
35
+ `),Jr(r));let i=t.interval,o=Date.now()+t.expires_in*1e3;for(;Date.now()<o;){await Wr(i*1e3);try{let s=await U.post(`${e}/auth/device/token`,{json:{device_code:t.device_code},retry:0}).json();gt({..._(),accessToken:s.access_token,apiUrl:e}),h({status:"authorized",scopes:s.scopes},!!n.json,()=>process.stdout.write(`Authorized. Agent key saved.
36
+ `));return}catch(s){let a=(s instanceof O?await s.response.json().catch(()=>({})):{}).error;if(a==="authorization_pending")continue;if(a==="slow_down"||s instanceof O&&s.response.status===429){i+=5;continue}throw new Error(`Login failed: ${a??s.message}`)}}throw new Error("Login timed out. Run `wardrobe login` again.")}u();async function vt(n={}){let t=await j(_()?.accessToken??null).get("auth/me").json();h(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
- `)})}function Ot(r={}){bt(),h({status:"logged_out"},!!r.json,()=>process.stdout.write(`Logged out.
39
- `))}u();u();u();function R(r){let e=r?.response?.status;return typeof e=="number"?e:void 0}async function xt(r){try{let e=r.response,t=await(e?.clone?e.clone().json():e?.json());return t&&typeof t=="object"?t:{}}catch{return{}}}import{writeFileSync as Ae}from"fs";function w(){return j(_()?.accessToken??null)}function Se(r){let e=(r??"").replace(/\D/g,"");return e.startsWith("00")&&(e=e.slice(2)),e.startsWith("972")&&(e=e.slice(3)),e.replace(/^0+/,"")}async function $t(r,e={}){let t=await w().get(`projects/${r}`).json();h(t,!!e.json,()=>{process.stdout.write(`${t.id} ${t.name}
38
+ `)})}function Ot(n={}){bt(),h({status:"logged_out"},!!n.json,()=>process.stdout.write(`Logged out.
39
+ `))}u();u();u();function R(n){let e=n?.response?.status;return typeof e=="number"?e:void 0}async function xt(n){try{let e=n.response,t=await(e?.clone?e.clone().json():e?.json());return t&&typeof t=="object"?t:{}}catch{return{}}}import{writeFileSync as Ae}from"fs";function w(){return j(_()?.accessToken??null)}function Se(n){let e=(n??"").replace(/\D/g,"");return e.startsWith("00")&&(e=e.slice(2)),e.startsWith("972")&&(e=e.slice(3)),e.replace(/^0+/,"")}async function $t(n,e={}){let t=await w().get(`projects/${n}`).json();h(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 Ct(r,e={}){let t=await w().get(`projects/${r}/members`).json();h(t.members,!!e.json,()=>{for(let n of t.members)process.stdout.write(`${n.userId} ${n.role} ${n.displayName??n.email??""}
43
- `)})}async function At(r={}){let e=await w().get("customers").json();h(e.customers,!!r.json,()=>{for(let t of e.customers)process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""}
44
- `)})}async function St(r,e={}){let t=await w().get(`customers/${r}`).json();h(t,!!e.json,()=>process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""} ${t.email??""}
45
- `))}async function Et(r,e={}){let n=(await w().get(`customers/${r}/projects`).json()).projects??[];h(n,!!e.json,()=>{for(let i of n)process.stdout.write(`${i.id} ${i.name}
46
- `)})}async function Pt(r={}){if(r.open&&!r.project)throw new Error("--open requires --project <id>.");let e,t=null;if(r.project)r.open?(t=(await w().get("orders/open",{searchParams:{projectId:r.project}}).json()).order,e=t?[t]:[]):e=(await w().get("orders",{searchParams:{projectId:r.project}}).json()).orders??[];else{let n={};r.limit!==void 0&&(n.limit=r.limit),r.since!==void 0&&(n.updatedSince=r.since),e=(await w().get("orders",{searchParams:n}).json()).orders??[]}h(r.open?{order:t}:e,!!r.json,()=>{if(e.length===0){process.stdout.write(`no orders
47
- `);return}for(let n of e){let i=n.totalPrice!==void 0?`${n.totalPrice} ${n.currency??"NIS"}`:"";process.stdout.write(`${n.id??""} #${n.orderNumber??"\u2014"} rev${n.revisionNumber??1} ${n.status??""} ${i}
48
- `)}})}async function kt(r,e={}){let t=await w().get(`orders/${r}`).json();h(t,!!e.json,()=>{let n=t.totalPrice!==void 0?`${t.totalPrice} ${t.currency??"NIS"}`:"";process.stdout.write(`${t.id??""} #${t.orderNumber??"\u2014"} rev${t.revisionNumber??1} ${t.status??""} ${n}
42
+ `)})}async function Ct(n,e={}){let t=await w().get(`projects/${n}/members`).json();h(t.members,!!e.json,()=>{for(let r of t.members)process.stdout.write(`${r.userId} ${r.role} ${r.displayName??r.email??""}
43
+ `)})}async function At(n={}){let e=await w().get("customers").json();h(e.customers,!!n.json,()=>{for(let t of e.customers)process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""}
44
+ `)})}async function St(n,e={}){let t=await w().get(`customers/${n}`).json();h(t,!!e.json,()=>process.stdout.write(`${t.id} ${t.customerName??""} ${t.phoneNumber??""} ${t.email??""}
45
+ `))}async function Et(n,e={}){let r=(await w().get(`customers/${n}/projects`).json()).projects??[];h(r,!!e.json,()=>{for(let i of r)process.stdout.write(`${i.id} ${i.name}
46
+ `)})}async function Pt(n={}){if(n.open&&!n.project)throw new Error("--open requires --project <id>.");let e,t=null;if(n.project)n.open?(t=(await w().get("orders/open",{searchParams:{projectId:n.project}}).json()).order,e=t?[t]:[]):e=(await w().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 w().get("orders",{searchParams:r}).json()).orders??[]}h(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 kt(n,e={}){let t=await w().get(`orders/${n}`).json();h(t,!!e.json,()=>{let r=t.totalPrice!==void 0?`${t.totalPrice} ${t.currency??"NIS"}`:"";process.stdout.write(`${t.id??""} #${t.orderNumber??"\u2014"} rev${t.revisionNumber??1} ${t.status??""} ${r}
49
49
  `),process.stdout.write(`project: ${t.projectId??""}
50
50
  `),process.stdout.write(`customer: ${t.customerName??""} ${t.phoneNumber??""}
51
51
  `);for(let c of t.items??[])process.stdout.write(`design: ${c.designId} ${c.designName}
52
52
  `);let i=t.customerDetails;if(i?.deliveryPreference){let c=i.deliveryPreference==="scheduled"&&i.requestedDeliveryDate?`scheduled ${i.requestedDeliveryDate}`:"immediate";process.stdout.write(`delivery: ${c}
53
53
  `)}let o=t.statusHistory??[],s=o[o.length-1];s&&process.stdout.write(`last transition: -> ${s.to} ${s.at}
54
- `)})}async function Tt(r,e={}){let t=e.out??`order-${r}.pdf`,n=Buffer.from(await w().get(`orders/${r}/pdf`).arrayBuffer());Ae(t,n),h({path:t,bytes:n.length},!!e.json,()=>process.stdout.write(`${t} ${n.length} bytes
55
- `))}async function Rt(r,e={}){let t=await w().get(`designs/${r}`).json();if(e.config){process.stdout.write(JSON.stringify(t.config,null,2)+`
56
- `);return}h(t,!!e.json,()=>{let{width:n,height:i,depth:o}=t.config,s=t.nisTotal==null?"?":t.nisTotal;process.stdout.write(`${t.id} ${t.name??""} ${n??"?"}x${i??"?"}x${o??"?"}cm ${s} NIS v${t.version??"?"}
57
- `)})}async function qt(r,e={}){let t=e.revision;t===void 0&&(t=(await w().get(`quotations/project/${r}`).json()).revisionNumber);let n=e.out??`quotation-${r}-rev${t}.pdf`,i=Buffer.from(await w().get(`quotations/project/${r}/revisions/${t}/pdf`).arrayBuffer());Ae(n,i),h({path:n,bytes:i.length},!!e.json,()=>process.stdout.write(`${n} ${i.length} bytes
58
- `))}async function Nt(r,e={}){let t=e.out??`design-${r}.jpg`,n=w(),i=async()=>{try{await n.post(`designs/${r}/thumbnail/render`,{timeout:12e4})}catch(s){throw R(s)===503?new Error("The image renderer is not available right now \u2014 try again in a minute."):s}};e.render&&await i();let o;try{o=Buffer.from(await n.get(`designs/${r}/thumbnail`).arrayBuffer())}catch(s){if(e.render||R(s)!==404)throw s;await i(),o=Buffer.from(await n.get(`designs/${r}/thumbnail`).arrayBuffer())}Ae(t,o),h({path:t,bytes:o.length},!!e.json,()=>process.stdout.write(`${t} ${o.length} bytes
59
- `))}async function It(r={}){let e={};r.limit!==void 0&&(e.limit=r.limit),r.since!==void 0&&(e.createdSince=r.since);let t=await w().get("users",{searchParams:e}).json();h(t.users,!!r.json,()=>{if(t.users.length===0){process.stdout.write(`no users
60
- `);return}for(let n of t.users)process.stdout.write(`${n.id??""} ${n.email??""} ${n.displayName??""} ${n.role??""} ${n.createdAt??""} ${n.phone??""}
61
- `)})}async function Dt(r,e={}){if(!r)throw new Error("phone is required.");let t=await w().get("users/by-phone",{searchParams:{phone:r}}).json();h(t.users,!!e.json,()=>{if(t.users.length===0){process.stdout.write(`no matching user
62
- `);return}for(let n of t.users)process.stdout.write(`${n.id??""} ${n.email??""} ${n.displayName??""} ${n.role??""} ${n.phone??""}
63
- `)})}async function Ht(r={}){let e=await w().get("help-texts").json();h(e,!!r.json,()=>process.stdout.write(`${Object.keys(e).length} help text(s)
64
- `))}function W(){return j(_()?.accessToken??null)}async function Vt(r,e={}){let t=await C(r),n=await W().post("price",{json:{config:t}}).json();h(n,!!e.json,()=>process.stdout.write(`${n.total} ${n.currency}
65
- `))}async function Ft(r={}){let e={};r.project?e.projectId=r.project:(r.limit!==void 0&&(e.limit=r.limit),r.since!==void 0&&(e.updatedSince=r.since));let t=await W().get("designs",{searchParams:e}).json();h(t.designs,!!r.json,()=>{if(t.designs.length===0){process.stdout.write(`no designs
66
- `);return}for(let n of t.designs){let i=r.project?"":` ${n.projectId??""}`;process.stdout.write(`${n.id} ${n.name}${i}
67
- `)}})}async function Lt(r={}){if(r.project){let n=await W().get(`quotations/project/${r.project}`).json();h(n,!!r.json,()=>{process.stdout.write(`quote #${n.quoteNumber}, ${n.revisionNumber} revision(s)
68
- `);for(let i of n.revisions)process.stdout.write(`rev${i.revisionNumber} ${i.totalPrice+i.serviceTotal} ${i.currency} ${i.at}
69
- `)});return}let e={};r.limit!==void 0&&(e.limit=r.limit),r.since!==void 0&&(e.updatedSince=r.since);let t=await W().get("quotations",{searchParams:e}).json();h(t.quotations,!!r.json,()=>{if(t.quotations.length===0){process.stdout.write(`no quotations
70
- `);return}for(let n of t.quotations){let i=n.totalPrice!==null?`${n.totalPrice+(n.serviceTotal??0)} ${n.currency??"NIS"}`:"";process.stdout.write(`${n.projectId} quote #${n.quoteNumber} rev${n.revisionNumber} ${i} ${n.generatedAt??""}
71
- `)}})}async function Mt(r={}){let t=(await W().get("projects").json()).projects;if(r.phone){let n=Se(r.phone);t=t.filter(i=>Se(i.customer?.phoneNumber)===n)}if(r.designer){let n=r.designer.toLowerCase();t=t.filter(i=>i.createdBy?.id===r.designer||(i.createdBy?.displayName??"").toLowerCase().includes(n))}h(t,!!r.json,()=>{for(let n of t){let i=n.createdBy?.displayName?` ${n.createdBy.displayName}`:"",o=n.customer?.customerName?` ${n.customer.customerName}`:"";process.stdout.write(`${n.id} ${n.name}${o}${i}
72
- `)}})}u();import{writeFileSync as Gn}from"fs";u();function Z(r){let e={};return r.assembly!==void 0&&(e.includeAssembly=r.assembly),r.transport!==void 0&&(e.includeTransport=r.transport),r.measurement!==void 0&&(e.includeMeasurement=r.measurement),Object.keys(e).length>0?e:void 0}function H(){return j(_()?.accessToken??null)}async function Bt(r,e={}){let t=await C(r),n=await H().post("price",{json:{config:t},searchParams:{preview:"bom"}}).json();h(n,!!e.json,()=>{process.stdout.write(`${n.total} ${n.currency}
73
- `);for(let i of n.bomPreview?.lines??[])process.stdout.write(` ${i.qty}\xD7 ${i.part} (${i.sku}) ${i.widthMm}\xD7${i.heightMm}mm
74
- `)})}async function Ee(r,e={}){if(!e.project)throw new Error("--project <id> is required.");let t=await C(r),n=Z(e),i=await H().post("designs",{json:{projectId:e.project,name:e.name??"CLI design",config:t,...n?{serviceOptions:n}:{}}}).json();h(i,!!e.json,()=>process.stdout.write(`${i.id}
75
- `))}async function Ut(r,e={}){let t=Z(e);if(!e.file&&!e.name&&!t)throw new Error("Nothing to update \u2014 pass --file <config>, --name <name> and/or a service flag (--assembly/--no-assembly, --transport/--no-transport, --measurement/--no-measurement).");let n=H(),i=await n.get(`designs/${r}`).json(),o={};e.file&&(o.config=await C(e.file)),e.name&&(o.name=e.name),t&&(o.serviceOptions=t),i.version!==void 0&&(o.version=i.version);let s=await n.put(`designs/${r}`,{json:o}).json();h(s,!!e.json,()=>process.stdout.write(`${s.id} v${s.version??"?"}
76
- `))}async function Wt(r,e={}){let t=await H().post("quotations/pdf",{json:{projectId:r},timeout:12e4}),n=Number(t.headers.get("x-quote-number")),i=Number(t.headers.get("x-quote-revision")),o=t.headers.get("x-quote-minted")==="true",s=e.out??`quotation-${r}-rev${i}.pdf`,c=Buffer.from(await t.arrayBuffer());Gn(s,c),h({path:s,bytes:c.length,quoteNumber:n,revision:i,minted:o},!!e.json,()=>process.stdout.write(`${s} quote ${n} rev ${i} ${o?"new revision minted":"price unchanged \u2014 existing revision re-served"}
77
- `))}async function Jt(r,e={}){if(!e.yes)throw new Error(`Refusing to archive design ${r} without --yes. Archiving cannot be undone from the app.`);try{await H().delete(`designs/${r}`)}catch(t){throw R(t)===423?new Error(`Design ${r} is in a project that already has an order, so it is frozen \u2014 a person must revise the order first.`):t}h({id:r,archived:!0},!!e.json,()=>process.stdout.write(`archived ${r}
78
- `))}async function zt(r,e={}){let t=H(),{project:n,name:i}=e;if(!n||!i){let c=await t.get(`designs/${r}`).json();n??=c.projectId,i??=`${c.name} \u05E2\u05D5\u05EA\u05E7`}let o=await t.post(`designs/${r}/duplicate`,{json:{projectId:n,name:i}}).json(),s=Z(e);s&&await t.put(`designs/${o.id}`,{json:{serviceOptions:s}}).json(),h(o,!!e.json,()=>process.stdout.write(`${o.id}
79
- `))}u();function Kn(){return j(_()?.accessToken??null)}var E=(...r)=>process.stdout.write(`${r.filter(e=>e!==void 0).join(" ")}
80
- `),Gt={materials:{path:"configs/materials",render:r=>{for(let e of r.materials)E(e.id,e.surface,e.label)}},handles:{path:"handles",render:r=>{for(let e of r.rows)E(e.sku,e.name,e.isDefault?"(default)":void 0)}},"aluminum-fronts":{path:"aluminum-fronts",render:r=>{let e=new Map(r.colors.map(n=>[n.frontId,n.label])),t=new Map(r.shades.map(n=>[n.frontId,n.label]));E("profile","colorId","shadeId","names");for(let n of r.combos)E(n.profile,n.colorId,n.shadeId,`${e.get(n.colorId)??""} / ${t.get(n.shadeId)??""}`)}},"material-limits":{path:"material-limits",render:r=>{for(let e of r.rows)E(e.key,`${e.maxPartLengthMm}\xD7${e.maxPartWidthMm} mm`)}},"service-pricing":{path:"service-pricing",render:r=>{E("currency",r.currency),E("vatRate",r.vatRate);for(let[e,t]of Object.entries(r.rates))E(e,t)}}},Pe=Object.keys(Gt);async function Kt(r,e={}){let t=Gt[r];if(!t)throw new Error(`Unknown catalog "${r}". Choose one of: ${Pe.join(", ")}.`);let n=await Kn().get(t.path).json();h(n,!!e.json,()=>t.render(n))}u();import{writeFileSync as Yt}from"fs";var Qt=1e3;async function Xt(r,e,t={}){if(e.length>Qt)throw new Error(`The prompt is ${e.length} characters; the limit is ${Qt}. Shorten it.`);let n=j(_()?.accessToken??null),i;try{i=await n.post("design-prompt",{json:{projectId:r,prompt:e,locale:t.locale??"he"},timeout:12e4}).json()}catch(s){let c=R(s),a=c?await xt(s):{};throw c===423?new Error("This project already has an order, so it is frozen \u2014 a draft cannot be saved into it."):c===429&&a.error==="design_prompt_quota"?new Error(`The daily AI limit for this key is reached (${a.limit}). Try again tomorrow.`):c===424?new Error("The model could not turn that into a design \u2014 rephrase it or retry."):c===503?new Error("Design-by-prompt is not available right now."):s}if(t.json){t.out&&Yt(t.out,JSON.stringify(i.config,null,2)),h(i,!0,()=>{});return}let o=t.out??`prompt-${new Date().toISOString().replace(/[:.]/g,"-")}.json`;Yt(o,JSON.stringify(i.config,null,2)),h(i,!1,()=>{process.stdout.write(`draft config: ${o}
54
+ `)})}async function Tt(n,e={}){let t=e.out??`order-${n}.pdf`,r=Buffer.from(await w().get(`orders/${n}/pdf`).arrayBuffer());Ae(t,r),h({path:t,bytes:r.length},!!e.json,()=>process.stdout.write(`${t} ${r.length} bytes
55
+ `))}async function Rt(n,e={}){let t=await w().get(`designs/${n}`).json();if(e.config){process.stdout.write(JSON.stringify(t.config,null,2)+`
56
+ `);return}h(t,!!e.json,()=>{let{width:r,height:i,depth:o}=t.config,s=t.nisTotal==null?"?":t.nisTotal;process.stdout.write(`${t.id} ${t.name??""} ${r??"?"}x${i??"?"}x${o??"?"}cm ${s} NIS v${t.version??"?"}
57
+ `)})}async function qt(n,e={}){let t=e.revision;t===void 0&&(t=(await w().get(`quotations/project/${n}`).json()).revisionNumber);let r=e.out??`quotation-${n}-rev${t}.pdf`,i=Buffer.from(await w().get(`quotations/project/${n}/revisions/${t}/pdf`).arrayBuffer());Ae(r,i),h({path:r,bytes:i.length},!!e.json,()=>process.stdout.write(`${r} ${i.length} bytes
58
+ `))}async function Nt(n,e={}){let t=e.out??`design-${n}.jpg`,r=w(),i=async()=>{try{await r.post(`designs/${n}/thumbnail/render`,{timeout:12e4})}catch(s){throw R(s)===503?new Error("The image renderer is not available right now \u2014 try again in a minute."):s}};e.render&&await i();let o;try{o=Buffer.from(await r.get(`designs/${n}/thumbnail`).arrayBuffer())}catch(s){if(e.render||R(s)!==404)throw s;await i(),o=Buffer.from(await r.get(`designs/${n}/thumbnail`).arrayBuffer())}Ae(t,o),h({path:t,bytes:o.length},!!e.json,()=>process.stdout.write(`${t} ${o.length} bytes
59
+ `))}async function It(n={}){let e={};n.limit!==void 0&&(e.limit=n.limit),n.since!==void 0&&(e.createdSince=n.since),n.before!==void 0&&(e.createdBefore=n.before),n.role!==void 0&&(e.role=n.role);let t=await w().get("users",{searchParams:e}).json();h(t.users,!!n.json,()=>{if(t.users.length===0){process.stdout.write(`no users
60
+ `);return}for(let r of t.users)process.stdout.write(`${r.id??""} ${r.email??""} ${r.displayName??""} ${r.role??""} ${r.createdAt??""} ${r.phone??""} ${r.approvedAt??""}
61
+ `)})}async function Dt(n,e={}){if(!n)throw new Error("phone is required.");let t=await w().get("users/by-phone",{searchParams:{phone:n}}).json();h(t.users,!!e.json,()=>{if(t.users.length===0){process.stdout.write(`no matching user
62
+ `);return}for(let r of t.users)process.stdout.write(`${r.id??""} ${r.email??""} ${r.displayName??""} ${r.role??""} ${r.phone??""}
63
+ `)})}async function Ht(n={}){let e=await w().get("help-texts").json();h(e,!!n.json,()=>process.stdout.write(`${Object.keys(e).length} help text(s)
64
+ `))}function W(){return j(_()?.accessToken??null)}async function Vt(n,e={}){let t=await C(n),r=await W().post("price",{json:{config:t}}).json();h(r,!!e.json,()=>process.stdout.write(`${r.total} ${r.currency}
65
+ `))}async function Ft(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 W().get("designs",{searchParams:e}).json();h(t.designs,!!n.json,()=>{if(t.designs.length===0){process.stdout.write(`no designs
66
+ `);return}for(let r of t.designs){let i=n.project?"":` ${r.projectId??""}`;process.stdout.write(`${r.id} ${r.name}${i}
67
+ `)}})}async function Lt(n={}){if(n.project){let r=await W().get(`quotations/project/${n.project}`).json();h(r,!!n.json,()=>{process.stdout.write(`quote #${r.quoteNumber}, ${r.revisionNumber} revision(s)
68
+ `);for(let i of r.revisions)process.stdout.write(`rev${i.revisionNumber} ${i.totalPrice+i.serviceTotal} ${i.currency} ${i.at}
69
+ `)});return}let e={};n.limit!==void 0&&(e.limit=n.limit),n.since!==void 0&&(e.updatedSince=n.since);let t=await W().get("quotations",{searchParams:e}).json();h(t.quotations,!!n.json,()=>{if(t.quotations.length===0){process.stdout.write(`no quotations
70
+ `);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??""}
71
+ `)}})}async function Mt(n={}){let t=(await W().get("projects").json()).projects;if(n.phone){let r=Se(n.phone);t=t.filter(i=>Se(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))}h(t,!!n.json,()=>{for(let r of t){let i=r.createdBy?.displayName?` ${r.createdBy.displayName}`:"",o=r.customer?.customerName?` ${r.customer.customerName}`:"";process.stdout.write(`${r.id} ${r.name}${o}${i}
72
+ `)}})}u();import{writeFileSync as zr}from"fs";u();function Z(n){let e={};return n.assembly!==void 0&&(e.includeAssembly=n.assembly),n.transport!==void 0&&(e.includeTransport=n.transport),n.measurement!==void 0&&(e.includeMeasurement=n.measurement),Object.keys(e).length>0?e:void 0}function H(){return j(_()?.accessToken??null)}async function Bt(n,e={}){let t=await C(n),r=await H().post("price",{json:{config:t},searchParams:{preview:"bom"}}).json();h(r,!!e.json,()=>{process.stdout.write(`${r.total} ${r.currency}
73
+ `);for(let i of r.bomPreview?.lines??[])process.stdout.write(` ${i.qty}\xD7 ${i.part} (${i.sku}) ${i.widthMm}\xD7${i.heightMm}mm
74
+ `)})}async function Ee(n,e={}){if(!e.project)throw new Error("--project <id> is required.");let t=await C(n),r=Z(e),i=await H().post("designs",{json:{projectId:e.project,name:e.name??"CLI design",config:t,...r?{serviceOptions:r}:{}}}).json();h(i,!!e.json,()=>process.stdout.write(`${i.id}
75
+ `))}async function Ut(n,e={}){let t=Z(e);if(!e.file&&!e.name&&!t)throw new Error("Nothing to update \u2014 pass --file <config>, --name <name> and/or a service flag (--assembly/--no-assembly, --transport/--no-transport, --measurement/--no-measurement).");let r=H(),i=await r.get(`designs/${n}`).json(),o={};e.file&&(o.config=await C(e.file)),e.name&&(o.name=e.name),t&&(o.serviceOptions=t),i.version!==void 0&&(o.version=i.version);let s=await r.put(`designs/${n}`,{json:o}).json();h(s,!!e.json,()=>process.stdout.write(`${s.id} v${s.version??"?"}
76
+ `))}async function Wt(n,e={}){let t=await H().post("quotations/pdf",{json:{projectId:n},timeout:12e4}),r=Number(t.headers.get("x-quote-number")),i=Number(t.headers.get("x-quote-revision")),o=t.headers.get("x-quote-minted")==="true",s=e.out??`quotation-${n}-rev${i}.pdf`,c=Buffer.from(await t.arrayBuffer());zr(s,c),h({path:s,bytes:c.length,quoteNumber:r,revision:i,minted:o},!!e.json,()=>process.stdout.write(`${s} quote ${r} rev ${i} ${o?"new revision minted":"price unchanged \u2014 existing revision re-served"}
77
+ `))}async function Jt(n,e={}){if(!e.yes)throw new Error(`Refusing to archive design ${n} without --yes. Archiving cannot be undone from the app.`);try{await H().delete(`designs/${n}`)}catch(t){throw R(t)===423?new Error(`Design ${n} is in a project that already has an order, so it is frozen \u2014 a person must revise the order first.`):t}h({id:n,archived:!0},!!e.json,()=>process.stdout.write(`archived ${n}
78
+ `))}async function zt(n,e={}){let t=H(),{project:r,name:i}=e;if(!r||!i){let c=await t.get(`designs/${n}`).json();r??=c.projectId,i??=`${c.name} \u05E2\u05D5\u05EA\u05E7`}let o=await t.post(`designs/${n}/duplicate`,{json:{projectId:r,name:i}}).json(),s=Z(e);s&&await t.put(`designs/${o.id}`,{json:{serviceOptions:s}}).json(),h(o,!!e.json,()=>process.stdout.write(`${o.id}
79
+ `))}u();function Gr(){return j(_()?.accessToken??null)}var E=(...n)=>process.stdout.write(`${n.filter(e=>e!==void 0).join(" ")}
80
+ `),Gt={materials:{path:"configs/materials",render:n=>{for(let e of n.materials)E(e.id,e.surface,e.label)}},handles:{path:"handles",render:n=>{for(let e of n.rows)E(e.sku,e.name,e.isDefault?"(default)":void 0)}},"aluminum-fronts":{path:"aluminum-fronts",render:n=>{let e=new Map(n.colors.map(r=>[r.frontId,r.label])),t=new Map(n.shades.map(r=>[r.frontId,r.label]));E("profile","colorId","shadeId","names");for(let r of n.combos)E(r.profile,r.colorId,r.shadeId,`${e.get(r.colorId)??""} / ${t.get(r.shadeId)??""}`)}},"material-limits":{path:"material-limits",render:n=>{for(let e of n.rows)E(e.key,`${e.maxPartLengthMm}\xD7${e.maxPartWidthMm} mm`)}},"service-pricing":{path:"service-pricing",render:n=>{E("currency",n.currency),E("vatRate",n.vatRate);for(let[e,t]of Object.entries(n.rates))E(e,t)}}},Pe=Object.keys(Gt);async function Kt(n,e={}){let t=Gt[n];if(!t)throw new Error(`Unknown catalog "${n}". Choose one of: ${Pe.join(", ")}.`);let r=await Gr().get(t.path).json();h(r,!!e.json,()=>t.render(r))}u();import{writeFileSync as Yt}from"fs";var Qt=1e3;async function Xt(n,e,t={}){if(e.length>Qt)throw new Error(`The prompt is ${e.length} characters; the limit is ${Qt}. Shorten it.`);let r=j(_()?.accessToken??null),i;try{i=await r.post("design-prompt",{json:{projectId:n,prompt:e,locale:t.locale??"he"},timeout:12e4}).json()}catch(s){let c=R(s),a=c?await xt(s):{};throw c===423?new Error("This project already has an order, so it is frozen \u2014 a draft cannot be saved into it."):c===429&&a.error==="design_prompt_quota"?new Error(`The daily AI limit for this key is reached (${a.limit}). Try again tomorrow.`):c===424?new Error("The model could not turn that into a design \u2014 rephrase it or retry."):c===503?new Error("Design-by-prompt is not available right now."):s}if(t.json){t.out&&Yt(t.out,JSON.stringify(i.config,null,2)),h(i,!0,()=>{});return}let o=t.out??`prompt-${new Date().toISOString().replace(/[:.]/g,"-")}.json`;Yt(o,JSON.stringify(i.config,null,2)),h(i,!1,()=>{process.stdout.write(`draft config: ${o}
81
81
  `);for(let s of i.assumptions)process.stdout.write(`assumed: ${s}
82
82
  `);for(let s of i.adjustments)process.stdout.write(`adjusted: ${typeof s=="string"?s:JSON.stringify(s)}
83
83
  `);for(let s of i.warnings)process.stdout.write(`warning: ${s}
84
- `)})}u();import{fileURLToPath as Yn}from"url";import{dirname as Zt,join as q}from"path";import{homedir as Qn}from"os";import{existsSync as Xn,mkdirSync as Zn,readdirSync as er,copyFileSync as tr,statSync as nr}from"fs";function rr(){let r=Zt(Yn(import.meta.url));for(let e=0;e<6;e++){let t=q(r,"skill");if(Xn(q(t,"SKILL.md")))return t;r=Zt(r)}throw new Error("Bundled SKILL.md not found next to the CLI package")}function ir(r){let e=r?q(process.cwd(),".claude"):q(Qn(),".claude");return q(e,"skills","wardrobe-configurator")}function or(r={}){let e=r.sourceDir??rr(),t=r.targetDir??ir(!!r.project);Zn(t,{recursive:!0});let n=[];for(let i of er(e)){let o=q(e,i);nr(o).isFile()&&(tr(o,q(t,i)),n.push(i))}return{target:t,files:n}}function en(r){let e=or({project:r.project});h(e,!!r.json,()=>{process.stdout.write(`Installed ${e.files.length} file(s) to ${e.target}
84
+ `)})}u();import{fileURLToPath as Kr}from"url";import{dirname as Zt,join as q}from"path";import{homedir as Yr}from"os";import{existsSync as Qr,mkdirSync as Xr,readdirSync as Zr,copyFileSync as en,statSync as tn}from"fs";function rn(){let n=Zt(Kr(import.meta.url));for(let e=0;e<6;e++){let t=q(n,"skill");if(Qr(q(t,"SKILL.md")))return t;n=Zt(n)}throw new Error("Bundled SKILL.md not found next to the CLI package")}function nn(n){let e=n?q(process.cwd(),".claude"):q(Yr(),".claude");return q(e,"skills","wardrobe-configurator")}function on(n={}){let e=n.sourceDir??rn(),t=n.targetDir??nn(!!n.project);Xr(t,{recursive:!0});let r=[];for(let i of Zr(e)){let o=q(e,i);tn(o).isFile()&&(en(o,q(t,i)),r.push(i))}return{target:t,files:r}}function er(n){let e=on({project:n.project});h(e,!!n.json,()=>{process.stdout.write(`Installed ${e.files.length} file(s) to ${e.target}
85
85
  `),process.stdout.write(`Restart Claude Code, then invoke /wardrobe-configurator
86
- `)})}u();async function sr(r){if(!(r instanceof O))return null;try{return await r.response.json()}catch{return null}}async function tn(r,e){let t=await sr(r);if(e)return JSON.stringify(t?{error:t.error??"request_failed",...t}:{error:r.message},null,2);if(!t)return`Error: ${r.message}`;let n=[t.error??"Request failed"];return t.detail&&n.push(t.detail),t.fix_hint&&n.push(`fix: ${t.fix_hint}`),t.issues&&n.push(JSON.stringify(t.issues)),`Error: ${n.join(" \u2014 ")}`}u();var nn="2.1.0";function ee(r){return r.option("--assembly","buy assembly for this design").option("--no-assembly","do not buy assembly").option("--transport","buy transport for this design").option("--no-transport","do not buy transport").option("--measurement","buy a measurement visit for this design").option("--no-measurement","do not buy a measurement visit")}b.name("wardrobe").description("Wardrobe configurator CLI").version(nn);b.command("login").description("Authenticate via the OAuth device flow").option("--json","machine-readable output").action(r=>jt(r));b.command("whoami").description("Show the authenticated user").option("--json","machine-readable output").action(r=>vt(r));b.command("logout").description("Remove the stored agent key").option("--json","machine-readable output").action(r=>Ot(r));b.command("init").description("Emit a fresh, valid WardrobeConfig JSON (via the API)").option("--width <cm>","total width in cm",r=>Number(r)).option("--height <cm>","height in cm",r=>Number(r)).option("--depth <cm>","depth in cm",r=>Number(r)).action(r=>yt(r));b.command("validate <file>").description("Validate a config against the live rules (file or - for stdin)").option("--json","machine-readable output").action((r,e)=>wt(r,e));b.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((r,e)=>_t(r,e));b.command("catalog <kind>").description(`List what a config may name, from the live catalogs: ${Pe.join(" | ")}. Read this before choosing a colour, handle or aluminium front \u2014 never invent ids`).option("--json","machine-readable output").action((r,e)=>Kt(r,e));b.command("prompt <projectId> <text>").description("Describe a wardrobe in words (he/en) and get a draft config file + the assumptions made. Saves nothing; counts against a daily per-key limit; takes 10-30 s").option("--locale <locale>","he or en","he").option("--out <file>","where to write the draft config (default ./prompt-<timestamp>.json)").option("--json","print the whole response (config, assumptions, adjustments, warnings) instead of writing a file").action((r,e,t)=>Xt(r,e,t));b.command("price <file>").description("Price a config via the API (file or - for stdin)").option("--json","machine-readable output").action((r,e)=>Vt(r,e));b.command("plan <file>").description("Dry-run: price a config + BOM preview (mutates nothing)").option("--json","machine-readable output").action((r,e)=>Bt(r,e));ee(b.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((r,e)=>Ee(r,e));var N=b.command("designs").description("Manage saved designs");N.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)",r=>Number(r)).option("--since <iso>","cross-project mode only: only designs updated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(r=>Ft(r));ee(N.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((r,e)=>Ee(r,e));N.command("get <id>").description("Show one saved design with its stored config \u2014 read this before `designs update`, which replaces the whole config").option("--config","print only the bare config: exactly what `designs update --file` accepts").option("--json","machine-readable output: id, projectId, name, version, nisTotal, serviceTotal, config").action((r,e)=>Rt(r,e));ee(N.command("update <id>").description("Revise a saved design (config, name and/or services). Services you do not mention keep their current value").option("--file <file>","new config JSON (file or - for stdin)").option("--name <name>","new design name").option("--json","machine-readable output")).action((r,e)=>Ut(r,e));ee(N.command("duplicate <id>").description("Copy a design (into the same project unless --project is given). Services are not copied \u2014 pass the flags to set them").option("--project <id>","target project (default: the source design's project)").option("--name <name>",'name of the copy (default: "<name> \u05E2\u05D5\u05EA\u05E7")').option("--json","machine-readable output")).action((r,e)=>zt(r,e));N.command("delete <id>").description("Archive a design (soft delete; there is no restore in the app). Requires --yes").option("--yes","confirm the archive").option("--json","machine-readable output").action((r,e)=>Jt(r,e));N.command("thumbnail <id>").description("Download a design's thumbnail image; renders it on the server first if none exists yet").option("--out <file>","destination path").option("--render","re-render on the server even if a thumbnail exists").option("--json","machine-readable output").action((r,e)=>Nt(r,e));var ke=b.command("projects").description("Manage projects");ke.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(r=>Mt(r));ke.command("get <id>").description("Show one project").option("--json","machine-readable output").action((r,e)=>$t(r,e));ke.command("members <id>").description("List a project's owner and members").option("--json","machine-readable output").action((r,e)=>Ct(r,e));var Te=b.command("customers").description("Read customers");Te.command("list").description("List your customers").option("--json","machine-readable output").action(r=>At(r));Te.command("get <id>").description("Show one customer").option("--json","machine-readable output").action((r,e)=>St(r,e));Te.command("projects <id>").description("List a customer's projects").option("--json","machine-readable output").action((r,e)=>Et(r,e));var Re=b.command("orders").description("Read orders");Re.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)",r=>Number(r)).option("--since <iso>","cross-project mode only: only orders updated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(r=>Pt(r));Re.command("get <id>").description("Show one order, with its designs embedded").option("--json","machine-readable output").action((r,e)=>kt(r,e));Re.command("pdf <id>").description("Download an order PDF").option("--out <file>","destination path").option("--json","machine-readable output").action((r,e)=>Tt(r,e));var qe=b.command("quotations").description("Read quotations (quotations:read), or mint a revision (quotations:write)");qe.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)",r=>Number(r)).option("--since <iso>","cross-project mode only: only quotations generated at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(r=>Lt(r));qe.command("pdf <projectId>").description("Download a quotation PDF (default: the project's current revision) \u2014 never mints a new one").option("--revision <n>","a specific historical revision instead of the current one",r=>Number(r)).option("--out <file>","destination path").option("--json","machine-readable output").action((r,e)=>qt(r,e));qe.command("mint <projectId>").description("File the project's quotation at its current price and download the PDF \u2014 unlike `pdf`, this can mint a new revision (requires quotations:write)").option("--out <file>","destination path").option("--json","machine-readable output: path, bytes, quoteNumber, revision, minted").action((r,e)=>Wt(r,e));var rn=b.command("users").description("Read registered accounts (requires staff:read)");rn.command("list").description("List registered users, newest-registered first").option("--limit <n>","max rows (default 20, max 100)",r=>Number(r)).option("--since <iso>","only users registered at/after this ISO 8601 timestamp").option("--json","machine-readable output").action(r=>It(r));rn.command("by-phone <phone>").description("Find the account(s) whose own phone is this number (+972\u2026 and 05\u2026 forms match)").option("--json","machine-readable output").action((r,e)=>Dt(r,e));b.command("help-texts").description("Read the help-text table").option("--json","machine-readable output").action(r=>Ht(r));var ar=b.command("skill").description("Manage the bundled Claude Skill");ar.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(r=>en(r));b.parseAsync().catch(async r=>{let e=await tn(r,process.argv.includes("--json"));process.stderr.write(`${e}
86
+ `)})}u();async function sn(n){if(!(n instanceof O))return null;try{return await n.response.json()}catch{return null}}async function tr(n,e){let t=await sn(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 rr="2.1.1";function ee(n){return n.option("--assembly","buy assembly for this design").option("--no-assembly","do not buy assembly").option("--transport","buy transport for this design").option("--no-transport","do not buy transport").option("--measurement","buy a measurement visit for this design").option("--no-measurement","do not buy a measurement visit")}b.name("wardrobe").description("Wardrobe configurator CLI").version(rr);b.command("login").description("Authenticate via the OAuth device flow").option("--json","machine-readable output").action(n=>jt(n));b.command("whoami").description("Show the authenticated user").option("--json","machine-readable output").action(n=>vt(n));b.command("logout").description("Remove the stored agent key").option("--json","machine-readable output").action(n=>Ot(n));b.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=>yt(n));b.command("validate <file>").description("Validate a config against the live rules (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>wt(n,e));b.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)=>_t(n,e));b.command("catalog <kind>").description(`List what a config may name, from the live catalogs: ${Pe.join(" | ")}. Read this before choosing a colour, handle or aluminium front \u2014 never invent ids`).option("--json","machine-readable output").action((n,e)=>Kt(n,e));b.command("prompt <projectId> <text>").description("Describe a wardrobe in words (he/en) and get a draft config file + the assumptions made. Saves nothing; counts against a daily per-key limit; takes 10-30 s").option("--locale <locale>","he or en","he").option("--out <file>","where to write the draft config (default ./prompt-<timestamp>.json)").option("--json","print the whole response (config, assumptions, adjustments, warnings) instead of writing a file").action((n,e,t)=>Xt(n,e,t));b.command("price <file>").description("Price a config via the API (file or - for stdin)").option("--json","machine-readable output").action((n,e)=>Vt(n,e));b.command("plan <file>").description("Dry-run: price a config + BOM preview (mutates nothing)").option("--json","machine-readable output").action((n,e)=>Bt(n,e));ee(b.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)=>Ee(n,e));var N=b.command("designs").description("Manage saved designs");N.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=>Ft(n));ee(N.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)=>Ee(n,e));N.command("get <id>").description("Show one saved design with its stored config \u2014 read this before `designs update`, which replaces the whole config").option("--config","print only the bare config: exactly what `designs update --file` accepts").option("--json","machine-readable output: id, projectId, name, version, nisTotal, serviceTotal, config").action((n,e)=>Rt(n,e));ee(N.command("update <id>").description("Revise a saved design (config, name and/or services). Services you do not mention keep their current value").option("--file <file>","new config JSON (file or - for stdin)").option("--name <name>","new design name").option("--json","machine-readable output")).action((n,e)=>Ut(n,e));ee(N.command("duplicate <id>").description("Copy a design (into the same project unless --project is given). Services are not copied \u2014 pass the flags to set them").option("--project <id>","target project (default: the source design's project)").option("--name <name>",'name of the copy (default: "<name> \u05E2\u05D5\u05EA\u05E7")').option("--json","machine-readable output")).action((n,e)=>zt(n,e));N.command("delete <id>").description("Archive a design (soft delete; there is no restore in the app). Requires --yes").option("--yes","confirm the archive").option("--json","machine-readable output").action((n,e)=>Jt(n,e));N.command("thumbnail <id>").description("Download a design's thumbnail image; renders it on the server first if none exists yet").option("--out <file>","destination path").option("--render","re-render on the server even if a thumbnail exists").option("--json","machine-readable output").action((n,e)=>Nt(n,e));var ke=b.command("projects").description("Manage projects");ke.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=>Mt(n));ke.command("get <id>").description("Show one project").option("--json","machine-readable output").action((n,e)=>$t(n,e));ke.command("members <id>").description("List a project's owner and members").option("--json","machine-readable output").action((n,e)=>Ct(n,e));var Te=b.command("customers").description("Read customers");Te.command("list").description("List your customers").option("--json","machine-readable output").action(n=>At(n));Te.command("get <id>").description("Show one customer").option("--json","machine-readable output").action((n,e)=>St(n,e));Te.command("projects <id>").description("List a customer's projects").option("--json","machine-readable output").action((n,e)=>Et(n,e));var Re=b.command("orders").description("Read orders");Re.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=>Pt(n));Re.command("get <id>").description("Show one order, with its designs embedded").option("--json","machine-readable output").action((n,e)=>kt(n,e));Re.command("pdf <id>").description("Download an order PDF").option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>Tt(n,e));var qe=b.command("quotations").description("Read quotations (quotations:read), or mint a revision (quotations:write)");qe.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=>Lt(n));qe.command("pdf <projectId>").description("Download a quotation PDF (default: the project's current revision) \u2014 never mints a new one").option("--revision <n>","a specific historical revision instead of the current one",n=>Number(n)).option("--out <file>","destination path").option("--json","machine-readable output").action((n,e)=>qt(n,e));qe.command("mint <projectId>").description("File the project's quotation at its current price and download the PDF \u2014 unlike `pdf`, this can mint a new revision (requires quotations:write)").option("--out <file>","destination path").option("--json","machine-readable output: path, bytes, quoteNumber, revision, minted").action((n,e)=>Wt(n,e));var nr=b.command("users").description("Read registered accounts (requires staff:read)");nr.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("--before <iso>","only users registered before this ISO 8601 timestamp (page back with the last row's createdAt)").option("--role <role>","only users with this role: admin, support, designer, client").option("--json","machine-readable output").action(n=>It(n));nr.command("by-phone <phone>").description("Find the account(s) whose own phone is this number (+972\u2026 and 05\u2026 forms match)").option("--json","machine-readable output").action((n,e)=>Dt(n,e));b.command("help-texts").description("Read the help-text table").option("--json","machine-readable output").action(n=>Ht(n));var an=b.command("skill").description("Manage the bundled Claude Skill");an.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=>er(n));b.parseAsync().catch(async n=>{let e=await tr(n,process.argv.includes("--json"));process.stderr.write(`${e}
87
87
  `),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lahat-group/cli",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "CLI + Claude Skill to build, validate, price, and save wardrobe designs.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",