Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@commander-js/extra-typings
Advanced tools
Infer strong typings for commander options and action handlers
This package offers TypeScript typings for commander
which infer strong types for:
.opts()
The runtime is supplied by commander. This package is all about the typings.
Usage
@commander-js/extra-typings
using your preferred package managercommander
, if not already installed (peer dependency)@commander-js/extra-typings
instead of commander
The installed version of this package should match the major and minor version numbers of the installed commander package, but the patch version number is independent (following pattern used by Definitely Typed).
Credit: this builds on work by @PaperStrike in https://github.com/tj/commander.js/pull/1758
Command
, Argument
, or Option
(see subclass.test-d.ts)
this
Command
returns base class not subclass from .command(name)
Option
and Argument
The types are built up as the options and arguments are defined. The usage pattern for action handlers is easy. Just chain the action handler after the options and arguments.
import { program } from '@commander-js/extra-typings';
program.command('print')
.argument('<file>')
.option('--double-sided')
.action((targetFile, options) => {
// command-arguments and options are fully typed
});
For working with a single command without an action handler, the configuration need to be done at the same time as the variable is declared.
import { Command } from '@commander-js/extra-typings';
// broken pattern
const program = new Command(); // program type does not include options or arguments
program.option('-d, --debug'); // adding option does not change type of program
const options = program.opts(); // dumb type
import { Command } from '@commander-js/extra-typings';
// working pattern
const program = new Command()
.option('-d, --debug'); // program type includes chained options and arguments
const options = program.opts(); // smart type
Use a "const assertion" on the choices to narrow the option type from string
:
const program = new Command()
.addOption(new Option('--drink-size <size>').choices(['small', 'medium', 'large'] as const))
.parse();
const drinkSize = program.opts().drinkSize; // "small" | "medium" | "large" | undefined
[12.1.0] (2024-05-18)
FAQs
Infer strong typings for commander options and action handlers
The npm package @commander-js/extra-typings receives a total of 308,891 weekly downloads. As such, @commander-js/extra-typings popularity was classified as popular.
We found that @commander-js/extra-typings demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.