| import * as Runtime from "../../Runtime.ts"; | |
| import * as Schema from "../../Schema.ts"; | |
| /** | |
| * @category type IDs | |
| * @since 4.0.0 | |
| */ | |
| declare const TypeId = "~effect/cli/CliError"; | |
| /** | |
| * Type guard to check if a value is a CLI error. | |
| * | |
| * **Example** (Checking CLI errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const handleError = (error: unknown) => { | |
| * if (CliError.isCliError(error)) { | |
| * console.log("CLI Error:", error.message) | |
| * return Effect.succeed("Handled CLI error") | |
| * } | |
| * return Effect.fail("Unknown error") | |
| * } | |
| * | |
| * // Example usage in error handling | |
| * const program = Effect.gen(function*() { | |
| * const result = yield* Effect.try({ | |
| * try: () => ({ success: true }), | |
| * catch: (error) => error | |
| * }) | |
| * handleError(result) | |
| * }) | |
| * ``` | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isCliError: (u: unknown) => u is CliError; | |
| /** | |
| * Union type representing all possible CLI error conditions. | |
| * | |
| * **Example** (Handling CLI errors) | |
| * | |
| * ```ts | |
| * import type { CliError } from "effect/unstable/cli" | |
| * | |
| * const handleCliError = (error: CliError.CliError): void => { | |
| * switch (error._tag) { | |
| * case "UnrecognizedOption": | |
| * console.log(`Unknown flag: ${error.option}`) | |
| * break | |
| * case "MissingOption": | |
| * console.log(`Required flag missing: ${error.option}`) | |
| * break | |
| * case "InvalidValue": | |
| * console.log(`Invalid value: ${error.value} for ${error.option}`) | |
| * break | |
| * case "ShowHelp": | |
| * // Display help for the command path | |
| * console.log(`Help requested for: ${error.commandPath.join(" ")}`) | |
| * break | |
| * default: | |
| * console.log(error.message) | |
| * } | |
| * } | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type CliError = UnrecognizedOption | DuplicateOption | MissingOption | MissingArgument | InvalidValue | UnknownSubcommand | ShowHelp | UserError; | |
| declare const UnrecognizedOption_base: Schema.Class<UnrecognizedOption, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"UnrecognizedOption">; | |
| readonly option: Schema.String; | |
| readonly command: Schema.optional<Schema.$Array<Schema.String>>; | |
| readonly suggestions: Schema.$Array<Schema.String>; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when an unrecognized option is encountered. | |
| * | |
| * **Example** (Creating unrecognized option errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * // Creating an unrecognized option error | |
| * const unrecognizedError = new CliError.UnrecognizedOption({ | |
| * option: "--unknown-flag", | |
| * command: ["deploy", "production"], | |
| * suggestions: ["--verbose", "--force"] | |
| * }) | |
| * | |
| * console.log(unrecognizedError.message) | |
| * // "Unrecognized flag: --unknown-flag in command deploy production | |
| * // | |
| * // Did you mean this? | |
| * // --verbose | |
| * // --force" | |
| * | |
| * // In CLI parsing context | |
| * const parseCommand = Effect.gen(function*() { | |
| * // If parsing encounters unknown flag | |
| * return yield* unrecognizedError | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class UnrecognizedOption extends UnrecognizedOption_base { | |
| /** | |
| * Marks this value as a CLI parsing error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Formats the unrecognized option with command context and suggestions. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const DuplicateOption_base: Schema.Class<DuplicateOption, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"DuplicateOption">; | |
| readonly option: Schema.String; | |
| readonly parentCommand: Schema.String; | |
| readonly childCommand: Schema.String; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when duplicate option names are detected between parent and child commands. | |
| * | |
| * **Example** (Creating duplicate option errors) | |
| * | |
| * ```ts | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const duplicateError = new CliError.DuplicateOption({ | |
| * option: "--verbose", | |
| * parentCommand: "myapp", | |
| * childCommand: "deploy" | |
| * }) | |
| * | |
| * console.log(duplicateError.message) | |
| * // "Duplicate flag name "--verbose" in parent command "myapp" and subcommand "deploy". | |
| * // Parent will always claim this flag (Mode A semantics). Consider renaming one of them to avoid confusion." | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class DuplicateOption extends DuplicateOption_base { | |
| /** | |
| * Marks this value as a CLI configuration error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Explains which parent and child commands define the duplicate option. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const MissingOption_base: Schema.Class<MissingOption, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"MissingOption">; | |
| readonly option: Schema.String; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when a required option is missing. | |
| * | |
| * **Example** (Creating missing option errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const missingOptionError = new CliError.MissingOption({ | |
| * option: "api-key" | |
| * }) | |
| * | |
| * console.log(missingOptionError.message) | |
| * // "Missing required flag: --api-key" | |
| * | |
| * // In validation context | |
| * const validateRequiredOptions = (options: Record<string, string | undefined>) => | |
| * Effect.gen(function*() { | |
| * const apiKey = options["api-key"] | |
| * if (!apiKey) { | |
| * return yield* missingOptionError | |
| * } | |
| * return apiKey | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class MissingOption extends MissingOption_base { | |
| /** | |
| * Marks this value as a missing CLI option error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Formats the missing required flag for display. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const MissingArgument_base: Schema.Class<MissingArgument, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"MissingArgument">; | |
| readonly argument: Schema.String; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when a required positional argument is missing. | |
| * | |
| * **Example** (Creating missing argument errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const missingArgError = new CliError.MissingArgument({ | |
| * argument: "target" | |
| * }) | |
| * | |
| * console.log(missingArgError.message) | |
| * // "Missing required argument: target" | |
| * | |
| * // In argument parsing | |
| * const parseArguments = (args: Array<string>) => | |
| * Effect.gen(function*() { | |
| * if (args.length === 0) { | |
| * return yield* missingArgError | |
| * } | |
| * return args[0] | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class MissingArgument extends MissingArgument_base { | |
| /** | |
| * Marks this value as a missing CLI argument error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Formats the missing required positional argument for display. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const InvalidValue_base: Schema.Class<InvalidValue, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"InvalidValue">; | |
| readonly option: Schema.String; | |
| readonly value: Schema.String; | |
| readonly expected: Schema.String; | |
| readonly kind: Schema.Union<readonly [Schema.Literal<"flag">, Schema.Literal<"argument">]>; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when an option or argument value is invalid. | |
| * | |
| * **Example** (Creating invalid value errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const invalidValueError = new CliError.InvalidValue({ | |
| * option: "port", | |
| * value: "abc123", | |
| * expected: "integer between 1 and 65535", | |
| * kind: "flag" | |
| * }) | |
| * | |
| * console.log(invalidValueError.message) | |
| * // "Invalid value for flag --port: "abc123". Expected: integer between 1 and 65535" | |
| * | |
| * // For positional arguments | |
| * const invalidArgError = new CliError.InvalidValue({ | |
| * option: "count", | |
| * value: "abc", | |
| * expected: "integer", | |
| * kind: "argument" | |
| * }) | |
| * | |
| * console.log(invalidArgError.message) | |
| * // "Invalid value for argument <count>: "abc". Expected: integer" | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class InvalidValue extends InvalidValue_base { | |
| /** | |
| * Marks this value as an invalid CLI value error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Formats the invalid flag or argument value with the expected input. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const UnknownSubcommand_base: Schema.Class<UnknownSubcommand, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"UnknownSubcommand">; | |
| readonly subcommand: Schema.String; | |
| readonly parent: Schema.optional<Schema.$Array<Schema.String>>; | |
| readonly suggestions: Schema.$Array<Schema.String>; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error thrown when an unknown subcommand is encountered. | |
| * | |
| * **Example** (Creating unknown subcommand errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * const unknownSubcommandError = new CliError.UnknownSubcommand({ | |
| * subcommand: "deplyo", // typo | |
| * parent: ["myapp"], | |
| * suggestions: ["deploy", "destroy"] | |
| * }) | |
| * | |
| * console.log(unknownSubcommandError.message) | |
| * // "Unknown subcommand "deplyo" for "myapp" | |
| * // | |
| * // Did you mean this? | |
| * // deploy | |
| * // destroy" | |
| * | |
| * // In subcommand parsing | |
| * const parseSubcommand = (subcommand: string) => | |
| * Effect.gen(function*() { | |
| * const validCommands = ["deploy", "destroy", "status"] | |
| * if (!validCommands.includes(subcommand)) { | |
| * return yield* unknownSubcommandError | |
| * } | |
| * return subcommand | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class UnknownSubcommand extends UnknownSubcommand_base { | |
| /** | |
| * Marks this value as an unknown CLI subcommand error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| /** | |
| * Formats the unknown subcommand with parent command context and suggestions. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| get message(): string; | |
| } | |
| declare const UserError_base: Schema.Class<UserError, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"UserError">; | |
| readonly cause: Schema.Defect; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error wrapper for user handler failures in the CLI error channel. | |
| * | |
| * **Example** (Wrapping user errors) | |
| * | |
| * ```ts | |
| * import { Effect } from "effect" | |
| * import { CliError } from "effect/unstable/cli" | |
| * | |
| * // Wrapping user errors | |
| * const userError = new CliError.UserError({ | |
| * cause: new Error("Database connection failed") | |
| * }) | |
| * | |
| * // In command handler | |
| * const deployCommand = Effect.gen(function*() { | |
| * const result = yield* Effect.try({ | |
| * try: () => ({ deployed: true }), | |
| * catch: (error) => new CliError.UserError({ cause: error }) | |
| * }) | |
| * return result | |
| * }) | |
| * | |
| * // In error handling | |
| * const handleError = (error: CliError.CliError): Effect.Effect<number> => { | |
| * if (error._tag === "UserError") { | |
| * console.log("Command failed:", error.cause) | |
| * return Effect.succeed(1) // Exit code 1 | |
| * } | |
| * return Effect.succeed(0) | |
| * } | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class UserError extends UserError_base { | |
| /** | |
| * Marks this value as a user handler error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| } | |
| /** | |
| * Schema for concrete CLI errors that can be reported together with help output. | |
| * | |
| * **Details** | |
| * | |
| * This excludes `ShowHelp` itself, allowing parse and validation errors to be | |
| * stored in `ShowHelp.errors` without nesting another help-control value. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare const NonShowHelpErrors: Schema.Union<readonly [ | |
| typeof UnrecognizedOption, | |
| typeof DuplicateOption, | |
| typeof MissingOption, | |
| typeof MissingArgument, | |
| typeof InvalidValue, | |
| typeof UnknownSubcommand, | |
| typeof UserError | |
| ]>; | |
| /** | |
| * Type of CLI errors that are not `ShowHelp`. | |
| * | |
| * **Details** | |
| * | |
| * These errors can be accumulated and attached to `ShowHelp.errors` when the | |
| * runner should display help along with the underlying parse or validation | |
| * failures. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type NonShowHelpErrors = typeof NonShowHelpErrors.Type; | |
| declare const ShowHelp_base: Schema.Class<ShowHelp, Schema.Struct<{ | |
| readonly _tag: Schema.tag<"ShowHelp">; | |
| readonly commandPath: Schema.$Array<Schema.String>; | |
| readonly errors: Schema.$Array<Schema.Union<readonly [typeof UnrecognizedOption, typeof DuplicateOption, typeof MissingOption, typeof MissingArgument, typeof InvalidValue, typeof UnknownSubcommand, typeof UserError]>>; | |
| }>, import("../../Cause.ts").YieldableError>; | |
| /** | |
| * Error data requesting CLI help rendering for a command path. | |
| * | |
| * **Details** | |
| * | |
| * It is used for explicit help requests and for parse or validation failures | |
| * that should be shown with help text. When `errors` is non-empty, the runtime | |
| * exit code is `1`; otherwise it is `0`. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class ShowHelp extends ShowHelp_base { | |
| readonly [TypeId] = "~effect/cli/CliError"; | |
| readonly [Runtime.errorExitCode]: number; | |
| readonly [Runtime.errorReported] = false; | |
| get message(): string; | |
| } | |
| export {}; | |
| //# sourceMappingURL=CliError.d.ts.map |
Xet Storage Details
- Size:
- 14 kB
- Xet hash:
- f3a39c027004a88cd69b34e0d2c31953b809c3b33995c120128226726f801bff
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.