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.
- package/dist/cli.js +28 -26
- 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
|
|
4
|
-
`).replace(/^/gm," ".repeat(2))}let B=[`Usage: ${Q.commandUsage(q)}`,""],
|
|
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
|
-
`),
|
|
8
|
-
|.{1,${K-1}}([${
|
|
9
|
-
`)return"";return(
|
|
10
|
-
`)}}
|
|
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""}
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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"}},
|
|
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 ${
|
|
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
|
|
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
|
|
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=
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
203
|
-
Please authenticate in your browser:`),console.log(`\x1B[36m${
|
|
204
|
-
`),
|
|
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();
|