Files
NapCatQQ/.pnpm-store/v3/files/63/d16df1d9b25384dc3d8d83a8d9ffe98a5d9723411d112988434057374c74d28b599fc004fc8ac217d629dbb82ee13721a740a86a59590a4ccc890eed3cc0b6
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

62 lines
2.0 KiB
Plaintext

import type { ParseArgsConfig } from 'node:util';
import type { AnyFlag, AnyFlags } from './flag-types.js';
import type { PeowlyHelpMessageMeta } from './help-list-types.js';
export type PackageJsonLike = {
name?: string | undefined;
description?: string | undefined;
version?: string | undefined;
bin?: string | Record<string, string | undefined>;
};
export interface PeowlyMeta extends PeowlyHelpMessageMeta {
readonly description?: string | false | undefined;
readonly help?: string | undefined;
readonly name?: string | undefined;
readonly pkg?: PackageJsonLike | undefined;
readonly processTitle?: string | false | undefined;
readonly version?: string | undefined;
}
export interface ExtendedParseArgsConfig<Flags extends AnyFlags> extends Omit<ParseArgsConfig, 'strict' | 'tokens'> {
readonly args?: string[] | undefined;
readonly options?: Flags | undefined;
readonly returnRemainderArgs?: boolean | undefined;
}
export interface PeowlyOptions<Flags extends AnyFlags> extends ExtendedParseArgsConfig<Flags>, PeowlyMeta {}
type TypedFlag<Flag extends AnyFlag> =
// Meow extension
// Flag extends {type: 'number'}
// ? number
// :
Flag extends { type: 'string' }
? string
: Flag extends { type: 'boolean' }
? boolean
: unknown;
type PossiblyOptionalFlag<Flag extends AnyFlag, FlagType> =
// Meow extension
// Flag extends {isRequired: true}
// ? FlagType
// :
Flag extends { 'default': unknown }
? FlagType
: FlagType | undefined;
export type TypedFlags<Flags extends AnyFlags> = {
[F in keyof Flags]: Flags[F] extends { multiple: true }
? PossiblyOptionalFlag<Flags[F], Array<TypedFlag<Flags[F]>>>
: PossiblyOptionalFlag<Flags[F], TypedFlag<Flags[F]>>
};
export interface PeowlyResult<Flags extends AnyFlags> {
input: string[];
flags: TypedFlags<Omit<Flags, 'version' | 'help'>>;
remainderArgs: string[];
showHelp: (exitCode?: number) => never;
}