progy 0.13.6 → 0.13.7

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 +28 -26
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var Pq=Object.create;var{getPrototypeOf:Oq,defineProperty:y0,getOwnPropertyNames:bq}=Object;var xq=Object.prototype.hasOwnProperty;var B0=(q,Q,Y)=>{Y=q!=null?Pq(Oq(q)):{};let X=Q||!q||!q.__esModule?y0(Y,"default",{value:q,enumerable:!0}):Y;for(let J of bq(q))if(!xq.call(X,J))y0(X,J,{get:()=>q[J],enumerable:!0});return X};var b=(q,Q)=>()=>(Q||q((Q={exports:{}}).exports,Q),Q.exports);var y6=(q,Q)=>{for(var Y in Q)y0(q,Y,{get:Q[Y],enumerable:!0,configurable:!0,set:(X)=>Q[Y]=()=>X})};var u6=(q,Q)=>()=>(q&&(Q=q(q=0)),Q);var m=import.meta.require;var L0=b((Cq)=>{class u0 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 L1 extends u0{constructor(q){super(1,"commander.invalidArgument",q);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}Cq.CommanderError=u0;Cq.InvalidArgumentError=L1});var Z0=b((gq)=>{var{InvalidArgumentError:vq}=L0();class I1{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 vq(`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 hq(q){let Q=q.name()+(q.variadic===!0?"...":"");return q.required?"<"+Q+">":"["+Q+"]"}gq.Argument=I1;gq.humanReadableArgName=hq});var f0=b((mq)=>{var{humanReadableArgName:fq}=Z0();class A1{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)=>fq(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 K(V,L){if(L){let H=`${V.padEnd(Y+2)}${L}`;return Q.wrap(H,X-2,Y+2)}return V}function $(V){return V.join(`
4
- `).replace(/^/gm," ".repeat(2))}let B=[`Usage: ${Q.commandUsage(q)}`,""],I=Q.commandDescription(q);if(I.length>0)B=B.concat([Q.wrap(I,X,0),""]);let U=Q.visibleArguments(q).map((V)=>{return K(Q.argumentTerm(V),Q.argumentDescription(V))});if(U.length>0)B=B.concat(["Arguments:",$(U),""]);let E=Q.visibleOptions(q).map((V)=>{return K(Q.optionTerm(V),Q.optionDescription(V))});if(E.length>0)B=B.concat(["Options:",$(E),""]);if(this.showGlobalOptions){let V=Q.visibleGlobalOptions(q).map((L)=>{return K(Q.optionTerm(L),Q.optionDescription(L))});if(V.length>0)B=B.concat(["Global Options:",$(V),""])}let S=Q.visibleCommands(q).map((V)=>{return K(Q.subcommandTerm(V),Q.subcommandDescription(V))});if(S.length>0)B=B.concat(["Commands:",$(S),""]);return B.join(`
3
+ var Oq=Object.create;var{getPrototypeOf:bq,defineProperty:y0,getOwnPropertyNames:xq}=Object;var Cq=Object.prototype.hasOwnProperty;var B0=(q,Q,Y)=>{Y=q!=null?Oq(bq(q)):{};let X=Q||!q||!q.__esModule?y0(Y,"default",{value:q,enumerable:!0}):Y;for(let J of xq(q))if(!Cq.call(X,J))y0(X,J,{get:()=>q[J],enumerable:!0});return X};var b=(q,Q)=>()=>(Q||q((Q={exports:{}}).exports,Q),Q.exports);var g6=(q,Q)=>{for(var Y in Q)y0(q,Y,{get:Q[Y],enumerable:!0,configurable:!0,set:(X)=>Q[Y]=()=>X})};var y6=(q,Q)=>()=>(q&&(Q=q(q=0)),Q);var m=import.meta.require;var L0=b((_q)=>{class u0 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 I1 extends u0{constructor(q){super(1,"commander.invalidArgument",q);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}_q.CommanderError=u0;_q.InvalidArgumentError=I1});var Z0=b((yq)=>{var{InvalidArgumentError:hq}=L0();class H1{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 hq(`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 gq(q){let Q=q.name()+(q.variadic===!0?"...":"");return q.required?"<"+Q+">":"["+Q+"]"}yq.Argument=H1;yq.humanReadableArgName=gq});var f0=b((cq)=>{var{humanReadableArgName:mq}=Z0();class A1{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)=>mq(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 K(V,I){if(I){let R=`${V.padEnd(Y+2)}${I}`;return Q.wrap(R,X-2,Y+2)}return V}function $(V){return V.join(`
4
+ `).replace(/^/gm," ".repeat(2))}let B=[`Usage: ${Q.commandUsage(q)}`,""],L=Q.commandDescription(q);if(L.length>0)B=B.concat([Q.wrap(L,X,0),""]);let U=Q.visibleArguments(q).map((V)=>{return K(Q.argumentTerm(V),Q.argumentDescription(V))});if(U.length>0)B=B.concat(["Arguments:",$(U),""]);let N=Q.visibleOptions(q).map((V)=>{return K(Q.optionTerm(V),Q.optionDescription(V))});if(N.length>0)B=B.concat(["Options:",$(N),""]);if(this.showGlobalOptions){let V=Q.visibleGlobalOptions(q).map((I)=>{return K(Q.optionTerm(I),Q.optionDescription(I))});if(V.length>0)B=B.concat(["Global Options:",$(V),""])}let w=Q.visibleCommands(q).map((V)=>{return K(Q.subcommandTerm(V),Q.subcommandDescription(V))});if(w.length>0)B=B.concat(["Commands:",$(w),""]);return B.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 K=Q-Y;if(K<X)return q;let $=q.slice(0,Y),B=q.slice(Y).replace(`\r
6
6
  `,`
7
- `),I=" ".repeat(Y),E=`\\s${"\u200B"}`,S=new RegExp(`
8
- |.{1,${K-1}}([${E}]|$)|[^${E}]+?([${E}]|$)`,"g"),V=B.match(S)||[];return $+V.map((L,H)=>{if(L===`
9
- `)return"";return(H>0?I:"")+L.trimEnd()}).join(`
10
- `)}}mq.Help=A1});var m0=b((oq)=>{var{InvalidArgumentError:pq}=L0();class R1{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=dq(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 pq(`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 lq(this.name().replace(/^no-/,""))}is(q){return this.short===q||this.long===q}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class H1{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 lq(q){return q.split("-").reduce((Q,Y)=>{return Q+Y[0].toUpperCase()+Y.slice(1)})}function dq(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}}oq.Option=R1;oq.DualOptions=H1});var z1=b((tq)=>{function nq(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 sq(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((K)=>K.slice(2));let X=[],J=3,W=0.4;if(Q.forEach((K)=>{if(K.length<=1)return;let $=nq(q,K),B=Math.max(q.length,K.length);if((B-$)/B>W){if($<J)J=$,X=[K];else if($===J)X.push(K)}}),X.sort((K,$)=>K.localeCompare($)),Y)X=X.map((K)=>`--${K}`);if(X.length>1)return`
7
+ `),L=" ".repeat(Y),N=`\\s${"\u200B"}`,w=new RegExp(`
8
+ |.{1,${K-1}}([${N}]|$)|[^${N}]+?([${N}]|$)`,"g"),V=B.match(w)||[];return $+V.map((I,R)=>{if(I===`
9
+ `)return"";return(R>0?L:"")+I.trimEnd()}).join(`
10
+ `)}}cq.Help=A1});var m0=b((rq)=>{var{InvalidArgumentError:lq}=L0();class R1{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=oq(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 dq(this.name().replace(/^no-/,""))}is(q){return this.short===q||this.long===q}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class z1{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 dq(q){return q.split("-").reduce((Q,Y)=>{return Q+Y[0].toUpperCase()+Y.slice(1)})}function oq(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}}rq.Option=R1;rq.DualOptions=z1});var j1=b((aq)=>{function sq(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 tq(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((K)=>K.slice(2));let X=[],J=3,W=0.4;if(Q.forEach((K)=>{if(K.length<=1)return;let $=sq(q,K),B=Math.max(q.length,K.length);if((B-$)/B>W){if($<J)J=$,X=[K];else if($===J)X.push(K)}}),X.sort((K,$)=>K.localeCompare($)),Y)X=X.map((K)=>`--${K}`);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""}tq.suggestSimilar=sq});var E1=b((J9)=>{var eq=m("events").EventEmitter,c0=m("child_process"),i=m("path"),p0=m("fs"),_=m("process"),{Argument:q9,humanReadableArgName:Q9}=Z0(),{CommanderError:l0}=L0(),{Help:Y9}=f0(),{Option:j1,DualOptions:X9}=m0(),{suggestSimilar:U1}=z1();class d0 extends eq{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)=>_.stdout.write(Q),writeErr:(Q)=>_.stderr.write(Q),getOutHelpWidth:()=>_.stdout.isTTY?_.stdout.columns:void 0,getErrHelpWidth:()=>_.stderr.isTTY?_.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,K]=q.match(/([^ ]+) *(.*)/),$=this.createCommand(W);if(X)$.description(X),$._executableHandler=!0;if(J.isDefault)this._defaultCommandName=$._name;if($._hidden=!!(J.noHelp||J.hidden),$._executableFile=J.executableFile||null,K)$.arguments(K);if(this._registerCommand($),$.parent=this,$.copyInheritedSettings(this),X)return this;return $}createCommand(q){return new d0(q)}createHelp(){return Object.assign(new Y9,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
- - 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 q9(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 l0(q,Q,Y));_.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 j1(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,K)=>{if(J==null&&q.presetArg!==void 0)J=q.presetArg;let $=this.getOptionValue(Y);if(J!==null&&q.parseArg)J=this._callParseArg(q,J,$,W);else if(J!==null&&q.variadic)J=q._concatValue(J,$);if(J==null)if(q.negate)J=!1;else if(q.isBoolean()||q.optional)J=!0;else J="";this.setOptionValueWithSource(Y,J,K)};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 j1)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 K=X;X=($,B)=>{let I=K.exec($);return I?I[0]:B},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(_.versions?.electron)Q.from="electron";let X=_.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))Q.from="eval"}if(q===void 0)q=_.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(_.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(I,U){let E=i.resolve(I,U);if(p0.existsSync(E))return E;if(X.includes(i.extname(U)))return;let S=X.find((V)=>p0.existsSync(`${E}${V}`));if(S)return`${E}${S}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let W=q._executableFile||`${this._name}-${q._name}`,K=this._executableDir||"";if(this._scriptPath){let I;try{I=p0.realpathSync(this._scriptPath)}catch(U){I=this._scriptPath}K=i.resolve(i.dirname(I),K)}if(K){let I=J(K,W);if(!I&&!q._executableFile&&this._scriptPath){let U=i.basename(this._scriptPath,i.extname(this._scriptPath));if(U!==this._name)I=J(K,`${U}-${q._name}`)}W=I||W}Y=X.includes(i.extname(W));let $;if(_.platform!=="win32")if(Y)Q.unshift(W),Q=N1(_.execArgv).concat(Q),$=c0.spawn(_.argv[0],Q,{stdio:"inherit"});else $=c0.spawn(W,Q,{stdio:"inherit"});else Q.unshift(W),Q=N1(_.execArgv).concat(Q),$=c0.spawn(_.execPath,Q,{stdio:"inherit"});if(!$.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((U)=>{_.on(U,()=>{if($.killed===!1&&$.exitCode===null)$.kill(U)})});let B=this._exitCallback;$.on("close",(I)=>{if(I=I??1,!B)_.exit(I);else B(new l0(I,"commander.executeSubCommandAsync","(close)"))}),$.on("error",(I)=>{if(I.code==="ENOENT"){let U=K?`searched for local subcommand relative to directory '${K}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",E=`'${W}' does not exist
12
+ (Did you mean ${X[0]}?)`;return""}aq.suggestSimilar=tq});var M1=b((W9)=>{var q9=m("events").EventEmitter,c0=m("child_process"),i=m("path"),p0=m("fs"),_=m("process"),{Argument:Q9,humanReadableArgName:Y9}=Z0(),{CommanderError:l0}=L0(),{Help:X9}=f0(),{Option:U1,DualOptions:J9}=m0(),{suggestSimilar:E1}=j1();class d0 extends q9{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)=>_.stdout.write(Q),writeErr:(Q)=>_.stderr.write(Q),getOutHelpWidth:()=>_.stdout.isTTY?_.stdout.columns:void 0,getErrHelpWidth:()=>_.stderr.isTTY?_.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,K]=q.match(/([^ ]+) *(.*)/),$=this.createCommand(W);if(X)$.description(X),$._executableHandler=!0;if(J.isDefault)this._defaultCommandName=$._name;if($._hidden=!!(J.noHelp||J.hidden),$._executableFile=J.executableFile||null,K)$.arguments(K);if(this._registerCommand($),$.parent=this,$.copyInheritedSettings(this),X)return this;return $}createCommand(q){return new d0(q)}createHelp(){return Object.assign(new X9,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
+ - 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 Q9(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 l0(q,Q,Y));_.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 U1(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,K)=>{if(J==null&&q.presetArg!==void 0)J=q.presetArg;let $=this.getOptionValue(Y);if(J!==null&&q.parseArg)J=this._callParseArg(q,J,$,W);else if(J!==null&&q.variadic)J=q._concatValue(J,$);if(J==null)if(q.negate)J=!1;else if(q.isBoolean()||q.optional)J=!0;else J="";this.setOptionValueWithSource(Y,J,K)};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 U1)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 K=X;X=($,B)=>{let L=K.exec($);return L?L[0]:B},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(_.versions?.electron)Q.from="electron";let X=_.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))Q.from="eval"}if(q===void 0)q=_.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(_.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(L,U){let N=i.resolve(L,U);if(p0.existsSync(N))return N;if(X.includes(i.extname(U)))return;let w=X.find((V)=>p0.existsSync(`${N}${V}`));if(w)return`${N}${w}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let W=q._executableFile||`${this._name}-${q._name}`,K=this._executableDir||"";if(this._scriptPath){let L;try{L=p0.realpathSync(this._scriptPath)}catch(U){L=this._scriptPath}K=i.resolve(i.dirname(L),K)}if(K){let L=J(K,W);if(!L&&!q._executableFile&&this._scriptPath){let U=i.basename(this._scriptPath,i.extname(this._scriptPath));if(U!==this._name)L=J(K,`${U}-${q._name}`)}W=L||W}Y=X.includes(i.extname(W));let $;if(_.platform!=="win32")if(Y)Q.unshift(W),Q=N1(_.execArgv).concat(Q),$=c0.spawn(_.argv[0],Q,{stdio:"inherit"});else $=c0.spawn(W,Q,{stdio:"inherit"});else Q.unshift(W),Q=N1(_.execArgv).concat(Q),$=c0.spawn(_.execPath,Q,{stdio:"inherit"});if(!$.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((U)=>{_.on(U,()=>{if($.killed===!1&&$.exitCode===null)$.kill(U)})});let B=this._exitCallback;$.on("close",(L)=>{if(L=L??1,!B)_.exit(L);else B(new l0(L,"commander.executeSubCommandAsync","(close)"))}),$.on("error",(L)=>{if(L.code==="ENOENT"){let U=K?`searched for local subcommand relative to directory '${K}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",N=`'${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
- - ${U}`;throw Error(E)}else if(I.code==="EACCES")throw Error(`'${W}' not executable`);if(!B)_.exit(1);else{let U=new l0(1,"commander.executeSubCommandAsync","(error)");U.nestedError=I,B(U)}}),this.runningCommand=$}_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 K=`error: command-argument value '${X}' is invalid for argument '${Y.name()}'.`;W=this._callParseArg(Y,X,J,K)}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,K)=>{return q(Y,K,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($){return $.length>1&&$[0]==="-"}let K=null;while(J.length){let $=J.shift();if($==="--"){if(X===Y)X.push($);X.push(...J);break}if(K&&!W($)){this.emit(`option:${K.name()}`,$);continue}if(K=null,W($)){let B=this._findOption($);if(B){if(B.required){let I=J.shift();if(I===void 0)this.optionMissingArgument(B);this.emit(`option:${B.name()}`,I)}else if(B.optional){let I=null;if(J.length>0&&!W(J[0]))I=J.shift();this.emit(`option:${B.name()}`,I)}else this.emit(`option:${B.name()}`);K=B.variadic?B:null;continue}}if($.length>2&&$[0]==="-"&&$[1]!=="-"){let B=this._findOption(`-${$[1]}`);if(B){if(B.required||B.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${B.name()}`,$.slice(2));else this.emit(`option:${B.name()}`),J.unshift(`-${$.slice(2)}`);continue}}if(/^--[^=]+=/.test($)){let B=$.indexOf("="),I=this._findOption($.slice(0,B));if(I&&(I.required||I.optional)){this.emit(`option:${I.name()}`,$.slice(B+1));continue}}if(W($))X=Y;if((this._enablePositionalOptions||this._passThroughOptions)&&Q.length===0&&Y.length===0){if(this._findCommand($)){if(Q.push($),J.length>0)Y.push(...J);break}else if(this._getHelpCommand()&&$===this._getHelpCommand().name()){if(Q.push($),J.length>0)Q.push(...J);break}else if(this._defaultCommandName){if(Y.push($),J.length>0)Y.push(...J);break}}if(this._passThroughOptions){if(X.push($),J.length>0)X.push(...J);break}X.push($)}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
+ - ${U}`;throw Error(N)}else if(L.code==="EACCES")throw Error(`'${W}' not executable`);if(!B)_.exit(1);else{let U=new l0(1,"commander.executeSubCommandAsync","(error)");U.nestedError=L,B(U)}}),this.runningCommand=$}_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 K=`error: command-argument value '${X}' is invalid for argument '${Y.name()}'.`;W=this._callParseArg(Y,X,J,K)}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,K)=>{return q(Y,K,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($){return $.length>1&&$[0]==="-"}let K=null;while(J.length){let $=J.shift();if($==="--"){if(X===Y)X.push($);X.push(...J);break}if(K&&!W($)){this.emit(`option:${K.name()}`,$);continue}if(K=null,W($)){let B=this._findOption($);if(B){if(B.required){let L=J.shift();if(L===void 0)this.optionMissingArgument(B);this.emit(`option:${B.name()}`,L)}else if(B.optional){let L=null;if(J.length>0&&!W(J[0]))L=J.shift();this.emit(`option:${B.name()}`,L)}else this.emit(`option:${B.name()}`);K=B.variadic?B:null;continue}}if($.length>2&&$[0]==="-"&&$[1]!=="-"){let B=this._findOption(`-${$[1]}`);if(B){if(B.required||B.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${B.name()}`,$.slice(2));else this.emit(`option:${B.name()}`),J.unshift(`-${$.slice(2)}`);continue}}if(/^--[^=]+=/.test($)){let B=$.indexOf("="),L=this._findOption($.slice(0,B));if(L&&(L.required||L.optional)){this.emit(`option:${L.name()}`,$.slice(B+1));continue}}if(W($))X=Y;if((this._enablePositionalOptions||this._passThroughOptions)&&Q.length===0&&Y.length===0){if(this._findCommand($)){if(Q.push($),J.length>0)Y.push(...J);break}else if(this._getHelpCommand()&&$===this._getHelpCommand().name()){if(Q.push($),J.length>0)Q.push(...J);break}else if(this._defaultCommandName){if(Y.push($),J.length>0)Y.push(...J);break}}if(this._passThroughOptions){if(X.push($),J.length>0)X.push(...J);break}X.push($)}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 _.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()}`,_.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new X9(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 K=W.attributeName(),$=this.getOptionValue(K),B=this.options.find((U)=>U.negate&&K===U.attributeName()),I=this.options.find((U)=>!U.negate&&K===U.attributeName());if(B&&(B.presetArg===void 0&&$===!1||B.presetArg!==void 0&&$===B.presetArg))return B;return I||W},X=(W)=>{let K=Y(W),$=K.attributeName();if(this.getOptionValueSource($)==="env")return`environment variable '${K.envVar}'`;return`option '${K.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((K)=>K.long).map((K)=>K.long);X=X.concat(W),J=J.parent}while(J&&!J._enablePositionalOptions);Q=U1(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=U1(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
- `),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 Q9(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=i.basename(q,i.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=_.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.
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 _.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()}`,_.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new J9(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 K=W.attributeName(),$=this.getOptionValue(K),B=this.options.find((U)=>U.negate&&K===U.attributeName()),L=this.options.find((U)=>!U.negate&&K===U.attributeName());if(B&&(B.presetArg===void 0&&$===!1||B.presetArg!==void 0&&$===B.presetArg))return B;return L||W},X=(W)=>{let K=Y(W),$=K.attributeName();if(this.getOptionValueSource($)==="env")return`environment variable '${K.envVar}'`;return`option '${K.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((K)=>K.long).map((K)=>K.long);X=X.concat(W),J=J.parent}while(J&&!J._enablePositionalOptions);Q=E1(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=E1(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
+ `),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 Y9(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=i.basename(q,i.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=_.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 N1(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})}J9.Command=d0});var S1=b(($9)=>{var{Argument:M1}=Z0(),{Command:o0}=E1(),{CommanderError:G9,InvalidArgumentError:T1}=L0(),{Help:K9}=f0(),{Option:D1}=m0();$9.program=new o0;$9.createCommand=(q)=>new o0(q);$9.createOption=(q,Q)=>new D1(q,Q);$9.createArgument=(q,Q)=>new M1(q,Q);$9.Command=o0;$9.Option=D1;$9.Argument=M1;$9.Help=K9;$9.CommanderError=G9;$9.InvalidArgumentError=T1;$9.InvalidOptionArgumentError=T1});var q1=b((OX,p1)=>{p1.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var C0=b((d1)=>{var l1={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function l9(q){return function(...Q){if(Q.length)q=q.replace(/\{(\d)\}/g,(Y,X)=>Q[X]||"");return Error("ADM-ZIP: "+q)}}for(let q of Object.keys(l1))d1[q]=l9(l1[q])});var s1=b((xX,n1)=>{var d9=m("fs"),g=m("path"),o1=q1(),o9=C0(),r9=typeof process==="object"&&process.platform==="win32",r1=(q)=>typeof q==="object"&&q!==null,i1=new Uint32Array(256).map((q,Q)=>{for(let Y=0;Y<8;Y++)if((Q&1)!==0)Q=3988292384^Q>>>1;else Q>>>=1;return Q>>>0});function k(q){if(this.sep=g.sep,this.fs=d9,r1(q)){if(r1(q.fs)&&typeof q.fs.statSync==="function")this.fs=q.fs}}n1.exports=k;k.prototype.makeDir=function(q){let Q=this;function Y(X){let J=X.split(Q.sep)[0];X.split(Q.sep).forEach(function(W){if(!W||W.substr(-1,1)===":")return;J+=Q.sep+W;var K;try{K=Q.fs.statSync(J)}catch($){Q.fs.mkdirSync(J)}if(K&&K.isFile())throw o9.FILE_IN_THE_WAY(`"${J}"`)})}Y(q)};k.prototype.writeFileTo=function(q,Q,Y,X){let J=this;if(J.fs.existsSync(q)){if(!Y)return!1;var W=J.fs.statSync(q);if(W.isDirectory())return!1}var K=g.dirname(q);if(!J.fs.existsSync(K))J.makeDir(K);var $;try{$=J.fs.openSync(q,"w",438)}catch(B){J.fs.chmodSync(q,438),$=J.fs.openSync(q,"w",438)}if($)try{J.fs.writeSync($,Q,0,Q.length,0)}finally{J.fs.closeSync($)}return J.fs.chmodSync(q,X||438),!0};k.prototype.writeFileToAsync=function(q,Q,Y,X,J){if(typeof X==="function")J=X,X=void 0;let W=this;W.fs.exists(q,function(K){if(K&&!Y)return J(!1);W.fs.stat(q,function($,B){if(K&&B.isDirectory())return J(!1);var I=g.dirname(q);W.fs.exists(I,function(U){if(!U)W.makeDir(I);W.fs.open(q,"w",438,function(E,S){if(E)W.fs.chmod(q,438,function(){W.fs.open(q,"w",438,function(V,L){W.fs.write(L,Q,0,Q.length,0,function(){W.fs.close(L,function(){W.fs.chmod(q,X||438,function(){J(!0)})})})})});else if(S)W.fs.write(S,Q,0,Q.length,0,function(){W.fs.close(S,function(){W.fs.chmod(q,X||438,function(){J(!0)})})});else W.fs.chmod(q,X||438,function(){J(!0)})})})})})};k.prototype.findFiles=function(q){let Q=this;function Y(X,J,W){if(typeof J==="boolean")W=J,J=void 0;let K=[];return Q.fs.readdirSync(X).forEach(function($){let B=g.join(X,$),I=Q.fs.statSync(B);if(!J||J.test(B))K.push(g.normalize(B)+(I.isDirectory()?Q.sep:""));if(I.isDirectory()&&W)K=K.concat(Y(B,J,W))}),K}return Y(q,void 0,!0)};k.prototype.findFilesAsync=function(q,Q){let Y=this,X=[];Y.fs.readdir(q,function(J,W){if(J)return Q(J);let K=W.length;if(!K)return Q(null,X);W.forEach(function($){$=g.join(q,$),Y.fs.stat($,function(B,I){if(B)return Q(B);if(I){if(X.push(g.normalize($)+(I.isDirectory()?Y.sep:"")),I.isDirectory())Y.findFilesAsync($,function(U,E){if(U)return Q(U);if(X=X.concat(E),!--K)Q(null,X)});else if(!--K)Q(null,X)}})})})};k.prototype.getAttributes=function(){};k.prototype.setAttributes=function(){};k.crc32update=function(q,Q){return i1[(q^Q)&255]^q>>>8};k.crc32=function(q){if(typeof q==="string")q=Buffer.from(q,"utf8");let Q=q.length,Y=-1;for(let X=0;X<Q;)Y=k.crc32update(Y,q[X++]);return~Y>>>0};k.methodToString=function(q){switch(q){case o1.STORED:return"STORED ("+q+")";case o1.DEFLATED:return"DEFLATED ("+q+")";default:return"UNSUPPORTED ("+q+")"}};k.canonical=function(q){if(!q)return"";let Q=g.posix.normalize("/"+q.split("\\").join("/"));return g.join(".",Q)};k.zipnamefix=function(q){if(!q)return"";let Q=g.posix.normalize("/"+q.split("\\").join("/"));return g.posix.join(".",Q)};k.findLast=function(q,Q){if(!Array.isArray(q))throw TypeError("arr is not array");let Y=q.length>>>0;for(let X=Y-1;X>=0;X--)if(Q(q[X],X,q))return q[X];return};k.sanitize=function(q,Q){q=g.resolve(g.normalize(q));var Y=Q.split("/");for(var X=0,J=Y.length;X<J;X++){var W=g.normalize(g.join(q,Y.slice(X,J).join(g.sep)));if(W.indexOf(q)===0)return W}return g.normalize(g.join(q,g.basename(Q)))};k.toBuffer=function(Q,Y){if(Buffer.isBuffer(Q))return Q;else if(Q instanceof Uint8Array)return Buffer.from(Q);else return typeof Q==="string"?Y(Q):Buffer.alloc(0)};k.readBigUInt64LE=function(q,Q){var Y=Buffer.from(q.slice(Q,Q+8));return Y.swap64(),parseInt(`0x${Y.toString("hex")}`)};k.fromDOS2Date=function(q){return new Date((q>>25&127)+1980,Math.max((q>>21&15)-1,0),Math.max(q>>16&31,1),q>>11&31,q>>5&63,(q&31)<<1)};k.fromDate2DOS=function(q){let Q=0,Y=0;if(q.getFullYear()>1979)Q=(q.getFullYear()-1980&127)<<9|q.getMonth()+1<<5|q.getDate(),Y=q.getHours()<<11|q.getMinutes()<<5|q.getSeconds()>>1;return Q<<16|Y};k.isWin=r9;k.crcTable=i1});var a1=b((CX,t1)=>{var i9=m("path");t1.exports=function(q,{fs:Q}){var Y=q||"",X=W(),J=null;function W(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}if(Y&&Q.existsSync(Y))J=Q.statSync(Y),X.directory=J.isDirectory(),X.mtime=J.mtime,X.atime=J.atime,X.executable=(73&J.mode)!==0,X.readonly=(128&J.mode)===0,X.hidden=i9.basename(Y)[0]===".";else console.warn("Invalid path: "+Y);return{get directory(){return X.directory},get readOnly(){return X.readonly},get hidden(){return X.hidden},get mtime(){return X.mtime},get atime(){return X.atime},get executable(){return X.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:Y,isDirectory:X.directory,isReadOnly:X.readonly,isHidden:X.hidden,isExecutable:X.executable,mTime:X.mtime,aTime:X.atime}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var qq=b((_X,e1)=>{e1.exports={efs:!0,encode:(q)=>Buffer.from(q,"utf8"),decode:(q)=>q.toString("utf8")}});var K0=b((kX,G0)=>{G0.exports=s1();G0.exports.Constants=q1();G0.exports.Errors=C0();G0.exports.FileAttr=a1();G0.exports.decoder=qq()});var Yq=b((vX,Qq)=>{var s=K0(),M=s.Constants;Qq.exports=function(){var q=20,Q=10,Y=0,X=0,J=0,W=0,K=0,$=0,B=0,I=0,U=0,E=0,S=0,V=0,L=0;q|=s.isWin?2560:768,Y|=M.FLG_EFS;let H={extraLen:0},A=(G)=>Math.max(0,G)>>>0,j=(G)=>Math.max(0,G)&65535,N=(G)=>Math.max(0,G)&255;return J=s.fromDate2DOS(new Date),{get made(){return q},set made(G){q=G},get version(){return Q},set version(G){Q=G},get flags(){return Y},set flags(G){Y=G},get flags_efs(){return(Y&M.FLG_EFS)>0},set flags_efs(G){if(G)Y|=M.FLG_EFS;else Y&=~M.FLG_EFS},get flags_desc(){return(Y&M.FLG_DESC)>0},set flags_desc(G){if(G)Y|=M.FLG_DESC;else Y&=~M.FLG_DESC},get method(){return X},set method(G){switch(G){case M.STORED:this.version=10;case M.DEFLATED:default:this.version=20}X=G},get time(){return s.fromDOS2Date(this.timeval)},set time(G){this.timeval=s.fromDate2DOS(G)},get timeval(){return J},set timeval(G){J=A(G)},get timeHighByte(){return N(J>>>8)},get crc(){return W},set crc(G){W=A(G)},get compressedSize(){return K},set compressedSize(G){K=A(G)},get size(){return $},set size(G){$=A(G)},get fileNameLength(){return B},set fileNameLength(G){B=G},get extraLength(){return I},set extraLength(G){I=G},get extraLocalLength(){return H.extraLen},set extraLocalLength(G){H.extraLen=G},get commentLength(){return U},set commentLength(G){U=G},get diskNumStart(){return E},set diskNumStart(G){E=A(G)},get inAttr(){return S},set inAttr(G){S=A(G)},get attr(){return V},set attr(G){V=A(G)},get fileAttr(){return(V||0)>>16&4095},get offset(){return L},set offset(G){L=A(G)},get encrypted(){return(Y&M.FLG_ENC)===M.FLG_ENC},get centralHeaderSize(){return M.CENHDR+B+I+U},get realDataOffset(){return L+M.LOCHDR+H.fnameLen+H.extraLen},get localHeader(){return H},loadLocalHeaderFromBinary:function(G){var R=G.slice(L,L+M.LOCHDR);if(R.readUInt32LE(0)!==M.LOCSIG)throw s.Errors.INVALID_LOC();H.version=R.readUInt16LE(M.LOCVER),H.flags=R.readUInt16LE(M.LOCFLG),H.method=R.readUInt16LE(M.LOCHOW),H.time=R.readUInt32LE(M.LOCTIM),H.crc=R.readUInt32LE(M.LOCCRC),H.compressedSize=R.readUInt32LE(M.LOCSIZ),H.size=R.readUInt32LE(M.LOCLEN),H.fnameLen=R.readUInt16LE(M.LOCNAM),H.extraLen=R.readUInt16LE(M.LOCEXT);let z=L+M.LOCHDR+H.fnameLen,D=z+H.extraLen;return G.slice(z,D)},loadFromBinary:function(G){if(G.length!==M.CENHDR||G.readUInt32LE(0)!==M.CENSIG)throw s.Errors.INVALID_CEN();q=G.readUInt16LE(M.CENVEM),Q=G.readUInt16LE(M.CENVER),Y=G.readUInt16LE(M.CENFLG),X=G.readUInt16LE(M.CENHOW),J=G.readUInt32LE(M.CENTIM),W=G.readUInt32LE(M.CENCRC),K=G.readUInt32LE(M.CENSIZ),$=G.readUInt32LE(M.CENLEN),B=G.readUInt16LE(M.CENNAM),I=G.readUInt16LE(M.CENEXT),U=G.readUInt16LE(M.CENCOM),E=G.readUInt16LE(M.CENDSK),S=G.readUInt16LE(M.CENATT),V=G.readUInt32LE(M.CENATX),L=G.readUInt32LE(M.CENOFF)},localHeaderToBinary:function(){var G=Buffer.alloc(M.LOCHDR);return G.writeUInt32LE(M.LOCSIG,0),G.writeUInt16LE(Q,M.LOCVER),G.writeUInt16LE(Y,M.LOCFLG),G.writeUInt16LE(X,M.LOCHOW),G.writeUInt32LE(J,M.LOCTIM),G.writeUInt32LE(W,M.LOCCRC),G.writeUInt32LE(K,M.LOCSIZ),G.writeUInt32LE($,M.LOCLEN),G.writeUInt16LE(B,M.LOCNAM),G.writeUInt16LE(H.extraLen,M.LOCEXT),G},centralHeaderToBinary:function(){var G=Buffer.alloc(M.CENHDR+B+I+U);return G.writeUInt32LE(M.CENSIG,0),G.writeUInt16LE(q,M.CENVEM),G.writeUInt16LE(Q,M.CENVER),G.writeUInt16LE(Y,M.CENFLG),G.writeUInt16LE(X,M.CENHOW),G.writeUInt32LE(J,M.CENTIM),G.writeUInt32LE(W,M.CENCRC),G.writeUInt32LE(K,M.CENSIZ),G.writeUInt32LE($,M.CENLEN),G.writeUInt16LE(B,M.CENNAM),G.writeUInt16LE(I,M.CENEXT),G.writeUInt16LE(U,M.CENCOM),G.writeUInt16LE(E,M.CENDSK),G.writeUInt16LE(S,M.CENATT),G.writeUInt32LE(V,M.CENATX),G.writeUInt32LE(L,M.CENOFF),G},toJSON:function(){let G=function(R){return R+" bytes"};return{made:q,version:Q,flags:Y,method:s.methodToString(X),time:this.time,crc:"0x"+W.toString(16).toUpperCase(),compressedSize:G(K),size:G($),fileNameLength:G(B),extraLength:G(I),commentLength:G(U),diskNumStart:E,inAttr:S,attr:V,offset:L,centralHeaderSize:G(M.CENHDR+B+I+U)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Jq=b((hX,Xq)=>{var $0=K0(),x=$0.Constants;Xq.exports=function(){var q=0,Q=0,Y=0,X=0,J=0;return{get diskEntries(){return q},set diskEntries(W){q=Q=W},get totalEntries(){return Q},set totalEntries(W){Q=q=W},get size(){return Y},set size(W){Y=W},get offset(){return X},set offset(W){X=W},get commentLength(){return J},set commentLength(W){J=W},get mainHeaderSize(){return x.ENDHDR+J},loadFromBinary:function(W){if((W.length!==x.ENDHDR||W.readUInt32LE(0)!==x.ENDSIG)&&(W.length<x.ZIP64HDR||W.readUInt32LE(0)!==x.ZIP64SIG))throw $0.Errors.INVALID_END();if(W.readUInt32LE(0)===x.ENDSIG)q=W.readUInt16LE(x.ENDSUB),Q=W.readUInt16LE(x.ENDTOT),Y=W.readUInt32LE(x.ENDSIZ),X=W.readUInt32LE(x.ENDOFF),J=W.readUInt16LE(x.ENDCOM);else q=$0.readBigUInt64LE(W,x.ZIP64SUB),Q=$0.readBigUInt64LE(W,x.ZIP64TOT),Y=$0.readBigUInt64LE(W,x.ZIP64SIZE),X=$0.readBigUInt64LE(W,x.ZIP64OFF),J=0},toBinary:function(){var W=Buffer.alloc(x.ENDHDR+J);return W.writeUInt32LE(x.ENDSIG,0),W.writeUInt32LE(0,4),W.writeUInt16LE(q,x.ENDSUB),W.writeUInt16LE(Q,x.ENDTOT),W.writeUInt32LE(Y,x.ENDSIZ),W.writeUInt32LE(X,x.ENDOFF),W.writeUInt16LE(J,x.ENDCOM),W.fill(" ",x.ENDHDR),W},toJSON:function(){let W=function(K,$){let B=K.toString(16).toUpperCase();while(B.length<$)B="0"+B;return"0x"+B};return{diskEntries:q,totalEntries:Q,size:Y+" bytes",offset:W(X,4),commentLength:J}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Q1=b((n9)=>{n9.EntryHeader=Yq();n9.MainHeader=Jq()});var Gq=b((yX,Wq)=>{Wq.exports=function(q){var Q=m("zlib"),Y={chunkSize:(parseInt(q.length/1024)+1)*1024};return{deflate:function(){return Q.deflateRawSync(q,Y)},deflateAsync:function(X){var J=Q.createDeflateRaw(Y),W=[],K=0;J.on("data",function($){W.push($),K+=$.length}),J.on("end",function(){var $=Buffer.alloc(K),B=0;$.fill(0);for(var I=0;I<W.length;I++){var U=W[I];U.copy($,B),B+=U.length}X&&X($)}),J.end(q)}}}});var $q=b((uX,Kq)=>{var a9=+(process.versions?process.versions.node:"").split(".")[0]||0;Kq.exports=function(q,Q){var Y=m("zlib");let X=a9>=15&&Q>0?{maxOutputLength:Q}:{};return{inflate:function(){return Y.inflateRawSync(q,X)},inflateAsync:function(J){var W=Y.createInflateRaw(X),K=[],$=0;W.on("data",function(B){K.push(B),$+=B.length}),W.on("end",function(){var B=Buffer.alloc($),I=0;B.fill(0);for(var U=0;U<K.length;U++){var E=K[U];E.copy(B,I),I+=E.length}J&&J(B)}),W.end(q)}}}});var Aq=b((fX,Iq)=>{var{randomFillSync:Vq}=m("crypto"),e9=C0(),q6=new Uint32Array(256).map((q,Q)=>{for(let Y=0;Y<8;Y++)if((Q&1)!==0)Q=Q>>>1^3988292384;else Q>>>=1;return Q>>>0}),Lq=(q,Q)=>Math.imul(q,Q)>>>0,Bq=(q,Q)=>{return q6[(q^Q)&255]^q>>>8},T0=()=>{if(typeof Vq==="function")return Vq(Buffer.alloc(12));else return T0.node()};T0.node=()=>{let q=Buffer.alloc(12),Q=q.length;for(let Y=0;Y<Q;Y++)q[Y]=Math.random()*256&255;return q};var _0={genSalt:T0};function k0(q){let Q=Buffer.isBuffer(q)?q:Buffer.from(q);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let Y=0;Y<Q.length;Y++)this.updateKeys(Q[Y])}k0.prototype.updateKeys=function(q){let Q=this.keys;return Q[0]=Bq(Q[0],q),Q[1]+=Q[0]&255,Q[1]=Lq(Q[1],134775813)+1,Q[2]=Bq(Q[2],Q[1]>>>24),q};k0.prototype.next=function(){let q=(this.keys[2]|2)>>>0;return Lq(q,q^1)>>8&255};function Q6(q){let Q=new k0(q);return function(Y){let X=Buffer.alloc(Y.length),J=0;for(let W of Y)X[J++]=Q.updateKeys(W^Q.next());return X}}function Y6(q){let Q=new k0(q);return function(Y,X,J=0){if(!X)X=Buffer.alloc(Y.length);for(let W of Y){let K=Q.next();X[J++]=W^K,Q.updateKeys(W)}return X}}function X6(q,Q,Y){if(!q||!Buffer.isBuffer(q)||q.length<12)return Buffer.alloc(0);let X=Q6(Y),J=X(q.slice(0,12)),W=(Q.flags&8)===8?Q.timeHighByte:Q.crc>>>24;if(J[11]!==W)throw e9.WRONG_PASSWORD();return X(q.slice(12))}function J6(q){if(Buffer.isBuffer(q)&&q.length>=12)_0.genSalt=function(){return q.slice(0,12)};else if(q==="node")_0.genSalt=T0.node;else _0.genSalt=T0}function W6(q,Q,Y,X=!1){if(q==null)q=Buffer.alloc(0);if(!Buffer.isBuffer(q))q=Buffer.from(q.toString());let J=Y6(Y),W=_0.genSalt();if(W[11]=Q.crc>>>24&255,X)W[10]=Q.crc>>>16&255;let K=Buffer.alloc(q.length+12);return J(W,K),J(q,K,12)}Iq.exports={decrypt:X6,encrypt:W6,_salter:J6}});var Rq=b((G6)=>{G6.Deflater=Gq();G6.Inflater=$q();G6.ZipCrypto=Aq()});var X1=b((cX,Hq)=>{var F=K0(),B6=Q1(),v=F.Constants,Y1=Rq();Hq.exports=function(q,Q){var Y=new B6.EntryHeader,X=Buffer.alloc(0),J=Buffer.alloc(0),W=!1,K=null,$=Buffer.alloc(0),B=Buffer.alloc(0),I=!0;let U=q,E=typeof U.decoder==="object"?U.decoder:F.decoder;I=E.hasOwnProperty("efs")?E.efs:!1;function S(){if(!Q||!(Q instanceof Uint8Array))return Buffer.alloc(0);return B=Y.loadLocalHeaderFromBinary(Q),Q.slice(Y.realDataOffset,Y.realDataOffset+Y.compressedSize)}function V(G){if(!Y.flags_desc){if(F.crc32(G)!==Y.localHeader.crc)return!1}else{let R={},z=Y.realDataOffset+Y.compressedSize;if(Q.readUInt32LE(z)==v.LOCSIG||Q.readUInt32LE(z)==v.CENSIG)throw F.Errors.DESCRIPTOR_NOT_EXIST();if(Q.readUInt32LE(z)==v.EXTSIG)R.crc=Q.readUInt32LE(z+v.EXTCRC),R.compressedSize=Q.readUInt32LE(z+v.EXTSIZ),R.size=Q.readUInt32LE(z+v.EXTLEN);else if(Q.readUInt16LE(z+12)===19280)R.crc=Q.readUInt32LE(z+v.EXTCRC-4),R.compressedSize=Q.readUInt32LE(z+v.EXTSIZ-4),R.size=Q.readUInt32LE(z+v.EXTLEN-4);else throw F.Errors.DESCRIPTOR_UNKNOWN();if(R.compressedSize!==Y.compressedSize||R.size!==Y.size||R.crc!==Y.crc)throw F.Errors.DESCRIPTOR_FAULTY();if(F.crc32(G)!==R.crc)return!1}return!0}function L(G,R,z){if(typeof R>"u"&&typeof G==="string")z=G,G=void 0;if(W){if(G&&R)R(Buffer.alloc(0),F.Errors.DIRECTORY_CONTENT_ERROR());return Buffer.alloc(0)}var D=S();if(D.length===0){if(G&&R)R(D);return D}if(Y.encrypted){if(typeof z!=="string"&&!Buffer.isBuffer(z))throw F.Errors.INVALID_PASS_PARAM();D=Y1.ZipCrypto.decrypt(D,Y,z)}var T=Buffer.alloc(Y.size);switch(Y.method){case F.Constants.STORED:if(D.copy(T),!V(T)){if(G&&R)R(T,F.Errors.BAD_CRC());throw F.Errors.BAD_CRC()}else{if(G&&R)R(T);return T}case F.Constants.DEFLATED:var P=new Y1.Inflater(D,Y.size);if(!G){if(P.inflate(T).copy(T,0),!V(T))throw F.Errors.BAD_CRC(`"${E.decode(X)}"`);return T}else P.inflateAsync(function(Z){if(Z.copy(Z,0),R)if(!V(Z))R(Z,F.Errors.BAD_CRC());else R(Z)});break;default:if(G&&R)R(Buffer.alloc(0),F.Errors.UNKNOWN_METHOD());throw F.Errors.UNKNOWN_METHOD()}}function H(G,R){if((!K||!K.length)&&Buffer.isBuffer(Q)){if(G&&R)R(S());return S()}if(K.length&&!W){var z;switch(Y.method){case F.Constants.STORED:if(Y.compressedSize=Y.size,z=Buffer.alloc(K.length),K.copy(z),G&&R)R(z);return z;default:case F.Constants.DEFLATED:var D=new Y1.Deflater(K);if(!G){var T=D.deflate();return Y.compressedSize=T.length,T}else D.deflateAsync(function(P){z=Buffer.alloc(P.length),Y.compressedSize=P.length,P.copy(z),R&&R(z)});D=null;break}}else if(G&&R)R(Buffer.alloc(0));else return Buffer.alloc(0)}function A(G,R){return(G.readUInt32LE(R+4)<<4)+G.readUInt32LE(R)}function j(G){try{var R=0,z,D,T;while(R+4<G.length)if(z=G.readUInt16LE(R),R+=2,D=G.readUInt16LE(R),R+=2,T=G.slice(R,R+D),R+=D,v.ID_ZIP64===z)N(T)}catch(P){throw F.Errors.EXTRA_FIELD_PARSE_ERROR()}}function N(G){var R,z,D,T;if(G.length>=v.EF_ZIP64_SCOMP){if(R=A(G,v.EF_ZIP64_SUNCOMP),Y.size===v.EF_ZIP64_OR_32)Y.size=R}if(G.length>=v.EF_ZIP64_RHO){if(z=A(G,v.EF_ZIP64_SCOMP),Y.compressedSize===v.EF_ZIP64_OR_32)Y.compressedSize=z}if(G.length>=v.EF_ZIP64_DSN){if(D=A(G,v.EF_ZIP64_RHO),Y.offset===v.EF_ZIP64_OR_32)Y.offset=D}if(G.length>=v.EF_ZIP64_DSN+4){if(T=G.readUInt32LE(v.EF_ZIP64_DSN),Y.diskNumStart===v.EF_ZIP64_OR_16)Y.diskNumStart=T}}return{get entryName(){return E.decode(X)},get rawEntryName(){return X},set entryName(G){X=F.toBuffer(G,E.encode);var R=X[X.length-1];W=R===47||R===92,Y.fileNameLength=X.length},get efs(){if(typeof I==="function")return I(this.entryName);else return I},get extra(){return $},set extra(G){$=G,Y.extraLength=G.length,j(G)},get comment(){return E.decode(J)},set comment(G){if(J=F.toBuffer(G,E.encode),Y.commentLength=J.length,J.length>65535)throw F.Errors.COMMENT_TOO_LONG()},get name(){var G=E.decode(X);return W?G.substr(G.length-1).split("/").pop():G.split("/").pop()},get isDirectory(){return W},getCompressedData:function(){return H(!1,null)},getCompressedDataAsync:function(G){H(!0,G)},setData:function(G){if(K=F.toBuffer(G,F.decoder.encode),!W&&K.length)Y.size=K.length,Y.method=F.Constants.DEFLATED,Y.crc=F.crc32(G),Y.changed=!0;else Y.method=F.Constants.STORED},getData:function(G){if(Y.changed)return K;else return L(!1,null,G)},getDataAsync:function(G,R){if(Y.changed)G(K);else L(!0,G,R)},set attr(G){Y.attr=G},get attr(){return Y.attr},set header(G){Y.loadFromBinary(G)},get header(){return Y},packCentralHeader:function(){Y.flags_efs=this.efs,Y.extraLength=$.length;var G=Y.centralHeaderToBinary(),R=F.Constants.CENHDR;return X.copy(G,R),R+=X.length,$.copy(G,R),R+=Y.extraLength,J.copy(G,R),G},packLocalHeader:function(){let G=0;Y.flags_efs=this.efs,Y.extraLocalLength=B.length;let R=Y.localHeaderToBinary(),z=Buffer.alloc(R.length+X.length+Y.extraLocalLength);return R.copy(z,G),G+=R.length,X.copy(z,G),G+=X.length,B.copy(z,G),G+=B.length,z},toJSON:function(){let G=function(R){return"<"+(R&&R.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:Y.toJSON(),compressedData:G(Q),data:G(K)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Uq=b((pX,jq)=>{var zq=X1(),L6=Q1(),u=K0();jq.exports=function(q,Q){var Y=[],X={},J=Buffer.alloc(0),W=new L6.MainHeader,K=!1,$=null;let B=new Set,I=Q,{noSort:U,decoder:E}=I;if(q)L(I.readEntries);else K=!0;function S(){let A=new Set;for(let j of Object.keys(X)){let N=j.split("/");if(N.pop(),!N.length)continue;for(let G=0;G<N.length;G++){let R=N.slice(0,G+1).join("/")+"/";A.add(R)}}for(let j of A)if(!(j in X)){let N=new zq(I);N.entryName=j,N.attr=16,N.temporary=!0,Y.push(N),X[N.entryName]=N,B.add(N)}}function V(){if(K=!0,X={},W.diskEntries>(q.length-W.offset)/u.Constants.CENHDR)throw u.Errors.DISK_ENTRY_TOO_LARGE();Y=Array(W.diskEntries);var A=W.offset;for(var j=0;j<Y.length;j++){var N=A,G=new zq(I,q);if(G.header=q.slice(N,N+=u.Constants.CENHDR),G.entryName=q.slice(N,N+=G.header.fileNameLength),G.header.extraLength)G.extra=q.slice(N,N+=G.header.extraLength);if(G.header.commentLength)G.comment=q.slice(N,N+G.header.commentLength);A+=G.header.centralHeaderSize,Y[j]=G,X[G.entryName]=G}B.clear(),S()}function L(A){var j=q.length-u.Constants.ENDHDR,N=Math.max(0,j-65535),G=N,R=q.length,z=-1,D=0;if(typeof I.trailingSpace==="boolean"?I.trailingSpace:!1)N=0;for(j;j>=G;j--){if(q[j]!==80)continue;if(q.readUInt32LE(j)===u.Constants.ENDSIG){z=j,D=j,R=j+u.Constants.ENDHDR,G=j-u.Constants.END64HDR;continue}if(q.readUInt32LE(j)===u.Constants.END64SIG){G=N;continue}if(q.readUInt32LE(j)===u.Constants.ZIP64SIG){z=j,R=j+u.readBigUInt64LE(q,j+u.Constants.ZIP64SIZE)+u.Constants.ZIP64LEAD;break}}if(z==-1)throw u.Errors.INVALID_FORMAT();if(W.loadFromBinary(q.slice(z,R)),W.commentLength)J=q.slice(D+u.Constants.ENDHDR);if(A)V()}function H(){if(Y.length>1&&!U)Y.sort((A,j)=>A.entryName.toLowerCase().localeCompare(j.entryName.toLowerCase()))}return{get entries(){if(!K)V();return Y.filter((A)=>!B.has(A))},get comment(){return E.decode(J)},set comment(A){J=u.toBuffer(A,E.encode),W.commentLength=J.length},getEntryCount:function(){if(!K)return W.diskEntries;return Y.length},forEach:function(A){this.entries.forEach(A)},getEntry:function(A){if(!K)V();return X[A]||null},setEntry:function(A){if(!K)V();Y.push(A),X[A.entryName]=A,W.totalEntries=Y.length},deleteFile:function(A,j=!0){if(!K)V();let N=X[A];this.getEntryChildren(N,j).map((R)=>R.entryName).forEach(this.deleteEntry)},deleteEntry:function(A){if(!K)V();let j=X[A],N=Y.indexOf(j);if(N>=0)Y.splice(N,1),delete X[A],W.totalEntries=Y.length},getEntryChildren:function(A,j=!0){if(!K)V();if(typeof A==="object")if(A.isDirectory&&j){let N=[],G=A.entryName;for(let R of Y)if(R.entryName.startsWith(G))N.push(R);return N}else return[A];return[]},getChildCount:function(A){if(A&&A.isDirectory){let j=this.getEntryChildren(A);return j.includes(A)?j.length-1:j.length}return 0},compressToBuffer:function(){if(!K)V();H();let A=[],j=[],N=0,G=0;W.size=0,W.offset=0;let R=0;for(let T of this.entries){let P=T.getCompressedData();T.header.offset=G;let Z=T.packLocalHeader(),y=Z.length+P.length;G+=y,A.push(Z),A.push(P);let O=T.packCentralHeader();j.push(O),W.size+=O.length,N+=y+O.length,R++}N+=W.mainHeaderSize,W.offset=G,W.totalEntries=R,G=0;let z=Buffer.alloc(N);for(let T of A)T.copy(z,G),G+=T.length;for(let T of j)T.copy(z,G),G+=T.length;let D=W.toBinary();if(J)J.copy(D,u.Constants.ENDHDR);return D.copy(z,G),q=z,K=!1,z},toAsyncBuffer:function(A,j,N,G){try{if(!K)V();H();let R=[],z=[],D=0,T=0,P=0;W.size=0,W.offset=0;let Z=function(y){if(y.length>0){let O=y.shift(),r=O.entryName+O.extra.toString();if(N)N(r);O.getCompressedDataAsync(function(l){if(G)G(r);O.header.offset=T;let w0=O.packLocalHeader(),B1=w0.length+l.length;T+=B1,R.push(w0),R.push(l);let g0=O.packCentralHeader();z.push(g0),W.size+=g0.length,D+=B1+g0.length,P++,Z(y)})}else{D+=W.mainHeaderSize,W.offset=T,W.totalEntries=P,T=0;let O=Buffer.alloc(D);R.forEach(function(l){l.copy(O,T),T+=l.length}),z.forEach(function(l){l.copy(O,T),T+=l.length});let r=W.toBinary();if(J)J.copy(r,u.Constants.ENDHDR);r.copy(O,T),q=O,K=!1,A(O)}};Z(Array.from(this.entries))}catch(R){j(R)}}}}});var Mq=b((lX,Eq)=>{var C=K0(),h=m("path"),I6=X1(),A6=Uq(),e=(...q)=>C.findLast(q,(Q)=>typeof Q==="boolean"),Nq=(...q)=>C.findLast(q,(Q)=>typeof Q==="string"),R6=(...q)=>C.findLast(q,(Q)=>typeof Q==="function"),H6={noSort:!1,readEntries:!1,method:C.Constants.NONE,fs:null};Eq.exports=function(q,Q){let Y=null,X=Object.assign(Object.create(null),H6);if(q&&typeof q==="object"){if(!(q instanceof Uint8Array)){if(Object.assign(X,q),q=X.input?X.input:void 0,X.input)delete X.input}if(Buffer.isBuffer(q))Y=q,X.method=C.Constants.BUFFER,q=void 0}Object.assign(X,Q);let J=new C(X);if(typeof X.decoder!=="object"||typeof X.decoder.encode!=="function"||typeof X.decoder.decode!=="function")X.decoder=C.decoder;if(q&&typeof q==="string")if(J.fs.existsSync(q))X.method=C.Constants.FILE,X.filename=q,Y=J.fs.readFileSync(q);else throw C.Errors.INVALID_FILENAME();let W=new A6(Y,X),{canonical:K,sanitize:$,zipnamefix:B}=C;function I(V){if(V&&W){var L;if(typeof V==="string")L=W.getEntry(h.posix.normalize(V));if(typeof V==="object"&&typeof V.entryName<"u"&&typeof V.header<"u")L=W.getEntry(V.entryName);if(L)return L}return null}function U(V){let{join:L,normalize:H,sep:A}=h.posix;return L(".",H(A+V.split("\\").join(A)+A))}function E(V){if(V instanceof RegExp)return function(L){return function(H){return L.test(H)}}(V);else if(typeof V!=="function")return()=>!0;return V}let S=(V,L)=>{let H=L.slice(-1);return H=H===J.sep?J.sep:"",h.relative(V,L)+H};return{readFile:function(V,L){var H=I(V);return H&&H.getData(L)||null},childCount:function(V){let L=I(V);if(L)return W.getChildCount(L)},readFileAsync:function(V,L){var H=I(V);if(H)H.getDataAsync(L);else L(null,"getEntry failed for:"+V)},readAsText:function(V,L){var H=I(V);if(H){var A=H.getData();if(A&&A.length)return A.toString(L||"utf8")}return""},readAsTextAsync:function(V,L,H){var A=I(V);if(A)A.getDataAsync(function(j,N){if(N){L(j,N);return}if(j&&j.length)L(j.toString(H||"utf8"));else L("")});else L("")},deleteFile:function(V,L=!0){var H=I(V);if(H)W.deleteFile(H.entryName,L)},deleteEntry:function(V){var L=I(V);if(L)W.deleteEntry(L.entryName)},addZipComment:function(V){W.comment=V},getZipComment:function(){return W.comment||""},addZipEntryComment:function(V,L){var H=I(V);if(H)H.comment=L},getZipEntryComment:function(V){var L=I(V);if(L)return L.comment||"";return""},updateFile:function(V,L){var H=I(V);if(H)H.setData(L)},addLocalFile:function(V,L,H,A){if(J.fs.existsSync(V)){L=L?U(L):"";let j=h.win32.basename(h.win32.normalize(V));L+=H?H:j;let N=J.fs.statSync(V),G=N.isFile()?J.fs.readFileSync(V):Buffer.alloc(0);if(N.isDirectory())L+=J.sep;this.addFile(L,G,A,N)}else throw C.Errors.FILE_NOT_FOUND(V)},addLocalFileAsync:function(V,L){V=typeof V==="object"?V:{localPath:V};let H=h.resolve(V.localPath),{comment:A}=V,{zipPath:j,zipName:N}=V,G=this;J.fs.stat(H,function(R,z){if(R)return L(R,!1);j=j?U(j):"";let D=h.win32.basename(h.win32.normalize(H));if(j+=N?N:D,z.isFile())J.fs.readFile(H,function(T,P){if(T)return L(T,!1);return G.addFile(j,P,A,z),setImmediate(L,void 0,!0)});else if(z.isDirectory())return j+=J.sep,G.addFile(j,Buffer.alloc(0),A,z),setImmediate(L,void 0,!0)})},addLocalFolder:function(V,L,H){if(H=E(H),L=L?U(L):"",V=h.normalize(V),J.fs.existsSync(V)){let A=J.findFiles(V),j=this;if(A.length)for(let N of A){let G=h.join(L,S(V,N));if(H(G))j.addLocalFile(N,h.dirname(G))}}else throw C.Errors.FILE_NOT_FOUND(V)},addLocalFolderAsync:function(V,L,H,A){A=E(A),H=H?U(H):"",V=h.normalize(V);var j=this;J.fs.open(V,"r",function(N){if(N&&N.code==="ENOENT")L(void 0,C.Errors.FILE_NOT_FOUND(V));else if(N)L(void 0,N);else{var G=J.findFiles(V),R=-1,z=function(){if(R+=1,R<G.length){var D=G[R],T=S(V,D).split("\\").join("/");if(T=T.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),A(T))J.fs.stat(D,function(P,Z){if(P)L(void 0,P);if(Z.isFile())J.fs.readFile(D,function(y,O){if(y)L(void 0,y);else j.addFile(H+T,O,"",Z),z()});else j.addFile(H+T+"/",Buffer.alloc(0),"",Z),z()});else process.nextTick(()=>{z()})}else L(!0,void 0)};z()}})},addLocalFolderAsync2:function(V,L){let H=this;V=typeof V==="object"?V:{localPath:V},localPath=h.resolve(U(V.localPath));let{zipPath:A,filter:j,namefix:N}=V;if(j instanceof RegExp)j=function(z){return function(D){return z.test(D)}}(j);else if(typeof j!=="function")j=function(){return!0};if(A=A?U(A):"",N=="latin1")N=(z)=>z.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"");if(typeof N!=="function")N=(z)=>z;let G=(z)=>h.join(A,N(S(localPath,z))),R=(z)=>h.win32.basename(h.win32.normalize(N(z)));J.fs.open(localPath,"r",function(z){if(z&&z.code==="ENOENT")L(void 0,C.Errors.FILE_NOT_FOUND(localPath));else if(z)L(void 0,z);else J.findFilesAsync(localPath,function(D,T){if(D)return L(D);if(T=T.filter((P)=>j(G(P))),!T.length)L(void 0,!1);setImmediate(T.reverse().reduce(function(P,Z){return function(y,O){if(y||O===!1)return setImmediate(P,y,!1);H.addLocalFileAsync({localPath:Z,zipPath:h.dirname(G(Z)),zipName:R(Z)},P)}},L))})})},addLocalFolderPromise:function(V,L){return new Promise((H,A)=>{this.addLocalFolderAsync2(Object.assign({localPath:V},L),(j,N)=>{if(j)A(j);if(N)H(this)})})},addFile:function(V,L,H,A){V=B(V);let j=I(V),N=j!=null;if(!N)j=new I6(X),j.entryName=V;j.comment=H||"";let G=typeof A==="object"&&A instanceof J.fs.Stats;if(G)j.header.time=A.mtime;var R=j.isDirectory?16:0;let z=j.isDirectory?16384:32768;if(G)z|=4095&A.mode;else if(typeof A==="number")z|=4095&A;else z|=j.isDirectory?493:420;if(R=(R|z<<16)>>>0,j.attr=R,j.setData(L),!N)W.setEntry(j);return j},getEntries:function(V){return W.password=V,W?W.entries:[]},getEntry:function(V){return I(V)},getEntryCount:function(){return W.getEntryCount()},forEach:function(V){return W.forEach(V)},extractEntryTo:function(V,L,H,A,j,N){A=e(!1,A),j=e(!1,j),H=e(!0,H),N=Nq(j,N);var G=I(V);if(!G)throw C.Errors.NO_ENTRY();var R=K(G.entryName),z=$(L,N&&!G.isDirectory?N:H?R:h.basename(R));if(G.isDirectory){var D=W.getEntryChildren(G);return D.forEach(function(Z){if(Z.isDirectory)return;var y=Z.getData();if(!y)throw C.Errors.CANT_EXTRACT_FILE();var O=K(Z.entryName),r=$(L,H?O:h.basename(O));let l=j?Z.header.fileAttr:void 0;J.writeFileTo(r,y,A,l)}),!0}var T=G.getData(W.password);if(!T)throw C.Errors.CANT_EXTRACT_FILE();if(J.fs.existsSync(z)&&!A)throw C.Errors.CANT_OVERRIDE();let P=j?V.header.fileAttr:void 0;return J.writeFileTo(z,T,A,P),!0},test:function(V){if(!W)return!1;for(var L in W.entries)try{if(L.isDirectory)continue;var H=W.entries[L].getData(V);if(!H)return!1}catch(A){return!1}return!0},extractAllTo:function(V,L,H,A){if(H=e(!1,H),A=Nq(H,A),L=e(!1,L),!W)throw C.Errors.NO_ZIP();W.entries.forEach(function(j){var N=$(V,K(j.entryName));if(j.isDirectory){J.makeDir(N);return}var G=j.getData(A);if(!G)throw C.Errors.CANT_EXTRACT_FILE();let R=H?j.header.fileAttr:void 0;J.writeFileTo(N,G,L,R);try{J.fs.utimesSync(N,j.header.time,j.header.time)}catch(z){throw C.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(V,L,H,A){if(A=R6(L,H,A),H=e(!1,H),L=e(!1,L),!A)return new Promise((z,D)=>{this.extractAllToAsync(V,L,H,function(T){if(T)D(T);else z(this)})});if(!W){A(C.Errors.NO_ZIP());return}V=h.resolve(V);let j=(z)=>$(V,h.normalize(K(z.entryName))),N=(z,D)=>Error(z+': "'+D+'"'),G=[],R=[];W.entries.forEach((z)=>{if(z.isDirectory)G.push(z);else R.push(z)});for(let z of G){let D=j(z),T=H?z.header.fileAttr:void 0;try{if(J.makeDir(D),T)J.fs.chmodSync(D,T);J.fs.utimesSync(D,z.header.time,z.header.time)}catch(P){A(N("Unable to create folder",D))}}R.reverse().reduce(function(z,D){return function(T){if(T)z(T);else{let P=h.normalize(K(D.entryName)),Z=$(V,P);D.getDataAsync(function(y,O){if(O)z(O);else if(!y)z(C.Errors.CANT_EXTRACT_FILE());else{let r=H?D.header.fileAttr:void 0;J.writeFileToAsync(Z,y,L,r,function(l){if(!l)z(N("Unable to write file",Z));J.fs.utimes(Z,D.header.time,D.header.time,function(w0){if(w0)z(N("Unable to set times",Z));else z()})})}})}}},A)()},writeZip:function(V,L){if(arguments.length===1){if(typeof V==="function")L=V,V=""}if(!V&&X.filename)V=X.filename;if(!V)return;var H=W.compressToBuffer();if(H){var A=J.writeFileTo(V,H,!0);if(typeof L==="function")L(!A?Error("failed"):null,"")}},writeZipPromise:function(V,L){let{overwrite:H,perm:A}=Object.assign({overwrite:!0},L);return new Promise((j,N)=>{if(!V&&X.filename)V=X.filename;if(!V)N("ADM-ZIP: ZIP File Name Missing");this.toBufferPromise().then((G)=>{let R=(z)=>z?j(z):N("ADM-ZIP: Wasn't able to write zip file");J.writeFileToAsync(V,G,H,A,R)},N)})},toBufferPromise:function(){return new Promise((V,L)=>{W.toAsyncBuffer(V,L)})},toBuffer:function(V,L,H,A){if(typeof V==="function")return W.toAsyncBuffer(V,L,H,A),null;return W.compressToBuffer()}}}});var w1=B0(S1(),1),{program:o,createCommand:i6,createArgument:n6,createOption:s6,CommanderError:t6,InvalidArgumentError:a6,InvalidOptionArgumentError:e6,Command:q8,Argument:Q8,Option:Y8,Help:X8}=w1.default;import{cp as Z6,mkdir as t,writeFile as c,readFile as S0,rm as G1,readdir as F6}from"fs/promises";import{join as w,resolve as V1,relative as J2,basename as P6}from"path";import{spawn as Sq}from"child_process";import{homedir as D0,tmpdir as O6}from"os";import{stat as b6}from"fs/promises";var F0={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 N1(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})}W9.Command=d0});var D1=b((V9)=>{var{Argument:T1}=Z0(),{Command:o0}=M1(),{CommanderError:K9,InvalidArgumentError:S1}=L0(),{Help:$9}=f0(),{Option:w1}=m0();V9.program=new o0;V9.createCommand=(q)=>new o0(q);V9.createOption=(q,Q)=>new w1(q,Q);V9.createArgument=(q,Q)=>new T1(q,Q);V9.Command=o0;V9.Option=w1;V9.Argument=T1;V9.Help=$9;V9.CommanderError=K9;V9.InvalidArgumentError=S1;V9.InvalidOptionArgumentError=S1});var q1=b((PX,l1)=>{l1.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var C0=b((o1)=>{var d1={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function d9(q){return function(...Q){if(Q.length)q=q.replace(/\{(\d)\}/g,(Y,X)=>Q[X]||"");return Error("ADM-ZIP: "+q)}}for(let q of Object.keys(d1))o1[q]=d9(d1[q])});var t1=b((bX,s1)=>{var o9=m("fs"),g=m("path"),r1=q1(),r9=C0(),i9=typeof process==="object"&&process.platform==="win32",i1=(q)=>typeof q==="object"&&q!==null,n1=new Uint32Array(256).map((q,Q)=>{for(let Y=0;Y<8;Y++)if((Q&1)!==0)Q=3988292384^Q>>>1;else Q>>>=1;return Q>>>0});function k(q){if(this.sep=g.sep,this.fs=o9,i1(q)){if(i1(q.fs)&&typeof q.fs.statSync==="function")this.fs=q.fs}}s1.exports=k;k.prototype.makeDir=function(q){let Q=this;function Y(X){let J=X.split(Q.sep)[0];X.split(Q.sep).forEach(function(W){if(!W||W.substr(-1,1)===":")return;J+=Q.sep+W;var K;try{K=Q.fs.statSync(J)}catch($){Q.fs.mkdirSync(J)}if(K&&K.isFile())throw r9.FILE_IN_THE_WAY(`"${J}"`)})}Y(q)};k.prototype.writeFileTo=function(q,Q,Y,X){let J=this;if(J.fs.existsSync(q)){if(!Y)return!1;var W=J.fs.statSync(q);if(W.isDirectory())return!1}var K=g.dirname(q);if(!J.fs.existsSync(K))J.makeDir(K);var $;try{$=J.fs.openSync(q,"w",438)}catch(B){J.fs.chmodSync(q,438),$=J.fs.openSync(q,"w",438)}if($)try{J.fs.writeSync($,Q,0,Q.length,0)}finally{J.fs.closeSync($)}return J.fs.chmodSync(q,X||438),!0};k.prototype.writeFileToAsync=function(q,Q,Y,X,J){if(typeof X==="function")J=X,X=void 0;let W=this;W.fs.exists(q,function(K){if(K&&!Y)return J(!1);W.fs.stat(q,function($,B){if(K&&B.isDirectory())return J(!1);var L=g.dirname(q);W.fs.exists(L,function(U){if(!U)W.makeDir(L);W.fs.open(q,"w",438,function(N,w){if(N)W.fs.chmod(q,438,function(){W.fs.open(q,"w",438,function(V,I){W.fs.write(I,Q,0,Q.length,0,function(){W.fs.close(I,function(){W.fs.chmod(q,X||438,function(){J(!0)})})})})});else if(w)W.fs.write(w,Q,0,Q.length,0,function(){W.fs.close(w,function(){W.fs.chmod(q,X||438,function(){J(!0)})})});else W.fs.chmod(q,X||438,function(){J(!0)})})})})})};k.prototype.findFiles=function(q){let Q=this;function Y(X,J,W){if(typeof J==="boolean")W=J,J=void 0;let K=[];return Q.fs.readdirSync(X).forEach(function($){let B=g.join(X,$),L=Q.fs.statSync(B);if(!J||J.test(B))K.push(g.normalize(B)+(L.isDirectory()?Q.sep:""));if(L.isDirectory()&&W)K=K.concat(Y(B,J,W))}),K}return Y(q,void 0,!0)};k.prototype.findFilesAsync=function(q,Q){let Y=this,X=[];Y.fs.readdir(q,function(J,W){if(J)return Q(J);let K=W.length;if(!K)return Q(null,X);W.forEach(function($){$=g.join(q,$),Y.fs.stat($,function(B,L){if(B)return Q(B);if(L){if(X.push(g.normalize($)+(L.isDirectory()?Y.sep:"")),L.isDirectory())Y.findFilesAsync($,function(U,N){if(U)return Q(U);if(X=X.concat(N),!--K)Q(null,X)});else if(!--K)Q(null,X)}})})})};k.prototype.getAttributes=function(){};k.prototype.setAttributes=function(){};k.crc32update=function(q,Q){return n1[(q^Q)&255]^q>>>8};k.crc32=function(q){if(typeof q==="string")q=Buffer.from(q,"utf8");let Q=q.length,Y=-1;for(let X=0;X<Q;)Y=k.crc32update(Y,q[X++]);return~Y>>>0};k.methodToString=function(q){switch(q){case r1.STORED:return"STORED ("+q+")";case r1.DEFLATED:return"DEFLATED ("+q+")";default:return"UNSUPPORTED ("+q+")"}};k.canonical=function(q){if(!q)return"";let Q=g.posix.normalize("/"+q.split("\\").join("/"));return g.join(".",Q)};k.zipnamefix=function(q){if(!q)return"";let Q=g.posix.normalize("/"+q.split("\\").join("/"));return g.posix.join(".",Q)};k.findLast=function(q,Q){if(!Array.isArray(q))throw TypeError("arr is not array");let Y=q.length>>>0;for(let X=Y-1;X>=0;X--)if(Q(q[X],X,q))return q[X];return};k.sanitize=function(q,Q){q=g.resolve(g.normalize(q));var Y=Q.split("/");for(var X=0,J=Y.length;X<J;X++){var W=g.normalize(g.join(q,Y.slice(X,J).join(g.sep)));if(W.indexOf(q)===0)return W}return g.normalize(g.join(q,g.basename(Q)))};k.toBuffer=function(Q,Y){if(Buffer.isBuffer(Q))return Q;else if(Q instanceof Uint8Array)return Buffer.from(Q);else return typeof Q==="string"?Y(Q):Buffer.alloc(0)};k.readBigUInt64LE=function(q,Q){var Y=Buffer.from(q.slice(Q,Q+8));return Y.swap64(),parseInt(`0x${Y.toString("hex")}`)};k.fromDOS2Date=function(q){return new Date((q>>25&127)+1980,Math.max((q>>21&15)-1,0),Math.max(q>>16&31,1),q>>11&31,q>>5&63,(q&31)<<1)};k.fromDate2DOS=function(q){let Q=0,Y=0;if(q.getFullYear()>1979)Q=(q.getFullYear()-1980&127)<<9|q.getMonth()+1<<5|q.getDate(),Y=q.getHours()<<11|q.getMinutes()<<5|q.getSeconds()>>1;return Q<<16|Y};k.isWin=i9;k.crcTable=n1});var e1=b((xX,a1)=>{var n9=m("path");a1.exports=function(q,{fs:Q}){var Y=q||"",X=W(),J=null;function W(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}if(Y&&Q.existsSync(Y))J=Q.statSync(Y),X.directory=J.isDirectory(),X.mtime=J.mtime,X.atime=J.atime,X.executable=(73&J.mode)!==0,X.readonly=(128&J.mode)===0,X.hidden=n9.basename(Y)[0]===".";else console.warn("Invalid path: "+Y);return{get directory(){return X.directory},get readOnly(){return X.readonly},get hidden(){return X.hidden},get mtime(){return X.mtime},get atime(){return X.atime},get executable(){return X.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:Y,isDirectory:X.directory,isReadOnly:X.readonly,isHidden:X.hidden,isExecutable:X.executable,mTime:X.mtime,aTime:X.atime}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Qq=b((CX,qq)=>{qq.exports={efs:!0,encode:(q)=>Buffer.from(q,"utf8"),decode:(q)=>q.toString("utf8")}});var K0=b((_X,G0)=>{G0.exports=t1();G0.exports.Constants=q1();G0.exports.Errors=C0();G0.exports.FileAttr=e1();G0.exports.decoder=Qq()});var Xq=b((kX,Yq)=>{var s=K0(),M=s.Constants;Yq.exports=function(){var q=20,Q=10,Y=0,X=0,J=0,W=0,K=0,$=0,B=0,L=0,U=0,N=0,w=0,V=0,I=0;q|=s.isWin?2560:768,Y|=M.FLG_EFS;let R={extraLen:0},H=(G)=>Math.max(0,G)>>>0,j=(G)=>Math.max(0,G)&65535,E=(G)=>Math.max(0,G)&255;return J=s.fromDate2DOS(new Date),{get made(){return q},set made(G){q=G},get version(){return Q},set version(G){Q=G},get flags(){return Y},set flags(G){Y=G},get flags_efs(){return(Y&M.FLG_EFS)>0},set flags_efs(G){if(G)Y|=M.FLG_EFS;else Y&=~M.FLG_EFS},get flags_desc(){return(Y&M.FLG_DESC)>0},set flags_desc(G){if(G)Y|=M.FLG_DESC;else Y&=~M.FLG_DESC},get method(){return X},set method(G){switch(G){case M.STORED:this.version=10;case M.DEFLATED:default:this.version=20}X=G},get time(){return s.fromDOS2Date(this.timeval)},set time(G){this.timeval=s.fromDate2DOS(G)},get timeval(){return J},set timeval(G){J=H(G)},get timeHighByte(){return E(J>>>8)},get crc(){return W},set crc(G){W=H(G)},get compressedSize(){return K},set compressedSize(G){K=H(G)},get size(){return $},set size(G){$=H(G)},get fileNameLength(){return B},set fileNameLength(G){B=G},get extraLength(){return L},set extraLength(G){L=G},get extraLocalLength(){return R.extraLen},set extraLocalLength(G){R.extraLen=G},get commentLength(){return U},set commentLength(G){U=G},get diskNumStart(){return N},set diskNumStart(G){N=H(G)},get inAttr(){return w},set inAttr(G){w=H(G)},get attr(){return V},set attr(G){V=H(G)},get fileAttr(){return(V||0)>>16&4095},get offset(){return I},set offset(G){I=H(G)},get encrypted(){return(Y&M.FLG_ENC)===M.FLG_ENC},get centralHeaderSize(){return M.CENHDR+B+L+U},get realDataOffset(){return I+M.LOCHDR+R.fnameLen+R.extraLen},get localHeader(){return R},loadLocalHeaderFromBinary:function(G){var A=G.slice(I,I+M.LOCHDR);if(A.readUInt32LE(0)!==M.LOCSIG)throw s.Errors.INVALID_LOC();R.version=A.readUInt16LE(M.LOCVER),R.flags=A.readUInt16LE(M.LOCFLG),R.method=A.readUInt16LE(M.LOCHOW),R.time=A.readUInt32LE(M.LOCTIM),R.crc=A.readUInt32LE(M.LOCCRC),R.compressedSize=A.readUInt32LE(M.LOCSIZ),R.size=A.readUInt32LE(M.LOCLEN),R.fnameLen=A.readUInt16LE(M.LOCNAM),R.extraLen=A.readUInt16LE(M.LOCEXT);let z=I+M.LOCHDR+R.fnameLen,S=z+R.extraLen;return G.slice(z,S)},loadFromBinary:function(G){if(G.length!==M.CENHDR||G.readUInt32LE(0)!==M.CENSIG)throw s.Errors.INVALID_CEN();q=G.readUInt16LE(M.CENVEM),Q=G.readUInt16LE(M.CENVER),Y=G.readUInt16LE(M.CENFLG),X=G.readUInt16LE(M.CENHOW),J=G.readUInt32LE(M.CENTIM),W=G.readUInt32LE(M.CENCRC),K=G.readUInt32LE(M.CENSIZ),$=G.readUInt32LE(M.CENLEN),B=G.readUInt16LE(M.CENNAM),L=G.readUInt16LE(M.CENEXT),U=G.readUInt16LE(M.CENCOM),N=G.readUInt16LE(M.CENDSK),w=G.readUInt16LE(M.CENATT),V=G.readUInt32LE(M.CENATX),I=G.readUInt32LE(M.CENOFF)},localHeaderToBinary:function(){var G=Buffer.alloc(M.LOCHDR);return G.writeUInt32LE(M.LOCSIG,0),G.writeUInt16LE(Q,M.LOCVER),G.writeUInt16LE(Y,M.LOCFLG),G.writeUInt16LE(X,M.LOCHOW),G.writeUInt32LE(J,M.LOCTIM),G.writeUInt32LE(W,M.LOCCRC),G.writeUInt32LE(K,M.LOCSIZ),G.writeUInt32LE($,M.LOCLEN),G.writeUInt16LE(B,M.LOCNAM),G.writeUInt16LE(R.extraLen,M.LOCEXT),G},centralHeaderToBinary:function(){var G=Buffer.alloc(M.CENHDR+B+L+U);return G.writeUInt32LE(M.CENSIG,0),G.writeUInt16LE(q,M.CENVEM),G.writeUInt16LE(Q,M.CENVER),G.writeUInt16LE(Y,M.CENFLG),G.writeUInt16LE(X,M.CENHOW),G.writeUInt32LE(J,M.CENTIM),G.writeUInt32LE(W,M.CENCRC),G.writeUInt32LE(K,M.CENSIZ),G.writeUInt32LE($,M.CENLEN),G.writeUInt16LE(B,M.CENNAM),G.writeUInt16LE(L,M.CENEXT),G.writeUInt16LE(U,M.CENCOM),G.writeUInt16LE(N,M.CENDSK),G.writeUInt16LE(w,M.CENATT),G.writeUInt32LE(V,M.CENATX),G.writeUInt32LE(I,M.CENOFF),G},toJSON:function(){let G=function(A){return A+" bytes"};return{made:q,version:Q,flags:Y,method:s.methodToString(X),time:this.time,crc:"0x"+W.toString(16).toUpperCase(),compressedSize:G(K),size:G($),fileNameLength:G(B),extraLength:G(L),commentLength:G(U),diskNumStart:N,inAttr:w,attr:V,offset:I,centralHeaderSize:G(M.CENHDR+B+L+U)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Wq=b((vX,Jq)=>{var $0=K0(),x=$0.Constants;Jq.exports=function(){var q=0,Q=0,Y=0,X=0,J=0;return{get diskEntries(){return q},set diskEntries(W){q=Q=W},get totalEntries(){return Q},set totalEntries(W){Q=q=W},get size(){return Y},set size(W){Y=W},get offset(){return X},set offset(W){X=W},get commentLength(){return J},set commentLength(W){J=W},get mainHeaderSize(){return x.ENDHDR+J},loadFromBinary:function(W){if((W.length!==x.ENDHDR||W.readUInt32LE(0)!==x.ENDSIG)&&(W.length<x.ZIP64HDR||W.readUInt32LE(0)!==x.ZIP64SIG))throw $0.Errors.INVALID_END();if(W.readUInt32LE(0)===x.ENDSIG)q=W.readUInt16LE(x.ENDSUB),Q=W.readUInt16LE(x.ENDTOT),Y=W.readUInt32LE(x.ENDSIZ),X=W.readUInt32LE(x.ENDOFF),J=W.readUInt16LE(x.ENDCOM);else q=$0.readBigUInt64LE(W,x.ZIP64SUB),Q=$0.readBigUInt64LE(W,x.ZIP64TOT),Y=$0.readBigUInt64LE(W,x.ZIP64SIZE),X=$0.readBigUInt64LE(W,x.ZIP64OFF),J=0},toBinary:function(){var W=Buffer.alloc(x.ENDHDR+J);return W.writeUInt32LE(x.ENDSIG,0),W.writeUInt32LE(0,4),W.writeUInt16LE(q,x.ENDSUB),W.writeUInt16LE(Q,x.ENDTOT),W.writeUInt32LE(Y,x.ENDSIZ),W.writeUInt32LE(X,x.ENDOFF),W.writeUInt16LE(J,x.ENDCOM),W.fill(" ",x.ENDHDR),W},toJSON:function(){let W=function(K,$){let B=K.toString(16).toUpperCase();while(B.length<$)B="0"+B;return"0x"+B};return{diskEntries:q,totalEntries:Q,size:Y+" bytes",offset:W(X,4),commentLength:J}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Q1=b((s9)=>{s9.EntryHeader=Xq();s9.MainHeader=Wq()});var Kq=b((gX,Gq)=>{Gq.exports=function(q){var Q=m("zlib"),Y={chunkSize:(parseInt(q.length/1024)+1)*1024};return{deflate:function(){return Q.deflateRawSync(q,Y)},deflateAsync:function(X){var J=Q.createDeflateRaw(Y),W=[],K=0;J.on("data",function($){W.push($),K+=$.length}),J.on("end",function(){var $=Buffer.alloc(K),B=0;$.fill(0);for(var L=0;L<W.length;L++){var U=W[L];U.copy($,B),B+=U.length}X&&X($)}),J.end(q)}}}});var Vq=b((yX,$q)=>{var e9=+(process.versions?process.versions.node:"").split(".")[0]||0;$q.exports=function(q,Q){var Y=m("zlib");let X=e9>=15&&Q>0?{maxOutputLength:Q}:{};return{inflate:function(){return Y.inflateRawSync(q,X)},inflateAsync:function(J){var W=Y.createInflateRaw(X),K=[],$=0;W.on("data",function(B){K.push(B),$+=B.length}),W.on("end",function(){var B=Buffer.alloc($),L=0;B.fill(0);for(var U=0;U<K.length;U++){var N=K[U];N.copy(B,L),L+=N.length}J&&J(B)}),W.end(q)}}}});var Aq=b((uX,Hq)=>{var{randomFillSync:Bq}=m("crypto"),q6=C0(),Q6=new Uint32Array(256).map((q,Q)=>{for(let Y=0;Y<8;Y++)if((Q&1)!==0)Q=Q>>>1^3988292384;else Q>>>=1;return Q>>>0}),Iq=(q,Q)=>Math.imul(q,Q)>>>0,Lq=(q,Q)=>{return Q6[(q^Q)&255]^q>>>8},T0=()=>{if(typeof Bq==="function")return Bq(Buffer.alloc(12));else return T0.node()};T0.node=()=>{let q=Buffer.alloc(12),Q=q.length;for(let Y=0;Y<Q;Y++)q[Y]=Math.random()*256&255;return q};var _0={genSalt:T0};function k0(q){let Q=Buffer.isBuffer(q)?q:Buffer.from(q);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let Y=0;Y<Q.length;Y++)this.updateKeys(Q[Y])}k0.prototype.updateKeys=function(q){let Q=this.keys;return Q[0]=Lq(Q[0],q),Q[1]+=Q[0]&255,Q[1]=Iq(Q[1],134775813)+1,Q[2]=Lq(Q[2],Q[1]>>>24),q};k0.prototype.next=function(){let q=(this.keys[2]|2)>>>0;return Iq(q,q^1)>>8&255};function Y6(q){let Q=new k0(q);return function(Y){let X=Buffer.alloc(Y.length),J=0;for(let W of Y)X[J++]=Q.updateKeys(W^Q.next());return X}}function X6(q){let Q=new k0(q);return function(Y,X,J=0){if(!X)X=Buffer.alloc(Y.length);for(let W of Y){let K=Q.next();X[J++]=W^K,Q.updateKeys(W)}return X}}function J6(q,Q,Y){if(!q||!Buffer.isBuffer(q)||q.length<12)return Buffer.alloc(0);let X=Y6(Y),J=X(q.slice(0,12)),W=(Q.flags&8)===8?Q.timeHighByte:Q.crc>>>24;if(J[11]!==W)throw q6.WRONG_PASSWORD();return X(q.slice(12))}function W6(q){if(Buffer.isBuffer(q)&&q.length>=12)_0.genSalt=function(){return q.slice(0,12)};else if(q==="node")_0.genSalt=T0.node;else _0.genSalt=T0}function G6(q,Q,Y,X=!1){if(q==null)q=Buffer.alloc(0);if(!Buffer.isBuffer(q))q=Buffer.from(q.toString());let J=X6(Y),W=_0.genSalt();if(W[11]=Q.crc>>>24&255,X)W[10]=Q.crc>>>16&255;let K=Buffer.alloc(q.length+12);return J(W,K),J(q,K,12)}Hq.exports={decrypt:J6,encrypt:G6,_salter:W6}});var Rq=b((K6)=>{K6.Deflater=Kq();K6.Inflater=Vq();K6.ZipCrypto=Aq()});var X1=b((mX,zq)=>{var F=K0(),L6=Q1(),v=F.Constants,Y1=Rq();zq.exports=function(q,Q){var Y=new L6.EntryHeader,X=Buffer.alloc(0),J=Buffer.alloc(0),W=!1,K=null,$=Buffer.alloc(0),B=Buffer.alloc(0),L=!0;let U=q,N=typeof U.decoder==="object"?U.decoder:F.decoder;L=N.hasOwnProperty("efs")?N.efs:!1;function w(){if(!Q||!(Q instanceof Uint8Array))return Buffer.alloc(0);return B=Y.loadLocalHeaderFromBinary(Q),Q.slice(Y.realDataOffset,Y.realDataOffset+Y.compressedSize)}function V(G){if(!Y.flags_desc){if(F.crc32(G)!==Y.localHeader.crc)return!1}else{let A={},z=Y.realDataOffset+Y.compressedSize;if(Q.readUInt32LE(z)==v.LOCSIG||Q.readUInt32LE(z)==v.CENSIG)throw F.Errors.DESCRIPTOR_NOT_EXIST();if(Q.readUInt32LE(z)==v.EXTSIG)A.crc=Q.readUInt32LE(z+v.EXTCRC),A.compressedSize=Q.readUInt32LE(z+v.EXTSIZ),A.size=Q.readUInt32LE(z+v.EXTLEN);else if(Q.readUInt16LE(z+12)===19280)A.crc=Q.readUInt32LE(z+v.EXTCRC-4),A.compressedSize=Q.readUInt32LE(z+v.EXTSIZ-4),A.size=Q.readUInt32LE(z+v.EXTLEN-4);else throw F.Errors.DESCRIPTOR_UNKNOWN();if(A.compressedSize!==Y.compressedSize||A.size!==Y.size||A.crc!==Y.crc)throw F.Errors.DESCRIPTOR_FAULTY();if(F.crc32(G)!==A.crc)return!1}return!0}function I(G,A,z){if(typeof A>"u"&&typeof G==="string")z=G,G=void 0;if(W){if(G&&A)A(Buffer.alloc(0),F.Errors.DIRECTORY_CONTENT_ERROR());return Buffer.alloc(0)}var S=w();if(S.length===0){if(G&&A)A(S);return S}if(Y.encrypted){if(typeof z!=="string"&&!Buffer.isBuffer(z))throw F.Errors.INVALID_PASS_PARAM();S=Y1.ZipCrypto.decrypt(S,Y,z)}var T=Buffer.alloc(Y.size);switch(Y.method){case F.Constants.STORED:if(S.copy(T),!V(T)){if(G&&A)A(T,F.Errors.BAD_CRC());throw F.Errors.BAD_CRC()}else{if(G&&A)A(T);return T}case F.Constants.DEFLATED:var P=new Y1.Inflater(S,Y.size);if(!G){if(P.inflate(T).copy(T,0),!V(T))throw F.Errors.BAD_CRC(`"${N.decode(X)}"`);return T}else P.inflateAsync(function(Z){if(Z.copy(Z,0),A)if(!V(Z))A(Z,F.Errors.BAD_CRC());else A(Z)});break;default:if(G&&A)A(Buffer.alloc(0),F.Errors.UNKNOWN_METHOD());throw F.Errors.UNKNOWN_METHOD()}}function R(G,A){if((!K||!K.length)&&Buffer.isBuffer(Q)){if(G&&A)A(w());return w()}if(K.length&&!W){var z;switch(Y.method){case F.Constants.STORED:if(Y.compressedSize=Y.size,z=Buffer.alloc(K.length),K.copy(z),G&&A)A(z);return z;default:case F.Constants.DEFLATED:var S=new Y1.Deflater(K);if(!G){var T=S.deflate();return Y.compressedSize=T.length,T}else S.deflateAsync(function(P){z=Buffer.alloc(P.length),Y.compressedSize=P.length,P.copy(z),A&&A(z)});S=null;break}}else if(G&&A)A(Buffer.alloc(0));else return Buffer.alloc(0)}function H(G,A){return(G.readUInt32LE(A+4)<<4)+G.readUInt32LE(A)}function j(G){try{var A=0,z,S,T;while(A+4<G.length)if(z=G.readUInt16LE(A),A+=2,S=G.readUInt16LE(A),A+=2,T=G.slice(A,A+S),A+=S,v.ID_ZIP64===z)E(T)}catch(P){throw F.Errors.EXTRA_FIELD_PARSE_ERROR()}}function E(G){var A,z,S,T;if(G.length>=v.EF_ZIP64_SCOMP){if(A=H(G,v.EF_ZIP64_SUNCOMP),Y.size===v.EF_ZIP64_OR_32)Y.size=A}if(G.length>=v.EF_ZIP64_RHO){if(z=H(G,v.EF_ZIP64_SCOMP),Y.compressedSize===v.EF_ZIP64_OR_32)Y.compressedSize=z}if(G.length>=v.EF_ZIP64_DSN){if(S=H(G,v.EF_ZIP64_RHO),Y.offset===v.EF_ZIP64_OR_32)Y.offset=S}if(G.length>=v.EF_ZIP64_DSN+4){if(T=G.readUInt32LE(v.EF_ZIP64_DSN),Y.diskNumStart===v.EF_ZIP64_OR_16)Y.diskNumStart=T}}return{get entryName(){return N.decode(X)},get rawEntryName(){return X},set entryName(G){X=F.toBuffer(G,N.encode);var A=X[X.length-1];W=A===47||A===92,Y.fileNameLength=X.length},get efs(){if(typeof L==="function")return L(this.entryName);else return L},get extra(){return $},set extra(G){$=G,Y.extraLength=G.length,j(G)},get comment(){return N.decode(J)},set comment(G){if(J=F.toBuffer(G,N.encode),Y.commentLength=J.length,J.length>65535)throw F.Errors.COMMENT_TOO_LONG()},get name(){var G=N.decode(X);return W?G.substr(G.length-1).split("/").pop():G.split("/").pop()},get isDirectory(){return W},getCompressedData:function(){return R(!1,null)},getCompressedDataAsync:function(G){R(!0,G)},setData:function(G){if(K=F.toBuffer(G,F.decoder.encode),!W&&K.length)Y.size=K.length,Y.method=F.Constants.DEFLATED,Y.crc=F.crc32(G),Y.changed=!0;else Y.method=F.Constants.STORED},getData:function(G){if(Y.changed)return K;else return I(!1,null,G)},getDataAsync:function(G,A){if(Y.changed)G(K);else I(!0,G,A)},set attr(G){Y.attr=G},get attr(){return Y.attr},set header(G){Y.loadFromBinary(G)},get header(){return Y},packCentralHeader:function(){Y.flags_efs=this.efs,Y.extraLength=$.length;var G=Y.centralHeaderToBinary(),A=F.Constants.CENHDR;return X.copy(G,A),A+=X.length,$.copy(G,A),A+=Y.extraLength,J.copy(G,A),G},packLocalHeader:function(){let G=0;Y.flags_efs=this.efs,Y.extraLocalLength=B.length;let A=Y.localHeaderToBinary(),z=Buffer.alloc(A.length+X.length+Y.extraLocalLength);return A.copy(z,G),G+=A.length,X.copy(z,G),G+=X.length,B.copy(z,G),G+=B.length,z},toJSON:function(){let G=function(A){return"<"+(A&&A.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:Y.toJSON(),compressedData:G(Q),data:G(K)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Eq=b((cX,Uq)=>{var jq=X1(),I6=Q1(),u=K0();Uq.exports=function(q,Q){var Y=[],X={},J=Buffer.alloc(0),W=new I6.MainHeader,K=!1,$=null;let B=new Set,L=Q,{noSort:U,decoder:N}=L;if(q)I(L.readEntries);else K=!0;function w(){let H=new Set;for(let j of Object.keys(X)){let E=j.split("/");if(E.pop(),!E.length)continue;for(let G=0;G<E.length;G++){let A=E.slice(0,G+1).join("/")+"/";H.add(A)}}for(let j of H)if(!(j in X)){let E=new jq(L);E.entryName=j,E.attr=16,E.temporary=!0,Y.push(E),X[E.entryName]=E,B.add(E)}}function V(){if(K=!0,X={},W.diskEntries>(q.length-W.offset)/u.Constants.CENHDR)throw u.Errors.DISK_ENTRY_TOO_LARGE();Y=Array(W.diskEntries);var H=W.offset;for(var j=0;j<Y.length;j++){var E=H,G=new jq(L,q);if(G.header=q.slice(E,E+=u.Constants.CENHDR),G.entryName=q.slice(E,E+=G.header.fileNameLength),G.header.extraLength)G.extra=q.slice(E,E+=G.header.extraLength);if(G.header.commentLength)G.comment=q.slice(E,E+G.header.commentLength);H+=G.header.centralHeaderSize,Y[j]=G,X[G.entryName]=G}B.clear(),w()}function I(H){var j=q.length-u.Constants.ENDHDR,E=Math.max(0,j-65535),G=E,A=q.length,z=-1,S=0;if(typeof L.trailingSpace==="boolean"?L.trailingSpace:!1)E=0;for(j;j>=G;j--){if(q[j]!==80)continue;if(q.readUInt32LE(j)===u.Constants.ENDSIG){z=j,S=j,A=j+u.Constants.ENDHDR,G=j-u.Constants.END64HDR;continue}if(q.readUInt32LE(j)===u.Constants.END64SIG){G=E;continue}if(q.readUInt32LE(j)===u.Constants.ZIP64SIG){z=j,A=j+u.readBigUInt64LE(q,j+u.Constants.ZIP64SIZE)+u.Constants.ZIP64LEAD;break}}if(z==-1)throw u.Errors.INVALID_FORMAT();if(W.loadFromBinary(q.slice(z,A)),W.commentLength)J=q.slice(S+u.Constants.ENDHDR);if(H)V()}function R(){if(Y.length>1&&!U)Y.sort((H,j)=>H.entryName.toLowerCase().localeCompare(j.entryName.toLowerCase()))}return{get entries(){if(!K)V();return Y.filter((H)=>!B.has(H))},get comment(){return N.decode(J)},set comment(H){J=u.toBuffer(H,N.encode),W.commentLength=J.length},getEntryCount:function(){if(!K)return W.diskEntries;return Y.length},forEach:function(H){this.entries.forEach(H)},getEntry:function(H){if(!K)V();return X[H]||null},setEntry:function(H){if(!K)V();Y.push(H),X[H.entryName]=H,W.totalEntries=Y.length},deleteFile:function(H,j=!0){if(!K)V();let E=X[H];this.getEntryChildren(E,j).map((A)=>A.entryName).forEach(this.deleteEntry)},deleteEntry:function(H){if(!K)V();let j=X[H],E=Y.indexOf(j);if(E>=0)Y.splice(E,1),delete X[H],W.totalEntries=Y.length},getEntryChildren:function(H,j=!0){if(!K)V();if(typeof H==="object")if(H.isDirectory&&j){let E=[],G=H.entryName;for(let A of Y)if(A.entryName.startsWith(G))E.push(A);return E}else return[H];return[]},getChildCount:function(H){if(H&&H.isDirectory){let j=this.getEntryChildren(H);return j.includes(H)?j.length-1:j.length}return 0},compressToBuffer:function(){if(!K)V();R();let H=[],j=[],E=0,G=0;W.size=0,W.offset=0;let A=0;for(let T of this.entries){let P=T.getCompressedData();T.header.offset=G;let Z=T.packLocalHeader(),y=Z.length+P.length;G+=y,H.push(Z),H.push(P);let O=T.packCentralHeader();j.push(O),W.size+=O.length,E+=y+O.length,A++}E+=W.mainHeaderSize,W.offset=G,W.totalEntries=A,G=0;let z=Buffer.alloc(E);for(let T of H)T.copy(z,G),G+=T.length;for(let T of j)T.copy(z,G),G+=T.length;let S=W.toBinary();if(J)J.copy(S,u.Constants.ENDHDR);return S.copy(z,G),q=z,K=!1,z},toAsyncBuffer:function(H,j,E,G){try{if(!K)V();R();let A=[],z=[],S=0,T=0,P=0;W.size=0,W.offset=0;let Z=function(y){if(y.length>0){let O=y.shift(),r=O.entryName+O.extra.toString();if(E)E(r);O.getCompressedDataAsync(function(l){if(G)G(r);O.header.offset=T;let D0=O.packLocalHeader(),L1=D0.length+l.length;T+=L1,A.push(D0),A.push(l);let g0=O.packCentralHeader();z.push(g0),W.size+=g0.length,S+=L1+g0.length,P++,Z(y)})}else{S+=W.mainHeaderSize,W.offset=T,W.totalEntries=P,T=0;let O=Buffer.alloc(S);A.forEach(function(l){l.copy(O,T),T+=l.length}),z.forEach(function(l){l.copy(O,T),T+=l.length});let r=W.toBinary();if(J)J.copy(r,u.Constants.ENDHDR);r.copy(O,T),q=O,K=!1,H(O)}};Z(Array.from(this.entries))}catch(A){j(A)}}}}});var Tq=b((pX,Mq)=>{var C=K0(),h=m("path"),H6=X1(),A6=Eq(),e=(...q)=>C.findLast(q,(Q)=>typeof Q==="boolean"),Nq=(...q)=>C.findLast(q,(Q)=>typeof Q==="string"),R6=(...q)=>C.findLast(q,(Q)=>typeof Q==="function"),z6={noSort:!1,readEntries:!1,method:C.Constants.NONE,fs:null};Mq.exports=function(q,Q){let Y=null,X=Object.assign(Object.create(null),z6);if(q&&typeof q==="object"){if(!(q instanceof Uint8Array)){if(Object.assign(X,q),q=X.input?X.input:void 0,X.input)delete X.input}if(Buffer.isBuffer(q))Y=q,X.method=C.Constants.BUFFER,q=void 0}Object.assign(X,Q);let J=new C(X);if(typeof X.decoder!=="object"||typeof X.decoder.encode!=="function"||typeof X.decoder.decode!=="function")X.decoder=C.decoder;if(q&&typeof q==="string")if(J.fs.existsSync(q))X.method=C.Constants.FILE,X.filename=q,Y=J.fs.readFileSync(q);else throw C.Errors.INVALID_FILENAME();let W=new A6(Y,X),{canonical:K,sanitize:$,zipnamefix:B}=C;function L(V){if(V&&W){var I;if(typeof V==="string")I=W.getEntry(h.posix.normalize(V));if(typeof V==="object"&&typeof V.entryName<"u"&&typeof V.header<"u")I=W.getEntry(V.entryName);if(I)return I}return null}function U(V){let{join:I,normalize:R,sep:H}=h.posix;return I(".",R(H+V.split("\\").join(H)+H))}function N(V){if(V instanceof RegExp)return function(I){return function(R){return I.test(R)}}(V);else if(typeof V!=="function")return()=>!0;return V}let w=(V,I)=>{let R=I.slice(-1);return R=R===J.sep?J.sep:"",h.relative(V,I)+R};return{readFile:function(V,I){var R=L(V);return R&&R.getData(I)||null},childCount:function(V){let I=L(V);if(I)return W.getChildCount(I)},readFileAsync:function(V,I){var R=L(V);if(R)R.getDataAsync(I);else I(null,"getEntry failed for:"+V)},readAsText:function(V,I){var R=L(V);if(R){var H=R.getData();if(H&&H.length)return H.toString(I||"utf8")}return""},readAsTextAsync:function(V,I,R){var H=L(V);if(H)H.getDataAsync(function(j,E){if(E){I(j,E);return}if(j&&j.length)I(j.toString(R||"utf8"));else I("")});else I("")},deleteFile:function(V,I=!0){var R=L(V);if(R)W.deleteFile(R.entryName,I)},deleteEntry:function(V){var I=L(V);if(I)W.deleteEntry(I.entryName)},addZipComment:function(V){W.comment=V},getZipComment:function(){return W.comment||""},addZipEntryComment:function(V,I){var R=L(V);if(R)R.comment=I},getZipEntryComment:function(V){var I=L(V);if(I)return I.comment||"";return""},updateFile:function(V,I){var R=L(V);if(R)R.setData(I)},addLocalFile:function(V,I,R,H){if(J.fs.existsSync(V)){I=I?U(I):"";let j=h.win32.basename(h.win32.normalize(V));I+=R?R:j;let E=J.fs.statSync(V),G=E.isFile()?J.fs.readFileSync(V):Buffer.alloc(0);if(E.isDirectory())I+=J.sep;this.addFile(I,G,H,E)}else throw C.Errors.FILE_NOT_FOUND(V)},addLocalFileAsync:function(V,I){V=typeof V==="object"?V:{localPath:V};let R=h.resolve(V.localPath),{comment:H}=V,{zipPath:j,zipName:E}=V,G=this;J.fs.stat(R,function(A,z){if(A)return I(A,!1);j=j?U(j):"";let S=h.win32.basename(h.win32.normalize(R));if(j+=E?E:S,z.isFile())J.fs.readFile(R,function(T,P){if(T)return I(T,!1);return G.addFile(j,P,H,z),setImmediate(I,void 0,!0)});else if(z.isDirectory())return j+=J.sep,G.addFile(j,Buffer.alloc(0),H,z),setImmediate(I,void 0,!0)})},addLocalFolder:function(V,I,R){if(R=N(R),I=I?U(I):"",V=h.normalize(V),J.fs.existsSync(V)){let H=J.findFiles(V),j=this;if(H.length)for(let E of H){let G=h.join(I,w(V,E));if(R(G))j.addLocalFile(E,h.dirname(G))}}else throw C.Errors.FILE_NOT_FOUND(V)},addLocalFolderAsync:function(V,I,R,H){H=N(H),R=R?U(R):"",V=h.normalize(V);var j=this;J.fs.open(V,"r",function(E){if(E&&E.code==="ENOENT")I(void 0,C.Errors.FILE_NOT_FOUND(V));else if(E)I(void 0,E);else{var G=J.findFiles(V),A=-1,z=function(){if(A+=1,A<G.length){var S=G[A],T=w(V,S).split("\\").join("/");if(T=T.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),H(T))J.fs.stat(S,function(P,Z){if(P)I(void 0,P);if(Z.isFile())J.fs.readFile(S,function(y,O){if(y)I(void 0,y);else j.addFile(R+T,O,"",Z),z()});else j.addFile(R+T+"/",Buffer.alloc(0),"",Z),z()});else process.nextTick(()=>{z()})}else I(!0,void 0)};z()}})},addLocalFolderAsync2:function(V,I){let R=this;V=typeof V==="object"?V:{localPath:V},localPath=h.resolve(U(V.localPath));let{zipPath:H,filter:j,namefix:E}=V;if(j instanceof RegExp)j=function(z){return function(S){return z.test(S)}}(j);else if(typeof j!=="function")j=function(){return!0};if(H=H?U(H):"",E=="latin1")E=(z)=>z.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"");if(typeof E!=="function")E=(z)=>z;let G=(z)=>h.join(H,E(w(localPath,z))),A=(z)=>h.win32.basename(h.win32.normalize(E(z)));J.fs.open(localPath,"r",function(z){if(z&&z.code==="ENOENT")I(void 0,C.Errors.FILE_NOT_FOUND(localPath));else if(z)I(void 0,z);else J.findFilesAsync(localPath,function(S,T){if(S)return I(S);if(T=T.filter((P)=>j(G(P))),!T.length)I(void 0,!1);setImmediate(T.reverse().reduce(function(P,Z){return function(y,O){if(y||O===!1)return setImmediate(P,y,!1);R.addLocalFileAsync({localPath:Z,zipPath:h.dirname(G(Z)),zipName:A(Z)},P)}},I))})})},addLocalFolderPromise:function(V,I){return new Promise((R,H)=>{this.addLocalFolderAsync2(Object.assign({localPath:V},I),(j,E)=>{if(j)H(j);if(E)R(this)})})},addFile:function(V,I,R,H){V=B(V);let j=L(V),E=j!=null;if(!E)j=new H6(X),j.entryName=V;j.comment=R||"";let G=typeof H==="object"&&H instanceof J.fs.Stats;if(G)j.header.time=H.mtime;var A=j.isDirectory?16:0;let z=j.isDirectory?16384:32768;if(G)z|=4095&H.mode;else if(typeof H==="number")z|=4095&H;else z|=j.isDirectory?493:420;if(A=(A|z<<16)>>>0,j.attr=A,j.setData(I),!E)W.setEntry(j);return j},getEntries:function(V){return W.password=V,W?W.entries:[]},getEntry:function(V){return L(V)},getEntryCount:function(){return W.getEntryCount()},forEach:function(V){return W.forEach(V)},extractEntryTo:function(V,I,R,H,j,E){H=e(!1,H),j=e(!1,j),R=e(!0,R),E=Nq(j,E);var G=L(V);if(!G)throw C.Errors.NO_ENTRY();var A=K(G.entryName),z=$(I,E&&!G.isDirectory?E:R?A:h.basename(A));if(G.isDirectory){var S=W.getEntryChildren(G);return S.forEach(function(Z){if(Z.isDirectory)return;var y=Z.getData();if(!y)throw C.Errors.CANT_EXTRACT_FILE();var O=K(Z.entryName),r=$(I,R?O:h.basename(O));let l=j?Z.header.fileAttr:void 0;J.writeFileTo(r,y,H,l)}),!0}var T=G.getData(W.password);if(!T)throw C.Errors.CANT_EXTRACT_FILE();if(J.fs.existsSync(z)&&!H)throw C.Errors.CANT_OVERRIDE();let P=j?V.header.fileAttr:void 0;return J.writeFileTo(z,T,H,P),!0},test:function(V){if(!W)return!1;for(var I in W.entries)try{if(I.isDirectory)continue;var R=W.entries[I].getData(V);if(!R)return!1}catch(H){return!1}return!0},extractAllTo:function(V,I,R,H){if(R=e(!1,R),H=Nq(R,H),I=e(!1,I),!W)throw C.Errors.NO_ZIP();W.entries.forEach(function(j){var E=$(V,K(j.entryName));if(j.isDirectory){J.makeDir(E);return}var G=j.getData(H);if(!G)throw C.Errors.CANT_EXTRACT_FILE();let A=R?j.header.fileAttr:void 0;J.writeFileTo(E,G,I,A);try{J.fs.utimesSync(E,j.header.time,j.header.time)}catch(z){throw C.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(V,I,R,H){if(H=R6(I,R,H),R=e(!1,R),I=e(!1,I),!H)return new Promise((z,S)=>{this.extractAllToAsync(V,I,R,function(T){if(T)S(T);else z(this)})});if(!W){H(C.Errors.NO_ZIP());return}V=h.resolve(V);let j=(z)=>$(V,h.normalize(K(z.entryName))),E=(z,S)=>Error(z+': "'+S+'"'),G=[],A=[];W.entries.forEach((z)=>{if(z.isDirectory)G.push(z);else A.push(z)});for(let z of G){let S=j(z),T=R?z.header.fileAttr:void 0;try{if(J.makeDir(S),T)J.fs.chmodSync(S,T);J.fs.utimesSync(S,z.header.time,z.header.time)}catch(P){H(E("Unable to create folder",S))}}A.reverse().reduce(function(z,S){return function(T){if(T)z(T);else{let P=h.normalize(K(S.entryName)),Z=$(V,P);S.getDataAsync(function(y,O){if(O)z(O);else if(!y)z(C.Errors.CANT_EXTRACT_FILE());else{let r=R?S.header.fileAttr:void 0;J.writeFileToAsync(Z,y,I,r,function(l){if(!l)z(E("Unable to write file",Z));J.fs.utimes(Z,S.header.time,S.header.time,function(D0){if(D0)z(E("Unable to set times",Z));else z()})})}})}}},H)()},writeZip:function(V,I){if(arguments.length===1){if(typeof V==="function")I=V,V=""}if(!V&&X.filename)V=X.filename;if(!V)return;var R=W.compressToBuffer();if(R){var H=J.writeFileTo(V,R,!0);if(typeof I==="function")I(!H?Error("failed"):null,"")}},writeZipPromise:function(V,I){let{overwrite:R,perm:H}=Object.assign({overwrite:!0},I);return new Promise((j,E)=>{if(!V&&X.filename)V=X.filename;if(!V)E("ADM-ZIP: ZIP File Name Missing");this.toBufferPromise().then((G)=>{let A=(z)=>z?j(z):E("ADM-ZIP: Wasn't able to write zip file");J.writeFileToAsync(V,G,R,H,A)},E)})},toBufferPromise:function(){return new Promise((V,I)=>{W.toAsyncBuffer(V,I)})},toBuffer:function(V,I,R,H){if(typeof V==="function")return W.toAsyncBuffer(V,I,R,H),null;return W.compressToBuffer()}}}});var Z1=B0(D1(),1),{program:o,createCommand:r6,createArgument:i6,createOption:n6,CommanderError:s6,InvalidArgumentError:t6,InvalidOptionArgumentError:a6,Command:e6,Argument:q8,Option:Q8,Help:Y8}=Z1.default;import{cp as F6,mkdir as t,writeFile as c,readFile as w0,rm as G1,readdir as P6}from"fs/promises";import{join as D,resolve as B1,relative as X2,basename as O6}from"path";import{spawn as Dq}from"child_process";import{homedir as S0,tmpdir as b6}from"os";import{stat as x6}from"fs/promises";var F0={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
 
@@ -94,7 +94,7 @@ This file helps students set up their environment.
94
94
  `,introReadme:`# Intro
95
95
 
96
96
  Welcome to your new course.
97
- `,introCode:'console.log("Hello from the generic course!");',introFilename:"hello.js"}},Z1=`# Progy Runner Guide
97
+ `,introCode:'console.log("Hello from the generic course!");',introFilename:"hello.js"}},F1=`# Progy Runner Guide
98
98
 
99
99
  This directory contains the "Runner" for your course. The Runner is responsible for executing student code and returning structured feedback to Progy.
100
100
 
@@ -136,12 +136,12 @@ Your runner must print a JSON object to \`stdout\` (surrounded by \`__SRP_BEGIN_
136
136
 
137
137
  ## Customizing
138
138
  You can use **any language** for your runner (Python, Rust, Bash, Node.js). Just update \`runner.command\` in \`course.json\`.
139
- `;var G8=Object.freeze({status:"aborted"});function p(q,Q,Y){function X($,B){if(!$._zod)Object.defineProperty($,"_zod",{value:{def:B,constr:K,traits:new Set},enumerable:!1});if($._zod.traits.has(q))return;$._zod.traits.add(q),Q($,B);let I=K.prototype,U=Object.keys(I);for(let E=0;E<U.length;E++){let S=U[E];if(!(S in $))$[S]=I[S].bind($)}}let J=Y?.Parent??Object;class W extends J{}Object.defineProperty(W,"name",{value:q});function K($){var B;let I=Y?.Parent?new W:this;X(I,$),(B=I._zod).deferred??(B.deferred=[]);for(let U of I._zod.deferred)U();return I}return Object.defineProperty(K,"init",{value:X}),Object.defineProperty(K,Symbol.hasInstance,{value:($)=>{if(Y?.Parent&&$ instanceof Y.Parent)return!0;return $?._zod?.traits?.has(q)}}),Object.defineProperty(K,"name",{value:q}),K}var K8=Symbol("zod_brand");class n extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}var r0={};function Q0(q){if(q)Object.assign(r0,q);return r0}function O1(q,Q){if(typeof Q==="bigint")return Q.toString();return Q}function i0(q){return{get value(){{let Y=q();return Object.defineProperty(this,"value",{value:Y}),Y}throw Error("cached value already set")}}}var P1=Symbol("evaluating");function I0(q,Q,Y){let X=void 0;Object.defineProperty(q,Q,{get(){if(X===P1)return;if(X===void 0)X=P1,X=Y();return X},set(J){Object.defineProperty(q,Q,{value:J})},configurable:!0})}var n0="captureStackTrace"in Error?Error.captureStackTrace:(...q)=>{};function b1(q){return typeof q==="object"&&q!==null&&!Array.isArray(q)}var E9=i0(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(q){return!1}});function s0(q,Q,Y){let X=new q._zod.constr(Q??q._zod.def);if(!Q||Y?.parent)X._zod.parent=q;return X}function A0(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 x1(q){return Object.keys(q).filter((Q)=>{return q[Q]._zod.optin==="optional"&&q[Q]._zod.optout==="optional"})}var $8={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 R0(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 t0(q,Q){return Q.map((Y)=>{var X;return(X=Y).path??(X.path=[]),Y.path.unshift(q),Y})}function P0(q){return typeof q==="string"?q:q?.message}function Y0(q,Q,Y){let X={...q,path:q.path??[]};if(!q.message){let J=P0(q.inst?._zod.def?.error?.(q))??P0(Q?.error?.(q))??P0(Y.customError?.(q))??P0(Y.localeError?.(q))??"Invalid input";X.message=J}if(delete X.inst,delete X.continue,!Q?.reportInput)delete X.input;return X}var C1=(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,O1,2),Object.defineProperty(q,"toString",{value:()=>q.message,enumerable:!1})},_1=p("$ZodError",C1),z0=p("$ZodError",C1,{Parent:Error});var T9=(q)=>(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!1}):{async:!1},K=Q._zod.run({value:Y,issues:[]},W);if(K instanceof Promise)throw new n;if(K.issues.length){let $=new(J?.Err??q)(K.issues.map((B)=>Y0(B,W,Q0())));throw n0($,J?.callee),$}return K.value},O0=T9(z0),D9=(q)=>async(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!0}):{async:!0},K=Q._zod.run({value:Y,issues:[]},W);if(K instanceof Promise)K=await K;if(K.issues.length){let $=new(J?.Err??q)(K.issues.map((B)=>Y0(B,W,Q0())));throw n0($,J?.callee),$}return K.value},b0=D9(z0),S9=(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 n;return W.issues.length?{success:!1,error:new(q??_1)(W.issues.map((K)=>Y0(K,J,Q0())))}:{success:!0,data:W.value}},j0=S9(z0),w9=(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((K)=>Y0(K,J,Q0())))}:{success:!0,data:W.value}},U0=w9(z0);var Z9="(?:(?:\\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])))",F9=new RegExp(`^${Z9}$`);var k1=(q)=>{let Q=q?`[\\s\\S]{${q?.minimum??0},${q?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${Q}$`)};var h1={major:4,minor:3,patch:6};var N0=p("$ZodType",(q,Q)=>{var Y;q??(q={}),q._zod.def=Q,q._zod.bag=q._zod.bag||{},q._zod.version=h1;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=(K,$,B)=>{let I=R0(K),U;for(let E of $){if(E._zod.def.when){if(!E._zod.def.when(K))continue}else if(I)continue;let S=K.issues.length,V=E._zod.check(K);if(V instanceof Promise&&B?.async===!1)throw new n;if(U||V instanceof Promise)U=(U??Promise.resolve()).then(async()=>{if(await V,K.issues.length===S)return;if(!I)I=R0(K,S)});else{if(K.issues.length===S)continue;if(!I)I=R0(K,S)}}if(U)return U.then(()=>{return K});return K},W=(K,$,B)=>{if(R0(K))return K.aborted=!0,K;let I=J($,X,B);if(I instanceof Promise){if(B.async===!1)throw new n;return I.then((U)=>q._zod.parse(U,B))}return q._zod.parse(I,B)};q._zod.run=(K,$)=>{if($.skipChecks)return q._zod.parse(K,$);if($.direction==="backward"){let I=q._zod.parse({value:K.value,issues:[]},{...$,skipChecks:!0});if(I instanceof Promise)return I.then((U)=>{return W(U,K,$)});return W(I,K,$)}let B=q._zod.parse(K,$);if(B instanceof Promise){if($.async===!1)throw new n;return B.then((I)=>J(I,X,$))}return J(B,X,$)}}I0(q,"~standard",()=>({validate:(J)=>{try{let W=j0(q,J);return W.success?{value:W.data}:{issues:W.error?.issues}}catch(W){return U0(q,J).then((K)=>K.success?{value:K.data}:{issues:K.error?.issues})}},vendor:"zod",version:1}))}),y1=p("$ZodString",(q,Q)=>{N0.init(q,Q),q._zod.pattern=[...q?._zod.bag?.patterns??[]].pop()??k1(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 g1(q,Q,Y){if(q.issues.length)Q.issues.push(...t0(Y,q.issues));Q.value[Y]=q.value}var u1=p("$ZodArray",(q,Q)=>{N0.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 K=0;K<J.length;K++){let $=J[K],B=Q.element._zod.run({value:$,issues:[]},X);if(B instanceof Promise)W.push(B.then((I)=>g1(I,Y,K)));else g1(B,Y,K)}if(W.length)return Promise.all(W).then(()=>Y);return Y}});function x0(q,Q,Y,X,J){if(q.issues.length){if(J&&!(Y in X))return;Q.issues.push(...t0(Y,q.issues))}if(q.value===void 0){if(Y in X)Q.value[Y]=void 0}else Q.value[Y]=q.value}function O9(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=x1(q.shape);return{...q,keys:Q,keySet:new Set(Q),numKeys:Q.length,optionalKeys:new Set(Y)}}function b9(q,Q,Y,X,J,W){let K=[],$=J.keySet,B=J.catchall._zod,I=B.def.type,U=B.optout==="optional";for(let E in Q){if($.has(E))continue;if(I==="never"){K.push(E);continue}let S=B.run({value:Q[E],issues:[]},X);if(S instanceof Promise)q.push(S.then((V)=>x0(V,Y,E,Q,U)));else x0(S,Y,E,Q,U)}if(K.length)Y.issues.push({code:"unrecognized_keys",keys:K,input:Q,inst:W});if(!q.length)return Y;return Promise.all(q).then(()=>{return Y})}var f1=p("$ZodObject",(q,Q)=>{if(N0.init(q,Q),!Object.getOwnPropertyDescriptor(Q,"shape")?.get){let $=Q.shape;Object.defineProperty(Q,"shape",{get:()=>{let B={...$};return Object.defineProperty(Q,"shape",{value:B}),B}})}let X=i0(()=>O9(Q));I0(q._zod,"propValues",()=>{let $=Q.shape,B={};for(let I in $){let U=$[I]._zod;if(U.values){B[I]??(B[I]=new Set);for(let E of U.values)B[I].add(E)}}return B});let J=b1,W=Q.catchall,K;q._zod.parse=($,B)=>{K??(K=X.value);let I=$.value;if(!J(I))return $.issues.push({expected:"object",code:"invalid_type",input:I,inst:q}),$;$.value={};let U=[],E=K.shape;for(let S of K.keys){let V=E[S],L=V._zod.optout==="optional",H=V._zod.run({value:I[S],issues:[]},B);if(H instanceof Promise)U.push(H.then((A)=>x0(A,$,S,I,L)));else x0(H,$,S,I,L)}if(!W)return U.length?Promise.all(U).then(()=>$):$;return b9(U,I,$,B,X.value,q)}});function m1(q,Q){return new q({type:"string",...A0(Q)})}var a0=p("ZodMiniType",(q,Q)=>{if(!q._zod)throw Error("Uninitialized schema in ZodMiniType.");N0.init(q,Q),q.def=Q,q.type=Q.type,q.parse=(Y,X)=>O0(q,Y,X,{callee:q.parse}),q.safeParse=(Y,X)=>j0(q,Y,X),q.parseAsync=async(Y,X)=>b0(q,Y,X,{callee:q.parseAsync}),q.safeParseAsync=async(Y,X)=>U0(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)=>s0(q,Y,X),q.brand=()=>q,q.register=(Y,X)=>{return Y.add(q,X),q},q.apply=(Y)=>Y(q)}),_9=p("ZodMiniString",(q,Q)=>{y1.init(q,Q),a0.init(q,Q)});function d(q){return m1(_9,q)}var k9=p("ZodMiniArray",(q,Q)=>{u1.init(q,Q),a0.init(q,Q)});function e0(q,Q){return new k9({type:"array",element:q,...A0(Q)})}var v9=p("ZodMiniObject",(q,Q)=>{f1.init(q,Q),a0.init(q,Q),I0(q,"shape",()=>Q.shape)});function X0(q,Q){let Y={type:"object",shape:q??{},...A0(Q)};return new v9(Y)}import{cp as c1,exists as J0,mkdir as h9,readFile as g9,rm as y9}from"fs/promises";import{join as W0}from"path";import{spawn as u9}from"child_process";import{homedir as f9}from"os";import{resolve as p9}from"path";var E0="course.json",m9=()=>process.env.PROGY_API_URL||"https://progy.francy.workers.dev",c9=X0({id:d(),name:d(),runner:X0({command:d(),args:e0(d()),cwd:d()}),content:X0({root:d(),exercises:d()}),setup:X0({checks:e0(X0({name:d(),type:d(),command:d()})),guide:d()})});class a{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 J0(q))return{url:p9(q)};console.log(`[INFO] Resolving alias '${q}'...`);try{let Q=`${m9()}/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=W0(q,E0);if(!await J0(Q))throw Error(`Missing ${E0} in course directory.`);let Y=await g9(Q,"utf-8"),X;try{X=JSON.parse(Y)}catch(B){throw Error(`Invalid JSON in ${E0}`)}if("repo"in X)throw Error(`Security Error: Pre-configured 'repo' field in ${E0} is forbidden. Source is potentially untrusted.`);let J=c9.safeParse(X);if(!J.success){let B=J.error.issues.map((I)=>`- ${I.path.join(".")}: ${I.message}`).join(`
140
- `);throw Error(`Invalid course configuration in ${E0}:
141
- ${B}`)}let W=W0(q,J.data.content.root);if(!await J0(W))throw Error(`Content root '${J.data.content.root}' not found.`);let K=W0(q,J.data.content.exercises);if(!await J0(K))throw Error(`Exercises directory '${J.data.content.exercises}' not found.`);let $=W0(q,J.data.setup.guide);if(!await J0($))throw Error(`Setup guide '${J.data.setup.guide}' not found.`);return J.data}static async load(q,Q){let Y=await this.resolveSource(q),{url:X,branch:J,path:W}=Y;if(console.log(`[INFO] Loading course from: ${X} (branch: ${J||"default"}, path: ${W||"root"})`),await J0(X)&&!X.endsWith(".git"))return await this.validateCourse(X),await c1(X,Q,{recursive:!0}),Y;let K=W0(f9(),".progy","tmp",`course-${Date.now()}`);await h9(K,{recursive:!0});try{if(console.log("[GIT] Initializing repository..."),await M0("git",["init"],K),await M0("git",["remote","add","origin",X],K),W)console.log(`[GIT] Configuring sparse-checkout for path: ${W}...`),await M0("git",["config","core.sparseCheckout","true"],K),await M0("git",["sparse-checkout","set",W],K);console.log("[GIT] Pulling content..."),await M0("git",["pull","--depth=1","origin",J||"main"],K);let B=W?W0(K,W):K;return console.log("[VAL] Validating course..."),await this.validateCourse(B),console.log("[INST] Installing course..."),await c1(B,Q,{recursive:!0}),Y}finally{await y9(K,{recursive:!0,force:!0})}}}function M0(q,Q,Y){return new Promise((X,J)=>{u9(q,Q,{cwd:Y,stdio:"inherit"}).on("close",(K)=>{if(K===0)X();else J(Error(`${q} exited with code ${K}`))})})}var v0=B0(Mq(),1);import{stat as Dq,mkdir as z6,rm as j6}from"fs/promises";import{join as J1,basename as U6}from"path";import{createHash as N6}from"crypto";import{homedir as E6}from"os";var M6=J1(E6(),".progy"),T6=J1(M6,"runtime"),D6=["target","node_modules",".git",".DS_Store",".next","dist"],Tq=(q)=>{return!q.split(/[/\\]/).some((Y)=>D6.includes(Y))};class q0{static async pack(q,Q){let Y=new v0.default;Y.addLocalFolder(q,"",Tq),await Y.writeZipPromise(Q)}static async unpack(q){let Q=await Dq(q),Y=`${q}-${Q.mtimeMs}`,X=N6("md5").update(Y).digest("hex").substring(0,8),J=U6(q,".progy").replace(/[^a-zA-Z0-9-]/g,"_"),W=J1(T6,`${J}-${X}`);if(await S6(W))await j6(W,{recursive:!0,force:!0});await z6(W,{recursive:!0});let K=new v0.default(q);return await new Promise(($,B)=>{K.extractAllToAsync(W,!0,!1,(I)=>{if(I)B(I);else $()})}),W}static async sync(q,Q){let Y=new v0.default;Y.addLocalFolder(q,"",Tq),await Y.writeZipPromise(Q)}}async function S6(q){try{return await Dq(q),!0}catch{return!1}}var W1={name:"progy",version:"0.13.6",description:"The interactive CLI and learning platform for Progy courses.",license:"MIT",repository:{type:"git",url:"git+https://github.com/fhorray/progy.git"},keywords:["cli","education","learning","rust","go","interactive"],author:"Progy Team",type:"module",main:"./dist/cli.js",module:"./dist/cli.js",bin:{progy:"./dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"bun run --hot src/backend/server.ts",start:"bun run src/backend/server.ts",build:"bun run ../../scripts/build.ts",prepublishOnly:"bun run build"},devDependencies:{"@nanostores/query":"^0.3.4","@nanostores/react":"^0.7.2","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.8","@radix-ui/react-tabs":"^1.1.13","@types/adm-zip":"^0.5.7","@types/bun":"latest","@types/react":"^19.0.0","@types/react-dom":"^19.0.0",autoprefixer:"^10.4.19","class-variance-authority":"^0.7.0",clsx:"^2.1.1","highlight.js":"^11.11.1","lucide-react":"^0.394.0",nanostores:"^0.10.3","radix-ui":"^1.0.1",react:"19.2.4","react-dom":"19.2.4","react-markdown":"^9.0.1","rehype-highlight":"^7.0.0","tailwind-merge":"^2.3.0"},peerDependencies:{typescript:"^5"},dependencies:{"@ai-sdk/react":"^3.0.79",ai:"^6.0.77","adm-zip":"^0.5.16","better-auth":"^1.4.18",cmdk:"^1.1.1",commander:"^12.1.0","use-stick-to-bottom":"^1.1.3",zod:"^4.3.6"}};var K1=w(D0(),".progy"),$1=w(K1,"config.json"),x6=process.env.PROGY_API_URL||"https://progy.francy.workers.dev",C6=process.env.PROGY_FRONTEND_URL||"https://progy.francy.workers.dev",wq=!import.meta.file.includes("node_modules"),_6=wq?"\x1B[33m(local/dev)\x1B[0m":"\x1B[32m(npm)\x1B[0m";if(!process.argv.includes("--completion")&&!process.argv.includes("completion"))console.log(`\x1B[1m[Progy]\x1B[0m v${W1.version} ${_6}`);var V0="course.json";async function f(q){try{return await b6(q),!0}catch{return!1}}async function k6(){let q=w(import.meta.dir,"../../../courses");if(await f(q))return q;return null}async function v6(q){if(!await f(K1))await t(K1,{recursive:!0});await c($1,JSON.stringify({token:q}))}async function h6(){if(!await f($1))return null;try{return JSON.parse(await S0($1,"utf-8")).token||null}catch{return null}}function g6(q){let Q=process.platform==="win32"?"start":process.platform==="darwin"?"open":"xdg-open";Sq(Q,[q],{shell:!0}).unref()}async function Zq(q,Q,Y){console.log(`[INFO] Starting UI in ${Q?"OFFLINE":"ONLINE"} mode...`);let J=import.meta.file.endsWith(".ts")?"ts":"js",K=["run",w(import.meta.dir,"backend",`server.${J}`)];if(process.env.ENABLE_HMR==="true")K.splice(1,0,"--hot");let $=Sq("bun",K,{stdio:"inherit",env:{...process.env,PROG_CWD:q,PROGY_OFFLINE:Q?"true":"false"}}),B=()=>{if($&&!$.killed)$.kill();process.exit(0)};if(process.on("SIGINT",B),process.on("SIGTERM",B),process.on("exit",()=>{if($&&!$.killed)$.kill()}),Y){console.log("[SYNC] Auto-save enabled.");let{watch:I}=await import("fs"),U=null,E=I(q,{recursive:!0},(S,V)=>{if(!V||V.includes(".git")||V.includes("node_modules"))return;if(U)clearTimeout(U);U=setTimeout(async()=>{try{await q0.sync(q,Y)}catch(L){console.error(`[SYNC] Failed to save: ${L}`)}},1000)});$.on("close",()=>{E.close(),console.log("[SYNC] Final save..."),q0.sync(q,Y).then(()=>process.exit(0))})}else $.on("close",(I)=>process.exit(I??0))}async function h0(q,Q){let Y=process.cwd(),X=!!Q.offline,J=Y,W=null;if(q&&q.endsWith(".progy")&&await f(q))W=V1(q);else{let $=(await F6(Y)).filter((B)=>B.endsWith(".progy"));if($.length>0){if($.length>1)console.warn(`[WARN] Multiple .progy files found. Using ${$[0]}`);W=w(Y,$[0])}}if(W){console.log(`[OPEN] Opening course: ${P6(W)}...`);try{J=await q0.unpack(W),console.log(`[KT] Runtime ready at: ${J}`)}catch(K){console.error(`[ERROR] Failed to unpack course: ${K}`),process.exit(1)}}else if(await f(w(Y,V0)))console.log("[INFO] Legacy course directory detected.");else console.log("[INFO] No .progy file or course structure found."),console.log("Run 'progy init' to create a new course.");await Zq(J,X,W)}o.name("progy").description("Universal programming course runner").version(`${W1.version} ${wq?"(local/dev)":"(npm)"}`);o.command("validate").description("Validate the current directory as a Progy course").argument("[path]","Path to course directory",".").action(async(q)=>{let Q=V1(q);console.log(`[VAL] Validating course at: ${Q}`);try{let Y=await a.validateCourse(Q);console.log(`
139
+ `;var W8=Object.freeze({status:"aborted"});function p(q,Q,Y){function X($,B){if(!$._zod)Object.defineProperty($,"_zod",{value:{def:B,constr:K,traits:new Set},enumerable:!1});if($._zod.traits.has(q))return;$._zod.traits.add(q),Q($,B);let L=K.prototype,U=Object.keys(L);for(let N=0;N<U.length;N++){let w=U[N];if(!(w in $))$[w]=L[w].bind($)}}let J=Y?.Parent??Object;class W extends J{}Object.defineProperty(W,"name",{value:q});function K($){var B;let L=Y?.Parent?new W:this;X(L,$),(B=L._zod).deferred??(B.deferred=[]);for(let U of L._zod.deferred)U();return L}return Object.defineProperty(K,"init",{value:X}),Object.defineProperty(K,Symbol.hasInstance,{value:($)=>{if(Y?.Parent&&$ instanceof Y.Parent)return!0;return $?._zod?.traits?.has(q)}}),Object.defineProperty(K,"name",{value:q}),K}var G8=Symbol("zod_brand");class n extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}var r0={};function Q0(q){if(q)Object.assign(r0,q);return r0}function b1(q,Q){if(typeof Q==="bigint")return Q.toString();return Q}function i0(q){return{get value(){{let Y=q();return Object.defineProperty(this,"value",{value:Y}),Y}throw Error("cached value already set")}}}var O1=Symbol("evaluating");function I0(q,Q,Y){let X=void 0;Object.defineProperty(q,Q,{get(){if(X===O1)return;if(X===void 0)X=O1,X=Y();return X},set(J){Object.defineProperty(q,Q,{value:J})},configurable:!0})}var n0="captureStackTrace"in Error?Error.captureStackTrace:(...q)=>{};function x1(q){return typeof q==="object"&&q!==null&&!Array.isArray(q)}var M9=i0(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(q){return!1}});function s0(q,Q,Y){let X=new q._zod.constr(Q??q._zod.def);if(!Q||Y?.parent)X._zod.parent=q;return X}function H0(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 C1(q){return Object.keys(q).filter((Q)=>{return q[Q]._zod.optin==="optional"&&q[Q]._zod.optout==="optional"})}var K8={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 A0(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 t0(q,Q){return Q.map((Y)=>{var X;return(X=Y).path??(X.path=[]),Y.path.unshift(q),Y})}function P0(q){return typeof q==="string"?q:q?.message}function Y0(q,Q,Y){let X={...q,path:q.path??[]};if(!q.message){let J=P0(q.inst?._zod.def?.error?.(q))??P0(Q?.error?.(q))??P0(Y.customError?.(q))??P0(Y.localeError?.(q))??"Invalid input";X.message=J}if(delete X.inst,delete X.continue,!Q?.reportInput)delete X.input;return X}var _1=(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,b1,2),Object.defineProperty(q,"toString",{value:()=>q.message,enumerable:!1})},k1=p("$ZodError",_1),z0=p("$ZodError",_1,{Parent:Error});var S9=(q)=>(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!1}):{async:!1},K=Q._zod.run({value:Y,issues:[]},W);if(K instanceof Promise)throw new n;if(K.issues.length){let $=new(J?.Err??q)(K.issues.map((B)=>Y0(B,W,Q0())));throw n0($,J?.callee),$}return K.value},O0=S9(z0),w9=(q)=>async(Q,Y,X,J)=>{let W=X?Object.assign(X,{async:!0}):{async:!0},K=Q._zod.run({value:Y,issues:[]},W);if(K instanceof Promise)K=await K;if(K.issues.length){let $=new(J?.Err??q)(K.issues.map((B)=>Y0(B,W,Q0())));throw n0($,J?.callee),$}return K.value},b0=w9(z0),D9=(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 n;return W.issues.length?{success:!1,error:new(q??k1)(W.issues.map((K)=>Y0(K,J,Q0())))}:{success:!0,data:W.value}},j0=D9(z0),Z9=(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((K)=>Y0(K,J,Q0())))}:{success:!0,data:W.value}},U0=Z9(z0);var F9="(?:(?:\\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])))",P9=new RegExp(`^${F9}$`);var v1=(q)=>{let Q=q?`[\\s\\S]{${q?.minimum??0},${q?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${Q}$`)};var g1={major:4,minor:3,patch:6};var E0=p("$ZodType",(q,Q)=>{var Y;q??(q={}),q._zod.def=Q,q._zod.bag=q._zod.bag||{},q._zod.version=g1;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=(K,$,B)=>{let L=A0(K),U;for(let N of $){if(N._zod.def.when){if(!N._zod.def.when(K))continue}else if(L)continue;let w=K.issues.length,V=N._zod.check(K);if(V instanceof Promise&&B?.async===!1)throw new n;if(U||V instanceof Promise)U=(U??Promise.resolve()).then(async()=>{if(await V,K.issues.length===w)return;if(!L)L=A0(K,w)});else{if(K.issues.length===w)continue;if(!L)L=A0(K,w)}}if(U)return U.then(()=>{return K});return K},W=(K,$,B)=>{if(A0(K))return K.aborted=!0,K;let L=J($,X,B);if(L instanceof Promise){if(B.async===!1)throw new n;return L.then((U)=>q._zod.parse(U,B))}return q._zod.parse(L,B)};q._zod.run=(K,$)=>{if($.skipChecks)return q._zod.parse(K,$);if($.direction==="backward"){let L=q._zod.parse({value:K.value,issues:[]},{...$,skipChecks:!0});if(L instanceof Promise)return L.then((U)=>{return W(U,K,$)});return W(L,K,$)}let B=q._zod.parse(K,$);if(B instanceof Promise){if($.async===!1)throw new n;return B.then((L)=>J(L,X,$))}return J(B,X,$)}}I0(q,"~standard",()=>({validate:(J)=>{try{let W=j0(q,J);return W.success?{value:W.data}:{issues:W.error?.issues}}catch(W){return U0(q,J).then((K)=>K.success?{value:K.data}:{issues:K.error?.issues})}},vendor:"zod",version:1}))}),u1=p("$ZodString",(q,Q)=>{E0.init(q,Q),q._zod.pattern=[...q?._zod.bag?.patterns??[]].pop()??v1(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 y1(q,Q,Y){if(q.issues.length)Q.issues.push(...t0(Y,q.issues));Q.value[Y]=q.value}var f1=p("$ZodArray",(q,Q)=>{E0.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 K=0;K<J.length;K++){let $=J[K],B=Q.element._zod.run({value:$,issues:[]},X);if(B instanceof Promise)W.push(B.then((L)=>y1(L,Y,K)));else y1(B,Y,K)}if(W.length)return Promise.all(W).then(()=>Y);return Y}});function x0(q,Q,Y,X,J){if(q.issues.length){if(J&&!(Y in X))return;Q.issues.push(...t0(Y,q.issues))}if(q.value===void 0){if(Y in X)Q.value[Y]=void 0}else Q.value[Y]=q.value}function b9(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=C1(q.shape);return{...q,keys:Q,keySet:new Set(Q),numKeys:Q.length,optionalKeys:new Set(Y)}}function x9(q,Q,Y,X,J,W){let K=[],$=J.keySet,B=J.catchall._zod,L=B.def.type,U=B.optout==="optional";for(let N in Q){if($.has(N))continue;if(L==="never"){K.push(N);continue}let w=B.run({value:Q[N],issues:[]},X);if(w instanceof Promise)q.push(w.then((V)=>x0(V,Y,N,Q,U)));else x0(w,Y,N,Q,U)}if(K.length)Y.issues.push({code:"unrecognized_keys",keys:K,input:Q,inst:W});if(!q.length)return Y;return Promise.all(q).then(()=>{return Y})}var m1=p("$ZodObject",(q,Q)=>{if(E0.init(q,Q),!Object.getOwnPropertyDescriptor(Q,"shape")?.get){let $=Q.shape;Object.defineProperty(Q,"shape",{get:()=>{let B={...$};return Object.defineProperty(Q,"shape",{value:B}),B}})}let X=i0(()=>b9(Q));I0(q._zod,"propValues",()=>{let $=Q.shape,B={};for(let L in $){let U=$[L]._zod;if(U.values){B[L]??(B[L]=new Set);for(let N of U.values)B[L].add(N)}}return B});let J=x1,W=Q.catchall,K;q._zod.parse=($,B)=>{K??(K=X.value);let L=$.value;if(!J(L))return $.issues.push({expected:"object",code:"invalid_type",input:L,inst:q}),$;$.value={};let U=[],N=K.shape;for(let w of K.keys){let V=N[w],I=V._zod.optout==="optional",R=V._zod.run({value:L[w],issues:[]},B);if(R instanceof Promise)U.push(R.then((H)=>x0(H,$,w,L,I)));else x0(R,$,w,L,I)}if(!W)return U.length?Promise.all(U).then(()=>$):$;return x9(U,L,$,B,X.value,q)}});function c1(q,Q){return new q({type:"string",...H0(Q)})}var a0=p("ZodMiniType",(q,Q)=>{if(!q._zod)throw Error("Uninitialized schema in ZodMiniType.");E0.init(q,Q),q.def=Q,q.type=Q.type,q.parse=(Y,X)=>O0(q,Y,X,{callee:q.parse}),q.safeParse=(Y,X)=>j0(q,Y,X),q.parseAsync=async(Y,X)=>b0(q,Y,X,{callee:q.parseAsync}),q.safeParseAsync=async(Y,X)=>U0(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)=>s0(q,Y,X),q.brand=()=>q,q.register=(Y,X)=>{return Y.add(q,X),q},q.apply=(Y)=>Y(q)}),k9=p("ZodMiniString",(q,Q)=>{u1.init(q,Q),a0.init(q,Q)});function d(q){return c1(k9,q)}var v9=p("ZodMiniArray",(q,Q)=>{f1.init(q,Q),a0.init(q,Q)});function e0(q,Q){return new v9({type:"array",element:q,...H0(Q)})}var h9=p("ZodMiniObject",(q,Q)=>{m1.init(q,Q),a0.init(q,Q),I0(q,"shape",()=>Q.shape)});function X0(q,Q){let Y={type:"object",shape:q??{},...H0(Q)};return new h9(Y)}import{cp as p1,exists as J0,mkdir as g9,readFile as y9,rm as u9}from"fs/promises";import{join as W0}from"path";import{spawn as f9}from"child_process";import{homedir as m9}from"os";import{resolve as l9}from"path";var N0="course.json",c9=()=>process.env.PROGY_API_URL||"https://progy.francy.workers.dev",p9=X0({id:d(),name:d(),runner:X0({command:d(),args:e0(d()),cwd:d()}),content:X0({root:d(),exercises:d()}),setup:X0({checks:e0(X0({name:d(),type:d(),command:d()})),guide:d()})});class a{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 J0(q))return{url:l9(q)};console.log(`[INFO] Resolving alias '${q}'...`);try{let Q=`${c9()}/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=W0(q,N0);if(!await J0(Q))throw Error(`Missing ${N0} in course directory.`);let Y=await y9(Q,"utf-8"),X;try{X=JSON.parse(Y)}catch(B){throw Error(`Invalid JSON in ${N0}`)}if("repo"in X)throw Error(`Security Error: Pre-configured 'repo' field in ${N0} is forbidden. Source is potentially untrusted.`);let J=p9.safeParse(X);if(!J.success){let B=J.error.issues.map((L)=>`- ${L.path.join(".")}: ${L.message}`).join(`
140
+ `);throw Error(`Invalid course configuration in ${N0}:
141
+ ${B}`)}let W=W0(q,J.data.content.root);if(!await J0(W))throw Error(`Content root '${J.data.content.root}' not found.`);let K=W0(q,J.data.content.exercises);if(!await J0(K))throw Error(`Exercises directory '${J.data.content.exercises}' not found.`);let $=W0(q,J.data.setup.guide);if(!await J0($))throw Error(`Setup guide '${J.data.setup.guide}' not found.`);return J.data}static async load(q,Q){let Y=await this.resolveSource(q),{url:X,branch:J,path:W}=Y;if(console.log(`[INFO] Loading course from: ${X} (branch: ${J||"default"}, path: ${W||"root"})`),await J0(X)&&!X.endsWith(".git"))return await this.validateCourse(X),await p1(X,Q,{recursive:!0}),Y;let K=W0(m9(),".progy","tmp",`course-${Date.now()}`);await g9(K,{recursive:!0});try{if(console.log("[GIT] Initializing repository..."),await M0("git",["init"],K),await M0("git",["remote","add","origin",X],K),W)console.log(`[GIT] Configuring sparse-checkout for path: ${W}...`),await M0("git",["config","core.sparseCheckout","true"],K),await M0("git",["sparse-checkout","set",W],K);console.log("[GIT] Pulling content..."),await M0("git",["pull","--depth=1","origin",J||"main"],K);let B=W?W0(K,W):K;return console.log("[VAL] Validating course..."),await this.validateCourse(B),console.log("[INST] Installing course..."),await p1(B,Q,{recursive:!0}),Y}finally{await u9(K,{recursive:!0,force:!0})}}}function M0(q,Q,Y){return new Promise((X,J)=>{f9(q,Q,{cwd:Y,stdio:"inherit"}).on("close",(K)=>{if(K===0)X();else J(Error(`${q} exited with code ${K}`))})})}var v0=B0(Tq(),1);import{stat as wq,mkdir as j6,rm as U6}from"fs/promises";import{join as J1,basename as E6}from"path";import{createHash as N6}from"crypto";import{homedir as M6}from"os";var T6=J1(M6(),".progy"),S6=J1(T6,"runtime"),w6=["target","node_modules",".git",".DS_Store",".next","dist"],Sq=(q)=>{return!q.split(/[/\\]/).some((Y)=>w6.includes(Y))};class q0{static async pack(q,Q){let Y=new v0.default;Y.addLocalFolder(q,"",Sq),await Y.writeZipPromise(Q)}static async unpack(q){let Q=await wq(q),Y=`${q}-${Q.mtimeMs}`,X=N6("md5").update(Y).digest("hex").substring(0,8),J=E6(q,".progy").replace(/[^a-zA-Z0-9-]/g,"_"),W=J1(S6,`${J}-${X}`);if(await D6(W))await U6(W,{recursive:!0,force:!0});await j6(W,{recursive:!0});let K=new v0.default(q);return await new Promise(($,B)=>{K.extractAllToAsync(W,!0,!1,(L)=>{if(L)B(L);else $()})}),W}static async sync(q,Q){let Y=new v0.default;Y.addLocalFolder(q,"",Sq),await Y.writeZipPromise(Q)}}async function D6(q){try{return await wq(q),!0}catch{return!1}}var W1={name:"progy",version:"0.13.7",description:"The interactive CLI and learning platform for Progy courses.",license:"MIT",repository:{type:"git",url:"git+https://github.com/fhorray/progy.git"},keywords:["cli","education","learning","rust","go","interactive"],author:"Progy Team",type:"module",main:"./dist/cli.js",module:"./dist/cli.js",bin:{progy:"./dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"bun run --hot src/backend/server.ts",start:"bun run src/backend/server.ts",build:"bun run ../../scripts/build.ts",prepublishOnly:"bun run build"},devDependencies:{"@nanostores/query":"^0.3.4","@nanostores/react":"^0.7.2","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.8","@radix-ui/react-tabs":"^1.1.13","@types/adm-zip":"^0.5.7","@types/bun":"latest","@types/react":"^19.0.0","@types/react-dom":"^19.0.0",autoprefixer:"^10.4.19","class-variance-authority":"^0.7.0",clsx:"^2.1.1","highlight.js":"^11.11.1","lucide-react":"^0.394.0",nanostores:"^0.10.3","radix-ui":"^1.0.1",react:"19.2.4","react-dom":"19.2.4","react-markdown":"^9.0.1","rehype-highlight":"^7.0.0","tailwind-merge":"^2.3.0"},peerDependencies:{typescript:"^5"},dependencies:{"@ai-sdk/react":"^3.0.79",ai:"^6.0.77","adm-zip":"^0.5.16","better-auth":"^1.4.18",cmdk:"^1.1.1",commander:"^12.1.0","use-stick-to-bottom":"^1.1.3",zod:"^4.3.6"}};var $1=D(S0(),".progy"),V1=D($1,"config.json"),K1=process.env.PROGY_API_URL||"https://progy.francy.workers.dev",B2=process.env.PROGY_FRONTEND_URL||"https://progy.francy.workers.dev",Zq=!import.meta.file.includes("node_modules"),C6=Zq?"\x1B[33m(local/dev)\x1B[0m":"\x1B[32m(npm)\x1B[0m";if(!process.argv.includes("--completion")&&!process.argv.includes("completion"))console.log(`\x1B[1m[Progy]\x1B[0m v${W1.version} ${C6}`);var V0="course.json";async function f(q){try{return await x6(q),!0}catch{return!1}}async function _6(){let q=D(import.meta.dir,"../../../courses");if(await f(q))return q;return null}async function k6(q){if(!await f($1))await t($1,{recursive:!0});await c(V1,JSON.stringify({token:q}))}async function v6(){if(!await f(V1))return null;try{return JSON.parse(await w0(V1,"utf-8")).token||null}catch{return null}}function h6(q){let Q=process.platform==="win32"?"start":process.platform==="darwin"?"open":"xdg-open";Dq(Q,[q],{shell:!0}).unref()}async function Fq(q,Q,Y){console.log(`[INFO] Starting UI in ${Q?"OFFLINE":"ONLINE"} mode...`);let J=import.meta.file.endsWith(".ts")?"ts":"js",K=["run",D(import.meta.dir,"backend",`server.${J}`)];if(process.env.ENABLE_HMR==="true")K.splice(1,0,"--hot");let $=Dq("bun",K,{stdio:"inherit",env:{...process.env,PROG_CWD:q,PROGY_OFFLINE:Q?"true":"false"}}),B=()=>{if($&&!$.killed)$.kill();process.exit(0)};if(process.on("SIGINT",B),process.on("SIGTERM",B),process.on("exit",()=>{if($&&!$.killed)$.kill()}),Y){console.log("[SYNC] Auto-save enabled.");let{watch:L}=await import("fs"),U=null,N=L(q,{recursive:!0},(w,V)=>{if(!V||V.includes(".git")||V.includes("node_modules"))return;if(U)clearTimeout(U);U=setTimeout(async()=>{try{await q0.sync(q,Y)}catch(I){console.error(`[SYNC] Failed to save: ${I}`)}},1000)});$.on("close",()=>{N.close(),console.log("[SYNC] Final save..."),q0.sync(q,Y).then(()=>process.exit(0))})}else $.on("close",(L)=>process.exit(L??0))}async function h0(q,Q){let Y=process.cwd(),X=!!Q.offline,J=Y,W=null;if(q&&q.endsWith(".progy")&&await f(q))W=B1(q);else{let $=(await P6(Y)).filter((B)=>B.endsWith(".progy"));if($.length>0){if($.length>1)console.warn(`[WARN] Multiple .progy files found. Using ${$[0]}`);W=D(Y,$[0])}}if(W){console.log(`[OPEN] Opening course: ${O6(W)}...`);try{J=await q0.unpack(W),console.log(`[KT] Runtime ready at: ${J}`)}catch(K){console.error(`[ERROR] Failed to unpack course: ${K}`),process.exit(1)}}else if(await f(D(Y,V0)))console.log("[INFO] Legacy course directory detected.");else console.log("[INFO] No .progy file or course structure found."),console.log("Run 'progy init' to create a new course.");await Fq(J,X,W)}o.name("progy").description("Universal programming course runner").version(`${W1.version} ${Zq?"(local/dev)":"(npm)"}`);o.command("validate").description("Validate the current directory as a Progy course").argument("[path]","Path to course directory",".").action(async(q)=>{let Q=B1(q);console.log(`[VAL] Validating course at: ${Q}`);try{let Y=await a.validateCourse(Q);console.log(`
142
142
  \u2705 Course is Valid!`),console.log(` ID: ${Y.id}`),console.log(` Name: ${Y.name}`),console.log(` Content: ${Y.content.root}`)}catch(Y){console.error(`
143
- \u274C Validation Failed:`),console.error(Y.message),process.exit(1)}});o.command("dev").description("Run the current directory as a course (Hot-reload/No-packaging)").option("--offline","Run in offline mode").action(async(q)=>{let Q=process.cwd();try{await a.validateCourse(Q)}catch(Y){console.error("[ERROR] Current directory is not a valid course:"),console.error(Y.message),process.exit(1)}console.log(`[DEV] Starting in Development Mode (Source: ${Q})`),await Zq(Q,!!q.offline,null)});o.command("pack").description("Package the current directory into a .progy file").option("-o, --out <file>","Output filename").action(async(q)=>{let Q=process.cwd();try{let Y=await a.validateCourse(Q),X=q.out||`${Y.id}.progy`,J=V1(X);console.log(`[PACK] Packaging course '${Y.id}'...`),await q0.pack(Q,J),console.log(`[SUCCESS] Created: ${X}`)}catch(Y){console.error(`
144
- \u274C Packaging Failed:`),console.error(Y.message),process.exit(1)}});o.command("init").description("Initialize a new course in the current directory").option("-c, --course <course>","Language/Course to initialize (e.g., rust)").option("--offline","Run in offline mode (Guest access, local storage only)").action(async(q)=>{let Q=process.cwd(),Y=!!q.offline,X=w(Q,V0),J=await f(X),W=null,K=q.course||"generic";if(J&&!q.course){console.log(`[INFO] Detected '${V0}'. Starting progy...`);let V=JSON.parse(await S0(X,"utf-8"));console.log(`[INFO] Course '${V.name}' found.`),await h0(void 0,{offline:Y});return}let $=null;if(!Y){if($=await h6(),!$)console.error("\u274C Authentication required for Online Mode."),process.exit(1)}if(console.log(`[INFO] Initializing ${K} course in ${Q}...`),K==="generic"){let V=F0.generic;if(!V)throw Error("Generic template not found");await c(w(Q,V0),JSON.stringify(V.courseJson,null,2)),await c(w(Q,"SETUP.md"),V.setupMd);let L=w(Q,"content","01_intro");await t(L,{recursive:!0}),await c(w(L,"README.md"),V.introReadme),await c(w(L,V.introFilename),V.introCode);let H=w(Q,"runner");await t(H,{recursive:!0}),await c(w(H,"README.md"),Z1),await c(w(H,"index.js"),`
143
+ \u274C Validation Failed:`),console.error(Y.message),process.exit(1)}});o.command("dev").description("Run the current directory as a course (Hot-reload/No-packaging)").option("--offline","Run in offline mode").action(async(q)=>{let Q=process.cwd();try{await a.validateCourse(Q)}catch(Y){console.error("[ERROR] Current directory is not a valid course:"),console.error(Y.message),process.exit(1)}console.log(`[DEV] Starting in Development Mode (Source: ${Q})`),await Fq(Q,!!q.offline,null)});o.command("pack").description("Package the current directory into a .progy file").option("-o, --out <file>","Output filename").action(async(q)=>{let Q=process.cwd();try{let Y=await a.validateCourse(Q),X=q.out||`${Y.id}.progy`,J=B1(X);console.log(`[PACK] Packaging course '${Y.id}'...`),await q0.pack(Q,J),console.log(`[SUCCESS] Created: ${X}`)}catch(Y){console.error(`
144
+ \u274C Packaging Failed:`),console.error(Y.message),process.exit(1)}});o.command("init").description("Initialize a new course in the current directory").option("-c, --course <course>","Language/Course to initialize (e.g., rust)").option("--offline","Run in offline mode (Guest access, local storage only)").action(async(q)=>{let Q=process.cwd(),Y=!!q.offline,X=D(Q,V0),J=await f(X),W=null,K=q.course||"generic";if(J&&!q.course){console.log(`[INFO] Detected '${V0}'. Starting progy...`);let V=JSON.parse(await w0(X,"utf-8"));console.log(`[INFO] Course '${V.name}' found.`),await h0(void 0,{offline:Y});return}let $=null;if(!Y){if($=await v6(),!$)console.error("\u274C Authentication required for Online Mode."),process.exit(1)}if(console.log(`[INFO] Initializing ${K} course in ${Q}...`),K==="generic"){let V=F0.generic;if(!V)throw Error("Generic template not found");await c(D(Q,V0),JSON.stringify(V.courseJson,null,2)),await c(D(Q,"SETUP.md"),V.setupMd);let I=D(Q,"content","01_intro");await t(I,{recursive:!0}),await c(D(I,"README.md"),V.introReadme),await c(D(I,V.introFilename),V.introCode);let R=D(Q,"runner");await t(R,{recursive:!0}),await c(D(R,"README.md"),F1),await c(D(R,"index.js"),`
145
145
  const args = process.argv.slice(2);
146
146
  console.log("__SRP_BEGIN__");
147
147
  console.log(JSON.stringify({
@@ -150,9 +150,9 @@ console.log(JSON.stringify({
150
150
  tests: [{ name: "Test", status: "pass" }]
151
151
  }));
152
152
  console.log("__SRP_END__");
153
- `),console.log("[SUCCESS] Initialized generic course."),console.log("Run 'bunx progy dev' to start developing.");return}let B=await k6(),I=!1;if(B){console.log(`[INFO] Checking local courses directory: ${B}`);let V=w(B,K);if(await f(V))try{console.log("[VAL] Validating local course..."),await a.validateCourse(V);let L=["content","runner","Cargo.toml","go.mod","SETUP.md",V0];for(let H of L){let A=w(V,H),j=w(Q,H);if(await f(A))console.log(`[COPY] ${H}...`),await Z6(A,j,{recursive:!0})}I=!0}catch(L){console.warn(`[WARN] Local course validation failed: ${L}`)}}let U=w(Q,`${K}.progy`);if(await f(U)){console.log(`[INFO] Found '${K}.progy'. Opening existing file...`),await h0(U,{offline:Y});return}let E=w(O6(),`progy-init-${Date.now()}`);await t(E,{recursive:!0});let S=K.replace(/\//g,"-");try{W=await a.load(K,E);let V=w(E,V0);if(await f(V)){let H=await S0(V,"utf-8"),A=JSON.parse(H);if(A.id)S=A.id;let j=!1;if(W)A.repo=W.url,j=!0;if(j)await c(V,JSON.stringify(A,null,2)),console.log("[META] Course metadata injected.")}let L=w(Q,`${S}.progy`);if(await f(L))console.log(`[INFO] File '${S}.progy' already exists. Using existing file.`);else console.log(`[INFO] Packaging course from ${E}...`),await q0.pack(E,L),console.log(`[SUCCESS] Course packaged: ${S}.progy`);if(E&&await f(E))await G1(E,{recursive:!0,force:!0});console.log(`
153
+ `),console.log("[SUCCESS] Initialized generic course."),console.log("Run 'bunx progy dev' to start developing.");return}let B=await _6(),L=!1;if(B){console.log(`[INFO] Checking local courses directory: ${B}`);let V=D(B,K);if(await f(V))try{console.log("[VAL] Validating local course..."),await a.validateCourse(V);let I=["content","runner","Cargo.toml","go.mod","SETUP.md",V0];for(let R of I){let H=D(V,R),j=D(Q,R);if(await f(H))console.log(`[COPY] ${R}...`),await F6(H,j,{recursive:!0})}L=!0}catch(I){console.warn(`[WARN] Local course validation failed: ${I}`)}}let U=D(Q,`${K}.progy`);if(await f(U)){console.log(`[INFO] Found '${K}.progy'. Opening existing file...`),await h0(U,{offline:Y});return}let N=D(b6(),`progy-init-${Date.now()}`);await t(N,{recursive:!0});let w=K.replace(/\//g,"-");try{W=await a.load(K,N);let V=D(N,V0);if(await f(V)){let R=await w0(V,"utf-8"),H=JSON.parse(R);if(H.id)w=H.id;let j=!1;if(W)H.repo=W.url,j=!0;if(j)await c(V,JSON.stringify(H,null,2)),console.log("[META] Course metadata injected.")}let I=D(Q,`${w}.progy`);if(await f(I))console.log(`[INFO] File '${w}.progy' already exists. Using existing file.`);else console.log(`[INFO] Packaging course from ${N}...`),await q0.pack(N,I),console.log(`[SUCCESS] Course packaged: ${w}.progy`);if(N&&await f(N))await G1(N,{recursive:!0,force:!0});console.log(`
154
154
  To start the course, run:
155
- bunx progy`),await h0(L,{offline:Y})}catch(V){console.error(`[ERROR] Failed to initialize course: ${V}`),await G1(E,{recursive:!0,force:!0}),process.exit(1)}finally{if(await f(E))await G1(E,{recursive:!0,force:!0})}});o.command("start",{isDefault:!0}).description("Start the Progy server (opens local .progy file)").option("--offline","Run in offline mode").argument("[file]","Specific .progy file to open").action(async(q,Q)=>{await h0(q,Q)});o.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=w(Q,Y);if(await f(J))console.error(`[ERROR] Directory '${Y}' already exists.`),process.exit(1);let W=F0[X];if(!W)console.error(`[ERROR] Unsupported language '${X}'. Supported: ${Object.keys(F0).join(", ")}`),process.exit(1);console.log(`[INFO] Creating course '${Y}' with template '${X}'...`),await t(J,{recursive:!0}),await t(w(J,"content","01_intro"),{recursive:!0});let K=JSON.stringify(W.courseJson,null,2).replace(/{{id}}/g,Y).replace(/{{name}}/g,Y);if(await c(w(J,"course.json"),K),await c(w(J,"SETUP.md"),W.setupMd),await c(w(J,"content","01_intro","README.md"),W.introReadme),await c(w(J,"content","01_intro",W.introFilename),W.introCode),X==="go"){let $=w(J,"runner");await t($,{recursive:!0});let B=`package main
155
+ bunx progy`),await h0(I,{offline:Y})}catch(V){console.error(`[ERROR] Failed to initialize course: ${V}`),await G1(N,{recursive:!0,force:!0}),process.exit(1)}finally{if(await f(N))await G1(N,{recursive:!0,force:!0})}});o.command("start",{isDefault:!0}).description("Start the Progy server (opens local .progy file)").option("--offline","Run in offline mode").argument("[file]","Specific .progy file to open").action(async(q,Q)=>{await h0(q,Q)});o.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=D(Q,Y);if(await f(J))console.error(`[ERROR] Directory '${Y}' already exists.`),process.exit(1);let W=F0[X];if(!W)console.error(`[ERROR] Unsupported language '${X}'. Supported: ${Object.keys(F0).join(", ")}`),process.exit(1);console.log(`[INFO] Creating course '${Y}' with template '${X}'...`),await t(J,{recursive:!0}),await t(D(J,"content","01_intro"),{recursive:!0});let K=JSON.stringify(W.courseJson,null,2).replace(/{{id}}/g,Y).replace(/{{name}}/g,Y);if(await c(D(J,"course.json"),K),await c(D(J,"SETUP.md"),W.setupMd),await c(D(J,"content","01_intro","README.md"),W.introReadme),await c(D(J,"content","01_intro",W.introFilename),W.introCode),X==="go"){let $=D(J,"runner");await t($,{recursive:!0});let B=`package main
156
156
  import (
157
157
  "bufio"
158
158
  "encoding/json"
@@ -193,12 +193,14 @@ func main() {
193
193
  fmt.Println("__SRP_END__")
194
194
  if !srp.Success { os.Exit(0) }
195
195
  }
196
- `;await c(w($,"main.go"),B),await c(w(J,"go.mod"),`module ${Y}
196
+ `;await c(D($,"main.go"),B),await c(D(J,"go.mod"),`module ${Y}
197
197
 
198
198
  go 1.21
199
199
  `)}console.log("[SUCCESS] Course created!"),console.log(`
200
200
  To get started:
201
201
  cd ${Y}
202
- bunx progy init`)});var Fq=o.command("config").description("Manage global configuration");Fq.command("set <key> <value>").description("Set a configuration value (e.g., ai.provider openai)").action(async(q,Q)=>{let Y=q.split("."),X=w(D0(),".progy","config.json"),J={};if(await f(X))J=JSON.parse(await S0(X,"utf-8"));let W=J;for(let K=0;K<Y.length-1;K++){let $=Y[K];if(!W[$]||typeof W[$]!=="object")W[$]={};W=W[$]}if(W[Y[Y.length-1]]=Q,!await f(w(D0(),".progy")))await t(w(D0(),".progy"),{recursive:!0});await c(X,JSON.stringify(J,null,2)),console.log(`[SUCCESS] Updated ${q} to ${Q}`)});Fq.command("list").description("List current configuration").action(async()=>{let q=w(D0(),".progy","config.json");if(await f(q)){let Q=await S0(q,"utf-8");console.log(Q)}else console.log("{}")});o.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:`${x6}/api/auth`,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:K,verification_uri:$,interval:B}=X,I=$.startsWith("http")?$:`${C6}${$}`;console.log(`
203
- Please authenticate in your browser:`),console.log(`\x1B[36m${I}\x1B[0m`),console.log(`Code: \x1B[33m${K}\x1B[0m
204
- `),g6(I),console.log("[WAIT] Waiting for authorization...");let E=await(async()=>{while(!0){let{data:S,error:V}=await Y.device.token({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:W,client_id:"progy-cli"});if(S?.access_token)return S.access_token;if(V){let L=V.error;if(L==="access_denied"||L==="expired_token")throw Error(V.error_description||L)}await new Promise((L)=>setTimeout(L,(B||5)*1000))}})();if(E)await v6(E),console.log("[SUCCESS] Logged in successfully!")}catch(X){console.error(`[ERROR] Login failed: ${X.message||X}`),process.exit(1)}});o.parse();
202
+ bunx progy init`)});var Pq=o.command("config").description("Manage global configuration");Pq.command("set <key> <value>").description("Set a configuration value (e.g., ai.provider openai)").action(async(q,Q)=>{let Y=q.split("."),X=D(S0(),".progy","config.json"),J={};if(await f(X))J=JSON.parse(await w0(X,"utf-8"));let W=J;for(let K=0;K<Y.length-1;K++){let $=Y[K];if(!W[$]||typeof W[$]!=="object")W[$]={};W=W[$]}if(W[Y[Y.length-1]]=Q,!await f(D(S0(),".progy")))await t(D(S0(),".progy"),{recursive:!0});await c(X,JSON.stringify(J,null,2)),console.log(`[SUCCESS] Updated ${q} to ${Q}`)});Pq.command("list").description("List current configuration").action(async()=>{let q=D(S0(),".progy","config.json");if(await f(q)){let Q=await w0(q,"utf-8");console.log(Q)}else console.log("{}")});o.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:`${K1}/api/auth`,plugins:[Q()]});try{console.log("[INFO] Requesting login session...");let X=await fetch(`${K1}/api/auth/device/code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:"progy-cli"})});if(!X.ok)throw Error(await X.text());let J=await X.json(),{device_code:W,user_code:K,verification_uri:$,verification_uri_complete:B}=J;console.log(`
203
+ Please authenticate in your browser:`),console.log(`\x1B[36m${B||$}\x1B[0m`),console.log(`Code: \x1B[33m${K}\x1B[0m
204
+ `),h6(B||$),console.log("[WAIT] Waiting for authorization...");let L=J.interval||5,U=J.expires_in||300,N=Date.now();while(Date.now()-N<U*1000){await new Promise((w)=>setTimeout(w,L*1000));try{let w=await fetch(`${K1}/api/auth/device/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:J.device_code,client_id:"progy-cli"})}),V=await w.json();if(w.ok&&V.token)await k6(V.token),console.log(`
205
+ [SUCCESS] Logged in successfully!`),process.exit(0);if(V.error){if(V.error==="authorization_pending")continue;if(V.error==="slow_down"){await new Promise((I)=>setTimeout(I,5000));continue}throw Error(V.error)}}catch(w){}}throw Error("Authorization timed out.")}catch(X){console.error(`
206
+ [ERROR] Login failed: ${X.message||X}`),process.exit(1)}});o.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "progy",
3
- "version": "0.13.6",
3
+ "version": "0.13.7",
4
4
  "description": "The interactive CLI and learning platform for Progy courses.",
5
5
  "license": "MIT",
6
6
  "repository": {