1.0.1 • Published 8 years ago

opt-in v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

opt-in

Optional: Utility class for differentiating null, undefined and present values.

Example

Basic Usage

var something = new Optional(5);
something.isPresent(); // returns true
something.get(); // returns 5

var nothing = new Optional(null);
nothing.isPresent(); // returns false
nothing.get(); // throws TypeError

Safe Defaults

let user = getUser();
let userName = Optional.of(user.name).orElse("Anonymous User");
console.log(`Hello ${userName}`);

Simple Control Flow

function handleRequest(request, response) {
  Optional.of(request.headers["Authorization"])
    .ifEmpty(() => {
      response.statusCode = 401;
      response.end("You need an Authorization header to access this."); })
    .map(getUserForAuthToken)
    .ifPresent((user) => {
      response.statusCode = 200;
      response.end("Thanks friend!"); })
    .ifEmpty(() => {
      response.statusCode(500);
      response.end("We couldn't find a user behind that token."); });
}

API

new Optional(value)

Create an Optional.

ParamTypeDescription
valueTvalue to box Optional with

optional.get() ⇒ T

Returns present value or throws when empty.

Kind: instance method of Optional Throws:

  • TypeError

optional.orElse(value) ⇒ T

Returns present value or passed value when empty.

Kind: instance method of Optional

ParamTypeDescription
valueTvalue to return if Optional is empty

optional.isPresent() ⇒ boolean

Returns whether the Optional has a value present.

Kind: instance method of Optional

optional.ifPresent(fn) ⇒ Optional.<T>

Calls supplied function when one is present.

Kind: instance method of Optional

ParamType
fnifPresentCallback

optional.isEmpty() ⇒ boolean

Returns whether the Optional is empty.

Kind: instance method of Optional

optional.ifEmpty(fn) ⇒ Optional.<T>

Calls supplied function if Optional is empty.

Kind: instance method of Optional

ParamType
fnEmptyCallback

optional.map(fn) ⇒ Optional.<U> | Optional.<T>

Calls supplied function when value is present and returns an Optional of the function's result. Otherwise returns an empty Optional.

Kind: instance method of Optional Template: U

ParamType
fnMapCallback

optional.flatMap(fn) ⇒ Optional.<U> | Optional.<T>

Calls supplied function when value is present and returns an Optional of the function's result. Unlike map, if supplied function returns an Optional, then it is not boxed. Otherwise returns an empty Optional.

Kind: instance method of Optional Template: U

ParamType
fnMapCallback

optional.filter(fn) ⇒ Optional.<T>

Returns an Optional of present value when passed function returns a truthy value. Otherwise returns an empty Optional.

Kind: instance method of Optional

ParamType
fnFilterCallback

optional.equals(other) ⇒ boolean

Returns result of == comparison with unboxed value and (unboxed if Optional) argument.

Kind: instance method of Optional

ParamTypeDescription
other*value to compare Optional's unboxed value with

optional.strictEquals(other) ⇒ boolean

Returns result of === comparison with unboxed value and (unboxed if Optional) argument.

Kind: instance method of Optional

ParamTypeDescription
other*value to compare Optional's unboxed value with

Optional.of(value) ⇒ Optional.<T>

Convenience initializer; returns an Optional of value.

Kind: static method of Optional Template: T

ParamType
valueT

Optional.empty() ⇒ Optional.<null>

Convenience initializer; returns an empty Optional.

Kind: static method of Optional

Optional.isOptional(optional) ⇒ boolean

Returns whether the argument is an instance of Optional.

Kind: static method of Optional

ParamTypeDescription
optional*variable to test

Optional.isPresent(value) ⇒ boolean

Returns whether value is present (not null and not undefined).

This is simply typeof value !== "undefined" && value !== null.

Kind: static method of Optional

ParamType
value*

Optional.isEmpty(value) ⇒ boolean

Returns whether value is empty (null or undefined).

This is simply typeof value !== "undefined" && value !== null.

Kind: static method of Optional

ParamType
value*

Optional~ifPresentCallback ⇒ undefined

Kind: inner typedef of Optional

ParamTypeDescription
valueTpresent value

Optional~EmptyCallback ⇒ undefined

Kind: inner typedef of Optional

Optional~MapCallback ⇒ U

Kind: inner typedef of Optional Template: U

ParamType
valueT

Optional~FilterCallback ⇒ boolean

Kind: inner typedef of Optional

TypeDescription
Tthe present value