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

behavior-js

v1.0.7

Published

Simple objects that represent simple behavior

Downloads

11

Readme

behavior-js

NPM

Build Statusdependencies

Motivation

Provide a minimal way to represent a behavior, whether it's allowed and the exceptions to the allowance.

Installation

npm install behavior-js

Roadmap

  • Actions functions
  • Actions functions async and sequential evaluations

Usage

Instantiation

new Behavior(allowed : boolean, exceptions : string[] | string)

Single exception

Let

var Behavior = require('behavior-js');

// Whether the behavior is allowed
var politenessAllowed = true;

// The exception to the behavior
var politenessException = 'crude honesty';

Instantiation

var politeness = new Behavior(politenessAllowed,politenessException);

Multiple exceptions

Let

var Behavior = require('behavior-js');

// Whether the behavior is allowed
var leadershipAllowed = true;

// The exceptions to the behavior
var leadershipExceptions = [
	'ego',
	'superiority'
];

Instantiation

var leadership = new Behavior(leadershipAllowed,leadershipExceptions);

Evaluation

behavior.isAllowed(action : string) : boolean

Let

var Behavior = require('behavior-js');


// Whether the behavior is allowed
var agressionAllowed = false;

// The exceptions to the behavior
var agressionExceptions = [
	// These are good to have, will be allowed.
	'competitiveness',
	'power desire'
];

// The initialization
var agression = new Behavior(agressionAllowed,agressionExceptions);

Evaluation with an exempted value

// Returns true
agression.isAllowed('competitiveness');

Evaluation with a non-exempted value

// Returns false
agression.isAllowed('anger');

Sample use case

Problem

I have a library that parses url query parameters but I would like to prevent some parameters from getting parsed

Solution

Instantiation

var Behavior = require('behavior-js');

// These are the query parameters we want to prevent from getting parsed
var parsingExceptions = [
	'onSuccess',
	'isNewUser'
];

// We instantiate the behavior, allow it and pass it's exceptions
var parsing = new Behavior(true,parsingExceptions);

Usage

// .. somewhere in your awesome query parsing library
queryParser.parseParameter = function(name,value){
	if(parsing.isAllowed(name)){
		// Do your parsing with complete peace of mind
	}
}

Tests

All of the tests are written in Jasmine with the BDD process

Requirements

npm install gulp typescript tslint tsd -g

Run

npm test

Author: Joel Hernández