JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 82
  • Score
    100M100P100Q72622F
  • License ISC

Async versions of Ramda's pipe and compose functions

Package Exports

  • ramda-async

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ramda-async) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ramda-async

Provides pipeAsync and traversePromises functions that play well with the rest of Ramda ecosystem. Now also plays "okish" with TypeScript.

Install

npm install ramda-async

Example usage

import { pipeAsync, traversePromises } from 'ramda-async';
import { reduce, map, prop } from 'ramda';

pipeAsync(
  // string[] -> Promise<Response>[]
  map(fetch),
  // Promise<Response>[] -> Promise<Response[]>
  traversePromises,
  // Promise<Response[]> -> Promise<object>[]
  map(r => r.json()),
  // Promise<object>[] -> Promise<object[]>
  traversePromises,
  // Promise([object]) -> Promise([number])
  map(prop('total_count')),
  // Promise([number]) -> Promise<number>
  reduce((r, c) => r + c , 0),
)([
  "https://api.github.com/search/repositories?q=ramda",
  "https://api.github.com/search/repositories?q=react",
])
  // Prints total number of repositories found by two queries above
  .then(console.log);

You can run the example here

Api

pipeAsync(...steps)(initialValue)

Performs left-to-right function composition of all the steps, automatically lifts the initial value to a promise and pipes it through the composed steps.

traversePromises(arrayOfPromises)

Wraps the array of promises with Promise.all, so it traverses the types like this:

declare function traverse<A>(arrayOfPromises: Promise<A>[]): Promise<A[]>