bluecodex
Version:
Turn repetitive dev tasks into CLI commands with Typescript
33 lines (30 loc) • 1.08 kB
text/typescript
import type { DataTypeToken } from "../data-type/data-type-token";
import type { DataTypeCastError } from "../data-type/errors/data-type-cast-error";
import type { ArgFallbackCastError } from "./errors/arg-fallback-cast-error";
import type { InvalidArgTypeError } from "./errors/invalid-arg-type-error";
export type Arg<
Name extends string = string,
Optional extends boolean = boolean,
Type extends DataTypeToken | InvalidArgTypeError<Name, string> =
| DataTypeToken
| InvalidArgTypeError<Name, string>,
ExplicitType extends boolean = boolean,
Fallback extends
| any
| null
| ArgFallbackCastError<Name, DataTypeCastError> = any,
> = {
__objectType__: "arg";
name: Name;
optional: Optional;
type: Type;
explicitType: ExplicitType;
fallback: Fallback;
};
export type ValidArg<
Name extends string = string,
Optional extends boolean = boolean,
Type extends DataTypeToken = DataTypeToken,
ExplicitType extends boolean = boolean,
Fallback extends any | null = any | null,
> = Arg<Name, Optional, Type, ExplicitType, Fallback>;