@yybpc/cli 1.0.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.
Files changed (2) hide show
  1. package/dist/index.js +177 -0
  2. package/package.json +30 -0
package/dist/index.js ADDED
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
+ var Ir=Object.create;var wt=Object.defineProperty;var $r=Object.getOwnPropertyDescriptor;var Nr=Object.getOwnPropertyNames;var jr=Object.getPrototypeOf,Lr=Object.prototype.hasOwnProperty;var W=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var _=(r,t)=>()=>(r&&(t=r(r=0)),t);var $=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),j=(r,t)=>{for(var e in t)wt(r,e,{get:t[e],enumerable:!0})},Hr=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Nr(t))!Lr.call(r,o)&&o!==e&&wt(r,o,{get:()=>t[o],enumerable:!(n=$r(t,o))||n.enumerable});return r};var Mr=(r,t,e)=>(e=r!=null?Ir(jr(r)):{},Hr(t||!r||!r.__esModule?wt(e,"default",{value:r,enumerable:!0}):e,r));var J=$(St=>{"use strict";var tt=class extends Error{constructor(t,e,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=e,this.exitCode=t,this.nestedError=void 0}},At=class extends tt{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};St.CommanderError=tt;St.InvalidArgumentError=At});var et=$(Tt=>{"use strict";var{InvalidArgumentError:Vr}=J(),Rt=class{constructor(t,e){switch(this.description=e||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(t,e){return e===this.defaultValue||!Array.isArray(e)?[t]:(e.push(t),e)}default(t,e){return this.defaultValue=t,this.defaultValueDescription=e,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new Vr(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(e,n):e},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function qr(r){let t=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+t+">":"["+t+"]"}Tt.Argument=Rt;Tt.humanReadableArgName=qr});var xt=$(vt=>{"use strict";var{humanReadableArgName:Gr}=et(),Et=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(t){this.helpWidth=this.helpWidth??t.helpWidth??80}visibleCommands(t){let e=t.commands.filter(o=>!o._hidden),n=t._getHelpCommand();return n&&!n._hidden&&e.push(n),this.sortSubcommands&&e.sort((o,i)=>o.name().localeCompare(i.name())),e}compareOptions(t,e){let n=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return n(t).localeCompare(n(e))}visibleOptions(t){let e=t.options.filter(o=>!o.hidden),n=t._getHelpOption();if(n&&!n.hidden){let o=n.short&&t._findOption(n.short),i=n.long&&t._findOption(n.long);!o&&!i?e.push(n):n.long&&!i?e.push(t.createOption(n.long,n.description)):n.short&&!o&&e.push(t.createOption(n.short,n.description))}return this.sortOptions&&e.sort(this.compareOptions),e}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let e=[];for(let n=t.parent;n;n=n.parent){let o=n.options.filter(i=>!i.hidden);e.push(...o)}return this.sortOptions&&e.sort(this.compareOptions),e}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(e=>{e.description=e.description||t._argsDescription[e.name()]||""}),t.registeredArguments.find(e=>e.description)?t.registeredArguments:[]}subcommandTerm(t){let e=t.registeredArguments.map(n=>Gr(n)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(e?" "+e:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,e){return e.visibleCommands(t).reduce((n,o)=>Math.max(n,this.displayWidth(e.styleSubcommandTerm(e.subcommandTerm(o)))),0)}longestOptionTermLength(t,e){return e.visibleOptions(t).reduce((n,o)=>Math.max(n,this.displayWidth(e.styleOptionTerm(e.optionTerm(o)))),0)}longestGlobalOptionTermLength(t,e){return e.visibleGlobalOptions(t).reduce((n,o)=>Math.max(n,this.displayWidth(e.styleOptionTerm(e.optionTerm(o)))),0)}longestArgumentTermLength(t,e){return e.visibleArguments(t).reduce((n,o)=>Math.max(n,this.displayWidth(e.styleArgumentTerm(e.argumentTerm(o)))),0)}commandUsage(t){let e=t._name;t._aliases[0]&&(e=e+"|"+t._aliases[0]);let n="";for(let o=t.parent;o;o=o.parent)n=o.name()+" "+n;return n+e+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let e=[];if(t.argChoices&&e.push(`choices: ${t.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&e.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&e.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&e.push(`env: ${t.envVar}`),e.length>0){let n=`(${e.join(", ")})`;return t.description?`${t.description} ${n}`:n}return t.description}argumentDescription(t){let e=[];if(t.argChoices&&e.push(`choices: ${t.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),t.defaultValue!==void 0&&e.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),e.length>0){let n=`(${e.join(", ")})`;return t.description?`${t.description} ${n}`:n}return t.description}formatItemList(t,e,n){return e.length===0?[]:[n.styleTitle(t),...e,""]}groupItems(t,e,n){let o=new Map;return t.forEach(i=>{let s=n(i);o.has(s)||o.set(s,[])}),e.forEach(i=>{let s=n(i);o.has(s)||o.set(s,[]),o.get(s).push(i)}),o}formatHelp(t,e){let n=e.padWidth(t,e),o=e.helpWidth??80;function i(u,l){return e.formatItem(u,n,l,e)}let s=[`${e.styleTitle("Usage:")} ${e.styleUsage(e.commandUsage(t))}`,""],a=e.commandDescription(t);a.length>0&&(s=s.concat([e.boxWrap(e.styleCommandDescription(a),o),""]));let c=e.visibleArguments(t).map(u=>i(e.styleArgumentTerm(e.argumentTerm(u)),e.styleArgumentDescription(e.argumentDescription(u))));if(s=s.concat(this.formatItemList("Arguments:",c,e)),this.groupItems(t.options,e.visibleOptions(t),u=>u.helpGroupHeading??"Options:").forEach((u,l)=>{let m=u.map(y=>i(e.styleOptionTerm(e.optionTerm(y)),e.styleOptionDescription(e.optionDescription(y))));s=s.concat(this.formatItemList(l,m,e))}),e.showGlobalOptions){let u=e.visibleGlobalOptions(t).map(l=>i(e.styleOptionTerm(e.optionTerm(l)),e.styleOptionDescription(e.optionDescription(l))));s=s.concat(this.formatItemList("Global Options:",u,e))}return this.groupItems(t.commands,e.visibleCommands(t),u=>u.helpGroup()||"Commands:").forEach((u,l)=>{let m=u.map(y=>i(e.styleSubcommandTerm(e.subcommandTerm(y)),e.styleSubcommandDescription(e.subcommandDescription(y))));s=s.concat(this.formatItemList(l,m,e))}),s.join(`
4
+ `)}displayWidth(t){return de(t).length}styleTitle(t){return t}styleUsage(t){return t.split(" ").map(e=>e==="[options]"?this.styleOptionText(e):e==="[command]"?this.styleSubcommandText(e):e[0]==="["||e[0]==="<"?this.styleArgumentText(e):this.styleCommandText(e)).join(" ")}styleCommandDescription(t){return this.styleDescriptionText(t)}styleOptionDescription(t){return this.styleDescriptionText(t)}styleSubcommandDescription(t){return this.styleDescriptionText(t)}styleArgumentDescription(t){return this.styleDescriptionText(t)}styleDescriptionText(t){return t}styleOptionTerm(t){return this.styleOptionText(t)}styleSubcommandTerm(t){return t.split(" ").map(e=>e==="[options]"?this.styleOptionText(e):e[0]==="["||e[0]==="<"?this.styleArgumentText(e):this.styleSubcommandText(e)).join(" ")}styleArgumentTerm(t){return this.styleArgumentText(t)}styleOptionText(t){return t}styleArgumentText(t){return t}styleSubcommandText(t){return t}styleCommandText(t){return t}padWidth(t,e){return Math.max(e.longestOptionTermLength(t,e),e.longestGlobalOptionTermLength(t,e),e.longestSubcommandTermLength(t,e),e.longestArgumentTermLength(t,e))}preformatted(t){return/\n[^\S\r\n]/.test(t)}formatItem(t,e,n,o){let s=" ".repeat(2);if(!n)return s+t;let a=t.padEnd(e+t.length-o.displayWidth(t)),c=2,p=(this.helpWidth??80)-e-c-2,u;return p<this.minWidthToWrap||o.preformatted(n)?u=n:u=o.boxWrap(n,p).replace(/\n/g,`
5
+ `+" ".repeat(e+c)),s+a+" ".repeat(c)+u.replace(/\n/g,`
6
+ ${s}`)}boxWrap(t,e){if(e<this.minWidthToWrap)return t;let n=t.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,i=[];return n.forEach(s=>{let a=s.match(o);if(a===null){i.push("");return}let c=[a.shift()],d=this.displayWidth(c[0]);a.forEach(p=>{let u=this.displayWidth(p);if(d+u<=e){c.push(p),d+=u;return}i.push(c.join(""));let l=p.trimStart();c=[l],d=this.displayWidth(l)}),i.push(c.join(""))}),i.join(`
7
+ `)}};function de(r){let t=/\x1b\[\d*(;\d*)*m/g;return r.replace(t,"")}vt.Help=Et;vt.stripColor=de});var It=$(Pt=>{"use strict";var{InvalidArgumentError:Fr}=J(),Dt=class{constructor(t,e){this.flags=t,this.description=e||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let n=Yr(t);this.short=n.shortFlag,this.long=n.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(t,e){return this.defaultValue=t,this.defaultValueDescription=e,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let e=t;return typeof t=="string"&&(e={[t]:!0}),this.implied=Object.assign(this.implied||{},e),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_collectValue(t,e){return e===this.defaultValue||!Array.isArray(e)?[t]:(e.push(t),e)}choices(t){return this.argChoices=t.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new Fr(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(e,n):e},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?me(this.name().replace(/^no-/,"")):me(this.name())}helpGroup(t){return this.helpGroupHeading=t,this}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},kt=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(e=>{e.negate?this.negativeOptions.set(e.attributeName(),e):this.positiveOptions.set(e.attributeName(),e)}),this.negativeOptions.forEach((e,n)=>{this.positiveOptions.has(n)&&this.dualOptions.add(n)})}valueFromOption(t,e){let n=e.attributeName();if(!this.dualOptions.has(n))return!0;let o=this.negativeOptions.get(n).presetArg,i=o!==void 0?o:!1;return e.negate===(i===t)}};function me(r){return r.split("-").reduce((t,e)=>t+e[0].toUpperCase()+e.slice(1))}function Yr(r){let t,e,n=/^-[^-]$/,o=/^--[^-]/,i=r.split(/[ |,]+/).concat("guard");if(n.test(i[0])&&(t=i.shift()),o.test(i[0])&&(e=i.shift()),!t&&n.test(i[0])&&(t=i.shift()),!t&&o.test(i[0])&&(t=e,e=i.shift()),i[0].startsWith("-")){let s=i[0],a=`option creation failed due to '${s}' in option flags '${r}'`;throw/^-[^-][^-]/.test(s)?new Error(`${a}
8
+ - a short flag is a single dash and a single character
9
+ - either use a single dash and a single character (for a short flag)
10
+ - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):n.test(s)?new Error(`${a}
11
+ - too many short flags`):o.test(s)?new Error(`${a}
12
+ - too many long flags`):new Error(`${a}
13
+ - unrecognised flag format`)}if(t===void 0&&e===void 0)throw new Error(`option creation failed due to no flags found in '${r}'.`);return{shortFlag:t,longFlag:e}}Pt.Option=Dt;Pt.DualOptions=kt});var fe=$(he=>{"use strict";function Ur(r,t){if(Math.abs(r.length-t.length)>3)return Math.max(r.length,t.length);let e=[];for(let n=0;n<=r.length;n++)e[n]=[n];for(let n=0;n<=t.length;n++)e[0][n]=n;for(let n=1;n<=t.length;n++)for(let o=1;o<=r.length;o++){let i=1;r[o-1]===t[n-1]?i=0:i=1,e[o][n]=Math.min(e[o-1][n]+1,e[o][n-1]+1,e[o-1][n-1]+i),o>1&&n>1&&r[o-1]===t[n-2]&&r[o-2]===t[n-1]&&(e[o][n]=Math.min(e[o][n],e[o-2][n-2]+1))}return e[r.length][t.length]}function Wr(r,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let e=r.startsWith("--");e&&(r=r.slice(2),t=t.map(s=>s.slice(2)));let n=[],o=3,i=.4;return t.forEach(s=>{if(s.length<=1)return;let a=Ur(r,s),c=Math.max(r.length,s.length);(c-a)/c>i&&(a<o?(o=a,n=[s]):a===o&&n.push(s))}),n.sort((s,a)=>s.localeCompare(a)),e&&(n=n.map(s=>`--${s}`)),n.length>1?`
14
+ (Did you mean one of ${n.join(", ")}?)`:n.length===1?`
15
+ (Did you mean ${n[0]}?)`:""}he.suggestSimilar=Wr});var Ce=$(Ht=>{"use strict";var Jr=W("events").EventEmitter,$t=W("child_process"),v=W("path"),rt=W("fs"),f=W("process"),{Argument:Kr,humanReadableArgName:Qr}=et(),{CommanderError:Nt}=J(),{Help:Br,stripColor:zr}=xt(),{Option:ge,DualOptions:Xr}=It(),{suggestSimilar:ye}=fe(),jt=class r extends Jr{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",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._savedState=null,this._outputConfiguration={writeOut:e=>f.stdout.write(e),writeErr:e=>f.stderr.write(e),outputError:(e,n)=>n(e),getOutHelpWidth:()=>f.stdout.isTTY?f.stdout.columns:void 0,getErrHelpWidth:()=>f.stderr.isTTY?f.stderr.columns:void 0,getOutHasColors:()=>Lt()??(f.stdout.isTTY&&f.stdout.hasColors?.()),getErrHasColors:()=>Lt()??(f.stderr.isTTY&&f.stderr.hasColors?.()),stripColor:e=>zr(e)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let e=this;e;e=e.parent)t.push(e);return t}command(t,e,n){let o=e,i=n;typeof o=="object"&&o!==null&&(i=o,o=null),i=i||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),c=this.createCommand(s);return o&&(c.description(o),c._executableHandler=!0),i.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(i.noHelp||i.hidden),c._executableFile=i.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(t){return new r(t)}createHelp(){return Object.assign(new Br,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...t},this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,e){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
16
+ - specify the name in Command constructor or using .name()`);return e=e||{},e.isDefault&&(this._defaultCommandName=t._name),(e.noHelp||e.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,e){return new Kr(t,e)}argument(t,e,n,o){let i=this.createArgument(t,e);return typeof n=="function"?i.default(o).argParser(n):i.default(n),this.addArgument(i),this}arguments(t){return t.trim().split(/ +/).forEach(e=>{this.argument(e)}),this}addArgument(t){let e=this.registeredArguments.slice(-1)[0];if(e?.variadic)throw new Error(`only the last argument can be variadic '${e.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,e){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let n=t??"help [command]",[,o,i]=n.match(/([^ ]+) *(.*)/),s=e??"display help for command",a=this.createCommand(o);return a.helpOption(!1),i&&a.arguments(i),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||e)&&this._initCommandGroup(a),this}addHelpCommand(t,e){return typeof t!="object"?(this.helpCommand(t,e),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this._initCommandGroup(t),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,e){let n=["preSubcommand","preAction","postAction"];if(!n.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
17
+ Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(e):this._lifeCycleHooks[t]=[e],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=e=>{if(e.code!=="commander.executeSubCommandAsync")throw e},this}_exit(t,e,n){this._exitCallback&&this._exitCallback(new Nt(t,e,n)),f.exit(t)}action(t){let e=n=>{let o=this.registeredArguments.length,i=n.slice(0,o);return this._storeOptionsAsProperties?i[o]=this:i[o]=this.opts(),i.push(this),t.apply(this,i)};return this._actionHandler=e,this}createOption(t,e){return new ge(t,e)}_callParseArg(t,e,n,o){try{return t.parseArg(e,n)}catch(i){if(i.code==="commander.invalidArgument"){let s=`${o} ${i.message}`;this.error(s,{exitCode:i.exitCode,code:i.code})}throw i}}_registerOption(t){let e=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(e){let n=t.long&&this._findOption(t.long)?t.long:t.short;throw new Error(`Cannot add option '${t.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${n}'
18
+ - already used by option '${e.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let e=o=>[o.name()].concat(o.aliases()),n=e(t).find(o=>this._findCommand(o));if(n){let o=e(this._findCommand(n)).join("|"),i=e(t).join("|");throw new Error(`cannot add command '${i}' as already have command '${o}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let e=t.name(),n=t.attributeName();if(t.negate){let i=t.long.replace(/^--no-/,"--");this._findOption(i)||this.setOptionValueWithSource(n,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(n,t.defaultValue,"default");let o=(i,s,a)=>{i==null&&t.presetArg!==void 0&&(i=t.presetArg);let c=this.getOptionValue(n);i!==null&&t.parseArg?i=this._callParseArg(t,i,c,s):i!==null&&t.variadic&&(i=t._collectValue(i,c)),i==null&&(t.negate?i=!1:t.isBoolean()||t.optional?i=!0:i=""),this.setOptionValueWithSource(n,i,a)};return this.on("option:"+e,i=>{let s=`error: option '${t.flags}' argument '${i}' is invalid.`;o(i,s,"cli")}),t.envVar&&this.on("optionEnv:"+e,i=>{let s=`error: option '${t.flags}' value '${i}' from env '${t.envVar}' is invalid.`;o(i,s,"env")}),this}_optionEx(t,e,n,o,i){if(typeof e=="object"&&e instanceof ge)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(e,n);if(s.makeOptionMandatory(!!t.mandatory),typeof o=="function")s.default(i).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,d)=>{let p=a.exec(c);return p?p[0]:d},s.default(i).argParser(o)}else s.default(o);return this.addOption(s)}option(t,e,n,o){return this._optionEx({},t,e,n,o)}requiredOption(t,e,n,o){return this._optionEx({mandatory:!0},t,e,n,o)}combineFlagAndOptionalValue(t=!0){return this._combineFlagAndOptionalValue=!!t,this}allowUnknownOption(t=!0){return this._allowUnknownOption=!!t,this}allowExcessArguments(t=!0){return this._allowExcessArguments=!!t,this}enablePositionalOptions(t=!0){return this._enablePositionalOptions=!!t,this}passThroughOptions(t=!0){return this._passThroughOptions=!!t,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(t=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!t,this}getOptionValue(t){return this._storeOptionsAsProperties?this[t]:this._optionValues[t]}setOptionValue(t,e){return this.setOptionValueWithSource(t,e,void 0)}setOptionValueWithSource(t,e,n){return this._storeOptionsAsProperties?this[t]=e:this._optionValues[t]=e,this._optionValueSources[t]=n,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let e;return this._getCommandAndAncestors().forEach(n=>{n.getOptionValueSource(t)!==void 0&&(e=n.getOptionValueSource(t))}),e}_prepareUserArgs(t,e){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(e=e||{},t===void 0&&e.from===void 0){f.versions?.electron&&(e.from="electron");let o=f.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(e.from="eval")}t===void 0&&(t=f.argv),this.rawArgs=t.slice();let n;switch(e.from){case void 0:case"node":this._scriptPath=t[1],n=t.slice(2);break;case"electron":f.defaultApp?(this._scriptPath=t[1],n=t.slice(2)):n=t.slice(1);break;case"user":n=t.slice(0);break;case"eval":n=t.slice(1);break;default:throw new Error(`unexpected parse option { from: '${e.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",n}parse(t,e){this._prepareForParse();let n=this._prepareUserArgs(t,e);return this._parseCommand([],n),this}async parseAsync(t,e){this._prepareForParse();let n=this._prepareUserArgs(t,e);return await this._parseCommand([],n),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
19
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(t,e,n){if(rt.existsSync(t))return;let o=e?`searched for local subcommand relative to directory '${e}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",i=`'${t}' does not exist
20
+ - if '${n}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
21
+ - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
22
+ - ${o}`;throw new Error(i)}_executeSubCommand(t,e){e=e.slice();let n=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function i(p,u){let l=v.resolve(p,u);if(rt.existsSync(l))return l;if(o.includes(v.extname(u)))return;let m=o.find(y=>rt.existsSync(`${l}${y}`));if(m)return`${l}${m}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let p;try{p=rt.realpathSync(this._scriptPath)}catch{p=this._scriptPath}a=v.resolve(v.dirname(p),a)}if(a){let p=i(a,s);if(!p&&!t._executableFile&&this._scriptPath){let u=v.basename(this._scriptPath,v.extname(this._scriptPath));u!==this._name&&(p=i(a,`${u}-${t._name}`))}s=p||s}n=o.includes(v.extname(s));let c;f.platform!=="win32"?n?(e.unshift(s),e=_e(f.execArgv).concat(e),c=$t.spawn(f.argv[0],e,{stdio:"inherit"})):c=$t.spawn(s,e,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),e.unshift(s),e=_e(f.execArgv).concat(e),c=$t.spawn(f.execPath,e,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(u=>{f.on(u,()=>{c.killed===!1&&c.exitCode===null&&c.kill(u)})});let d=this._exitCallback;c.on("close",p=>{p=p??1,d?d(new Nt(p,"commander.executeSubCommandAsync","(close)")):f.exit(p)}),c.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(p.code==="EACCES")throw new Error(`'${s}' not executable`);if(!d)f.exit(1);else{let u=new Nt(1,"commander.executeSubCommandAsync","(error)");u.nestedError=p,d(u)}}),this.runningCommand=c}_dispatchSubcommand(t,e,n){let o=this._findCommand(t);o||this.help({error:!0}),o._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,o,"preSubcommand"),i=this._chainOrCall(i,()=>{if(o._executableHandler)this._executeSubCommand(o,e.concat(n));else return o._parseCommand(e,n)}),i}_dispatchHelpCommand(t){t||this.help();let e=this._findCommand(t);return e&&!e._executableHandler&&e.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,e)=>{t.required&&this.args[e]==null&&this.missingArgument(t.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let t=(n,o,i)=>{let s=o;if(o!==null&&n.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${n.name()}'.`;s=this._callParseArg(n,o,i,a)}return s};this._checkNumberOfArguments();let e=[];this.registeredArguments.forEach((n,o)=>{let i=n.defaultValue;n.variadic?o<this.args.length?(i=this.args.slice(o),n.parseArg&&(i=i.reduce((s,a)=>t(n,a,s),n.defaultValue))):i===void 0&&(i=[]):o<this.args.length&&(i=this.args[o],n.parseArg&&(i=t(n,i,n.defaultValue))),e[o]=i}),this.processedArgs=e}_chainOrCall(t,e){return t?.then&&typeof t.then=="function"?t.then(()=>e()):e()}_chainOrCallHooks(t,e){let n=t,o=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[e]!==void 0).forEach(i=>{i._lifeCycleHooks[e].forEach(s=>{o.push({hookedCommand:i,callback:s})})}),e==="postAction"&&o.reverse(),o.forEach(i=>{n=this._chainOrCall(n,()=>i.callback(i.hookedCommand,this))}),n}_chainOrCallSubCommandHook(t,e,n){let o=t;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(i=>{o=this._chainOrCall(o,()=>i(this,e))}),o}_parseCommand(t,e){let n=this.parseOptions(e);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(n.operands),e=n.unknown,this.args=t.concat(e),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),e);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(e),this._dispatchSubcommand(this._defaultCommandName,t,e);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(i,t,e)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent?.listenerCount(i))o(),this._processArguments(),this.parent.emit(i,t,e);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,e);this.listenerCount("command:*")?this.emit("command:*",t,e):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(e=>e._name===t||e._aliases.includes(t))}_findOption(t){return this.options.find(e=>e.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(e=>{e.mandatory&&t.getOptionValue(e.attributeName())===void 0&&t.missingMandatoryOptionValue(e)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(n=>{let o=n.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});t.filter(n=>n.conflictsWith.length>0).forEach(n=>{let o=t.find(i=>n.conflictsWith.includes(i.attributeName()));o&&this._conflictingOption(n,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let e=[],n=[],o=e;function i(p){return p.length>1&&p[0]==="-"}let s=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(u=>u.options.map(l=>l.short).some(l=>/^-\d$/.test(l))):!1,a=null,c=null,d=0;for(;d<t.length||c;){let p=c??t[d++];if(c=null,p==="--"){o===n&&o.push(p),o.push(...t.slice(d));break}if(a&&(!i(p)||s(p))){this.emit(`option:${a.name()}`,p);continue}if(a=null,i(p)){let u=this._findOption(p);if(u){if(u.required){let l=t[d++];l===void 0&&this.optionMissingArgument(u),this.emit(`option:${u.name()}`,l)}else if(u.optional){let l=null;d<t.length&&(!i(t[d])||s(t[d]))&&(l=t[d++]),this.emit(`option:${u.name()}`,l)}else this.emit(`option:${u.name()}`);a=u.variadic?u:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let u=this._findOption(`-${p[1]}`);if(u){u.required||u.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${u.name()}`,p.slice(2)):(this.emit(`option:${u.name()}`),c=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let u=p.indexOf("="),l=this._findOption(p.slice(0,u));if(l&&(l.required||l.optional)){this.emit(`option:${l.name()}`,p.slice(u+1));continue}}if(o===e&&i(p)&&!(this.commands.length===0&&s(p))&&(o=n),(this._enablePositionalOptions||this._passThroughOptions)&&e.length===0&&n.length===0){if(this._findCommand(p)){e.push(p),n.push(...t.slice(d));break}else if(this._getHelpCommand()&&p===this._getHelpCommand().name()){e.push(p,...t.slice(d));break}else if(this._defaultCommandName){n.push(p,...t.slice(d));break}}if(this._passThroughOptions){o.push(p,...t.slice(d));break}o.push(p)}return{operands:e,unknown:n}}opts(){if(this._storeOptionsAsProperties){let t={},e=this.options.length;for(let n=0;n<e;n++){let o=this.options[n].attributeName();t[o]=o===this._versionOptionName?this._version:this[o]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,e)=>Object.assign(t,e.opts()),{})}error(t,e){this._outputConfiguration.outputError(`${t}
23
+ `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
24
+ `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
25
+ `),this.outputHelp({error:!0}));let n=e||{},o=n.exitCode||1,i=n.code||"commander.error";this._exit(o,i,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in f.env){let e=t.attributeName();(this.getOptionValue(e)===void 0||["default","config","env"].includes(this.getOptionValueSource(e)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,f.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new Xr(this.options),e=n=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter(n=>n.implied!==void 0&&e(n.attributeName())&&t.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(n=>{Object.keys(n.implied).filter(o=>!e(o)).forEach(o=>{this.setOptionValueWithSource(o,n.implied[o],"implied")})})}missingArgument(t){let e=`error: missing required argument '${t}'`;this.error(e,{code:"commander.missingArgument"})}optionMissingArgument(t){let e=`error: option '${t.flags}' argument missing`;this.error(e,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let e=`error: required option '${t.flags}' not specified`;this.error(e,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,e){let n=s=>{let a=s.attributeName(),c=this.getOptionValue(a),d=this.options.find(u=>u.negate&&a===u.attributeName()),p=this.options.find(u=>!u.negate&&a===u.attributeName());return d&&(d.presetArg===void 0&&c===!1||d.presetArg!==void 0&&c===d.presetArg)?d:p||s},o=s=>{let a=n(s),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},i=`error: ${o(t)} cannot be used with ${o(e)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let e="";if(t.startsWith("--")&&this._showSuggestionAfterError){let o=[],i=this;do{let s=i.createHelp().visibleOptions(i).filter(a=>a.long).map(a=>a.long);o=o.concat(s),i=i.parent}while(i&&!i._enablePositionalOptions);e=ye(t,o)}let n=`error: unknown option '${t}'${e}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let e=this.registeredArguments.length,n=e===1?"":"s",i=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${e} argument${n} but got ${t.length}.`;this.error(i,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],e="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(i=>{o.push(i.name()),i.alias()&&o.push(i.alias())}),e=ye(t,o)}let n=`error: unknown command '${t}'${e}`;this.error(n,{code:"commander.unknownCommand"})}version(t,e,n){if(t===void 0)return this._version;this._version=t,e=e||"-V, --version",n=n||"output the version number";let o=this.createOption(e,n);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${t}
26
+ `),this._exit(0,"commander.version",t)}),this}description(t,e){return t===void 0&&e===void 0?this._description:(this._description=t,e&&(this._argsDescription=e),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let e=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(e=this.commands[this.commands.length-1]),t===e._name)throw new Error("Command alias can't be the same as its name");let n=this.parent?._findCommand(t);if(n){let o=[n.name()].concat(n.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${o}'`)}return e._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(e=>this.alias(e)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let e=this.registeredArguments.map(n=>Qr(n));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?e:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}helpGroup(t){return t===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return t===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return t===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=v.basename(t,v.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let e=this.createHelp(),n=this._getOutputContext(t);e.prepareContext({error:n.error,helpWidth:n.helpWidth,outputHasColors:n.hasColors});let o=e.formatHelp(this,e);return n.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(t){t=t||{};let e=!!t.error,n,o,i;return e?(n=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(n=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:e,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),n(a)),hasColors:o,helpWidth:i}}outputHelp(t){let e;typeof t=="function"&&(e=t,t=void 0);let n=this._getOutputContext(t),o={error:n.error,write:n.write,command:this};this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let i=this.helpInformation({error:n.error});if(e&&(i=e(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");n.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",o))}helpOption(t,e){return typeof t=="boolean"?(t?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(t??"-h, --help",e??"display help for command"),(t||e)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let e=Number(f.exitCode??0);e===0&&t&&typeof t!="function"&&t.error&&(e=1),this._exit(e,"commander.help","(outputHelp)")}addHelpText(t,e){let n=["beforeAll","before","after","afterAll"];if(!n.includes(t))throw new Error(`Unexpected value for position to addHelpText.
27
+ Expecting one of '${n.join("', '")}'`);let o=`${t}Help`;return this.on(o,i=>{let s;typeof e=="function"?s=e({error:i.error,command:i.command}):s=e,s&&i.write(`${s}
28
+ `)}),this}_outputHelpIfRequested(t){let e=this._getHelpOption();e&&t.find(o=>e.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function _e(r){return r.map(t=>{if(!t.startsWith("--inspect"))return t;let e,n="127.0.0.1",o="9229",i;return(i=t.match(/^(--inspect(-brk)?)$/))!==null?e=i[1]:(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(e=i[1],/^\d+$/.test(i[3])?o=i[3]:n=i[3]):(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(e=i[1],n=i[3],o=i[4]),e&&o!=="0"?`${e}=${n}:${parseInt(o)+1}`:t})}function Lt(){if(f.env.NO_COLOR||f.env.FORCE_COLOR==="0"||f.env.FORCE_COLOR==="false")return!1;if(f.env.FORCE_COLOR||f.env.CLICOLOR_FORCE!==void 0)return!0}Ht.Command=jt;Ht.useColor=Lt});var Ae=$(A=>{"use strict";var{Argument:Oe}=et(),{Command:Mt}=Ce(),{CommanderError:Zr,InvalidArgumentError:be}=J(),{Help:tn}=xt(),{Option:we}=It();A.program=new Mt;A.createCommand=r=>new Mt(r);A.createOption=(r,t)=>new we(r,t);A.createArgument=(r,t)=>new Oe(r,t);A.Command=Mt;A.Option=we;A.Argument=Oe;A.Help=tn;A.CommanderError=Zr;A.InvalidArgumentError=be;A.InvalidOptionArgumentError=be});var h,R=_(()=>{"use strict";h=class extends Error{constructor(e,n,o,i){super(o);this.type=e;this.code=n;this.service=i;this.name="SvcError"}type;code;service;isAuthError(){return this.type==="AUTH_ERROR"}toJSON(){return{success:!1,error:{type:this.type,code:this.code,message:this.message,service:this.service}}}}});function nt(r){let t=r??"prod";if(!(t in Vt))throw new Error(`Unknown env: ${t}. Valid: ${Object.keys(Vt).join(", ")}`);return Vt[t]}function Te(r){let t=r??"prod";if(!(t in qt))throw new Error(`Unknown env: ${t}. Valid: ${Object.keys(qt).join(", ")}`);return qt[t]}function Ee(r){return en[r]??{timeout:rn}}var Vt,qt,en,rn,ot=_(()=>{"use strict";Vt={dev:"https://dev-hhl.yeyecha.com/api",prod:"https://hhl.yeyecha.com/api"},qt={dev:"https://dev-api.yeyecha.com",prod:"https://api.yeyecha.com"},en={report:{timeout:1e4},mdm:{timeout:1e4},baseinfo:{timeout:1e4},contract:{timeout:1e4},"user-center":{timeout:1e4}},rn=1e4});function ve(r){return{"X-Request-Id":crypto.randomUUID(),"X-Client":"yybpc-cli","X-Source":r}}var xe=_(()=>{"use strict"});var O,L=_(()=>{"use strict";O={agentLoginPath:"/sso/agentLogin",oauth:{clientId:"",authorizationURL:"",tokenURL:"",authorizePath:"/oauth2/authorize",tokenPath:"/oauth2/token",refreshPath:"/oauth2/refresh",userinfoPath:"/oauth2/userinfo",redirectPort:8399,redirectPath:"/callback",scopes:["authorize"]},storage:{get dir(){return process.env.YYBPC_CLI_HOME??`${process.env.HOME}/.yybpc-cli`},sessionFile:"session.json",tokenCacheDir:"token-cache"},refreshBufferMs:3e5}});function nn(r,t){let e=JSON.stringify(t),n=r==="prod"&&typeof t.msg=="string"&&t.msg.includes("\u767D\u540D\u5355")?"\uFF1B\u5982\u679C\u5F53\u524D\u8981\u67E5\u8BE2\u5F00\u53D1\u73AF\u5883\uFF0C\u8BF7\u663E\u5F0F\u4F20\u5165 --env dev":"";return`Agent \u767B\u5F55\u5931\u8D25: ${e}${n}`}async function on(r,t){let n=`${Te(t)}${O.agentLoginPath}`,o=await fetch(n,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`mobile=${encodeURIComponent(r)}`});if(!o.ok)throw new h("AUTH_ERROR","AGENT_LOGIN_FAILED",`Agent \u624B\u673A\u53F7\u767B\u5F55\u5931\u8D25: HTTP ${o.status}`);let i=await o.json();if(i.status!==0||!i.data)throw new h("AUTH_ERROR","AGENT_LOGIN_FAILED",nn(t,i));let s=typeof i.data=="string"?i.data:i.data.tokenValue??i.data.access_token;if(!s)throw new h("AUTH_ERROR","AGENT_LOGIN_FAILED",`Agent \u767B\u5F55\u54CD\u5E94\u7F3A\u5C11 token: ${JSON.stringify(i)}`);return{tokenValue:s,expiresIn:7200}}async function De(r){let{phone:t,cache:e,env:n}=r;if(e){let i=await e.get(t);if(i)return i.accessToken}let o=await on(t,n);if(e){let i={userId:t,accessToken:o.tokenValue,expiresAt:Date.now()+o.expiresIn*1e3,obtainedVia:"delegation",createdAt:Date.now()};await e.set(t,i)}return o.tokenValue}var ke=_(()=>{"use strict";R();L();ot()});import{mkdir as sn,readFile as an,writeFile as cn,chmod as un,unlink as pn}from"fs/promises";import{existsSync as Pe}from"fs";async function it(r,t=448){await sn(r,{recursive:!0,mode:t})}async function H(r){if(!Pe(r))return null;try{return JSON.parse(await an(r,"utf8"))}catch{return null}}async function M(r,t,e=384){await cn(r,JSON.stringify(t,null,2)),await un(r,e)}async function V(r){Pe(r)&&await pn(r)}var st=_(()=>{"use strict"});import{join as ln}from"path";function Gt(r){let t=r??O.storage.dir;return ln(t,dn)}async function at(r){return H(Gt(r))}async function ct(r,t){let e=t??O.storage.dir;await it(e,448),await M(Gt(t),r,384)}async function Ie(r){await V(Gt(r))}var dn,K=_(()=>{"use strict";L();st();dn="session.json"});import{createServer as Mo}from"http";import{spawn as qo}from"child_process";function ut(r){return r?r.expiresAt>Date.now():!1}function Ft(r){return r?r.expiresAt-Date.now()<O.refreshBufferMs:!1}async function mn(r,t){try{let e=await fetch(O.oauth.tokenURL,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:r.refreshToken,client_id:O.oauth.clientId})});if(!e.ok)return null;let n=await e.json(),o={...r,accessToken:n.access_token,refreshToken:n.refresh_token??r.refreshToken,expiresAt:Date.now()+n.expires_in*1e3};return await ct(o,t),o.accessToken}catch{return null}}async function $e(r){let t=await at(r);if(!t)return null;if(ut(t)&&!Ft(t))return t.accessToken;if(t.refreshToken){let e=await mn(t,r);if(e)return e}return ut(t)?t.accessToken:null}var Yt=_(()=>{"use strict";L();K()});import{join as Ut}from"path";import{mkdirSync as hn}from"fs";var pt,Ne=_(()=>{"use strict";L();st();pt=class{dir;constructor(t,e){let n=t??Ut(O.storage.dir,O.storage.tokenCacheDir);this.dir=e?Ut(n,e):n,hn(this.dir,{recursive:!0,mode:448})}filePath(t){let e=t.replace(/[^a-zA-Z0-9_-]/g,"_");return Ut(this.dir,`${e}.json`)}async get(t){let e=await H(this.filePath(t));return!e||e.expiresAt<=Date.now()?null:e}async set(t,e){await M(this.filePath(t),e,384)}async del(t){await V(this.filePath(t))}}});function je(r){return Wt.has(r)||Wt.set(r,new pt(void 0,r)),Wt.get(r)}function Le(r){return process.env.SVC_USER_PHONE??r}function fn(r){return Le(r.asPhone)?"agent":"human"}async function D(r){let t=fn(r);if(t==="agent"){let n=Le(r.asPhone);return{token:await De({phone:n,cache:je(r.env),env:r.env}),mode:t}}let e=await $e();if(!e)throw new h("AUTH_ERROR","NOT_LOGGED_IN","\u672A\u63D0\u4F9B\u8EAB\u4EFD\u8BA4\u8BC1\uFF1A\u8BF7\u901A\u8FC7 --as-phone <\u624B\u673A\u53F7> \u6307\u5B9A\u8C03\u7528\u8EAB\u4EFD");return{token:e,mode:t}}async function He(r,t){await je(t).del(r)}var Wt,lt=_(()=>{"use strict";R();ke();Yt();Ne();Wt=new Map});function gn(r,t,e){let n=r.replace(/\/$/,""),o=t.startsWith("/")?t:`/${t}`,i=`${n}${o}`;if(e){let s=new URLSearchParams;for(let[c,d]of Object.entries(e))d!=null&&s.set(c,String(d));let a=s.toString();a&&(i+=`?${a}`)}return i}function Me(r,t){return{satoken:r,"Content-Type":"application/json",...ve(t)}}function Ve(r){Jt=r}function b(){return Jt}async function q(r){let t=Jt,e=nt(t.env),n=Ee(r.service),o={asPhone:t.asPhone,env:t.env},i="",s="human";if(r.anonymous)try{let g=await D(o);i=g.token,s=g.mode}catch{}else{let g=await D(o);i=g.token,s=g.mode}let a=gn(e,r.path,r.query),c=Me(i,s);if(t.dryRun)return{dryRun:!0,method:r.method,url:a,headers:{...c,satoken:"***"},body:r.body??null};t.verbose&&console.error(`[verbose] ${r.method} ${a}`);let d=Date.now(),p=async g=>{let w=new AbortController,C=setTimeout(()=>w.abort(),n.timeout);try{return await fetch(a,{method:r.method,headers:g,body:r.body?JSON.stringify(r.body):void 0,signal:w.signal})}catch(U){throw U.name==="AbortError"?new h("TRANSPORT_ERROR","TIMEOUT",`${r.service} \u670D\u52A1\u8BF7\u6C42\u8D85\u65F6`,r.service):new h("TRANSPORT_ERROR","NETWORK_ERROR",`\u7F51\u7EDC\u9519\u8BEF: ${U.message}`,r.service)}finally{clearTimeout(C)}},u=await p(c);if(u.status===401&&!r.anonymous)if(s==="agent"){let g=t.asPhone;g&&await He(g,t.env);let w=await D(o),C=Me(w.token,w.mode);u=await p(C)}else throw new h("AUTH_ERROR","TOKEN_EXPIRED","\u767B\u5F55\u5DF2\u8FC7\u671F\uFF1A\u8BF7\u901A\u8FC7 --as-phone <\u624B\u673A\u53F7> \u91CD\u65B0\u6307\u5B9A\u8C03\u7528\u8EAB\u4EFD");let l=Date.now()-d,m=c["X-Request-Id"];if(!u.ok){if(u.status===401||u.status===403)throw new h("AUTH_ERROR",`HTTP_${u.status}`,"\u6743\u9650\u4E0D\u8DB3\u6216\u767B\u5F55\u5DF2\u8FC7\u671F",r.service);let g;try{g=(await u.json()).message??`\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF: ${u.status}`}catch{g=`\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF: ${u.status}`}throw new h("BUSINESS_ERROR",`HTTP_${u.status}`,g,r.service)}return{success:!0,data:await u.json(),meta:{service:r.service,requestId:m,duration:l}}}var Jt,x=_(()=>{"use strict";R();ot();xe();lt();Jt={env:"prod",verbose:!1,dryRun:!1}});function qe(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)&&Object.keys(r).length===0}function Kt(r){if(Array.isArray(r))return r.map(Kt).filter(e=>e!=null&&e!==""&&!(Array.isArray(e)&&e.length===0)&&!qe(e));if(r&&typeof r=="object"){let t={};for(let[e,n]of Object.entries(r)){let o=Kt(n);o!=null&&o!==""&&!(Array.isArray(o)&&o.length===0)&&!qe(o)&&(t[e]=o)}return t}return r}function Qt(r){if(Array.isArray(r))return r.map(Qt);if(r&&typeof r=="object"){let t={};for(let[e,n]of Object.entries(r)){let o=yn[e]??e;t[o]=Qt(n)}return t}return r}function Bt(r,t={}){let e=r;return t.stripNulls&&(e=Kt(e)),t.shortenKeys&&(e=Qt(e)),e}var yn,Ge=_(()=>{"use strict";yn={id:"i",name:"n",code:"c",type:"t",status:"s",label:"lbl",value:"v",createTime:"ct",updateTime:"ut",createdAt:"crt",updatedAt:"udt",children:"ch",parentId:"pid",storeName:"sn",storeCode:"sc",address:"addr",phone:"ph",contact:"cnt",region:"rgn",warehouse:"wh",warehouseName:"whn",product:"pdt",productName:"pdn",skuCode:"skc",barcode:"bc",category:"cat",company:"co",companyName:"cn",franchisee:"fr",franchiseeName:"frn",supplier:"sup",supplierName:"spn",area:"ar",areaName:"arn",unit:"un",unitName:"unn"}});function Fe(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function _n(r){return Array.isArray(r)&&r.length>0&&r.every(Fe)}function Cn(r){let t=[],e=new Set;for(let o of r)for(let i of Object.keys(o))e.has(i)||(e.add(i),t.push(i));let n=r.map(o=>t.map(i=>i in o?G(o[i]):null));return{columns:t,rows:n}}function G(r){if(_n(r))return Cn(r);if(Array.isArray(r))return r.map(G);if(Fe(r)){let t={};for(let[e,n]of Object.entries(r))t[e]=G(n);return t}return r}var Ye=_(()=>{"use strict"});function zt(r,t,e="none"){if(r&&typeof r=="object"&&r.dryRun===!0)return JSON.stringify(r,null,2);if(t==="raw")return JSON.stringify(r.data,null,2);if(e!=="none"){let n=e==="agent"?Bt(r.data,{stripNulls:!0,shortenKeys:!0}):e==="slim"?Bt(r.data,{stripNulls:!0}):r.data;return JSON.stringify(G(n))}return JSON.stringify({...r,data:G(r.data)},null,2)}function Q(r){if(r instanceof h)return JSON.stringify(r.toJSON(),null,2);let t=r instanceof Error?r.message:String(r);return JSON.stringify({success:!1,error:{type:"TRANSPORT_ERROR",code:"UNKNOWN",message:t}},null,2)}async function dt(r,t,e){try{let n=await e();console.log(zt(n,r,t))}catch(n){console.error(Q(n)),process.exit(1)}}var Xt=_(()=>{"use strict";R();Ge();Ye()});import{join as On}from"path";function Zt(r){return On(O.storage.dir,`report-cache-${r}.json`)}async function An(r){let t=await H(Zt(r));return!t||Date.now()-t.fetchedAt>bn||t.env!==r?null:t}async function Sn(r,t){await it(O.storage.dir,448);let e={fetchedAt:Date.now(),env:r,reports:t};await M(Zt(r),e,384)}async function Rn(r,t){let n=`${nt(r)}/report/config/list`,o=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",satoken:t},body:JSON.stringify({page:{pageNo:1,pageSize:500}})});if(o.status===401||o.status===403){let a=!!b().asPhone?"\u8BF7\u786E\u8BA4 --as-phone \u624B\u673A\u53F7\u6B63\u786E\uFF0C\u4E14\u5F53\u524D\u51FA\u53E3 IP \u5728\u8BE5\u73AF\u5883\u767D\u540D\u5355\u5185":"\u8BF7\u901A\u8FC7 --as-phone <\u624B\u673A\u53F7> \u6307\u5B9A\u8C03\u7528\u8EAB\u4EFD";throw new h("AUTH_ERROR","NOT_LOGGED_IN",`\u83B7\u53D6\u62A5\u8868\u5217\u8868\u9700\u8981\u8EAB\u4EFD\u8BA4\u8BC1\uFF08HTTP ${o.status}\uFF09\u3002${a}`,"report")}if(!o.ok)throw new h("TRANSPORT_ERROR",`HTTP_${o.status}`,`\u62A5\u8868\u5217\u8868\u83B7\u53D6\u5931\u8D25: ${n} \u8FD4\u56DE HTTP ${o.status}`,"report");let i=await o.json();if(i.status!==0||!i.data?.data)throw new h("BUSINESS_ERROR","REPORT_LIST_FAILED",`\u62A5\u8868\u5217\u8868\u83B7\u53D6\u5931\u8D25: ${JSON.stringify(i)}`,"report");return i.data.data.map(s=>{let a=(s.items||[]).flatMap(d=>(d.params||[]).map(p=>p.paramKey)).filter(Boolean),c=[...new Set(a)].filter(d=>!wn.has(d));return{reportId:s.reportId,name:s.reportName,category:s.categoryCode,params:c}})}async function mt(r,t,e=!1){if(!e){let o=await An(r);if(o)return o.reports}let n=await Rn(r,t);return await Sn(r,n),n}function Ue(r,t){return r.find(e=>e.reportId===t)}async function k(r){await V(Zt(r))}var bn,wn,N=_(()=>{"use strict";L();ot();st();R();x();bn=1440*60*1e3,wn=new Set(["determinePeriod","determineTrendPeriod","storeDataAuth","reginDataAuth","storeCountDataAuth","storeRepurchaseDataAuth","storeHourDataAuth","storeHourCountDataAuth","hundredMillion","tenThousand","hundredMillionName","tenThousandName","currentTableName","momDateDiff","pageSize","offset","limit","1"])});var ze={};j(ze,{filterReports:()=>Ke,meta:()=>P,renderReportDetail:()=>Qe,renderReportsText:()=>Be,runReportList:()=>En});function We(r){return r.trim().toLowerCase()}function Je(r){return r.params.filter(t=>t!=="startDate"&&t!=="endDate")}function Ke(r,t={}){let e=r;if(t.reportId){let n=e.find(o=>o.reportId===t.reportId);return n?[n]:[]}if(t.category){let n=We(t.category);e=e.filter(o=>We(o.category)===n)}return e}function Tn(r){let t=`yybpc-cli report query --report-id ${r.reportId} --start-date YYYY-MM-DD --end-date YYYY-MM-DD`,e=Je(r);return e.length===0?t:`${t} --param-json '{"${e[0]}":["VALUE"]}'`}function Qe(r){let t=Je(r),e=[`reportId: ${r.reportId}`,`name: ${r.name}`,`category: ${r.category}`,`params: ${r.params.join(", ")||"(none)"}`,`query: ${Tn(r)}`];return t.length>0&&e.push(`extraParams: ${t.join(", ")}`),e.join(`
29
+ `)}function Be(r,t={}){if(r.length===0)return"\u65E0\u53EF\u7528\u62A5\u8868";if(t.detail||t.reportId)return r.map(Qe).join(`
30
+
31
+ `);let e=[];e.push(`\u5171 ${r.length} \u4E2A\u62A5\u8868`);let n="";for(let o of r){o.category!==n&&(e.length>0&&e.push(""),e.push(`[${o.category}]`),n=o.category);let i=o.params.length>0?o.params.join(", "):"(none)";e.push(`${o.reportId} ${o.name}`),e.push(` params: ${i}`)}return e.join(`
32
+ `)}async function En(r={}){let t=r.json??!1,e=b(),{token:n}=await D({asPhone:e.asPhone,env:e.env}),o=await mt(e.env,n,r.refresh??!1),i=Ke(o,r);if(r.reportId&&i.length===0)throw new h("INPUT_ERROR","INVALID_REPORT_ID",`\u672A\u77E5\u7684\u62A5\u8868ID: ${r.reportId}`);console.log(t?JSON.stringify({reports:i},null,2):Be(i,r))}var P,ht=_(()=>{"use strict";N();lt();x();R();P={path:["report","list"],description:"\u5217\u51FA\u5206\u6790\u62A5\u8868\u5E76\u5C55\u793A\u53C2\u6570\u6458\u8981\uFF1B\u6240\u6709\u7ECF\u8425\u5206\u6790\u7C7B\u9700\u6C42\u5148\u4ECE report \u627E\u62A5\u8868",args:{json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA"},category:{type:"string",description:"\u4EC5\u663E\u793A\u6307\u5B9A\u5206\u7C7B"},"report-id":{type:"string",description:"\u67E5\u770B\u5355\u4E2A\u62A5\u8868\u8BE6\u60C5\uFF08\u542B\u53C2\u6570\u548C\u67E5\u8BE2\u793A\u4F8B\uFF09"},detail:{type:"boolean",description:"\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F"},refresh:{type:"boolean",description:"\u5F3A\u5236\u4ECE\u670D\u52A1\u7AEF\u5237\u65B0\u62A5\u8868\u5217\u8868\uFF0C\u5FFD\u7565\u672C\u5730\u7F13\u5B58"}}}});async function ft(r){let t=await Promise.all(Xe.map(n=>r({service:"baseinfo",method:"POST",path:"/baseinfo/common/dict/list/v1",body:{dictType:n},anonymous:!0}))),e={};return Xe.forEach((n,o)=>{let s=(t[o]?.data?.data??{})[n];e[n]=Array.isArray(s)?s.map(a=>({code:a.dictCode,name:a.dictName})):[]}),e}function gt(r){if(typeof r!="string"||r.trim()==="")throw new h("INPUT_ERROR","INVALID_CONFIG_JSON","\u5FC5\u987B\u63D0\u4F9B --config-json\uFF08\u62A5\u8868\u914D\u7F6E JSON\uFF09");let t;try{t=JSON.parse(r)}catch{throw new h("INPUT_ERROR","INVALID_CONFIG_JSON","--config-json \u4E0D\u662F\u5408\u6CD5\u7684 JSON")}if(t===null||typeof t!="object"||Array.isArray(t))throw new h("INPUT_ERROR","INVALID_CONFIG_JSON","--config-json \u5FC5\u987B\u662F JSON \u5BF9\u8C61");let e=t;if("categoryCode"in e&&e.categoryCode!==te)throw new h("INPUT_ERROR","INVALID_CATEGORY",`\u4EC5\u5141\u8BB8\u64CD\u4F5C\u4E1A\u52A1\u81EA\u5B9A\u4E49\u5206\u7C7B\uFF08categoryCode=${te}\uFF09\uFF1B\u4E0D\u5141\u8BB8\u64CD\u4F5C ${String(e.categoryCode)}`);return{...e,categoryCode:te}}var te,Xe,B=_(()=>{"use strict";R();te="business_custom",Xe=["report_type","report_datasource","report_result_function","report_connection_type","report_category"]});var tr={};j(tr,{meta:()=>F,renderGuide:()=>Ze,runGuide:()=>Dn});function ee(r){return vn.replace("__DATASOURCES__",r||xn)}async function Ze(r){if(!r)return ee("");try{let n=((await ft(r)).report_datasource??[]).map(o=>` ${o.code} = ${o.name}`).join(`
33
+ `);return ee(n)}catch{return ee("")}}async function Dn(r){console.log(await Ze(r))}var F,vn,xn,yt=_(()=>{"use strict";B();F={path:["report","config","guide"],description:"\u8F93\u51FA\u62A5\u8868\u7814\u53D1\u81EA\u5305\u542B\u624B\u518C\uFF08\u7ED9 AI agent \u7528\uFF0C\u542B\u5DE5\u4F5C\u6D41/\u914D\u7F6E\u7ED3\u6784/\u53C2\u6570\u8BF4\u660E/\u793A\u4F8B\uFF0C\u514D\u767B\u5F55\uFF09",args:{}},vn=`\u62A5\u8868\u7814\u53D1\u624B\u518C\uFF08report config\uFF09
34
+ \u76EE\u6807: \u7528 yybpc-cli report config \u7CFB\u5217\u547D\u4EE4\u4ECE\u96F6\u7814\u53D1\u4E1A\u52A1\u81EA\u5B9A\u4E49\u62A5\u8868\u3002categoryCode \u9501\u5B9A business_custom\u3002
35
+ \u9002\u7528\u8303\u56F4: \u81EA\u52A9\u5F00\u53D1\u5E38\u89C1\u62A5\u8868\uFF08\u805A\u5408\u7EDF\u8BA1 / \u6761\u4EF6\u8FC7\u6EE4 / \u5206\u7EC4\u6392\u884C / \u8D8B\u52BF / \u6811\u5F62\u4E0B\u94BB\uFF09\u3002
36
+ \u590D\u6742\u62A5\u8868\u5EFA\u8BAE\u5148 yybpc-cli report config get <\u73B0\u6709\u62A5\u8868ID> \u62F7\u8D1D\u73B0\u6709\u914D\u7F6E\u518D\u6539\u3002
37
+
38
+ \u7814\u53D1\u5DE5\u4F5C\u6D41\uFF085 \u6B65\uFF09
39
+ 1. \u67E5\u53EF\u586B\u679A\u4E3E yybpc-cli report config dict
40
+ \u83B7\u53D6 dataSource / resultFunction / reportType / connectionType \u7684\u5408\u6CD5\u53D6\u503C
41
+ 2. \u53C2\u8003\u73B0\u6709\u62A5\u8868 yybpc-cli report config get --report-id <\u73B0\u6709\u62A5\u8868ID>
42
+ \u62F7\u8D1D\u73B0\u6709\u62A5\u8868\u5B8C\u6574\u914D\u7F6E\u4F5C\u4E3A\u6A21\u677F\u3002\u63A8\u8350\u53C2\u8003: store_opening_count\uFF08multi+\u53C2\u6570\uFF09\u3001gj_store_business_2\uFF08tree_code\uFF09
43
+ \u6CE8\u610F: get \u8FD4\u56DE\u7684 items \u662F\u670D\u52A1\u5668\u5C55\u793A\u683C\u5F0F\uFF08params \u53EF\u80FD\u4E3A null\u3001\u5B57\u6BB5\u987A\u5E8F\u4E0D\u540C\uFF09\uFF0C
44
+ \u4E0D\u8981\u539F\u6837 POST\uFF1B\u4EE5\u672C\u624B\u518C\u4E0B\u65B9\u793A\u4F8B\u7684\u6241\u5E73 config-json \u683C\u5F0F\u4E3A\u51C6
45
+ 3. \u65B0\u5EFA\u62A5\u8868 yybpc-cli report config create --config-json '{...}'
46
+ \u63D0\u4EA4\u914D\u7F6E JSON \u521B\u5EFA\u62A5\u8868\uFF1BcategoryCode \u4F1A\u88AB\u5F3A\u5236\u8BBE\u4E3A business_custom
47
+ 4. \u9A8C\u8BC1\u51FA\u6570 yybpc-cli report query --report-id <\u65B0\u62A5\u8868ID> --start-date YYYY-MM-DD --end-date YYYY-MM-DD
48
+ \u6267\u884C\u62A5\u8868\u786E\u8BA4\u80FD\u8DD1\u51FA\u6570\u636E\uFF1B\u62A5\u9519\u5219\u7528 yybpc-cli report config update --config-json '{...}' \u4FEE\u6B63\u540E\u91CD\u8BD5
49
+ 5. \u4E0A\u7EBF yybpc-cli report config enable --report-id <\u65B0\u62A5\u8868ID>
50
+ \u542F\u7528\u62A5\u8868\uFF1B\u505C\u7528\u7528 yybpc-cli report config disable --report-id <\u65B0\u62A5\u8868ID>
51
+
52
+ config-json \u9876\u5C42\u7ED3\u6784
53
+ reportId string\uFF08\u5FC5\u586B\uFF09\u62A5\u8868\u552F\u4E00\u6807\u8BC6\uFF0C\u5982 my_store_report\u3002\u5DF2\u5B58\u5728\u5219\u7528 update\uFF0C\u4E0D\u5B58\u5728\u5219\u7528 create
54
+ reportName string\uFF08\u5FC5\u586B\uFF09\u62A5\u8868\u663E\u793A\u540D
55
+ reportType string\uFF08\u5FC5\u586B\uFF09single \u6216 multi\uFF0C\u89C1\u4E0B
56
+ categoryCode \u7531 CLI \u5F3A\u5236\u6CE8\u5165 business_custom\uFF0C\u65E0\u9700\u586B\uFF1B\u4F20\u5176\u4ED6\u503C\u4F1A\u88AB\u62D2\u7EDD\uFF08INVALID_CATEGORY\uFF09
57
+ items array\uFF08\u5FC5\u586B\uFF09\u67E5\u8BE2\u5355\u5143\u6570\u7EC4\uFF0C\u89C1\u4E0B
58
+
59
+ reportType\uFF08\u62A5\u8868\u7C7B\u578B\uFF09\u4E0E items \u7684\u5173\u7CFB
60
+ single \u5355\u7EC4\u62A5\u8868\u3002items \u53EF\u4EE5\u662F\u4E00\u4E2A\uFF08\u8F93\u51FA\u8BE5 item \u7684\u7ED3\u679C\uFF09\uFF0C\u4E5F\u53EF\u4EE5\u591A\u4E2A
61
+ multi \u591A\u7EC4\u62A5\u8868\u3002items \u591A\u4E2A\uFF0C\u6BCF\u4E2A item \u72EC\u7ACB SQL + resultFunction\uFF0C\u8F93\u51FA\u591A\u4E2A\u5E76\u5217\u533A\u5757
62
+ \u8BF4\u660E: \u8F93\u51FA\u4E3A { groupKey: { itemKey, itemName, data } } \u7684\u7ED3\u6784\u3002
63
+ \u591A\u4E2A item \u65F6\uFF0C\u6BCF\u4E2A item \u5FC5\u987B\u5E26 groupKey\uFF08\u8F93\u51FA\u533A\u5757\u7684\u952E\uFF09+ groupName\uFF08\u533A\u5757\u663E\u793A\u540D\uFF09\uFF1B
64
+ \u5355\u4E2A item \u4E14\u65E0\u9700\u547D\u540D\u533A\u5757\u65F6\u53EF\u7701\u7565 groupKey/groupName\u3002
65
+
66
+ item\uFF08\u67E5\u8BE2\u5355\u5143\uFF09\u5B57\u6BB5
67
+ dataSource string\uFF08\u5FC5\u586B\uFF09\u6570\u636E\u6E90\u3002\u5F53\u524D\u53EF\u7528\u53D6\u503C\uFF08\u5B9E\u65F6\uFF09:
68
+ __DATASOURCES__
69
+ executeSql string\uFF08\u5FC5\u586B\uFF09SQL \u8BED\u53E5\u3002\u7528 #{paramKey} \u5360\u4F4D\u53C2\u6570\uFF08\u8FD0\u884C\u65F6\u7531 params \u66FF\u6362\uFF09
70
+ resultFunction string\uFF08\u5FC5\u586B\uFF09\u7ED3\u679C\u51FD\u6570\uFF0C\u51B3\u5B9A SQL \u7ED3\u679C\u5982\u4F55\u7EC4\u7EC7\uFF0C\u89C1\u4E0B
71
+ params array\uFF08\u5FC5\u586B\uFF0C\u4E0D\u53EF\u7701\u7565\uFF09\u53C2\u6570\u5B9A\u4E49\u6570\u7EC4\uFF0C\u89C1\u4E0B\u3002\u65E0\u53C2\u6570\u586B []
72
+ groupKey string\uFF08multi \u591A item \u65F6\u5FC5\u586B\uFF09\u8BE5 item \u8F93\u51FA\u533A\u5757\u7684\u952E\u540D\uFF0C\u5982 summary\u3001trend
73
+ groupName string\uFF08multi \u591A item \u65F6\u5FC5\u586B\uFF09\u8BE5\u533A\u5757\u7684\u4E2D\u6587\u663E\u793A\u540D\uFF0C\u5982 \u6C47\u603B\u3001\u8D8B\u52BF
74
+
75
+ resultFunction\uFF08\u7ED3\u679C\u51FD\u6570\uFF09\u2014\u2014 \u51B3\u5B9A SQL \u8F93\u51FA\u5217\u7684\u7EC4\u7EC7\u65B9\u5F0F
76
+ none \u539F\u6837\u8FD4\u56DE\u591A\u884C\u884C\u96C6\uFF08\u8868\u683C\uFF09\u3002SQL \u8F93\u51FA\u591A\u884C\u591A\u5217\u5373\u53EF\u3002\u6700\u5E38\u7528\u3001\u6700\u7B80\u5355
77
+ \u8F93\u51FA data \u5F62\u6001: {columns:[...], rows:[[...]]}
78
+ single_line \u53D6\u7B2C\u4E00\u884C\u8FD4\u56DE\u4E3A\u5BF9\u8C61\u3002SQL \u5E94\u53EA\u4EA7\u51FA\u4E00\u884C\uFF08\u5982\u805A\u5408 count/sum\uFF09\u3002\u591A\u5217 \u2192 \u5BF9\u8C61\u591A\u5B57\u6BB5
79
+ \u8F93\u51FA data \u5F62\u6001: {\u5B57\u6BB5\u540D: \u503C, ...}
80
+ group_single \u6309\u5206\u7EC4\u952E\u805A\u5408\uFF0C\u6BCF\u7EC4\u8FD4\u56DE\u5355\u884C\u3002SQL \u7B2C\u4E00\u5217\u4F5C\u4E3A\u5206\u7EC4 key\uFF0C\u5176\u4F59\u5217\u4E3A\u8BE5\u7EC4\u7684\u503C
81
+ group_multi \u6309\u5206\u7EC4\u952E\u805A\u5408\uFF0C\u6BCF\u7EC4\u8FD4\u56DE\u591A\u884C\u3002SQL \u7B2C\u4E00\u5217\u4F5C\u4E3A\u5206\u7EC4 key\uFF0C\u540C key \u7684\u591A\u884C\u5F52\u4E3A\u4E00\u7EC4
82
+ tree_code \u6784\u5EFA\u6811\u5F62\u7ED3\u6784\u3002SQL \u5FC5\u987B\u8F93\u51FA tree_code \u548C tree_name \u4E24\u5217\uFF1A
83
+ tree_code \u662F\u5C42\u7EA7\u8DEF\u5F84\uFF0C\u7528 - \u5206\u9694\uFF08\u5982 \u5E97\u5185-\u7F8E\u56E2\u5916\u5356 \u8868\u793A"\u7F8E\u56E2\u5916\u5356"\u662F"\u5E97\u5185"\u7684\u5B50\u8282\u70B9\uFF09
84
+ tree_name \u662F\u8282\u70B9\u663E\u793A\u540D\u3002\u540E\u7AEF\u636E tree_code \u7684\u5C42\u7EA7\u81EA\u52A8\u62FC\u6210\u6811
85
+ \u5E38\u914D\u5957\u8F93\u51FA value\u3001label \u5217\u4F9B\u524D\u7AEF\u4F7F\u7528
86
+ \u9009\u578B\u5EFA\u8BAE: \u5355\u4E2A\u6807\u91CF/\u6C47\u603B\u7528 single_line\uFF1B\u660E\u7EC6\u8868\u683C\u7528 none\uFF1B\u9700\u8981\u5206\u7EC4\u805A\u5408\u7528 group_*\uFF1B\u5C42\u7EA7\u4E0B\u94BB\u7528 tree_code
87
+ multi \u62A5\u8868\u91CC\u6BCF\u4E2A item \u5404\u81EA\u9009 resultFunction\uFF0C\u4E92\u4E0D\u5F71\u54CD\uFF08\u5982\u6C47\u603B\u533A\u5757\u7528 single_line\u3001\u660E\u7EC6\u533A\u5757\u7528 none\uFF09
88
+
89
+ SQL \u7F16\u5199\u8981\u70B9
90
+ - \u5217\u522B\u540D\u5373\u8F93\u51FA\u5B57\u6BB5\u540D: select count(*) as \u95E8\u5E97\u6570 \u2192 \u8F93\u51FA\u5B57\u6BB5\u5C31\u662F"\u95E8\u5E97\u6570"\uFF08\u652F\u6301\u4E2D\u6587\u522B\u540D\uFF09
91
+ - \u53C2\u6570\u5360\u4F4D\u7528 #{paramKey}\uFF0C\u8FD0\u884C\u65F6\u66FF\u6362\u3002\u65E0\u53C2\u6570\u7684\u7EAF SQL \u76F4\u63A5\u5199\u6B7B\u6761\u4EF6\u5373\u53EF
92
+ - \u6570\u636E\u6709\u6548\u6027\u901A\u5E38\u52A0 data_state=1 \u8FC7\u6EE4\uFF08\u8F6F\u5220\u9664\u6807\u8BB0\uFF09
93
+ - \u5404\u6570\u636E\u6E90\u662F\u4E0D\u540C\u7684\u5E93/\u5F15\u64CE\uFF08StarRocks/PostgreSQL \u7B49\uFF09\uFF0CSQL \u65B9\u8A00\u4EE5\u76EE\u6807\u6570\u636E\u6E90\u4E3A\u51C6
94
+
95
+ params\uFF08\u53C2\u6570\u673A\u5236\uFF09
96
+ \u6BCF\u4E2A\u53C2\u6570\u5F62\u5982 {paramKey, connectionType, value, fieldKey?, valueKey?}
97
+ paramKey \u53C2\u6570\u540D\u3002SQL \u91CC\u5199 #{paramKey} \u5F15\u7528\u6B64\u53C2\u6570\u7684\u5904\u7406\u7ED3\u679C
98
+ connectionType \u8FDE\u63A5\u7C7B\u578B\uFF0C\u51B3\u5B9A\u53C2\u6570\u5982\u4F55\u8F6C\u6210 SQL \u7247\u6BB5\uFF0C\u89C1\u4E0B
99
+ value \u53D6\u503C/\u8868\u8FBE\u5F0F\uFF0C\u542B\u4E49\u968F connectionType \u53D8\u5316
100
+ fieldKey \u4F5C\u7528\u7684\u6570\u636E\u5E93\u5217\u540D\uFF08in / function \u7C7B\u578B\u9700\u8981\uFF09
101
+ valueKey \u5165\u53C2\u5BF9\u8C61\u91CC\u53D6\u503C\u7684\u5B57\u6BB5\u540D\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u590D\u6742\u5165\u53C2\u89E3\u6784\uFF09
102
+ SQL \u4E2D\u7528 #{paramKey} \u5F15\u7528\u53C2\u6570\u7ED3\u679C\uFF1Bjexl \u8868\u8FBE\u5F0F\u4E2D\u7528 \${paramKey} \u5F15\u7528\u5176\u4ED6\u53C2\u6570\u503C
103
+ connectionType \u53D6\u503C\uFF08\u771F\u5B9E\u6837\u4F8B\uFF09:
104
+ jexl \u8868\u8FBE\u5F0F\u6C42\u503C\uFF08\u6761\u4EF6\u5224\u65AD/\u9ED8\u8BA4\u503C/\u8BA1\u7B97\uFF09
105
+ {"paramKey":"startDate","connectionType":"jexl","value":"\${startDate} != null and \${startDate}.length() >0 ? \${startDate} : \${T1}"}
106
+ in \u591A\u503C\u5B57\u6BB5\u8FC7\u6EE4\uFF0C\u9700 fieldKey \u6307\u5B9A\u5217\u540D\uFF0C\u751F\u6210 "\u5217 in (...)"
107
+ {"paramKey":"storeList","fieldKey":"store_code","connectionType":"in","value":"in"}
108
+ SQL \u91CC\u5199: where 1=1 #{storeList} \uFF08\u672A\u4F20\u503C\u65F6\u4E0D\u8FC7\u6EE4\uFF0C\u4F20\u503C\u5219\u751F\u6210 and store_code in (...)\uFF09
109
+ function SQL \u51FD\u6570/\u6761\u4EF6\u7247\u6BB5\uFF0C\u9700 fieldKey\uFF1Bvalue \u91CC #{} \u662F\u53C2\u6570\u503C\u5360\u4F4D
110
+ {"paramKey":"startMonth","fieldKey":"opening_date","connectionType":"function","value":">= TO_DATE(#{}, 'YYYY-MM')"}
111
+ SQL \u91CC\u5199: where #{startMonth} \u2192 \u751F\u6210 opening_date >= TO_DATE('2026-03', 'YYYY-MM')
112
+ data_auth \u6570\u636E\u6743\u9650\u8FC7\u6EE4\u3002\u540E\u7AEF\u6309\u3010\u5F53\u524D\u767B\u5F55\u7528\u6237\u3011\u7684 RBAC \u6570\u636E\u6743\u9650\u81EA\u52A8\u751F\u6210 SQL \u6761\u4EF6\uFF0C
113
+ \u6CE8\u5165\u5230 #{paramKey} \u5360\u4F4D\uFF08\u5F62\u5982 1 = 1 and (\u5B57\u6BB5 in (\u7528\u6237\u53EF\u89C1\u8303\u56F4...))\uFF09\uFF1B
114
+ \u8303\u56F4\u53EA\u53D6\u51B3\u4E8E\u767B\u5F55\u7528\u6237\uFF0C\u8C03\u7528\u65B9\u65E0\u9700\u4E5F\u65E0\u6CD5\u7528 query \u5165\u53C2\u63A7\u5236\u3002
115
+ value \u662F JSON \u5B57\u7B26\u4E32\uFF08\u5BF9\u5E94\u540E\u7AEF AuthFilterConfig\uFF09\uFF0C\u5E38\u7528\u5B57\u6BB5\uFF1A
116
+ appCode \u5FC5\u586B\uFF0C\u5E94\u7528\u7F16\u7801\uFF08\u7237\u63A7\u586B yk\uFF09
117
+ templateCode \u5FC5\u586B\uFF0C\u6570\u636E\u6743\u9650\u6A21\u677F\u7F16\u7801\uFF1A\u95E8\u5E97\u7EF4\u5EA6\u7528 yk_common_store_temp\u3001\u533A\u57DF\u7EF4\u5EA6\u7528 yk_common_region_temp
118
+ skipIfNoConfig \u8BE5\u7528\u6237\u65E0\u6B64\u6A21\u677F\u6743\u9650\u65F6 true=\u653E\u884C(1=1)/false=\u62E6\u6B7B(1=0)\uFF1B\u7EBF\u4E0A\u5B9E\u914D\u591A\u4E3A true
119
+ missingEnableSpecialValue \u9ED8\u8BA4 true\uFF0C\u53EF\u89C1\u8303\u56F4\u4E3A\u7A7A\u65F6\u7528\u5360\u4F4D\u907F\u514D SQL \u62A5\u9519\uFF08\u8FD4\u56DE\u7A7A\u6570\u636E\u800C\u975E\u5D29\uFF09
120
+ \uFF08joinSql/includeTable/excludeTable \u4E3A\u5B50\u8868\u9274\u6743\u7B49\u9AD8\u7EA7\u7528\u6CD5\uFF0C\u4E00\u822C\u7559\u7A7A\uFF09
121
+ \u771F\u5B9E\u6837\u4F8B\uFF08\u53EF\u76F4\u63A5\u6284\uFF1Bvalue \u662F\u8F6C\u4E49\u540E\u7684 JSON \u5B57\u7B26\u4E32\uFF09\uFF1A
122
+ \u95E8\u5E97 {"paramKey":"storeDataAuth","connectionType":"data_auth","value":"{\\"appCode\\":\\"yk\\",\\"skipIfNoConfig\\":true,\\"missingEnableSpecialValue\\":true,\\"templateCode\\":\\"yk_common_store_temp\\"}"}
123
+ \u533A\u57DF {"paramKey":"reginDataAuth","connectionType":"data_auth","value":"{\\"appCode\\":\\"yk\\",\\"skipIfNoConfig\\":true,\\"missingEnableSpecialValue\\":true,\\"templateCode\\":\\"yk_common_region_temp\\"}"}
124
+ SQL \u5199\u6CD5\uFF08\u4E0E\u7528\u6237\u7B5B\u9009\u53C2\u6570\u914D\u5BF9\u53E0\u52A0\uFF1Adata_auth \u7BA1"\u80FD\u770B\u54EA\u4E9B"\u3001List \u7BA1"\u60F3\u7B5B\u54EA\u4E9B"\uFF09\uFF1A
125
+ \u95E8\u5E97\u7C7B where 1=1 and #{storeDataAuth} and #{storeList}
126
+ \u533A\u57DF\u7C7B where 1=1 and #{regionList} and #{reginDataAuth}
127
+ templateCode \u662F rbac \u8FD0\u884C\u65F6\u6570\u636E\u3001dict \u67E5\u4E0D\u5230\uFF1B\u6700\u7A33\u59A5\u662F yybpc-cli report config get <\u73B0\u6709\u62A5\u8868ID> \u6284\u8FC7\u6765\u3002
128
+ \u6CE8\u610F\uFF1Avalue \u5199\u9519\u4E0D\u4F1A\u5728 create \u65F6\u62A5\u9519\uFF0C\u8981\u5230 report query \u624D\u66B4\u9732\u3002
129
+ direct_value \u76F4\u63A5\u53D6\u503C\uFF08\u5C11\u7528\uFF09
130
+ nomal \u666E\u901A\u66FF\u6362\uFF08\u5C11\u7528\uFF09
131
+ sql \u76F4\u63A5\u62FC SQL \u7247\u6BB5\uFF08\u5C11\u7528\uFF0C\u6CE8\u610F\u6CE8\u5165\u98CE\u9669\uFF09
132
+
133
+ query \u65F6\u7528\u6237\u53C2\u6570\u5982\u4F55\u5BF9\u63A5 config params
134
+ yybpc-cli report query \u7684\u5165\u53C2\uFF08--start-date/--end-date/--param-json \u91CC\u7684\u952E\uFF09\u4F1A\u4F5C\u4E3A jexl \u7684 \${\u5165\u53C2\u540D} \u6CE8\u5165\u3002
135
+ config \u91CC\u901A\u5E38\u8FD9\u6837\u6D88\u8D39: \u7528 jexl \u53C2\u6570\u628A\u7528\u6237\u5165\u53C2\u89C4\u6574\u6210 startDate/endDate\uFF0C
136
+ \u518D\u5728 SQL \u7528 #{startDate} \u5F15\u7528\u3002\u7528\u6237\u4E0D\u4F20\u65F6\u7528\u5185\u7F6E\u53D8\u91CF\uFF08\u5982 \${T1}\uFF09\u515C\u5E95\u3002
137
+ \u6267\u884C yybpc-cli report list --report-id <\u62A5\u8868ID> \u53EF\u67E5\u770B\u4E00\u4E2A\u62A5\u8868\u58F0\u660E\u4E86\u54EA\u4E9B\u7528\u6237\u53EF\u4F20\u53C2\u6570\u3002
138
+
139
+ \u5185\u7F6E\u53D8\u91CF\uFF08jexl value \u4E2D\u7528 \${\u53D8\u91CF\u540D} \u5F15\u7528\uFF0C\u4F5C\u65E5\u671F\u515C\u5E95\uFF09
140
+ \${T1} \u9ED8\u8BA4\u65E5\u671F\u951A\u70B9\uFF08\u67E5\u8BE2\u672A\u4F20\u65E5\u671F\u65F6\u7684\u515C\u5E95\u5F53\u65E5/\u9ED8\u8BA4\u503C\uFF09
141
+ \${T1_MONTH_START} \u6708\u521D\u951A\u70B9
142
+ \${T2} \u73AF\u6BD4\u671F\u65E5\u671F\u951A\u70B9
143
+
144
+ \u514D query \u5165\u53C2\u7684\u53C2\u6570\uFF08\u65E0\u9700\u8C03\u7528\u65B9\u4F20\uFF0C\u7531\u62A5\u8868\u914D\u7F6E + \u540E\u7AEF\u8FD0\u884C\u65F6\u51B3\u5B9A\uFF09
145
+ storeDataAuth / reginDataAuth \u6570\u636E\u6743\u9650\u5360\u4F4D\u3002\u672C\u8D28\u662F\u914D\u7F6E\u91CC connectionType=data_auth \u7684\u53C2\u6570
146
+ \uFF08paramKey \u662F\u547D\u540D\u7EA6\u5B9A\u3001\u975E\u56FA\u5B9A\u5173\u952E\u5B57\uFF09\uFF0C\u540E\u7AEF\u6309\u767B\u5F55\u7528\u6237 RBAC \u6743\u9650\u7B97\u51FA\u95E8\u5E97/\u533A\u57DF\u8303\u56F4\uFF1B\u586B\u4E86\u5165\u53C2\u4E5F\u65E0\u6548\u3002
147
+ \u6CE8\uFF1AreginDataAuth \u6CBF\u7528\u5386\u53F2\u62FC\u5199(regin)\uFF0C\u540E\u7AEF\u5BF9\u5E94\u6982\u5FF5\u662F region
148
+ determinePeriod / hundredMillion / tenThousand \u5176\u5B9E\u662F jexl \u7C7B\u578B\u7684\u5185\u7F6E\u53C2\u6570\uFF08\u5728 params \u91CC\u663E\u5F0F\u58F0\u660E\u3001
149
+ \u7528 \${T1} \u7B49\u5185\u7F6E\u53D8\u91CF\u515C\u5E95\uFF09\uFF0C\u4E0D\u662F\u540E\u7AEF\u51ED\u7A7A\u6CE8\u5165\uFF1B\u67D0\u62A5\u8868\u58F0\u660E\u4E86\u54EA\u4E9B\uFF0Cyybpc-cli report config get \u770B params
150
+
151
+ \u7EA6\u675F
152
+ categoryCode \u53EA\u80FD\u662F business_custom\uFF0CCLI \u5F3A\u5236\u6CE8\u5165\uFF1B\u4F20\u5176\u4ED6\u5206\u7C7B\u62A5 INVALID_CATEGORY
153
+ \u5199\u64CD\u4F5C\uFF08create/update/enable/disable\uFF09\u4E0D\u9700\u8981\u4EA4\u4E92\u786E\u8BA4\uFF0C\u8BF7\u8C28\u614E
154
+ SQL \u7684\u5408\u6CD5\u6027\u3001\u6743\u9650\u7531\u540E\u7AEF\u5224\u5B9A\uFF0CCLI \u53EA\u505A\u900F\u4F20
155
+ \u540E\u7AEF\u65E0\u5220\u9664\u63A5\u53E3\uFF1B\u4E0D\u518D\u9700\u8981\u7684\u62A5\u8868\u7528 disable \u505C\u7528
156
+ create/update \u6210\u529F\u540E\u672C\u5730\u62A5\u8868\u7F13\u5B58\u81EA\u52A8\u5931\u6548\uFF0C\u4E0B\u6B21 query/list \u91CD\u65B0\u62C9\u53D6
157
+
158
+ \u793A\u4F8B\uFF08configJson \u53EF\u76F4\u63A5\u7C98\u8D34\u5230 --config-json\uFF0C\u5355\u884C JSON\uFF09
159
+ \u793A\u4F8B 1 \u2014 \u6700\u7B80: \u7EAF SQL \u65E0\u53C2\u6570\uFF0C\u5355\u503C\u7EDF\u8BA1\uFF08single + single_line\uFF09
160
+ {"reportId":"demo_store_count","reportName":"\u95E8\u5E97\u603B\u6570","reportType":"single","items":[{"dataSource":"baseInfoDS","executeSql":"select count(*) as cnt from store where data_state=1","resultFunction":"single_line","params":[]}]}
161
+
162
+ \u793A\u4F8B 2 \u2014 \u5206\u7EC4\u660E\u7EC6\uFF0C\u65E0\u53C2\u6570\uFF08single + none\uFF09
163
+ {"reportId":"demo_status_dist","reportName":"\u95E8\u5E97\u72B6\u6001\u5206\u5E03","reportType":"single","items":[{"dataSource":"baseInfoDS","executeSql":"select business_status, count(*) as cnt from store where data_state=1 group by business_status order by cnt desc","resultFunction":"none","params":[]}]}
164
+
165
+ \u793A\u4F8B 3 \u2014 \u5E26\u7528\u6237\u53C2\u6570: \u65E5\u671F\u8303\u56F4\u8FC7\u6EE4\uFF08function \u53C2\u6570 + #{} \u5360\u4F4D\uFF09
166
+ {"reportId":"demo_opening_trend","reportName":"\u5F00\u5E97\u8D8B\u52BF","reportType":"single","items":[{"dataSource":"baseInfoDS","executeSql":"select TO_CHAR(opening_date,'yyyy-MM') as x, count(*) as y from store where opening_date is not null and data_state=1 and #{startMonth} and #{endMonth} group by TO_CHAR(opening_date,'yyyy-MM') order by x","resultFunction":"none","params":[{"paramKey":"startMonth","fieldKey":"opening_date","connectionType":"function","value":">= TO_DATE(#{}, 'YYYY-MM')"},{"paramKey":"endMonth","fieldKey":"opening_date","connectionType":"function","value":"< TO_DATE(#{}, 'YYYY-MM')+INTERVAL '1 month'"}]}]}
167
+
168
+ \u793A\u4F8B 4 \u2014 \u591A\u7EC4\u6307\u6807: multi \u591A item\uFF08\u6BCF item \u5E26 groupKey/groupName\uFF09
169
+ {"reportId":"demo_multi","reportName":"\u95E8\u5E97\u591A\u7EF4\u6982\u89C8","reportType":"multi","items":[{"groupKey":"summary","groupName":"\u6C47\u603B","dataSource":"baseInfoDS","executeSql":"select count(*) as \u95E8\u5E97\u603B\u6570 from store where data_state=1","resultFunction":"single_line","params":[]},{"groupKey":"status_dist","groupName":"\u72B6\u6001\u5206\u5E03","dataSource":"baseInfoDS","executeSql":"select business_status as x, count(*) as y from store where data_state=1 group by business_status","resultFunction":"none","params":[]}]}
170
+
171
+ \u793A\u4F8B 5 \u2014 \u6570\u636E\u6743\u9650\u8FC7\u6EE4: \u95E8\u5E97\u660E\u7EC6\u6309\u767B\u5F55\u7528\u6237\u53EF\u89C1\u8303\u56F4\u81EA\u52A8\u8FC7\u6EE4\uFF08data_auth \u4E0E storeList \u914D\u5BF9\u53E0\u52A0\uFF09
172
+ {"reportId":"demo_store_scoped","reportName":"\u6211\u7684\u95E8\u5E97\u660E\u7EC6","reportType":"single","items":[{"dataSource":"baseInfoDS","executeSql":"select store_code, store_name from store where data_state=1 and #{storeDataAuth}","resultFunction":"none","params":[{"paramKey":"storeDataAuth","connectionType":"data_auth","value":"{\\"appCode\\":\\"yk\\",\\"skipIfNoConfig\\":true,\\"missingEnableSpecialValue\\":true,\\"templateCode\\":\\"yk_common_store_temp\\"}"}]}]}
173
+ \u8981\u70B9: #{storeDataAuth} \u88AB\u540E\u7AEF\u66FF\u6362\u6210 1 = 1 and (store_code in (\u5F53\u524D\u7528\u6237\u8D1F\u8D23\u95E8\u5E97...))\uFF1BtemplateCode \u7528 rbac \u5DF2\u5B58\u5728\u6A21\u677F\uFF08\u95E8\u5E97 yk_common_store_temp / \u533A\u57DF yk_common_region_temp\uFF09\uFF0C\u52FF\u81C6\u9020
174
+ `,xn=" \uFF08\u672A\u80FD\u5B9E\u65F6\u83B7\u53D6\uFF0C\u8BF7\u8FD0\u884C yybpc-cli report config dict \u67E5\u770B\u53EF\u7528\u6570\u636E\u6E90\uFF09"});var T=_(()=>{"use strict"});var ue={};j(ue,{buildReportQueryBody:()=>mr,default:()=>ce,normalizeReportQueryArgs:()=>ae,parseParamJson:()=>se,runReportQuery:()=>hr});function Ct(r,...t){for(let e of t){let n=r[e];if(n==null)continue;let o=String(n).trim();if(o)return o}}function ie(r){let t=r.trim();if(t.startsWith("["))try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(n=>String(n))}catch{}return t.includes(",")?t.split(",").map(e=>e.trim()).filter(Boolean):t}function se(r){if(!r)return{};try{let t=JSON.parse(r);if(!t||typeof t!="object"||Array.isArray(t))throw new Error("not an object");return t}catch{throw new h("INPUT_ERROR","INVALID_PARAM_JSON",'--param-json \u5FC5\u987B\u662F JSON \u5BF9\u8C61\uFF0C\u4F8B\u5982 {"regionList":["3301"]}')}}function ae(r){let t=se(r.params),e=se(r.paramJson??r["param-json"]),n={...t,...e},o=Ct(r,"date"),i=Ct(r,"reportId","report-id","report")??(typeof n.reportId=="string"?n.reportId:void 0),s=Ct(r,"startDate","start-date")??(typeof n.startDate=="string"?n.startDate:void 0)??o,a=Ct(r,"endDate","end-date")??(typeof n.endDate=="string"?n.endDate:void 0)??o;return delete n.reportId,delete n.startDate,delete n.endDate,{reportId:i,startDate:s,endDate:a,extraParams:n,passthroughArgs:r}}function dr(r){if(!r.reportId)throw new h("INPUT_ERROR","MISSING_REPORT_ID","\u5FC5\u987B\u63D0\u4F9B\u62A5\u8868ID\uFF1B\u5148\u6267\u884C yybpc-cli report list \u67E5\u770B\u53EF\u7528\u62A5\u8868\uFF0C\u518D\u4F7F\u7528 --report-id");if(!r.startDate||!r.endDate)throw new h("INPUT_ERROR","MISSING_DATE_RANGE","\u5FC5\u987B\u63D0\u4F9B\u67E5\u8BE2\u65E5\u671F\uFF1B\u4F7F\u7528 --date YYYY-MM-DD\uFF0C\u6216\u540C\u65F6\u63D0\u4F9B --start-date \u548C --end-date")}function lr(r,t,e){if(e==="reportId")throw new h("INPUT_ERROR","INVALID_REPORT_PARAM","--param-json \u4E0D\u80FD\u5305\u542B reportId");if(!r.params.includes(e))throw new h("INPUT_ERROR","UNSUPPORTED_REPORT_PARAM",`\u62A5\u8868 ${t} \u4E0D\u652F\u6301\u53C2\u6570 ${e}\uFF1B\u53EF\u7528\u53C2\u6570: ${r.params.join(", ")}`)}function mr(r,t){let e=ae(t);dr(e);let n=e.reportId,o={reportId:n,startDate:e.startDate,endDate:e.endDate},i={...e.extraParams};for(let a of Object.keys(i))lr(r,n,a);Object.assign(o,i);let s={region:{apiParam:"regionList",parse:ie},storeId:{apiParam:"storeList",parse:ie},channel:{apiParam:"channelList",parse:ie},orderField:{apiParam:"orderField"},orderDir:{apiParam:"orderDir"}};for(let[a,c]of Object.entries(s)){let d=e.passthroughArgs[a];d==null||d===""||(lr(r,n,c.apiParam),o[c.apiParam]=c.parse?c.parse(String(d)):d)}return o}async function hr(r,t){let e=b(),n=ae(r);dr(n);let o=n.reportId,{token:i}=await D({asPhone:e.asPhone,env:e.env}),s=await mt(e.env,i),a=Ue(s,o);if(!a)throw new h("INPUT_ERROR","INVALID_REPORT_ID",`\u672A\u77E5\u7684\u62A5\u8868ID: ${o}\uFF1B\u5148\u6267\u884C yybpc-cli report list \u67E5\u627E\u53EF\u7528\u62A5\u8868`);let c=mr(a,r);return t({service:"report",method:"POST",path:"/report/query/single",body:c})}var ce,Ot=_(()=>{"use strict";T();N();lt();x();R();ce={meta:{description:"\u67E5\u8BE2\u62A5\u8868\u5206\u6790\u6570\u636E\uFF1B\u6240\u6709\u5206\u6790\u7C7B\u67E5\u8BE2\u4F18\u5148\u4F7F\u7528 report"},args:{"report-id":{type:"string",required:!0,description:"\u62A5\u8868ID\uFF08\u5982 gj_target_achievement_3\uFF09"},date:{type:"string",description:"\u5355\u65E5\u5FEB\u6377\u5199\u6CD5 (YYYY-MM-DD)\uFF1B\u4F1A\u540C\u65F6\u4F5C\u4E3A\u5F00\u59CB\u548C\u7ED3\u675F\u65E5\u671F"},"start-date":{type:"string",description:"\u5F00\u59CB\u65E5\u671F (YYYY-MM-DD)"},"end-date":{type:"string",description:"\u7ED3\u675F\u65E5\u671F (YYYY-MM-DD)"},region:{type:"string",description:"\u6218\u533AID\uFF1B\u652F\u6301\u5355\u503C\u3001\u9017\u53F7\u5206\u9694\u6216 JSON \u6570\u7EC4"},"store-id":{type:"string",description:"\u95E8\u5E97ID\uFF1B\u652F\u6301\u5355\u503C\u3001\u9017\u53F7\u5206\u9694\u6216 JSON \u6570\u7EC4"},channel:{type:"string",description:"\u6E20\u9053\u7F16\u7801\uFF1B\u652F\u6301\u5355\u503C\u3001\u9017\u53F7\u5206\u9694\u6216 JSON \u6570\u7EC4"},"order-field":{type:"string",description:"\u6392\u5E8F\u5B57\u6BB5"},"order-dir":{type:"string",description:"\u6392\u5E8F\u65B9\u5411 (asc/desc)"},"param-json":{type:"string",description:'\u989D\u5916\u62A5\u8868\u53C2\u6570 JSON\uFF0C\u5982 {"brandList":["B01"]}'}},api:{service:"report",method:"POST",path:"/report/query/single"},run:async({args:r,request:t})=>hr(r,t)}});var Sr={};j(Sr,{runSetToken:()=>Wn});async function Wn(r){let t={accessToken:r,refreshToken:"",expiresAt:Date.now()+864e5,userId:"",username:"",loginAt:Date.now()};await ct(t),console.log(JSON.stringify({success:!0,data:{message:"Token \u5DF2\u4FDD\u5B58"}},null,2))}var Rr=_(()=>{"use strict";K()});var Tr={};j(Tr,{runLogout:()=>Jn});async function Jn(){await Ie(),console.log(JSON.stringify({success:!0,data:{message:"\u5DF2\u9000\u51FA\u767B\u5F55"}},null,2))}var Er=_(()=>{"use strict";K()});var vr={};j(vr,{runStatus:()=>Kn});async function Kn(){let r=await at();if(!r){console.log(JSON.stringify({success:!0,data:{loggedIn:!1,message:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u8BF7\u6267\u884C yybpc-cli auth set-token <token>"}},null,2));return}let t=ut(r),e=Ft(r);console.log(zt({success:!0,data:{loggedIn:t,userId:r.userId,username:r.username,expiresAt:new Date(r.expiresAt).toISOString(),needsRefresh:e,loginAt:new Date(r.loginAt).toISOString()},meta:{service:"auth",requestId:"-",duration:0}},"json"))}var xr=_(()=>{"use strict";K();Yt();Xt()});var Se=Mr(Ae(),1),{program:lo,createCommand:mo,createArgument:ho,createOption:fo,CommanderError:go,InvalidArgumentError:yo,InvalidOptionArgumentError:_o,Command:Re,Argument:Co,Option:Oo,Help:bo}=Se.default;x();Xt();ht();yt();var er={name:"@yybpc/cli",version:"1.0.0",description:"\u516C\u53F8\u5185\u90E8\u670D\u52A1\u7EDF\u4E00 CLI\uFF08\u62A5\u8868\u67E5\u8BE2 + \u4E2D\u53F0\u4E3B\u6863/\u4F9B\u5E94\u94FE/\u7528\u6237\u4E2D\u5FC3\uFF09",type:"module",bin:{"yybpc-cli":"dist/index.js"},files:["dist/index.js"],engines:{node:">=18"},scripts:{dev:"tsx src/index.ts",build:"tsup","build:sea":"bash scripts/build-sea.sh","build:sea:linux":"bash scripts/build-sea-linux.sh",typecheck:"tsc --noEmit",prepublishOnly:"tsup"},devDependencies:{"@types/node":"^22.10.0",commander:"^14.0.3",tsup:"^8.3.5",tsx:"^4.19.2",typescript:"^5.7.2"}};var z=er.version;var rr=[{...P,path:[...P.path]},{description:F.description,path:[...F.path]}],Pn=[{bullet:"`--env <dev|prod>` \u2014 \u76EE\u6807\u73AF\u5883\uFF08\u9ED8\u8BA4 prod\uFF09"},{bullet:"`--format <auto|json|raw>` \u2014 \u8F93\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 auto\uFF09\u3002auto=\u7D27\u51D1\u5217\u5F0F\uFF08\u5BF9\u8C61\u6570\u7EC4\u8F6C {columns,rows}\uFF0C\u7701 token\uFF0C\u9002\u5408 agent\uFF09\uFF1Bjson=\u5E26\u7F29\u8FDB\u7684\u5B8C\u6574\u4FE1\u5C01\uFF08\u9002\u5408\u4EBA\u8BFB\uFF09\uFF1Braw=\u540E\u7AEF\u539F\u6837\u6570\u636E\u3002\u6CE8\uFF1Areport config \u7CFB\u5217\u9ED8\u8BA4\u8F93\u51FA\u540E\u7AEF\u539F\u6837\u7ED3\u6784\uFF08\u4E0D\u538B {columns,rows}\uFF0C\u4FBF\u4E8E\u5B66\u4E60\u914D\u7F6E shape\uFF09\uFF0C\u9700\u7701 token \u53EF\u663E\u5F0F\u52A0 --compact"},{bullet:"`--compact` \u2014 \u7D27\u51D1\u5217\u5F0F\u8F93\u51FA\uFF08\u7B49\u540C\u9ED8\u8BA4 auto\uFF1A\u5BF9\u8C61\u6570\u7EC4\u8F6C {columns,rows}\uFF0C\u4E0D\u7F29\u8FDB\uFF09"},{bullet:"`--slim` \u2014 compact \u57FA\u7840\u4E0A\u518D\u79FB\u9664 null/\u7A7A\u503C"},{bullet:"`--agent` \u2014 slim \u57FA\u7840\u4E0A\u518D\u7F29\u77ED\u5B57\u6BB5\u540D\uFF08\u6700\u7701 token\uFF0C\u7ED9 LLM \u7528\uFF09"},{bullet:"`--verbose` \u2014 \u6253\u5370\u8C03\u8BD5\u4FE1\u606F\uFF08\u8BF7\u6C42 URL \u7B49\uFF0C\u8F93\u51FA\u5230 stderr\uFF09"},{bullet:"`--dry-run` \u2014 \u9884\u89C8\u5C06\u53D1\u51FA\u7684\u8BF7\u6C42\uFF08method/url/body\uFF09\uFF0C\u4E0D\u5B9E\u9645\u6267\u884C"},{bullet:"`--as-phone <phone>` \u2014 Agent \u6A21\u5F0F\uFF1A\u4EE3\u8868\u6307\u5B9A\u624B\u673A\u53F7\u7528\u6237\u8C03\u7528"}],In=[{flag:"--env",description:"\u76EE\u6807\u73AF\u5883\uFF08dev/prod\uFF09",default:"prod"},{flag:"--format",description:"\u8F93\u51FA\u683C\u5F0F\uFF1Aauto=\u7D27\u51D1\u5217\u5F0F({columns,rows},\u7701token)/json=\u5E26\u7F29\u8FDB\u5B8C\u6574\u4FE1\u5C01/raw=\u540E\u7AEF\u539F\u6837\u3002report config \u7CFB\u5217\u9ED8\u8BA4\u8F93\u51FA\u539F\u6837\u7ED3\u6784(\u4E0D\u538B\u7F29),\u7701 token \u53EF\u52A0 --compact",default:"auto"},{flag:"--compact",description:"\u7D27\u51D1\u5217\u5F0F\u8F93\u51FA\uFF08\u7B49\u540C\u9ED8\u8BA4 auto\uFF1A\u5BF9\u8C61\u6570\u7EC4\u8F6C {columns,rows}\uFF0C\u4E0D\u7F29\u8FDB\uFF09"},{flag:"--slim",description:"compact \u57FA\u7840\u4E0A\u518D\u79FB\u9664 null/\u7A7A\u503C"},{flag:"--agent",description:"slim \u57FA\u7840\u4E0A\u518D\u7F29\u77ED\u5B57\u6BB5\u540D\uFF08\u6700\u7701 token\uFF0C\u7ED9 LLM \u7528\uFF09"},{flag:"--verbose",description:"\u6253\u5370\u8C03\u8BD5\u4FE1\u606F\uFF08\u8F93\u51FA\u5230 stderr\uFF09"},{flag:"--dry-run",description:"\u9884\u89C8\u5C06\u53D1\u51FA\u7684\u8BF7\u6C42\uFF08method/url/body\uFF09\uFF0C\u4E0D\u5B9E\u9645\u6267\u884C"},{flag:"--as-phone",description:"Agent \u6A21\u5F0F\uFF1A\u4EE3\u8868\u6307\u5B9A\u624B\u673A\u53F7\u7528\u6237\u8C03\u7528"}],ir=["\u6240\u6709\u7ECF\u8425\u5206\u6790\u3001\u8D8B\u52BF\u5224\u65AD\u3001\u4E1A\u7EE9\u89E3\u8BFB\u7C7B\u9700\u6C42\uFF0C\u4F18\u5148\u4F7F\u7528 report","\u53EA\u6709 report \u67E5\u4E0D\u5230\u3001\u672A\u8986\u76D6\u6216\u5F53\u524D\u6CA1\u6709\u76F8\u5173\u62A5\u8868\u65F6\uFF0C\u624D\u5141\u8BB8\u4F7F\u7528\u5176\u4ED6\u6A21\u5757","\u6539\u7528 master-data / supply-chain / user-center \u65F6\uFF0C\u5FC5\u987B\u660E\u786E\u544A\u77E5\u7528\u6237\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F\uFF0C\u4E0D\u7B49\u540C\u4E8E\u7ECF\u8425\u5206\u6790\u62A5\u8868","master-data / supply-chain / user-center \u4E3B\u8981\u7528\u4E8E\u8865\u5145\u4E3B\u6863\u3001\u4F9B\u5E94\u94FE\u3001\u7EC4\u7EC7\u7B49\u57FA\u7840\u4FE1\u606F\uFF0C\u4E0D\u5E94\u9ED8\u8BA4\u66FF\u4EE3 report"],$n=ir.map((r,t)=>({priority:t+1,rule:r})),sr=["\u6700\u9AD8\u4F18\u5148\u7EA7\u547D\u4EE4: yybpc-cli report query","\u6240\u6709\u7ECF\u8425\u5206\u6790\u3001\u8D8B\u52BF\u5224\u65AD\u3001\u4E1A\u7EE9\u89E3\u8BFB\u7C7B\u9700\u6C42\uFF0C\u9ED8\u8BA4\u5148\u7528 yybpc-cli report query","\u5148\u6267\u884C yybpc-cli report list \u62C9\u53D6\u5168\u90E8\u62A5\u8868\uFF0C\u518D\u7528 yybpc-cli report list --report-id REPORT_ID \u67E5\u770B\u8BE6\u60C5","\u6807\u51C6\u8DEF\u5F84: \u5168\u91CF\u62A5\u8868 -> \u5355\u62A5\u8868\u8BE6\u60C5 -> \u6267\u884C\u67E5\u8BE2","\u793A\u4F8B: yybpc-cli report list\uFF0C\u7136\u540E\u6267\u884C yybpc-cli report query --report-id REPORT_ID --date 2026-04-22"],Nn=sr.map((r,t)=>({priority:t+1,hint:r})),nr=["report","master-data","supply-chain","user-center"];function jn(r,t){return r.join(" ").localeCompare(t.join(" "))}function or(r){if(r.path[0]==="report"){if(r.path[1]==="list")return 0;if(r.path[1]==="query")return 1}return 100}function re(r){return[...r].sort((t,e)=>{let n=nr.indexOf(t.path[0]),o=nr.indexOf(e.path[0]),i=n===-1?Number.MAX_SAFE_INTEGER:n,s=o===-1?Number.MAX_SAFE_INTEGER:o;if(i!==s)return i-s;let a=or(t),c=or(e);return a!==c?a-c:jn(t.path,e.path)})}function _t(r){let t=r.map(e=>({path:e.path,description:e.def.meta.description,args:e.def.args}));for(let e of rr)if(t.some(n=>n.path.length===e.path.length&&n.path.every((o,i)=>o===e.path[i])))throw new Error(`MANUAL_COMMANDS collides with apiCommands on path: ${e.path.join(" ")}`);return[...t,...rr]}function Ln(r){let t=re(_t(r)),e=[];e.push(`yybpc-cli ${z}`),e.push("\u9996\u9009\u5165\u53E3");for(let o of sr)e.push(` ${o}`);e.push(""),e.push("\u6570\u636E\u4F18\u5148\u7EA7");for(let o of ir)e.push(` ${o}`);e.push(""),e.push("\u5168\u5C40\u53C2\u6570");for(let o of Pn)e.push(` ${o.bullet.replaceAll("`","")}`);e.push(""),e.push("\u547D\u4EE4");let n="";for(let o of t)o.path[0]!==n&&(e[e.length-1]!=="\u547D\u4EE4"&&e.push(""),e.push(` [${o.path[0]}]`),n=o.path[0]),e.push(` yybpc-cli ${o.path.join(" ")} ${o.description}`);return e.push(""),e.push("\u66F4\u591A\u5E2E\u52A9"),e.push(" yybpc-cli help <command> \u4F8B\u5982: yybpc-cli help report query"),e}function ar(r,t){return re(_t(t)).filter(e=>e.path.length>r.length&&r.every((n,o)=>e.path[o]===n))}function Hn(r,t){let e=ar(r,t);if(e.length===0)return[`\u672A\u627E\u5230: ${r.join(" ")}`];let n=[];n.push(`yybpc-cli ${r.join(" ")} \u4E0B\u7684\u547D\u4EE4`);let o=pr(r);if(o.length>0){n.push("\u89C4\u5219");for(let i of o)n.push(` ${i}`);n.push("")}n.push("\u547D\u4EE4");for(let i of e)n.push(` yybpc-cli ${i.path.join(" ")} ${i.description}`);return n}function ne(r,t){return _t(t).find(e=>e.path.length===r.length&&e.path.every((n,o)=>n===r[o]))}function Mn(r,t){let e=ne(r,t),n=[];n.push(`yybpc-cli ${e.path.join(" ")}`),n.push(e.description);let o=qn(e);if(o.length>0){n.push(""),n.push("\u5FEB\u901F\u5F00\u59CB");for(let a of o)n.push(` ${a}`)}n.push(""),n.push("\u793A\u4F8B");for(let a of Vn(e))n.push(` ${a}`);n.push(""),n.push("\u53C2\u6570");let i=e.args??{};if(Object.keys(i).length===0)n.push(" \uFF08\u65E0\u53C2\u6570\uFF09");else for(let[a,c]of Object.entries(i)){let d=c.required?" \u5FC5\u586B":"",p=c.description??"",u=c.default!==void 0?` \u9ED8\u8BA4 ${c.default}`:"",l=`${d}${p?` ${p}`:""}${u}`,m=c.enum?c.enum.join("|"):c.type,y=c.type==="boolean"?`--${a}`:`--${a} <${m}>`;n.push(` ${y}${l}`)}let s=ur(e);if(s.length>0){n.push(""),n.push("\u89C4\u5219");for(let a of s)n.push(` ${a}`)}return n}function cr(r){let t=[`yybpc-cli ${r.path.join(" ")}`];for(let[e,n]of Object.entries(r.args??{}))if(n.required){let o=n.enum?n.enum.join("|"):e.toUpperCase().replace(/-/g,"_");t.push(`--${e} <${o}>`)}return t.join(" ")}function Vn(r){let t=`yybpc-cli ${r.path.join(" ")}`;return r.path[0]==="report"&&r.path[1]==="list"?[t,`${t} --category gj_store_ranking`,`${t} --report-id gj_target_achievement_3`]:r.path[0]==="report"&&r.path[1]==="query"?["\u5148\u770B\u5168\u91CF\u62A5\u8868: yybpc-cli report list","\u770B\u53C2\u6570: yybpc-cli report list --report-id gj_target_achievement_3",`${t} --report-id gj_target_achievement_3 --date 2026-04-22`,`${t} --report-id gj_target_achievement_3 --start-date 2026-04-01 --end-date 2026-04-30`,`${t} --report-id gj_target_achievement_3 --start-date 2026-04-01 --end-date 2026-04-30 --param-json '{"regionList":["3301"]}'`,"\u517C\u5BB9\u65E7\u5199\u6CD5: yybpc-cli report get gj_target_achievement_3 2026-04-22",`\u517C\u5BB9\u65E7\u5199\u6CD5: yybpc-cli report data --report gj_target_achievement_3 --params '{"startDate":"2026-04-22","endDate":"2026-04-22"}'`]:[cr(r).replace(/[<>]/g,"")]}function qn(r){return r.path[0]==="report"&&r.path[1]==="list"?["1. \u5148\u6267\u884C yybpc-cli report list \u62C9\u53D6\u5168\u90E8\u62A5\u8868\uFF0C\u4E0D\u505A\u5173\u952E\u8BCD\u731C\u6D4B","2. \u9ED8\u8BA4\u5217\u8868\u4F1A\u5C55\u793A\u6BCF\u4E2A\u62A5\u8868\u7684\u53C2\u6570\u6458\u8981\uFF0C\u5148\u5FEB\u901F\u5224\u65AD\u8FD9\u4E2A\u62A5\u8868\u80FD\u4E0D\u80FD\u67E5","3. \u7528 --category \u7F29\u5C0F\u62A5\u8868\u8303\u56F4","4. \u7528 --report-id \u67E5\u770B\u5355\u4E2A\u62A5\u8868\u8BE6\u60C5\u3001\u53C2\u6570\u548C\u67E5\u8BE2\u793A\u4F8B","5. \u786E\u8BA4\u62A5\u8868\u53EF\u7528\u540E\uFF0C\u518D\u6267\u884C yybpc-cli report query"]:r.path[0]==="report"&&r.path[1]==="query"?["1. \u5148\u6267\u884C yybpc-cli report list \u62C9\u53D6\u5168\u90E8\u62A5\u8868","2. \u518D\u6267\u884C yybpc-cli report list --report-id REPORT_ID \u786E\u8BA4\u8BE5\u62A5\u8868\u652F\u6301\u7684\u53C2\u6570","3. \u5355\u65E5\u67E5\u8BE2\u4F18\u5148\u4F7F\u7528 --date\uFF1B\u533A\u95F4\u67E5\u8BE2\u518D\u4F7F\u7528 --start-date \u548C --end-date","4. \u6700\u540E\u6267\u884C yybpc-cli report query --report-id REPORT_ID --date YYYY-MM-DD\uFF0C\u6216\u663E\u5F0F\u4F20\u5F00\u59CB/\u7ED3\u675F\u65E5\u671F",'5. \u82E5\u9700\u989D\u5916\u53C2\u6570\uFF0C\u4F7F\u7528 --param-json \u4F20\u5165\u62A5\u8868\u652F\u6301\u7684\u5B57\u6BB5\uFF0C\u4F8B\u5982 {"regionList":["3301"]}']:[]}function ur(r){return r.path[0]==="report"&&r.path[1]==="list"?["report \u662F\u6240\u6709\u7ECF\u8425\u5206\u6790\u6570\u636E\u7684\u9996\u9009\u6765\u6E90","\u5148\u62C9\u5168\u91CF\u62A5\u8868\uFF0C\u4E0D\u5728 CLI \u5185\u505A\u5173\u952E\u8BCD\u731C\u6D4B\uFF0C\u907F\u514D\u8BEF\u5BFC AI \u9009\u62E9\u9519\u8BEF\u62A5\u8868","\u9ED8\u8BA4\u5217\u8868\u4F1A\u76F4\u63A5\u5C55\u793A\u62A5\u8868\u53C2\u6570\u6458\u8981\uFF0C\u907F\u514D\u5148\u770B\u5217\u8868\u5374\u4E0D\u77E5\u9053\u600E\u4E48\u67E5","\u5148\u770B\u5168\u91CF\uFF0C\u518D\u7528 --category \u7F29\u5C0F\u8303\u56F4\uFF0C\u518D\u770B\u5177\u4F53\u62A5\u8868","\u7528 --report-id \u53EF\u67E5\u770B\u5355\u4E2A\u62A5\u8868\u7684\u53C2\u6570\u548C\u67E5\u8BE2\u793A\u4F8B","\u82E5 report \u5F53\u524D\u6CA1\u6709\u76F8\u5173\u6570\u636E\uFF0C\u518D\u6539\u7528\u5176\u4ED6\u6A21\u5757\uFF0C\u5E76\u660E\u786E\u8BF4\u660E\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F"]:r.path[0]==="report"&&r.path[1]==="query"?["\u6240\u6709\u5206\u6790\u7C7B\u67E5\u8BE2\u4F18\u5148\u8D70 report\uFF1B\u4E0D\u8981\u9ED8\u8BA4\u6539\u7528\u4E3B\u6863\u6570\u636E","\u4E0D\u77E5\u9053 report-id \u65F6\uFF0C\u5148\u6267\u884C yybpc-cli report list \u62C9\u53D6\u5168\u90E8\u62A5\u8868","query \u9636\u6BB5\u53EA\u4F7F\u7528\u786E\u5B9A\u7684 --report-id\uFF0C\u4E0D\u5728\u6267\u884C\u65F6\u505A\u5173\u952E\u8BCD\u731C\u6D4B","report query \u652F\u6301\u5355\u65E5\u5FEB\u6377\u5199\u6CD5 --date YYYY-MM-DD","\u517C\u5BB9\u65E7\u5199\u6CD5 report get / report data\uFF0C\u4F46\u9ED8\u8BA4\u4ECD\u5E94\u4F18\u5148\u4F7F\u7528 report query","\u53EA\u6709 report \u65E0\u76F8\u5173\u6570\u636E\u65F6\uFF0C\u624D\u5141\u8BB8\u6539\u7528\u5176\u4ED6\u6A21\u5757\uFF0C\u5E76\u660E\u786E\u8BF4\u660E\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F"]:r.path[0]==="report"&&r.path[1]==="config"?["\u672C\u7CFB\u5217\u9ED8\u8BA4\u8F93\u51FA\u540E\u7AEF\u539F\u6837\u5BF9\u8C61\u7ED3\u6784\uFF08\u4E0D\u538B {columns,rows}\uFF09\uFF0C\u4FBF\u4E8E\u51C6\u786E\u5B66\u4E60\u548C\u590D\u7528\u62A5\u8868\u914D\u7F6E\u7684\u771F\u5B9E shape","\u5982\u9700\u7701 token\uFF0C\u53EF\u663E\u5F0F\u52A0 --compact/--agent\uFF08\u4ECD\u4F1A\u538B\u6210 {columns,rows}\uFF09"]:r.path[0]==="master-data"||r.path[0]==="supply-chain"||r.path[0]==="user-center"?["\u4EC5\u5728 report \u65E0\u76F8\u5173\u62A5\u8868\u6216\u5F53\u524D\u67E5\u4E0D\u5230\u5206\u6790\u6570\u636E\u65F6\u4F7F\u7528\u672C\u547D\u4EE4","\u4F7F\u7528\u672C\u547D\u4EE4\u524D\u540E\uFF0C\u90FD\u5E94\u660E\u786E\u544A\u77E5\u7528\u6237\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F\uFF0C\u4E0D\u7B49\u540C\u4E8E\u7ECF\u8425\u5206\u6790\u62A5\u8868"]:[]}function pr(r){return r[0]==="report"?["report \u662F\u7ECF\u8425\u5206\u6790\u4E0E\u6570\u636E\u89E3\u8BFB\u7684\u9996\u9009\u5165\u53E3","\u5148 list \u627E\u62A5\u8868\uFF0C\u518D query \u67E5\u6570\u636E\uFF1B\u5206\u6790\u7ED3\u8BBA\u4F18\u5148\u57FA\u4E8E report \u8F93\u51FA","\u53EA\u6709 report \u65E0\u76F8\u5173\u6570\u636E\u65F6\uFF0C\u624D\u5141\u8BB8\u6539\u7528\u5176\u4ED6\u6A21\u5757\u8865\u5145\u4FE1\u606F","\u6539\u7528\u5176\u4ED6\u6A21\u5757\u65F6\uFF0C\u5FC5\u987B\u8BF4\u660E\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F\uFF0C\u4E0D\u7B49\u540C\u4E8E\u7ECF\u8425\u5206\u6790\u62A5\u8868"]:r[0]==="master-data"||r[0]==="supply-chain"||r[0]==="user-center"?["\u672C\u6A21\u5757\u63D0\u4F9B\u4E3B\u6863/\u4F9B\u5E94\u94FE/\u7EC4\u7EC7\u7B49\u57FA\u7840\u4FE1\u606F\uFF0C\u4E0D\u662F\u7ECF\u8425\u5206\u6790\u9996\u9009\u6765\u6E90","\u8C03\u7528\u524D\u8BF7\u5148\u786E\u8BA4 report \u5F53\u524D\u6CA1\u6709\u76F8\u5173\u62A5\u8868\u6216\u65E0\u6CD5\u63D0\u4F9B\u6240\u9700\u5206\u6790\u6570\u636E","\u82E5\u57FA\u4E8E\u672C\u6A21\u5757\u8F93\u51FA\u5206\u6790\uFF0C\u5FC5\u987B\u8BF4\u660E\uFF1A\u5F53\u524D\u62A5\u8868\u7CFB\u7EDF\u6682\u65E0\u76F8\u5173\u6570\u636E\uFF0C\u4EE5\u4E0B\u5206\u6790\u57FA\u4E8E\u4E3B\u6863\u4FE1\u606F\uFF0C\u4E0D\u7B49\u540C\u4E8E\u7ECF\u8425\u5206\u6790\u62A5\u8868"]:[]}function Gn(r){let t=re(_t(r));return JSON.stringify({version:z,featuredQuery:[...Nn],dataPriority:[...$n],globals:[...In],commands:t.map(e=>({path:e.path,command:`yybpc-cli ${e.path.join(" ")}`,description:e.description}))},null,2)}function Fn(r,t){let e=ar(r,t);return e.length===0?JSON.stringify({error:`\u672A\u627E\u5230: ${r.join(" ")}`},null,2):JSON.stringify({domain:r.join(" "),rules:pr(r),commands:e.map(n=>({path:n.path,command:`yybpc-cli ${n.path.join(" ")}`,description:n.description}))},null,2)}function Yn(r,t){let e=ne(r,t);return JSON.stringify({command:`yybpc-cli ${e.path.join(" ")}`,description:e.description,rules:ur(e),args:Object.entries(e.args??{}).map(([n,o])=>({name:n,flag:`--${n}`,type:o.type,required:o.required??!1,description:o.description??"",default:o.default})),example:cr(e)},null,2)}function oe(r,t={}){let{commandPath:e,json:n}=t;return!e||e.length===0?n?Gn(r):Ln(r).join(`
175
+ `).trimEnd():ne(e,r)?n?Yn(e,r):Mn(e,r).join(`
176
+ `).trimEnd():n?Fn(e,r):Hn(e,r).join(`
177
+ `).trimEnd()}Ot();T();var fr={meta:{description:"\u67E5\u770B\u5355\u4E2A\u62A5\u8868\u7684\u5B8C\u6574\u914D\u7F6E\uFF08SQL\u3001items\u3001params\uFF09"},args:{"report-id":{type:"string",required:!0,description:"\u62A5\u8868ID"}},api:{service:"report",method:"GET",path:"/report/config/detail"}};T();x();N();var gr={meta:{description:"\u542F\u7528\u6307\u5B9A\u62A5\u8868"},args:{"report-id":{type:"string",required:!0,description:"\u62A5\u8868ID"}},api:{service:"report",method:"POST",path:"/report/config/enable"},run:async({args:r,request:t})=>{let e=b(),n=await t({service:"report",method:"POST",path:"/report/config/enable",body:{reportId:r.reportId}});return e.dryRun||await k(e.env),n}};T();x();N();var yr={meta:{description:"\u7981\u7528\u6307\u5B9A\u62A5\u8868"},args:{"report-id":{type:"string",required:!0,description:"\u62A5\u8868ID"}},api:{service:"report",method:"POST",path:"/report/config/disable"},run:async({args:r,request:t})=>{let e=b(),n=await t({service:"report",method:"POST",path:"/report/config/disable",body:{reportId:r.reportId}});return e.dryRun||await k(e.env),n}};T();x();N();B();var _r={meta:{description:"\u65B0\u5EFA\u4E1A\u52A1\u81EA\u7814\u62A5\u8868\uFF08\u5F3A\u5236 business_custom \u5206\u7C7B\uFF09\uFF1B\u53C2\u6570\u53D6\u503C\u89C1 report config dict"},args:{"config-json":{type:"string",required:!0,description:"\u62A5\u8868\u914D\u7F6E JSON\uFF08reportId/reportName/reportType/items\uFF09"}},api:{service:"report",method:"POST",path:"/report/config/save"},run:async({args:r,request:t})=>{let e=b(),n=gt(r.configJson),o=await t({service:"report",method:"POST",path:"/report/config/save",body:n});return e.dryRun||await k(e.env),o}};T();x();N();B();var Cr={meta:{description:"\u4FEE\u6539\u4E1A\u52A1\u81EA\u7814\u62A5\u8868\uFF08\u5F3A\u5236 business_custom \u5206\u7C7B\uFF09"},args:{"config-json":{type:"string",required:!0,description:"\u62A5\u8868\u914D\u7F6E JSON\uFF08\u542B reportId\uFF09"}},api:{service:"report",method:"POST",path:"/report/config/update"},run:async({args:r,request:t})=>{let e=b(),n=gt(r.configJson),o=await t({service:"report",method:"POST",path:"/report/config/update",body:n});return e.dryRun||await k(e.env),o}};T();B();var Or={meta:{description:"\u5217\u51FA\u62A5\u8868\u7814\u53D1\u76F8\u5173\u679A\u4E3E\uFF08\u6570\u636E\u6E90/\u7ED3\u679C\u51FD\u6570/\u7C7B\u578B\u7B49\u53EF\u586B\u53D6\u503C\uFF0C\u514D\u767B\u5F55\uFF09"},args:{},api:{service:"baseinfo",method:"POST",path:"/baseinfo/common/dict/list/v1"},run:async({request:r})=>({success:!0,data:await ft(r),meta:{service:"baseinfo",requestId:"-",duration:0}})};yt();T();R();function br(r,t,e){if(r==null)return t;let n=Number(r);if(!Number.isInteger(n)||n<1)throw new h("INPUT_ERROR","INVALID_ARG",`${e} \u5FC5\u987B\u662F\u6B63\u6574\u6570`);return n}function Un(r){return r.replace(/-([a-z])/g,(t,e)=>e.toUpperCase())}function S(r){let t=Object.keys(r.filters??{}),e=["page","page-size"];for(let o of t)if(e.includes(o))throw new Error(`defineListCommand: filter key "${o}" collides with reserved pagination arg. Rename the filter or use a different CLI flag.`);let n={...r.filters??{},page:{type:"number",description:"\u9875\u7801",default:1},"page-size":{type:"number",description:"\u6BCF\u9875\u6570\u91CF",default:20}};return{meta:{description:r.description},args:n,api:{service:r.service,method:"POST",path:r.apiPath},run:async({args:o,request:i})=>{let s=br(o.page,1,"--page"),a=br(o.pageSize,20,"--page-size"),c={page:{pageNo:s,pageSize:a}};for(let d of Object.keys(r.filters??{})){let p=Un(d),u=o[p]??o[d];(typeof u=="string"&&u.length>0||typeof u=="number"||typeof u=="boolean")&&(c[p]=u)}return i({service:r.service,method:"POST",path:r.apiPath,body:c})}}}T();function wr(r){return r.replace(/-([a-z])/g,(t,e)=>e.toUpperCase())}function bt(r){if(r.extraBody&&r.filters){let t=Object.keys(r.extraBody),e=Object.keys(r.filters).map(wr);for(let n of t)if(e.includes(n))throw new Error(`defineTreeCommand: extraBody key "${n}" collides with filter name. Remove one or rename the filter.`)}return{meta:{description:r.description},args:r.filters??{},api:{service:r.service,method:"POST",path:r.apiPath},run:async({args:t,request:e})=>{let n={...r.extraBody??{}};for(let o of Object.keys(r.filters??{})){let i=wr(o),s=t[i]??t[o];(typeof s=="string"&&s.length>0||typeof s=="number"||typeof s=="boolean")&&(n[i]=s)}return e({service:r.service,method:"POST",path:r.apiPath,body:n})}}}var Ar=[{path:["master-data","franchisee","list"],def:S({description:"\u52A0\u76DF\u5546\u6863\u6848\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/franchisee/list"})},{path:["master-data","store","list"],def:S({description:"\u95E8\u5E97\u6863\u6848\u5217\u8868\uFF08\u652F\u6301\u5173\u952E\u5B57\u6A21\u7CCA\u641C\u7D22\uFF09",service:"mdm",apiPath:"/baseinfo/mdm/store/list",filters:{keyword:{type:"string",description:"\u95E8\u5E97\u5173\u952E\u5B57\u6A21\u7CCA\u641C\u7D22"}}})},{path:["master-data","company","list"],def:S({description:"\u516C\u53F8\u6863\u6848\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/company/list"})},{path:["master-data","contract","list"],def:S({description:"\u95E8\u5E97\u5408\u540C\u6863\u6848\u5217\u8868",service:"contract",apiPath:"/contract/contract/list"})},{path:["master-data","bank","list"],def:S({description:"\u94F6\u884C\u6863\u6848\u5217\u8868",service:"baseinfo",apiPath:"/baseinfo/common/bank/branch/list"})},{path:["master-data","warehouse","list"],def:S({description:"\u4ED3\u5E93\u6863\u6848\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/warehouse/list"})},{path:["master-data","unit","list"],def:S({description:"\u5355\u4F4D\u6570\u636E\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/unit/list"})},{path:["master-data","area","list"],def:S({description:"\u533A\u57DF\u6863\u6848\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/area/list"})},{path:["master-data","region","tree"],def:bt({description:"\u7701\u5E02\u533A\u6811",service:"baseinfo",apiPath:"/baseinfo/common/region/tree"})},{path:["supply-chain","supplier","list"],def:S({description:"\u4F9B\u5E94\u5546\u6863\u6848\u5217\u8868",service:"mdm",apiPath:"/baseinfo/mdm/supplier/list"})},{path:["supply-chain","product-category","tree"],def:bt({description:"\u5546\u54C1\u5206\u7C7B\u6811",service:"mdm",apiPath:"/baseinfo/mdm/product/category/tree/list"})},{path:["supply-chain","product","list"],def:S({description:"\u5546\u54C1\u6863\u6848\u5217\u8868\uFF08SKU \u7EF4\u5EA6\uFF09",service:"mdm",apiPath:"/baseinfo/mdm/product/sku/list"})},{path:["user-center","org","tree"],def:bt({description:"\u7EC4\u7EC7\u67B6\u6784\u6811",service:"user-center",apiPath:"/user-center/org/tree"})},{path:["user-center","user","list"],def:S({description:"\u7528\u6237\u5217\u8868",service:"user-center",apiPath:"/user-center/user/list"})}];ht();var E=[{path:["report","query"],def:ce},{path:["report","config","get"],def:fr},{path:["report","config","enable"],def:gr},{path:["report","config","disable"],def:yr},{path:["report","config","create"],def:_r},{path:["report","config","update"],def:Cr},{path:["report","config","dict"],def:Or},...Ar],Qn=["env","format","compact","slim","agent","verbose","dry-run","as-phone"];function pe(r){return r.option("--env <env>","Target environment (dev/test/prod)","prod").option("--format <format>","Output format: auto(\u9ED8\u8BA4,minified columns/rows)/json(\u5E26\u7F29\u8FDB,\u7ED9\u4EBA\u8BFB)/raw(\u539F\u6837)","auto").option("--compact","Compact JSON: minified data only, no wrapper",!1).option("--slim","Compact + strip null/empty values",!1).option("--agent","Compact + strip nulls + shorten field names (optimized for LLM)",!1).option("--verbose","Print debug info",!1).option("--dry-run","Preview request without executing",!1).option("--as-phone <phone>","Agent mode: act as phone number")}function Dr(r){return r.replace(/-([a-z])/g,(t,e)=>e.toUpperCase())}function Bn(){let r=new Set;for(let e of Qn)r.add(`--${e}`);for(let{def:e}of E)for(let n of Object.keys(e.args))r.add(`--${n}`);for(let e of Object.keys(P.args))r.add(`--${e}`);let t=["report","params","date","start-date","end-date","region","store-id","channel","order-field","order-dir"];for(let e of t)r.add(`--${e}`);return r}function zn(r,t){if(!r.startsWith("--"))return r;let e=r.indexOf("="),n=e===-1?r:r.slice(0,e),o=e===-1?"":r.slice(e);if(t.has(n))return r;let i=`--${Dr(n.slice(2))}`,s=[...t].find(a=>Dr(a.slice(2))===i.slice(2));return s?`${s}${o}`:r}function Xn(r,t){return r.map(e=>zn(e,t))}function kr(r,t){for(let[e,n]of Object.entries(t)){let o=n.type==="boolean"?`--${e}`:n.required?`--${e} <${n.type}>`:`--${e} [${n.type}]`;r.option(o,n.description??"",n.default)}return r}function X(r){let t=r.optsWithGlobals();Ve({env:t.env,asPhone:t.asPhone,verbose:t.verbose,dryRun:t.dryRun})}function Y(r,t,e){let n=()=>oe(t,{commandPath:e});r.helpInformation=n}function le(r){let t=r.optsWithGlobals(),e=t.format??"auto",n="none";return t.agent?n="agent":t.slim?n="slim":t.compact&&(n="compact"),n==="none"&&e==="auto"&&(n="compact"),{format:e==="auto"?"json":e,compactMode:n}}var Zn=[["report","config"]];function to(r){return Zn.some(t=>t.every((e,n)=>r[n]===e))}function eo(r,t,e){let n=t[t.length-1],o=r.command(n).description(e.meta.description);kr(o,e.args),Y(o,E,t),o.action(async()=>{X(o);let i=o.opts(),s=le(o),a=o.optsWithGlobals(),d=(a.format??"auto")==="auto"&&!a.agent&&!a.slim&&!a.compact&&to(t)?"raw":s.format,{compactMode:p}=s;await dt(d,p,async()=>{if(e.run)return e.run({args:i,request:q});let u=e.api.method==="GET";return q({service:e.api.service,method:e.api.method,path:e.api.path,...u?{query:i}:{body:i}})})})}async function ro(){let r=Bn(),t=new Re;t.name("yybpc-cli").version(z).description("Internal service CLI"),Y(t,E),pe(t);let e=new Map;function n(l,m){let y=m.join(" "),g=e.get(y);if(g)return g;let w=m[m.length-1],C=l.command(w).description(`${w} commands`);return pe(C),Y(C,E,m),e.set(y,C),C}for(let{path:l,def:m}of E){let y=t;for(let g=0;g<l.length-1;g++)y=n(y,l.slice(0,g+1));eo(y,l,m)}let o=n(t,["report"]),i=o.command("list").description(P.description);kr(i,P.args),Y(i,E,["report","list"]),i.action(async()=>{X(i);try{let{runReportList:l}=await Promise.resolve().then(()=>(ht(),ze));await l(i.opts())}catch(l){console.error(Q(l)),process.exit(1)}});let a=n(t,["report","config"]).command("guide").description(F.description);pe(a),a.action(async()=>{X(a);try{let{runGuide:l}=await Promise.resolve().then(()=>(yt(),tr));await l(q)}catch(l){console.error(Q(l)),process.exit(1)}});let c=o.command("get <reportId> <date> [endDate]").description("Compatibility alias for yybpc-cli report query");Y(c,E,["report","query"]),c.action(async(l,m,y)=>{X(c);let{format:g,compactMode:w}=le(c);await dt(g,w,async()=>{let{runReportQuery:C}=await Promise.resolve().then(()=>(Ot(),ue));return C({reportId:l,date:m,endDate:y},q)})});let d=o.command("data").description("Compatibility alias for yybpc-cli report query").requiredOption("--report <reportId>","Legacy alias for --report-id").option("--params <json>","Legacy alias for --param-json; may also include startDate/endDate").option("--date <date>","Single date shortcut (YYYY-MM-DD)").option("--start-date <date>","Start date (YYYY-MM-DD)").option("--end-date <date>","End date (YYYY-MM-DD)").option("--region <value>","Region IDs").option("--store-id <value>","Store IDs").option("--channel <value>","Channel IDs").option("--order-field <field>","Sort field").option("--order-dir <dir>","Sort direction");Y(d,E,["report","query"]),d.action(async()=>{X(d);let{format:l,compactMode:m}=le(d);await dt(l,m,async()=>{let{runReportQuery:y}=await Promise.resolve().then(()=>(Ot(),ue));return y(d.opts(),q)})});let p=t.command("auth",{hidden:!0}).description("Authentication management");p.command("set-token <token>").description("Manually set satoken for human login").action(async l=>{let{runSetToken:m}=await Promise.resolve().then(()=>(Rr(),Sr));await m(l)}),p.command("logout").description("Clear local session").action(async()=>{let{runLogout:l}=await Promise.resolve().then(()=>(Er(),Tr));await l()}),p.command("status").description("Show current login status").action(async()=>{let{runStatus:l}=await Promise.resolve().then(()=>(xr(),vr));await l()});let u=t.command("help [command...]").description("Show complete command reference (yybpc-cli help, yybpc-cli help <domain>, yybpc-cli help <domain> <cmd>)").option("--json","Output as JSON");u.action(l=>{let m=l.length>0?l:void 0,y=u.opts().json??!1;if(!y){let g=m?.join(" ")??"";if(!m||e.has(g)){let C=m?e.get(g):t;process.stdout.write(C.helpInformation());return}if(E.find(C=>C.path.length===m.length&&C.path.every((U,Z)=>U===m[Z]))){let C=m.slice(0,-1).join(" "),Z=(m.length>1?e.get(C):t)?.commands.find(Pr=>Pr.name()===m[m.length-1]);if(Z){process.stdout.write(Z.helpInformation());return}}if(m.length===2&&m[0]==="report"&&m[1]==="list"){process.stdout.write(i.helpInformation());return}}process.stdout.write(oe(E,{commandPath:m,json:y}))}),await t.parseAsync(Xn(process.argv,r))}ro().catch(r=>{console.error(Q(r)),process.exit(1)});export{ro as main,Xn as normalizeArgv};
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@yybpc/cli",
3
+ "version": "1.0.0",
4
+ "description": "公司内部服务统一 CLI(报表查询 + 中台主档/供应链/用户中心)",
5
+ "type": "module",
6
+ "bin": {
7
+ "yybpc-cli": "dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist/index.js"
11
+ ],
12
+ "engines": {
13
+ "node": ">=18"
14
+ },
15
+ "scripts": {
16
+ "dev": "tsx src/index.ts",
17
+ "build": "tsup",
18
+ "build:sea": "bash scripts/build-sea.sh",
19
+ "build:sea:linux": "bash scripts/build-sea-linux.sh",
20
+ "typecheck": "tsc --noEmit",
21
+ "prepublishOnly": "tsup"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^22.10.0",
25
+ "commander": "^14.0.3",
26
+ "tsup": "^8.3.5",
27
+ "tsx": "^4.19.2",
28
+ "typescript": "^5.7.2"
29
+ }
30
+ }