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 🙏

© 2024 – Pkg Stats / Ryan Hefner

bobda

v0.3.0

Published

Some tools for ramda

Downloads

525

Readme

Bobda

XO code style npm version

It's an add-on module for Ramda, so all functions are curry.

Table of Contents


Installation

$ yarn add bobda

or

$ npm install bobda

Documentation

Async Functions

promiseMap

promiseMap(asyncFn : Function, array : Array): Promise

This function allows to apply a map but with an asynchronous function

Arguments

asyncFn: The asynchronous function who whant to apply

array: The array who want to apply a map

Exemple

const {promiseMap} = require('bobda');

const squareAsync = async value =>
  new Promise(resolve => setTimeout(() => resolve(value * value), 30));

const array = [2, 3, 4, 5];
promiseMap(squareAsync)(array); //=> Promise

promiseAll

promiseAll(array : Array<Promise>): Promise

This function allows you to wait until all the promises contained in an array are resolved

Arguments

array: The array of promise

Exemple

const R = require('ramda');
const {promiseAll} = require('bobda');

const incrementAsync = async value =>
  new Promise(resolve => setTimeout(() => resolve(++value), 30));

const squareAsync = async value =>
  new Promise(resolve => setTimeout(() => resolve(value * value), 30));

const value = 2;
promiseAll(R.juxt([incrementAsync, squareAsync]))(value); //=> Promise

promiseProps

promiseProps(object : Object): Promise

This function allows you to wait until all the promises contained in an object as key are resolved

Arguments

object: The array of promise

Exemple

const R = require('ramda');
const {promiseProps} = require('bobda');

const incrementAsync = async value =>
  new Promise(resolve => setTimeout(() => resolve(++value), 30));

const squareAsync = async value =>
  new Promise(resolve => setTimeout(() => resolve(value * value), 30));

const value = 2;

promiseProps(R.applySpec({incrementResult: incrementAsync, squareResult: squareAsync}))(value) //=> Promise

Object properties functions

renameProp

renameProp(from : String ,to : String): object

This function allows you to rename a prop into the given object.

Argments

  • from : Name of the prop you want to rename
  • to : New name you want to give to this prop
  • object : This function is curried by default, last argument (not explicitly given) is the object

Exemple

const myAwesomeObj = {
  prop1 : 'chapi',
  prop2 : 'chapo'
}
const myAwesomePipe = R.pipe(
  renameProp('prop1', 'readTheDoc')
)

myAwesomePipe(myAwesomeObj)
/* =>
{
  readTheDoc : 'chapi',
  prop2 : 'chapo'
}
 */

Note Read test for other examples.

renamePath

renamePath(from : [String] ,to : [String]): object

This function allows you to rename a path into the given object.

Argments

  • from : Name of the path you want to rename
  • to : New name you want to give to this path
  • object : This function is curried by default, last argument (not explicitly given) is the object

Exemple

const myAwesomeObj = {
  prop1 : 'chapi',
  prop2 : {
    chapo : {
      patapo : true
    }
  }
}
const myAwesomePipe = R.pipe(
  renamePath(['prop2','chapo','patapo'], ['chapi','chapo','patapo'])
)

myAwesomePipe(myAwesomeObj)
/* =>
{
  prop1 : 'chapi',
  chapi : {
    chapo : {
      patapo : true
    }
  }
}
 */

Note Read test for other examples.

multiPath

multiPath(mappingRename : [[[String],[String]]] ,object : Object): object

Argments

  • mappingRename : Name of the path you want to rename
  • object : New name you want to give to this path

This function take list of tuples and recursively replace the path [0] with the path [1] into the given object.

Exemple


const listOfPaths = [
  [['une', 'souris', 'verte'], ['qui', 'courait', 'dans']],
  [['l', 'herbe'], ['je', 'la', 'montre']],
  [['a', 'ces'], ['messieurs']]
];

const inObj = {
  une: {souris: {verte: true}},
  l: {herbe: false},
  a: {ces: 0}
};

multiPath(listOfPaths, inObj)
/* =>
{
  qui: {courait: {dans: true}},
  je: {la: {montre: false}},
  messieurs: 0,
  a: {},
  l: {},
  une: {souris: {}}
};
 */

Note

Read test for other examples.