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

parseArgs

v0.0.2

Published

A fluent DSL for parsing argument objects.

Downloads

14

Readme

parseArgs

A fluent Javascript DSL for parsing the arguments object. Allows for simple, concise optional arguments and repeating numbers of arguments.

Replace your if-else statements today!

Example

var updateOrder = function() {
  var args = parseArgs(arguments)
              .required('name')
              .optional('discountCode', -1, {type: 'number'})
              .optional('referrer', null, {instance: User})
              .required('address')
              .end
  
  $('#orderField').text(
    'Name: ' + args.name + ', discount code: ' + args.discountCode +
    ', referrer: ' + args.referrer + ', address: ' + args.address
  );
}

API

To start the chain, call parseArgs(arguments), with the arguments keyword literally being passed into the function. You can then continue the chain with the following methods:

  • required(name), where name is the name of the argument.
  • optional(name, defaultValue, checker), where name is the name of the argument, defaultValue is a default value to assign to the argument if nothing gets passed in, and check is either an object with a type or instance field or a function. If check is an object, the optional argument will have its type checked against the string set in the type field (if provided), and check whether it's an instance of the class set in the instance field (if provided). If it's a function, the function should be of the form function(arg, index, args), where arg is the current argument being checked, index is the index of that argument in the total number of arguments, and args the argument object provided as an Array. If the function returns true, the argument will be considered to have been passed in and the default value will not be set; if it returns false, the default value will be set.
  • many(name, checker), where name is the name of the argument, and checker is the same as the checker above. Stores the passed-in values in an array; if none are passed in, the array will be empty.

Once the chain is done, just access the chain's end property to finish it off. The parsed arguments will be stored in the returned object using the names given to each of the argument parsing calls.