Skip to main content
Deno 2 is finally here πŸŽ‰οΈ
Learn more

logo image

curry

TypeScript-first curry function without upcast

test GitHub release deno land nest badge deno doc deno version node support version npm download

GitHub (Pre-)Release Date dependencies Status codecov Codacy Badge npm type definitions Commitizen friendly Gitmoji semantic-release License: MIT


✨ Features

  • ⚑ Multi runtime support (Deno, Node.js and Browsers)
  • πŸ“š Pure TypeScript and provides type definition
  • :earth_americas: Universal module, providing ES modules and Commonjs
  • :package: Optimized, super slim size
  • πŸ“„ TSDoc-style comments

Package name

Deno: curry (deno.land, nest.land)

Node.js: curry-rice (npm)

The origin of the word curry-rice is Rice and curry πŸ›.

⚑ Example

const replace = (from: string, to: string, val: string) => val.replace(from, to)
 const curriedReplace = curry(replace)
 const curriedReplace('hello', 'hi', 'hello world') // 'hi world'
 const curriedReplace('hello')('hi', 'hello world') // 'hi world'
 const curriedReplace('hello','hi')('hello world') // 'hi world'
 const curriedReplace('hello')('hi')('hello world') // 'hi world'

πŸ’« Usage

curry provides multi platform modules.

πŸ¦• Deno

deno.land

import { curry } from "https://deno.land/x/curry/mod.ts";

curry(AnyFn);

nest.land

import { curry } from "https://x.nest.land/curry/mod.ts";

curry(AnyFn);

:package: Node.js

NPM package name is curry-rice .

Install

npm i curry-rice
or
yarn add curry-rice

ES modules

import { curry } from "curry-rice";

curry(AnyFn);

Commonjs

const { curry } = require("curry-rice");

curry(AnyFn);

:globe_with_meridians: Browser

The module that bundles the dependencies is obtained from skypack.

<script type="module">
  import { curry } from "https://cdn.skypack.dev/curry-rice";
  curry(AnyFn)
</script>

πŸ’š Supports

ie is no longer supported to reduce bundle size.

The TypeScript version must be 4.1.0 or higher.

This project provides ES modules and Commonjs.

If you have an opinion about what to support, you can open an issue to discuss it.

The browserslist has the following settings.

defaults
last 8 version
not IE <= 11
not ie_mob <= 11
node 6
Deno
Deno
Node.js
Node.js
IE / Edge
Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
iOS Safari
iOS Safari
Samsung
Samsung
Opera
Opera
^1.6.0 ^6.17.0 ^83 ^78 ^83 ^11 ^12.0 ^7.2 ^68

:handshake: Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues.

Contributing guide

🌱 Show your support

Give a ⭐️ if this project helped you!

πŸ’‘ License

Copyright Β© 2021-present TomokiMiyauci.

Released under the MIT license