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

identitate

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

identitate

Custom identity functions for composability

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
20K
increased by6.38%
Maintainers
1
Weekly downloads
 
Created
Source

identitate

A tiny custom identity function creator for composable softwares.

Table of contents

  • Usage
  • Pre-build methods
  • Custom methods
  • Browser support
  • Development

Usage

import {createIdentity, identity, identitySecond, identityLast, identitySecondLast} from 'identitate';

// use built-in methods
console.log(identity('first', 'second', 'third', 'fourth', 'fifth')); // 'first'
console.log(identitySecond('first', 'second', 'third', 'fourth', 'fifth')); // 'second'
console.log(identityLast('first', 'second', 'third', 'fourth', 'fifth')); // 'fifth'
console.log(identitySecondLast('first', 'second', 'third', 'fourth', 'fifth')); // 'fourth'

// or create your own
const identityThird = createIdentity(2);
const identityThirdLast = createIdentity(-3);
const identityFirstNested = createIdentity(0, 'deeply[0].nested');

console.log(identityThird('first', 'second', 'third', 'fourth', 'fifth')); // 'third'
console.log(identityThirdLast('first', 'second', 'third', 'fourth', 'fifth')); // 'third'
console.log(identityFirstNested({deeply: [{nested: 'value'}]}, 'second', 'third', 'fourth', 'fifth')); // 'value'

Pre-built methods

identity

returns first argument passed to it

The classic identity function:

console.log(identity('first', 'second', 'third', 'fourth', 'fifth')); // 'first'
identitySecond

returns second argument passed to it

console.log(identitySecond('first', 'second', 'third', 'fourth', 'fifth')); // 'second'

Example usage when creating meta properties with the popular redux-actions package:

import {identity, identitySecond} from 'identitate';
import {createAction} from 'redux-actions';

export const doThing = createAction('DO_THING', identity, identitySecond);

console.log(doThing('payload', 'meta')); // {meta: 'meta', payload: 'payload', type: 'DO_THING'}
identityLast

returns last argument passed to it, regardless of total number of arguments

console.log(identityLast('first', 'second', 'third', 'fourth', 'fifth')); // 'fifth'
console.log(identityLast('first', 'second', 'third')); // 'third'
identitySecondLast

returns second-to-last argument passed to it, regardless of total number of arguments

console.log(identityLast('first', 'second', 'third', 'fourth', 'fifth')); // 'fourth'
console.log(identityLast('first', 'second', 'third')); // 'second'

Custom methods

createIdentity

creates a new identity method based on the parameters passed

createIdentity(position: number[, path: (Array<number|string>|number|string)]): any

// use a positive number to get the index of the arguments (zero-indexed)
const identityFourth = createIdentity(3);

console.log(identityLast('first', 'second', 'third', 'fourth', 'fifth')); // 'fourth'

// use a negative number to get the index of the arguments relative to the last
const identityThirdLast = createidentity(-3);

console.log(identityLast('first', 'second', 'third', 'fourth', 'fifth')); // 'third'

// include a path to get the deeply-nested value of that argument
const identityNested = createIdentity(0, 'deeply.nested');

console.log(identityNested({deeply: {nested: 'value'}})); // 'value'

The path parameter uses pathington under the hood for path parsing, so check there for valid values.

Browser support

  • Chrome (all versions)
  • Firefox (all versions)
  • Edge (all versions)
  • Opera 15+
  • IE 9+
  • Safari 6+
  • iOS 8+
  • Android 4+

Development

Standard stuff, clone the repo and npm install dependencies. The npm scripts available:

  • build => run webpack to build development dist file with NODE_ENV=development
  • build:minified => run webpack to build production dist file with NODE_ENV=production
  • dev => run webpack dev server to run example app / playground
  • dist => runs build and build-minified
  • lint => run ESLint against all files in the src folder
  • prepublish => runs compile-for-publish
  • prepublish:compile => run lint, test:coverage, transpile:es, transpile:lib, dist
  • test => run AVA test functions with NODE_ENV=test
  • test:coverage => run test but with nyc for coverage checker
  • test:watch => run test, but with persistent watcher
  • transpile:lib => run babel against all files in src to create files in lib
  • transpile:es => run babel against all files in src to create files in es, preserving ES2015 modules (for pkg.module)

Keywords

FAQs

Package last updated on 05 Jan 2019

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