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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ekz/option

v1.2.6

Published

Option/Maybe type to be used with flow.js

Readme

Description

Simply get rid of all nulls in your code.

This is a clone of Scala's Option class to be used with flow.js.

Examples

// @flow

let valueA = Option.of(null).map(x => x + 2).getOrElse(() => 0);
// valueA = 0

let valueB = Some('any object').flatMap(x => Some(`${x}!!!`)).getOrUndefined();
// valueB = 'any object!!!'

let valueC = Some(null).flatMap(() => Option.of(2)).map(x => x * 3).getOrElse(() => 0);
// valueC = 6

let valueD = Some(1).mapNullable(() => null).getOrReturn(-1);
// valueD = -1

Some(1).equals(Some(1))
// true

None.equals(None)
// true

Some('abc').equals(None)
// false

None.isDefined; // false
Some(1).isDefined; // true
Some(1).isEmpty; // false
Some(null).isEmpty; // false! Option<null> is valid!

Some('foo').get(); // 'foo'
None.get(); // throws an error, use getOrElse or getOrUndefined instead

Some(3).filter(x => x % 2 === 0); // None

Some('bar').forEach(x => {
    console.log(`my value: ${x}`);
});

API

Table of Contents

Option

Represents optional values. Instances of Option are either an instance of Some or the object None.

Parameters

  • $privateToken any

get

Returns the option's value.

Type: function (): A

isEmpty

Returns true if the option is None, false otherwise.

Type: boolean

isDefined

Returns true if the option is an instance of Some, false otherwise.

Type: boolean

Returns boolean

map

Returns a Some containing the result of applying f to this Option's value if this Option is nonempty.

Parameters

  • f function (A): B

Returns Option<B>

mapNullable

Like map, but if resulting value is null, then returns None.

Parameters

  • f function (A): B?

Returns Option<B>

flatMap

Returns the result of applying f to this Option's value if this Option is nonempty. Returns None if this Option is empty. Slightly different from map in that f is expected to return an Option (which could be None).

Parameters

Returns Option<B>

forEach

Apply the given procedure f to the option's value, if it is nonempty.

Parameters

  • f function (A): any

Returns void

filter

Returns this Option if it is nonempty and applying the predicate to this Option's value returns true.

Parameters

Returns Option<A>

getOrElse

Returns the option's value if the option is nonempty, otherwise return the result of evaluating other.

Parameters

  • other function (): B

Returns (A | B)

getOrReturn

Returns the option's value if the option is nonempty, otherwise return other.

Parameters

  • other B

Returns (A | B)

getOrUndefined

Returns the option's value if the option is nonempty, otherwise returns undefined.

Returns (A | void)

equals

Compares the option's value with other option's value and returns true when they match. None always matches other None.

Parameters

Returns boolean

toJSON

Returns value if present, null otherwise. If value contains a method toJSON, returns the result of method call.

Returns any

of

An Option factory which creates Some(x) if the argument is not null, and None if it is null.

Parameters

  • value V??

Returns Option<V>

None

The empty None object

Type: Option<any>

Some

Creates Some(x). Note that Some(null) is valid.

Type: function (value: A): Option<A>

None

The empty None object.

Type: Option<any>

Some

Creates Some(x). Note that Some(null) is valid.

Parameters

  • value A

Returns Option<A>