Socket
Book a DemoInstallSign in
Socket

2belt

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

2belt

Useful utility functions with strong FP support

1.0.1
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

2belt

A library of higher order functions that is immutable, minimalist and versatile

Under construction

This module is still under internal development. We are working on:

  • firming up the API
  • tree shaking
  • usable in all browsers

Available functions

  • filter(obj, fn(val, key))
  • reject(obj, fn(val, key))
  • map(obj, fn(val, key))
  • remap(obj, fn(val, key))
  • shuffle(arr)
  • sortBy(arr, key, desc?)
  • toPairs(obj)
  • fromPairs(arr)
  • groupBy(arr, keyFn, valFn)

How to use

Let's try to make it compatible with both CommonJS and ES6 module systems, with the following emphasis:

  • Default is CommonJS
  • CommonJS allows cherry pick
  • We'll keep it this way for 2belt foreverish, so users are not screwed by breaking changes

Possible usage patterns are:

const { filter, reject } = require('2belt');
const filter = require('2belt/filter');
const belt = require('2belt');

import * as belt from '2belt/es';
import { filter, reject } from '2belt/es';

If we ever decide to use module names like Enum, List etc, it would become

const { Enum, List } = require('2belt');
const { filter, reject } = require('2belt/Enum');
const Enum = require('2belt/Enum');
const filter = require('2belt/Enum/filter');

import { Enum, List } from '2belt/es';

Likelihood of using module names

For a standard library, making the user import each function individually is somewhat inconvenient. For example, if there are only 4 modules total, the user can always just import those 4 modules and be done, like in Elixir. The downside of housing the functions under modules is that the user has to search through the different modules for a function. Also it is somewhat convenient to have functions that work across different object types.

Decision:

  • let's stay with no module name for now
  • if the number of functions grow, we should move into modules because
    • there would be too many functions for users to import individually
    • it would be harder to remember without organization
  • unless we decide we want user to do import * as belt from '2belt/es';

FAQs

Package last updated on 28 Apr 2022

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

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.