{"version":3,"sources":["../../src/base/Help.ts"],"names":["init_cjs_shims","Help","BaseHelp","constructor","color","c","seperateOptionsByNewLine","__publicField","seperateGlobalOptionsByNewLine","useImprovedHelp","outputOrder","app","Application","in","out","displayWidth","str","stripAnsi","length","boxWrap","width","wrapAnsi","hard","styleTitle","t","styleSubcommandTerm","includes","command","alias","split","slice","join","styleCommandText","styleCommandDescription","styleSubcommandDescription","styleDescriptionText","styleOptionText","styleArgumentText","styleSubcommandText","styleOptionDescription","styleArgumentDescription","optionTerm","option","term","matches","match","replace","yellow","bold","dim","prepareContext","contextOptions","error","chalkStderr","visibleGlobalOptions","_cmd","cmd","options","_globalOptionsCommand","forEach","push","showGlobalOptions","styleUsage","map","word","text","optionDescription","template","description","trimEnd","global","argumentDescription","argument","formatHelp","helper","formatHelpImproved","stringifyValue","value","JSON","stringify","subcommandExtraColumn","extraInfo","aliases","choices","choice","argumentExtraColumn","argChoices","defaultValue","undefined","showDefault","required","defaultValueDescription","optionExtraColumn","optional","isBoolean","presetArg","envVar","table","rows","defaults","chars","style","wordWrap","CliTable3","toString","transformOptionList","seperateByNewLine","optionList","styleOptionTerm","newOptionList","item","termWidth","padWidth","helpWidth","callFormatItem","formatItem","groups","Usage","__name","output","concat","commandUsage","CommandDescription","commandDescription","CommandsList","commandList","visibleCommands","subcommandTerm","subcommandDescription","colWidths","ArgumentsList","argumentList","visibleArguments","styleArgumentTerm","argumentTerm","OptionsList","visibleOptions","GlobalOptionsList","globalOptionList","Object","entries","group","order","filter","sort","firstBy","direction"],"mappings":"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","file":"chunk-BOAKFAZ4.cjs","sourcesContent":["import { chalkStderr } from 'chalk';\nimport { Help as BaseHelp } from 'commander';\nimport type { ColorInstance } from '../utils/color.js';\n\nimport { Option } from './Option.js';\nimport { Command } from './Command.js';\nimport CliTable3 from 'cli-table3';\nimport { defaults, firstBy } from '@radicjs/utils';\nimport { type App, Application } from '../Application.js';\nimport wrapAnsi from 'wrap-ansi';\nimport stripAnsi from 'strip-ansi';\nimport { Input } from '../helpers/Input.js';\nimport { Output } from '../helpers/Output.js';\nimport { Argument } from './Argument.js';\n\nexport interface HelpConstructor {\n    new(): Help;\n\n    (): Help;\n\n    prototype: Help;\n}\n\nexport type HelpConfiguration =\n    Partial<Help>\n    & Partial<BaseHelp>;\n\nexport type HelpGroup =\n    'Usage'\n    | 'CommandDescription'\n    | 'CommandsList'\n    | 'ArgumentsList'\n    | 'OptionsList'\n    | 'GlobalOptionsList';\n\n\nexport type HelpOutputOrder = Partial<Record<HelpGroup, number | false>>;\n\n/**\n * The `Help` class extends the base help functionality provided by `commander`.\n * It customizes the display of command-line help, including options, arguments, and commands.\n * This class supports additional formatting and styling options for better readability.\n *\n * @example\n * const help = new Help();\n * help.seperateOptionsByNewLine = true;\n * help.useExtraInfoColumn = true;\n * const output = help.formatHelp(command, help);\n * console.log(output);\n */\nexport class Help extends BaseHelp {\n    public static Application?: App;\n\n    public get app(): App { return Help.Application; }\n\n    public get in(): Input { return this.app.in; }\n\n    public get out(): Output { return this.app.out; }\n\n    /** @see https://github.com/chalk/chalk */\n    protected color: ColorInstance;\n    /** @see https://github.com/chalk/chalk-template */\n    protected c: TemplateStringsArray;\n\n    public seperateOptionsByNewLine: boolean       = false;\n    public seperateGlobalOptionsByNewLine: boolean = false;\n    public useImprovedHelp: boolean                = false;\n    public outputOrder: HelpOutputOrder            = {\n        'Usage'             : 10,\n        'CommandDescription': 20,\n        'CommandsList'      : 30,\n        'ArgumentsList'     : 40,\n        'OptionsList'       : 50,\n        'GlobalOptionsList' : 60,\n    };\n\n    constructor() {\n        super();\n    }\n\n    /**\n     * Calculates the display width of a string, excluding ANSI escape codes.\n     *\n     * @param {string} str - The string to measure.\n     * @returns {number} The display width of the string.\n     */\n    displayWidth(str: string): number {\n        return stripAnsi(str).length;\n    }\n\n    /**\n     * Wraps a string to a specified width, preserving words.\n     *\n     * @param {string} str - The string to wrap.\n     * @param {number} width - The maximum width of the wrapped string.\n     * @returns {string} The wrapped string.\n     */\n    boxWrap(str: string, width: number): string {\n        return wrapAnsi(str, width, { hard: true });\n    }\n\n    /**\n     * Styles a title string.\n     *\n     * @param {string} str - The title string to style.\n     * @returns {string} The styled title string.\n     */\n    styleTitle(str: string): string {\n        return this.out.t`{bold ${str}}`;\n    }\n\n    public styleSubcommandTerm(str: string): string {\n        if(str.includes('|')){\n            // has alias\n            let [command, alias] = str.split('|')\n            // return super.styleSubcommandTerm(command);\n            command = super.styleSubcommandTerm(command.slice(1));\n            alias = this.out.t`{cyanBright.bold ${alias}}`;\n            return [alias,command].join(this.out.t``)\n        }\n        return super.styleSubcommandTerm(str);\n    }\n\n    /**\n     * Styles a command text string.\n     *\n     * @param {string} str - The command text string to style.\n     * @returns {string} The styled command text string.\n     */\n    styleCommandText(str: string): string {\n        if(str.includes('|')){\n            return this.styleCommandText(str.split('|')[0]);\n        }\n        return this.out.t`{cyan ${str}}`;\n    }\n\n    /**\n     * Styles a command description string.\n     *\n     * @param {string} str - The command description string to style.\n     * @returns {string} The styled command description string.\n     */\n    styleCommandDescription(str: string): string {\n        return this.out.t`{green ${str}}`;\n    }\n\n    /**\n     * Styles a subcommand description string.\n     *\n     * @param {string} str - The subcommand description string to style.\n     * @returns {string} The styled subcommand description string.\n     */\n    styleSubcommandDescription(str: string): string {\n        return this.out.t`{dim ${str}}`;\n    }\n\n    /**\n     * Styles a description text string.\n     *\n     * @param {string} str - The description text string to style.\n     * @returns {string} The styled description text string.\n     */\n    styleDescriptionText(str: string): string {\n        return this.out.t`{white ${str}}`;\n    }\n\n    /**\n     * Styles an option text string.\n     *\n     * @param {string} str - The option text string to style.\n     * @returns {string} The styled option text string.\n     */\n    styleOptionText(str: string): string {\n        return this.out.t`{green ${str}}`;\n    }\n\n    /**\n     * Styles an argument text string.\n     *\n     * @param {string} str - The argument text string to style.\n     * @returns {string} The styled argument text string.\n     */\n    styleArgumentText(str: string): string {\n        return this.out.t`{yellow ${str}}`;\n    }\n\n    /**\n     * Styles a subcommand text string.\n     *\n     * @param {string} str - The subcommand text string to style.\n     * @returns {string} The styled subcommand text string.\n     */\n    styleSubcommandText(str: string): string {\n        return this.out.t`{blue.bold ${str}}`;\n    }\n\n    /**\n     * Styles an option description string.\n     *\n     * @param {string} str - The option description string to style.\n     * @returns {string} The styled option description string.\n     */\n    styleOptionDescription(str: string): string {\n        return super.styleOptionDescription(str);\n    }\n\n    /**\n     * Styles an argument description string.\n     *\n     * @param {string} str - The argument description string to style.\n     * @returns {string} The styled argument description string.\n     */\n    styleArgumentDescription(str: string): string {\n        return super.styleArgumentDescription(str);\n    }\n\n    /**\n     * Returns the term for an option, with additional styling.\n     *\n     * @param {Option} option - The option to get the term for.\n     * @returns {string} The styled option term.\n     */\n    public optionTerm(option: Option): string {\n        let term      = super.optionTerm(option);\n        const matches = term.match(/<([^>]+)>/g);\n        if ( matches && matches.length > 0 ) {\n            for ( const match of matches ) {\n                term = term.replace(match, this.out.color.yellow.bold.dim(match));\n            }\n        }\n        return term;\n    }\n\n    /**\n     * Prepares the context for displaying help.\n     *\n     * @param {object} contextOptions - The context options.\n     */\n    override prepareContext(contextOptions: object): void {\n        super.prepareContext(contextOptions);\n        // @ts-ignore\n        if ( contextOptions?.error ) {\n            this.out.color = chalkStderr as any;\n        }\n    }\n\n    /**\n     * Returns the visible global options for a command.\n     *\n     * @param {Command} _cmd - The command to get the global options for.\n     * @returns {Option[]} The visible global options.\n     */\n    override visibleGlobalOptions(_cmd: Command): Option[] {\n        const cmd: Command      = _cmd as any;\n        // const options: Option[] = super.visibleGlobalOptions(cmd as any) as any;\n        const options: Option[] = []\n        cmd._globalOptionsCommand.options.forEach(option => options.push(option as any));\n        this.showGlobalOptions = true;\n        return options;\n    }\n\n    /**\n     * Styles the usage string for a command.\n     *\n     * @param {string} str - The usage string to style.\n     * @returns {string} The styled usage string.\n     */\n    override styleUsage(str: string): string {\n        return str\n        .split(' ')\n        .map((word) => {\n            if ( word === '[options]' ) return this.styleOptionText('[...options]');\n            if ( word[ 0 ] === '[' || word[ 0 ] === '<' ) {\n                return this.styleArgumentText(word);\n            }\n            let text= this.styleCommandText(word);\n            return text;\n        })\n        .join(' ');\n    }\n\n    /**\n     * Returns the description for an option.\n     *\n     * @param {Option} option - The option to get the description for.\n     * @returns {string} The option description.\n     */\n    override optionDescription(option: Option): string {\n        let optionDescription = this.out.template(option.description);\n        if ( !this.useImprovedHelp ) {\n            optionDescription = super.optionDescription(option);\n            optionDescription = optionDescription.trimEnd();\n            if ( option.global() && this.seperateGlobalOptionsByNewLine ) {\n                optionDescription += '\\n';\n            } else if ( !option.global() && this.seperateOptionsByNewLine ) {\n                optionDescription += '\\n';\n            }\n        } else {\n            optionDescription = optionDescription.trimEnd();\n        }\n        return optionDescription;\n    }\n\n    /**\n     * Returns the description for an argument.\n     *\n     * @param {Argument} argument - The argument to get the description for.\n     * @returns {string} The argument description.\n     */\n    override argumentDescription(argument: Argument): string {\n        let argumentDescription = this.out.template(argument.description);\n        if ( !this.useImprovedHelp ) {\n            argumentDescription = super.argumentDescription(argument);\n            argumentDescription = argumentDescription.trimEnd();\n        } else {\n            argumentDescription = argumentDescription.trimEnd();\n        }\n        return argumentDescription;\n    }\n\n    /**\n     * Formats the help for a command.\n     *\n     * @param {Command} cmd - The command to format the help for.\n     * @param {Help} helper - The help instance.\n     * @returns {string} The formatted help string.\n     */\n    override formatHelp(cmd: Command, helper: this): string {\n        if ( this.useImprovedHelp ) {\n            return this.formatHelpImproved(cmd, helper);\n        }\n        return super.formatHelp(cmd, helper);\n    }\n\n    /**\n     * Converts a value to a string and optionally colors it.\n     *\n     * @param {any} value - The value to stringify.\n     * @param {boolean} [color=true] - Whether to color the stringified value.\n     * @returns {string} The stringified value.\n     */\n    protected stringifyValue(value: any, color: boolean = true): string {\n        value = JSON.stringify(value).replace(/\"/g, '\\'');\n        return color ? this.out.color.yellow(value) : value;\n    }\n    protected subcommandExtraColumn(command: Command): string {\n        const extraInfo = [];\n        if ( command.aliases().length > 0 ) {\n            const choices = command.aliases().map((choice) => this.stringifyValue(choice)).join(this.out.color.dim('|'));\n            extraInfo.push(this.out.t`{dim [}{dim.yellow aliases}: ${choices}{dim ]}`);\n        }\n        return extraInfo.join(' ');\n    }\n    /**\n     * Returns the extra column information for an argument.\n     *\n     * @param {Argument} argument - The argument to get the extra column information for.\n     * @returns {string} The extra column information.\n     */\n    protected argumentExtraColumn(argument: Argument): string {\n        const extraInfo = [];\n        if ( argument.argChoices ) {\n            const choices = argument.argChoices.map((choice) => this.stringifyValue(choice)).join(this.out.color.dim('|'));\n            extraInfo.push(this.out.t`{dim [}{dim.yellow allowed}: ${choices}{dim ]}`);\n        }\n        if ( argument.defaultValue !== undefined ) {\n            const showDefault = argument.required;\n            if ( showDefault ) {\n                extraInfo.push(this.out.t`{dim [}{dim.yellow default}: ${argument.defaultValueDescription || this.stringifyValue(argument.defaultValue)}{dim ]}`);\n            }\n        }\n        return extraInfo.join(' ');\n    }\n\n    /**\n     * Returns the extra column information for an option.\n     *\n     * @param {Option} option - The option to get the extra column information for.\n     * @returns {string} The extra column information.\n     */\n    protected optionExtraColumn(option: Option): string {\n        const extraInfo = [];\n        if ( option.argChoices ) {\n            const choices = option.argChoices.map((choice) => this.stringifyValue(choice)).join(this.out.color.dim('|'));\n            extraInfo.push(this.out.t`{dim [}{dim.yellow allowed}: ${choices}{dim ]}`);\n        }\n        if ( option.defaultValue !== undefined ) {\n            const showDefault = option.required || option.optional || (option.isBoolean() && typeof option.defaultValue === 'boolean');\n            if ( showDefault ) {\n                extraInfo.push(this.out.t`{dim [}{dim.yellow default}: ${option.defaultValueDescription || this.stringifyValue(option.defaultValue)}{dim ]}`);\n            }\n        }\n        if ( option.presetArg !== undefined && option.optional ) {\n            extraInfo.push(this.out.t`{dim [}{dim.yellow preset}: ${JSON.stringify(option.presetArg)}{dim ]}`);\n        }\n        if ( option.envVar !== undefined ) {\n            extraInfo.push(this.out.t`{dim [}{dim.greenBright env}: {dim.bold ${option.envVar}}{dim ]}`);\n        }\n        return extraInfo.join(' ');\n    }\n\n    /**\n     * Creates a table from the provided rows and options.\n     *\n     * @param {any[]} rows - The rows to include in the table.\n     * @param {CliTable3.TableConstructorOptions} [options={}] - The table options.\n     * @returns {string} The formatted table string.\n     */\n    protected table(rows: any[], options: CliTable3.TableConstructorOptions = {}): string {\n        options     = defaults(options, {\n            chars   : {\n                'top'   : '', 'top-mid': '', 'top-left': '', 'top-right': '',\n                'bottom': '', 'bottom-mid': '', 'bottom-left': '', 'bottom-right': '',\n                'left'  : '', 'left-mid': '', 'mid': '', 'mid-mid': '',\n                'right' : '', 'right-mid': '', 'middle': ' ',\n            },\n            style   : { 'padding-left': 0, 'padding-right': 3 },\n            wordWrap: true,\n        });\n        const table = new CliTable3(options);\n        table.push(...rows);\n        return table.toString();\n    }\n\n    /**\n     * Transforms the option list for display.\n     *\n     * @param {Help} helper - The help instance.\n     * @param {boolean} seperateByNewLine - Whether to separate options by new lines.\n     * @param {Option[]} options - The options to transform.\n     * @returns {any[]} The transformed option list.\n     */\n    protected transformOptionList(helper: this, seperateByNewLine: boolean, options: Option[]): any[] {\n        let optionList = options.map((option) => ([\n           ' '+ helper.styleOptionTerm(helper.optionTerm(option)),\n            helper.styleOptionDescription(helper.optionDescription(option as any)),\n            helper.optionExtraColumn(option),\n        ]));\n        if ( seperateByNewLine ) {\n            const newOptionList = [];\n            optionList.forEach(item => {\n                newOptionList.push(item);\n                newOptionList.push([ '', '', '' ]);\n            });\n            optionList = newOptionList;\n        }\n        return optionList;\n    }\n\n    /**\n     * Formats the help with an extra column for additional information.\n     *\n     * @param {Command} cmd - The command to format the help for.\n     * @param {Help} helper - The help instance.\n     * @returns {string} The formatted help string.\n     */\n    protected formatHelpImproved(cmd: Command, helper: this): string {\n        const termWidth = helper.padWidth(cmd, helper);\n        const helpWidth = helper.helpWidth ?? 80;\n\n        function callFormatItem(term, description) {\n            return helper.formatItem(term, termWidth, description, helper);\n        }\n\n\n        const groups: Record<HelpGroup, () => Array<any>> = {\n            Usage             : () => ([\n                output = output.concat([\n                    `${helper.styleTitle('Usage:')} ${helper.styleUsage(helper.commandUsage(cmd))}`,\n                    '',\n                ]),\n            ]),\n            CommandDescription: () => {\n                const commandDescription = helper.commandDescription(cmd);\n                if ( commandDescription.length > 0 ) {\n                    return ([\n                        helper.boxWrap(helper.styleCommandDescription(commandDescription), helpWidth),\n                        '',\n                    ]);\n                }\n                return [];\n            },\n            CommandsList      : () => {\n                const commandList = helper.visibleCommands(cmd).map((cmd) => ([\n                    ' '+helper.styleSubcommandTerm(helper.subcommandTerm(cmd)),\n                    helper.styleSubcommandDescription(helper.subcommandDescription(cmd)),\n                    helper.subcommandExtraColumn(cmd as any)\n                ]));\n                    // return callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(cmd)), helper.styleSubcommandDescription(helper.subcommandDescription(cmd)));\n                // });\n                if ( commandList.length > 0 ) {\n                    return ([\n                        helper.styleTitle('Commands:'),\n                        this.table(commandList, { colWidths: [ termWidth + 5, termWidth * 3 ] }),\n                        // ...commandList,\n                        '',\n                    ]);\n                }\n                return [];\n            },\n            ArgumentsList     : () => {\n\n                const argumentList = helper.visibleArguments(cmd).map((argument) => ([\n                    helper.styleArgumentTerm(helper.argumentTerm(argument)),\n                    helper.styleArgumentDescription(helper.argumentDescription(argument as any)),\n                    helper.argumentExtraColumn(argument),\n                ]));\n                if ( argumentList.length > 0 ) {\n                    return ([\n                        helper.styleTitle('Arguments:'),\n                        this.table(argumentList, { colWidths: [ termWidth + 5, termWidth * 3 ] }),\n                        '',\n                    ]);\n                }\n                return [];\n            },\n            OptionsList       : () => {\n                const optionList = this.transformOptionList(helper, this.seperateOptionsByNewLine, helper.visibleOptions(cmd) as any);\n                if ( optionList.length > 0 ) {\n                    return ([\n                        helper.styleTitle('Options:'),\n                        this.table(optionList, { colWidths: [ termWidth + 5, termWidth * 3 ] }),\n                        '',\n                    ]);\n                }\n                return [];\n            },\n            GlobalOptionsList : () => {\n                if ( helper.showGlobalOptions ) {\n                    const globalOptionList = this.transformOptionList(helper, this.seperateGlobalOptionsByNewLine, helper.visibleGlobalOptions(cmd));\n                    if ( globalOptionList.length > 0 ) {\n                        return ([\n                            helper.styleTitle('Global Options:'),\n                            this.table(globalOptionList, { colWidths: [ termWidth + 5, termWidth * 3 ] }),\n                            '',\n                        ]);\n                    }\n                }\n                return [];\n            },\n        };\n\n        let output = [];\n\n        Object\n        .entries(this.outputOrder)\n        .map(([ group, order ]) => ({ group, order }))\n        .filter(({ order }) => order !== false)\n        .sort(firstBy('order', { direction: 1 }))\n        .forEach(({ group, order }) => {\n            output.push(...groups[ group ]());\n        });\n        return output.join('\\n');\n    }\n\n}\n\nexport namespace Help { export type Help = BaseHelp }\n;\n\n\n"]}