https://github.com/shanoaice/bethlehem
A minimal functional programming library for JavaScript.
https://github.com/shanoaice/bethlehem
functional-programming ramda typescript
Last synced: 9 months ago
JSON representation
A minimal functional programming library for JavaScript.
- Host: GitHub
- URL: https://github.com/shanoaice/bethlehem
- Owner: shanoaice
- License: mit
- Created: 2020-01-14T13:50:20.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T04:29:58.000Z (almost 3 years ago)
- Last Synced: 2025-01-08T14:41:56.644Z (10 months ago)
- Topics: functional-programming, ramda, typescript
- Language: TypeScript
- Homepage: https://ksryy.github.io/bethlehem
- Size: 1.56 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bethlehem
[](https://github.com/KsRyY/bethlehem/actions) [](https://ksryy.github.io/bethlehem) [](https://codecov.io/gh/KsRyY/bethlehem) [](http://npm.im/bethlehem)
Bethlehem is a minimal functional programming library for JavaScript. It is inspired by [Ramda](https://github.com/ramda/ramda) but has some significant differences.
## Usage
First, install bethlehem (tips: because there are known problems before v1.3.0, it is better to set your minimum version of bethlehem to 1.3.0):
```bash
yarn add bethlehem@^1.3.0
# or npm
npm i bethlehem@^1.3.0
```
Then, cherry-pick the function(s) you want:
```js
import { compose, add } from 'bethlehem'
// you can use cjs if you don't want tree-shaking
const { compose, add } = require('bethlehem')
```
Or import everything:
```js
import * as B from 'bethlehem'
// you can use cjs if you don't want tree-shaking
const B = require('bethlehem')
```
Because bethlehem specified ESM build file in the `module` field of `package.json`, your module bundler will do tree-shaking for you.
If you want to use bethlehem without any bundler with your browser, you can use the UMD build. Add a script tag to your HTML file:
```html
```
And you can access everything in the `B` global variable.
## [Documentation](https://ksryy.github.io/bethlehem)
There could be some undocumented functions, but there should be a similar one in Ramda. Most of the time, referring to their [documentation](https://ramdajs.com/docs) would probably inform you.
## Benchmark
The benchmarks between bethlehem, ramda and rambda is still a work in progress. There is an [external repo](https://github.com/KsRyY/bethlehem-impl-bench) that stores some benchmark data about possible internal implementations of bethlehem.
## Development
Before running any command, install all the dependencies using `yarn install` or `npm install`.
```bash
yarn watch
# or npm
npm run watch
```
This will run [ava](http://ava.li) in watch mode. Test suite will be rerun if there's any change in `src` or in the test file.
```bash
yarn test
# or npm
npm run test
```
This will run [ava](http://ava.li) in verbose mode. All test suites will be ran and their titles will be displayed in the output.
```bash
yarn build
# or npm
npm run build
```
This will build all source code and put them in the `dist` folder. Declarations will be also built.
```bash
yarn build:docs
# or npm
npm run build:docs
```
This will build the documents into the `docs` folder using TypeDoc.