progy 0.4.2 → 0.4.3

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/cli.js +11 -11
  2. package/package.json +2 -1
package/dist/cli.js CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var tq=Object.create;var{getPrototypeOf:sq,defineProperty:Eq,getOwnPropertyNames:eq}=Object;var aq=Object.prototype.hasOwnProperty;var s=(q,Q,Y)=>{Y=q!=null?tq(sq(q)):{};let X=Q||!q||!q.__esModule?Eq(Y,"default",{value:q,enumerable:!0}):Y;for(let J of eq(q))if(!aq.call(X,J))Eq(X,J,{get:()=>q[J],enumerable:!0});return X};var D=(q,Q)=>()=>(Q||q((Q={exports:{}}).exports,Q),Q.exports);var R=import.meta.require;var k=D((qQ)=>{class e extends Error{constructor(q,Q,Y){super(Y);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=Q,this.exitCode=q,this.nestedError=void 0}}class Vq extends e{constructor(q){super(1,"commander.invalidArgument",q);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}qQ.CommanderError=e;qQ.InvalidArgumentError=Vq});var m=D((WQ)=>{var{InvalidArgumentError:XQ}=k();class Iq{constructor(q,Q){switch(this.description=Q||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,q[0]){case"<":this.required=!0,this._name=q.slice(1,-1);break;case"[":this.required=!1,this._name=q.slice(1,-1);break;default:this.required=!0,this._name=q;break}if(this._name.length>3&&this._name.slice(-3)==="...")this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_concatValue(q,Q){if(Q===this.defaultValue||!Array.isArray(Q))return[q];return Q.concat(q)}default(q,Q){return this.defaultValue=q,this.defaultValueDescription=Q,this}argParser(q){return this.parseArg=q,this}choices(q){return this.argChoices=q.slice(),this.parseArg=(Q,Y)=>{if(!this.argChoices.includes(Q))throw new XQ(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(Q,Y);return Q},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function JQ(q){let Q=q.name()+(q.variadic===!0?"...":"");return q.required?"<"+Q+">":"["+Q+"]"}WQ.Argument=Iq;WQ.humanReadableArgName=JQ});var a=D((KQ)=>{var{humanReadableArgName:HQ}=m();class jq{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(q){let Q=q.commands.filter((X)=>!X._hidden),Y=q._getHelpCommand();if(Y&&!Y._hidden)Q.push(Y);if(this.sortSubcommands)Q.sort((X,J)=>{return X.name().localeCompare(J.name())});return Q}compareOptions(q,Q){let Y=(X)=>{return X.short?X.short.replace(/^-/,""):X.long.replace(/^--/,"")};return Y(q).localeCompare(Y(Q))}visibleOptions(q){let Q=q.options.filter((X)=>!X.hidden),Y=q._getHelpOption();if(Y&&!Y.hidden){let X=Y.short&&q._findOption(Y.short),J=Y.long&&q._findOption(Y.long);if(!X&&!J)Q.push(Y);else if(Y.long&&!J)Q.push(q.createOption(Y.long,Y.description));else if(Y.short&&!X)Q.push(q.createOption(Y.short,Y.description))}if(this.sortOptions)Q.sort(this.compareOptions);return Q}visibleGlobalOptions(q){if(!this.showGlobalOptions)return[];let Q=[];for(let Y=q.parent;Y;Y=Y.parent){let X=Y.options.filter((J)=>!J.hidden);Q.push(...X)}if(this.sortOptions)Q.sort(this.compareOptions);return Q}visibleArguments(q){if(q._argsDescription)q.registeredArguments.forEach((Q)=>{Q.description=Q.description||q._argsDescription[Q.name()]||""});if(q.registeredArguments.find((Q)=>Q.description))return q.registeredArguments;return[]}subcommandTerm(q){let Q=q.registeredArguments.map((Y)=>HQ(Y)).join(" ");return q._name+(q._aliases[0]?"|"+q._aliases[0]:"")+(q.options.length?" [options]":"")+(Q?" "+Q:"")}optionTerm(q){return q.flags}argumentTerm(q){return q.name()}longestSubcommandTermLength(q,Q){return Q.visibleCommands(q).reduce((Y,X)=>{return Math.max(Y,Q.subcommandTerm(X).length)},0)}longestOptionTermLength(q,Q){return Q.visibleOptions(q).reduce((Y,X)=>{return Math.max(Y,Q.optionTerm(X).length)},0)}longestGlobalOptionTermLength(q,Q){return Q.visibleGlobalOptions(q).reduce((Y,X)=>{return Math.max(Y,Q.optionTerm(X).length)},0)}longestArgumentTermLength(q,Q){return Q.visibleArguments(q).reduce((Y,X)=>{return Math.max(Y,Q.argumentTerm(X).length)},0)}commandUsage(q){let Q=q._name;if(q._aliases[0])Q=Q+"|"+q._aliases[0];let Y="";for(let X=q.parent;X;X=X.parent)Y=X.name()+" "+Y;return Y+Q+" "+q.usage()}commandDescription(q){return q.description()}subcommandDescription(q){return q.summary()||q.description()}optionDescription(q){let Q=[];if(q.argChoices)Q.push(`choices: ${q.argChoices.map((Y)=>JSON.stringify(Y)).join(", ")}`);if(q.defaultValue!==void 0){if(q.required||q.optional||q.isBoolean()&&typeof q.defaultValue==="boolean")Q.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`)}if(q.presetArg!==void 0&&q.optional)Q.push(`preset: ${JSON.stringify(q.presetArg)}`);if(q.envVar!==void 0)Q.push(`env: ${q.envVar}`);if(Q.length>0)return`${q.description} (${Q.join(", ")})`;return q.description}argumentDescription(q){let Q=[];if(q.argChoices)Q.push(`choices: ${q.argChoices.map((Y)=>JSON.stringify(Y)).join(", ")}`);if(q.defaultValue!==void 0)Q.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`);if(Q.length>0){let Y=`(${Q.join(", ")})`;if(q.description)return`${q.description} ${Y}`;return Y}return q.description}formatHelp(q,Q){let Y=Q.padWidth(q,Q),X=Q.helpWidth||80,J=2,W=2;function G(U,P){if(P){let N=`${U.padEnd(Y+2)}${P}`;return Q.wrap(N,X-2,Y+2)}return U}function z(U){return U.join(`
3
+ var tq=Object.create;var{getPrototypeOf:sq,defineProperty:Vq,getOwnPropertyNames:eq}=Object;var aq=Object.prototype.hasOwnProperty;var e=(q,Q,Y)=>{Y=q!=null?tq(sq(q)):{};let X=Q||!q||!q.__esModule?Vq(Y,"default",{value:q,enumerable:!0}):Y;for(let J of eq(q))if(!aq.call(X,J))Vq(X,J,{get:()=>q[J],enumerable:!0});return X};var D=(q,Q)=>()=>(Q||q((Q={exports:{}}).exports,Q),Q.exports);var R=import.meta.require;var k=D((qQ)=>{class a extends Error{constructor(q,Q,Y){super(Y);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=Q,this.exitCode=q,this.nestedError=void 0}}class Iq extends a{constructor(q){super(1,"commander.invalidArgument",q);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}qQ.CommanderError=a;qQ.InvalidArgumentError=Iq});var m=D((WQ)=>{var{InvalidArgumentError:XQ}=k();class jq{constructor(q,Q){switch(this.description=Q||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,q[0]){case"<":this.required=!0,this._name=q.slice(1,-1);break;case"[":this.required=!1,this._name=q.slice(1,-1);break;default:this.required=!0,this._name=q;break}if(this._name.length>3&&this._name.slice(-3)==="...")this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_concatValue(q,Q){if(Q===this.defaultValue||!Array.isArray(Q))return[q];return Q.concat(q)}default(q,Q){return this.defaultValue=q,this.defaultValueDescription=Q,this}argParser(q){return this.parseArg=q,this}choices(q){return this.argChoices=q.slice(),this.parseArg=(Q,Y)=>{if(!this.argChoices.includes(Q))throw new XQ(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(Q,Y);return Q},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function JQ(q){let Q=q.name()+(q.variadic===!0?"...":"");return q.required?"<"+Q+">":"["+Q+"]"}WQ.Argument=jq;WQ.humanReadableArgName=JQ});var qq=D((KQ)=>{var{humanReadableArgName:HQ}=m();class Nq{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(q){let Q=q.commands.filter((X)=>!X._hidden),Y=q._getHelpCommand();if(Y&&!Y._hidden)Q.push(Y);if(this.sortSubcommands)Q.sort((X,J)=>{return X.name().localeCompare(J.name())});return Q}compareOptions(q,Q){let Y=(X)=>{return X.short?X.short.replace(/^-/,""):X.long.replace(/^--/,"")};return Y(q).localeCompare(Y(Q))}visibleOptions(q){let Q=q.options.filter((X)=>!X.hidden),Y=q._getHelpOption();if(Y&&!Y.hidden){let X=Y.short&&q._findOption(Y.short),J=Y.long&&q._findOption(Y.long);if(!X&&!J)Q.push(Y);else if(Y.long&&!J)Q.push(q.createOption(Y.long,Y.description));else if(Y.short&&!X)Q.push(q.createOption(Y.short,Y.description))}if(this.sortOptions)Q.sort(this.compareOptions);return Q}visibleGlobalOptions(q){if(!this.showGlobalOptions)return[];let Q=[];for(let Y=q.parent;Y;Y=Y.parent){let X=Y.options.filter((J)=>!J.hidden);Q.push(...X)}if(this.sortOptions)Q.sort(this.compareOptions);return Q}visibleArguments(q){if(q._argsDescription)q.registeredArguments.forEach((Q)=>{Q.description=Q.description||q._argsDescription[Q.name()]||""});if(q.registeredArguments.find((Q)=>Q.description))return q.registeredArguments;return[]}subcommandTerm(q){let Q=q.registeredArguments.map((Y)=>HQ(Y)).join(" ");return q._name+(q._aliases[0]?"|"+q._aliases[0]:"")+(q.options.length?" [options]":"")+(Q?" "+Q:"")}optionTerm(q){return q.flags}argumentTerm(q){return q.name()}longestSubcommandTermLength(q,Q){return Q.visibleCommands(q).reduce((Y,X)=>{return Math.max(Y,Q.subcommandTerm(X).length)},0)}longestOptionTermLength(q,Q){return Q.visibleOptions(q).reduce((Y,X)=>{return Math.max(Y,Q.optionTerm(X).length)},0)}longestGlobalOptionTermLength(q,Q){return Q.visibleGlobalOptions(q).reduce((Y,X)=>{return Math.max(Y,Q.optionTerm(X).length)},0)}longestArgumentTermLength(q,Q){return Q.visibleArguments(q).reduce((Y,X)=>{return Math.max(Y,Q.argumentTerm(X).length)},0)}commandUsage(q){let Q=q._name;if(q._aliases[0])Q=Q+"|"+q._aliases[0];let Y="";for(let X=q.parent;X;X=X.parent)Y=X.name()+" "+Y;return Y+Q+" "+q.usage()}commandDescription(q){return q.description()}subcommandDescription(q){return q.summary()||q.description()}optionDescription(q){let Q=[];if(q.argChoices)Q.push(`choices: ${q.argChoices.map((Y)=>JSON.stringify(Y)).join(", ")}`);if(q.defaultValue!==void 0){if(q.required||q.optional||q.isBoolean()&&typeof q.defaultValue==="boolean")Q.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`)}if(q.presetArg!==void 0&&q.optional)Q.push(`preset: ${JSON.stringify(q.presetArg)}`);if(q.envVar!==void 0)Q.push(`env: ${q.envVar}`);if(Q.length>0)return`${q.description} (${Q.join(", ")})`;return q.description}argumentDescription(q){let Q=[];if(q.argChoices)Q.push(`choices: ${q.argChoices.map((Y)=>JSON.stringify(Y)).join(", ")}`);if(q.defaultValue!==void 0)Q.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`);if(Q.length>0){let Y=`(${Q.join(", ")})`;if(q.description)return`${q.description} ${Y}`;return Y}return q.description}formatHelp(q,Q){let Y=Q.padWidth(q,Q),X=Q.helpWidth||80,J=2,W=2;function G(U,P){if(P){let N=`${U.padEnd(Y+2)}${P}`;return Q.wrap(N,X-2,Y+2)}return U}function z(U){return U.join(`
4
4
  `).replace(/^/gm," ".repeat(2))}let H=[`Usage: ${Q.commandUsage(q)}`,""],K=Q.commandDescription(q);if(K.length>0)H=H.concat([Q.wrap(K,X,0),""]);let B=Q.visibleArguments(q).map((U)=>{return G(Q.argumentTerm(U),Q.argumentDescription(U))});if(B.length>0)H=H.concat(["Arguments:",z(B),""]);let L=Q.visibleOptions(q).map((U)=>{return G(Q.optionTerm(U),Q.optionDescription(U))});if(L.length>0)H=H.concat(["Options:",z(L),""]);if(this.showGlobalOptions){let U=Q.visibleGlobalOptions(q).map((P)=>{return G(Q.optionTerm(P),Q.optionDescription(P))});if(U.length>0)H=H.concat(["Global Options:",z(U),""])}let $=Q.visibleCommands(q).map((U)=>{return G(Q.subcommandTerm(U),Q.subcommandDescription(U))});if($.length>0)H=H.concat(["Commands:",z($),""]);return H.join(`
5
5
  `)}padWidth(q,Q){return Math.max(Q.longestOptionTermLength(q,Q),Q.longestGlobalOptionTermLength(q,Q),Q.longestSubcommandTermLength(q,Q),Q.longestArgumentTermLength(q,Q))}wrap(q,Q,Y,X=40){let W=new RegExp(`[\\n][${" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF"}]+`);if(q.match(W))return q;let G=Q-Y;if(G<X)return q;let z=q.slice(0,Y),H=q.slice(Y).replace(`\r
6
6
  `,`
7
7
  `),K=" ".repeat(Y),L=`\\s${"\u200B"}`,$=new RegExp(`
8
8
  |.{1,${G-1}}([${L}]|$)|[^${L}]+?([${L}]|$)`,"g"),U=H.match($)||[];return z+U.map((P,N)=>{if(P===`
9
9
  `)return"";return(N>0?K:"")+P.trimEnd()}).join(`
10
- `)}}KQ.Help=jq});var qq=D((PQ)=>{var{InvalidArgumentError:LQ}=k();class Nq{constructor(q,Q){this.flags=q,this.description=Q||"",this.required=q.includes("<"),this.optional=q.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(q),this.mandatory=!1;let Y=$Q(q);if(this.short=Y.shortFlag,this.long=Y.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(q,Q){return this.defaultValue=q,this.defaultValueDescription=Q,this}preset(q){return this.presetArg=q,this}conflicts(q){return this.conflictsWith=this.conflictsWith.concat(q),this}implies(q){let Q=q;if(typeof q==="string")Q={[q]:!0};return this.implied=Object.assign(this.implied||{},Q),this}env(q){return this.envVar=q,this}argParser(q){return this.parseArg=q,this}makeOptionMandatory(q=!0){return this.mandatory=!!q,this}hideHelp(q=!0){return this.hidden=!!q,this}_concatValue(q,Q){if(Q===this.defaultValue||!Array.isArray(Q))return[q];return Q.concat(q)}choices(q){return this.argChoices=q.slice(),this.parseArg=(Q,Y)=>{if(!this.argChoices.includes(Q))throw new LQ(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(Q,Y);return Q},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){return UQ(this.name().replace(/^no-/,""))}is(q){return this.short===q||this.long===q}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class wq{constructor(q){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,q.forEach((Q)=>{if(Q.negate)this.negativeOptions.set(Q.attributeName(),Q);else this.positiveOptions.set(Q.attributeName(),Q)}),this.negativeOptions.forEach((Q,Y)=>{if(this.positiveOptions.has(Y))this.dualOptions.add(Y)})}valueFromOption(q,Q){let Y=Q.attributeName();if(!this.dualOptions.has(Y))return!0;let X=this.negativeOptions.get(Y).presetArg,J=X!==void 0?X:!1;return Q.negate===(J===q)}}function UQ(q){return q.split("-").reduce((Q,Y)=>{return Q+Y[0].toUpperCase()+Y.slice(1)})}function $Q(q){let Q,Y,X=q.split(/[ |,]+/);if(X.length>1&&!/^[[<]/.test(X[1]))Q=X.shift();if(Y=X.shift(),!Q&&/^-[^-]$/.test(Y))Q=Y,Y=void 0;return{shortFlag:Q,longFlag:Y}}PQ.Option=Nq;PQ.DualOptions=wq});var Aq=D((NQ)=>{function IQ(q,Q){if(Math.abs(q.length-Q.length)>3)return Math.max(q.length,Q.length);let Y=[];for(let X=0;X<=q.length;X++)Y[X]=[X];for(let X=0;X<=Q.length;X++)Y[0][X]=X;for(let X=1;X<=Q.length;X++)for(let J=1;J<=q.length;J++){let W=1;if(q[J-1]===Q[X-1])W=0;else W=1;if(Y[J][X]=Math.min(Y[J-1][X]+1,Y[J][X-1]+1,Y[J-1][X-1]+W),J>1&&X>1&&q[J-1]===Q[X-2]&&q[J-2]===Q[X-1])Y[J][X]=Math.min(Y[J][X],Y[J-2][X-2]+1)}return Y[q.length][Q.length]}function jQ(q,Q){if(!Q||Q.length===0)return"";Q=Array.from(new Set(Q));let Y=q.startsWith("--");if(Y)q=q.slice(2),Q=Q.map((G)=>G.slice(2));let X=[],J=3,W=0.4;if(Q.forEach((G)=>{if(G.length<=1)return;let z=IQ(q,G),H=Math.max(q.length,G.length);if((H-z)/H>W){if(z<J)J=z,X=[G];else if(z===J)X.push(G)}}),X.sort((G,z)=>G.localeCompare(z)),Y)X=X.map((G)=>`--${G}`);if(X.length>1)return`
10
+ `)}}KQ.Help=Nq});var Qq=D((PQ)=>{var{InvalidArgumentError:LQ}=k();class wq{constructor(q,Q){this.flags=q,this.description=Q||"",this.required=q.includes("<"),this.optional=q.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(q),this.mandatory=!1;let Y=$Q(q);if(this.short=Y.shortFlag,this.long=Y.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(q,Q){return this.defaultValue=q,this.defaultValueDescription=Q,this}preset(q){return this.presetArg=q,this}conflicts(q){return this.conflictsWith=this.conflictsWith.concat(q),this}implies(q){let Q=q;if(typeof q==="string")Q={[q]:!0};return this.implied=Object.assign(this.implied||{},Q),this}env(q){return this.envVar=q,this}argParser(q){return this.parseArg=q,this}makeOptionMandatory(q=!0){return this.mandatory=!!q,this}hideHelp(q=!0){return this.hidden=!!q,this}_concatValue(q,Q){if(Q===this.defaultValue||!Array.isArray(Q))return[q];return Q.concat(q)}choices(q){return this.argChoices=q.slice(),this.parseArg=(Q,Y)=>{if(!this.argChoices.includes(Q))throw new LQ(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(Q,Y);return Q},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){return UQ(this.name().replace(/^no-/,""))}is(q){return this.short===q||this.long===q}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class Aq{constructor(q){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,q.forEach((Q)=>{if(Q.negate)this.negativeOptions.set(Q.attributeName(),Q);else this.positiveOptions.set(Q.attributeName(),Q)}),this.negativeOptions.forEach((Q,Y)=>{if(this.positiveOptions.has(Y))this.dualOptions.add(Y)})}valueFromOption(q,Q){let Y=Q.attributeName();if(!this.dualOptions.has(Y))return!0;let X=this.negativeOptions.get(Y).presetArg,J=X!==void 0?X:!1;return Q.negate===(J===q)}}function UQ(q){return q.split("-").reduce((Q,Y)=>{return Q+Y[0].toUpperCase()+Y.slice(1)})}function $Q(q){let Q,Y,X=q.split(/[ |,]+/);if(X.length>1&&!/^[[<]/.test(X[1]))Q=X.shift();if(Y=X.shift(),!Q&&/^-[^-]$/.test(Y))Q=Y,Y=void 0;return{shortFlag:Q,longFlag:Y}}PQ.Option=wq;PQ.DualOptions=Aq});var Dq=D((NQ)=>{function IQ(q,Q){if(Math.abs(q.length-Q.length)>3)return Math.max(q.length,Q.length);let Y=[];for(let X=0;X<=q.length;X++)Y[X]=[X];for(let X=0;X<=Q.length;X++)Y[0][X]=X;for(let X=1;X<=Q.length;X++)for(let J=1;J<=q.length;J++){let W=1;if(q[J-1]===Q[X-1])W=0;else W=1;if(Y[J][X]=Math.min(Y[J-1][X]+1,Y[J][X-1]+1,Y[J-1][X-1]+W),J>1&&X>1&&q[J-1]===Q[X-2]&&q[J-2]===Q[X-1])Y[J][X]=Math.min(Y[J][X],Y[J-2][X-2]+1)}return Y[q.length][Q.length]}function jQ(q,Q){if(!Q||Q.length===0)return"";Q=Array.from(new Set(Q));let Y=q.startsWith("--");if(Y)q=q.slice(2),Q=Q.map((G)=>G.slice(2));let X=[],J=3,W=0.4;if(Q.forEach((G)=>{if(G.length<=1)return;let z=IQ(q,G),H=Math.max(q.length,G.length);if((H-z)/H>W){if(z<J)J=z,X=[G];else if(z===J)X.push(G)}}),X.sort((G,z)=>G.localeCompare(z)),Y)X=X.map((G)=>`--${G}`);if(X.length>1)return`
11
11
  (Did you mean one of ${X.join(", ")}?)`;if(X.length===1)return`
12
- (Did you mean ${X[0]}?)`;return""}NQ.suggestSimilar=jQ});var Sq=D((MQ)=>{var AQ=R("events").EventEmitter,Qq=R("child_process"),w=R("path"),Yq=R("fs"),E=R("process"),{Argument:DQ,humanReadableArgName:RQ}=m(),{CommanderError:Xq}=k(),{Help:FQ}=a(),{Option:Dq,DualOptions:SQ}=qq(),{suggestSimilar:Rq}=Aq();class Jq extends AQ{constructor(q){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=q||"",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:(Q)=>E.stdout.write(Q),writeErr:(Q)=>E.stderr.write(Q),getOutHelpWidth:()=>E.stdout.isTTY?E.stdout.columns:void 0,getErrHelpWidth:()=>E.stderr.isTTY?E.stderr.columns:void 0,outputError:(Q,Y)=>Y(Q)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(q){return this._outputConfiguration=q._outputConfiguration,this._helpOption=q._helpOption,this._helpCommand=q._helpCommand,this._helpConfiguration=q._helpConfiguration,this._exitCallback=q._exitCallback,this._storeOptionsAsProperties=q._storeOptionsAsProperties,this._combineFlagAndOptionalValue=q._combineFlagAndOptionalValue,this._allowExcessArguments=q._allowExcessArguments,this._enablePositionalOptions=q._enablePositionalOptions,this._showHelpAfterError=q._showHelpAfterError,this._showSuggestionAfterError=q._showSuggestionAfterError,this}_getCommandAndAncestors(){let q=[];for(let Q=this;Q;Q=Q.parent)q.push(Q);return q}command(q,Q,Y){let X=Q,J=Y;if(typeof X==="object"&&X!==null)J=X,X=null;J=J||{};let[,W,G]=q.match(/([^ ]+) *(.*)/),z=this.createCommand(W);if(X)z.description(X),z._executableHandler=!0;if(J.isDefault)this._defaultCommandName=z._name;if(z._hidden=!!(J.noHelp||J.hidden),z._executableFile=J.executableFile||null,G)z.arguments(G);if(this._registerCommand(z),z.parent=this,z.copyInheritedSettings(this),X)return this;return z}createCommand(q){return new Jq(q)}createHelp(){return Object.assign(new FQ,this.configureHelp())}configureHelp(q){if(q===void 0)return this._helpConfiguration;return this._helpConfiguration=q,this}configureOutput(q){if(q===void 0)return this._outputConfiguration;return Object.assign(this._outputConfiguration,q),this}showHelpAfterError(q=!0){if(typeof q!=="string")q=!!q;return this._showHelpAfterError=q,this}showSuggestionAfterError(q=!0){return this._showSuggestionAfterError=!!q,this}addCommand(q,Q){if(!q._name)throw Error(`Command passed to .addCommand() must have a name
12
+ (Did you mean ${X[0]}?)`;return""}NQ.suggestSimilar=jQ});var Mq=D((MQ)=>{var AQ=R("events").EventEmitter,Yq=R("child_process"),w=R("path"),Xq=R("fs"),E=R("process"),{Argument:DQ,humanReadableArgName:RQ}=m(),{CommanderError:Jq}=k(),{Help:FQ}=qq(),{Option:Rq,DualOptions:SQ}=Qq(),{suggestSimilar:Fq}=Dq();class Wq extends AQ{constructor(q){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=q||"",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:(Q)=>E.stdout.write(Q),writeErr:(Q)=>E.stderr.write(Q),getOutHelpWidth:()=>E.stdout.isTTY?E.stdout.columns:void 0,getErrHelpWidth:()=>E.stderr.isTTY?E.stderr.columns:void 0,outputError:(Q,Y)=>Y(Q)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(q){return this._outputConfiguration=q._outputConfiguration,this._helpOption=q._helpOption,this._helpCommand=q._helpCommand,this._helpConfiguration=q._helpConfiguration,this._exitCallback=q._exitCallback,this._storeOptionsAsProperties=q._storeOptionsAsProperties,this._combineFlagAndOptionalValue=q._combineFlagAndOptionalValue,this._allowExcessArguments=q._allowExcessArguments,this._enablePositionalOptions=q._enablePositionalOptions,this._showHelpAfterError=q._showHelpAfterError,this._showSuggestionAfterError=q._showSuggestionAfterError,this}_getCommandAndAncestors(){let q=[];for(let Q=this;Q;Q=Q.parent)q.push(Q);return q}command(q,Q,Y){let X=Q,J=Y;if(typeof X==="object"&&X!==null)J=X,X=null;J=J||{};let[,W,G]=q.match(/([^ ]+) *(.*)/),z=this.createCommand(W);if(X)z.description(X),z._executableHandler=!0;if(J.isDefault)this._defaultCommandName=z._name;if(z._hidden=!!(J.noHelp||J.hidden),z._executableFile=J.executableFile||null,G)z.arguments(G);if(this._registerCommand(z),z.parent=this,z.copyInheritedSettings(this),X)return this;return z}createCommand(q){return new Wq(q)}createHelp(){return Object.assign(new FQ,this.configureHelp())}configureHelp(q){if(q===void 0)return this._helpConfiguration;return this._helpConfiguration=q,this}configureOutput(q){if(q===void 0)return this._outputConfiguration;return Object.assign(this._outputConfiguration,q),this}showHelpAfterError(q=!0){if(typeof q!=="string")q=!!q;return this._showHelpAfterError=q,this}showSuggestionAfterError(q=!0){return this._showSuggestionAfterError=!!q,this}addCommand(q,Q){if(!q._name)throw Error(`Command passed to .addCommand() must have a name
13
13
  - specify the name in Command constructor or using .name()`);if(Q=Q||{},Q.isDefault)this._defaultCommandName=q._name;if(Q.noHelp||Q.hidden)q._hidden=!0;return this._registerCommand(q),q.parent=this,q._checkForBrokenPassThrough(),this}createArgument(q,Q){return new DQ(q,Q)}argument(q,Q,Y,X){let J=this.createArgument(q,Q);if(typeof Y==="function")J.default(X).argParser(Y);else J.default(Y);return this.addArgument(J),this}arguments(q){return q.trim().split(/ +/).forEach((Q)=>{this.argument(Q)}),this}addArgument(q){let Q=this.registeredArguments.slice(-1)[0];if(Q&&Q.variadic)throw Error(`only the last argument can be variadic '${Q.name()}'`);if(q.required&&q.defaultValue!==void 0&&q.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${q.name()}'`);return this.registeredArguments.push(q),this}helpCommand(q,Q){if(typeof q==="boolean")return this._addImplicitHelpCommand=q,this;q=q??"help [command]";let[,Y,X]=q.match(/([^ ]+) *(.*)/),J=Q??"display help for command",W=this.createCommand(Y);if(W.helpOption(!1),X)W.arguments(X);if(J)W.description(J);return this._addImplicitHelpCommand=!0,this._helpCommand=W,this}addHelpCommand(q,Q){if(typeof q!=="object")return this.helpCommand(q,Q),this;return this._addImplicitHelpCommand=!0,this._helpCommand=q,this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(q,Q){let Y=["preSubcommand","preAction","postAction"];if(!Y.includes(q))throw Error(`Unexpected value for event passed to hook : '${q}'.
14
- Expecting one of '${Y.join("', '")}'`);if(this._lifeCycleHooks[q])this._lifeCycleHooks[q].push(Q);else this._lifeCycleHooks[q]=[Q];return this}exitOverride(q){if(q)this._exitCallback=q;else this._exitCallback=(Q)=>{if(Q.code!=="commander.executeSubCommandAsync")throw Q};return this}_exit(q,Q,Y){if(this._exitCallback)this._exitCallback(new Xq(q,Q,Y));E.exit(q)}action(q){let Q=(Y)=>{let X=this.registeredArguments.length,J=Y.slice(0,X);if(this._storeOptionsAsProperties)J[X]=this;else J[X]=this.opts();return J.push(this),q.apply(this,J)};return this._actionHandler=Q,this}createOption(q,Q){return new Dq(q,Q)}_callParseArg(q,Q,Y,X){try{return q.parseArg(Q,Y)}catch(J){if(J.code==="commander.invalidArgument"){let W=`${X} ${J.message}`;this.error(W,{exitCode:J.exitCode,code:J.code})}throw J}}_registerOption(q){let Q=q.short&&this._findOption(q.short)||q.long&&this._findOption(q.long);if(Q){let Y=q.long&&this._findOption(q.long)?q.long:q.short;throw Error(`Cannot add option '${q.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${Y}'
15
- - already used by option '${Q.flags}'`)}this.options.push(q)}_registerCommand(q){let Q=(X)=>{return[X.name()].concat(X.aliases())},Y=Q(q).find((X)=>this._findCommand(X));if(Y){let X=Q(this._findCommand(Y)).join("|"),J=Q(q).join("|");throw Error(`cannot add command '${J}' as already have command '${X}'`)}this.commands.push(q)}addOption(q){this._registerOption(q);let Q=q.name(),Y=q.attributeName();if(q.negate){let J=q.long.replace(/^--no-/,"--");if(!this._findOption(J))this.setOptionValueWithSource(Y,q.defaultValue===void 0?!0:q.defaultValue,"default")}else if(q.defaultValue!==void 0)this.setOptionValueWithSource(Y,q.defaultValue,"default");let X=(J,W,G)=>{if(J==null&&q.presetArg!==void 0)J=q.presetArg;let z=this.getOptionValue(Y);if(J!==null&&q.parseArg)J=this._callParseArg(q,J,z,W);else if(J!==null&&q.variadic)J=q._concatValue(J,z);if(J==null)if(q.negate)J=!1;else if(q.isBoolean()||q.optional)J=!0;else J="";this.setOptionValueWithSource(Y,J,G)};if(this.on("option:"+Q,(J)=>{let W=`error: option '${q.flags}' argument '${J}' is invalid.`;X(J,W,"cli")}),q.envVar)this.on("optionEnv:"+Q,(J)=>{let W=`error: option '${q.flags}' value '${J}' from env '${q.envVar}' is invalid.`;X(J,W,"env")});return this}_optionEx(q,Q,Y,X,J){if(typeof Q==="object"&&Q instanceof Dq)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let W=this.createOption(Q,Y);if(W.makeOptionMandatory(!!q.mandatory),typeof X==="function")W.default(J).argParser(X);else if(X instanceof RegExp){let G=X;X=(z,H)=>{let K=G.exec(z);return K?K[0]:H},W.default(J).argParser(X)}else W.default(X);return this.addOption(W)}option(q,Q,Y,X){return this._optionEx({},q,Q,Y,X)}requiredOption(q,Q,Y,X){return this._optionEx({mandatory:!0},q,Q,Y,X)}combineFlagAndOptionalValue(q=!0){return this._combineFlagAndOptionalValue=!!q,this}allowUnknownOption(q=!0){return this._allowUnknownOption=!!q,this}allowExcessArguments(q=!0){return this._allowExcessArguments=!!q,this}enablePositionalOptions(q=!0){return this._enablePositionalOptions=!!q,this}passThroughOptions(q=!0){return this._passThroughOptions=!!q,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(q=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!q,this}getOptionValue(q){if(this._storeOptionsAsProperties)return this[q];return this._optionValues[q]}setOptionValue(q,Q){return this.setOptionValueWithSource(q,Q,void 0)}setOptionValueWithSource(q,Q,Y){if(this._storeOptionsAsProperties)this[q]=Q;else this._optionValues[q]=Q;return this._optionValueSources[q]=Y,this}getOptionValueSource(q){return this._optionValueSources[q]}getOptionValueSourceWithGlobals(q){let Q;return this._getCommandAndAncestors().forEach((Y)=>{if(Y.getOptionValueSource(q)!==void 0)Q=Y.getOptionValueSource(q)}),Q}_prepareUserArgs(q,Q){if(q!==void 0&&!Array.isArray(q))throw Error("first parameter to parse must be array or undefined");if(Q=Q||{},q===void 0&&Q.from===void 0){if(E.versions?.electron)Q.from="electron";let X=E.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))Q.from="eval"}if(q===void 0)q=E.argv;this.rawArgs=q.slice();let Y;switch(Q.from){case void 0:case"node":this._scriptPath=q[1],Y=q.slice(2);break;case"electron":if(E.defaultApp)this._scriptPath=q[1],Y=q.slice(2);else Y=q.slice(1);break;case"user":Y=q.slice(0);break;case"eval":Y=q.slice(1);break;default:throw Error(`unexpected parse option { from: '${Q.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",Y}parse(q,Q){let Y=this._prepareUserArgs(q,Q);return this._parseCommand([],Y),this}async parseAsync(q,Q){let Y=this._prepareUserArgs(q,Q);return await this._parseCommand([],Y),this}_executeSubCommand(q,Q){Q=Q.slice();let Y=!1,X=[".js",".ts",".tsx",".mjs",".cjs"];function J(K,B){let L=w.resolve(K,B);if(Yq.existsSync(L))return L;if(X.includes(w.extname(B)))return;let $=X.find((U)=>Yq.existsSync(`${L}${U}`));if($)return`${L}${$}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let W=q._executableFile||`${this._name}-${q._name}`,G=this._executableDir||"";if(this._scriptPath){let K;try{K=Yq.realpathSync(this._scriptPath)}catch(B){K=this._scriptPath}G=w.resolve(w.dirname(K),G)}if(G){let K=J(G,W);if(!K&&!q._executableFile&&this._scriptPath){let B=w.basename(this._scriptPath,w.extname(this._scriptPath));if(B!==this._name)K=J(G,`${B}-${q._name}`)}W=K||W}Y=X.includes(w.extname(W));let z;if(E.platform!=="win32")if(Y)Q.unshift(W),Q=Fq(E.execArgv).concat(Q),z=Qq.spawn(E.argv[0],Q,{stdio:"inherit"});else z=Qq.spawn(W,Q,{stdio:"inherit"});else Q.unshift(W),Q=Fq(E.execArgv).concat(Q),z=Qq.spawn(E.execPath,Q,{stdio:"inherit"});if(!z.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((B)=>{E.on(B,()=>{if(z.killed===!1&&z.exitCode===null)z.kill(B)})});let H=this._exitCallback;z.on("close",(K)=>{if(K=K??1,!H)E.exit(K);else H(new Xq(K,"commander.executeSubCommandAsync","(close)"))}),z.on("error",(K)=>{if(K.code==="ENOENT"){let B=G?`searched for local subcommand relative to directory '${G}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",L=`'${W}' does not exist
14
+ Expecting one of '${Y.join("', '")}'`);if(this._lifeCycleHooks[q])this._lifeCycleHooks[q].push(Q);else this._lifeCycleHooks[q]=[Q];return this}exitOverride(q){if(q)this._exitCallback=q;else this._exitCallback=(Q)=>{if(Q.code!=="commander.executeSubCommandAsync")throw Q};return this}_exit(q,Q,Y){if(this._exitCallback)this._exitCallback(new Jq(q,Q,Y));E.exit(q)}action(q){let Q=(Y)=>{let X=this.registeredArguments.length,J=Y.slice(0,X);if(this._storeOptionsAsProperties)J[X]=this;else J[X]=this.opts();return J.push(this),q.apply(this,J)};return this._actionHandler=Q,this}createOption(q,Q){return new Rq(q,Q)}_callParseArg(q,Q,Y,X){try{return q.parseArg(Q,Y)}catch(J){if(J.code==="commander.invalidArgument"){let W=`${X} ${J.message}`;this.error(W,{exitCode:J.exitCode,code:J.code})}throw J}}_registerOption(q){let Q=q.short&&this._findOption(q.short)||q.long&&this._findOption(q.long);if(Q){let Y=q.long&&this._findOption(q.long)?q.long:q.short;throw Error(`Cannot add option '${q.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${Y}'
15
+ - already used by option '${Q.flags}'`)}this.options.push(q)}_registerCommand(q){let Q=(X)=>{return[X.name()].concat(X.aliases())},Y=Q(q).find((X)=>this._findCommand(X));if(Y){let X=Q(this._findCommand(Y)).join("|"),J=Q(q).join("|");throw Error(`cannot add command '${J}' as already have command '${X}'`)}this.commands.push(q)}addOption(q){this._registerOption(q);let Q=q.name(),Y=q.attributeName();if(q.negate){let J=q.long.replace(/^--no-/,"--");if(!this._findOption(J))this.setOptionValueWithSource(Y,q.defaultValue===void 0?!0:q.defaultValue,"default")}else if(q.defaultValue!==void 0)this.setOptionValueWithSource(Y,q.defaultValue,"default");let X=(J,W,G)=>{if(J==null&&q.presetArg!==void 0)J=q.presetArg;let z=this.getOptionValue(Y);if(J!==null&&q.parseArg)J=this._callParseArg(q,J,z,W);else if(J!==null&&q.variadic)J=q._concatValue(J,z);if(J==null)if(q.negate)J=!1;else if(q.isBoolean()||q.optional)J=!0;else J="";this.setOptionValueWithSource(Y,J,G)};if(this.on("option:"+Q,(J)=>{let W=`error: option '${q.flags}' argument '${J}' is invalid.`;X(J,W,"cli")}),q.envVar)this.on("optionEnv:"+Q,(J)=>{let W=`error: option '${q.flags}' value '${J}' from env '${q.envVar}' is invalid.`;X(J,W,"env")});return this}_optionEx(q,Q,Y,X,J){if(typeof Q==="object"&&Q instanceof Rq)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let W=this.createOption(Q,Y);if(W.makeOptionMandatory(!!q.mandatory),typeof X==="function")W.default(J).argParser(X);else if(X instanceof RegExp){let G=X;X=(z,H)=>{let K=G.exec(z);return K?K[0]:H},W.default(J).argParser(X)}else W.default(X);return this.addOption(W)}option(q,Q,Y,X){return this._optionEx({},q,Q,Y,X)}requiredOption(q,Q,Y,X){return this._optionEx({mandatory:!0},q,Q,Y,X)}combineFlagAndOptionalValue(q=!0){return this._combineFlagAndOptionalValue=!!q,this}allowUnknownOption(q=!0){return this._allowUnknownOption=!!q,this}allowExcessArguments(q=!0){return this._allowExcessArguments=!!q,this}enablePositionalOptions(q=!0){return this._enablePositionalOptions=!!q,this}passThroughOptions(q=!0){return this._passThroughOptions=!!q,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(q=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!q,this}getOptionValue(q){if(this._storeOptionsAsProperties)return this[q];return this._optionValues[q]}setOptionValue(q,Q){return this.setOptionValueWithSource(q,Q,void 0)}setOptionValueWithSource(q,Q,Y){if(this._storeOptionsAsProperties)this[q]=Q;else this._optionValues[q]=Q;return this._optionValueSources[q]=Y,this}getOptionValueSource(q){return this._optionValueSources[q]}getOptionValueSourceWithGlobals(q){let Q;return this._getCommandAndAncestors().forEach((Y)=>{if(Y.getOptionValueSource(q)!==void 0)Q=Y.getOptionValueSource(q)}),Q}_prepareUserArgs(q,Q){if(q!==void 0&&!Array.isArray(q))throw Error("first parameter to parse must be array or undefined");if(Q=Q||{},q===void 0&&Q.from===void 0){if(E.versions?.electron)Q.from="electron";let X=E.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))Q.from="eval"}if(q===void 0)q=E.argv;this.rawArgs=q.slice();let Y;switch(Q.from){case void 0:case"node":this._scriptPath=q[1],Y=q.slice(2);break;case"electron":if(E.defaultApp)this._scriptPath=q[1],Y=q.slice(2);else Y=q.slice(1);break;case"user":Y=q.slice(0);break;case"eval":Y=q.slice(1);break;default:throw Error(`unexpected parse option { from: '${Q.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",Y}parse(q,Q){let Y=this._prepareUserArgs(q,Q);return this._parseCommand([],Y),this}async parseAsync(q,Q){let Y=this._prepareUserArgs(q,Q);return await this._parseCommand([],Y),this}_executeSubCommand(q,Q){Q=Q.slice();let Y=!1,X=[".js",".ts",".tsx",".mjs",".cjs"];function J(K,B){let L=w.resolve(K,B);if(Xq.existsSync(L))return L;if(X.includes(w.extname(B)))return;let $=X.find((U)=>Xq.existsSync(`${L}${U}`));if($)return`${L}${$}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let W=q._executableFile||`${this._name}-${q._name}`,G=this._executableDir||"";if(this._scriptPath){let K;try{K=Xq.realpathSync(this._scriptPath)}catch(B){K=this._scriptPath}G=w.resolve(w.dirname(K),G)}if(G){let K=J(G,W);if(!K&&!q._executableFile&&this._scriptPath){let B=w.basename(this._scriptPath,w.extname(this._scriptPath));if(B!==this._name)K=J(G,`${B}-${q._name}`)}W=K||W}Y=X.includes(w.extname(W));let z;if(E.platform!=="win32")if(Y)Q.unshift(W),Q=Sq(E.execArgv).concat(Q),z=Yq.spawn(E.argv[0],Q,{stdio:"inherit"});else z=Yq.spawn(W,Q,{stdio:"inherit"});else Q.unshift(W),Q=Sq(E.execArgv).concat(Q),z=Yq.spawn(E.execPath,Q,{stdio:"inherit"});if(!z.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((B)=>{E.on(B,()=>{if(z.killed===!1&&z.exitCode===null)z.kill(B)})});let H=this._exitCallback;z.on("close",(K)=>{if(K=K??1,!H)E.exit(K);else H(new Jq(K,"commander.executeSubCommandAsync","(close)"))}),z.on("error",(K)=>{if(K.code==="ENOENT"){let B=G?`searched for local subcommand relative to directory '${G}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",L=`'${W}' does not exist
16
16
  - if '${q._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
- - ${B}`;throw Error(L)}else if(K.code==="EACCES")throw Error(`'${W}' not executable`);if(!H)E.exit(1);else{let B=new Xq(1,"commander.executeSubCommandAsync","(error)");B.nestedError=K,H(B)}}),this.runningCommand=z}_dispatchSubcommand(q,Q,Y){let X=this._findCommand(q);if(!X)this.help({error:!0});let J;return J=this._chainOrCallSubCommandHook(J,X,"preSubcommand"),J=this._chainOrCall(J,()=>{if(X._executableHandler)this._executeSubCommand(X,Q.concat(Y));else return X._parseCommand(Q,Y)}),J}_dispatchHelpCommand(q){if(!q)this.help();let Q=this._findCommand(q);if(Q&&!Q._executableHandler)Q.help();return this._dispatchSubcommand(q,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((q,Q)=>{if(q.required&&this.args[Q]==null)this.missingArgument(q.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let q=(Y,X,J)=>{let W=X;if(X!==null&&Y.parseArg){let G=`error: command-argument value '${X}' is invalid for argument '${Y.name()}'.`;W=this._callParseArg(Y,X,J,G)}return W};this._checkNumberOfArguments();let Q=[];this.registeredArguments.forEach((Y,X)=>{let J=Y.defaultValue;if(Y.variadic){if(X<this.args.length){if(J=this.args.slice(X),Y.parseArg)J=J.reduce((W,G)=>{return q(Y,G,W)},Y.defaultValue)}else if(J===void 0)J=[]}else if(X<this.args.length){if(J=this.args[X],Y.parseArg)J=q(Y,J,Y.defaultValue)}Q[X]=J}),this.processedArgs=Q}_chainOrCall(q,Q){if(q&&q.then&&typeof q.then==="function")return q.then(()=>Q());return Q()}_chainOrCallHooks(q,Q){let Y=q,X=[];if(this._getCommandAndAncestors().reverse().filter((J)=>J._lifeCycleHooks[Q]!==void 0).forEach((J)=>{J._lifeCycleHooks[Q].forEach((W)=>{X.push({hookedCommand:J,callback:W})})}),Q==="postAction")X.reverse();return X.forEach((J)=>{Y=this._chainOrCall(Y,()=>{return J.callback(J.hookedCommand,this)})}),Y}_chainOrCallSubCommandHook(q,Q,Y){let X=q;if(this._lifeCycleHooks[Y]!==void 0)this._lifeCycleHooks[Y].forEach((J)=>{X=this._chainOrCall(X,()=>{return J(this,Q)})});return X}_parseCommand(q,Q){let Y=this.parseOptions(Q);if(this._parseOptionsEnv(),this._parseOptionsImplied(),q=q.concat(Y.operands),Q=Y.unknown,this.args=q.concat(Q),q&&this._findCommand(q[0]))return this._dispatchSubcommand(q[0],q.slice(1),Q);if(this._getHelpCommand()&&q[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(q[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(Q),this._dispatchSubcommand(this._defaultCommandName,q,Q);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(Y.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let X=()=>{if(Y.unknown.length>0)this.unknownOption(Y.unknown[0])},J=`command:${this.name()}`;if(this._actionHandler){X(),this._processArguments();let W;if(W=this._chainOrCallHooks(W,"preAction"),W=this._chainOrCall(W,()=>this._actionHandler(this.processedArgs)),this.parent)W=this._chainOrCall(W,()=>{this.parent.emit(J,q,Q)});return W=this._chainOrCallHooks(W,"postAction"),W}if(this.parent&&this.parent.listenerCount(J))X(),this._processArguments(),this.parent.emit(J,q,Q);else if(q.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",q,Q);if(this.listenerCount("command:*"))this.emit("command:*",q,Q);else if(this.commands.length)this.unknownCommand();else X(),this._processArguments()}else if(this.commands.length)X(),this.help({error:!0});else X(),this._processArguments()}_findCommand(q){if(!q)return;return this.commands.find((Q)=>Q._name===q||Q._aliases.includes(q))}_findOption(q){return this.options.find((Q)=>Q.is(q))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((q)=>{q.options.forEach((Q)=>{if(Q.mandatory&&q.getOptionValue(Q.attributeName())===void 0)q.missingMandatoryOptionValue(Q)})})}_checkForConflictingLocalOptions(){let q=this.options.filter((Y)=>{let X=Y.attributeName();if(this.getOptionValue(X)===void 0)return!1;return this.getOptionValueSource(X)!=="default"});q.filter((Y)=>Y.conflictsWith.length>0).forEach((Y)=>{let X=q.find((J)=>Y.conflictsWith.includes(J.attributeName()));if(X)this._conflictingOption(Y,X)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((q)=>{q._checkForConflictingLocalOptions()})}parseOptions(q){let Q=[],Y=[],X=Q,J=q.slice();function W(z){return z.length>1&&z[0]==="-"}let G=null;while(J.length){let z=J.shift();if(z==="--"){if(X===Y)X.push(z);X.push(...J);break}if(G&&!W(z)){this.emit(`option:${G.name()}`,z);continue}if(G=null,W(z)){let H=this._findOption(z);if(H){if(H.required){let K=J.shift();if(K===void 0)this.optionMissingArgument(H);this.emit(`option:${H.name()}`,K)}else if(H.optional){let K=null;if(J.length>0&&!W(J[0]))K=J.shift();this.emit(`option:${H.name()}`,K)}else this.emit(`option:${H.name()}`);G=H.variadic?H:null;continue}}if(z.length>2&&z[0]==="-"&&z[1]!=="-"){let H=this._findOption(`-${z[1]}`);if(H){if(H.required||H.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${H.name()}`,z.slice(2));else this.emit(`option:${H.name()}`),J.unshift(`-${z.slice(2)}`);continue}}if(/^--[^=]+=/.test(z)){let H=z.indexOf("="),K=this._findOption(z.slice(0,H));if(K&&(K.required||K.optional)){this.emit(`option:${K.name()}`,z.slice(H+1));continue}}if(W(z))X=Y;if((this._enablePositionalOptions||this._passThroughOptions)&&Q.length===0&&Y.length===0){if(this._findCommand(z)){if(Q.push(z),J.length>0)Y.push(...J);break}else if(this._getHelpCommand()&&z===this._getHelpCommand().name()){if(Q.push(z),J.length>0)Q.push(...J);break}else if(this._defaultCommandName){if(Y.push(z),J.length>0)Y.push(...J);break}}if(this._passThroughOptions){if(X.push(z),J.length>0)X.push(...J);break}X.push(z)}return{operands:Q,unknown:Y}}opts(){if(this._storeOptionsAsProperties){let q={},Q=this.options.length;for(let Y=0;Y<Q;Y++){let X=this.options[Y].attributeName();q[X]=X===this._versionOptionName?this._version:this[X]}return q}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((q,Q)=>Object.assign(q,Q.opts()),{})}error(q,Q){if(this._outputConfiguration.outputError(`${q}
18
+ - ${B}`;throw Error(L)}else if(K.code==="EACCES")throw Error(`'${W}' not executable`);if(!H)E.exit(1);else{let B=new Jq(1,"commander.executeSubCommandAsync","(error)");B.nestedError=K,H(B)}}),this.runningCommand=z}_dispatchSubcommand(q,Q,Y){let X=this._findCommand(q);if(!X)this.help({error:!0});let J;return J=this._chainOrCallSubCommandHook(J,X,"preSubcommand"),J=this._chainOrCall(J,()=>{if(X._executableHandler)this._executeSubCommand(X,Q.concat(Y));else return X._parseCommand(Q,Y)}),J}_dispatchHelpCommand(q){if(!q)this.help();let Q=this._findCommand(q);if(Q&&!Q._executableHandler)Q.help();return this._dispatchSubcommand(q,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((q,Q)=>{if(q.required&&this.args[Q]==null)this.missingArgument(q.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let q=(Y,X,J)=>{let W=X;if(X!==null&&Y.parseArg){let G=`error: command-argument value '${X}' is invalid for argument '${Y.name()}'.`;W=this._callParseArg(Y,X,J,G)}return W};this._checkNumberOfArguments();let Q=[];this.registeredArguments.forEach((Y,X)=>{let J=Y.defaultValue;if(Y.variadic){if(X<this.args.length){if(J=this.args.slice(X),Y.parseArg)J=J.reduce((W,G)=>{return q(Y,G,W)},Y.defaultValue)}else if(J===void 0)J=[]}else if(X<this.args.length){if(J=this.args[X],Y.parseArg)J=q(Y,J,Y.defaultValue)}Q[X]=J}),this.processedArgs=Q}_chainOrCall(q,Q){if(q&&q.then&&typeof q.then==="function")return q.then(()=>Q());return Q()}_chainOrCallHooks(q,Q){let Y=q,X=[];if(this._getCommandAndAncestors().reverse().filter((J)=>J._lifeCycleHooks[Q]!==void 0).forEach((J)=>{J._lifeCycleHooks[Q].forEach((W)=>{X.push({hookedCommand:J,callback:W})})}),Q==="postAction")X.reverse();return X.forEach((J)=>{Y=this._chainOrCall(Y,()=>{return J.callback(J.hookedCommand,this)})}),Y}_chainOrCallSubCommandHook(q,Q,Y){let X=q;if(this._lifeCycleHooks[Y]!==void 0)this._lifeCycleHooks[Y].forEach((J)=>{X=this._chainOrCall(X,()=>{return J(this,Q)})});return X}_parseCommand(q,Q){let Y=this.parseOptions(Q);if(this._parseOptionsEnv(),this._parseOptionsImplied(),q=q.concat(Y.operands),Q=Y.unknown,this.args=q.concat(Q),q&&this._findCommand(q[0]))return this._dispatchSubcommand(q[0],q.slice(1),Q);if(this._getHelpCommand()&&q[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(q[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(Q),this._dispatchSubcommand(this._defaultCommandName,q,Q);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(Y.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let X=()=>{if(Y.unknown.length>0)this.unknownOption(Y.unknown[0])},J=`command:${this.name()}`;if(this._actionHandler){X(),this._processArguments();let W;if(W=this._chainOrCallHooks(W,"preAction"),W=this._chainOrCall(W,()=>this._actionHandler(this.processedArgs)),this.parent)W=this._chainOrCall(W,()=>{this.parent.emit(J,q,Q)});return W=this._chainOrCallHooks(W,"postAction"),W}if(this.parent&&this.parent.listenerCount(J))X(),this._processArguments(),this.parent.emit(J,q,Q);else if(q.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",q,Q);if(this.listenerCount("command:*"))this.emit("command:*",q,Q);else if(this.commands.length)this.unknownCommand();else X(),this._processArguments()}else if(this.commands.length)X(),this.help({error:!0});else X(),this._processArguments()}_findCommand(q){if(!q)return;return this.commands.find((Q)=>Q._name===q||Q._aliases.includes(q))}_findOption(q){return this.options.find((Q)=>Q.is(q))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((q)=>{q.options.forEach((Q)=>{if(Q.mandatory&&q.getOptionValue(Q.attributeName())===void 0)q.missingMandatoryOptionValue(Q)})})}_checkForConflictingLocalOptions(){let q=this.options.filter((Y)=>{let X=Y.attributeName();if(this.getOptionValue(X)===void 0)return!1;return this.getOptionValueSource(X)!=="default"});q.filter((Y)=>Y.conflictsWith.length>0).forEach((Y)=>{let X=q.find((J)=>Y.conflictsWith.includes(J.attributeName()));if(X)this._conflictingOption(Y,X)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((q)=>{q._checkForConflictingLocalOptions()})}parseOptions(q){let Q=[],Y=[],X=Q,J=q.slice();function W(z){return z.length>1&&z[0]==="-"}let G=null;while(J.length){let z=J.shift();if(z==="--"){if(X===Y)X.push(z);X.push(...J);break}if(G&&!W(z)){this.emit(`option:${G.name()}`,z);continue}if(G=null,W(z)){let H=this._findOption(z);if(H){if(H.required){let K=J.shift();if(K===void 0)this.optionMissingArgument(H);this.emit(`option:${H.name()}`,K)}else if(H.optional){let K=null;if(J.length>0&&!W(J[0]))K=J.shift();this.emit(`option:${H.name()}`,K)}else this.emit(`option:${H.name()}`);G=H.variadic?H:null;continue}}if(z.length>2&&z[0]==="-"&&z[1]!=="-"){let H=this._findOption(`-${z[1]}`);if(H){if(H.required||H.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${H.name()}`,z.slice(2));else this.emit(`option:${H.name()}`),J.unshift(`-${z.slice(2)}`);continue}}if(/^--[^=]+=/.test(z)){let H=z.indexOf("="),K=this._findOption(z.slice(0,H));if(K&&(K.required||K.optional)){this.emit(`option:${K.name()}`,z.slice(H+1));continue}}if(W(z))X=Y;if((this._enablePositionalOptions||this._passThroughOptions)&&Q.length===0&&Y.length===0){if(this._findCommand(z)){if(Q.push(z),J.length>0)Y.push(...J);break}else if(this._getHelpCommand()&&z===this._getHelpCommand().name()){if(Q.push(z),J.length>0)Q.push(...J);break}else if(this._defaultCommandName){if(Y.push(z),J.length>0)Y.push(...J);break}}if(this._passThroughOptions){if(X.push(z),J.length>0)X.push(...J);break}X.push(z)}return{operands:Q,unknown:Y}}opts(){if(this._storeOptionsAsProperties){let q={},Q=this.options.length;for(let Y=0;Y<Q;Y++){let X=this.options[Y].attributeName();q[X]=X===this._versionOptionName?this._version:this[X]}return q}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((q,Q)=>Object.assign(q,Q.opts()),{})}error(q,Q){if(this._outputConfiguration.outputError(`${q}
19
19
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
20
20
  `);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
21
- `),this.outputHelp({error:!0});let Y=Q||{},X=Y.exitCode||1,J=Y.code||"commander.error";this._exit(X,J,q)}_parseOptionsEnv(){this.options.forEach((q)=>{if(q.envVar&&q.envVar in E.env){let Q=q.attributeName();if(this.getOptionValue(Q)===void 0||["default","config","env"].includes(this.getOptionValueSource(Q)))if(q.required||q.optional)this.emit(`optionEnv:${q.name()}`,E.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new SQ(this.options),Q=(Y)=>{return this.getOptionValue(Y)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(Y))};this.options.filter((Y)=>Y.implied!==void 0&&Q(Y.attributeName())&&q.valueFromOption(this.getOptionValue(Y.attributeName()),Y)).forEach((Y)=>{Object.keys(Y.implied).filter((X)=>!Q(X)).forEach((X)=>{this.setOptionValueWithSource(X,Y.implied[X],"implied")})})}missingArgument(q){let Q=`error: missing required argument '${q}'`;this.error(Q,{code:"commander.missingArgument"})}optionMissingArgument(q){let Q=`error: option '${q.flags}' argument missing`;this.error(Q,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(q){let Q=`error: required option '${q.flags}' not specified`;this.error(Q,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(q,Q){let Y=(W)=>{let G=W.attributeName(),z=this.getOptionValue(G),H=this.options.find((B)=>B.negate&&G===B.attributeName()),K=this.options.find((B)=>!B.negate&&G===B.attributeName());if(H&&(H.presetArg===void 0&&z===!1||H.presetArg!==void 0&&z===H.presetArg))return H;return K||W},X=(W)=>{let G=Y(W),z=G.attributeName();if(this.getOptionValueSource(z)==="env")return`environment variable '${G.envVar}'`;return`option '${G.flags}'`},J=`error: ${X(q)} cannot be used with ${X(Q)}`;this.error(J,{code:"commander.conflictingOption"})}unknownOption(q){if(this._allowUnknownOption)return;let Q="";if(q.startsWith("--")&&this._showSuggestionAfterError){let X=[],J=this;do{let W=J.createHelp().visibleOptions(J).filter((G)=>G.long).map((G)=>G.long);X=X.concat(W),J=J.parent}while(J&&!J._enablePositionalOptions);Q=Rq(q,X)}let Y=`error: unknown option '${q}'${Q}`;this.error(Y,{code:"commander.unknownOption"})}_excessArguments(q){if(this._allowExcessArguments)return;let Q=this.registeredArguments.length,Y=Q===1?"":"s",J=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${Q} argument${Y} but got ${q.length}.`;this.error(J,{code:"commander.excessArguments"})}unknownCommand(){let q=this.args[0],Q="";if(this._showSuggestionAfterError){let X=[];this.createHelp().visibleCommands(this).forEach((J)=>{if(X.push(J.name()),J.alias())X.push(J.alias())}),Q=Rq(q,X)}let Y=`error: unknown command '${q}'${Q}`;this.error(Y,{code:"commander.unknownCommand"})}version(q,Q,Y){if(q===void 0)return this._version;this._version=q,Q=Q||"-V, --version",Y=Y||"output the version number";let X=this.createOption(Q,Y);return this._versionOptionName=X.attributeName(),this._registerOption(X),this.on("option:"+X.name(),()=>{this._outputConfiguration.writeOut(`${q}
21
+ `),this.outputHelp({error:!0});let Y=Q||{},X=Y.exitCode||1,J=Y.code||"commander.error";this._exit(X,J,q)}_parseOptionsEnv(){this.options.forEach((q)=>{if(q.envVar&&q.envVar in E.env){let Q=q.attributeName();if(this.getOptionValue(Q)===void 0||["default","config","env"].includes(this.getOptionValueSource(Q)))if(q.required||q.optional)this.emit(`optionEnv:${q.name()}`,E.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new SQ(this.options),Q=(Y)=>{return this.getOptionValue(Y)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(Y))};this.options.filter((Y)=>Y.implied!==void 0&&Q(Y.attributeName())&&q.valueFromOption(this.getOptionValue(Y.attributeName()),Y)).forEach((Y)=>{Object.keys(Y.implied).filter((X)=>!Q(X)).forEach((X)=>{this.setOptionValueWithSource(X,Y.implied[X],"implied")})})}missingArgument(q){let Q=`error: missing required argument '${q}'`;this.error(Q,{code:"commander.missingArgument"})}optionMissingArgument(q){let Q=`error: option '${q.flags}' argument missing`;this.error(Q,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(q){let Q=`error: required option '${q.flags}' not specified`;this.error(Q,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(q,Q){let Y=(W)=>{let G=W.attributeName(),z=this.getOptionValue(G),H=this.options.find((B)=>B.negate&&G===B.attributeName()),K=this.options.find((B)=>!B.negate&&G===B.attributeName());if(H&&(H.presetArg===void 0&&z===!1||H.presetArg!==void 0&&z===H.presetArg))return H;return K||W},X=(W)=>{let G=Y(W),z=G.attributeName();if(this.getOptionValueSource(z)==="env")return`environment variable '${G.envVar}'`;return`option '${G.flags}'`},J=`error: ${X(q)} cannot be used with ${X(Q)}`;this.error(J,{code:"commander.conflictingOption"})}unknownOption(q){if(this._allowUnknownOption)return;let Q="";if(q.startsWith("--")&&this._showSuggestionAfterError){let X=[],J=this;do{let W=J.createHelp().visibleOptions(J).filter((G)=>G.long).map((G)=>G.long);X=X.concat(W),J=J.parent}while(J&&!J._enablePositionalOptions);Q=Fq(q,X)}let Y=`error: unknown option '${q}'${Q}`;this.error(Y,{code:"commander.unknownOption"})}_excessArguments(q){if(this._allowExcessArguments)return;let Q=this.registeredArguments.length,Y=Q===1?"":"s",J=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${Q} argument${Y} but got ${q.length}.`;this.error(J,{code:"commander.excessArguments"})}unknownCommand(){let q=this.args[0],Q="";if(this._showSuggestionAfterError){let X=[];this.createHelp().visibleCommands(this).forEach((J)=>{if(X.push(J.name()),J.alias())X.push(J.alias())}),Q=Fq(q,X)}let Y=`error: unknown command '${q}'${Q}`;this.error(Y,{code:"commander.unknownCommand"})}version(q,Q,Y){if(q===void 0)return this._version;this._version=q,Q=Q||"-V, --version",Y=Y||"output the version number";let X=this.createOption(Q,Y);return this._versionOptionName=X.attributeName(),this._registerOption(X),this.on("option:"+X.name(),()=>{this._outputConfiguration.writeOut(`${q}
22
22
  `),this._exit(0,"commander.version",q)}),this}description(q,Q){if(q===void 0&&Q===void 0)return this._description;if(this._description=q,Q)this._argsDescription=Q;return this}summary(q){if(q===void 0)return this._summary;return this._summary=q,this}alias(q){if(q===void 0)return this._aliases[0];let Q=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)Q=this.commands[this.commands.length-1];if(q===Q._name)throw Error("Command alias can't be the same as its name");let Y=this.parent?._findCommand(q);if(Y){let X=[Y.name()].concat(Y.aliases()).join("|");throw Error(`cannot add alias '${q}' to command '${this.name()}' as already have command '${X}'`)}return Q._aliases.push(q),this}aliases(q){if(q===void 0)return this._aliases;return q.forEach((Q)=>this.alias(Q)),this}usage(q){if(q===void 0){if(this._usage)return this._usage;let Q=this.registeredArguments.map((Y)=>{return RQ(Y)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?Q:[]).join(" ")}return this._usage=q,this}name(q){if(q===void 0)return this._name;return this._name=q,this}nameFromFilename(q){return this._name=w.basename(q,w.extname(q)),this}executableDir(q){if(q===void 0)return this._executableDir;return this._executableDir=q,this}helpInformation(q){let Q=this.createHelp();if(Q.helpWidth===void 0)Q.helpWidth=q&&q.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth();return Q.formatHelp(this,Q)}_getHelpContext(q){q=q||{};let Q={error:!!q.error},Y;if(Q.error)Y=(X)=>this._outputConfiguration.writeErr(X);else Y=(X)=>this._outputConfiguration.writeOut(X);return Q.write=q.write||Y,Q.command=this,Q}outputHelp(q){let Q;if(typeof q==="function")Q=q,q=void 0;let Y=this._getHelpContext(q);this._getCommandAndAncestors().reverse().forEach((J)=>J.emit("beforeAllHelp",Y)),this.emit("beforeHelp",Y);let X=this.helpInformation(Y);if(Q){if(X=Q(X),typeof X!=="string"&&!Buffer.isBuffer(X))throw Error("outputHelp callback must return a string or a Buffer")}if(Y.write(X),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",Y),this._getCommandAndAncestors().forEach((J)=>J.emit("afterAllHelp",Y))}helpOption(q,Q){if(typeof q==="boolean"){if(q)this._helpOption=this._helpOption??void 0;else this._helpOption=null;return this}return q=q??"-h, --help",Q=Q??"display help for command",this._helpOption=this.createOption(q,Q),this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(q){return this._helpOption=q,this}help(q){this.outputHelp(q);let Q=E.exitCode||0;if(Q===0&&q&&typeof q!=="function"&&q.error)Q=1;this._exit(Q,"commander.help","(outputHelp)")}addHelpText(q,Q){let Y=["beforeAll","before","after","afterAll"];if(!Y.includes(q))throw Error(`Unexpected value for position to addHelpText.
23
23
  Expecting one of '${Y.join("', '")}'`);let X=`${q}Help`;return this.on(X,(J)=>{let W;if(typeof Q==="function")W=Q({error:J.error,command:J.command});else W=Q;if(W)J.write(`${W}
24
- `)}),this}_outputHelpIfRequested(q){let Q=this._getHelpOption();if(Q&&q.find((X)=>Q.is(X)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function Fq(q){return q.map((Q)=>{if(!Q.startsWith("--inspect"))return Q;let Y,X="127.0.0.1",J="9229",W;if((W=Q.match(/^(--inspect(-brk)?)$/))!==null)Y=W[1];else if((W=Q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(Y=W[1],/^\d+$/.test(W[3]))J=W[3];else X=W[3];else if((W=Q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)Y=W[1],X=W[3],J=W[4];if(Y&&J!=="0")return`${Y}=${X}:${parseInt(J)+1}`;return Q})}MQ.Command=Jq});var Zq=D((OQ)=>{var{Argument:Mq}=m(),{Command:Wq}=Sq(),{CommanderError:_Q,InvalidArgumentError:Tq}=k(),{Help:ZQ}=a(),{Option:_q}=qq();OQ.program=new Wq;OQ.createCommand=(q)=>new Wq(q);OQ.createOption=(q,Q)=>new _q(q,Q);OQ.createArgument=(q,Q)=>new Mq(q,Q);OQ.Command=Wq;OQ.Option=_q;OQ.Argument=Mq;OQ.Help=ZQ;OQ.CommanderError=_Q;OQ.InvalidArgumentError=Tq;OQ.InvalidOptionArgumentError=Tq});var Oq=s(Zq(),1),{program:S,createCommand:TY,createArgument:_Y,createOption:ZY,CommanderError:OY,InvalidArgumentError:bY,InvalidOptionArgumentError:kY,Command:CY,Argument:xY,Option:vY,Help:hY}=Oq.default;import{cp as UY,exists as b,mkdir as t,writeFile as F,readFile as B1}from"fs/promises";import{join as V}from"path";import{spawn as dq}from"child_process";import{homedir as $Y}from"os";var zq={rust:{courseJson:{id:"{{id}}",name:"{{name}}",runner:{command:"cargo",args:["test","--quiet","--manifest-path","./content/{{id}}/Cargo.toml"],cwd:"."},content:{root:".",exercises:"content"},setup:{checks:[{name:"Rust Compiler",type:"command",command:"rustc --version"},{name:"Cargo Package Manager",type:"command",command:"cargo --version"}],guide:"SETUP.md"}},setupMd:`# \uD83E\uDD80 Rust Setup Guide
24
+ `)}),this}_outputHelpIfRequested(q){let Q=this._getHelpOption();if(Q&&q.find((X)=>Q.is(X)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function Sq(q){return q.map((Q)=>{if(!Q.startsWith("--inspect"))return Q;let Y,X="127.0.0.1",J="9229",W;if((W=Q.match(/^(--inspect(-brk)?)$/))!==null)Y=W[1];else if((W=Q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(Y=W[1],/^\d+$/.test(W[3]))J=W[3];else X=W[3];else if((W=Q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)Y=W[1],X=W[3],J=W[4];if(Y&&J!=="0")return`${Y}=${X}:${parseInt(J)+1}`;return Q})}MQ.Command=Wq});var Oq=D((OQ)=>{var{Argument:Tq}=m(),{Command:zq}=Mq(),{CommanderError:_Q,InvalidArgumentError:_q}=k(),{Help:ZQ}=qq(),{Option:Zq}=Qq();OQ.program=new zq;OQ.createCommand=(q)=>new zq(q);OQ.createOption=(q,Q)=>new Zq(q,Q);OQ.createArgument=(q,Q)=>new Tq(q,Q);OQ.Command=zq;OQ.Option=Zq;OQ.Argument=Tq;OQ.Help=ZQ;OQ.CommanderError=_Q;OQ.InvalidArgumentError=_q;OQ.InvalidOptionArgumentError=_q});var bq=e(Oq(),1),{program:S,createCommand:TY,createArgument:_Y,createOption:ZY,CommanderError:OY,InvalidArgumentError:bY,InvalidOptionArgumentError:kY,Command:CY,Argument:xY,Option:vY,Help:hY}=bq.default;import{cp as UY,exists as b,mkdir as t,writeFile as F,readFile as B1}from"fs/promises";import{join as V}from"path";import{spawn as nq}from"child_process";import{homedir as $Y}from"os";var Gq={rust:{courseJson:{id:"{{id}}",name:"{{name}}",runner:{command:"cargo",args:["test","--quiet","--manifest-path","./content/{{id}}/Cargo.toml"],cwd:"."},content:{root:".",exercises:"content"},setup:{checks:[{name:"Rust Compiler",type:"command",command:"rustc --version"},{name:"Cargo Package Manager",type:"command",command:"cargo --version"}],guide:"SETUP.md"}},setupMd:`# \uD83E\uDD80 Rust Setup Guide
25
25
 
26
26
  To run the exercises in this course, you need to have **Rust** installed on your system.
27
27
 
@@ -84,9 +84,9 @@ func Greeting() string {
84
84
  func main() {
85
85
  fmt.Println(Greeting())
86
86
  }
87
- `,introFilename:"main.go"}};var cY=Object.freeze({status:"aborted"});function I(q,Q,Y){function X(z,H){if(!z._zod)Object.defineProperty(z,"_zod",{value:{def:H,constr:G,traits:new Set},enumerable:!1});if(z._zod.traits.has(q))return;z._zod.traits.add(q),Q(z,H);let K=G.prototype,B=Object.keys(K);for(let L=0;L<B.length;L++){let $=B[L];if(!($ in z))z[$]=K[$].bind(z)}}let J=Y?.Parent??Object;class W extends J{}Object.defineProperty(W,"name",{value:q});function G(z){var H;let K=Y?.Parent?new W:this;X(K,z),(H=K._zod).deferred??(H.deferred=[]);for(let B of K._zod.deferred)B();return K}return Object.defineProperty(G,"init",{value:X}),Object.defineProperty(G,Symbol.hasInstance,{value:(z)=>{if(Y?.Parent&&z instanceof Y.Parent)return!0;return z?._zod?.traits?.has(q)}}),Object.defineProperty(G,"name",{value:q}),G}var fY=Symbol("zod_brand");class A extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}var Gq={};function M(q){if(q)Object.assign(Gq,q);return Gq}function Cq(q,Q){if(typeof Q==="bigint")return Q.toString();return Q}function Hq(q){return{get value(){{let Y=q();return Object.defineProperty(this,"value",{value:Y}),Y}throw Error("cached value already set")}}}var kq=Symbol("evaluating");function C(q,Q,Y){let X=void 0;Object.defineProperty(q,Q,{get(){if(X===kq)return;if(X===void 0)X=kq,X=Y();return X},set(J){Object.defineProperty(q,Q,{value:J})},configurable:!0})}var Kq="captureStackTrace"in Error?Error.captureStackTrace:(...q)=>{};function xq(q){return typeof q==="object"&&q!==null&&!Array.isArray(q)}var mQ=Hq(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(q){return!1}});function Bq(q,Q,Y){let X=new q._zod.constr(Q??q._zod.def);if(!Q||Y?.parent)X._zod.parent=q;return X}function x(q){let Q=q;if(!Q)return{};if(typeof Q==="string")return{error:()=>Q};if(Q?.message!==void 0){if(Q?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");Q.error=Q.message}if(delete Q.message,typeof Q.error==="string")return{...Q,error:()=>Q.error};return Q}function vq(q){return Object.keys(q).filter((Q)=>{return q[Q]._zod.optin==="optional"&&q[Q]._zod.optout==="optional"})}var uY={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function v(q,Q=0){if(q.aborted===!0)return!0;for(let Y=Q;Y<q.issues.length;Y++)if(q.issues[Y]?.continue!==!0)return!0;return!1}function Lq(q,Q){return Q.map((Y)=>{var X;return(X=Y).path??(X.path=[]),Y.path.unshift(q),Y})}function l(q){return typeof q==="string"?q:q?.message}function T(q,Q,Y){let X={...q,path:q.path??[]};if(!q.message){let J=l(q.inst?._zod.def?.error?.(q))??l(Q?.error?.(q))??l(Y.customError?.(q))??l(Y.localeError?.(q))??"Invalid input";X.message=J}if(delete X.inst,delete X.continue,!Q?.reportInput)delete X.input;return X}var hq=(q,Q)=>{q.name="$ZodError",Object.defineProperty(q,"_zod",{value:q._zod,enumerable:!1}),Object.defineProperty(q,"issues",{value:Q,enumerable:!1}),q.message=JSON.stringify(Q,Cq,2),Object.defineProperty(q,"toString",{value:()=>q.message,enumerable:!1})},gq=I("$ZodError",hq),g=I("$ZodError",hq,{Parent:Error});var pQ=(q)=>(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!1}):{async:!1},G=Q._zod.run({value:Y,issues:[]},W);if(G instanceof Promise)throw new A;if(G.issues.length){let z=new(J?.Err??q)(G.issues.map((H)=>T(H,W,M())));throw Kq(z,J?.callee),z}return G.value},p=pQ(g),rQ=(q)=>async(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!0}):{async:!0},G=Q._zod.run({value:Y,issues:[]},W);if(G instanceof Promise)G=await G;if(G.issues.length){let z=new(J?.Err??q)(G.issues.map((H)=>T(H,W,M())));throw Kq(z,J?.callee),z}return G.value},r=rQ(g),oQ=(q)=>(Q,Y,X)=>{let J=X?{...X,async:!1}:{async:!1},W=Q._zod.run({value:Y,issues:[]},J);if(W instanceof Promise)throw new A;return W.issues.length?{success:!1,error:new(q??gq)(W.issues.map((G)=>T(G,J,M())))}:{success:!0,data:W.value}},y=oQ(g),dQ=(q)=>async(Q,Y,X)=>{let J=X?Object.assign(X,{async:!0}):{async:!0},W=Q._zod.run({value:Y,issues:[]},J);if(W instanceof Promise)W=await W;return W.issues.length?{success:!1,error:new q(W.issues.map((G)=>T(G,J,M())))}:{success:!0,data:W.value}},c=dQ(g);var nQ="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",iQ=new RegExp(`^${nQ}$`);var yq=(q)=>{let Q=q?`[\\s\\S]{${q?.minimum??0},${q?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${Q}$`)};var fq={major:4,minor:3,patch:6};var f=I("$ZodType",(q,Q)=>{var Y;q??(q={}),q._zod.def=Q,q._zod.bag=q._zod.bag||{},q._zod.version=fq;let X=[...q._zod.def.checks??[]];if(q._zod.traits.has("$ZodCheck"))X.unshift(q);for(let J of X)for(let W of J._zod.onattach)W(q);if(X.length===0)(Y=q._zod).deferred??(Y.deferred=[]),q._zod.deferred?.push(()=>{q._zod.run=q._zod.parse});else{let J=(G,z,H)=>{let K=v(G),B;for(let L of z){if(L._zod.def.when){if(!L._zod.def.when(G))continue}else if(K)continue;let $=G.issues.length,U=L._zod.check(G);if(U instanceof Promise&&H?.async===!1)throw new A;if(B||U instanceof Promise)B=(B??Promise.resolve()).then(async()=>{if(await U,G.issues.length===$)return;if(!K)K=v(G,$)});else{if(G.issues.length===$)continue;if(!K)K=v(G,$)}}if(B)return B.then(()=>{return G});return G},W=(G,z,H)=>{if(v(G))return G.aborted=!0,G;let K=J(z,X,H);if(K instanceof Promise){if(H.async===!1)throw new A;return K.then((B)=>q._zod.parse(B,H))}return q._zod.parse(K,H)};q._zod.run=(G,z)=>{if(z.skipChecks)return q._zod.parse(G,z);if(z.direction==="backward"){let K=q._zod.parse({value:G.value,issues:[]},{...z,skipChecks:!0});if(K instanceof Promise)return K.then((B)=>{return W(B,G,z)});return W(K,G,z)}let H=q._zod.parse(G,z);if(H instanceof Promise){if(z.async===!1)throw new A;return H.then((K)=>J(K,X,z))}return J(H,X,z)}}C(q,"~standard",()=>({validate:(J)=>{try{let W=y(q,J);return W.success?{value:W.data}:{issues:W.error?.issues}}catch(W){return c(q,J).then((G)=>G.success?{value:G.data}:{issues:G.error?.issues})}},vendor:"zod",version:1}))}),mq=I("$ZodString",(q,Q)=>{f.init(q,Q),q._zod.pattern=[...q?._zod.bag?.patterns??[]].pop()??yq(q._zod.bag),q._zod.parse=(Y,X)=>{if(Q.coerce)try{Y.value=String(Y.value)}catch(J){}if(typeof Y.value==="string")return Y;return Y.issues.push({expected:"string",code:"invalid_type",input:Y.value,inst:q}),Y}});function uq(q,Q,Y){if(q.issues.length)Q.issues.push(...Lq(Y,q.issues));Q.value[Y]=q.value}var lq=I("$ZodArray",(q,Q)=>{f.init(q,Q),q._zod.parse=(Y,X)=>{let J=Y.value;if(!Array.isArray(J))return Y.issues.push({expected:"array",code:"invalid_type",input:J,inst:q}),Y;Y.value=Array(J.length);let W=[];for(let G=0;G<J.length;G++){let z=J[G],H=Q.element._zod.run({value:z,issues:[]},X);if(H instanceof Promise)W.push(H.then((K)=>uq(K,Y,G)));else uq(H,Y,G)}if(W.length)return Promise.all(W).then(()=>Y);return Y}});function o(q,Q,Y,X,J){if(q.issues.length){if(J&&!(Y in X))return;Q.issues.push(...Lq(Y,q.issues))}if(q.value===void 0){if(Y in X)Q.value[Y]=void 0}else Q.value[Y]=q.value}function sQ(q){let Q=Object.keys(q.shape);for(let X of Q)if(!q.shape?.[X]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${X}": expected a Zod schema`);let Y=vq(q.shape);return{...q,keys:Q,keySet:new Set(Q),numKeys:Q.length,optionalKeys:new Set(Y)}}function eQ(q,Q,Y,X,J,W){let G=[],z=J.keySet,H=J.catchall._zod,K=H.def.type,B=H.optout==="optional";for(let L in Q){if(z.has(L))continue;if(K==="never"){G.push(L);continue}let $=H.run({value:Q[L],issues:[]},X);if($ instanceof Promise)q.push($.then((U)=>o(U,Y,L,Q,B)));else o($,Y,L,Q,B)}if(G.length)Y.issues.push({code:"unrecognized_keys",keys:G,input:Q,inst:W});if(!q.length)return Y;return Promise.all(q).then(()=>{return Y})}var pq=I("$ZodObject",(q,Q)=>{if(f.init(q,Q),!Object.getOwnPropertyDescriptor(Q,"shape")?.get){let z=Q.shape;Object.defineProperty(Q,"shape",{get:()=>{let H={...z};return Object.defineProperty(Q,"shape",{value:H}),H}})}let X=Hq(()=>sQ(Q));C(q._zod,"propValues",()=>{let z=Q.shape,H={};for(let K in z){let B=z[K]._zod;if(B.values){H[K]??(H[K]=new Set);for(let L of B.values)H[K].add(L)}}return H});let J=xq,W=Q.catchall,G;q._zod.parse=(z,H)=>{G??(G=X.value);let K=z.value;if(!J(K))return z.issues.push({expected:"object",code:"invalid_type",input:K,inst:q}),z;z.value={};let B=[],L=G.shape;for(let $ of G.keys){let U=L[$],P=U._zod.optout==="optional",N=U._zod.run({value:K[$],issues:[]},H);if(N instanceof Promise)B.push(N.then((iq)=>o(iq,z,$,K,P)));else o(N,z,$,K,P)}if(!W)return B.length?Promise.all(B).then(()=>z):z;return eQ(B,K,z,H,X.value,q)}});function rq(q,Q){return new q({type:"string",...x(Q)})}var Uq=I("ZodMiniType",(q,Q)=>{if(!q._zod)throw Error("Uninitialized schema in ZodMiniType.");f.init(q,Q),q.def=Q,q.type=Q.type,q.parse=(Y,X)=>p(q,Y,X,{callee:q.parse}),q.safeParse=(Y,X)=>y(q,Y,X),q.parseAsync=async(Y,X)=>r(q,Y,X,{callee:q.parseAsync}),q.safeParseAsync=async(Y,X)=>c(q,Y,X),q.check=(...Y)=>{return q.clone({...Q,checks:[...Q.checks??[],...Y.map((X)=>typeof X==="function"?{_zod:{check:X,def:{check:"custom"},onattach:[]}}:X)]},{parent:!0})},q.with=q.check,q.clone=(Y,X)=>Bq(q,Y,X),q.brand=()=>q,q.register=(Y,X)=>{return Y.add(q,X),q},q.apply=(Y)=>Y(q)}),QY=I("ZodMiniString",(q,Q)=>{mq.init(q,Q),Uq.init(q,Q)});function j(q){return rq(QY,q)}var YY=I("ZodMiniArray",(q,Q)=>{lq.init(q,Q),Uq.init(q,Q)});function $q(q,Q){return new YY({type:"array",element:q,...x(Q)})}var XY=I("ZodMiniObject",(q,Q)=>{pq.init(q,Q),Uq.init(q,Q),C(q,"shape",()=>Q.shape)});function _(q,Q){let Y={type:"object",shape:q??{},...x(Q)};return new XY(Y)}import{cp as oq,exists as Z,mkdir as JY,readFile as WY,rm as zY}from"fs/promises";import{join as O}from"path";import{spawn as GY}from"child_process";import{homedir as HY}from"os";import{resolve as LY}from"path";var d="course.json",KY=()=>process.env.PROGY_API_URL||"https://progy.francy.workers.dev",BY=_({id:j(),name:j(),runner:_({command:j(),args:$q(j()),cwd:j()}),content:_({root:j(),exercises:j()}),setup:_({checks:$q(_({name:j(),type:j(),command:j()})),guide:j()})});class n{static async resolveSource(q){if(q.startsWith("http://")||q.startsWith("https://")||q.startsWith("git@")){let Q=q.split("#"),Y=Q[0],X=Q[1];return{url:Y,branch:X}}if(await Z(q))return{url:LY(q)};console.log(`[INFO] Resolving alias '${q}'...`);try{let Q=`${KY()}/api/registry`,Y=await fetch(Q);if(!Y.ok)throw Error(`Failed to fetch registry (Status: ${Y.status})`);let J=(await Y.json()).courses[q];if(J)return{url:J.repo,branch:J.branch,path:J.path}}catch(Q){console.warn(`[WARN] Registry lookup failed: ${Q.message||Q}`)}throw Error(`Could not resolve course source for '${q}'`)}static async validateCourse(q){let Q=O(q,d);if(!await Z(Q))throw Error(`Missing ${d} in course directory.`);let Y=await WY(Q,"utf-8"),X;try{X=JSON.parse(Y)}catch(H){throw Error(`Invalid JSON in ${d}`)}let J=BY.safeParse(X);if(!J.success){let H=J.error.issues.map((K)=>`- ${K.path.join(".")}: ${K.message}`).join(`
87
+ `,introFilename:"main.go"}};var cY=Object.freeze({status:"aborted"});function I(q,Q,Y){function X(z,H){if(!z._zod)Object.defineProperty(z,"_zod",{value:{def:H,constr:G,traits:new Set},enumerable:!1});if(z._zod.traits.has(q))return;z._zod.traits.add(q),Q(z,H);let K=G.prototype,B=Object.keys(K);for(let L=0;L<B.length;L++){let $=B[L];if(!($ in z))z[$]=K[$].bind(z)}}let J=Y?.Parent??Object;class W extends J{}Object.defineProperty(W,"name",{value:q});function G(z){var H;let K=Y?.Parent?new W:this;X(K,z),(H=K._zod).deferred??(H.deferred=[]);for(let B of K._zod.deferred)B();return K}return Object.defineProperty(G,"init",{value:X}),Object.defineProperty(G,Symbol.hasInstance,{value:(z)=>{if(Y?.Parent&&z instanceof Y.Parent)return!0;return z?._zod?.traits?.has(q)}}),Object.defineProperty(G,"name",{value:q}),G}var fY=Symbol("zod_brand");class A extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}var Hq={};function M(q){if(q)Object.assign(Hq,q);return Hq}function xq(q,Q){if(typeof Q==="bigint")return Q.toString();return Q}function Kq(q){return{get value(){{let Y=q();return Object.defineProperty(this,"value",{value:Y}),Y}throw Error("cached value already set")}}}var Cq=Symbol("evaluating");function C(q,Q,Y){let X=void 0;Object.defineProperty(q,Q,{get(){if(X===Cq)return;if(X===void 0)X=Cq,X=Y();return X},set(J){Object.defineProperty(q,Q,{value:J})},configurable:!0})}var Bq="captureStackTrace"in Error?Error.captureStackTrace:(...q)=>{};function vq(q){return typeof q==="object"&&q!==null&&!Array.isArray(q)}var mQ=Kq(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(q){return!1}});function Lq(q,Q,Y){let X=new q._zod.constr(Q??q._zod.def);if(!Q||Y?.parent)X._zod.parent=q;return X}function x(q){let Q=q;if(!Q)return{};if(typeof Q==="string")return{error:()=>Q};if(Q?.message!==void 0){if(Q?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");Q.error=Q.message}if(delete Q.message,typeof Q.error==="string")return{...Q,error:()=>Q.error};return Q}function hq(q){return Object.keys(q).filter((Q)=>{return q[Q]._zod.optin==="optional"&&q[Q]._zod.optout==="optional"})}var uY={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function v(q,Q=0){if(q.aborted===!0)return!0;for(let Y=Q;Y<q.issues.length;Y++)if(q.issues[Y]?.continue!==!0)return!0;return!1}function Uq(q,Q){return Q.map((Y)=>{var X;return(X=Y).path??(X.path=[]),Y.path.unshift(q),Y})}function l(q){return typeof q==="string"?q:q?.message}function T(q,Q,Y){let X={...q,path:q.path??[]};if(!q.message){let J=l(q.inst?._zod.def?.error?.(q))??l(Q?.error?.(q))??l(Y.customError?.(q))??l(Y.localeError?.(q))??"Invalid input";X.message=J}if(delete X.inst,delete X.continue,!Q?.reportInput)delete X.input;return X}var gq=(q,Q)=>{q.name="$ZodError",Object.defineProperty(q,"_zod",{value:q._zod,enumerable:!1}),Object.defineProperty(q,"issues",{value:Q,enumerable:!1}),q.message=JSON.stringify(Q,xq,2),Object.defineProperty(q,"toString",{value:()=>q.message,enumerable:!1})},yq=I("$ZodError",gq),g=I("$ZodError",gq,{Parent:Error});var pQ=(q)=>(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!1}):{async:!1},G=Q._zod.run({value:Y,issues:[]},W);if(G instanceof Promise)throw new A;if(G.issues.length){let z=new(J?.Err??q)(G.issues.map((H)=>T(H,W,M())));throw Bq(z,J?.callee),z}return G.value},p=pQ(g),rQ=(q)=>async(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!0}):{async:!0},G=Q._zod.run({value:Y,issues:[]},W);if(G instanceof Promise)G=await G;if(G.issues.length){let z=new(J?.Err??q)(G.issues.map((H)=>T(H,W,M())));throw Bq(z,J?.callee),z}return G.value},r=rQ(g),oQ=(q)=>(Q,Y,X)=>{let J=X?{...X,async:!1}:{async:!1},W=Q._zod.run({value:Y,issues:[]},J);if(W instanceof Promise)throw new A;return W.issues.length?{success:!1,error:new(q??yq)(W.issues.map((G)=>T(G,J,M())))}:{success:!0,data:W.value}},y=oQ(g),dQ=(q)=>async(Q,Y,X)=>{let J=X?Object.assign(X,{async:!0}):{async:!0},W=Q._zod.run({value:Y,issues:[]},J);if(W instanceof Promise)W=await W;return W.issues.length?{success:!1,error:new q(W.issues.map((G)=>T(G,J,M())))}:{success:!0,data:W.value}},c=dQ(g);var nQ="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",iQ=new RegExp(`^${nQ}$`);var cq=(q)=>{let Q=q?`[\\s\\S]{${q?.minimum??0},${q?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${Q}$`)};var uq={major:4,minor:3,patch:6};var f=I("$ZodType",(q,Q)=>{var Y;q??(q={}),q._zod.def=Q,q._zod.bag=q._zod.bag||{},q._zod.version=uq;let X=[...q._zod.def.checks??[]];if(q._zod.traits.has("$ZodCheck"))X.unshift(q);for(let J of X)for(let W of J._zod.onattach)W(q);if(X.length===0)(Y=q._zod).deferred??(Y.deferred=[]),q._zod.deferred?.push(()=>{q._zod.run=q._zod.parse});else{let J=(G,z,H)=>{let K=v(G),B;for(let L of z){if(L._zod.def.when){if(!L._zod.def.when(G))continue}else if(K)continue;let $=G.issues.length,U=L._zod.check(G);if(U instanceof Promise&&H?.async===!1)throw new A;if(B||U instanceof Promise)B=(B??Promise.resolve()).then(async()=>{if(await U,G.issues.length===$)return;if(!K)K=v(G,$)});else{if(G.issues.length===$)continue;if(!K)K=v(G,$)}}if(B)return B.then(()=>{return G});return G},W=(G,z,H)=>{if(v(G))return G.aborted=!0,G;let K=J(z,X,H);if(K instanceof Promise){if(H.async===!1)throw new A;return K.then((B)=>q._zod.parse(B,H))}return q._zod.parse(K,H)};q._zod.run=(G,z)=>{if(z.skipChecks)return q._zod.parse(G,z);if(z.direction==="backward"){let K=q._zod.parse({value:G.value,issues:[]},{...z,skipChecks:!0});if(K instanceof Promise)return K.then((B)=>{return W(B,G,z)});return W(K,G,z)}let H=q._zod.parse(G,z);if(H instanceof Promise){if(z.async===!1)throw new A;return H.then((K)=>J(K,X,z))}return J(H,X,z)}}C(q,"~standard",()=>({validate:(J)=>{try{let W=y(q,J);return W.success?{value:W.data}:{issues:W.error?.issues}}catch(W){return c(q,J).then((G)=>G.success?{value:G.data}:{issues:G.error?.issues})}},vendor:"zod",version:1}))}),lq=I("$ZodString",(q,Q)=>{f.init(q,Q),q._zod.pattern=[...q?._zod.bag?.patterns??[]].pop()??cq(q._zod.bag),q._zod.parse=(Y,X)=>{if(Q.coerce)try{Y.value=String(Y.value)}catch(J){}if(typeof Y.value==="string")return Y;return Y.issues.push({expected:"string",code:"invalid_type",input:Y.value,inst:q}),Y}});function mq(q,Q,Y){if(q.issues.length)Q.issues.push(...Uq(Y,q.issues));Q.value[Y]=q.value}var pq=I("$ZodArray",(q,Q)=>{f.init(q,Q),q._zod.parse=(Y,X)=>{let J=Y.value;if(!Array.isArray(J))return Y.issues.push({expected:"array",code:"invalid_type",input:J,inst:q}),Y;Y.value=Array(J.length);let W=[];for(let G=0;G<J.length;G++){let z=J[G],H=Q.element._zod.run({value:z,issues:[]},X);if(H instanceof Promise)W.push(H.then((K)=>mq(K,Y,G)));else mq(H,Y,G)}if(W.length)return Promise.all(W).then(()=>Y);return Y}});function o(q,Q,Y,X,J){if(q.issues.length){if(J&&!(Y in X))return;Q.issues.push(...Uq(Y,q.issues))}if(q.value===void 0){if(Y in X)Q.value[Y]=void 0}else Q.value[Y]=q.value}function sQ(q){let Q=Object.keys(q.shape);for(let X of Q)if(!q.shape?.[X]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${X}": expected a Zod schema`);let Y=hq(q.shape);return{...q,keys:Q,keySet:new Set(Q),numKeys:Q.length,optionalKeys:new Set(Y)}}function eQ(q,Q,Y,X,J,W){let G=[],z=J.keySet,H=J.catchall._zod,K=H.def.type,B=H.optout==="optional";for(let L in Q){if(z.has(L))continue;if(K==="never"){G.push(L);continue}let $=H.run({value:Q[L],issues:[]},X);if($ instanceof Promise)q.push($.then((U)=>o(U,Y,L,Q,B)));else o($,Y,L,Q,B)}if(G.length)Y.issues.push({code:"unrecognized_keys",keys:G,input:Q,inst:W});if(!q.length)return Y;return Promise.all(q).then(()=>{return Y})}var rq=I("$ZodObject",(q,Q)=>{if(f.init(q,Q),!Object.getOwnPropertyDescriptor(Q,"shape")?.get){let z=Q.shape;Object.defineProperty(Q,"shape",{get:()=>{let H={...z};return Object.defineProperty(Q,"shape",{value:H}),H}})}let X=Kq(()=>sQ(Q));C(q._zod,"propValues",()=>{let z=Q.shape,H={};for(let K in z){let B=z[K]._zod;if(B.values){H[K]??(H[K]=new Set);for(let L of B.values)H[K].add(L)}}return H});let J=vq,W=Q.catchall,G;q._zod.parse=(z,H)=>{G??(G=X.value);let K=z.value;if(!J(K))return z.issues.push({expected:"object",code:"invalid_type",input:K,inst:q}),z;z.value={};let B=[],L=G.shape;for(let $ of G.keys){let U=L[$],P=U._zod.optout==="optional",N=U._zod.run({value:K[$],issues:[]},H);if(N instanceof Promise)B.push(N.then((s)=>o(s,z,$,K,P)));else o(N,z,$,K,P)}if(!W)return B.length?Promise.all(B).then(()=>z):z;return eQ(B,K,z,H,X.value,q)}});function oq(q,Q){return new q({type:"string",...x(Q)})}var $q=I("ZodMiniType",(q,Q)=>{if(!q._zod)throw Error("Uninitialized schema in ZodMiniType.");f.init(q,Q),q.def=Q,q.type=Q.type,q.parse=(Y,X)=>p(q,Y,X,{callee:q.parse}),q.safeParse=(Y,X)=>y(q,Y,X),q.parseAsync=async(Y,X)=>r(q,Y,X,{callee:q.parseAsync}),q.safeParseAsync=async(Y,X)=>c(q,Y,X),q.check=(...Y)=>{return q.clone({...Q,checks:[...Q.checks??[],...Y.map((X)=>typeof X==="function"?{_zod:{check:X,def:{check:"custom"},onattach:[]}}:X)]},{parent:!0})},q.with=q.check,q.clone=(Y,X)=>Lq(q,Y,X),q.brand=()=>q,q.register=(Y,X)=>{return Y.add(q,X),q},q.apply=(Y)=>Y(q)}),QY=I("ZodMiniString",(q,Q)=>{lq.init(q,Q),$q.init(q,Q)});function j(q){return oq(QY,q)}var YY=I("ZodMiniArray",(q,Q)=>{pq.init(q,Q),$q.init(q,Q)});function Pq(q,Q){return new YY({type:"array",element:q,...x(Q)})}var XY=I("ZodMiniObject",(q,Q)=>{rq.init(q,Q),$q.init(q,Q),C(q,"shape",()=>Q.shape)});function _(q,Q){let Y={type:"object",shape:q??{},...x(Q)};return new XY(Y)}import{cp as dq,exists as Z,mkdir as JY,readFile as WY,rm as zY}from"fs/promises";import{join as O}from"path";import{spawn as GY}from"child_process";import{homedir as HY}from"os";import{resolve as LY}from"path";var d="course.json",KY=()=>process.env.PROGY_API_URL||"https://progy.francy.workers.dev",BY=_({id:j(),name:j(),runner:_({command:j(),args:Pq(j()),cwd:j()}),content:_({root:j(),exercises:j()}),setup:_({checks:Pq(_({name:j(),type:j(),command:j()})),guide:j()})});class n{static async resolveSource(q){if(q.startsWith("http://")||q.startsWith("https://")||q.startsWith("git@")){let Q=q.split("#"),Y=Q[0],X=Q[1];return{url:Y,branch:X}}if(await Z(q))return{url:LY(q)};console.log(`[INFO] Resolving alias '${q}'...`);try{let Q=`${KY()}/api/registry`,Y=await fetch(Q);if(!Y.ok)throw Error(`Failed to fetch registry (Status: ${Y.status})`);let J=(await Y.json()).courses[q];if(J)return{url:J.repo,branch:J.branch,path:J.path}}catch(Q){console.warn(`[WARN] Registry lookup failed: ${Q.message||Q}`)}throw Error(`Could not resolve course source for '${q}'`)}static async validateCourse(q){let Q=O(q,d);if(!await Z(Q))throw Error(`Missing ${d} in course directory.`);let Y=await WY(Q,"utf-8"),X;try{X=JSON.parse(Y)}catch(H){throw Error(`Invalid JSON in ${d}`)}let J=BY.safeParse(X);if(!J.success){let H=J.error.issues.map((K)=>`- ${K.path.join(".")}: ${K.message}`).join(`
88
88
  `);throw Error(`Invalid course configuration in ${d}:
89
- ${H}`)}let W=O(q,J.data.content.root);if(!await Z(W))throw Error(`Content root '${J.data.content.root}' not found.`);let G=O(q,J.data.content.exercises);if(!await Z(G))throw Error(`Exercises directory '${J.data.content.exercises}' not found.`);let z=O(q,J.data.setup.guide);if(!await Z(z))throw Error(`Setup guide '${J.data.setup.guide}' not found.`);return J.data}static async load(q,Q){let{url:Y,branch:X,path:J}=await this.resolveSource(q);if(console.log(`[INFO] Loading course from: ${Y} (branch: ${X||"default"}, path: ${J||"root"})`),await Z(Y)&&!Y.endsWith(".git")){await this.validateCourse(Y),await oq(Y,Q,{recursive:!0});return}let W=O(HY(),".progy","tmp",`course-${Date.now()}`);await JY(W,{recursive:!0});try{if(console.log("[GIT] Initializing repository..."),await u("git",["init"],W),await u("git",["remote","add","origin",Y],W),J)console.log(`[GIT] Configuring sparse-checkout for path: ${J}...`),await u("git",["config","core.sparseCheckout","true"],W),await u("git",["sparse-checkout","set",J],W);console.log("[GIT] Pulling content..."),await u("git",["pull","--depth=1","origin",X||"main"],W);let z=J?O(W,J):W;console.log("[VAL] Validating course..."),await this.validateCourse(z),console.log("[INST] Installing course..."),await oq(z,Q,{recursive:!0})}finally{await zY(W,{recursive:!0,force:!0})}}}function u(q,Q,Y){return new Promise((X,J)=>{GY(q,Q,{cwd:Y,stdio:"inherit"}).on("close",(G)=>{if(G===0)X();else J(Error(`${q} exited with code ${G}`))})})}var Pq=V($Y(),".progy"),PY=V(Pq,"config.json"),nq=process.env.PROGY_API_URL||"https://progy.francy.workers.dev",EY=process.env.PROGY_FRONTEND_URL||nq,i="course.json";async function VY(){let q=V(import.meta.dir,"../../../courses");if(await b(q))return q;return null}async function IY(q){if(!await b(Pq))await t(Pq,{recursive:!0});await F(PY,JSON.stringify({token:q}))}function jY(q){let Q=process.platform==="win32"?"start":process.platform==="darwin"?"open":"xdg-open";dq(Q,[q],{shell:!0}).unref()}S.name("progy").description("Universal programming course runner").version("0.0.1");S.command("init").description("Initialize a new course in the current directory").option("-c, --course <course>","Language/Course to initialize (e.g., rust)").action(async(q)=>{let Q=process.cwd(),Y=V(Q,i),X=await b(Y);if(!q.course)if(X)console.log(`[INFO] Detected '${i}'. Starting progy...`);else console.error(`[ERROR] No '${i}' found. Please specify a course to initialize:`),console.error(" progy init --course <rust|go|cloudflare...>"),process.exit(1);else{let H=q.course;console.log(`[INFO] Initializing ${H} course in ${Q}...`);let K=await VY(),B=!1;if(K){console.log(`[INFO] Checking local courses directory: ${K}`);let L=V(K,H);if(await b(L))try{console.log("[VAL] Validating local course..."),await n.validateCourse(L);let $=["content","runner","Cargo.toml","go.mod","SETUP.md",i];for(let U of $){let P=V(L,U),N=V(Q,U);if(await b(P))console.log(`[COPY] ${U}...`),await UY(P,N,{recursive:!0})}B=!0}catch($){console.warn(`[WARN] Local course validation failed: ${$}`)}}if(!B)try{await n.load(H,Q),B=!0}catch(L){console.error(`[ERROR] Failed to initialize course: ${L}`),process.exit(1)}console.log("[INFO] Initialization complete!")}console.log("[INFO] Starting UI...");let W=import.meta.file.endsWith(".ts")?"ts":"js",G=V(import.meta.dir,"backend",`server.${W}`);dq("bun",["run","--hot",G],{stdio:"inherit",env:{...process.env,PROG_CWD:Q}}).on("close",(H)=>process.exit(H??0))});S.command("create-course").description("Scaffold a new course with standard directory structure").requiredOption("--name <name>","Name of the course (e.g., rust-advanced)").requiredOption("-c, --course <course>","Programming language template (rust, go)").action(async(q)=>{let Q=process.cwd(),Y=q.name,X=q.course.toLowerCase(),J=V(Q,Y);if(await b(J))console.error(`[ERROR] Directory '${Y}' already exists.`),process.exit(1);let W=zq[X];if(!W)console.error(`[ERROR] Unsupported language '${X}'. Supported: ${Object.keys(zq).join(", ")}`),process.exit(1);console.log(`[INFO] Creating course '${Y}' with template '${X}'...`),await t(J,{recursive:!0}),await t(V(J,"content","01_intro"),{recursive:!0});let G=JSON.stringify(W.courseJson,null,2).replace(/{{id}}/g,Y).replace(/{{name}}/g,Y);if(await F(V(J,"course.json"),G),await F(V(J,"SETUP.md"),W.setupMd),await F(V(J,"content","01_intro","README.md"),W.introReadme),await F(V(J,"content","01_intro",W.introFilename),W.introCode),X==="go"){let z=V(J,"runner");await t(z,{recursive:!0});let H=`package main
89
+ ${H}`)}let W=O(q,J.data.content.root);if(!await Z(W))throw Error(`Content root '${J.data.content.root}' not found.`);let G=O(q,J.data.content.exercises);if(!await Z(G))throw Error(`Exercises directory '${J.data.content.exercises}' not found.`);let z=O(q,J.data.setup.guide);if(!await Z(z))throw Error(`Setup guide '${J.data.setup.guide}' not found.`);return J.data}static async load(q,Q){let{url:Y,branch:X,path:J}=await this.resolveSource(q);if(console.log(`[INFO] Loading course from: ${Y} (branch: ${X||"default"}, path: ${J||"root"})`),await Z(Y)&&!Y.endsWith(".git")){await this.validateCourse(Y),await dq(Y,Q,{recursive:!0});return}let W=O(HY(),".progy","tmp",`course-${Date.now()}`);await JY(W,{recursive:!0});try{if(console.log("[GIT] Initializing repository..."),await u("git",["init"],W),await u("git",["remote","add","origin",Y],W),J)console.log(`[GIT] Configuring sparse-checkout for path: ${J}...`),await u("git",["config","core.sparseCheckout","true"],W),await u("git",["sparse-checkout","set",J],W);console.log("[GIT] Pulling content..."),await u("git",["pull","--depth=1","origin",X||"main"],W);let z=J?O(W,J):W;console.log("[VAL] Validating course..."),await this.validateCourse(z),console.log("[INST] Installing course..."),await dq(z,Q,{recursive:!0})}finally{await zY(W,{recursive:!0,force:!0})}}}function u(q,Q,Y){return new Promise((X,J)=>{GY(q,Q,{cwd:Y,stdio:"inherit"}).on("close",(G)=>{if(G===0)X();else J(Error(`${q} exited with code ${G}`))})})}var Eq=V($Y(),".progy"),PY=V(Eq,"config.json"),iq=process.env.PROGY_API_URL||"https://progy.francy.workers.dev",EY=process.env.PROGY_FRONTEND_URL||iq,i="course.json";async function VY(){let q=V(import.meta.dir,"../../../courses");if(await b(q))return q;return null}async function IY(q){if(!await b(Eq))await t(Eq,{recursive:!0});await F(PY,JSON.stringify({token:q}))}function jY(q){let Q=process.platform==="win32"?"start":process.platform==="darwin"?"open":"xdg-open";nq(Q,[q],{shell:!0}).unref()}S.name("progy").description("Universal programming course runner").version("0.0.1");S.command("init").description("Initialize a new course in the current directory").option("-c, --course <course>","Language/Course to initialize (e.g., rust)").action(async(q)=>{let Q=process.cwd(),Y=V(Q,i),X=await b(Y);if(!q.course)if(X)console.log(`[INFO] Detected '${i}'. Starting progy...`);else console.error(`[ERROR] No '${i}' found. Please specify a course to initialize:`),console.error(" progy init --course <rust|go|cloudflare...>"),process.exit(1);else{let K=q.course;console.log(`[INFO] Initializing ${K} course in ${Q}...`);let B=await VY(),L=!1;if(B){console.log(`[INFO] Checking local courses directory: ${B}`);let $=V(B,K);if(await b($))try{console.log("[VAL] Validating local course..."),await n.validateCourse($);let U=["content","runner","Cargo.toml","go.mod","SETUP.md",i];for(let P of U){let N=V($,P),s=V(Q,P);if(await b(N))console.log(`[COPY] ${P}...`),await UY(N,s,{recursive:!0})}L=!0}catch(U){console.warn(`[WARN] Local course validation failed: ${U}`)}}if(!L)try{await n.load(K,Q),L=!0}catch($){console.error(`[ERROR] Failed to initialize course: ${$}`),process.exit(1)}console.log("[INFO] Initialization complete!")}console.log("[INFO] Starting UI...");let W=import.meta.file.endsWith(".ts")?"ts":"js",z=["run",V(import.meta.dir,"backend",`server.${W}`)];if(process.env.ENABLE_HMR==="true")z.splice(1,0,"--hot");nq("bun",z,{stdio:"inherit",env:{...process.env,PROG_CWD:Q}}).on("close",(K)=>process.exit(K??0))});S.command("create-course").description("Scaffold a new course with standard directory structure").requiredOption("--name <name>","Name of the course (e.g., rust-advanced)").requiredOption("-c, --course <course>","Programming language template (rust, go)").action(async(q)=>{let Q=process.cwd(),Y=q.name,X=q.course.toLowerCase(),J=V(Q,Y);if(await b(J))console.error(`[ERROR] Directory '${Y}' already exists.`),process.exit(1);let W=Gq[X];if(!W)console.error(`[ERROR] Unsupported language '${X}'. Supported: ${Object.keys(Gq).join(", ")}`),process.exit(1);console.log(`[INFO] Creating course '${Y}' with template '${X}'...`),await t(J,{recursive:!0}),await t(V(J,"content","01_intro"),{recursive:!0});let G=JSON.stringify(W.courseJson,null,2).replace(/{{id}}/g,Y).replace(/{{name}}/g,Y);if(await F(V(J,"course.json"),G),await F(V(J,"SETUP.md"),W.setupMd),await F(V(J,"content","01_intro","README.md"),W.introReadme),await F(V(J,"content","01_intro",W.introFilename),W.introCode),X==="go"){let z=V(J,"runner");await t(z,{recursive:!0});let H=`package main
90
90
  import (
91
91
  "bufio"
92
92
  "encoding/json"
@@ -133,6 +133,6 @@ go 1.21
133
133
  `)}console.log("[SUCCESS] Course created!"),console.log(`
134
134
  To get started:
135
135
  cd ${Y}
136
- bunx progy init`)});S.command("login").description("Authenticate with Progy").action(async()=>{let{createAuthClient:q}=await import("better-auth/client"),{deviceAuthorizationClient:Q}=await import("better-auth/client/plugins"),Y=q({baseURL:nq,plugins:[Q()]});try{console.log("[INFO] Requesting login session...");let{data:X,error:J}=await Y.device.code({client_id:"progy-cli"});if(J)throw Error(J.error_description||"Failed to initiate device authorization");let{device_code:W,user_code:G,verification_uri:z,interval:H}=X,K=z.startsWith("http")?z:`${EY}${z}`;console.log(`
136
+ bunx progy init`)});S.command("login").description("Authenticate with Progy").action(async()=>{let{createAuthClient:q}=await import("better-auth/client"),{deviceAuthorizationClient:Q}=await import("better-auth/client/plugins"),Y=q({baseURL:iq,plugins:[Q()]});try{console.log("[INFO] Requesting login session...");let{data:X,error:J}=await Y.device.code({client_id:"progy-cli"});if(J)throw Error(J.error_description||"Failed to initiate device authorization");let{device_code:W,user_code:G,verification_uri:z,interval:H}=X,K=z.startsWith("http")?z:`${EY}${z}`;console.log(`
137
137
  Please authenticate in your browser:`),console.log(`\x1B[36m${K}\x1B[0m`),console.log(`Code: \x1B[33m${G}\x1B[0m
138
138
  `),jY(K),console.log("[WAIT] Waiting for authorization...");let L=await(async()=>{while(!0){let{data:$,error:U}=await Y.device.token({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:W,client_id:"progy-cli"});if($?.access_token)return $.access_token;if(U){let P=U.error;if(P==="access_denied"||P==="expired_token")throw Error(U.error_description||P)}await new Promise((P)=>setTimeout(P,(H||5)*1000))}})();if(L)await IY(L),console.log("[SUCCESS] Logged in successfully!")}catch(X){console.error(`[ERROR] Login failed: ${X.message||X}`),process.exit(1)}});S.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "progy",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "The interactive CLI and learning platform for Progy courses.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -30,6 +30,7 @@
30
30
  },
31
31
  "scripts": {
32
32
  "dev": "bun run --hot src/backend/server.ts",
33
+ "start": "bun run src/backend/server.ts",
33
34
  "build": "bun run scripts/build.ts",
34
35
  "prepublishOnly": "bun run build"
35
36
  },