npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@chiruso/knub-command-manager

v9.1.0

Published

An easy-to-use library for defining and matching text-based commands with arguments and options

Downloads

1

Readme

Knub Command Manager

npm version

Knub Command Manager is a library for managing and matching text-based commands. It was created for use in Knub, a Discord bot framework, but can also be used as standalone.

Features

  • Command prefixes (e.g. !command where ! is the prefix)
  • Regex support for prefixes and command names
  • Required and optional parameters
  • -options and -switches with shortcuts (e.g. -f)
    • Customizable option prefixes (defaults to -- and -)
  • Parameter/option types with runtime validation and type conversion
    • Including custom types
  • Default values for arguments/options
  • "Rest arguments" (multiple arguments returned in an array) and "catch-all" arguments (treats the rest of the string as the value for that argument)
  • Filters that are run before and after commands signature validation
    • "Pre-filters" (run before) are useful for e.g. checking if the command is valid to use in the current context. If a pre-filter fails, command matching is resumed to other potentially matching commands.
    • "Post-filters" (run after) are useful for e.g. command cooldowns. If a post-filter fails, command matching is not resumed and no error is returned, making the result equivalent to no command matching at all.
  • Full TypeScript typings with generics for custom data passed to filters and argument/option type conversion functions and for extra data passed in command configuration

Installation

npm install knub-command-manager

Basic usage

import { CommandManager, parseSignature as p, string } from 'knub-command-manager';

const manager = new CommandManager({
  prefix: '!'
});

const command1 = manager.add('echo', p('<text:string>'));
const command2 = manager.add('ping', { ip: string() });

const matchedCommand = manager.findMatchingCommand('!echo hello');