import { Args, Command, CommandContext, DefaultGunshiParams, GunshiParams, PluginWithExtension } from "@gunshi/plugin"; import { Args as Args$1 } from "args-tokens"; //#region ../gunshi/src/types.d.ts /** * @author kazuya kawaguchi (a.k.a. kazupon) * @license MIT */ //#endregion //#region ../shared/src/constants.d.ts /** * @author kazuya kawaguchi (a.k.a. kazupon) * @license MIT */ /** * @author kazuya kawaguchi (a.k.a. kazupon) * @license MIT */ declare const BUILT_IN_PREFIX = "_"; declare const PLUGIN_PREFIX = "g"; declare const ARG_PREFIX = "arg"; declare const BUILT_IN_KEY_SEPARATOR = ":"; type CommonArgType = { readonly help: { readonly type: 'boolean'; readonly short: 'h'; readonly description: string; }; readonly version: { readonly type: 'boolean'; readonly short: 'v'; readonly description: string; }; }; declare const COMMON_ARGS: CommonArgType; declare const COMMAND_BUILTIN_RESOURCE_KEYS: readonly ["USAGE", "COMMAND", "SUBCOMMAND", "COMMANDS", "ARGUMENTS", "OPTIONS", "EXAMPLES", "FORMORE", "NEGATABLE", "DEFAULT", "CHOICES"]; declare const ARG_ERROR_RESOURCE_KEYS: readonly ["err:arg:required-option", "err:arg:required-positional", "err:arg:invalid-type", "err:arg:invalid-choice", "err:arg:custom-parse", "err:arg:unknown-option"]; declare const COMMAND_ERROR_RESOURCE_KEYS: readonly ["err:cmd:not-found"]; declare const SUGGESTION_ERROR_RESOURCE_KEYS: readonly ["err:suggestion:did-you-mean"]; //#endregion //#region ../plugin-i18n/src/types.d.ts //#endregion //#region ../plugin-i18n/src/helpers.d.ts //#endregion //#region ../plugin-i18n/src/translation.d.ts //#endregion //#region ../gunshi/src/index.d.ts //#endregion //#region ../shared/src/types.d.ts type RemoveIndexSignature = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K] }; /** * Make all properties in T deeply writeable (not readonly) */ /** * Remove index signature from object or record type. */ type RemovedIndex = RemoveIndexSignature<{ [K in keyof T]: T[K] }>; /** * Resolve a key on {@link Args}. */ type KeyOfArgs = keyof A | { [K in keyof A]: A[K]['type'] extends 'boolean' ? A[K]['negatable'] extends true ? `no-${Extract}` : never : never }[keyof A]; /** * Generate a namespaced key. */ type GenerateNamespacedKey = `${Prefixed}${typeof BUILT_IN_KEY_SEPARATOR}${Key}`; /** * Command i18n built-in arguments keys. */ type CommandBuiltinArgsKeys = keyof typeof COMMON_ARGS; /** * Command i18n built-in resource keys. */ type CommandBuiltinResourceKeys = (typeof COMMAND_BUILTIN_RESOURCE_KEYS)[number]; /** * Args validation error resource keys. */ type ArgErrorResourceKeys = (typeof ARG_ERROR_RESOURCE_KEYS)[number]; /** * Command validation error resource keys. */ type CommandErrorResourceKeys = (typeof COMMAND_ERROR_RESOURCE_KEYS)[number]; /** * Suggestion error resource keys. */ type SuggestionErrorResourceKeys = (typeof SUGGESTION_ERROR_RESOURCE_KEYS)[number]; /** * Error resource keys. */ type ErrorResourceKeys = ArgErrorResourceKeys | CommandErrorResourceKeys | SuggestionErrorResourceKeys; /** * Command built-in keys. */ type CommandBuiltinKeys = GenerateNamespacedKey; /** * Command i18n option keys. * The command i18n option keys are used by the i18n plugin for translation. */ type CommandArgKeys>, string>, typeof ARG_PREFIX>> = C extends { name: infer N; } ? (N extends string ? GenerateNamespacedKey : K) : K; /** * Resolve translation keys for command context. */ type ResolveTranslationKeys = {}, // for extended resources R extends string = keyof RemovedIndex, T extends string = (C extends { name: infer N; } ? N extends string ? GenerateNamespacedKey : R : R | CommandBuiltinKeys), O = CommandArgKeys> = ErrorResourceKeys | CommandBuiltinKeys | O | T; //#endregion //#region ../shared/src/localization.d.ts //#endregion //#region ../shared/src/utils.d.ts //#endregion //#region ../shared/src/index.d.ts //#endregion //#region src/types.d.ts /** * The unique identifier for usage renderer plugin. */ declare const pluginId: GenerateNamespacedKey<'renderer', typeof PLUGIN_PREFIX>; /** * Type representing the unique identifier for usage renderer plugin. */ type PluginId = typeof pluginId; /** * Extended command context which provides utilities via usage renderer plugin. * These utilities are available via `CommandContext.extensions['g:renderer']`. * * @typeParam G - A type extending {@link GunshiParams} to specify the shape of command parameters. */ interface UsageRendererExtension = DefaultGunshiParams> { /** * Render the text message. * * @typeParam A - The type of {@linkcode Args | arguments} defined in the command parameters. * @typeParam C - The type representing the command context. * @typeParam E - The type representing extended resources for localization. * * @param key - The translation key to be resolved. * @param values - An optional record of values to interpolate into the translation string. * @returns The resolved translation string with interpolated values if provided. */ text: = {}, // for extended resources K = ResolveTranslationKeys>(key: K, values?: Record) => Promise; /** * Load commands * * @typeParam G - A type extending {@link GunshiParams} to specify the shape of command parameters. * * @returns A list of commands loaded from the usage renderer plugin. */ loadCommands: () => Promise[]>; } //#endregion //#region src/header.d.ts /** * Render the header. * * @param ctx - A {@link CommandContext | command context} * @returns A rendered header. */ declare function renderHeader(ctx: Readonly>): Promise; //#endregion //#region src/usage.d.ts /** * Render the usage. * * @param ctx - A {@link CommandContext | command context} * @returns A rendered usage. */ declare function renderUsage(ctx: Readonly>): Promise; //#endregion //#region src/validation.d.ts /** * Render the validation errors. * * @param ctx - A {@link CommandContext | command context} * @param error - An {@link AggregateError} of option in `args-token` validation * @returns A rendered validation error. */ declare function renderValidationErrors(ctx: CommandContext, error: AggregateError): Promise; //#endregion //#region src/index.d.ts /** * usage renderer plugin * * @returns A defined plugin as usage renderer */ declare function renderer(): PluginWithExtension; //#endregion export { PluginId, UsageRendererExtension, renderer as default, pluginId, renderHeader, renderUsage, renderValidationErrors };