GHHG10's picture
download
raw
1.31 kB
import * as Command from "effect/unstable/cli/Command"
type Options<Config extends Command.Command.Config, Commands extends ReadonlyArray<Any>> = {
readonly description?: string
readonly params?: Config
readonly commands?: Commands
}
export interface Node<
Name extends string,
Spec extends Command.Command<Name, any, any, any, any>,
Commands extends Children,
> {
readonly name: Name
readonly spec: Spec
readonly commands: Commands
}
export type Any = Node<string, Command.Command<any, any, any, any, any>, Children>
export type Children = Readonly<Record<string, Any>>
export function make<
const Name extends string,
const Config extends Command.Command.Config = {},
const Commands extends ReadonlyArray<Any> = [],
>(name: Name, options: Options<Config, Commands> = {}) {
const command = Command.make(name, options.params ?? ({} as Config))
const spec = options.description ? command.pipe(Command.withDescription(options.description)) : command
return {
name,
spec,
commands: Object.fromEntries(
(options.commands ?? []).map((command) => [command.name, command]),
) as ChildrenOf<Commands>,
}
}
type ChildrenOf<Commands extends ReadonlyArray<Any>> = {
readonly [Node in Commands[number] as Node["name"]]: Node
}
export * as Spec from "./spec"

Xet Storage Details

Size:
1.31 kB
·
Xet hash:
2da84621c0b7a4c114a5b8a497af8fff83da0f69632aaedf0e5630e5d5ddc3aa

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.