airc-cli 0.1.0
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/README.md +724 -0
- package/dist/index.js +309 -0
- package/package.json +40 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{createRequire as t3}from"node:module";var l3=Object.create;var{getPrototypeOf:c3,defineProperty:$5,getOwnPropertyNames:o3}=Object;var r3=Object.prototype.hasOwnProperty;var y=(q,J,Z)=>{Z=q!=null?l3(c3(q)):{};let X=J||!q||!q.__esModule?$5(Z,"default",{value:q,enumerable:!0}):Z;for(let Y of o3(q))if(!r3.call(X,Y))$5(X,Y,{get:()=>q[Y],enumerable:!0});return X};var z=(q,J)=>()=>(J||q((J={exports:{}}).exports,J),J.exports);var s3=(q,J)=>{for(var Z in J)$5(q,Z,{get:J[Z],enumerable:!0,configurable:!0,set:(X)=>J[Z]=()=>X})};var a3=(q,J)=>()=>(q&&(J=q(q=0)),J);var P=t3(import.meta.url);var H1=z((e3)=>{class K5 extends Error{constructor(q,J,Z){super(Z);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=J,this.exitCode=q,this.nestedError=void 0}}class X0 extends K5{constructor(q){super(1,"commander.invalidArgument",q);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}e3.CommanderError=K5;e3.InvalidArgumentError=X0});var v1=z((Yq)=>{var{InvalidArgumentError:Zq}=H1();class Y0{constructor(q,J){switch(this.description=J||"",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,J){if(J===this.defaultValue||!Array.isArray(J))return[q];return J.concat(q)}default(q,J){return this.defaultValue=q,this.defaultValueDescription=J,this}argParser(q){return this.parseArg=q,this}choices(q){return this.argChoices=q.slice(),this.parseArg=(J,Z)=>{if(!this.argChoices.includes(J))throw new Zq(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(J,Z);return J},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function Xq(q){let J=q.name()+(q.variadic===!0?"...":"");return q.required?"<"+J+">":"["+J+"]"}Yq.Argument=Y0;Yq.humanReadableArgName=Xq});var W5=z((Kq)=>{var{humanReadableArgName:$q}=v1();class Q0{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(q){let J=q.commands.filter((X)=>!X._hidden),Z=q._getHelpCommand();if(Z&&!Z._hidden)J.push(Z);if(this.sortSubcommands)J.sort((X,Y)=>{return X.name().localeCompare(Y.name())});return J}compareOptions(q,J){let Z=(X)=>{return X.short?X.short.replace(/^-/,""):X.long.replace(/^--/,"")};return Z(q).localeCompare(Z(J))}visibleOptions(q){let J=q.options.filter((X)=>!X.hidden),Z=q._getHelpOption();if(Z&&!Z.hidden){let X=Z.short&&q._findOption(Z.short),Y=Z.long&&q._findOption(Z.long);if(!X&&!Y)J.push(Z);else if(Z.long&&!Y)J.push(q.createOption(Z.long,Z.description));else if(Z.short&&!X)J.push(q.createOption(Z.short,Z.description))}if(this.sortOptions)J.sort(this.compareOptions);return J}visibleGlobalOptions(q){if(!this.showGlobalOptions)return[];let J=[];for(let Z=q.parent;Z;Z=Z.parent){let X=Z.options.filter((Y)=>!Y.hidden);J.push(...X)}if(this.sortOptions)J.sort(this.compareOptions);return J}visibleArguments(q){if(q._argsDescription)q.registeredArguments.forEach((J)=>{J.description=J.description||q._argsDescription[J.name()]||""});if(q.registeredArguments.find((J)=>J.description))return q.registeredArguments;return[]}subcommandTerm(q){let J=q.registeredArguments.map((Z)=>$q(Z)).join(" ");return q._name+(q._aliases[0]?"|"+q._aliases[0]:"")+(q.options.length?" [options]":"")+(J?" "+J:"")}optionTerm(q){return q.flags}argumentTerm(q){return q.name()}longestSubcommandTermLength(q,J){return J.visibleCommands(q).reduce((Z,X)=>{return Math.max(Z,J.subcommandTerm(X).length)},0)}longestOptionTermLength(q,J){return J.visibleOptions(q).reduce((Z,X)=>{return Math.max(Z,J.optionTerm(X).length)},0)}longestGlobalOptionTermLength(q,J){return J.visibleGlobalOptions(q).reduce((Z,X)=>{return Math.max(Z,J.optionTerm(X).length)},0)}longestArgumentTermLength(q,J){return J.visibleArguments(q).reduce((Z,X)=>{return Math.max(Z,J.argumentTerm(X).length)},0)}commandUsage(q){let J=q._name;if(q._aliases[0])J=J+"|"+q._aliases[0];let Z="";for(let X=q.parent;X;X=X.parent)Z=X.name()+" "+Z;return Z+J+" "+q.usage()}commandDescription(q){return q.description()}subcommandDescription(q){return q.summary()||q.description()}optionDescription(q){let J=[];if(q.argChoices)J.push(`choices: ${q.argChoices.map((Z)=>JSON.stringify(Z)).join(", ")}`);if(q.defaultValue!==void 0){if(q.required||q.optional||q.isBoolean()&&typeof q.defaultValue==="boolean")J.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`)}if(q.presetArg!==void 0&&q.optional)J.push(`preset: ${JSON.stringify(q.presetArg)}`);if(q.envVar!==void 0)J.push(`env: ${q.envVar}`);if(J.length>0)return`${q.description} (${J.join(", ")})`;return q.description}argumentDescription(q){let J=[];if(q.argChoices)J.push(`choices: ${q.argChoices.map((Z)=>JSON.stringify(Z)).join(", ")}`);if(q.defaultValue!==void 0)J.push(`default: ${q.defaultValueDescription||JSON.stringify(q.defaultValue)}`);if(J.length>0){let Z=`(${J.join(", ")})`;if(q.description)return`${q.description} ${Z}`;return Z}return q.description}formatHelp(q,J){let Z=J.padWidth(q,J),X=J.helpWidth||80,Y=2,Q=2;function G(_,V){if(V){let j=`${_.padEnd(Z+2)}${V}`;return J.wrap(j,X-2,Z+2)}return _}function $(_){return _.join(`
|
|
3
|
+
`).replace(/^/gm," ".repeat(2))}let K=[`Usage: ${J.commandUsage(q)}`,""],W=J.commandDescription(q);if(W.length>0)K=K.concat([J.wrap(W,X,0),""]);let H=J.visibleArguments(q).map((_)=>{return G(J.argumentTerm(_),J.argumentDescription(_))});if(H.length>0)K=K.concat(["Arguments:",$(H),""]);let U=J.visibleOptions(q).map((_)=>{return G(J.optionTerm(_),J.optionDescription(_))});if(U.length>0)K=K.concat(["Options:",$(U),""]);if(this.showGlobalOptions){let _=J.visibleGlobalOptions(q).map((V)=>{return G(J.optionTerm(V),J.optionDescription(V))});if(_.length>0)K=K.concat(["Global Options:",$(_),""])}let L=J.visibleCommands(q).map((_)=>{return G(J.subcommandTerm(_),J.subcommandDescription(_))});if(L.length>0)K=K.concat(["Commands:",$(L),""]);return K.join(`
|
|
4
|
+
`)}padWidth(q,J){return Math.max(J.longestOptionTermLength(q,J),J.longestGlobalOptionTermLength(q,J),J.longestSubcommandTermLength(q,J),J.longestArgumentTermLength(q,J))}wrap(q,J,Z,X=40){let Q=new RegExp(`[\\n][${" \\f\\t\\v - \uFEFF"}]+`);if(q.match(Q))return q;let G=J-Z;if(G<X)return q;let $=q.slice(0,Z),K=q.slice(Z).replace(`\r
|
|
5
|
+
`,`
|
|
6
|
+
`),W=" ".repeat(Z),U=`\\s${""}`,L=new RegExp(`
|
|
7
|
+
|.{1,${G-1}}([${U}]|$)|[^${U}]+?([${U}]|$)`,"g"),_=K.match(L)||[];return $+_.map((V,j)=>{if(V===`
|
|
8
|
+
`)return"";return(j>0?W:"")+V.trimEnd()}).join(`
|
|
9
|
+
`)}}Kq.Help=Q0});var H5=z((Lq)=>{var{InvalidArgumentError:Hq}=H1();class G0{constructor(q,J){this.flags=q,this.description=J||"",this.required=q.includes("<"),this.optional=q.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(q),this.mandatory=!1;let Z=_q(q);if(this.short=Z.shortFlag,this.long=Z.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,J){return this.defaultValue=q,this.defaultValueDescription=J,this}preset(q){return this.presetArg=q,this}conflicts(q){return this.conflictsWith=this.conflictsWith.concat(q),this}implies(q){let J=q;if(typeof q==="string")J={[q]:!0};return this.implied=Object.assign(this.implied||{},J),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,J){if(J===this.defaultValue||!Array.isArray(J))return[q];return J.concat(q)}choices(q){return this.argChoices=q.slice(),this.parseArg=(J,Z)=>{if(!this.argChoices.includes(J))throw new Hq(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue(J,Z);return J},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){return Uq(this.name().replace(/^no-/,""))}is(q){return this.short===q||this.long===q}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class $0{constructor(q){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,q.forEach((J)=>{if(J.negate)this.negativeOptions.set(J.attributeName(),J);else this.positiveOptions.set(J.attributeName(),J)}),this.negativeOptions.forEach((J,Z)=>{if(this.positiveOptions.has(Z))this.dualOptions.add(Z)})}valueFromOption(q,J){let Z=J.attributeName();if(!this.dualOptions.has(Z))return!0;let X=this.negativeOptions.get(Z).presetArg,Y=X!==void 0?X:!1;return J.negate===(Y===q)}}function Uq(q){return q.split("-").reduce((J,Z)=>{return J+Z[0].toUpperCase()+Z.slice(1)})}function _q(q){let J,Z,X=q.split(/[ |,]+/);if(X.length>1&&!/^[[<]/.test(X[1]))J=X.shift();if(Z=X.shift(),!J&&/^-[^-]$/.test(Z))J=Z,Z=void 0;return{shortFlag:J,longFlag:Z}}Lq.Option=G0;Lq.DualOptions=$0});var K0=z((zq)=>{function Rq(q,J){if(Math.abs(q.length-J.length)>3)return Math.max(q.length,J.length);let Z=[];for(let X=0;X<=q.length;X++)Z[X]=[X];for(let X=0;X<=J.length;X++)Z[0][X]=X;for(let X=1;X<=J.length;X++)for(let Y=1;Y<=q.length;Y++){let Q=1;if(q[Y-1]===J[X-1])Q=0;else Q=1;if(Z[Y][X]=Math.min(Z[Y-1][X]+1,Z[Y][X-1]+1,Z[Y-1][X-1]+Q),Y>1&&X>1&&q[Y-1]===J[X-2]&&q[Y-2]===J[X-1])Z[Y][X]=Math.min(Z[Y][X],Z[Y-2][X-2]+1)}return Z[q.length][J.length]}function jq(q,J){if(!J||J.length===0)return"";J=Array.from(new Set(J));let Z=q.startsWith("--");if(Z)q=q.slice(2),J=J.map((G)=>G.slice(2));let X=[],Y=3,Q=0.4;if(J.forEach((G)=>{if(G.length<=1)return;let $=Rq(q,G),K=Math.max(q.length,G.length);if((K-$)/K>Q){if($<Y)Y=$,X=[G];else if($===Y)X.push(G)}}),X.sort((G,$)=>G.localeCompare($)),Z)X=X.map((G)=>`--${G}`);if(X.length>1)return`
|
|
10
|
+
(Did you mean one of ${X.join(", ")}?)`;if(X.length===1)return`
|
|
11
|
+
(Did you mean ${X[0]}?)`;return""}zq.suggestSimilar=jq});var _0=z((Mq)=>{var Eq=P("node:events").EventEmitter,U5=P("node:child_process"),P2=P("node:path"),_5=P("node:fs"),p=P("node:process"),{Argument:Tq,humanReadableArgName:wq}=v1(),{CommanderError:L5}=H1(),{Help:Oq}=W5(),{Option:W0,DualOptions:Dq}=H5(),{suggestSimilar:H0}=K0();class V5 extends Eq{constructor(q){super();this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=q||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:(J)=>p.stdout.write(J),writeErr:(J)=>p.stderr.write(J),getOutHelpWidth:()=>p.stdout.isTTY?p.stdout.columns:void 0,getErrHelpWidth:()=>p.stderr.isTTY?p.stderr.columns:void 0,outputError:(J,Z)=>Z(J)},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 J=this;J;J=J.parent)q.push(J);return q}command(q,J,Z){let X=J,Y=Z;if(typeof X==="object"&&X!==null)Y=X,X=null;Y=Y||{};let[,Q,G]=q.match(/([^ ]+) *(.*)/),$=this.createCommand(Q);if(X)$.description(X),$._executableHandler=!0;if(Y.isDefault)this._defaultCommandName=$._name;if($._hidden=!!(Y.noHelp||Y.hidden),$._executableFile=Y.executableFile||null,G)$.arguments(G);if(this._registerCommand($),$.parent=this,$.copyInheritedSettings(this),X)return this;return $}createCommand(q){return new V5(q)}createHelp(){return Object.assign(new Oq,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,J){if(!q._name)throw Error(`Command passed to .addCommand() must have a name
|
|
12
|
+
- specify the name in Command constructor or using .name()`);if(J=J||{},J.isDefault)this._defaultCommandName=q._name;if(J.noHelp||J.hidden)q._hidden=!0;return this._registerCommand(q),q.parent=this,q._checkForBrokenPassThrough(),this}createArgument(q,J){return new Tq(q,J)}argument(q,J,Z,X){let Y=this.createArgument(q,J);if(typeof Z==="function")Y.default(X).argParser(Z);else Y.default(Z);return this.addArgument(Y),this}arguments(q){return q.trim().split(/ +/).forEach((J)=>{this.argument(J)}),this}addArgument(q){let J=this.registeredArguments.slice(-1)[0];if(J&&J.variadic)throw Error(`only the last argument can be variadic '${J.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,J){if(typeof q==="boolean")return this._addImplicitHelpCommand=q,this;q=q??"help [command]";let[,Z,X]=q.match(/([^ ]+) *(.*)/),Y=J??"display help for command",Q=this.createCommand(Z);if(Q.helpOption(!1),X)Q.arguments(X);if(Y)Q.description(Y);return this._addImplicitHelpCommand=!0,this._helpCommand=Q,this}addHelpCommand(q,J){if(typeof q!=="object")return this.helpCommand(q,J),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,J){let Z=["preSubcommand","preAction","postAction"];if(!Z.includes(q))throw Error(`Unexpected value for event passed to hook : '${q}'.
|
|
13
|
+
Expecting one of '${Z.join("', '")}'`);if(this._lifeCycleHooks[q])this._lifeCycleHooks[q].push(J);else this._lifeCycleHooks[q]=[J];return this}exitOverride(q){if(q)this._exitCallback=q;else this._exitCallback=(J)=>{if(J.code!=="commander.executeSubCommandAsync")throw J};return this}_exit(q,J,Z){if(this._exitCallback)this._exitCallback(new L5(q,J,Z));p.exit(q)}action(q){let J=(Z)=>{let X=this.registeredArguments.length,Y=Z.slice(0,X);if(this._storeOptionsAsProperties)Y[X]=this;else Y[X]=this.opts();return Y.push(this),q.apply(this,Y)};return this._actionHandler=J,this}createOption(q,J){return new W0(q,J)}_callParseArg(q,J,Z,X){try{return q.parseArg(J,Z)}catch(Y){if(Y.code==="commander.invalidArgument"){let Q=`${X} ${Y.message}`;this.error(Q,{exitCode:Y.exitCode,code:Y.code})}throw Y}}_registerOption(q){let J=q.short&&this._findOption(q.short)||q.long&&this._findOption(q.long);if(J){let Z=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 '${Z}'
|
|
14
|
+
- already used by option '${J.flags}'`)}this.options.push(q)}_registerCommand(q){let J=(X)=>{return[X.name()].concat(X.aliases())},Z=J(q).find((X)=>this._findCommand(X));if(Z){let X=J(this._findCommand(Z)).join("|"),Y=J(q).join("|");throw Error(`cannot add command '${Y}' as already have command '${X}'`)}this.commands.push(q)}addOption(q){this._registerOption(q);let J=q.name(),Z=q.attributeName();if(q.negate){let Y=q.long.replace(/^--no-/,"--");if(!this._findOption(Y))this.setOptionValueWithSource(Z,q.defaultValue===void 0?!0:q.defaultValue,"default")}else if(q.defaultValue!==void 0)this.setOptionValueWithSource(Z,q.defaultValue,"default");let X=(Y,Q,G)=>{if(Y==null&&q.presetArg!==void 0)Y=q.presetArg;let $=this.getOptionValue(Z);if(Y!==null&&q.parseArg)Y=this._callParseArg(q,Y,$,Q);else if(Y!==null&&q.variadic)Y=q._concatValue(Y,$);if(Y==null)if(q.negate)Y=!1;else if(q.isBoolean()||q.optional)Y=!0;else Y="";this.setOptionValueWithSource(Z,Y,G)};if(this.on("option:"+J,(Y)=>{let Q=`error: option '${q.flags}' argument '${Y}' is invalid.`;X(Y,Q,"cli")}),q.envVar)this.on("optionEnv:"+J,(Y)=>{let Q=`error: option '${q.flags}' value '${Y}' from env '${q.envVar}' is invalid.`;X(Y,Q,"env")});return this}_optionEx(q,J,Z,X,Y){if(typeof J==="object"&&J instanceof W0)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let Q=this.createOption(J,Z);if(Q.makeOptionMandatory(!!q.mandatory),typeof X==="function")Q.default(Y).argParser(X);else if(X instanceof RegExp){let G=X;X=($,K)=>{let W=G.exec($);return W?W[0]:K},Q.default(Y).argParser(X)}else Q.default(X);return this.addOption(Q)}option(q,J,Z,X){return this._optionEx({},q,J,Z,X)}requiredOption(q,J,Z,X){return this._optionEx({mandatory:!0},q,J,Z,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,J){return this.setOptionValueWithSource(q,J,void 0)}setOptionValueWithSource(q,J,Z){if(this._storeOptionsAsProperties)this[q]=J;else this._optionValues[q]=J;return this._optionValueSources[q]=Z,this}getOptionValueSource(q){return this._optionValueSources[q]}getOptionValueSourceWithGlobals(q){let J;return this._getCommandAndAncestors().forEach((Z)=>{if(Z.getOptionValueSource(q)!==void 0)J=Z.getOptionValueSource(q)}),J}_prepareUserArgs(q,J){if(q!==void 0&&!Array.isArray(q))throw Error("first parameter to parse must be array or undefined");if(J=J||{},q===void 0&&J.from===void 0){if(p.versions?.electron)J.from="electron";let X=p.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))J.from="eval"}if(q===void 0)q=p.argv;this.rawArgs=q.slice();let Z;switch(J.from){case void 0:case"node":this._scriptPath=q[1],Z=q.slice(2);break;case"electron":if(p.defaultApp)this._scriptPath=q[1],Z=q.slice(2);else Z=q.slice(1);break;case"user":Z=q.slice(0);break;case"eval":Z=q.slice(1);break;default:throw Error(`unexpected parse option { from: '${J.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",Z}parse(q,J){let Z=this._prepareUserArgs(q,J);return this._parseCommand([],Z),this}async parseAsync(q,J){let Z=this._prepareUserArgs(q,J);return await this._parseCommand([],Z),this}_executeSubCommand(q,J){J=J.slice();let Z=!1,X=[".js",".ts",".tsx",".mjs",".cjs"];function Y(W,H){let U=P2.resolve(W,H);if(_5.existsSync(U))return U;if(X.includes(P2.extname(H)))return;let L=X.find((_)=>_5.existsSync(`${U}${_}`));if(L)return`${U}${L}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let Q=q._executableFile||`${this._name}-${q._name}`,G=this._executableDir||"";if(this._scriptPath){let W;try{W=_5.realpathSync(this._scriptPath)}catch(H){W=this._scriptPath}G=P2.resolve(P2.dirname(W),G)}if(G){let W=Y(G,Q);if(!W&&!q._executableFile&&this._scriptPath){let H=P2.basename(this._scriptPath,P2.extname(this._scriptPath));if(H!==this._name)W=Y(G,`${H}-${q._name}`)}Q=W||Q}Z=X.includes(P2.extname(Q));let $;if(p.platform!=="win32")if(Z)J.unshift(Q),J=U0(p.execArgv).concat(J),$=U5.spawn(p.argv[0],J,{stdio:"inherit"});else $=U5.spawn(Q,J,{stdio:"inherit"});else J.unshift(Q),J=U0(p.execArgv).concat(J),$=U5.spawn(p.execPath,J,{stdio:"inherit"});if(!$.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((H)=>{p.on(H,()=>{if($.killed===!1&&$.exitCode===null)$.kill(H)})});let K=this._exitCallback;$.on("close",(W)=>{if(W=W??1,!K)p.exit(W);else K(new L5(W,"commander.executeSubCommandAsync","(close)"))}),$.on("error",(W)=>{if(W.code==="ENOENT"){let H=G?`searched for local subcommand relative to directory '${G}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",U=`'${Q}' does not exist
|
|
15
|
+
- if '${q._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
16
|
+
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
17
|
+
- ${H}`;throw Error(U)}else if(W.code==="EACCES")throw Error(`'${Q}' not executable`);if(!K)p.exit(1);else{let H=new L5(1,"commander.executeSubCommandAsync","(error)");H.nestedError=W,K(H)}}),this.runningCommand=$}_dispatchSubcommand(q,J,Z){let X=this._findCommand(q);if(!X)this.help({error:!0});let Y;return Y=this._chainOrCallSubCommandHook(Y,X,"preSubcommand"),Y=this._chainOrCall(Y,()=>{if(X._executableHandler)this._executeSubCommand(X,J.concat(Z));else return X._parseCommand(J,Z)}),Y}_dispatchHelpCommand(q){if(!q)this.help();let J=this._findCommand(q);if(J&&!J._executableHandler)J.help();return this._dispatchSubcommand(q,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((q,J)=>{if(q.required&&this.args[J]==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=(Z,X,Y)=>{let Q=X;if(X!==null&&Z.parseArg){let G=`error: command-argument value '${X}' is invalid for argument '${Z.name()}'.`;Q=this._callParseArg(Z,X,Y,G)}return Q};this._checkNumberOfArguments();let J=[];this.registeredArguments.forEach((Z,X)=>{let Y=Z.defaultValue;if(Z.variadic){if(X<this.args.length){if(Y=this.args.slice(X),Z.parseArg)Y=Y.reduce((Q,G)=>{return q(Z,G,Q)},Z.defaultValue)}else if(Y===void 0)Y=[]}else if(X<this.args.length){if(Y=this.args[X],Z.parseArg)Y=q(Z,Y,Z.defaultValue)}J[X]=Y}),this.processedArgs=J}_chainOrCall(q,J){if(q&&q.then&&typeof q.then==="function")return q.then(()=>J());return J()}_chainOrCallHooks(q,J){let Z=q,X=[];if(this._getCommandAndAncestors().reverse().filter((Y)=>Y._lifeCycleHooks[J]!==void 0).forEach((Y)=>{Y._lifeCycleHooks[J].forEach((Q)=>{X.push({hookedCommand:Y,callback:Q})})}),J==="postAction")X.reverse();return X.forEach((Y)=>{Z=this._chainOrCall(Z,()=>{return Y.callback(Y.hookedCommand,this)})}),Z}_chainOrCallSubCommandHook(q,J,Z){let X=q;if(this._lifeCycleHooks[Z]!==void 0)this._lifeCycleHooks[Z].forEach((Y)=>{X=this._chainOrCall(X,()=>{return Y(this,J)})});return X}_parseCommand(q,J){let Z=this.parseOptions(J);if(this._parseOptionsEnv(),this._parseOptionsImplied(),q=q.concat(Z.operands),J=Z.unknown,this.args=q.concat(J),q&&this._findCommand(q[0]))return this._dispatchSubcommand(q[0],q.slice(1),J);if(this._getHelpCommand()&&q[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(q[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(J),this._dispatchSubcommand(this._defaultCommandName,q,J);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(Z.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let X=()=>{if(Z.unknown.length>0)this.unknownOption(Z.unknown[0])},Y=`command:${this.name()}`;if(this._actionHandler){X(),this._processArguments();let Q;if(Q=this._chainOrCallHooks(Q,"preAction"),Q=this._chainOrCall(Q,()=>this._actionHandler(this.processedArgs)),this.parent)Q=this._chainOrCall(Q,()=>{this.parent.emit(Y,q,J)});return Q=this._chainOrCallHooks(Q,"postAction"),Q}if(this.parent&&this.parent.listenerCount(Y))X(),this._processArguments(),this.parent.emit(Y,q,J);else if(q.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",q,J);if(this.listenerCount("command:*"))this.emit("command:*",q,J);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((J)=>J._name===q||J._aliases.includes(q))}_findOption(q){return this.options.find((J)=>J.is(q))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((q)=>{q.options.forEach((J)=>{if(J.mandatory&&q.getOptionValue(J.attributeName())===void 0)q.missingMandatoryOptionValue(J)})})}_checkForConflictingLocalOptions(){let q=this.options.filter((Z)=>{let X=Z.attributeName();if(this.getOptionValue(X)===void 0)return!1;return this.getOptionValueSource(X)!=="default"});q.filter((Z)=>Z.conflictsWith.length>0).forEach((Z)=>{let X=q.find((Y)=>Z.conflictsWith.includes(Y.attributeName()));if(X)this._conflictingOption(Z,X)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((q)=>{q._checkForConflictingLocalOptions()})}parseOptions(q){let J=[],Z=[],X=J,Y=q.slice();function Q($){return $.length>1&&$[0]==="-"}let G=null;while(Y.length){let $=Y.shift();if($==="--"){if(X===Z)X.push($);X.push(...Y);break}if(G&&!Q($)){this.emit(`option:${G.name()}`,$);continue}if(G=null,Q($)){let K=this._findOption($);if(K){if(K.required){let W=Y.shift();if(W===void 0)this.optionMissingArgument(K);this.emit(`option:${K.name()}`,W)}else if(K.optional){let W=null;if(Y.length>0&&!Q(Y[0]))W=Y.shift();this.emit(`option:${K.name()}`,W)}else this.emit(`option:${K.name()}`);G=K.variadic?K:null;continue}}if($.length>2&&$[0]==="-"&&$[1]!=="-"){let K=this._findOption(`-${$[1]}`);if(K){if(K.required||K.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${K.name()}`,$.slice(2));else this.emit(`option:${K.name()}`),Y.unshift(`-${$.slice(2)}`);continue}}if(/^--[^=]+=/.test($)){let K=$.indexOf("="),W=this._findOption($.slice(0,K));if(W&&(W.required||W.optional)){this.emit(`option:${W.name()}`,$.slice(K+1));continue}}if(Q($))X=Z;if((this._enablePositionalOptions||this._passThroughOptions)&&J.length===0&&Z.length===0){if(this._findCommand($)){if(J.push($),Y.length>0)Z.push(...Y);break}else if(this._getHelpCommand()&&$===this._getHelpCommand().name()){if(J.push($),Y.length>0)J.push(...Y);break}else if(this._defaultCommandName){if(Z.push($),Y.length>0)Z.push(...Y);break}}if(this._passThroughOptions){if(X.push($),Y.length>0)X.push(...Y);break}X.push($)}return{operands:J,unknown:Z}}opts(){if(this._storeOptionsAsProperties){let q={},J=this.options.length;for(let Z=0;Z<J;Z++){let X=this.options[Z].attributeName();q[X]=X===this._versionOptionName?this._version:this[X]}return q}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((q,J)=>Object.assign(q,J.opts()),{})}error(q,J){if(this._outputConfiguration.outputError(`${q}
|
|
18
|
+
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
19
|
+
`);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
|
|
20
|
+
`),this.outputHelp({error:!0});let Z=J||{},X=Z.exitCode||1,Y=Z.code||"commander.error";this._exit(X,Y,q)}_parseOptionsEnv(){this.options.forEach((q)=>{if(q.envVar&&q.envVar in p.env){let J=q.attributeName();if(this.getOptionValue(J)===void 0||["default","config","env"].includes(this.getOptionValueSource(J)))if(q.required||q.optional)this.emit(`optionEnv:${q.name()}`,p.env[q.envVar]);else this.emit(`optionEnv:${q.name()}`)}})}_parseOptionsImplied(){let q=new Dq(this.options),J=(Z)=>{return this.getOptionValue(Z)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(Z))};this.options.filter((Z)=>Z.implied!==void 0&&J(Z.attributeName())&&q.valueFromOption(this.getOptionValue(Z.attributeName()),Z)).forEach((Z)=>{Object.keys(Z.implied).filter((X)=>!J(X)).forEach((X)=>{this.setOptionValueWithSource(X,Z.implied[X],"implied")})})}missingArgument(q){let J=`error: missing required argument '${q}'`;this.error(J,{code:"commander.missingArgument"})}optionMissingArgument(q){let J=`error: option '${q.flags}' argument missing`;this.error(J,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(q){let J=`error: required option '${q.flags}' not specified`;this.error(J,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(q,J){let Z=(Q)=>{let G=Q.attributeName(),$=this.getOptionValue(G),K=this.options.find((H)=>H.negate&&G===H.attributeName()),W=this.options.find((H)=>!H.negate&&G===H.attributeName());if(K&&(K.presetArg===void 0&&$===!1||K.presetArg!==void 0&&$===K.presetArg))return K;return W||Q},X=(Q)=>{let G=Z(Q),$=G.attributeName();if(this.getOptionValueSource($)==="env")return`environment variable '${G.envVar}'`;return`option '${G.flags}'`},Y=`error: ${X(q)} cannot be used with ${X(J)}`;this.error(Y,{code:"commander.conflictingOption"})}unknownOption(q){if(this._allowUnknownOption)return;let J="";if(q.startsWith("--")&&this._showSuggestionAfterError){let X=[],Y=this;do{let Q=Y.createHelp().visibleOptions(Y).filter((G)=>G.long).map((G)=>G.long);X=X.concat(Q),Y=Y.parent}while(Y&&!Y._enablePositionalOptions);J=H0(q,X)}let Z=`error: unknown option '${q}'${J}`;this.error(Z,{code:"commander.unknownOption"})}_excessArguments(q){if(this._allowExcessArguments)return;let J=this.registeredArguments.length,Z=J===1?"":"s",Y=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${J} argument${Z} but got ${q.length}.`;this.error(Y,{code:"commander.excessArguments"})}unknownCommand(){let q=this.args[0],J="";if(this._showSuggestionAfterError){let X=[];this.createHelp().visibleCommands(this).forEach((Y)=>{if(X.push(Y.name()),Y.alias())X.push(Y.alias())}),J=H0(q,X)}let Z=`error: unknown command '${q}'${J}`;this.error(Z,{code:"commander.unknownCommand"})}version(q,J,Z){if(q===void 0)return this._version;this._version=q,J=J||"-V, --version",Z=Z||"output the version number";let X=this.createOption(J,Z);return this._versionOptionName=X.attributeName(),this._registerOption(X),this.on("option:"+X.name(),()=>{this._outputConfiguration.writeOut(`${q}
|
|
21
|
+
`),this._exit(0,"commander.version",q)}),this}description(q,J){if(q===void 0&&J===void 0)return this._description;if(this._description=q,J)this._argsDescription=J;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 J=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)J=this.commands[this.commands.length-1];if(q===J._name)throw Error("Command alias can't be the same as its name");let Z=this.parent?._findCommand(q);if(Z){let X=[Z.name()].concat(Z.aliases()).join("|");throw Error(`cannot add alias '${q}' to command '${this.name()}' as already have command '${X}'`)}return J._aliases.push(q),this}aliases(q){if(q===void 0)return this._aliases;return q.forEach((J)=>this.alias(J)),this}usage(q){if(q===void 0){if(this._usage)return this._usage;let J=this.registeredArguments.map((Z)=>{return wq(Z)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?J:[]).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=P2.basename(q,P2.extname(q)),this}executableDir(q){if(q===void 0)return this._executableDir;return this._executableDir=q,this}helpInformation(q){let J=this.createHelp();if(J.helpWidth===void 0)J.helpWidth=q&&q.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth();return J.formatHelp(this,J)}_getHelpContext(q){q=q||{};let J={error:!!q.error},Z;if(J.error)Z=(X)=>this._outputConfiguration.writeErr(X);else Z=(X)=>this._outputConfiguration.writeOut(X);return J.write=q.write||Z,J.command=this,J}outputHelp(q){let J;if(typeof q==="function")J=q,q=void 0;let Z=this._getHelpContext(q);this._getCommandAndAncestors().reverse().forEach((Y)=>Y.emit("beforeAllHelp",Z)),this.emit("beforeHelp",Z);let X=this.helpInformation(Z);if(J){if(X=J(X),typeof X!=="string"&&!Buffer.isBuffer(X))throw Error("outputHelp callback must return a string or a Buffer")}if(Z.write(X),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",Z),this._getCommandAndAncestors().forEach((Y)=>Y.emit("afterAllHelp",Z))}helpOption(q,J){if(typeof q==="boolean"){if(q)this._helpOption=this._helpOption??void 0;else this._helpOption=null;return this}return q=q??"-h, --help",J=J??"display help for command",this._helpOption=this.createOption(q,J),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 J=p.exitCode||0;if(J===0&&q&&typeof q!=="function"&&q.error)J=1;this._exit(J,"commander.help","(outputHelp)")}addHelpText(q,J){let Z=["beforeAll","before","after","afterAll"];if(!Z.includes(q))throw Error(`Unexpected value for position to addHelpText.
|
|
22
|
+
Expecting one of '${Z.join("', '")}'`);let X=`${q}Help`;return this.on(X,(Y)=>{let Q;if(typeof J==="function")Q=J({error:Y.error,command:Y.command});else Q=J;if(Q)Y.write(`${Q}
|
|
23
|
+
`)}),this}_outputHelpIfRequested(q){let J=this._getHelpOption();if(J&&q.find((X)=>J.is(X)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function U0(q){return q.map((J)=>{if(!J.startsWith("--inspect"))return J;let Z,X="127.0.0.1",Y="9229",Q;if((Q=J.match(/^(--inspect(-brk)?)$/))!==null)Z=Q[1];else if((Q=J.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(Z=Q[1],/^\d+$/.test(Q[3]))Y=Q[3];else X=Q[3];else if((Q=J.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)Z=Q[1],X=Q[3],Y=Q[4];if(Z&&Y!=="0")return`${Z}=${X}:${parseInt(Y)+1}`;return J})}Mq.Command=V5});var R0=z((Nq)=>{var{Argument:L0}=v1(),{Command:B5}=_0(),{CommanderError:xq,InvalidArgumentError:V0}=H1(),{Help:Fq}=W5(),{Option:B0}=H5();Nq.program=new B5;Nq.createCommand=(q)=>new B5(q);Nq.createOption=(q,J)=>new B0(q,J);Nq.createArgument=(q,J)=>new L0(q,J);Nq.Command=B5;Nq.Option=B0;Nq.Argument=L0;Nq.Help=Fq;Nq.CommanderError=xq;Nq.InvalidArgumentError=V0;Nq.InvalidOptionArgumentError=V0});var E0=z((SJ,I0)=>{I0.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var R5=z((CJ,w0)=>{var U1=E0(),T0={};for(let q of Object.keys(U1))T0[U1[q]]=q;var R={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};w0.exports=R;for(let q of Object.keys(R)){if(!("channels"in R[q]))throw Error("missing channels property: "+q);if(!("labels"in R[q]))throw Error("missing channel labels property: "+q);if(R[q].labels.length!==R[q].channels)throw Error("channel and label counts mismatch: "+q);let{channels:J,labels:Z}=R[q];delete R[q].channels,delete R[q].labels,Object.defineProperty(R[q],"channels",{value:J}),Object.defineProperty(R[q],"labels",{value:Z})}R.rgb.hsl=function(q){let J=q[0]/255,Z=q[1]/255,X=q[2]/255,Y=Math.min(J,Z,X),Q=Math.max(J,Z,X),G=Q-Y,$,K;if(Q===Y)$=0;else if(J===Q)$=(Z-X)/G;else if(Z===Q)$=2+(X-J)/G;else if(X===Q)$=4+(J-Z)/G;if($=Math.min($*60,360),$<0)$+=360;let W=(Y+Q)/2;if(Q===Y)K=0;else if(W<=0.5)K=G/(Q+Y);else K=G/(2-Q-Y);return[$,K*100,W*100]};R.rgb.hsv=function(q){let J,Z,X,Y,Q,G=q[0]/255,$=q[1]/255,K=q[2]/255,W=Math.max(G,$,K),H=W-Math.min(G,$,K),U=function(L){return(W-L)/6/H+0.5};if(H===0)Y=0,Q=0;else{if(Q=H/W,J=U(G),Z=U($),X=U(K),G===W)Y=X-Z;else if($===W)Y=0.3333333333333333+J-X;else if(K===W)Y=0.6666666666666666+Z-J;if(Y<0)Y+=1;else if(Y>1)Y-=1}return[Y*360,Q*100,W*100]};R.rgb.hwb=function(q){let J=q[0],Z=q[1],X=q[2],Y=R.rgb.hsl(q)[0],Q=0.00392156862745098*Math.min(J,Math.min(Z,X));return X=1-0.00392156862745098*Math.max(J,Math.max(Z,X)),[Y,Q*100,X*100]};R.rgb.cmyk=function(q){let J=q[0]/255,Z=q[1]/255,X=q[2]/255,Y=Math.min(1-J,1-Z,1-X),Q=(1-J-Y)/(1-Y)||0,G=(1-Z-Y)/(1-Y)||0,$=(1-X-Y)/(1-Y)||0;return[Q*100,G*100,$*100,Y*100]};function dq(q,J){return(q[0]-J[0])**2+(q[1]-J[1])**2+(q[2]-J[2])**2}R.rgb.keyword=function(q){let J=T0[q];if(J)return J;let Z=1/0,X;for(let Y of Object.keys(U1)){let Q=U1[Y],G=dq(q,Q);if(G<Z)Z=G,X=Y}return X};R.keyword.rgb=function(q){return U1[q]};R.rgb.xyz=function(q){let J=q[0]/255,Z=q[1]/255,X=q[2]/255;J=J>0.04045?((J+0.055)/1.055)**2.4:J/12.92,Z=Z>0.04045?((Z+0.055)/1.055)**2.4:Z/12.92,X=X>0.04045?((X+0.055)/1.055)**2.4:X/12.92;let Y=J*0.4124+Z*0.3576+X*0.1805,Q=J*0.2126+Z*0.7152+X*0.0722,G=J*0.0193+Z*0.1192+X*0.9505;return[Y*100,Q*100,G*100]};R.rgb.lab=function(q){let J=R.rgb.xyz(q),Z=J[0],X=J[1],Y=J[2];Z/=95.047,X/=100,Y/=108.883,Z=Z>0.008856?Z**0.3333333333333333:7.787*Z+0.13793103448275862,X=X>0.008856?X**0.3333333333333333:7.787*X+0.13793103448275862,Y=Y>0.008856?Y**0.3333333333333333:7.787*Y+0.13793103448275862;let Q=116*X-16,G=500*(Z-X),$=200*(X-Y);return[Q,G,$]};R.hsl.rgb=function(q){let J=q[0]/360,Z=q[1]/100,X=q[2]/100,Y,Q,G;if(Z===0)return G=X*255,[G,G,G];if(X<0.5)Y=X*(1+Z);else Y=X+Z-X*Z;let $=2*X-Y,K=[0,0,0];for(let W=0;W<3;W++){if(Q=J+0.3333333333333333*-(W-1),Q<0)Q++;if(Q>1)Q--;if(6*Q<1)G=$+(Y-$)*6*Q;else if(2*Q<1)G=Y;else if(3*Q<2)G=$+(Y-$)*(0.6666666666666666-Q)*6;else G=$;K[W]=G*255}return K};R.hsl.hsv=function(q){let J=q[0],Z=q[1]/100,X=q[2]/100,Y=Z,Q=Math.max(X,0.01);X*=2,Z*=X<=1?X:2-X,Y*=Q<=1?Q:2-Q;let G=(X+Z)/2,$=X===0?2*Y/(Q+Y):2*Z/(X+Z);return[J,$*100,G*100]};R.hsv.rgb=function(q){let J=q[0]/60,Z=q[1]/100,X=q[2]/100,Y=Math.floor(J)%6,Q=J-Math.floor(J),G=255*X*(1-Z),$=255*X*(1-Z*Q),K=255*X*(1-Z*(1-Q));switch(X*=255,Y){case 0:return[X,K,G];case 1:return[$,X,G];case 2:return[G,X,K];case 3:return[G,$,X];case 4:return[K,G,X];case 5:return[X,G,$]}};R.hsv.hsl=function(q){let J=q[0],Z=q[1]/100,X=q[2]/100,Y=Math.max(X,0.01),Q,G;G=(2-Z)*X;let $=(2-Z)*Y;return Q=Z*Y,Q/=$<=1?$:2-$,Q=Q||0,G/=2,[J,Q*100,G*100]};R.hwb.rgb=function(q){let J=q[0]/360,Z=q[1]/100,X=q[2]/100,Y=Z+X,Q;if(Y>1)Z/=Y,X/=Y;let G=Math.floor(6*J),$=1-X;if(Q=6*J-G,(G&1)!==0)Q=1-Q;let K=Z+Q*($-Z),W,H,U;switch(G){default:case 6:case 0:W=$,H=K,U=Z;break;case 1:W=K,H=$,U=Z;break;case 2:W=Z,H=$,U=K;break;case 3:W=Z,H=K,U=$;break;case 4:W=K,H=Z,U=$;break;case 5:W=$,H=Z,U=K;break}return[W*255,H*255,U*255]};R.cmyk.rgb=function(q){let J=q[0]/100,Z=q[1]/100,X=q[2]/100,Y=q[3]/100,Q=1-Math.min(1,J*(1-Y)+Y),G=1-Math.min(1,Z*(1-Y)+Y),$=1-Math.min(1,X*(1-Y)+Y);return[Q*255,G*255,$*255]};R.xyz.rgb=function(q){let J=q[0]/100,Z=q[1]/100,X=q[2]/100,Y,Q,G;return Y=J*3.2406+Z*-1.5372+X*-0.4986,Q=J*-0.9689+Z*1.8758+X*0.0415,G=J*0.0557+Z*-0.204+X*1.057,Y=Y>0.0031308?1.055*Y**0.4166666666666667-0.055:Y*12.92,Q=Q>0.0031308?1.055*Q**0.4166666666666667-0.055:Q*12.92,G=G>0.0031308?1.055*G**0.4166666666666667-0.055:G*12.92,Y=Math.min(Math.max(0,Y),1),Q=Math.min(Math.max(0,Q),1),G=Math.min(Math.max(0,G),1),[Y*255,Q*255,G*255]};R.xyz.lab=function(q){let J=q[0],Z=q[1],X=q[2];J/=95.047,Z/=100,X/=108.883,J=J>0.008856?J**0.3333333333333333:7.787*J+0.13793103448275862,Z=Z>0.008856?Z**0.3333333333333333:7.787*Z+0.13793103448275862,X=X>0.008856?X**0.3333333333333333:7.787*X+0.13793103448275862;let Y=116*Z-16,Q=500*(J-Z),G=200*(Z-X);return[Y,Q,G]};R.lab.xyz=function(q){let J=q[0],Z=q[1],X=q[2],Y,Q,G;Q=(J+16)/116,Y=Z/500+Q,G=Q-X/200;let $=Q**3,K=Y**3,W=G**3;return Q=$>0.008856?$:(Q-0.13793103448275862)/7.787,Y=K>0.008856?K:(Y-0.13793103448275862)/7.787,G=W>0.008856?W:(G-0.13793103448275862)/7.787,Y*=95.047,Q*=100,G*=108.883,[Y,Q,G]};R.lab.lch=function(q){let J=q[0],Z=q[1],X=q[2],Y;if(Y=Math.atan2(X,Z)*360/2/Math.PI,Y<0)Y+=360;let G=Math.sqrt(Z*Z+X*X);return[J,G,Y]};R.lch.lab=function(q){let J=q[0],Z=q[1],Y=q[2]/360*2*Math.PI,Q=Z*Math.cos(Y),G=Z*Math.sin(Y);return[J,Q,G]};R.rgb.ansi16=function(q,J=null){let[Z,X,Y]=q,Q=J===null?R.rgb.hsv(q)[2]:J;if(Q=Math.round(Q/50),Q===0)return 30;let G=30+(Math.round(Y/255)<<2|Math.round(X/255)<<1|Math.round(Z/255));if(Q===2)G+=60;return G};R.hsv.ansi16=function(q){return R.rgb.ansi16(R.hsv.rgb(q),q[2])};R.rgb.ansi256=function(q){let J=q[0],Z=q[1],X=q[2];if(J===Z&&Z===X){if(J<8)return 16;if(J>248)return 231;return Math.round((J-8)/247*24)+232}return 16+36*Math.round(J/255*5)+6*Math.round(Z/255*5)+Math.round(X/255*5)};R.ansi16.rgb=function(q){let J=q%10;if(J===0||J===7){if(q>50)J+=3.5;return J=J/10.5*255,[J,J,J]}let Z=(~~(q>50)+1)*0.5,X=(J&1)*Z*255,Y=(J>>1&1)*Z*255,Q=(J>>2&1)*Z*255;return[X,Y,Q]};R.ansi256.rgb=function(q){if(q>=232){let Q=(q-232)*10+8;return[Q,Q,Q]}q-=16;let J,Z=Math.floor(q/36)/5*255,X=Math.floor((J=q%36)/6)/5*255,Y=J%6/5*255;return[Z,X,Y]};R.rgb.hex=function(q){let Z=(((Math.round(q[0])&255)<<16)+((Math.round(q[1])&255)<<8)+(Math.round(q[2])&255)).toString(16).toUpperCase();return"000000".substring(Z.length)+Z};R.hex.rgb=function(q){let J=q.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!J)return[0,0,0];let Z=J[0];if(J[0].length===3)Z=Z.split("").map(($)=>{return $+$}).join("");let X=parseInt(Z,16),Y=X>>16&255,Q=X>>8&255,G=X&255;return[Y,Q,G]};R.rgb.hcg=function(q){let J=q[0]/255,Z=q[1]/255,X=q[2]/255,Y=Math.max(Math.max(J,Z),X),Q=Math.min(Math.min(J,Z),X),G=Y-Q,$,K;if(G<1)$=Q/(1-G);else $=0;if(G<=0)K=0;else if(Y===J)K=(Z-X)/G%6;else if(Y===Z)K=2+(X-J)/G;else K=4+(J-Z)/G;return K/=6,K%=1,[K*360,G*100,$*100]};R.hsl.hcg=function(q){let J=q[1]/100,Z=q[2]/100,X=Z<0.5?2*J*Z:2*J*(1-Z),Y=0;if(X<1)Y=(Z-0.5*X)/(1-X);return[q[0],X*100,Y*100]};R.hsv.hcg=function(q){let J=q[1]/100,Z=q[2]/100,X=J*Z,Y=0;if(X<1)Y=(Z-X)/(1-X);return[q[0],X*100,Y*100]};R.hcg.rgb=function(q){let J=q[0]/360,Z=q[1]/100,X=q[2]/100;if(Z===0)return[X*255,X*255,X*255];let Y=[0,0,0],Q=J%1*6,G=Q%1,$=1-G,K=0;switch(Math.floor(Q)){case 0:Y[0]=1,Y[1]=G,Y[2]=0;break;case 1:Y[0]=$,Y[1]=1,Y[2]=0;break;case 2:Y[0]=0,Y[1]=1,Y[2]=G;break;case 3:Y[0]=0,Y[1]=$,Y[2]=1;break;case 4:Y[0]=G,Y[1]=0,Y[2]=1;break;default:Y[0]=1,Y[1]=0,Y[2]=$}return K=(1-Z)*X,[(Z*Y[0]+K)*255,(Z*Y[1]+K)*255,(Z*Y[2]+K)*255]};R.hcg.hsv=function(q){let J=q[1]/100,Z=q[2]/100,X=J+Z*(1-J),Y=0;if(X>0)Y=J/X;return[q[0],Y*100,X*100]};R.hcg.hsl=function(q){let J=q[1]/100,X=q[2]/100*(1-J)+0.5*J,Y=0;if(X>0&&X<0.5)Y=J/(2*X);else if(X>=0.5&&X<1)Y=J/(2*(1-X));return[q[0],Y*100,X*100]};R.hcg.hwb=function(q){let J=q[1]/100,Z=q[2]/100,X=J+Z*(1-J);return[q[0],(X-J)*100,(1-X)*100]};R.hwb.hcg=function(q){let J=q[1]/100,X=1-q[2]/100,Y=X-J,Q=0;if(Y<1)Q=(X-Y)/(1-Y);return[q[0],Y*100,Q*100]};R.apple.rgb=function(q){return[q[0]/65535*255,q[1]/65535*255,q[2]/65535*255]};R.rgb.apple=function(q){return[q[0]/255*65535,q[1]/255*65535,q[2]/255*65535]};R.gray.rgb=function(q){return[q[0]/100*255,q[0]/100*255,q[0]/100*255]};R.gray.hsl=function(q){return[0,0,q[0]]};R.gray.hsv=R.gray.hsl;R.gray.hwb=function(q){return[0,100,q[0]]};R.gray.cmyk=function(q){return[0,0,0,q[0]]};R.gray.lab=function(q){return[q[0],0,0]};R.gray.hex=function(q){let J=Math.round(q[0]/100*255)&255,X=((J<<16)+(J<<8)+J).toString(16).toUpperCase();return"000000".substring(X.length)+X};R.rgb.gray=function(q){return[(q[0]+q[1]+q[2])/3/255*100]}});var D0=z((yJ,O0)=>{var k1=R5();function pq(){let q={},J=Object.keys(k1);for(let Z=J.length,X=0;X<Z;X++)q[J[X]]={distance:-1,parent:null};return q}function hq(q){let J=pq(),Z=[q];J[q].distance=0;while(Z.length){let X=Z.pop(),Y=Object.keys(k1[X]);for(let Q=Y.length,G=0;G<Q;G++){let $=Y[G],K=J[$];if(K.distance===-1)K.distance=J[X].distance+1,K.parent=X,Z.unshift($)}}return J}function nq(q,J){return function(Z){return J(q(Z))}}function iq(q,J){let Z=[J[q].parent,q],X=k1[J[q].parent][q],Y=J[q].parent;while(J[Y].parent)Z.unshift(J[Y].parent),X=nq(k1[J[Y].parent][Y],X),Y=J[Y].parent;return X.conversion=Z,X}O0.exports=function(q){let J=hq(q),Z={},X=Object.keys(J);for(let Y=X.length,Q=0;Q<Y;Q++){let G=X[Q];if(J[G].parent===null)continue;Z[G]=iq(G,J)}return Z}});var A0=z((vJ,M0)=>{var j5=R5(),lq=D0(),q1={},cq=Object.keys(j5);function oq(q){let J=function(...Z){let X=Z[0];if(X===void 0||X===null)return X;if(X.length>1)Z=X;return q(Z)};if("conversion"in q)J.conversion=q.conversion;return J}function rq(q){let J=function(...Z){let X=Z[0];if(X===void 0||X===null)return X;if(X.length>1)Z=X;let Y=q(Z);if(typeof Y==="object")for(let Q=Y.length,G=0;G<Q;G++)Y[G]=Math.round(Y[G]);return Y};if("conversion"in q)J.conversion=q.conversion;return J}cq.forEach((q)=>{q1[q]={},Object.defineProperty(q1[q],"channels",{value:j5[q].channels}),Object.defineProperty(q1[q],"labels",{value:j5[q].labels});let J=lq(q);Object.keys(J).forEach((X)=>{let Y=J[X];q1[q][X]=rq(Y),q1[q][X].raw=oq(Y)})});M0.exports=q1});var y0=z((kJ,C0)=>{var x0=(q,J)=>(...Z)=>{return`\x1B[${q(...Z)+J}m`},F0=(q,J)=>(...Z)=>{let X=q(...Z);return`\x1B[${38+J};5;${X}m`},N0=(q,J)=>(...Z)=>{let X=q(...Z);return`\x1B[${38+J};2;${X[0]};${X[1]};${X[2]}m`},P1=(q)=>q,S0=(q,J,Z)=>[q,J,Z],J1=(q,J,Z)=>{Object.defineProperty(q,J,{get:()=>{let X=Z();return Object.defineProperty(q,J,{value:X,enumerable:!0,configurable:!0}),X},enumerable:!0,configurable:!0})},z5,Z1=(q,J,Z,X)=>{if(z5===void 0)z5=A0();let Y=X?10:0,Q={};for(let[G,$]of Object.entries(z5)){let K=G==="ansi16"?"ansi":G;if(G===J)Q[K]=q(Z,Y);else if(typeof $==="object")Q[K]=q($[J],Y)}return Q};function sq(){let q=new Map,J={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};J.color.gray=J.color.blackBright,J.bgColor.bgGray=J.bgColor.bgBlackBright,J.color.grey=J.color.blackBright,J.bgColor.bgGrey=J.bgColor.bgBlackBright;for(let[Z,X]of Object.entries(J)){for(let[Y,Q]of Object.entries(X))J[Y]={open:`\x1B[${Q[0]}m`,close:`\x1B[${Q[1]}m`},X[Y]=J[Y],q.set(Q[0],Q[1]);Object.defineProperty(J,Z,{value:X,enumerable:!1})}return Object.defineProperty(J,"codes",{value:q,enumerable:!1}),J.color.close="\x1B[39m",J.bgColor.close="\x1B[49m",J1(J.color,"ansi",()=>Z1(x0,"ansi16",P1,!1)),J1(J.color,"ansi256",()=>Z1(F0,"ansi256",P1,!1)),J1(J.color,"ansi16m",()=>Z1(N0,"rgb",S0,!1)),J1(J.bgColor,"ansi",()=>Z1(x0,"ansi16",P1,!0)),J1(J.bgColor,"ansi256",()=>Z1(F0,"ansi256",P1,!0)),J1(J.bgColor,"ansi16m",()=>Z1(N0,"rgb",S0,!0)),J}Object.defineProperty(C0,"exports",{enumerable:!0,get:sq})});var k0=z((PJ,v0)=>{v0.exports=(q,J=process.argv)=>{let Z=q.startsWith("-")?"":q.length===1?"-":"--",X=J.indexOf(Z+q),Y=J.indexOf("--");return X!==-1&&(Y===-1||X<Y)}});var m0=z((bJ,b0)=>{var aq=P("os"),P0=P("tty"),E2=k0(),{env:a}=process,g2;if(E2("no-color")||E2("no-colors")||E2("color=false")||E2("color=never"))g2=0;else if(E2("color")||E2("colors")||E2("color=true")||E2("color=always"))g2=1;if("FORCE_COLOR"in a)if(a.FORCE_COLOR==="true")g2=1;else if(a.FORCE_COLOR==="false")g2=0;else g2=a.FORCE_COLOR.length===0?1:Math.min(parseInt(a.FORCE_COLOR,10),3);function I5(q){if(q===0)return!1;return{level:q,hasBasic:!0,has256:q>=2,has16m:q>=3}}function E5(q,J){if(g2===0)return 0;if(E2("color=16m")||E2("color=full")||E2("color=truecolor"))return 3;if(E2("color=256"))return 2;if(q&&!J&&g2===void 0)return 0;let Z=g2||0;if(a.TERM==="dumb")return Z;if(process.platform==="win32"){let X=aq.release().split(".");if(Number(X[0])>=10&&Number(X[2])>=10586)return Number(X[2])>=14931?3:2;return 1}if("CI"in a){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((X)=>(X in a))||a.CI_NAME==="codeship")return 1;return Z}if("TEAMCITY_VERSION"in a)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0;if(a.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in a){let X=parseInt((a.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(a.TERM_PROGRAM){case"iTerm.app":return X>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(a.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM))return 1;if("COLORTERM"in a)return 1;return Z}function tq(q){let J=E5(q,q&&q.isTTY);return I5(J)}b0.exports={supportsColor:tq,stdout:I5(E5(!0,P0.isatty(1))),stderr:I5(E5(!0,P0.isatty(2)))}});var f0=z((mJ,u0)=>{var eq=(q,J,Z)=>{let X=q.indexOf(J);if(X===-1)return q;let Y=J.length,Q=0,G="";do G+=q.substr(Q,X-Q)+J+Z,Q=X+Y,X=q.indexOf(J,Q);while(X!==-1);return G+=q.substr(Q),G},q9=(q,J,Z,X)=>{let Y=0,Q="";do{let G=q[X-1]==="\r";Q+=q.substr(Y,(G?X-1:X)-Y)+J+(G?`\r
|
|
24
|
+
`:`
|
|
25
|
+
`)+Z,Y=X+1,X=q.indexOf(`
|
|
26
|
+
`,Y)}while(X!==-1);return Q+=q.substr(Y),Q};u0.exports={stringReplaceAll:eq,stringEncaseCRLFWithFirstIndex:q9}});var n0=z((uJ,h0)=>{var J9=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,g0=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Z9=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,X9=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Y9=new Map([["n",`
|
|
27
|
+
`],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\x00"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function p0(q){let J=q[0]==="u",Z=q[1]==="{";if(J&&!Z&&q.length===5||q[0]==="x"&&q.length===3)return String.fromCharCode(parseInt(q.slice(1),16));if(J&&Z)return String.fromCodePoint(parseInt(q.slice(2,-1),16));return Y9.get(q)||q}function Q9(q,J){let Z=[],X=J.trim().split(/\s*,\s*/g),Y;for(let Q of X){let G=Number(Q);if(!Number.isNaN(G))Z.push(G);else if(Y=Q.match(Z9))Z.push(Y[2].replace(X9,($,K,W)=>K?p0(K):W));else throw Error(`Invalid Chalk template style argument: ${Q} (in style '${q}')`)}return Z}function G9(q){g0.lastIndex=0;let J=[],Z;while((Z=g0.exec(q))!==null){let X=Z[1];if(Z[2]){let Y=Q9(X,Z[2]);J.push([X].concat(Y))}else J.push([X])}return J}function d0(q,J){let Z={};for(let Y of J)for(let Q of Y.styles)Z[Q[0]]=Y.inverse?null:Q.slice(1);let X=q;for(let[Y,Q]of Object.entries(Z)){if(!Array.isArray(Q))continue;if(!(Y in X))throw Error(`Unknown Chalk style: ${Y}`);X=Q.length>0?X[Y](...Q):X[Y]}return X}h0.exports=(q,J)=>{let Z=[],X=[],Y=[];if(J.replace(J9,(Q,G,$,K,W,H)=>{if(G)Y.push(p0(G));else if(K){let U=Y.join("");Y=[],X.push(Z.length===0?U:d0(q,Z)(U)),Z.push({inverse:$,styles:G9(K)})}else if(W){if(Z.length===0)throw Error("Found extraneous } in Chalk template literal");X.push(d0(q,Z)(Y.join(""))),Y=[],Z.pop()}else Y.push(H)}),X.push(Y.join("")),Z.length>0){let Q=`Chalk template literal is missing ${Z.length} closing bracket${Z.length===1?"":"s"} (\`}\`)`;throw Error(Q)}return X.join("")}});var G2=z((fJ,a0)=>{var _1=y0(),{stdout:w5,stderr:O5}=m0(),{stringReplaceAll:$9,stringEncaseCRLFWithFirstIndex:K9}=f0(),{isArray:b1}=Array,l0=["ansi","ansi","ansi256","ansi16m"],X1=Object.create(null),W9=(q,J={})=>{if(J.level&&!(Number.isInteger(J.level)&&J.level>=0&&J.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let Z=w5?w5.level:0;q.level=J.level===void 0?Z:J.level};class c0{constructor(q){return o0(q)}}var o0=(q)=>{let J={};return W9(J,q),J.template=(...Z)=>s0(J.template,...Z),Object.setPrototypeOf(J,m1.prototype),Object.setPrototypeOf(J.template,J),J.template.constructor=()=>{throw Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},J.template.Instance=c0,J.template};function m1(q){return o0(q)}for(let[q,J]of Object.entries(_1))X1[q]={get(){let Z=u1(this,D5(J.open,J.close,this._styler),this._isEmpty);return Object.defineProperty(this,q,{value:Z}),Z}};X1.visible={get(){let q=u1(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:q}),q}};var r0=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let q of r0)X1[q]={get(){let{level:J}=this;return function(...Z){let X=D5(_1.color[l0[J]][q](...Z),_1.color.close,this._styler);return u1(this,X,this._isEmpty)}}};for(let q of r0){let J="bg"+q[0].toUpperCase()+q.slice(1);X1[J]={get(){let{level:Z}=this;return function(...X){let Y=D5(_1.bgColor[l0[Z]][q](...X),_1.bgColor.close,this._styler);return u1(this,Y,this._isEmpty)}}}}var H9=Object.defineProperties(()=>{},{...X1,level:{enumerable:!0,get(){return this._generator.level},set(q){this._generator.level=q}}}),D5=(q,J,Z)=>{let X,Y;if(Z===void 0)X=q,Y=J;else X=Z.openAll+q,Y=J+Z.closeAll;return{open:q,close:J,openAll:X,closeAll:Y,parent:Z}},u1=(q,J,Z)=>{let X=(...Y)=>{if(b1(Y[0])&&b1(Y[0].raw))return i0(X,s0(X,...Y));return i0(X,Y.length===1?""+Y[0]:Y.join(" "))};return Object.setPrototypeOf(X,H9),X._generator=q,X._styler=J,X._isEmpty=Z,X},i0=(q,J)=>{if(q.level<=0||!J)return q._isEmpty?"":J;let Z=q._styler;if(Z===void 0)return J;let{openAll:X,closeAll:Y}=Z;if(J.indexOf("\x1B")!==-1)while(Z!==void 0)J=$9(J,Z.close,Z.open),Z=Z.parent;let Q=J.indexOf(`
|
|
28
|
+
`);if(Q!==-1)J=K9(J,Y,X,Q);return X+J+Y},T5,s0=(q,...J)=>{let[Z]=J;if(!b1(Z)||!b1(Z.raw))return J.join(" ");let X=J.slice(1),Y=[Z.raw[0]];for(let Q=1;Q<Z.length;Q++)Y.push(String(X[Q-1]).replace(/[{}\\]/g,"\\$&"),String(Z.raw[Q]));if(T5===void 0)T5=n0();return T5(q,Y.join(""))};Object.defineProperties(m1.prototype,X1);var f1=m1();f1.supportsColor=w5;f1.stderr=m1({level:O5?O5.level:0});f1.stderr.supportsColor=O5;a0.exports=f1});var t=z((U9)=>{U9.fromCallback=function(q){return Object.defineProperty(function(...J){if(typeof J[J.length-1]==="function")q.apply(this,J);else return new Promise((Z,X)=>{J.push((Y,Q)=>Y!=null?X(Y):Z(Q)),q.apply(this,J)})},"name",{value:q.name})};U9.fromPromise=function(q){return Object.defineProperty(function(...J){let Z=J[J.length-1];if(typeof Z!=="function")return q.apply(this,J);else J.pop(),q.apply(this,J).then((X)=>Z(null,X),Z)},"name",{value:q.name})}});var e0=z((dJ,t0)=>{var d2=P("constants"),V9=process.cwd,g1=null,B9=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!g1)g1=V9.call(process);return g1};try{process.cwd()}catch(q){}if(typeof process.chdir==="function"){if(d1=process.chdir,process.chdir=function(q){g1=null,d1.call(process,q)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,d1)}var d1;t0.exports=R9;function R9(q){if(d2.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))J(q);if(!q.lutimes)Z(q);if(q.chown=Q(q.chown),q.fchown=Q(q.fchown),q.lchown=Q(q.lchown),q.chmod=X(q.chmod),q.fchmod=X(q.fchmod),q.lchmod=X(q.lchmod),q.chownSync=G(q.chownSync),q.fchownSync=G(q.fchownSync),q.lchownSync=G(q.lchownSync),q.chmodSync=Y(q.chmodSync),q.fchmodSync=Y(q.fchmodSync),q.lchmodSync=Y(q.lchmodSync),q.stat=$(q.stat),q.fstat=$(q.fstat),q.lstat=$(q.lstat),q.statSync=K(q.statSync),q.fstatSync=K(q.fstatSync),q.lstatSync=K(q.lstatSync),q.chmod&&!q.lchmod)q.lchmod=function(H,U,L){if(L)process.nextTick(L)},q.lchmodSync=function(){};if(q.chown&&!q.lchown)q.lchown=function(H,U,L,_){if(_)process.nextTick(_)},q.lchownSync=function(){};if(B9==="win32")q.rename=typeof q.rename!=="function"?q.rename:function(H){function U(L,_,V){var j=Date.now(),T=0;H(L,_,function F(D){if(D&&(D.code==="EACCES"||D.code==="EPERM"||D.code==="EBUSY")&&Date.now()-j<60000){if(setTimeout(function(){q.stat(_,function(N,R2){if(N&&N.code==="ENOENT")H(L,_,F);else V(D)})},T),T<100)T+=10;return}if(V)V(D)})}if(Object.setPrototypeOf)Object.setPrototypeOf(U,H);return U}(q.rename);q.read=typeof q.read!=="function"?q.read:function(H){function U(L,_,V,j,T,F){var D;if(F&&typeof F==="function"){var N=0;D=function(R2,r,Q2){if(R2&&R2.code==="EAGAIN"&&N<10)return N++,H.call(q,L,_,V,j,T,D);F.apply(this,arguments)}}return H.call(q,L,_,V,j,T,D)}if(Object.setPrototypeOf)Object.setPrototypeOf(U,H);return U}(q.read),q.readSync=typeof q.readSync!=="function"?q.readSync:function(H){return function(U,L,_,V,j){var T=0;while(!0)try{return H.call(q,U,L,_,V,j)}catch(F){if(F.code==="EAGAIN"&&T<10){T++;continue}throw F}}}(q.readSync);function J(H){H.lchmod=function(U,L,_){H.open(U,d2.O_WRONLY|d2.O_SYMLINK,L,function(V,j){if(V){if(_)_(V);return}H.fchmod(j,L,function(T){H.close(j,function(F){if(_)_(T||F)})})})},H.lchmodSync=function(U,L){var _=H.openSync(U,d2.O_WRONLY|d2.O_SYMLINK,L),V=!0,j;try{j=H.fchmodSync(_,L),V=!1}finally{if(V)try{H.closeSync(_)}catch(T){}else H.closeSync(_)}return j}}function Z(H){if(d2.hasOwnProperty("O_SYMLINK")&&H.futimes)H.lutimes=function(U,L,_,V){H.open(U,d2.O_SYMLINK,function(j,T){if(j){if(V)V(j);return}H.futimes(T,L,_,function(F){H.close(T,function(D){if(V)V(F||D)})})})},H.lutimesSync=function(U,L,_){var V=H.openSync(U,d2.O_SYMLINK),j,T=!0;try{j=H.futimesSync(V,L,_),T=!1}finally{if(T)try{H.closeSync(V)}catch(F){}else H.closeSync(V)}return j};else if(H.futimes)H.lutimes=function(U,L,_,V){if(V)process.nextTick(V)},H.lutimesSync=function(){}}function X(H){if(!H)return H;return function(U,L,_){return H.call(q,U,L,function(V){if(W(V))V=null;if(_)_.apply(this,arguments)})}}function Y(H){if(!H)return H;return function(U,L){try{return H.call(q,U,L)}catch(_){if(!W(_))throw _}}}function Q(H){if(!H)return H;return function(U,L,_,V){return H.call(q,U,L,_,function(j){if(W(j))j=null;if(V)V.apply(this,arguments)})}}function G(H){if(!H)return H;return function(U,L,_){try{return H.call(q,U,L,_)}catch(V){if(!W(V))throw V}}}function $(H){if(!H)return H;return function(U,L,_){if(typeof L==="function")_=L,L=null;function V(j,T){if(T){if(T.uid<0)T.uid+=4294967296;if(T.gid<0)T.gid+=4294967296}if(_)_.apply(this,arguments)}return L?H.call(q,U,L,V):H.call(q,U,V)}}function K(H){if(!H)return H;return function(U,L){var _=L?H.call(q,U,L):H.call(q,U);if(_){if(_.uid<0)_.uid+=4294967296;if(_.gid<0)_.gid+=4294967296}return _}}function W(H){if(!H)return!0;if(H.code==="ENOSYS")return!0;var U=!process.getuid||process.getuid()!==0;if(U){if(H.code==="EINVAL"||H.code==="EPERM")return!0}return!1}}});var Z4=z((pJ,J4)=>{var q4=P("stream").Stream;J4.exports=j9;function j9(q){return{ReadStream:J,WriteStream:Z};function J(X,Y){if(!(this instanceof J))return new J(X,Y);q4.call(this);var Q=this;this.path=X,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,Y=Y||{};var G=Object.keys(Y);for(var $=0,K=G.length;$<K;$++){var W=G[$];this[W]=Y[W]}if(this.encoding)this.setEncoding(this.encoding);if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!=="number")throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){Q._read()});return}q.open(this.path,this.flags,this.mode,function(H,U){if(H){Q.emit("error",H),Q.readable=!1;return}Q.fd=U,Q.emit("open",U),Q._read()})}function Z(X,Y){if(!(this instanceof Z))return new Z(X,Y);q4.call(this),this.path=X,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,Y=Y||{};var Q=Object.keys(Y);for(var G=0,$=Q.length;G<$;G++){var K=Q[G];this[K]=Y[K]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=q.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}}});var Y4=z((hJ,X4)=>{X4.exports=I9;var z9=Object.getPrototypeOf||function(q){return q.__proto__};function I9(q){if(q===null||typeof q!=="object")return q;if(q instanceof Object)var J={__proto__:z9(q)};else var J=Object.create(null);return Object.getOwnPropertyNames(q).forEach(function(Z){Object.defineProperty(J,Z,Object.getOwnPropertyDescriptor(q,Z))}),J}});var Q1=z((nJ,F5)=>{var f=P("fs"),E9=e0(),T9=Z4(),w9=Y4(),p1=P("util"),Y2,n1;if(typeof Symbol==="function"&&typeof Symbol.for==="function")Y2=Symbol.for("graceful-fs.queue"),n1=Symbol.for("graceful-fs.previous");else Y2="___graceful-fs.queue",n1="___graceful-fs.previous";function O9(){}function G4(q,J){Object.defineProperty(q,Y2,{get:function(){return J}})}var o2=O9;if(p1.debuglog)o2=p1.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))o2=function(){var q=p1.format.apply(p1,arguments);q="GFS4: "+q.split(/\n/).join(`
|
|
29
|
+
GFS4: `),console.error(q)};if(!f[Y2]){if(M5=global[Y2]||[],G4(f,M5),f.close=function(q){function J(Z,X){return q.call(f,Z,function(Y){if(!Y)Q4();if(typeof X==="function")X.apply(this,arguments)})}return Object.defineProperty(J,n1,{value:q}),J}(f.close),f.closeSync=function(q){function J(Z){q.apply(f,arguments),Q4()}return Object.defineProperty(J,n1,{value:q}),J}(f.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){o2(f[Y2]),P("assert").equal(f[Y2].length,0)})}var M5;if(!global[Y2])G4(global,f[Y2]);F5.exports=A5(w9(f));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!f.__patched)F5.exports=A5(f),f.__patched=!0;function A5(q){E9(q),q.gracefulify=A5,q.createReadStream=r,q.createWriteStream=Q2;var J=q.readFile;q.readFile=Z;function Z(I,M,x){if(typeof M==="function")x=M,M=null;return J2(I,M,x);function J2(Z2,s,u,d){return J(Z2,s,function(v){if(v&&(v.code==="EMFILE"||v.code==="ENFILE"))Y1([J2,[Z2,s,u],v,d||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var X=q.writeFile;q.writeFile=Y;function Y(I,M,x,J2){if(typeof x==="function")J2=x,x=null;return Z2(I,M,x,J2);function Z2(s,u,d,v,X2){return X(s,u,d,function(m){if(m&&(m.code==="EMFILE"||m.code==="ENFILE"))Y1([Z2,[s,u,d,v],m,X2||Date.now(),Date.now()]);else if(typeof v==="function")v.apply(this,arguments)})}}var Q=q.appendFile;if(Q)q.appendFile=G;function G(I,M,x,J2){if(typeof x==="function")J2=x,x=null;return Z2(I,M,x,J2);function Z2(s,u,d,v,X2){return Q(s,u,d,function(m){if(m&&(m.code==="EMFILE"||m.code==="ENFILE"))Y1([Z2,[s,u,d,v],m,X2||Date.now(),Date.now()]);else if(typeof v==="function")v.apply(this,arguments)})}}var $=q.copyFile;if($)q.copyFile=K;function K(I,M,x,J2){if(typeof x==="function")J2=x,x=0;return Z2(I,M,x,J2);function Z2(s,u,d,v,X2){return $(s,u,d,function(m){if(m&&(m.code==="EMFILE"||m.code==="ENFILE"))Y1([Z2,[s,u,d,v],m,X2||Date.now(),Date.now()]);else if(typeof v==="function")v.apply(this,arguments)})}}var W=q.readdir;q.readdir=U;var H=/^v[0-5]\./;function U(I,M,x){if(typeof M==="function")x=M,M=null;var J2=H.test(process.version)?function(u,d,v,X2){return W(u,Z2(u,d,v,X2))}:function(u,d,v,X2){return W(u,d,Z2(u,d,v,X2))};return J2(I,M,x);function Z2(s,u,d,v){return function(X2,m){if(X2&&(X2.code==="EMFILE"||X2.code==="ENFILE"))Y1([J2,[s,u,d],X2,v||Date.now(),Date.now()]);else{if(m&&m.sort)m.sort();if(typeof d==="function")d.call(this,X2,m)}}}}if(process.version.substr(0,4)==="v0.8"){var L=T9(q);F=L.ReadStream,N=L.WriteStream}var _=q.ReadStream;if(_)F.prototype=Object.create(_.prototype),F.prototype.open=D;var V=q.WriteStream;if(V)N.prototype=Object.create(V.prototype),N.prototype.open=R2;Object.defineProperty(q,"ReadStream",{get:function(){return F},set:function(I){F=I},enumerable:!0,configurable:!0}),Object.defineProperty(q,"WriteStream",{get:function(){return N},set:function(I){N=I},enumerable:!0,configurable:!0});var j=F;Object.defineProperty(q,"FileReadStream",{get:function(){return j},set:function(I){j=I},enumerable:!0,configurable:!0});var T=N;Object.defineProperty(q,"FileWriteStream",{get:function(){return T},set:function(I){T=I},enumerable:!0,configurable:!0});function F(I,M){if(this instanceof F)return _.apply(this,arguments),this;else return F.apply(Object.create(F.prototype),arguments)}function D(){var I=this;A2(I.path,I.flags,I.mode,function(M,x){if(M){if(I.autoClose)I.destroy();I.emit("error",M)}else I.fd=x,I.emit("open",x),I.read()})}function N(I,M){if(this instanceof N)return V.apply(this,arguments),this;else return N.apply(Object.create(N.prototype),arguments)}function R2(){var I=this;A2(I.path,I.flags,I.mode,function(M,x){if(M)I.destroy(),I.emit("error",M);else I.fd=x,I.emit("open",x)})}function r(I,M){return new q.ReadStream(I,M)}function Q2(I,M){return new q.WriteStream(I,M)}var M2=q.open;q.open=A2;function A2(I,M,x,J2){if(typeof x==="function")J2=x,x=null;return Z2(I,M,x,J2);function Z2(s,u,d,v,X2){return M2(s,u,d,function(m,WJ){if(m&&(m.code==="EMFILE"||m.code==="ENFILE"))Y1([Z2,[s,u,d,v],m,X2||Date.now(),Date.now()]);else if(typeof v==="function")v.apply(this,arguments)})}}return q}function Y1(q){o2("ENQUEUE",q[0].name,q[1]),f[Y2].push(q),x5()}var h1;function Q4(){var q=Date.now();for(var J=0;J<f[Y2].length;++J)if(f[Y2][J].length>2)f[Y2][J][3]=q,f[Y2][J][4]=q;x5()}function x5(){if(clearTimeout(h1),h1=void 0,f[Y2].length===0)return;var q=f[Y2].shift(),J=q[0],Z=q[1],X=q[2],Y=q[3],Q=q[4];if(Y===void 0)o2("RETRY",J.name,Z),J.apply(null,Z);else if(Date.now()-Y>=60000){o2("TIMEOUT",J.name,Z);var G=Z.pop();if(typeof G==="function")G.call(null,X)}else{var $=Date.now()-Q,K=Math.max(Q-Y,1),W=Math.min(K*1.2,100);if($>=W)o2("RETRY",J.name,Z),J.apply(null,Z.concat([Y]));else f[Y2].push(q)}if(h1===void 0)h1=setTimeout(x5,0)}});var _2=z((N5)=>{var $4=t().fromCallback,U2=Q1(),D9=["access","appendFile","chmod","chown","close","copyFile","cp","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","glob","lchmod","lchown","lutimes","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","statfs","symlink","truncate","unlink","utimes","writeFile"].filter((q)=>{return typeof U2[q]==="function"});Object.assign(N5,U2);D9.forEach((q)=>{N5[q]=$4(U2[q])});N5.exists=function(q,J){if(typeof J==="function")return U2.exists(q,J);return new Promise((Z)=>{return U2.exists(q,Z)})};N5.read=function(q,J,Z,X,Y,Q){if(typeof Q==="function")return U2.read(q,J,Z,X,Y,Q);return new Promise((G,$)=>{U2.read(q,J,Z,X,Y,(K,W,H)=>{if(K)return $(K);G({bytesRead:W,buffer:H})})})};N5.write=function(q,J,...Z){if(typeof Z[Z.length-1]==="function")return U2.write(q,J,...Z);return new Promise((X,Y)=>{U2.write(q,J,...Z,(Q,G,$)=>{if(Q)return Y(Q);X({bytesWritten:G,buffer:$})})})};N5.readv=function(q,J,...Z){if(typeof Z[Z.length-1]==="function")return U2.readv(q,J,...Z);return new Promise((X,Y)=>{U2.readv(q,J,...Z,(Q,G,$)=>{if(Q)return Y(Q);X({bytesRead:G,buffers:$})})})};N5.writev=function(q,J,...Z){if(typeof Z[Z.length-1]==="function")return U2.writev(q,J,...Z);return new Promise((X,Y)=>{U2.writev(q,J,...Z,(Q,G,$)=>{if(Q)return Y(Q);X({bytesWritten:G,buffers:$})})})};if(typeof U2.realpath.native==="function")N5.realpath.native=$4(U2.realpath.native);else process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var W4=z((C9,K4)=>{var S9=P("path");C9.checkPath=function(J){if(process.platform==="win32"){if(/[<>:"|?*]/.test(J.replace(S9.parse(J).root,""))){let X=Error(`Path contains invalid characters: ${J}`);throw X.code="EINVAL",X}}}});var L4=z((v9,S5)=>{var H4=_2(),{checkPath:U4}=W4(),_4=(q)=>{let J={mode:511};if(typeof q==="number")return q;return{...J,...q}.mode};v9.makeDir=async(q,J)=>{return U4(q),H4.mkdir(q,{mode:_4(J),recursive:!0})};v9.makeDirSync=(q,J)=>{return U4(q),H4.mkdirSync(q,{mode:_4(J),recursive:!0})}});var x2=z((cJ,V4)=>{var b9=t().fromPromise,{makeDir:m9,makeDirSync:C5}=L4(),y5=b9(m9);V4.exports={mkdirs:y5,mkdirsSync:C5,mkdirp:y5,mkdirpSync:C5,ensureDir:y5,ensureDirSync:C5}});var p2=z((oJ,R4)=>{var u9=t().fromPromise,B4=_2();function f9(q){return B4.access(q).then(()=>!0).catch(()=>!1)}R4.exports={pathExists:u9(f9),pathExistsSync:B4.existsSync}});var v5=z((rJ,j4)=>{var G1=_2(),g9=t().fromPromise;async function d9(q,J,Z){let X=await G1.open(q,"r+"),Y=null;try{await G1.futimes(X,J,Z)}finally{try{await G1.close(X)}catch(Q){Y=Q}}if(Y)throw Y}function p9(q,J,Z){let X=G1.openSync(q,"r+");return G1.futimesSync(X,J,Z),G1.closeSync(X)}j4.exports={utimesMillis:g9(d9),utimesMillisSync:p9}});var r2=z((sJ,T4)=>{var $1=_2(),e=P("path"),z4=t().fromPromise;function h9(q,J,Z){let X=Z.dereference?(Y)=>$1.stat(Y,{bigint:!0}):(Y)=>$1.lstat(Y,{bigint:!0});return Promise.all([X(q),X(J).catch((Y)=>{if(Y.code==="ENOENT")return null;throw Y})]).then(([Y,Q])=>({srcStat:Y,destStat:Q}))}function n9(q,J,Z){let X,Y=Z.dereference?(G)=>$1.statSync(G,{bigint:!0}):(G)=>$1.lstatSync(G,{bigint:!0}),Q=Y(q);try{X=Y(J)}catch(G){if(G.code==="ENOENT")return{srcStat:Q,destStat:null};throw G}return{srcStat:Q,destStat:X}}async function i9(q,J,Z,X){let{srcStat:Y,destStat:Q}=await h9(q,J,X);if(Q){if(L1(Y,Q)){let G=e.basename(q),$=e.basename(J);if(Z==="move"&&G!==$&&G.toLowerCase()===$.toLowerCase())return{srcStat:Y,destStat:Q,isChangingCase:!0};throw Error("Source and destination must not be the same.")}if(Y.isDirectory()&&!Q.isDirectory())throw Error(`Cannot overwrite non-directory '${J}' with directory '${q}'.`);if(!Y.isDirectory()&&Q.isDirectory())throw Error(`Cannot overwrite directory '${J}' with non-directory '${q}'.`)}if(Y.isDirectory()&&k5(q,J))throw Error(i1(q,J,Z));return{srcStat:Y,destStat:Q}}function l9(q,J,Z,X){let{srcStat:Y,destStat:Q}=n9(q,J,X);if(Q){if(L1(Y,Q)){let G=e.basename(q),$=e.basename(J);if(Z==="move"&&G!==$&&G.toLowerCase()===$.toLowerCase())return{srcStat:Y,destStat:Q,isChangingCase:!0};throw Error("Source and destination must not be the same.")}if(Y.isDirectory()&&!Q.isDirectory())throw Error(`Cannot overwrite non-directory '${J}' with directory '${q}'.`);if(!Y.isDirectory()&&Q.isDirectory())throw Error(`Cannot overwrite directory '${J}' with non-directory '${q}'.`)}if(Y.isDirectory()&&k5(q,J))throw Error(i1(q,J,Z));return{srcStat:Y,destStat:Q}}async function I4(q,J,Z,X){let Y=e.resolve(e.dirname(q)),Q=e.resolve(e.dirname(Z));if(Q===Y||Q===e.parse(Q).root)return;let G;try{G=await $1.stat(Q,{bigint:!0})}catch($){if($.code==="ENOENT")return;throw $}if(L1(J,G))throw Error(i1(q,Z,X));return I4(q,J,Q,X)}function E4(q,J,Z,X){let Y=e.resolve(e.dirname(q)),Q=e.resolve(e.dirname(Z));if(Q===Y||Q===e.parse(Q).root)return;let G;try{G=$1.statSync(Q,{bigint:!0})}catch($){if($.code==="ENOENT")return;throw $}if(L1(J,G))throw Error(i1(q,Z,X));return E4(q,J,Q,X)}function L1(q,J){return J.ino!==void 0&&J.dev!==void 0&&J.ino===q.ino&&J.dev===q.dev}function k5(q,J){let Z=e.resolve(q).split(e.sep).filter((Y)=>Y),X=e.resolve(J).split(e.sep).filter((Y)=>Y);return Z.every((Y,Q)=>X[Q]===Y)}function i1(q,J,Z){return`Cannot ${Z} '${q}' to a subdirectory of itself, '${J}'.`}T4.exports={checkPaths:z4(i9),checkPathsSync:l9,checkParentPaths:z4(I4),checkParentPathsSync:E4,isSrcSubdir:k5,areIdentical:L1}});var O4=z((aJ,w4)=>{async function c9(q,J){let Z=[];for await(let X of q)Z.push(J(X).then(()=>null,(Y)=>Y??Error("unknown error")));await Promise.all(Z.map((X)=>X.then((Y)=>{if(Y!==null)throw Y})))}w4.exports={asyncIteratorConcurrentProcess:c9}});var F4=z((tJ,x4)=>{var $2=_2(),V1=P("path"),{mkdirs:o9}=x2(),{pathExists:r9}=p2(),{utimesMillis:s9}=v5(),B1=r2(),{asyncIteratorConcurrentProcess:a9}=O4();async function t9(q,J,Z={}){if(typeof Z==="function")Z={filter:Z};if(Z.clobber="clobber"in Z?!!Z.clobber:!0,Z.overwrite="overwrite"in Z?!!Z.overwrite:Z.clobber,Z.preserveTimestamps&&process.arch==="ia32")process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
|
|
30
|
+
|
|
31
|
+
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:X,destStat:Y}=await B1.checkPaths(q,J,"copy",Z);if(await B1.checkParentPaths(q,X,J,"copy"),!await M4(q,J,Z))return;let G=V1.dirname(J);if(!await r9(G))await o9(G);await A4(Y,q,J,Z)}async function M4(q,J,Z){if(!Z.filter)return!0;return Z.filter(q,J)}async function A4(q,J,Z,X){let Q=await(X.dereference?$2.stat:$2.lstat)(J);if(Q.isDirectory())return Z6(Q,q,J,Z,X);if(Q.isFile()||Q.isCharacterDevice()||Q.isBlockDevice())return e9(Q,q,J,Z,X);if(Q.isSymbolicLink())return X6(q,J,Z,X);if(Q.isSocket())throw Error(`Cannot copy a socket file: ${J}`);if(Q.isFIFO())throw Error(`Cannot copy a FIFO pipe: ${J}`);throw Error(`Unknown file: ${J}`)}async function e9(q,J,Z,X,Y){if(!J)return D4(q,Z,X,Y);if(Y.overwrite)return await $2.unlink(X),D4(q,Z,X,Y);if(Y.errorOnExist)throw Error(`'${X}' already exists`)}async function D4(q,J,Z,X){if(await $2.copyFile(J,Z),X.preserveTimestamps){if(q6(q.mode))await J6(Z,q.mode);let Y=await $2.stat(J);await s9(Z,Y.atime,Y.mtime)}return $2.chmod(Z,q.mode)}function q6(q){return(q&128)===0}function J6(q,J){return $2.chmod(q,J|128)}async function Z6(q,J,Z,X,Y){if(!J)await $2.mkdir(X);if(await a9(await $2.opendir(Z),async(Q)=>{let G=V1.join(Z,Q.name),$=V1.join(X,Q.name);if(await M4(G,$,Y)){let{destStat:W}=await B1.checkPaths(G,$,"copy",Y);await A4(W,G,$,Y)}}),!J)await $2.chmod(X,q.mode)}async function X6(q,J,Z,X){let Y=await $2.readlink(J);if(X.dereference)Y=V1.resolve(process.cwd(),Y);if(!q)return $2.symlink(Y,Z);let Q=null;try{Q=await $2.readlink(Z)}catch(G){if(G.code==="EINVAL"||G.code==="UNKNOWN")return $2.symlink(Y,Z);throw G}if(X.dereference)Q=V1.resolve(process.cwd(),Q);if(Y!==Q){if(B1.isSrcSubdir(Y,Q))throw Error(`Cannot copy '${Y}' to a subdirectory of itself, '${Q}'.`);if(B1.isSrcSubdir(Q,Y))throw Error(`Cannot overwrite '${Q}' with '${Y}'.`)}return await $2.unlink(Z),$2.symlink(Y,Z)}x4.exports=t9});var v4=z((eJ,y4)=>{var L2=Q1(),R1=P("path"),Y6=x2().mkdirsSync,Q6=v5().utimesMillisSync,j1=r2();function G6(q,J,Z){if(typeof Z==="function")Z={filter:Z};if(Z=Z||{},Z.clobber="clobber"in Z?!!Z.clobber:!0,Z.overwrite="overwrite"in Z?!!Z.overwrite:Z.clobber,Z.preserveTimestamps&&process.arch==="ia32")process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
|
|
32
|
+
|
|
33
|
+
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0002");let{srcStat:X,destStat:Y}=j1.checkPathsSync(q,J,"copy",Z);if(j1.checkParentPathsSync(q,X,J,"copy"),Z.filter&&!Z.filter(q,J))return;let Q=R1.dirname(J);if(!L2.existsSync(Q))Y6(Q);return N4(Y,q,J,Z)}function N4(q,J,Z,X){let Q=(X.dereference?L2.statSync:L2.lstatSync)(J);if(Q.isDirectory())return L6(Q,q,J,Z,X);else if(Q.isFile()||Q.isCharacterDevice()||Q.isBlockDevice())return $6(Q,q,J,Z,X);else if(Q.isSymbolicLink())return R6(q,J,Z,X);else if(Q.isSocket())throw Error(`Cannot copy a socket file: ${J}`);else if(Q.isFIFO())throw Error(`Cannot copy a FIFO pipe: ${J}`);throw Error(`Unknown file: ${J}`)}function $6(q,J,Z,X,Y){if(!J)return S4(q,Z,X,Y);return K6(q,Z,X,Y)}function K6(q,J,Z,X){if(X.overwrite)return L2.unlinkSync(Z),S4(q,J,Z,X);else if(X.errorOnExist)throw Error(`'${Z}' already exists`)}function S4(q,J,Z,X){if(L2.copyFileSync(J,Z),X.preserveTimestamps)W6(q.mode,J,Z);return P5(Z,q.mode)}function W6(q,J,Z){if(H6(q))U6(Z,q);return _6(J,Z)}function H6(q){return(q&128)===0}function U6(q,J){return P5(q,J|128)}function P5(q,J){return L2.chmodSync(q,J)}function _6(q,J){let Z=L2.statSync(q);return Q6(J,Z.atime,Z.mtime)}function L6(q,J,Z,X,Y){if(!J)return V6(q.mode,Z,X,Y);return C4(Z,X,Y)}function V6(q,J,Z,X){return L2.mkdirSync(Z),C4(J,Z,X),P5(Z,q)}function C4(q,J,Z){let X=L2.opendirSync(q);try{let Y;while((Y=X.readSync())!==null)B6(Y.name,q,J,Z)}finally{X.closeSync()}}function B6(q,J,Z,X){let Y=R1.join(J,q),Q=R1.join(Z,q);if(X.filter&&!X.filter(Y,Q))return;let{destStat:G}=j1.checkPathsSync(Y,Q,"copy",X);return N4(G,Y,Q,X)}function R6(q,J,Z,X){let Y=L2.readlinkSync(J);if(X.dereference)Y=R1.resolve(process.cwd(),Y);if(!q)return L2.symlinkSync(Y,Z);else{let Q;try{Q=L2.readlinkSync(Z)}catch(G){if(G.code==="EINVAL"||G.code==="UNKNOWN")return L2.symlinkSync(Y,Z);throw G}if(X.dereference)Q=R1.resolve(process.cwd(),Q);if(Y!==Q){if(j1.isSrcSubdir(Y,Q))throw Error(`Cannot copy '${Y}' to a subdirectory of itself, '${Q}'.`);if(j1.isSrcSubdir(Q,Y))throw Error(`Cannot overwrite '${Q}' with '${Y}'.`)}return j6(Y,Z)}}function j6(q,J){return L2.unlinkSync(J),L2.symlinkSync(q,J)}y4.exports=G6});var l1=z((qZ,k4)=>{var z6=t().fromPromise;k4.exports={copy:z6(F4()),copySync:v4()}});var z1=z((JZ,b4)=>{var P4=Q1(),I6=t().fromCallback;function E6(q,J){P4.rm(q,{recursive:!0,force:!0},J)}function T6(q){P4.rmSync(q,{recursive:!0,force:!0})}b4.exports={remove:I6(E6),removeSync:T6}});var n4=z((ZZ,h4)=>{var w6=t().fromPromise,f4=_2(),g4=P("path"),d4=x2(),p4=z1(),m4=w6(async function(J){let Z;try{Z=await f4.readdir(J)}catch{return d4.mkdirs(J)}return Promise.all(Z.map((X)=>p4.remove(g4.join(J,X))))});function u4(q){let J;try{J=f4.readdirSync(q)}catch{return d4.mkdirsSync(q)}J.forEach((Z)=>{Z=g4.join(q,Z),p4.removeSync(Z)})}h4.exports={emptyDirSync:u4,emptydirSync:u4,emptyDir:m4,emptydir:m4}});var o4=z((XZ,c4)=>{var O6=t().fromPromise,i4=P("path"),b2=_2(),l4=x2();async function D6(q){let J;try{J=await b2.stat(q)}catch{}if(J&&J.isFile())return;let Z=i4.dirname(q),X=null;try{X=await b2.stat(Z)}catch(Y){if(Y.code==="ENOENT"){await l4.mkdirs(Z),await b2.writeFile(q,"");return}else throw Y}if(X.isDirectory())await b2.writeFile(q,"");else await b2.readdir(Z)}function M6(q){let J;try{J=b2.statSync(q)}catch{}if(J&&J.isFile())return;let Z=i4.dirname(q);try{if(!b2.statSync(Z).isDirectory())b2.readdirSync(Z)}catch(X){if(X&&X.code==="ENOENT")l4.mkdirsSync(Z);else throw X}b2.writeFileSync(q,"")}c4.exports={createFile:O6(D6),createFileSync:M6}});var e4=z((YZ,t4)=>{var A6=t().fromPromise,r4=P("path"),h2=_2(),s4=x2(),{pathExists:x6}=p2(),{areIdentical:a4}=r2();async function F6(q,J){let Z;try{Z=await h2.lstat(J)}catch{}let X;try{X=await h2.lstat(q)}catch(G){throw G.message=G.message.replace("lstat","ensureLink"),G}if(Z&&a4(X,Z))return;let Y=r4.dirname(J);if(!await x6(Y))await s4.mkdirs(Y);await h2.link(q,J)}function N6(q,J){let Z;try{Z=h2.lstatSync(J)}catch{}try{let Q=h2.lstatSync(q);if(Z&&a4(Q,Z))return}catch(Q){throw Q.message=Q.message.replace("lstat","ensureLink"),Q}let X=r4.dirname(J);if(h2.existsSync(X))return h2.linkSync(q,J);return s4.mkdirsSync(X),h2.linkSync(q,J)}t4.exports={createLink:A6(F6),createLinkSync:N6}});var J8=z((QZ,q8)=>{var n2=P("path"),I1=_2(),{pathExists:S6}=p2(),C6=t().fromPromise;async function y6(q,J){if(n2.isAbsolute(q)){try{await I1.lstat(q)}catch(Q){throw Q.message=Q.message.replace("lstat","ensureSymlink"),Q}return{toCwd:q,toDst:q}}let Z=n2.dirname(J),X=n2.join(Z,q);if(await S6(X))return{toCwd:X,toDst:q};try{await I1.lstat(q)}catch(Q){throw Q.message=Q.message.replace("lstat","ensureSymlink"),Q}return{toCwd:q,toDst:n2.relative(Z,q)}}function v6(q,J){if(n2.isAbsolute(q)){if(!I1.existsSync(q))throw Error("absolute srcpath does not exist");return{toCwd:q,toDst:q}}let Z=n2.dirname(J),X=n2.join(Z,q);if(I1.existsSync(X))return{toCwd:X,toDst:q};if(!I1.existsSync(q))throw Error("relative srcpath does not exist");return{toCwd:q,toDst:n2.relative(Z,q)}}q8.exports={symlinkPaths:C6(y6),symlinkPathsSync:v6}});var Y8=z((GZ,X8)=>{var Z8=_2(),k6=t().fromPromise;async function P6(q,J){if(J)return J;let Z;try{Z=await Z8.lstat(q)}catch{return"file"}return Z&&Z.isDirectory()?"dir":"file"}function b6(q,J){if(J)return J;let Z;try{Z=Z8.lstatSync(q)}catch{return"file"}return Z&&Z.isDirectory()?"dir":"file"}X8.exports={symlinkType:k6(P6),symlinkTypeSync:b6}});var K8=z(($Z,$8)=>{var m6=t().fromPromise,Q8=P("path"),y2=_2(),{mkdirs:u6,mkdirsSync:f6}=x2(),{symlinkPaths:g6,symlinkPathsSync:d6}=J8(),{symlinkType:p6,symlinkTypeSync:h6}=Y8(),{pathExists:n6}=p2(),{areIdentical:G8}=r2();async function i6(q,J,Z){let X;try{X=await y2.lstat(J)}catch{}if(X&&X.isSymbolicLink()){let[$,K]=await Promise.all([y2.stat(q),y2.stat(J)]);if(G8($,K))return}let Y=await g6(q,J);q=Y.toDst;let Q=await p6(Y.toCwd,Z),G=Q8.dirname(J);if(!await n6(G))await u6(G);return y2.symlink(q,J,Q)}function l6(q,J,Z){let X;try{X=y2.lstatSync(J)}catch{}if(X&&X.isSymbolicLink()){let $=y2.statSync(q),K=y2.statSync(J);if(G8($,K))return}let Y=d6(q,J);q=Y.toDst,Z=h6(Y.toCwd,Z);let Q=Q8.dirname(J);if(y2.existsSync(Q))return y2.symlinkSync(q,J,Z);return f6(Q),y2.symlinkSync(q,J,Z)}$8.exports={createSymlink:m6(i6),createSymlinkSync:l6}});var R8=z((KZ,B8)=>{var{createFile:W8,createFileSync:H8}=o4(),{createLink:U8,createLinkSync:_8}=e4(),{createSymlink:L8,createSymlinkSync:V8}=K8();B8.exports={createFile:W8,createFileSync:H8,ensureFile:W8,ensureFileSync:H8,createLink:U8,createLinkSync:_8,ensureLink:U8,ensureLinkSync:_8,createSymlink:L8,createSymlinkSync:V8,ensureSymlink:L8,ensureSymlinkSync:V8}});var c1=z((WZ,j8)=>{function c6(q,{EOL:J=`
|
|
34
|
+
`,finalEOL:Z=!0,replacer:X=null,spaces:Y}={}){let Q=Z?J:"";return JSON.stringify(q,X,Y).replace(/\n/g,J)+Q}function o6(q){if(Buffer.isBuffer(q))q=q.toString("utf8");return q.replace(/^\uFEFF/,"")}j8.exports={stringify:c6,stripBom:o6}});var T8=z((HZ,E8)=>{var K1;try{K1=Q1()}catch(q){K1=P("fs")}var o1=t(),{stringify:z8,stripBom:I8}=c1();async function r6(q,J={}){if(typeof J==="string")J={encoding:J};let Z=J.fs||K1,X="throws"in J?J.throws:!0,Y=await o1.fromCallback(Z.readFile)(q,J);Y=I8(Y);let Q;try{Q=JSON.parse(Y,J?J.reviver:null)}catch(G){if(X)throw G.message=`${q}: ${G.message}`,G;else return null}return Q}var s6=o1.fromPromise(r6);function a6(q,J={}){if(typeof J==="string")J={encoding:J};let Z=J.fs||K1,X="throws"in J?J.throws:!0;try{let Y=Z.readFileSync(q,J);return Y=I8(Y),JSON.parse(Y,J.reviver)}catch(Y){if(X)throw Y.message=`${q}: ${Y.message}`,Y;else return null}}async function t6(q,J,Z={}){let X=Z.fs||K1,Y=z8(J,Z);await o1.fromCallback(X.writeFile)(q,Y,Z)}var e6=o1.fromPromise(t6);function q7(q,J,Z={}){let X=Z.fs||K1,Y=z8(J,Z);return X.writeFileSync(q,Y,Z)}E8.exports={readFile:s6,readFileSync:a6,writeFile:e6,writeFileSync:q7}});var O8=z((UZ,w8)=>{var r1=T8();w8.exports={readJson:r1.readFile,readJsonSync:r1.readFileSync,writeJson:r1.writeFile,writeJsonSync:r1.writeFileSync}});var s1=z((_Z,A8)=>{var J7=t().fromPromise,b5=_2(),D8=P("path"),M8=x2(),Z7=p2().pathExists;async function X7(q,J,Z="utf-8"){let X=D8.dirname(q);if(!await Z7(X))await M8.mkdirs(X);return b5.writeFile(q,J,Z)}function Y7(q,...J){let Z=D8.dirname(q);if(!b5.existsSync(Z))M8.mkdirsSync(Z);b5.writeFileSync(q,...J)}A8.exports={outputFile:J7(X7),outputFileSync:Y7}});var F8=z((LZ,x8)=>{var{stringify:Q7}=c1(),{outputFile:G7}=s1();async function $7(q,J,Z={}){let X=Q7(J,Z);await G7(q,X,Z)}x8.exports=$7});var S8=z((VZ,N8)=>{var{stringify:K7}=c1(),{outputFileSync:W7}=s1();function H7(q,J,Z){let X=K7(J,Z);W7(q,X,Z)}N8.exports=H7});var y8=z((BZ,C8)=>{var U7=t().fromPromise,V2=O8();V2.outputJson=U7(F8());V2.outputJsonSync=S8();V2.outputJSON=V2.outputJson;V2.outputJSONSync=V2.outputJsonSync;V2.writeJSON=V2.writeJson;V2.writeJSONSync=V2.writeJsonSync;V2.readJSON=V2.readJson;V2.readJSONSync=V2.readJsonSync;C8.exports=V2});var m8=z((RZ,b8)=>{var _7=_2(),v8=P("path"),{copy:L7}=l1(),{remove:P8}=z1(),{mkdirp:V7}=x2(),{pathExists:B7}=p2(),k8=r2();async function R7(q,J,Z={}){let X=Z.overwrite||Z.clobber||!1,{srcStat:Y,isChangingCase:Q=!1}=await k8.checkPaths(q,J,"move",Z);await k8.checkParentPaths(q,Y,J,"move");let G=v8.dirname(J);if(v8.parse(G).root!==G)await V7(G);return j7(q,J,X,Q)}async function j7(q,J,Z,X){if(!X){if(Z)await P8(J);else if(await B7(J))throw Error("dest already exists.")}try{await _7.rename(q,J)}catch(Y){if(Y.code!=="EXDEV")throw Y;await z7(q,J,Z)}}async function z7(q,J,Z){return await L7(q,J,{overwrite:Z,errorOnExist:!0,preserveTimestamps:!0}),P8(q)}b8.exports=R7});var p8=z((jZ,d8)=>{var f8=Q1(),u5=P("path"),I7=l1().copySync,g8=z1().removeSync,E7=x2().mkdirpSync,u8=r2();function T7(q,J,Z){Z=Z||{};let X=Z.overwrite||Z.clobber||!1,{srcStat:Y,isChangingCase:Q=!1}=u8.checkPathsSync(q,J,"move",Z);if(u8.checkParentPathsSync(q,Y,J,"move"),!w7(J))E7(u5.dirname(J));return O7(q,J,X,Q)}function w7(q){let J=u5.dirname(q);return u5.parse(J).root===J}function O7(q,J,Z,X){if(X)return m5(q,J,Z);if(Z)return g8(J),m5(q,J,Z);if(f8.existsSync(J))throw Error("dest already exists.");return m5(q,J,Z)}function m5(q,J,Z){try{f8.renameSync(q,J)}catch(X){if(X.code!=="EXDEV")throw X;return D7(q,J,Z)}}function D7(q,J,Z){return I7(q,J,{overwrite:Z,errorOnExist:!0,preserveTimestamps:!0}),g8(q)}d8.exports=T7});var n8=z((zZ,h8)=>{var M7=t().fromPromise;h8.exports={move:M7(m8()),moveSync:p8()}});var B2=z((IZ,i8)=>{i8.exports={..._2(),...l1(),...n4(),...R8(),...y8(),...x2(),...n8(),...s1(),...p2(),...z1()}});var r8={};s3(r8,{writeAircConfig:()=>s2,updateFileMetadataBatch:()=>M1,updateFileMetadata:()=>n5,removeSourceFromConfig:()=>b7,removeFileMetadataBatch:()=>k7,removeFileMetadata:()=>i5,removeConfigFile:()=>v7,readAircConfig:()=>T2,migrateConfigToPrimary:()=>y7,migrateConfigToInternal:()=>C7,isAircInitialized:()=>b,initializeAircConfig:()=>h5,getUserHomeDir:()=>d5,getUserConfigDir:()=>v2,getSourcesDir:()=>O1,getSource:()=>o5,getFileMetadataBySource:()=>c5,getFileMetadata:()=>l5,getClaudeSubdirs:()=>k2,getClaudeConfigDir:()=>p5,getAllSources:()=>m7,getAllFileMetadata:()=>P7,getAircConfigPaths:()=>w1,getAircConfigInternalFilePath:()=>l2,getAircConfigFilePath:()=>F2,getAircConfigDir:()=>z2,getActiveAircConfigPath:()=>D1,ensureAircDirectories:()=>c8,ensureAircConfigFile:()=>o8,addOrUpdateSource:()=>A1});import i2 from"path";import A7 from"os";function a1(q){if(!q||typeof q!=="object")return!1;let J=q;if(!Array.isArray(J.sources))return!1;for(let X of J.sources){if(!X||typeof X!=="object")return!1;let Y=X;if(typeof Y.name!=="string"||typeof Y.url!=="string"||typeof Y.addedAt!=="string"||typeof Y.scanDepth!=="number"||Y.branch!==void 0&&typeof Y.branch!=="string"||Y.lastUpdated!==void 0&&typeof Y.lastUpdated!=="string")return!1}if(!J.files||typeof J.files!=="object")return!1;for(let X of Object.values(J.files)){if(!X||typeof X!=="object")return!1;let Y=X;if(typeof Y.source!=="string"||typeof Y.sourcePath!=="string"||typeof Y.hash!=="string"||typeof Y.copiedAt!=="string"||Y.updatedAt!==void 0&&typeof Y.updatedAt!=="string")return!1}if(!J.settings||typeof J.settings!=="object")return!1;let Z=J.settings;if(typeof Z.defaultScanDepth!=="number"||typeof Z.autoUpdate!=="boolean")return!1;if(J.defaultSource!==void 0&&typeof J.defaultSource!=="string")return!1;return!0}function g5(q){return`${q}.backup`}function l8(q){return`${q}.lock`}async function x7(q){let J=l8(q),Z=1e4,X=100,Y=Date.now();while(Date.now()-Y<1e4)try{return await w.default.writeFile(J,process.pid.toString(),{flag:"wx"}),!0}catch{try{let Q=await w.default.readFile(J,"utf-8"),G=parseInt(Q,10);try{process.kill(G,0)}catch{await w.default.remove(J);continue}}catch{await w.default.remove(J);continue}await new Promise((Q)=>setTimeout(Q,100))}return!1}async function F7(q){let J=l8(q);try{await w.default.remove(J)}catch{}}async function N7(q){if(!await w.default.pathExists(q))return!1;try{let Z=g5(q);return await w.default.copy(q,Z,{overwrite:!0}),!0}catch{return!1}}async function f5(q){let J=g5(q);if(!await w.default.pathExists(J))return!1;try{return await w.default.copy(J,q,{overwrite:!0}),!0}catch{return!1}}async function S7(q){let J=g5(q);try{await w.default.remove(J)}catch{}}function d5(){return A7.homedir()}function z2(){return i2.join(d5(),".airc")}function F2(){return i2.join(d5(),".aircrc")}function l2(){return i2.join(z2(),".aircrc")}function w1(){return[F2(),l2()]}function O1(){return i2.join(z2(),"sources")}function v2(){return i2.join(z2(),"config")}function p5(){return v2()}function k2(){let q=v2();return{commands:i2.join(q,"commands"),skills:i2.join(q,"skills"),agents:i2.join(q,"agents")}}async function c8(){let q=[z2(),O1(),v2(),...Object.values(k2())];for(let J of q)await w.default.ensureDir(J)}async function o8(){let q=w1();for(let Z of q)if(await w.default.pathExists(Z))return;let J=F2();await w.default.writeJson(J,T1,{spaces:2})}async function T2(){let q=w1();for(let J of q)if(await w.default.pathExists(J))try{let X=await w.default.readJson(J);if(!a1(X)){if(console.warn(`Warning: Config file ${J} has invalid schema. Attempting to restore from backup...`),await f5(J))try{let Q=await w.default.readJson(J);if(a1(Q))return console.warn("Successfully restored config from backup."),{...T1,...Q}}catch{}console.warn("Could not restore from backup. Using default config.");continue}return{...T1,...X}}catch{if(console.warn(`Warning: Failed to read config file ${J}. Attempting to restore from backup...`),await f5(J))try{let Y=await w.default.readJson(J);if(a1(Y))return console.warn("Successfully restored config from backup."),{...T1,...Y}}catch{}console.warn("Could not restore from backup. Trying next config location...");continue}return T1}async function D1(){let q=w1();for(let J of q)if(await w.default.pathExists(J))return J;return F2()}async function s2(q){let J=await D1();if(!await x7(J))throw Error("Could not acquire lock for config file. Another process may be writing to it.");try{await N7(J);try{if(!a1(q))throw Error("Invalid config schema");let X=`${J}.tmp`;await w.default.writeJson(X,q,{spaces:2}),await w.default.rename(X,J),await S7(J)}catch(X){if(await f5(J))throw Error(`Failed to write config: ${X instanceof Error?X.message:"Unknown error"}. Config has been restored from backup.`);else throw Error(`Failed to write config: ${X instanceof Error?X.message:"Unknown error"}. WARNING: Could not restore from backup.`)}}finally{await F7(J)}}async function h5(){await c8(),await o8()}async function b(){let q=z2();if(!await w.default.pathExists(q))return!1;let Z=w1();for(let X of Z)if(await w.default.pathExists(X))return!0;return!1}async function C7(q=!1){let J=F2(),Z=l2();if(!await w.default.pathExists(J))return!1;if(await w.default.pathExists(Z)&&!q)return!1;try{let Q=await w.default.readJson(J);return await w.default.writeJson(Z,Q,{spaces:2}),!0}catch{return!1}}async function y7(q=!1){let J=F2(),Z=l2();if(!await w.default.pathExists(Z))return!1;if(await w.default.pathExists(J)&&!q)return!1;try{let Q=await w.default.readJson(Z);return await w.default.writeJson(J,Q,{spaces:2}),!0}catch{return!1}}async function v7(q){let J=q==="primary"?F2():l2();if(!await w.default.pathExists(J))return!1;try{return await w.default.remove(J),!0}catch{return!1}}async function n5(q,J){let Z=await T2();Z.files[q]=J,await s2(Z)}async function M1(q){let J=await T2();for(let[Z,X]of q)J.files[Z]=X;await s2(J)}async function i5(q){let J=await T2();if(!(q in J.files))return!1;return delete J.files[q],await s2(J),!0}async function k7(q){let J=await T2(),Z=[];for(let X of q){let Y=X in J.files;if(Z.push(Y),Y)delete J.files[X]}return await s2(J),Z}async function l5(q){return(await T2()).files[q]}async function c5(q){let J=await T2(),Z={};for(let[X,Y]of Object.entries(J.files))if(Y.source===q)Z[X]=Y;return Z}async function P7(){return{...(await T2()).files}}async function A1(q){let J=await T2(),Z=J.sources.findIndex((X)=>X.name===q.name);if(Z>=0)J.sources[Z]=q;else J.sources.push(q);await s2(J)}async function b7(q){let J=await T2(),Z=J.sources.findIndex((X)=>X.name===q);if(Z<0)return!1;return J.sources.splice(Z,1),await s2(J),!0}async function o5(q){return(await T2()).sources.find((Z)=>Z.name===q)}async function m7(){return[...(await T2()).sources]}var w,T1;var K2=a3(()=>{w=y(B2(),1),T1={sources:[],files:{},settings:{defaultScanDepth:3,autoUpdate:!1},defaultSource:void 0}});var j0=y(R0(),1),{program:IJ,createCommand:EJ,createArgument:TJ,createOption:wJ,CommanderError:OJ,InvalidArgumentError:DJ,InvalidOptionArgumentError:MJ,Command:z0,Argument:AJ,Option:xJ,Help:FJ}=j0.default;var o=y(G2(),1);var l=y(G2(),1);var q2=y(B2(),1);import{promises as Z3}from"fs";import W2 from"path";var E1={claude:[".claude"],gemini:[".gemini"],antigravity:[".gemini"],cursor:[".cursor"],copilot:[".github"],opencode:[".opencode"]};K2();import N2 from"path";import r5 from"os";var __dirname="/Users/qirong.zhang/Developer/sideproject/custom-skills/src/utils",s5={claude:{projectBase:".claude",globalBase:".claude",subfolders:{commands:"commands",skills:"skills",agents:"agents",scripts:"scripts","prompt-template":"prompt-template"}},gemini:{projectBase:".gemini",globalBase:".gemini",subfolders:{commands:"commands",skills:"skills",scripts:"scripts","prompt-template":"prompt-template"}},antigravity:{projectBase:".agent",globalBase:".gemini/antigravity",subfolders:{workflows:"workflows",skills:"skills",scripts:"scripts","prompt-template":"prompt-template"}},cursor:{projectBase:".cursor",globalBase:".cursor",subfolders:{commands:"commands",skills:"skills",agents:"agents",scripts:"scripts","prompt-template":"prompt-template"}},copilot:{projectBase:".github",globalBase:".github",subfolders:{prompts:"prompts",skills:"skills",agents:"agents",scripts:"scripts","prompt-template":"prompt-template"}},opencode:{projectBase:".opencode",globalBase:".config/opencode",subfolders:{commands:"command",skills:"skill",agents:"agent",scripts:"scripts","prompt-template":"prompt-template"}}};function u7(q,J=!1){let Z=s5[q];if(!Z)throw Error(`Unknown tool: ${q}`);let X=J?Z.globalBase:Z.projectBase;if(J)return N2.join(r5.homedir(),X);return N2.join(process.cwd(),X)}function s8(q,J,Z=!1){let X=s5[q];if(!X)throw Error(`Unknown tool: ${q}`);let Y=X.subfolders[J];if(!Y)return null;if(q==="antigravity"){if(J==="workflows"){let G=Z?N2.join(r5.homedir(),".gemini/antigravity"):".agent",$=Z?"global_workflows":"workflows";return Z?N2.join(G,$):N2.join(process.cwd(),G,$)}if(J==="skills"){let G=Z?N2.join(r5.homedir(),".gemini/antigravity"):".agent";return Z?N2.join(G,"skills"):N2.join(process.cwd(),G,"skills")}}let Q=u7(q,Z);return N2.join(Q,Y)}function a8(q,J){let Z=s5[q];if(!Z)return!1;return J in Z.subfolders}async function t8(q){if(q)return q;let J=await Promise.resolve().then(() => y(B2(),1)),Z=p5();if(await J.pathExists(Z))return N2.dirname(Z);return N2.join(__dirname,"../..")}var t1=y(G2(),1);var w2=y(B2(),1);import c2 from"path";async function e8(q,J){let Z=await w2.default.readFile(q,"utf-8"),X=Z.match(/^---\n(.*?)\n---/s);if(!X)throw Error(`Invalid Claude command format: ${q}`);let Y=X[1],Q=Z.replace(/^---\n.*?\n---/s,"").trim(),G=Y.match(/description: (.*)/),$=G?G[1].replace(/"/g,""):"Command",K=Y.match(/argument-hint: (.*)/),W=K?K[1]:"",H=Y.match(/allowed-tools: (.*)/),U=H?H[1]:"",L=`[[command]]
|
|
35
|
+
name = "${c2.basename(q,".md")}"
|
|
36
|
+
description = "${$}"
|
|
37
|
+
|
|
38
|
+
${W?`argument_hint = "${W}"`:""}
|
|
39
|
+
|
|
40
|
+
${U?`allowed_tools = "${U}"`:""}
|
|
41
|
+
|
|
42
|
+
[prompt]
|
|
43
|
+
type = "text"
|
|
44
|
+
content = """
|
|
45
|
+
${Q}
|
|
46
|
+
"""
|
|
47
|
+
`;await w2.default.ensureDir(c2.dirname(J)),await w2.default.writeFile(J,L,"utf-8")}async function q3(q,J){let Z=await w2.default.readFile(q,"utf-8"),X=Z.match(/^---\n(.*?)\n---/s),Y=X?X[1]:"",Q=Z.replace(/^---\n.*?\n---/s,"").trim(),G=Y.match(/description: (.*)/),K=`# ${G?G[1].replace(/"/g,""):"Command"}
|
|
48
|
+
|
|
49
|
+
${Q}
|
|
50
|
+
`;await w2.default.ensureDir(c2.dirname(J));let W=c2.basename(q,".md")+".prompt.md";await w2.default.writeFile(c2.join(c2.dirname(J),W),K,"utf-8")}async function J3(q,J){let Z=await w2.default.readFile(q,"utf-8"),X=Z.match(/^---\n(.*?)\n---/s);if(!X){await w2.default.ensureDir(c2.dirname(J)),await w2.default.writeFile(J,Z,"utf-8");return}let Y=X[1],Q=Z.replace(/^---\n.*?\n---\n?/s,""),G=Y.match(/^tools:\s*(.*)$/m);if(G&&G[1].trim().length>0){let K=G[1].split(",").map((W)=>W.trim()).filter(Boolean).map((W)=>W.toLowerCase());if(K.length>0){let W=`tools:
|
|
51
|
+
${K.map((H)=>` ${H}: true`).join(`
|
|
52
|
+
`)}`;Y=Y.replace(/^tools:\s*.*$/m,W)}}let $=`---
|
|
53
|
+
${Y}
|
|
54
|
+
---
|
|
55
|
+
${Q}`;await w2.default.ensureDir(c2.dirname(J)),await w2.default.writeFile(J,$,"utf-8")}async function a5(q,J,Z,X,Y,Q){let G=0,$=await q2.default.readdir(q);if(!Y)await q2.default.ensureDir(J);for(let K of $){let W=W2.join(q,K),H=await q2.default.stat(W);if(H.isDirectory()){let U=W2.join(J,K);G+=await a5(W,U,Z,X,Y,Q)}else if(H.isFile()&&W2.extname(K)===".md")try{if(Z==="gemini"&&Q==="commands"){let U=W2.join(J,W2.basename(K,".md")+".toml");await e8(W,U),G++}else if(Z==="copilot"&&Q==="commands"){let U=W2.join(J,W2.basename(K,".md")+".prompt.md");await q3(W,U),G++}else if(Z==="opencode"&&Q==="agents"){let U=W2.join(J,K);await J3(W,U),G++}else{let U=W2.join(J,K);await q2.default.copy(W,U,{overwrite:X}),G++}}catch(U){let L=U instanceof Error?U.message:String(U);console.error(t1.default.yellow(`Warning: Failed to convert ${K}: ${L}`))}else{let U=W2.join(J,K);await q2.default.copy(W,U,{overwrite:X}),G++}}return G}async function X3(q,J,Z=!1,X=!1){let Y={success:!0,filesCopied:0,errors:[]};if(!(q in E1))return Y.success=!1,Y.errors.push(`Invalid AI tool: ${q}. Supported tools: ${Object.keys(E1).join(", ")}`),Y;let Q=W2.join(J,"config"),G;try{G=(await Z3.readdir(Q,{withFileTypes:!0})).filter((K)=>K.isDirectory()).map((K)=>K.name)}catch($){return Y.errors.push(`Failed to read source directory: ${$ instanceof Error?$.message:String($)}`),Y.success=!1,Y}for(let $ of G){let K=$;if(q==="antigravity"&&$==="commands")K="workflows";else if(q==="copilot"&&$==="commands")K="prompts";if(!a8(q,K))continue;let W=W2.join(Q,$),H=s8(q,K,X);if(!H)continue;try{if(!await q2.default.pathExists(W))continue;if(q==="copilot"&&$==="agents"&&X){console.log(t1.default.yellow("ℹ️ Note: Copilot does not support global agents. Skipping agents folder."));continue}if(q==="gemini"&&$==="agents"){console.log(t1.default.yellow("ℹ️ Note: Gemini does not support agents. Skipping agents folder."));continue}let L=await q2.default.pathExists(H);if(L&&!Z){Y.errors.push(`Target already exists: ${H}. Use --force to overwrite.`),Y.success=!1;continue}if(!L)await q2.default.ensureDir(W2.dirname(H));if($==="commands"&&(q==="gemini"||q==="copilot"))Y.filesCopied+=await a5(W,H,q,Z,L,"commands");else if($==="agents"&&q==="opencode")Y.filesCopied+=await a5(W,H,q,Z,L,"agents");else if(!L){await q2.default.copy(W,H,{dereference:!0});let _=await t5(H);Y.filesCopied+=_}else Y.filesCopied+=await Y3(W,H)}catch(U){let L=U instanceof Error?U.message:String(U);Y.errors.push(`Failed to copy ${$}: ${L}`),Y.success=!1}}return Y}async function Y3(q,J){let Z=0,X=await q2.default.readdir(q);for(let Y of X){let Q=W2.join(q,Y),G=W2.join(J,Y);if((await q2.default.stat(Q)).isDirectory())if(!await q2.default.pathExists(G))await q2.default.copy(Q,G,{dereference:!0}),Z+=await t5(G);else Z+=await Y3(Q,G);else await q2.default.copy(Q,G,{overwrite:!0,dereference:!0}),Z++}return Z}async function t5(q){let J=0,Z=await q2.default.readdir(q);for(let X of Z){let Y=W2.join(q,X),Q=await q2.default.stat(Y);if(Q.isDirectory())J+=await t5(Y);else if(Q.isFile())J++}return J}var x1=y(B2(),1);import f7 from"path";function Q3(q){let J=Object.keys(E1);if(!q||q.trim()==="")return{valid:!1,error:"AI tool name is required",suggestion:`Supported tools: ${J.join(", ")}`};let Z=q.toLowerCase().trim();if(!J.includes(Z)){let X=J.filter((Q)=>Q.includes(Z)||Z.includes(Q)),Y=X.length>0?`Did you mean: ${X.join(", ")}?`:`Supported tools: ${J.join(", ")}`;return{valid:!1,error:`Invalid AI tool: ${q}`,suggestion:Y}}return{valid:!0}}async function G3(q){if(!q||q.trim()==="")return{valid:!1,error:"Config path is required",suggestion:"Use --config-path option or initialize airc with: airc init"};try{if(!await x1.default.pathExists(q))return{valid:!1,error:`Config path does not exist: ${q}`,suggestion:"Initialize airc first with: airc init"};let Z=f7.join(q,"config");if(!await x1.default.pathExists(Z))return{valid:!1,error:`Config folder not found: ${Z}`,suggestion:"Expected structure: ~/.airc/config/{commands,skills,agents}"};return{valid:!0}}catch(J){return{valid:!1,error:`Failed to validate config path: ${J instanceof Error?J.message:String(J)}`,suggestion:"Check file permissions and path accessibility"}}}function $3(q){if(!q||q.trim()==="")return{valid:!1,error:"Config name is required",suggestion:"Provide a descriptive name for the config"};let J=q.trim();if(J.length<2)return{valid:!1,error:"Config name is too short",suggestion:"Config names must be at least 2 characters long"};if(J.length>100)return{valid:!1,error:"Config name is too long",suggestion:"Config names must be at most 100 characters long"};if(/[A-Z]/.test(J))return{valid:!1,error:"Config name contains uppercase letters",suggestion:"Use only lowercase letters"};if(/_/.test(J))return{valid:!1,error:"Config name contains underscores",suggestion:"Use hyphens instead of underscores"};if(/\s/.test(J))return{valid:!1,error:"Config name contains spaces",suggestion:"Use hyphens to separate words"};if(J.startsWith("-")||J.endsWith("-"))return{valid:!1,error:"Config name cannot start or end with a hyphen",suggestion:"Remove leading or trailing hyphens"};if(/--/.test(J))return{valid:!1,error:"Config name contains consecutive hyphens",suggestion:"Use single hyphens only"};if(!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(J))return{valid:!1,error:"Config name contains invalid characters",suggestion:"Use only lowercase letters, numbers, and hyphens"};return{valid:!0}}function K3(q){if(!q||q.trim()==="")return{valid:!1,error:"Source name is required",suggestion:"Provide a descriptive name for the source"};let J=q.trim();if(J.length<2)return{valid:!1,error:"Source name is too short",suggestion:"Source names must be at least 2 characters long"};if(J.length>100)return{valid:!1,error:"Source name is too long",suggestion:"Source names must be at most 100 characters long"};if(!/^[a-z0-9_-]+$/i.test(J))return{valid:!1,error:"Source name contains invalid characters",suggestion:"Use only letters, numbers, hyphens, and underscores"};return{valid:!0}}function e5(q){if(!q||q.trim()==="")return{valid:!1,error:"Git URL is required",suggestion:"Provide a valid Git repository URL (HTTPS or SSH)"};let J=q.trim();if(![/^https?:\/\/.+\.git$/,/^git@.+:.+\.git$/,/^https?:\/\/github\.com\/.+\/.+$/,/^https?:\/\/gitlab\.com\/.+\/.+$/,/^https?:\/\/bitbucket\.org\/.+\/.+$/].some((Y)=>Y.test(J)))return{valid:!1,error:"Invalid Git URL format",suggestion:"Use HTTPS (https://github.com/user/repo) or SSH (git@github.com:user/repo.git)"};if(J.includes(" "))return{valid:!1,error:"Git URL contains spaces",suggestion:"Remove spaces from the URL"};return{valid:!0}}function W3(q){return q.toLowerCase().trim().replace(/\s+/g,"-").replace(/_/g,"-").replace(/[^a-z0-9-]/g,"").replace(/--+/g,"-").replace(/^-+|-+$/g,"")}function H3(q){return q.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^a-z0-9_-]/g,"-").replace(/--+/g,"-").replace(/^-+|-+$/g,"")}async function U3(q,J){console.log(l.default.blue.bold(`
|
|
56
|
+
\uD83D\uDE80 AI Config Installer
|
|
57
|
+
`));let Z=Q3(q);if(!Z.valid)console.error(l.default.red(`❌ Error: ${Z.error}`)),process.exit(1);if(q==="gemini")console.log(l.default.yellow("ℹ️ Note: Gemini CLI does not support subagents yet.")),console.log(l.default.yellow(` The 'agents' folder will not be installed.
|
|
58
|
+
`));if(q==="antigravity")console.log(l.default.yellow("ℹ️ Note: Antigravity does not support agents.")),console.log(l.default.yellow(` The 'agents' folder will not be installed.
|
|
59
|
+
`));let X=await t8(J.configPath),Y=await G3(X);if(!Y.valid)console.error(l.default.red(`❌ Error: ${Y.error}`)),console.error(l.default.yellow("\n\uD83D\uDCA1 Hint: Initialize airc first with `airc init`, then add sources with `airc source add`")),console.error(l.default.yellow(" or use --config-path to specify a custom config location.")),process.exit(1);console.log(l.default.gray(`Tool: ${q}`)),console.log(l.default.gray(`Config path: ${X}`)),console.log(l.default.gray(`Force: ${J.force?"Yes":"No"}`)),console.log(l.default.gray(`Global: ${J.global?"Yes":"No"}`)),console.log(""),console.log(l.default.blue("⚙️ Installing configuration files..."));let Q=await X3(q,X,J.force||!1,J.global||!1);if(Q.success){console.log(l.default.green(`
|
|
60
|
+
✅ Success! Copied ${Q.filesCopied} files.
|
|
61
|
+
`));let G={claude:".claude",gemini:".gemini",antigravity:".gemini",cursor:".cursor",copilot:".github",opencode:".opencode"};if(G[q])console.log(l.default.gray(`Installed to: ${G[q]}/`))}else{if(console.log(l.default.red(`
|
|
62
|
+
❌ Installation completed with errors:
|
|
63
|
+
`)),Q.errors.forEach((G)=>{console.log(l.default.red(` • ${G}`))}),console.log(""),Q.filesCopied>0)console.log(l.default.yellow(`⚠️ Partial success: ${Q.filesCopied} files were copied before errors occurred.
|
|
64
|
+
`));process.exit(1)}}K2();var k=y(G2(),1);async function _3(q){console.log(k.default.blue.bold(`
|
|
65
|
+
\uD83C\uDF89 Initialize AI Config Manager
|
|
66
|
+
`));let J=await b();if(J&&!q.force){console.log(k.default.yellow("⚠️ AI Config Manager is already initialized.")),console.log(k.default.gray(` Config directory: ${z2()}`));let Z=await D1();if(console.log(k.default.gray(` Config file: ${Z}`)),Z===F2())console.log(k.default.gray(` Alternative: ${l2()}`));else console.log(k.default.gray(` Alternative: ${F2()}`));console.log(k.default.yellow(`
|
|
67
|
+
\uD83D\uDCA1 Use --force to reinitialize.
|
|
68
|
+
`));return}if(J&&q.force)console.log(k.default.yellow("⚠️ Reinitializing AI Config Manager..."));try{await h5(),console.log(k.default.green(`✅ AI Config Manager initialized successfully!
|
|
69
|
+
`)),console.log(k.default.gray("\uD83D\uDCC1 Created directories:")),console.log(k.default.gray(` ${z2()}/`)),console.log(k.default.gray(` ${z2()}/sources/`)),console.log(k.default.gray(` ${z2()}/config/commands/`)),console.log(k.default.gray(` ${z2()}/config/skills/`)),console.log(k.default.gray(` ${z2()}/config/agents/`));let Z=await D1();console.log(k.default.gray(`
|
|
70
|
+
\uD83D\uDCDD Config file:`)),console.log(k.default.gray(` ${Z}`)),console.log(k.default.gray(`
|
|
71
|
+
\uD83D\uDCA1 Config file locations:`)),console.log(k.default.gray(` Primary: ${F2()} (standard)`)),console.log(k.default.gray(` Alternative: ${l2()} (git-friendly)`)),console.log(k.default.blue(`
|
|
72
|
+
\uD83D\uDCA1 Next steps:`)),console.log(k.default.gray(" 1. Add a config source: airc source add <url>")),console.log(k.default.gray(" 2. List available configs: airc list")),console.log(k.default.gray(` 3. Install to tools: airc install <tool>
|
|
73
|
+
`))}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(k.default.red(`
|
|
74
|
+
❌ Failed to initialize: ${X}
|
|
75
|
+
`)),process.exit(1)}}var B=y(G2(),1);K2();var h=y(B2(),1);import S2 from"path";import g7 from"crypto";import{exec as d7}from"child_process";import{promisify as p7}from"util";var I2=p7(d7),e1=new Map,h7=300000;function H2(q){return S2.join(O1(),q)}function V3(q){return H2(q)}async function O2(q){let J=H2(q);return h.default.pathExists(J)}async function a2(q){try{let J=S2.join(q,".git");return await h.default.pathExists(J)}catch{return!1}}async function B3(q,J,Z,X=!0){try{let Y=Z?`-b ${Z}`:"",G=`git clone ${X?"--depth=1":""} ${Y} ${q} ${J}`.replace(/\s+/g," ").trim(),{stdout:$,stderr:K}=await I2(G);return{success:!0,output:$+K}}catch(Y){return{success:!1,error:Y instanceof Error?Y.message:String(Y)}}}async function R3(q,J,Z,X){try{let Y=`git clone --no-checkout --depth=1 -b ${Z} ${q} ${J}`;try{await I2(Y)}catch(K){let W=K instanceof Error?K.message:String(K);if(W.includes("Could not find remote branch")||W.includes("Remote branch")&&W.includes("not found"))throw Error(`Branch '${Z}' not found in repository. Please check the branch name and try again.`);if(W.includes("Could not resolve host")||W.includes("unable to access"))throw Error(`Network error: Unable to connect to ${q}. Please check your internet connection and repository URL.`);if(W.includes("Authentication failed")||W.includes("permission denied"))throw Error(`Authentication failed for ${q}. Please check your credentials or repository permissions.`);if(W.includes("Repository not found")||W.includes("does not appear to be a git repository"))throw Error(`Repository not found at ${q}. Please verify the URL is correct.`);throw K}let Q=`git -C ${J} sparse-checkout init --cone`;await I2(Q);let G=`git -C ${J} sparse-checkout set ${X}`;await I2(G);let $=`git -C ${J} checkout`;try{let{stdout:K,stderr:W}=await I2($),H=S2.join(J,X);if(!await h.default.pathExists(H))throw Error(`Path '${X}' does not exist in the repository. Please verify the path and try again.`);return{success:!0,output:`Sparse checkout successful for path: ${X}
|
|
76
|
+
${K}${W}`}}catch(K){let W=K instanceof Error?K.message:String(K);if(!W.includes("does not exist"))throw Error(`Checkout failed: ${W}`);throw K}}catch(Y){try{await h.default.remove(J)}catch{}return{success:!1,error:Y instanceof Error?Y.message:String(Y)}}}async function j3(q){try{let J=`git -C ${q} pull`,{stdout:Z,stderr:X}=await I2(J);return{success:!0,output:Z+X}}catch(J){let Z=J instanceof Error?J.message:String(J),X=Z;if(Z.includes("CONFLICT")||Z.includes("conflict"))X=`Merge conflict detected. The local repository has changes that conflict with the remote. Please resolve conflicts manually in ${q}.`;else if(Z.includes("diverged")||Z.includes("divergent branches"))X=`Repository has diverged from remote. The remote may have been force-pushed. To update, run: cd ${q} && git reset --hard origin/HEAD`;else if(Z.includes("refusing to merge unrelated histories"))X=`Repository histories are unrelated. This may happen if the remote was reset. To force update, run: cd ${q} && git reset --hard origin/HEAD`;else if(Z.includes("Could not resolve host")||Z.includes("unable to access"))X="Network error: Cannot reach remote repository. Check your internet connection.";return{success:!1,error:X}}}async function n7(q){try{let J=`git -C ${q} branch --show-current`,{stdout:Z}=await I2(J);return Z.trim()||null}catch{return null}}async function i7(q){try{let J=`git -C ${q} config --get remote.origin.url`,{stdout:Z}=await I2(J);return Z.trim()||null}catch{return null}}async function q0(q){try{let J=`git -C ${q} rev-parse HEAD`,{stdout:Z}=await I2(J);return Z.trim()||null}catch{return null}}async function z3(q){try{let J=`git -C ${q} status --porcelain`,{stdout:Z}=await I2(J);return Z.trim().length>0}catch{return!1}}async function t2(q){let J=H2(q);if(!await O2(q))return null;if(!await a2(J))return null;let Z=await i7(J),X=await n7(J);if(!Z)return null;return{name:q,url:Z,branch:X||void 0,path:J}}async function D2(){let q=O1();if(!await h.default.pathExists(q))return[];let X=(await h.default.readdir(q,{withFileTypes:!0})).filter((Q)=>Q.isDirectory()).map((Q)=>t2(Q.name));return(await Promise.all(X)).filter((Q)=>Q!==null)}async function J0(q){let J=H2(q);if(!await O2(q))return!1;try{return await h.default.remove(J),!0}catch{return!1}}function q5(q){return H3(q)}function I3(q){let J=q.match(/\/([^/]+?)(\.git)?$/);if(J)return q5(J[1]);return q5(q)}function E3(q){return/github\.com\/[\w-]+\/[\w.-]+\/tree\//i.test(q)}function T3(q){try{if(!q||typeof q!=="string")return null;let J=q.trim();if(!J)return null;if(!J.startsWith("http://")&&!J.startsWith("https://"))J=`https://${J}`;let Z=new URL(J);if(Z.hostname!=="github.com"&&Z.hostname!=="www.github.com")return null;let X=Z.pathname.split("/").filter(Boolean);if(X.length<4||X[2]!=="tree")return null;let Y=X[0],Q=X[1];if(!Y||!Q)return null;let G=decodeURIComponent(Y),$=decodeURIComponent(Q),K=/^[\w.-]+$/;if(!K.test(G)||!K.test($))return null;if(Q.endsWith(".git"))Q=Q.slice(0,-4);let W=X[3];if(!W)return null;let H=decodeURIComponent(W);if(/[\s~^:?*[\]\\]|\.\.|@\{/.test(H))return null;let U=X.slice(4).join("/")||"";return{repoUrl:`https://github.com/${Y}/${Q}.git`,branch:W,subPath:U}}catch{return null}}function l7(q){let J=q.toLowerCase();if(/^agents?$/i.test(J))return"agents";if(/(^|-)skills?($|-)/i.test(J))return"skills";if(/(^|-)commands?($|-)|cmds?/i.test(J))return"commands";if(/(^|-)agents?($|-)/i.test(J))return"agents";return null}async function J5(q,J=3){let Z=[],X=new Set;async function Y(G,$){if($>J)return;try{let K;try{K=await h.default.realpath(G)}catch{return}if(X.has(K))return;X.add(K);let W=await h.default.readdir(G,{withFileTypes:!0});for(let H of W){if(H.name.startsWith("."))continue;let U=S2.join(G,H.name),L=!1;try{L=H.isSymbolicLink()}catch{continue}if(L)try{if(!await h.default.pathExists(U))continue;if(!(await h.default.stat(U)).isDirectory())continue}catch{continue}if(H.isDirectory()||L){let _=l7(H.name);if(_){let V=await Q(U);if(V.length>0){let j=S2.relative(q,U);Z.push({type:_,path:U,relativePath:j,files:V})}}else await Y(U,$+1)}}}catch{return}}async function Q(G){try{let $=await h.default.readdir(G,{withFileTypes:!0}),K=[];for(let W of $){if(W.name.startsWith("."))continue;if(W.isFile()&&W.name.toLowerCase().endsWith(".md"))K.push(S2.join(G,W.name))}return K}catch{return[]}}return await Y(q,0),Z}var L3=new Map,c7=300000;async function Z5(q){try{if(!await h.default.pathExists(q))throw Error(`File not found: ${q}`);let X=(await h.default.stat(q)).mtimeMs,Y=L3.get(q);if(Y&&Y.mtime===X&&Date.now()-Y.timestamp<c7)return Y.hash;let Q=await h.default.readFile(q),G=g7.createHash("sha256").update(Q).digest("hex");return L3.set(q,{hash:G,timestamp:Date.now(),mtime:X}),G}catch(J){throw Error(`Failed to hash file: ${J instanceof Error?J.message:String(J)}`)}}async function w3(q,J){let Z=[],X=await Promise.resolve().then(() => (K2(),r8)).then((Y)=>Y.getUserConfigDir());for(let Y of J){let Q=S2.join(X,Y.type,q);try{await h.default.ensureDir(Q);for(let G of Y.files){let $=S2.basename(G),K=S2.join(Q,$);try{await h.default.copy(G,K,{overwrite:!0});let W=await Z5(K);Z.push({sourcePath:G,targetPath:K,hash:W,success:!0})}catch(W){let H=W instanceof Error?W.message:String(W);if(H.includes("EACCES")||H.includes("EPERM"))H=`Permission denied: Cannot write to ${K}. Check file/directory permissions.`;else if(H.includes("ENOSPC"))H=`Disk full: Not enough space to copy ${$}. Free up disk space and try again.`;else if(H.includes("EROFS"))H=`Read-only filesystem: Cannot write to ${K}.`;else if(H.includes("ENOENT"))H=`Source file not found: ${G} may have been deleted.`;Z.push({sourcePath:G,targetPath:K,hash:"",success:!1,error:H})}}}catch(G){let $=G instanceof Error?G.message:String(G);if($.includes("EACCES")||$.includes("EPERM"))$=`Permission denied: Cannot create directory ${Q}. Check parent directory permissions.`;else if($.includes("ENOSPC"))$=`Disk full: Not enough space to create directory ${Q}. Free up disk space and try again.`;else if($.includes("EROFS"))$=`Read-only filesystem: Cannot create directory ${Q}.`;else $=`Failed to create target directory: ${$}`;for(let K of Y.files){let W=S2.basename(K),H=S2.join(Q,W);Z.push({sourcePath:K,targetPath:H,hash:"",success:!1,error:$})}}}return Z}async function X5(q){try{let J=`git -C ${q} fetch origin`;return await I2(J),{success:!0}}catch(J){return{success:!1,error:J instanceof Error?J.message:String(J)}}}async function Y5(q,J=!0){if(J){let Z=e1.get(q);if(Z&&Date.now()-Z.timestamp<h7)return Z.status}try{let Z=`git -C ${q} branch --show-current`,{stdout:X}=await I2(Z),Y=X.trim();if(!Y){let L={success:!1,ahead:0,behind:0,error:"Not on a branch"};if(J)e1.set(q,{status:L,timestamp:Date.now()});return L}let Q=`git -C ${q} rev-list --left-right --count origin/${Y}...HEAD`,{stdout:G}=await I2(Q),[$,K]=G.trim().split(/\s+/),W=parseInt($,10)||0,U={success:!0,ahead:parseInt(K,10)||0,behind:W};if(J)e1.set(q,{status:U,timestamp:Date.now()});return U}catch(Z){let X={success:!1,ahead:0,behind:0,error:Z instanceof Error?Z.message:String(Z)};if(J)e1.set(q,{status:X,timestamp:Date.now()});return X}}K2();var O3=y(B2(),1);async function D3(q,J){if(console.log(B.default.blue.bold(`
|
|
77
|
+
\uD83D\uDCE6 Add Config Source
|
|
78
|
+
`)),!await b()){console.error(B.default.red("❌ AI Config Manager is not initialized.")),console.log(B.default.gray(` Run: airc init
|
|
79
|
+
`)),process.exit(1);return}let Z=e5(q);if(!Z.valid){if(console.error(B.default.red(`❌ ${Z.error}`)),Z.suggestion)console.log(B.default.yellow(`
|
|
80
|
+
\uD83D\uDCA1 ${Z.suggestion}`));console.log(B.default.gray(`
|
|
81
|
+
Supported formats:`)),console.log(B.default.gray(" - https://github.com/user/repo")),console.log(B.default.gray(" - https://github.com/user/repo.git")),console.log(B.default.gray(" - https://github.com/user/repo/tree/branch/path")),console.log(B.default.gray(" - git@github.com:user/repo.git")),console.log(B.default.gray(" - https://gitlab.com/user/repo")),console.log(B.default.gray(` - https://bitbucket.org/user/repo
|
|
82
|
+
`)),process.exit(1);return}let Y=E3(q)?T3(q):null,Q=Y?Y.repoUrl:q,G=J.branch||(Y?Y.branch:void 0),$=Y?Y.subPath:void 0,K=J.name||I3(Q),W=q5(K);if(J.name){let j=K3(J.name);if(!j.valid){if(console.error(B.default.red(`❌ ${j.error}`)),j.suggestion)console.log(B.default.yellow(`\uD83D\uDCA1 ${j.suggestion}`));console.log(B.default.gray(`
|
|
83
|
+
Sanitized name: ${W}`)),console.log(B.default.gray(` You can use this name or choose another one
|
|
84
|
+
`)),process.exit(1);return}}if(console.log(B.default.gray(`\uD83D\uDCDD Source name: ${W}`)),G)console.log(B.default.gray(`\uD83C\uDF3F Branch: ${G}`));if($)console.log(B.default.gray(`\uD83D\uDCC2 Subfolder: ${$}`));if(console.log(B.default.gray(`\uD83D\uDD17 URL: ${Q}
|
|
85
|
+
`)),await O2(W)){if(!J.force){console.error(B.default.red(`❌ Source '${W}' already exists.`)),console.log(B.default.gray(` Path: ${H2(W)}`)),console.log(B.default.yellow(`
|
|
86
|
+
\uD83D\uDCA1 Use --force to replace the existing source.
|
|
87
|
+
`)),process.exit(1);return}console.log(B.default.yellow(`⚠️ Replacing existing source '${W}'...`)),await O3.default.remove(H2(W))}let H=H2(W),U;if(Y&&$)console.log(B.default.blue("⬇️ Cloning repository (sparse checkout)...")),console.log(B.default.gray(` Checking out: ${$}`)),U=await R3(Q,H,G||"main",$);else console.log(B.default.blue("⬇️ Cloning repository...")),U=await B3(Q,H,G);if(!U.success){console.error(B.default.red(`
|
|
88
|
+
❌ Failed to clone repository:`)),console.error(B.default.red(` ${U.error}
|
|
89
|
+
`));let j=U.error||"";if(j.includes("Authentication failed")||j.includes("Permission denied"))console.log(B.default.yellow("\uD83D\uDCA1 Suggestions:")),console.log(B.default.gray(" - Check if the repository is private and requires authentication")),console.log(B.default.gray(" - For private repos, use SSH URL (git@github.com:user/repo.git)")),console.log(B.default.gray(" - Ensure your SSH keys or credentials are set up correctly"));else if(j.includes("not found")||j.includes("does not exist")){if(console.log(B.default.yellow("\uD83D\uDCA1 Suggestions:")),console.log(B.default.gray(" - Verify the repository URL is correct")),console.log(B.default.gray(" - Check if the repository exists on the platform")),$)console.log(B.default.gray(` - Verify the subfolder '${$}' exists in the repository`))}else if(j.includes("branch")&&G)console.log(B.default.yellow("\uD83D\uDCA1 Suggestions:")),console.log(B.default.gray(` - The branch '${G}' may not exist`)),console.log(B.default.gray(" - Try cloning without specifying a branch"));else if(j.includes("network")||j.includes("timeout"))console.log(B.default.yellow("\uD83D\uDCA1 Suggestions:")),console.log(B.default.gray(" - Check your internet connection")),console.log(B.default.gray(" - Try again in a few moments"));else if($&&j.includes("sparse-checkout"))console.log(B.default.yellow("\uD83D\uDCA1 Suggestions:")),console.log(B.default.gray(` - Sparse checkout failed for path '${$}'`)),console.log(B.default.gray(" - Try using the full repository URL instead")),console.log(B.default.gray(` - Or verify the path exists: ${Q}`));console.log(""),process.exit(1);return}let L=Y&&$?"sparse checkout":"full clone";console.log(B.default.green(`
|
|
90
|
+
✅ Repository cloned successfully! (${L})
|
|
91
|
+
`));let _=J.depth||3;console.log(B.default.blue(`\uD83D\uDD0D Scanning for config folders (depth: ${_})...`));let V=await J5(H,_);if(V.length===0)console.log(B.default.yellow(" ⚠️ No config folders found (skills/, commands/, or agents/)")),console.log(B.default.gray(`
|
|
92
|
+
This source may not contain AI tool configurations.`)),console.log(B.default.gray(` Expected folder names: skills, commands, agents, or variations like my-skills
|
|
93
|
+
`));else{for(let D of V){let N=D.files.length,R2=D.relativePath.replace(H,"").replace(/^\//,"");console.log(B.default.gray(` Found: ${R2} (${N} file${N!==1?"s":""})`))}console.log(""),console.log(B.default.blue(`\uD83D\uDCCB Copying configs to ~/.airc/config/...
|
|
94
|
+
`));let j=await w3(W,V),T=0,F=0;for(let D of j)if(D.success){T++;let N=D.targetPath.split("/.airc/config/")[1]||D.targetPath;console.log(B.default.green(` ✅ ${N}`))}else{F++;let N=D.targetPath.split("/.airc/config/")[1]||D.targetPath;if(console.log(B.default.red(` ❌ ${N}`)),D.error)console.log(B.default.gray(` Error: ${D.error}`))}if(console.log(""),F>0)console.log(B.default.yellow(`⚠️ Copied ${T} file${T!==1?"s":""}, ${F} failed
|
|
95
|
+
`));else console.log(B.default.green(`✅ Successfully copied ${T} file${T!==1?"s":""}!
|
|
96
|
+
`));console.log(B.default.blue(`\uD83D\uDCBE Saving metadata...
|
|
97
|
+
`));try{await A1({name:W,url:Q,branch:G,addedAt:new Date().toISOString(),scanDepth:_});let D=[];for(let N of j)if(N.success&&N.hash){let R2=N.targetPath.split("/.airc/config/")[1]||N.targetPath,r=N.sourcePath.replace(H,"").replace(/^\//,"");D.push([R2,{source:W,sourcePath:r,hash:N.hash,copiedAt:new Date().toISOString()}])}if(D.length>0)await M1(D),console.log(B.default.green(`✅ Metadata saved for ${D.length} file${D.length!==1?"s":""}!
|
|
98
|
+
`))}catch(D){if(console.log(B.default.yellow("⚠️ Warning: Failed to save metadata")),D instanceof Error)console.log(B.default.gray(` ${D.message}
|
|
99
|
+
`))}}if(console.log(B.default.green(`✅ Source '${W}' added successfully!
|
|
100
|
+
`)),console.log(B.default.gray("\uD83D\uDCC1 Source path:")),console.log(B.default.gray(` ${H}
|
|
101
|
+
`)),V.length>0)console.log(B.default.blue("\uD83D\uDCA1 Next steps:")),console.log(B.default.gray(" 1. View configs: airc list")),console.log(B.default.gray(` 2. Install to tools: airc install <tool>
|
|
102
|
+
`));else console.log(B.default.blue("\uD83D\uDCA1 Possible actions:")),console.log(B.default.gray(" 1. Check folder structure manually")),console.log(B.default.gray(" 2. Try a different source")),console.log(B.default.gray(" 3. Remove this source: airc source remove "+W+`
|
|
103
|
+
`))}var j2=y(G2(),1);K2();async function M3(q){if(console.log(j2.default.blue.bold(`
|
|
104
|
+
\uD83D\uDCE6 Config Sources
|
|
105
|
+
`)),!await b()){console.error(j2.default.red("❌ AI Config Manager is not initialized.")),console.log(j2.default.gray(` Run: airc init
|
|
106
|
+
`)),process.exit(1);return}let J=await D2();if(J.length===0){console.log(j2.default.yellow(`⚠️ No sources found.
|
|
107
|
+
`)),console.log(j2.default.blue("\uD83D\uDCA1 Add a source:")),console.log(j2.default.gray(` airc source add <git-url>
|
|
108
|
+
`));return}console.log(j2.default.green(`Found ${J.length} source${J.length===1?"":"s"}:
|
|
109
|
+
`));for(let Z of J){if(console.log(j2.default.cyan.bold(`\uD83D\uDCC1 ${Z.name}`)),q.verbose){if(console.log(j2.default.gray(` URL: ${Z.url}`)),Z.branch)console.log(j2.default.gray(` Branch: ${Z.branch}`));console.log(j2.default.gray(` Path: ${Z.path}`))}else console.log(j2.default.gray(` ${Z.url}`));console.log()}if(!q.verbose)console.log(j2.default.gray(`\uD83D\uDCA1 Use --verbose for more details
|
|
110
|
+
`))}var S=y(G2(),1);K2();async function A3(q,J){if(console.log(S.default.blue.bold(`
|
|
111
|
+
\uD83D\uDDD1️ Remove Config Source
|
|
112
|
+
`)),!await b()){console.error(S.default.red("❌ AI Config Manager is not initialized.")),console.log(S.default.gray(` Run: airc init
|
|
113
|
+
`)),process.exit(1);return}if(J.all){let Y=await D2();if(Y.length===0){console.log(S.default.yellow(`⚠️ No sources found to remove.
|
|
114
|
+
`));return}if(!J.force){console.error(S.default.red("❌ Removing all sources requires --force flag.")),console.log(S.default.gray(` This will remove ${Y.length} source(s):`)),Y.forEach(($)=>{console.log(S.default.gray(` - ${$.name}`))}),console.log(S.default.yellow(`
|
|
115
|
+
\uD83D\uDCA1 Use --force to confirm removal of all sources.
|
|
116
|
+
`)),process.exit(1);return}console.log(S.default.blue(`\uD83D\uDDD1️ Removing ${Y.length} source(s)...
|
|
117
|
+
`));let Q=0,G=0;for(let $ of Y)if(await J0($.name))Q++,console.log(S.default.green(`✅ Removed: ${$.name}`));else G++,console.log(S.default.red(`❌ Failed to remove: ${$.name}`));if(console.log(S.default.blue(`
|
|
118
|
+
\uD83D\uDCCA Summary:`)),console.log(S.default.gray(` Total: ${Y.length}`)),console.log(S.default.green(` Removed: ${Q}`)),G>0)console.log(S.default.red(` Failed: ${G}`));if(console.log(),G>0)process.exit(1);return}if(!q){console.error(S.default.red("❌ Source name is required.")),console.log(S.default.gray(" Usage: airc source remove <source-name>")),console.log(S.default.gray(` Or use --all to remove all sources
|
|
119
|
+
`)),process.exit(1);return}if(!await O2(q)){console.error(S.default.red(`❌ Source '${q}' not found.`)),console.log(S.default.gray(` List available sources: airc source list
|
|
120
|
+
`)),process.exit(1);return}let Z=H2(q);if(!J.force){console.error(S.default.red("❌ Removing a source requires --force flag.")),console.log(S.default.gray(` Source: ${q}`)),console.log(S.default.gray(` Path: ${Z}`)),console.log(S.default.yellow(`
|
|
121
|
+
\uD83D\uDCA1 Use --force to confirm removal.
|
|
122
|
+
`)),process.exit(1);return}if(console.log(S.default.blue(`\uD83D\uDDD1️ Removing source '${q}'...`)),!await J0(q)){console.error(S.default.red(`
|
|
123
|
+
❌ Failed to remove source '${q}'.`)),console.log(S.default.gray(` Path: ${Z}
|
|
124
|
+
`)),process.exit(1);return}console.log(S.default.green(`
|
|
125
|
+
✅ Source '${q}' removed successfully!
|
|
126
|
+
`)),console.log(S.default.gray("\uD83D\uDCC1 Removed from:")),console.log(S.default.gray(` ${Z}
|
|
127
|
+
`))}var E=y(G2(),1),F1=y(B2(),1);import m2 from"path";K2();async function x3(q,J={}){if(console.log(E.default.blue.bold(`
|
|
128
|
+
\uD83D\uDD04 Update Config Source
|
|
129
|
+
`)),!await b()){console.error(E.default.red("❌ AI Config Manager is not initialized.")),console.log(E.default.gray(` Run: airc init
|
|
130
|
+
`)),process.exit(1);return}if(J.all){await o7();return}if(!q){console.error(E.default.red("❌ Source name is required.")),console.log(E.default.gray(`
|
|
131
|
+
Usage:`)),console.log(E.default.gray(" - Update single source: airc source update <source-name>")),console.log(E.default.gray(` - Update all sources: airc source update --all
|
|
132
|
+
`)),process.exit(1);return}let Z=await F3(q);if(N3(Z),!Z.success)process.exit(1)}async function F3(q){let J=H2(q);if(!await O2(q))return{name:q,success:!1,message:`Source '${q}' does not exist.`};if(!await a2(J))return{name:q,success:!1,message:`Source '${q}' is not a git repository.`};let Z=await t2(q);if(!Z)return{name:q,success:!1,message:`Failed to get source information for '${q}'.`};let X=await o5(q);if(!X)return{name:q,success:!1,message:`Source '${q}' configuration not found in .aircrc.`};if(await z3(J))return{name:q,success:!1,message:`Source '${q}' has uncommitted changes. Commit or stash them first.`};let Y=await q0(J);console.log(E.default.blue(`⬇️ Pulling latest changes from ${Z.url}...`));let Q=await j3(J);if(!Q.success)return{name:q,success:!1,message:`Failed to pull updates: ${Q.error}`,beforeHash:Y||void 0};let G=await q0(J);if(Y===G)console.log(E.default.yellow("\uD83D\uDCCC Repository already up to date."));else console.log(E.default.green("✅ Repository updated successfully!"));console.log(E.default.blue(`
|
|
133
|
+
\uD83D\uDD0D Scanning for config changes...`));let $=await J5(J,X.scanDepth),K=await c5(q),W=await v2(),H=[],U=[],L=[],_=[],V=Object.keys(K).length,j=0;for(let[r,Q2]of Object.entries(K)){if(j++,V>20&&j%10===0)console.log(E.default.gray(` Processing existing files: ${j}/${V}...`));let M2=m2.join(J,Q2.sourcePath);if(await F1.default.pathExists(M2)){let A2=await Z5(M2);if(A2!==Q2.hash){let I=m2.join(W,r);await F1.default.copy(M2,I,{overwrite:!0}),await n5(r,{source:Q2.source,sourcePath:Q2.sourcePath,hash:A2,copiedAt:Q2.copiedAt,updatedAt:new Date().toISOString()}),H.push(r)}else L.push(r)}else _.push(r)}let T=new Set(Object.values(K).map((r)=>r.sourcePath)),F=[],D=$.reduce((r,Q2)=>r+Q2.files.filter((M2)=>{let A2=m2.join(Q2.path,M2),I=m2.relative(J,A2);return!T.has(I)}).length,0),N=0;for(let r of $)for(let Q2 of r.files){let M2=m2.join(r.path,Q2),A2=m2.relative(J,M2);if(!T.has(A2)){if(N++,D>20&&N%10===0)console.log(E.default.gray(` Adding new files: ${N}/${D}...`));let I=m2.join(W,r.type,q,Q2);try{await F1.default.ensureDir(m2.dirname(I)),await F1.default.copy(M2,I,{overwrite:!0});let M=await Z5(M2),x=m2.join(r.type,q,Q2);F.push([x,{source:q,sourcePath:A2,hash:M,copiedAt:new Date().toISOString()}]),U.push(x)}catch(M){console.log(E.default.yellow(` ⚠️ Failed to copy ${Q2}: ${M instanceof Error?M.message:String(M)}`))}}}if(F.length>0)await M1(F);await A1({name:q,url:X.url,branch:X.branch,addedAt:X.addedAt,lastUpdated:new Date().toISOString(),scanDepth:X.scanDepth});let R2="Update completed.";if(Y!==G)R2="Repository and configs updated.";else if(H.length>0||U.length>0)R2="Configs updated (no repository changes).";else R2="Already up to date.";return{name:q,success:!0,message:R2,beforeHash:Y||void 0,afterHash:G||void 0,stats:{updated:H.length,added:U.length,unchanged:L.length,kept:_.length},updatedFiles:H,addedFiles:U,keptFiles:_}}async function o7(){let q=await D2();if(q.length===0){console.log(E.default.yellow(`⚠️ No sources found to update.
|
|
134
|
+
`));return}console.log(E.default.gray(`Found ${q.length} source(s) to update.
|
|
135
|
+
`));let J=[],Z=!1;for(let $ of q){let K=await F3($.name);if(J.push(K),!K.success)Z=!0;N3(K,!0)}console.log(E.default.blue.bold(`
|
|
136
|
+
\uD83D\uDCCA Update Summary
|
|
137
|
+
`));let X=J.filter(($)=>$.success).length,Y=J.filter(($)=>!$.success).length,Q=J.filter(($)=>$.success&&$.beforeHash===$.afterHash).length,G=J.filter(($)=>$.success&&$.beforeHash!==$.afterHash).length;if(console.log(E.default.gray(`Total sources: ${J.length}`)),console.log(E.default.green(`✅ Successful: ${X}`)),console.log(E.default.yellow(`\uD83D\uDCCC Up to date: ${Q}`)),console.log(E.default.cyan(`\uD83D\uDD04 Updated: ${G}`)),Y>0)console.log(E.default.red(`❌ Failed: ${Y}`));if(console.log(""),Z)process.exit(1)}function N3(q,J=!1){if(J){if(q.success){let Z=q.beforeHash===q.afterHash?"\uD83D\uDCCC":"✅",X="";if(q.stats){let{updated:Y,added:Q}=q.stats;if(Y>0||Q>0)X=` (+${Y} updated, +${Q} added)`}console.log(E.default.gray(`${Z} ${q.name}: ${q.message}${X}`))}else console.log(E.default.red(`❌ ${q.name}: ${q.message}`));return}if(console.log(E.default.gray(`
|
|
138
|
+
\uD83D\uDCE6 Source: ${q.name}`)),q.success){if(console.log(E.default.green(`✅ ${q.message}`)),q.stats){let{updated:Z,added:X,unchanged:Y,kept:Q}=q.stats;if(console.log(E.default.gray(`
|
|
139
|
+
\uD83D\uDCCA Changes:`)),Z>0)console.log(E.default.cyan(` \uD83D\uDCDD Updated: ${Z} file${Z===1?"":"s"}`));if(X>0)console.log(E.default.green(` ➕ Added: ${X} file${X===1?"":"s"}`));if(console.log(E.default.gray(` \uD83D\uDCCC Unchanged: ${Y} file${Y===1?"":"s"}`)),Q>0)console.log(E.default.yellow(` \uD83D\uDDC4️ Kept (deleted from source): ${Q} file${Q===1?"":"s"}`))}if(q.updatedFiles&&q.updatedFiles.length>0)console.log(E.default.cyan(`
|
|
140
|
+
\uD83D\uDCDD Updated files:`)),q.updatedFiles.forEach((Z)=>{console.log(E.default.cyan(` ✓ ${Z}`))});if(q.addedFiles&&q.addedFiles.length>0)console.log(E.default.green(`
|
|
141
|
+
➕ Added files:`)),q.addedFiles.forEach((Z)=>{console.log(E.default.green(` + ${Z}`))});if(q.keptFiles&&q.keptFiles.length>0)console.log(E.default.yellow(`
|
|
142
|
+
\uD83D\uDDC4️ Kept files (deleted from source):`)),q.keptFiles.forEach((Z)=>{console.log(E.default.yellow(` \uD83D\uDCE6 ${Z}`))});if(q.beforeHash&&q.afterHash)console.log(E.default.gray(`
|
|
143
|
+
\uD83D\uDCDD Commit hashes:`)),console.log(E.default.gray(` Before: ${q.beforeHash.substring(0,7)}`)),console.log(E.default.gray(` After: ${q.afterHash.substring(0,7)}`));if(q.stats&&(q.stats.updated>0||q.stats.added>0))console.log(E.default.blue(`
|
|
144
|
+
\uD83D\uDCA1 Tip: Run "airc install <tool>" to apply the updated configs.`));console.log("")}else console.log(E.default.red(`❌ ${q.message}
|
|
145
|
+
`))}var A=y(G2(),1);K2();async function S3(q,J={}){if(console.log(A.default.blue.bold(`
|
|
146
|
+
\uD83D\uDD0D Check Config Source Updates
|
|
147
|
+
`)),!await b()){console.error(A.default.red("❌ AI Config Manager is not initialized.")),console.log(A.default.gray(` Run: airc init
|
|
148
|
+
`)),process.exit(1);return}if(J.all){await r7();return}if(!q){console.error(A.default.red("❌ Source name is required.")),console.log(A.default.gray(`
|
|
149
|
+
Usage:`)),console.log(A.default.gray(" - Check single source: airc source check <source-name>")),console.log(A.default.gray(` - Check all sources: airc source check --all
|
|
150
|
+
`)),process.exit(1);return}let Z=await C3(q);if(y3(Z),!Z.success)process.exit(1)}async function C3(q){let J=H2(q);if(!await O2(q))return{name:q,success:!1,message:`Source '${q}' does not exist.`,status:"error"};if(!await a2(J))return{name:q,success:!1,message:`Source '${q}' is not a git repository.`,status:"error"};let Z=await t2(q);if(!Z)return{name:q,success:!1,message:`Failed to get source information for '${q}'.`,status:"error"};console.log(A.default.blue(`⬇️ Fetching updates for '${q}' from ${Z.url}...`));let X=await X5(J);if(!X.success)return{name:q,success:!1,message:`Failed to fetch updates: ${X.error}`,status:"error"};let Y=await Y5(J);if(!Y.success)return{name:q,success:!1,message:`Failed to check repository status: ${Y.error}`,status:"error"};let{behind:Q,ahead:G}=Y,$,K;if(Q===0&&G===0)$="up-to-date",K="Up to date with remote.";else if(Q>0&&G===0)$="behind",K=`Behind remote by ${Q} commit${Q>1?"s":""}.`;else if(Q===0&&G>0)$="ahead",K=`Ahead of remote by ${G} commit${G>1?"s":""}.`;else $="diverged",K=`Diverged: ${G} commit${G>1?"s":""} ahead, ${Q} commit${Q>1?"s":""} behind.`;return{name:q,success:!0,message:K,status:$,commitsBehind:Q,commitsAhead:G}}async function r7(){let q=await D2();if(q.length===0){console.log(A.default.yellow(`⚠️ No sources found to check.
|
|
151
|
+
`));return}console.log(A.default.gray(`Found ${q.length} source(s) to check.
|
|
152
|
+
`));let J=[],Z=!1;for(let W of q){let H=await C3(W.name);if(J.push(H),!H.success)Z=!0;y3(H,!0)}console.log(A.default.blue.bold(`
|
|
153
|
+
\uD83D\uDCCA Check Summary
|
|
154
|
+
`));let X=J.filter((W)=>W.success).length,Y=J.filter((W)=>!W.success).length,Q=J.filter((W)=>W.status==="up-to-date").length,G=J.filter((W)=>W.status==="behind").length,$=J.filter((W)=>W.status==="ahead").length,K=J.filter((W)=>W.status==="diverged").length;if(console.log(A.default.gray(`Total sources: ${J.length}`)),console.log(A.default.green(`✅ Checked: ${X}`)),console.log(A.default.green(`\uD83D\uDCCC Up to date: ${Q}`)),G>0)console.log(A.default.yellow(`⬇️ Behind: ${G}`));if($>0)console.log(A.default.blue(`⬆️ Ahead: ${$}`));if(K>0)console.log(A.default.magenta(`\uD83D\uDD00 Diverged: ${K}`));if(Y>0)console.log(A.default.red(`❌ Failed: ${Y}`));if(console.log(""),Z)process.exit(1)}function y3(q,J=!1){if(J){if(q.success){let Z,X;switch(q.status){case"up-to-date":Z="\uD83D\uDCCC",X=A.default.green;break;case"behind":Z="⬇️",X=A.default.yellow;break;case"ahead":Z="⬆️",X=A.default.blue;break;case"diverged":Z="\uD83D\uDD00",X=A.default.magenta;break;default:Z="✅",X=A.default.gray}console.log(X(`${Z} ${q.name}: ${q.message}`))}else console.log(A.default.red(`❌ ${q.name}: ${q.message}`));return}if(console.log(A.default.gray(`
|
|
155
|
+
\uD83D\uDCE6 Source: ${q.name}`)),q.success){let Z,X;switch(q.status){case"up-to-date":Z="✅",X=A.default.green;break;case"behind":Z="⬇️",X=A.default.yellow;break;case"ahead":Z="⬆️",X=A.default.blue;break;case"diverged":Z="\uD83D\uDD00",X=A.default.magenta;break;default:Z="✅",X=A.default.gray}if(console.log(X(`${Z} ${q.message}`)),q.status==="behind"&&q.commitsBehind&&q.commitsBehind>0)console.log(A.default.blue(`
|
|
156
|
+
\uD83D\uDCA1 Tip: Run 'airc source update ${q.name}' to get the latest changes.`));if(q.status==="diverged")console.log(A.default.yellow(`
|
|
157
|
+
⚠️ Warning: Your local branch has diverged from remote.`)),console.log(A.default.gray(" You may need to manually resolve this."));console.log("")}else console.log(A.default.red(`❌ ${q.message}
|
|
158
|
+
`))}K2();var n=y(G2(),1),N1=y(B2(),1);import W1 from"path";async function S1(q){try{let Z=(await N1.default.readFile(q,"utf-8")).match(/^---\n([\s\S]*?)\n---/);if(!Z)return{};let X=Z[1],Y={},Q=X.split(`
|
|
159
|
+
`);for(let G of Q){let $=G.match(/^([\w-]+)\s*:\s*(.*)$/);if($){let[,K,W]=$;W=W.replace(/^["']|["']$/g,"").trim(),Y[K]=W}}return Y}catch{return{}}}async function v3(q){let J=v2(),Z=W1.join(J,q);try{return(await N1.default.lstat(Z)).isSymbolicLink()}catch{return!1}}function k3(q){let J=q.toLowerCase().split("/");if(J.includes("commands")||J.includes("command"))return"command";if(J.includes("skills")||J.includes("skill"))return"skill";if(J.includes("agents")||J.includes("agent"))return"agent";return}async function P3(q,J,Z,X,Y=5,Q=0){if(Q>Y)return[];let G=[];try{let $=await N1.default.readdir(q,{withFileTypes:!0});for(let K of $){if(K.name.startsWith(".")||K.name==="node_modules"||K.name==="dist")continue;let W=W1.join(q,K.name),H=W1.relative(Z,W);if(K.isDirectory()){let U=["SKILL.md","COMMAND.md","AGENT.md",`${K.name}.md`,"README.md"],L=!1;for(let _ of U){let V=W1.join(W,_);if(await N1.default.pathExists(V)){let j=k3(H);if(X&&j&&!X.includes(j))break;let T=await S1(V),F=await v3(H);G.push({name:T.name||K.name,description:T.description,type:j,path:V,relativePath:H,source:J,isLinked:F,isDirectory:!0}),L=!0;break}}if(!L){let _=await P3(W,J,Z,X,Y,Q+1);G.push(..._)}}else if(K.isFile()&&K.name.endsWith(".md")){let U=k3(H);if(X&&U&&!X.includes(U))continue;let L=await S1(W),_=K.name.replace(/\.md$/,""),V=await v3(W1.dirname(H));G.push({name:L.name||_,description:L.description,type:U,path:W,relativePath:W1.dirname(H)||K.name.replace(/\.md$/,""),source:J,isLinked:V,isDirectory:!1})}}}catch{}return G}async function s7(q,J,Z){return P3(J,q,J,Z)}async function b3(q,J={}){if(console.log(n.default.blue.bold(`
|
|
160
|
+
\uD83D\uDD0D Browse Configs
|
|
161
|
+
`)),!await b()){console.error(n.default.red("❌ AI Config Manager is not initialized.")),console.log(n.default.gray(` Run: airc init
|
|
162
|
+
`)),process.exit(1);return}let Z=await D2();if(Z.length===0){console.log(n.default.yellow(`⚠️ No sources found.
|
|
163
|
+
`)),console.log(n.default.blue("\uD83D\uDCA1 Add a source:")),console.log(n.default.gray(` airc source add <git-url>
|
|
164
|
+
`));return}let X=Z;if(q){if(!await O2(q)){console.error(n.default.red(`❌ Source "${q}" not found.`)),console.log(n.default.gray(` Run: airc source list
|
|
165
|
+
`)),process.exit(1);return}X=Z.filter((K)=>K.name===q)}let Y=[];for(let K of X)try{let W=V3(K.name),H=await s7(K.name,W,J.type);Y.push(...H)}catch(W){console.error(n.default.yellow(`⚠️ Could not scan source "${K.name}": ${W}`));continue}if(Y.length===0){console.log(n.default.yellow(`⚠️ No configs found in sources.
|
|
166
|
+
`));return}let Q={command:[],skill:[],agent:[],other:[]};for(let K of Y){let W=K.type||"other";if(!Q[W])Q[W]=[];Q[W].push(K)}let G=0,$=["command","skill","agent","other"];for(let K of $){let W=Q[K];if(W.length===0)continue;let H=K==="other"?"Other Configs":`${K.charAt(0).toUpperCase()+K.slice(1)}s`;console.log(n.default.cyan.bold(`
|
|
167
|
+
\uD83D\uDCE6 ${H} (${W.length})
|
|
168
|
+
`));for(let U of W){let L=U.isLinked?n.default.green("✓ linked"):n.default.gray(" available"),_=U.isDirectory?U.relativePath:U.relativePath;if(console.log(n.default.bold(`${L} ${U.name}`)+n.default.gray(` [${U.source}/${_}]`)),U.description){let V=U.description.length>80?U.description.substring(0,77)+"...":U.description;console.log(n.default.gray(` ${V}`))}console.log()}G+=W.length}if(console.log(n.default.blue(`Found ${G} config${G===1?"":"s"} from ${X.length} source${X.length===1?"":"s"}
|
|
169
|
+
`)),Y.some((K)=>!K.isLinked))console.log(n.default.gray("\uD83D\uDCA1 To use a config:")),console.log(n.default.gray(" airc link <source-name>/<path> <target-path>")),console.log(n.default.gray(` Example: airc link my-configs/skills/web-design skills/web-design
|
|
170
|
+
`));if(J.type)console.log(n.default.gray(`\uD83D\uDCA1 Remove --type filter to see all config types
|
|
171
|
+
`))}K2();var c=y(G2(),1),e2=y(B2(),1);import u3 from"path";async function m3(q,J,Z){let X=await e2.default.lstat(Z),Y=X.isSymbolicLink(),Q=X.isDirectory(),G;if(Y)G=await e2.default.readlink(Z);let $={};if(!Q)$=await S1(Z);else{let W=(await e2.default.readdir(Z)).find((H)=>H.toUpperCase()==="SKILL.MD"||H.toUpperCase()==="AGENT.MD"||H.toUpperCase()==="COMMAND.MD"||H===`${J}.md`);if(W){let H=u3.join(Z,W);$=await S1(H)}}return{name:J,type:q.slice(0,-1),isLinked:Y,isDirectory:Q,path:Z,linkTarget:G,metadata:$}}async function a7(q,J){try{if(!await e2.default.pathExists(J))return[];let Y=(await e2.default.readdir(J,{withFileTypes:!0})).map(async(G)=>{let $=u3.join(J,G.name);if(G.isFile()&&G.name.endsWith(".md"))return m3(q,G.name,$);else if(G.isDirectory()||G.isSymbolicLink())return m3(q,G.name,$);return null});return(await Promise.all(Y)).filter((G)=>G!==null)}catch{return[]}}async function f3(q={}){if(console.log(c.default.blue.bold(`
|
|
172
|
+
\uD83D\uDCCB Your Configs
|
|
173
|
+
`)),!await b()){console.error(c.default.red("❌ AI Config Manager is not initialized.")),console.log(c.default.gray(` Run: airc init
|
|
174
|
+
`)),process.exit(1);return}let J=k2(),X=(q.type?[q.type]:["commands","skills","agents"]).map((U)=>a7(U,J[U])),Q=(await Promise.all(X)).flat();if(Q.length===0){console.log(c.default.yellow(`⚠️ No configs found.
|
|
175
|
+
`)),console.log(c.default.blue("\uD83D\uDCA1 Get started:")),console.log(c.default.gray(" airc source add <git-url>")),console.log(c.default.gray(" airc browse")),console.log(c.default.gray(` airc link <type> <name> --from <source>
|
|
176
|
+
`));return}let G={command:[],skill:[],agent:[]};for(let U of Q)G[U.type].push(U);let $=0,K=0,W=0,H=["command","skill","agent"];for(let U of H){let L=G[U];if(L.length===0)continue;console.log(c.default.cyan.bold(`
|
|
177
|
+
\uD83D\uDCE6 ${U.charAt(0).toUpperCase()+U.slice(1)}s (${L.length})
|
|
178
|
+
`));for(let _ of L){let V=_.isLinked?c.default.blue("\uD83D\uDD17 linked"):c.default.green("\uD83D\uDCC4 imported"),j=_.metadata?.name||_.name.replace(/\.md$/,"");if(console.log(`${V} ${c.default.bold(j)}`),_.metadata?.description){let T=_.metadata.description.length>80?_.metadata.description.substring(0,77)+"...":_.metadata.description;console.log(c.default.gray(` ${T}`))}if(_.isLinked&&_.linkTarget)console.log(c.default.gray(` → ${_.linkTarget}`));if(console.log(),_.isLinked)K++;else W++;$++}}if(console.log(c.default.blue(`Total: ${$} config${$===1?"":"s"} `)),console.log(c.default.gray(` ${K} linked, ${W} imported
|
|
179
|
+
`)),W>0)console.log(c.default.gray("\uD83D\uDCA1 Sync imported configs with source:")),console.log(c.default.gray(` airc sync <type> <name> --from <source>
|
|
180
|
+
`));if(q.type)console.log(c.default.gray(`\uD83D\uDCA1 Remove --type filter to see all config types
|
|
181
|
+
`))}K2();var g=y(G2(),1),C1=y(B2(),1);import t7 from"path";async function g3(q,J={}){if(console.log(g.default.blue.bold(`
|
|
182
|
+
\uD83D\uDDD1️ Remove Config
|
|
183
|
+
`)),!await b()){console.error(g.default.red("❌ AI Config Manager is not initialized.")),console.log(g.default.gray(` Run: airc init
|
|
184
|
+
`)),process.exit(1);return}let Z=v2(),X=t7.join(Z,q);try{if(!await C1.default.pathExists(X)){console.error(g.default.red(`❌ Config "${q}" not found.`)),console.log(g.default.gray(` Path: ${X}`)),console.log(g.default.gray(` Run: airc list
|
|
185
|
+
`)),process.exit(1);return}let Q=await l5(q),G=await C1.default.stat(X);if(console.log(g.default.gray(` Path: ${X}`)),console.log(g.default.gray(` Size: ${G.size} bytes`)),Q){if(console.log(g.default.gray(` Source: ${Q.source}`)),console.log(g.default.gray(` Source Path: ${Q.sourcePath}`)),console.log(g.default.gray(` Copied At: ${new Date(Q.copiedAt).toLocaleString()}`)),Q.updatedAt)console.log(g.default.gray(` Updated At: ${new Date(Q.updatedAt).toLocaleString()}`))}if(!J.force){console.error(g.default.yellow(`
|
|
186
|
+
⚠️ Are you sure you want to remove "${q}"?`)),console.log(g.default.gray(` Use --force to confirm removal
|
|
187
|
+
`)),process.exit(1);return}await C1.default.remove(X);let $=!1;if(Q)$=await i5(q);if(console.log(g.default.green(`
|
|
188
|
+
✅ Successfully removed "${q}"`)),$)console.log(g.default.gray(" Metadata cleaned up"));if(console.log(g.default.blue(`
|
|
189
|
+
\uD83D\uDCA1 Next steps:`)),Q)console.log(g.default.gray(` - To restore: airc source update ${Q.source}`)),console.log(g.default.gray(" - To see source files: airc list"));else console.log(g.default.gray(" - To see available configs: airc list"));console.log("")}catch(Y){console.error(g.default.red(`❌ Failed to remove config: ${Y}`)),console.log(g.default.gray(` Path: ${X}
|
|
190
|
+
`)),process.exit(1);return}}K2();var O=y(G2(),1),Q5=y(B2(),1);import e7 from"path";async function qJ(){let J=(await D2()).map(async(Z)=>{let X=H2(Z.name),Y=await t2(Z.name);if(!await a2(X))return{name:Z.name,url:Y?.url,branch:Y?.branch,status:"not-git"};let Q=await X5(X);if(!Q.success)return{name:Z.name,url:Y?.url,branch:Y?.branch,status:"error",error:Q.error};let G=await Y5(X,!0);if(!G.success)return{name:Z.name,url:Y?.url,branch:Y?.branch,status:"error",error:G.error};let{behind:$,ahead:K}=G,W;if($===0&&K===0)W="up-to-date";else if($>0&&K===0)W="behind";else if($===0&&K>0)W="ahead";else W="diverged";return{name:Z.name,url:Y?.url,branch:Y?.branch,status:W,commitsBehind:$>0?$:void 0,commitsAhead:K>0?K:void 0}});return Promise.all(J)}async function JJ(){let q=k2(),J={total:0,linked:0,imported:0,byType:{commands:0,skills:0,agents:0}},Z=Object.entries(q).map(async([Y,Q])=>{if(!await Q5.default.pathExists(Q))return{total:0,linked:0,imported:0,type:Y};let $=(await Q5.default.readdir(Q,{withFileTypes:!0})).map(async(_)=>{let V=e7.join(Q,_.name);try{return{isLinked:(await Q5.default.lstat(V)).isSymbolicLink()}}catch{return null}}),W=(await Promise.all($)).filter((_)=>_!==null),H=W.length,U=W.filter((_)=>_.isLinked).length,L=W.filter((_)=>!_.isLinked).length;return{total:H,linked:U,imported:L,type:Y}}),X=await Promise.all(Z);for(let Y of X)J.total+=Y.total,J.linked+=Y.linked,J.imported+=Y.imported,J.byType[Y.type]+=Y.total;return J}async function d3(){if(console.log(O.default.blue.bold(`
|
|
191
|
+
\uD83D\uDCCA AI Config Manager Status
|
|
192
|
+
`)),!await b()){console.error(O.default.red("❌ AI Config Manager is not initialized.")),console.log(O.default.gray(` Run: airc init
|
|
193
|
+
`)),process.exit(1);return}console.log(O.default.green(`✅ Initialized
|
|
194
|
+
`)),console.log(O.default.cyan.bold(`\uD83D\uDCE6 Sources
|
|
195
|
+
`));let q=await qJ();if(q.length===0)console.log(O.default.gray(` No sources added yet.
|
|
196
|
+
`)),console.log(O.default.blue("\uD83D\uDCA1 Add a source:")),console.log(O.default.gray(` airc source add <git-url>
|
|
197
|
+
`));else{let Z=q.filter((K)=>K.status==="up-to-date").length,X=q.filter((K)=>K.status==="behind").length,Y=q.filter((K)=>K.status==="ahead").length,Q=q.filter((K)=>K.status==="diverged").length,G=q.filter((K)=>K.status==="error"||K.status==="not-git").length;if(console.log(O.default.gray(` Total: ${q.length}`)),console.log(O.default.green(` ✅ Up to date: ${Z}`)),X>0)console.log(O.default.yellow(` ⬇️ Behind: ${X}`));if(Y>0)console.log(O.default.blue(` ⬆️ Ahead: ${Y}`));if(Q>0)console.log(O.default.magenta(` \uD83D\uDD00 Diverged: ${Q}`));if(G>0)console.log(O.default.red(` ❌ Errors: ${G}`));console.log("");let $=q.filter((K)=>K.status==="behind"||K.status==="diverged"||K.status==="error");if($.length>0){console.log(O.default.yellow(`⚠️ Sources needing attention:
|
|
198
|
+
`));for(let K of $){let W,H;switch(K.status){case"behind":W="⬇️",H=O.default.yellow;break;case"diverged":W="\uD83D\uDD00",H=O.default.magenta;break;case"error":W="❌",H=O.default.red;break;default:W="⚠️",H=O.default.gray}if(console.log(H(` ${W} ${K.name}`)),K.status==="behind"&&K.commitsBehind)console.log(O.default.gray(` ${K.commitsBehind} commit${K.commitsBehind>1?"s":""} behind remote`));else if(K.status==="diverged"&&K.commitsBehind&&K.commitsAhead)console.log(O.default.gray(` ${K.commitsAhead} commit${K.commitsAhead>1?"s":""} ahead, ${K.commitsBehind} commit${K.commitsBehind>1?"s":""} behind`));else if(K.error)console.log(O.default.gray(` ${K.error}`))}console.log(""),console.log(O.default.blue("\uD83D\uDCA1 Update sources:")),console.log(O.default.gray(` airc source update --all
|
|
199
|
+
`))}}console.log(O.default.cyan.bold(`\uD83D\uDCDD Configs
|
|
200
|
+
`));let J=await JJ();if(J.total===0)console.log(O.default.gray(` No configs found.
|
|
201
|
+
`)),console.log(O.default.blue("\uD83D\uDCA1 Get started:")),console.log(O.default.gray(" airc browse")),console.log(O.default.gray(` airc link <type> <name> --from <source>
|
|
202
|
+
`));else{if(console.log(O.default.gray(` Total: ${J.total}`)),console.log(O.default.blue(` \uD83D\uDD17 Linked: ${J.linked}`)),console.log(O.default.green(` \uD83D\uDCC4 Imported: ${J.imported}`)),console.log(""),console.log(O.default.gray(" By type:")),J.byType.commands>0)console.log(O.default.gray(` • Commands: ${J.byType.commands}`));if(J.byType.skills>0)console.log(O.default.gray(` • Skills: ${J.byType.skills}`));if(J.byType.agents>0)console.log(O.default.gray(` • Agents: ${J.byType.agents}`));if(console.log(""),J.imported>0)console.log(O.default.blue("\uD83D\uDCA1 Sync imported configs:")),console.log(O.default.gray(` airc sync <type> <name> --from <source>
|
|
203
|
+
`));console.log(O.default.blue("\uD83D\uDCA1 View all configs:")),console.log(O.default.gray(` airc list
|
|
204
|
+
`))}}K2();var C=y(G2(),1),u2=y(B2(),1);import G5 from"path";var ZJ=(q,J)=>`---
|
|
205
|
+
description: ${J}
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Your Task
|
|
209
|
+
|
|
210
|
+
${J}
|
|
211
|
+
|
|
212
|
+
## Instructions
|
|
213
|
+
|
|
214
|
+
Add detailed instructions for this command here.
|
|
215
|
+
`,XJ=(q,J)=>`---
|
|
216
|
+
name: ${q}
|
|
217
|
+
description: ${J}
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
# ${q.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join(" ")}
|
|
221
|
+
|
|
222
|
+
${J}
|
|
223
|
+
|
|
224
|
+
## How to Use This Skill
|
|
225
|
+
|
|
226
|
+
Add detailed usage instructions here.
|
|
227
|
+
`,YJ=(q,J)=>`---
|
|
228
|
+
name: ${q}
|
|
229
|
+
description: ${J}
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
# ${q.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join(" ")} Agent
|
|
233
|
+
|
|
234
|
+
${J}
|
|
235
|
+
|
|
236
|
+
## Agent Instructions
|
|
237
|
+
|
|
238
|
+
Add detailed agent instructions here.
|
|
239
|
+
`;async function p3(q,J,Z={}){if(console.log(C.default.blue.bold(`
|
|
240
|
+
✨ Create Config
|
|
241
|
+
`)),!await b()){console.error(C.default.red("❌ AI Config Manager is not initialized.")),console.log(C.default.gray(` Run: airc init
|
|
242
|
+
`)),process.exit(1);return}let X=$3(J);if(!X.valid){if(console.error(C.default.red(`❌ ${X.error}`)),X.suggestion)console.log(C.default.yellow(`\uD83D\uDCA1 ${X.suggestion}`));let H=W3(J);if(H&&H!==J)console.log(C.default.gray(`
|
|
243
|
+
Suggested name: ${H}`)),console.log(C.default.gray(` Run: airc create ${q} ${H}
|
|
244
|
+
`));else console.log(C.default.gray(` Example: my-custom-${q}
|
|
245
|
+
`));process.exit(1);return}let Y=Z.description||`Custom ${q}`,Q=k2(),G=`${q}s`,$=Q[G],K,W;if(q==="skill"||q==="agent"){K=G5.join($,J);let H=q==="skill"?"SKILL.md":"AGENT.md";if(await u2.default.pathExists(K)&&!Z.force){console.error(C.default.yellow(`⚠️ ${q.charAt(0).toUpperCase()+q.slice(1)} "${J}" already exists.`)),console.log(C.default.gray(` Path: ${K}`)),console.log(C.default.yellow(`
|
|
246
|
+
\uD83D\uDCA1 Use --force to overwrite
|
|
247
|
+
`)),process.exit(1);return}W=q==="skill"?XJ(J,Y):YJ(J,Y);try{await u2.default.ensureDir(K);let L=G5.join(K,H);await u2.default.writeFile(L,W,"utf-8"),console.log(C.default.green(`✅ Successfully created ${q} "${J}"`)),console.log(C.default.gray(` Path: ${K}`)),console.log(C.default.gray(` Metadata: ${L}
|
|
248
|
+
`))}catch(L){let _=L instanceof Error?L.message:String(L);if(console.error(C.default.red(`❌ Failed to create ${q}: ${_}`)),_.includes("EACCES")||_.includes("permission"))console.log(C.default.yellow("\uD83D\uDCA1 Check file permissions for the directory"));else if(_.includes("ENOSPC"))console.log(C.default.yellow("\uD83D\uDCA1 Not enough disk space"));console.log(""),process.exit(1);return}}else{if(K=G5.join($,`${J}.md`),await u2.default.pathExists(K)&&!Z.force){console.error(C.default.yellow(`⚠️ Command "${J}" already exists.`)),console.log(C.default.gray(` Path: ${K}`)),console.log(C.default.yellow(`
|
|
249
|
+
\uD83D\uDCA1 Use --force to overwrite
|
|
250
|
+
`)),process.exit(1);return}W=ZJ(J,Y);try{await u2.default.ensureDir(G5.dirname(K)),await u2.default.writeFile(K,W,"utf-8"),console.log(C.default.green(`✅ Successfully created command "${J}"`)),console.log(C.default.gray(` Path: ${K}
|
|
251
|
+
`))}catch(U){let L=U instanceof Error?U.message:String(U);if(console.error(C.default.red(`❌ Failed to create command: ${L}`)),L.includes("EACCES")||L.includes("permission"))console.log(C.default.yellow("\uD83D\uDCA1 Check file permissions for the directory"));else if(L.includes("ENOSPC"))console.log(C.default.yellow("\uD83D\uDCA1 Not enough disk space"));console.log(""),process.exit(1);return}}if(console.log(C.default.blue("\uD83D\uDCA1 Next steps:")),console.log(C.default.gray(` - Edit the config: airc edit ${q} ${J}`)),console.log(C.default.gray(" - Test the config in your AI tool")),q==="skill"||q==="agent")console.log(C.default.gray(` - Add additional files to: ${K}/`));console.log(C.default.gray(` - View all configs: airc list --type ${G}
|
|
252
|
+
`))}K2();var i=y(G2(),1),f2=y(B2(),1);import Z0 from"path";import{spawn as QJ}from"child_process";function h3(){return process.env.EDITOR||process.env.VISUAL||"vi"}async function GJ(q){let J=h3();return new Promise((Z,X)=>{let Y=QJ(J,[q],{stdio:"inherit",shell:!0});Y.on("exit",(Q)=>{if(Q===0)Z();else X(Error(`Editor exited with code ${Q}`))}),Y.on("error",(Q)=>{X(Q)})})}async function n3(q,J){if(console.log(i.default.blue.bold(`
|
|
253
|
+
✏️ Edit Config
|
|
254
|
+
`)),!await b()){console.error(i.default.red("❌ AI Config Manager is not initialized.")),console.log(i.default.gray(` Run: airc init
|
|
255
|
+
`)),process.exit(1);return}let Z=k2(),X=`${q}s`,Y=Z[X],Q,G;if(q==="skill"||q==="agent"){if(Q=Z0.join(Y,J),!await f2.default.pathExists(Q)){console.error(i.default.red(`❌ ${q.charAt(0).toUpperCase()+q.slice(1)} "${J}" not found.`)),console.log(i.default.gray(` Path: ${Q}`)),console.log(i.default.gray(` Use: airc list --type ${X}
|
|
256
|
+
`)),process.exit(1);return}let W=q==="skill"?"SKILL.md":"AGENT.md";if(G=Z0.join(Q,W),!await f2.default.pathExists(G)){console.error(i.default.red(`❌ Metadata file not found: ${W}`)),console.log(i.default.gray(` Expected: ${G}
|
|
257
|
+
`)),process.exit(1);return}}else{if(Q=Z0.join(Y,`${J}.md`),!await f2.default.pathExists(Q)){console.error(i.default.red(`❌ Command "${J}" not found.`)),console.log(i.default.gray(` Path: ${Q}`)),console.log(i.default.gray(` Use: airc list --type ${X}
|
|
258
|
+
`)),process.exit(1);return}G=Q}if((await f2.default.lstat(Q)).isSymbolicLink()){let K=await f2.default.readlink(Q);console.log(i.default.yellow("⚠️ This is a linked config (symlink).")),console.log(i.default.gray(` Link target: ${K}`)),console.log(i.default.gray(` Editing will modify the source file.
|
|
259
|
+
`))}console.log(i.default.blue(`Opening ${G} in ${h3()}...
|
|
260
|
+
`));try{await GJ(G),console.log(i.default.green(`
|
|
261
|
+
✅ Edit complete.
|
|
262
|
+
`)),console.log(i.default.blue("\uD83D\uDCA1 Next steps:")),console.log(i.default.gray(" - Test the config in your AI tool")),console.log(i.default.gray(` - Use: airc install
|
|
263
|
+
`))}catch(K){console.error(i.default.red(`❌ Failed to open editor: ${K}`)),process.exit(1)}}var i3={name:"airc",version:"0.1.0",description:"A CLI tool to install AI tool configuration files",type:"module",main:"dist/index.js",files:["dist"],bin:{airc:"./dist/index.js"},scripts:{build:"bun build src/cli.ts --minify --outfile dist/index.js --target node",airc:"bun src/cli.ts",tsc:"tsc --noEmit",test:"bun test","test:watch":"bun test --watch",lint:"oxlint"},keywords:["cli","ai","config","airc","tool"],author:"teobler",license:"MIT",dependencies:{chalk:"^4.1.2",commander:"^12.0.0","fs-extra":"^11.2.0"},devDependencies:{"@types/fs-extra":"^11.0.4","@types/node":"^20.11.0","bun-types":"^1.3.6",oxlint:"^1.39.0",typescript:"^5.3.3"}};var KJ=i3.version,C2=new z0;C2.name("airc").description(`AI Config Manager - Manage and install AI tool configurations
|
|
264
|
+
|
|
265
|
+
Quick start:
|
|
266
|
+
1. airc init # Initialize config directory
|
|
267
|
+
2. airc source add <git-url> # Add a config source (auto-copies configs)
|
|
268
|
+
3. airc list # List available configs
|
|
269
|
+
4. airc install <tool> # Install to AI tool
|
|
270
|
+
|
|
271
|
+
Documentation: https://github.com/anomalyco/airc`).version(KJ);C2.command("init").description("Initialize AI Config Manager (creates ~/.airc directory structure)").option("-f, --force","Force reinitialization if already initialized").action(async(q)=>{try{await _3(q)}catch(J){let Z=J instanceof Error?J.message:String(J);console.error(o.default.red(`
|
|
272
|
+
❌ Unexpected error: ${Z}
|
|
273
|
+
`)),process.exit(1)}});var y1=C2.command("source").description("Manage configuration sources");y1.command("add").description(`Add a config source from a git repository (automatically clones and copies configs)
|
|
274
|
+
Examples:
|
|
275
|
+
airc source add https://github.com/user/configs --name my-configs
|
|
276
|
+
airc source add https://github.com/user/repo/tree/main/configs --name configs`).argument("<url>","Git repository URL or GitHub tree URL for sparse checkout").option("-n, --name <name>","Custom source name (default: extracted from URL)").option("-b, --branch <branch>","Git branch to checkout (default: repo default)").option("-f, --force","Replace existing source if it exists").option("--depth <number>","Scan depth for config folders (default: 3)",(q)=>parseInt(q,10)).action(async(q,J)=>{try{await D3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
277
|
+
❌ Unexpected error: ${X}
|
|
278
|
+
`)),process.exit(1)}});y1.command("list").description("List all configuration sources with their details").option("-v, --verbose","Show detailed information including file counts and last updated time").action(async(q)=>{try{await M3(q)}catch(J){let Z=J instanceof Error?J.message:String(J);console.error(o.default.red(`
|
|
279
|
+
❌ Unexpected error: ${Z}
|
|
280
|
+
`)),process.exit(1)}});y1.command("remove").description("Remove a configuration source").argument("[name]","Source name to remove").option("-f, --force","Confirm removal without prompt").option("-a, --all","Remove all sources").action(async(q,J)=>{try{await A3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
281
|
+
❌ Unexpected error: ${X}
|
|
282
|
+
`)),process.exit(1)}});y1.command("update").description(`Update a configuration source to the latest version (smart update: only changes modified files)
|
|
283
|
+
Example: airc source update my-configs`).argument("[name]","Source name to update").option("-a, --all","Update all sources").action(async(q,J)=>{try{await x3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
284
|
+
❌ Unexpected error: ${X}
|
|
285
|
+
`)),process.exit(1)}});y1.command("check").description("Check if sources have updates available").argument("[name]","Source name to check").option("-a, --all","Check all sources").action(async(q,J)=>{try{await S3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
286
|
+
❌ Unexpected error: ${X}
|
|
287
|
+
`)),process.exit(1)}});C2.command("browse").description("Browse available configurations from sources in ~/.airc/config").argument("[source]","Source name to browse (omit to browse all sources)").option("-a, --all","Browse all sources").option("-t, --type <type>","Filter by type (commands, skills, agents)").action(async(q,J)=>{try{await b3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
288
|
+
❌ Unexpected error: ${X}
|
|
289
|
+
`)),process.exit(1)}});C2.command("remove").description(`Remove a configuration file from your config directory
|
|
290
|
+
Example: airc remove skills/my-source/web-design.md --force`).argument("<path>","Config file path relative to ~/.airc/config/ (e.g., skills/my-source/web-design.md)").option("-f, --force","Confirm removal without prompt").action(async(q,J)=>{try{await g3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
291
|
+
❌ Unexpected error: ${X}
|
|
292
|
+
`)),process.exit(1)}});C2.command("list").description("List all configurations in your config directory").option("-t, --type <type>","Filter by type (commands, skills, agents)").action(async(q)=>{try{if(q.type&&!["commands","skills","agents"].includes(q.type))console.error(o.default.red(`
|
|
293
|
+
❌ Invalid type: ${q.type}`)),console.log(o.default.gray(` Valid types: commands, skills, agents
|
|
294
|
+
`)),process.exit(1);await f3(q)}catch(J){let Z=J instanceof Error?J.message:String(J);console.error(o.default.red(`
|
|
295
|
+
❌ Unexpected error: ${Z}
|
|
296
|
+
`)),process.exit(1)}});C2.command("status").description("Show overall status of sources and configurations").action(async()=>{try{await d3()}catch(q){let J=q instanceof Error?q.message:String(q);console.error(o.default.red(`
|
|
297
|
+
❌ Unexpected error: ${J}
|
|
298
|
+
`)),process.exit(1)}});C2.command("create").description("Create a new configuration in your config directory").argument("<type>","Type of config (command, skill, agent)").argument("<name>","Name of the config to create").option("-d, --description <description>","Description for the config").option("-f, --force","Overwrite existing config if it exists").action(async(q,J,Z)=>{try{if(!["command","skill","agent"].includes(q))console.error(o.default.red(`
|
|
299
|
+
❌ Invalid type: ${q}`)),console.log(o.default.gray(` Valid types: command, skill, agent
|
|
300
|
+
`)),process.exit(1);await p3(q,J,Z)}catch(X){let Y=X instanceof Error?X.message:String(X);console.error(o.default.red(`
|
|
301
|
+
❌ Unexpected error: ${Y}
|
|
302
|
+
`)),process.exit(1)}});C2.command("edit").description("Edit a configuration in your default editor").argument("<type>","Type of config (command, skill, agent)").argument("<name>","Name of the config to edit").action(async(q,J)=>{try{if(!["command","skill","agent"].includes(q))console.error(o.default.red(`
|
|
303
|
+
❌ Invalid type: ${q}`)),console.log(o.default.gray(` Valid types: command, skill, agent
|
|
304
|
+
`)),process.exit(1);await n3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
305
|
+
❌ Unexpected error: ${X}
|
|
306
|
+
`)),process.exit(1)}});C2.command("install").description(`Install configuration files from user config (~/.airc/config) to a specific AI tool
|
|
307
|
+
Example: airc install claude --global`).argument("<tool>","AI tool name (claude, gemini, antigravity, cursor, copilot, opencode)").option("-c, --config-path <path>","Path to config folder (default: ~/.airc/config for user workflow)").option("-f, --force","Overwrite existing files").option("-g, --global","Install to global directory (~/.tool) instead of project directory").action(async(q,J)=>{try{await U3(q,J)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);console.error(o.default.red(`
|
|
308
|
+
❌ Unexpected error: ${X}
|
|
309
|
+
`)),process.exit(1)}});C2.parse();
|