Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

value-or-function

Package Overview
Dependencies
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

value-or-function

Normalize a value or function, applying extra args to the function

  • 1.2.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
976K
decreased by-43.56%
Maintainers
2
Weekly downloads
 
Created
Source

value-or-function

NPM version Downloads Build Status AppVeyor Build Status Coveralls Status Gitter chat

Normalize a value or function, applying extra args to the function

Example

var normalize = require('value-of-function');

// Values matching type are returned
var isEnabled = normalize('boolean', true);
// isEnabled === true

// Values not matching type return null
var isEnabled = normalize('boolean', 1);
// isEnabled === null

// Functions are called
var isEnabled = normalize('boolean', function() {
  return false;
});
// isEnabled === false

// Extra arguments are applied to function
var count = normalize('number', function(a, b) {
  return a + b;
}, 1, 2);
// count === 3

// Values one of multiple types are returned
var isEnabled = normalize(['string', 'boolean'], true);
// isEnabled === true

// Values matching predicate are returned
var now = new Date();
var enabledSince = normalize(function(value) {
  return value.constructor === Date;
}, now);
// enabledSince === now

// Convenience methods are available
var result = normalize.object({});
var result = normalize.number(1);
var result = normalize.string('');
var result = normalize.symbol(Symbol());
var result = normalize.boolean(true);
var result = normalize.function(function() {});
var result = normalize.undefined(undefined);
var result = normalize.date(new Date());
var result = normalize.date(1);

API

normalize(predicate, value[, ...appliedArguments])

Takes a predicate function predicate to test against value. Also optionally takes any extra arguments to apply to value if value is a function.

If the result of predicate(value) is true, the value is returned. If false and value is a function, the function is called with any extra arguments supplied to normalize.

If value is neither match for the predicate or a function, null is returned.

If value is a function and the result of calling the function does not match the predicate, null is returned.

If predicate is a string, the applied predicate is typeof value === predicate.

If predicate is an array, normalized is called with each element in turn until one matches or none matches.

normalize.object(value[, ...appliedArguments])

Convenience method for normalize('object', ...).

normalize.number(value[, ...appliedArguments])

Convenience method for normalize('number', ...).

normalize.string(value[, ...appliedArguments])

Convenience method for normalize('string', ...).

normalize.symbol(value[, ...appliedArguments])

Convenience method for normalize('symbol', ...).

normalize.boolean(value[, ...appliedArguments])

Convenience method for normalize('boolean', ...).

normalize.function(value[, ...appliedArguments])

Convenience method for normalize('function', ...).

normalize.undefined(value[, ...appliedArguments])

Convenience method for normalize('undefined', ...).

normalize.date(value[, ...appliedArguments])

Convenience method for normalize(dateOrTimestamp, ...) where dateOrTimestamp accepts both numbers and instances of Date.

License

MIT

Keywords

FAQs

Package last updated on 19 Jun 2016

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc