Ramda Adjunct is the most popular and most comprehensive set of functional utilities for use with Ramda, providing a variety of useful, well tested functions with excellent documentation.
Installations
npm install ramda-adjunct
Developer
Developer Guide
Module System
ESM
Min. Node Version
>=0.10.3
Typescript Support
Yes
Node Version
22.1.0
NPM Version
10.7.0
Statistics
683 Stars
3,175 Commits
87 Forks
11 Watching
9 Branches
68 Contributors
Updated on 27 Nov 2024
Languages
JavaScript (93.24%)
TypeScript (6.69%)
Mustache (0.08%)
Total Downloads
Cumulative downloads
Total Downloads
78,678,904
Last day
14%
334,583
Compared to previous day
Last week
5.1%
1,522,729
Compared to previous week
Last month
2.2%
5,980,197
Compared to previous month
Last year
348.3%
43,579,680
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Peer Dependencies
1
Dev Dependencies
55
Ramda Adjunct
Ramda Adjunct is the most popular and most comprehensive set of functional utilities for use with Ramda, providing a variety of useful, well tested functions with excellent documentation.
For a full list of functions see the Documentation For The Latest Release.
Adjunct is a thing added to something else as a supplementary rather than an essential part. And that something is being ramda.
Follow Ramda Adjunct on medium.com/ramda-adjunct to read latest news and articles about the library.
Get professionally supported ramda-adjunct with Tidelift Subscription. |
Getting Started
Installation
1npm i ramda-adjunct
or
1yarn add ramda-adjunct
Usage
ES6
1import * as RA from 'ramda-adjunct' 2 3RA.isArray([]);
or
1import { isArray } from 'ramda-adjunct'; 2 3isArray([]);
Node
1const RA = require('ramda-adjunct'); 2 3RA.isArray([]);
or
1const { isArray } = require('ramda-adjunct'); 2 3isArray([]);
Web browser
1<script src="ramda.js"></script> 2<script src="RA.web.js"></script>
or
1<script src="RA.web.standalone.js"></script>
Including Ramda Adjunct into HTML document exposes global variable RA on window
object.
1RA.isArray([]);
Motivation
It's very common for people to create their own utils and recipes by composing Ramda's functions and creating more complex aggregate functions. Ramda Adjunct eliminates this repetitive wheel of reinvention and centralizes commonly used and useful utils.
Benefits
1. Centralization
All Ramda recipes and aggregate utils not present in Ramda are centralized here. There is no more need for everybody to create their own utils in their own libraries or in each codebases.
2. Tests
Ramda Adjunct maintains maximal code coverage and mimics Ramda's test patterns. You can trust our functions.
3. Impeccable documentation
You cannot call a library great if it lacks great documentation. Ramda Adjunct generates its documentation directly from its codebase and uses patterns found in both Ramda and Lodash to document its API.
Do you want to find out more about why this library exists ? Read this article.
Requirements
- ramda >= 0.30.0
- node >= 0.10.48
Ramda Adjunct is being automatically tested against all LTS and Current Node.js versions.
Legacy builds
We are building our npm distributions using Webpack/Babel to support legacy versions of node starting from 0.10.48. Although all tests are run against all LTS and Current Node.js versions, we rely on Webpack/Babel to transpile ramda-adjunct into legacy ES5. It is also possible that our ES5 distributions run on node versions older than 0.10.48 as long as they support ES5.
API Documentation
LATEST, PREVIOUS, ALL VERSIONS
Wrote about us
- Ramda — R.adjust
- Refactoring JavaScript: Imperative to Functional
- Functional Programming Unit Testing in Node – Part 5
- 30 Seconds of Code: Rename MANY Object Keys in Javascript
- Functional Javascript with Ramda associated with slides
- What's Ramda equivalent to underscore.js 'compact'?
- Ramda Adjunct
- Lifting functions into monadic Context in JavaScript
- Folding Promises in JavaScript
- Monad transformers in JavaScript
- Functional lenses in JavaScript
- Functional lenses in JavaScript - Isos
- Functional lenses in JavaScript - Traversables
- Using JavaScript Generators to yield Promises
- Integrating React Native navigators
- Ramda Adjunct Changelog articles
- Ramda and React
Contributing
If you want to contribute to this project, please consult the CONTRIBUTING.md guidelines.
Obtaining project copy
1 $ git clone https://github.com/char0n/ramda-adjunct 2 $ npm i
Running tests
1 $ npm run test
Running tests in browser
1 $ npm run test:web
Running compatibility tests for supported ramda versions
1 $ npm run test:ramda
Running code coverage numbers
1 $ npm run coverage
Running linter
We're using eslint and airbnb codestyle rules with prettier integrated as an eslint plugin.
1 $ npm run lint
Builds
1 $ npm run build:es
If you use a bundler that supports tree shaking and ES2015 imports. package.json
is automatically pre-configured to tell ES2015 import
to import from this directory.
es/*
- ES5 code containing ES2015 imports.
1 $ npm run build:commonjs
If you use node to import ramda-adjunct. package.json
is automatically pre-configured to tell require
to import from this directory.
lib/*
- ES5 code containing commonjs
imports.
1 $ npm run build:umd
The command will create three types of bundles.
dist/RA.node.js
- ES5 compliant bundle, running on all node versions.
dist/RA.web.js
- ES5 compliant bundle, running in browsers. Requires ramda.js
to be required before.
dist/RA.web.standalone.js
- ES5 compliant bundle, running in browsers. It has ramda.js
pre-bundled.
You can always find fresh build files in exposed as artifacts of GitHub Actions.
Tree shaking support
Tree shaking is a term commonly used in a JavaScript context for dead-code elimination. It relies on the static structure of ES2015's module syntax, i.e. import
and export
. Ramda Adjunct natively supports tree shaking thanks to the way the code is organized and its use of ES2015 imports.
1 import * as RA from 'ramda-adjunct'; 2 3 RA.isArray([]); //=> true
1 import { isArray } from 'ramda-adjunct'; 2 3 isArray([]); //=> true
These two statements are equivalent and only isArray
should be incorporated into your bundle. You can pick and choose the functions you need without worrying about the whole library being included in your build.
Assimilated libraries
- rcb - Ramda Cookbook implementation
Typescript support
Although Ramda Adjunct is written in ES2016, we also support Typescript. When Ramda Adjunct gets imported into a Typescript project, typings are automatically imported and used.
Author
char0n (Vladimir Gorej)
https://www.linkedin.com/in/vladimirgorej/
Contributors
This project exists thanks to all the people who contribute. [Contribute].
Support us
Although we love working on ramda-adjunct, we must invest our free time to make this library great. Support this project's evolution via Open Collective or Github Sponsors.
Backers
Thank you to all our backers! 🙏 [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
License
No vulnerabilities found.
Reason
30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
security policy file detected
Details
- Info: security policy file detected: SECURITY.md:1
- Info: Found linked content: SECURITY.md:1
- Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1
- Info: Found text in security policy: SECURITY.md:1
Reason
no binaries found in the repo
Reason
license file detected
Details
- Info: project has a license file: LICENSE.md:0
- Info: FSF or OSI recognized license: BSD 3-Clause "New" or "Revised" License: LICENSE.md:0
Reason
SAST tool is run on all commits
Details
- Info: SAST configuration detected: CodeQL
- Info: all commits (30) are checked with a SAST tool
Reason
3 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
- Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q
Reason
dependency not pinned by hash detected -- score normalized to 3
Details
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/codeql.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/codeql.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/codeql.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/codeql.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/merge-me.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/merge-me.yaml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/merge-me.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/merge-me.yaml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/merge-me.yaml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/merge-me.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:134: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:146: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nodejs.yaml:152: update your workflow using https://app.stepsecurity.io/secureworkflow/char0n/ramda-adjunct/nodejs.yaml/master?enable=pin
- Info: 0 out of 20 GitHub-owned GitHubAction dependencies pinned
- Info: 0 out of 5 third-party GitHubAction dependencies pinned
- Info: 4 out of 4 npmCommand dependencies pinned
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:28
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:29
- Warn: no topLevel permission defined: .github/workflows/codeql.yml:1
- Warn: no topLevel permission defined: .github/workflows/merge-me.yaml:1
- Warn: no topLevel permission defined: .github/workflows/nodejs.yaml:1
- Info: no jobLevel write permissions found
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Score
6.8
/10
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More