🚀 Big News:Socket Has Acquired Secure Annex.Learn More →
Socket
Book a DemoSign in
Socket

sbo

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sbo

Support the Bind Operator

latest
Source
npmnpm
Version
1.1.3
Version published
Maintainers
1
Created
Source

sbo

SBO stands for Support the Bind Operator.

Converts value::yourFunction(arg) to yourFunction(value, arg)—but lets your function support either.

Installation

Requires Node.js 6.0.0 or above.

npm i sbo

API

The module exports a single function.

Parameters

  • Optional: Object argument:
    • Optional: arg (integer): The argument index at which this should be inserted. Defaults to 0.
    • Optional: path (string): The dot-separated key path of an options object argument located at index arg into which this should be inserted.
    • Optional: ignoreThis (object, array, or function): this is ignored if ignoreThis strictly equals this, or if ignoreThis is an array containing this, or if ignoreThis is a function which returns true when given this.
  • fn (Function): The function which should receive bind operator support.

Return Value

A wrapper function with bind operator support that calls fn.

Tutorial

Let’s say, for the sake of example, that you have a function called addSuffix:

const addSuffix = (str, suffix) => str + suffix

You use the sbo module to add support for the bind operator:

const supportBindOperator = require('sbo')
const addSuffix = supportBindOperator((str, suffix) => str + suffix)

Now your function can be called either the normal way or with the bind operator:

addSuffix('Hello, world', '!') // 'Hello, world!'
'Hello, world'::addSuffix('!') // 'Hello, world!'

Specifying a Parameter Index

Now let’s swap the order of the parameters:

const addSuffix = (suffix, str) => str + suffix

A bound this would now need to become the argument with an index of 1. To do this, pass an extra argument to sbo:

const supportBindOperator = require('sbo')
const addSuffix = supportBindOperator({arg: 1}, (suffix, str) => str + suffix)

addSuffix('!', 'Hello, world') // 'Hello, world!'
'Hello, world'::addSuffix('!') // 'Hello, world!'

Specifying an Object Argument Key

Let’s try using a deconstructed object parameter:

const addSuffix = ({str, suffix}) => str + suffix

Do the following to direct a bound this to the str key of the object argument at index zero (i.e. the first, and in this case the only, argument):

const supportBindOperator = require('sbo')
const addSuffix = supportBindOperator({path: 'str'}, ({str, suffix}) => str + suffix)

addSuffix({str: 'Hello, world', suffix: '!'}) // 'Hello, world!'
'Hello, world'::addSuffix({suffix: '!'}) // 'Hello, world!'

If you have a nested object parameter, you can use a dot-separated key path.

Check out these other function utility packages.

  • efn: Extracted Function
  • ffn: Filtering Function
  • jfn: Joined Function
  • mfn: Memoized Function
  • ofn: Overloaded Function
  • pfn: Possible Function
  • qfn: Qualified Function
  • vfn: Variadic Function
  • wfn: Wrapper Function
  • xfn: Extended Function
  • 3fn: Three-Way Comparison Function

Keywords

bind

FAQs

Package last updated on 03 Nov 2021

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