Skip to content

LLM Resources

clippium - API documentation

Classes

Clippium<C>

The main class. Used for create command line interfaces (CLIs).

Example

ts
const cli = new Clippium( data )
cli.fn = async data => {
  // do something
}
await cli.run( process.argv.slice( 2 ) )

Type Parameters

Type ParameterDescription
C extends ClippiumDataMust extend from ClippiumData

Constructors

new Clippium()
ts
new Clippium<C>(data: C, config?: ClippiumConfig): Clippium<C>

Construct a new Clippium instance.

Parameters
ParameterTypeDescription
dataCClippiumData containing information about the commands and flags
config?ClippiumConfigClippium configuration options
Returns

Clippium<C>

Methods

getHelp()
ts
getHelp(argv: Argv): string

Generate a help string based on the current Clippium data and provided arguments.

Parameters
ParameterTypeDescription
argvArgvThe argument vector array.
Returns

string

  • The formatted help string.
getVersion()
ts
getVersion(): undefined | string

Retrieve the version information from the Clippium data.

Returns

undefined | string

  • The version string, or undefined if not set.
parse()
ts
parse(argv: Argv): Parsed<C>

Parse the given Argv and return the parsed data.

Parameters
ParameterTypeDescription
argvArgvArgv array
Returns

Parsed<C>

  • Parsed data
run()
ts
run(argv: Argv): Promise<void>

Parse the given Argv and run the function with the parsed data.

Parameters
ParameterTypeDescription
argvArgvArgv array
Returns

Promise<void>

  • Resolves when the function has finished
validate()
ts
validate(data: FnData<C>): ParsedWithValidation<C>
Parameters
ParameterType
dataFnData<C>
Returns

ParsedWithValidation<C>

Properties

PropertyTypeDescription
configClippiumConfigClippium configuration options
dataCClippiumData containing information about the commands and flags
fn(data: FnData<C>) => void | Promise<void>-

Functions

defineData()

ts
function defineData<C>(data: C): C

A type assertion function that allows you to define a ClippiumData object with the correct type parameters.

Type Parameters

Type Parameter
C extends ClippiumData

Parameters

ParameterTypeDescription
dataCThe Clippium Data object

Returns

C

  • The Clippium Data object

Example

ts
const data = defineData({
  name: 'my-cli',
  commands: {
    hello: {
      desc: 'Say hello',
      flags: {
        name: {
          type: 'string',
          desc: 'Your name',
        },
      },
    },
  },
})

getHelp()

ts
function getHelp<D>(opts: HelpOptions<D>): string

Generate help string based on the given ClippiumData and Argv.

Type Parameters

Type Parameter
D extends ClippiumData

Parameters

ParameterTypeDescription
optsHelpOptions<D>Options

Returns

string

  • Help string

hideBin()

ts
function hideBin(args: Argv): string[]

Return the given Argv array, but without the first two elements which are generally the node and script names.

Parameters

ParameterTypeDescription
argsArgvArgv array

Returns

string[]

  • Argv array without the first two elements

Example

ts
import process from 'node:process'
const args = hideBin( process.argv )

parse()

ts
function parse<D>(opts: ParseOptions<D>): Parsed<D>

Parse the given Argv and return the parsed data.

Type Parameters

Type ParameterDescription
D extends ClippiumDataextends ClippiumData

Parameters

ParameterTypeDescription
optsParseOptions<D>Options

Returns

Parsed<D>

  • Parsed data

parseAndValidate()

ts
function parseAndValidate<D>(opts: ParseAndValidate<D>): ParsedWithValidation<D>

Parse the given Argv and validate the parsed data against the given ClippiumData.

Type Parameters

Type ParameterDescription
D extends ClippiumDataextends ClippiumData

Parameters

ParameterTypeDescription
optsParseAndValidate<D>Options

Returns

ParsedWithValidation<D>

  • Result of the validation

Example

ts
import { parseAndValidate, defineData, withValidation } from 'clippium'
import process from 'node:process'

const data = defineData( withValidation({ ... }) )
const argv = process.argv.slice( 2 )

const validated = parseAndValidate( { data, argv } )

validate()

ts
function validate<D>(opts: ValidateOptions<D>): ParsedWithValidation<D>

Validate the parsed data against the given ClippiumData.

Type Parameters

Type ParameterDescription
D extends ClippiumDataextends ClippiumData

Parameters

ParameterTypeDescription
optsValidateOptions<D>Options

Returns

ParsedWithValidation<D>

  • Result of the validation

Example

ts
import { parse, validate } from 'clippium'
import process from 'node:process'

const data = defineData( {...} )
const argv = process.argv.slice( 2 )
const parsed = parse( { data, argv } )
const validated = validate( { data, parsed } )

withValidation()

ts
function withValidation<C>(data: C): C

Return the same data, but with validation enabled.

Type Parameters

Type ParameterDescription
C extends ClippiumData | WithValidation<ClippiumData>Must extend from ClippiumData

Parameters

ParameterTypeDescription
dataCClippium data

Returns

C

  • The same data, but with validation enabled

Example

ts
import { withValidation, validate, parse } from 'clippium'

const cli = new Clippium( withValidation( data ) )

cli.fn = async data => {
    const {flags} = validate( data );
    if(flags.help) return console.log( data.utils.getHelp() )
}
export default cli

Type Aliases

ClippiumConfig

ts
type ClippiumConfig: {
  error: {
     on: (data: {
        error: Error;
       }) => void;
    };
  help: PartialDeep<HelpConfig>;
  validate: ValidateSettings;
};

Type declaration

NameTypeDescription
error?{ on: (data: { error: Error; }) => void; }Configuration for the error output
error.on?(data: { error: Error; }) => void-
help?PartialDeep<HelpConfig>Configuration for the help output
validate?ValidateSettingsConfiguration for the validation process

ClippiumData

ts
type ClippiumData: {
  desc: string;
  name: string;
  version: string;
 } & CommandOptions;

Type declaration

NameTypeDescription
desc?stringDescription of the CLI
name?stringName of the CLI
version?stringVersion of the CLI

InferFlag<T>

ts
type InferFlag<T>: InferOption<T>;

Type Parameters

Type Parameter
T extends Flag

InferPositional<T>

ts
type InferPositional<T>: InferOption<T>;

Type Parameters

Type Parameter
T extends Positional

InferPositionals<T>

ts
type InferPositionals<T>: T["commands"] extends Record<string, ClippiumData> ? MergeIntersectingProps<_InferedPositionals<T>, UnionToIntersection<{ [K in keyof T["commands"]]: _InferedPositionals<T["commands"][K]> }[keyof T["commands"]]>> : _InferedPositionals<T>;

Type Parameters

Type Parameter
T extends ClippiumData

Parsed<D>

ts
type Parsed<D>: Prettify<ParsedData<D>> & {
  raw: ParsedArgv;
};

Type declaration

NameType
rawParsedArgv

Type Parameters

Type Parameter
D extends ClippiumData

ParsedStrict<T>

ts
type ParsedStrict<T>: StripIndexSignature<Parsed<T>>;

Type Parameters

Type Parameter
T extends ClippiumData