UNPKG

nx-mesh

Version:
51 lines (50 loc) 2.01 kB
import type { Simplify } from 'type-fest'; import type { Arguments, CliArguments } from './arguments'; import type { CliEnv, Env } from './env'; /** * Available GraphQL Mesh CLI commands */ export declare type Command = 'build' | 'dev' | 'serve-source' | 'start' | 'validate'; /** * Command Options that can be passed to a node:child_process. */ export declare type CommandOptions<TArgs extends Arguments = Arguments, TEnv extends Env = Env> = { args: TArgs; env: TEnv; }; /** * Arguments used by all CLI commands */ export declare type SharedArgs = Pick<Arguments, 'dir' | 'require'>; /** * Arguments used by the build command */ export declare type BuildArgs = Simplify<SharedArgs & Pick<Arguments, 'fileType'>>; /** * Arguments used by the dev command */ export declare type DevArgs = Simplify<SharedArgs & Pick<Arguments, 'port'>>; /** * Arguments used by the serve-source command */ export declare type ServeSourceArgs = SharedArgs; /** * Arguments used by the start command */ export declare type StartArgs = Simplify<SharedArgs & Pick<Arguments, 'port'>>; /** * Arguments used by the validate command */ export declare type ValidateArgs = SharedArgs; /** * Options used by the GraphQL Mesh CLI commands */ export declare type Options<TCommand extends Command> = TCommand extends 'build' ? CommandOptions<BuildArgs> : TCommand extends 'dev' ? CommandOptions<DevArgs> : TCommand extends 'serve-source' ? CommandOptions<ServeSourceArgs> : TCommand extends 'start' ? CommandOptions<StartArgs> : TCommand extends 'validate' ? CommandOptions<ValidateArgs> : CommandOptions; /** * Command Options in a format that can be passed to the GraphQL Mesh CLI. */ export declare type CommandCliOptions<TOptions extends CommandOptions> = { args: CliArguments<TOptions['args']>; env: CliEnv<TOptions['env']>; }; export declare const getCommandOptions: <TCommand extends Command, TOptions extends Options<TCommand> = Options<TCommand>>(options: TOptions) => CommandCliOptions<TOptions>;