Skip to content
CAI
Software that uses CAICheck a score

ramda/ramda

60.0

Adequate · 1 October 2026

12.5k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Ramda functional programming library, providing a comprehensive suite of utility functions for data transformation, such as mapping, filtering, and currying. It supports multiple module formats including ES modules and CommonJS, and is distributed across various package managers like npm, Bower, and Deno. The codebase includes robust tooling for benchmarking, cross-browser testing via Sauce Labs, and automated release processes that generate bookmarklets and documentation.

Features

Added benchmark suite for core utility functions

The \lib/bench\ directory now includes a comprehensive set of benchmark scripts for core library functions, including \concat\, \curry\, \forEach\, \either\, \filter\, \find\, \findIndex\, \includes\, \indexOf\, \map\, \maxBy\, \propEq\, \reduce\, and \uniq\. These benchmarks allow users to measure the performance of these utilities against their native JavaScript equivalents or different currying patterns.

lib/bench · high confidence

Initial project scaffolding and configuration

The repository is initialized with essential configuration files including .babelrc for transpilation targets (CJS and ES modules), .eslintrc for code quality rules, .editorconfig for consistent formatting, and .gitignore to exclude build artifacts. Build tooling is established via rollup.config.js for UMD bundling and a Makefile for release tasks. The library is made available across multiple package managers: npm (via package.json), Bower (bower.json), Deno (mod.ts, egg.json), and Nest.land. Documentation is structured with a comprehensive README.md, CONTRIBUTING.md, CHANGELOG.md, and a BOOKMARKLET.md for browser usage. A REPL script is added for interactive development.

(repo-wide) · high confidence

Behavioural changes

Internal utilities refactored to ES6 modules with enhanced type handling

The internal utility library has been rewritten as ES6 modules, introducing a comprehensive suite of private helpers (such as \_Set, \_clone, \_equals, and \_curryN) that improve type safety and performance. Key behavioral updates include a robust \_Set implementation that respects R.equals semantics for heterogeneous collections, an enhanced \_clone function that correctly preserves Error properties (including non-enumerable causes) and handles circular references, and an improved \_equals function that treats Map and Set members as multisets. The refactoring also standardizes internal type checks (e.g., \_isFunction now recognizes Async and Generator functions) and optimizes currying and reduction logic for better consistency and speed.

source/internal · high confidence

Ramda v0.32.0 distribution release

The library has been updated to version 0.32.0. This release includes the new \eqDeep\ function for deep equality checks, support for the \Date\ constructor in \R.construct\ and \R.constructN\, and the addition of the \mergeAll\ function. It also reinstates the \ramda.min.js\ build file and fixes the signature of \R.propOr\ to take the default value as the first argument.

dist · high confidence

Restructured Sauce Labs browser configuration and test runner

The Sauce Labs integration has been reorganized into modular configuration files. Browser definitions for Windows, Apple, Android, and iOS are now exported from separate modules (windows.js, apple.js, android.js, ios.js, linux.js) and aggregated in browsers.js. A new configuration file (conf.js) sets up the Sauce connection with specific test URLs and build metadata, while server.js defines the local test server settings. Additionally, new utility scripts include an IE8 shim (ie8-shim.js) to support older Internet Explorer versions and a Mocha runner wrapper (mocharun.js) to capture and report test failures.

lib/sauce · high confidence

Revamped build, release, and bookmarklet generation scripts

The project's build and release infrastructure has been significantly restructured. A new bookmarklet generation pipeline (scripts/bookmarklet) now uses Handlebars and UglifyJS to produce a minified bookmarklet and accompanying documentation (BOOKMARKLET.md), replacing the previous method. The release workflow is automated via a new prepublish script that updates version references in README.md and LICENSE.txt, injects @since annotations into source files, and triggers the build and bookmarklet generation. Additional utility scripts have been introduced: benchRunner for performance benchmarking, doc-blob for converting documentation YAML to JSON, partialBuild for targeted Rollup builds, and addModulePackageScope for generating ESM-compatible package.json files in the es directory. The beforePublish script handles version injection and copyright year updates.

scripts · high confidence

Source code restructured into ES modules with new utility functions

The library source has been refactored from CommonJS to ES modules, with all files now using .js extensions and export default syntax. This change introduces several new utility functions including F and T (constant false/true functions), \\ (placeholder for partial application), addIndexRight (right-to-left indexed iteration), ascendNatural/descendNatural (natural locale-aware sorting), collectBy (list grouping), applyTo (thrush combinator), thunkify, swap, and isNotEmpty. The codebase also includes performance optimizations for existing functions like prop, path, and clone, along with security fixes for ReDoS vulnerabilities and improved handling of edge cases in functions like adjust, lensPath, and hasPath.

source · high confidence

Updated transpilation scripts to support ES6 module conversion and constructor patterns

The build tooling in scripts/transpile has been updated to handle modern JavaScript syntax. A new esm-to-cjs.js script was added to transform ES6 import/export statements into CommonJS require/module.exports calls, enabling the use of ES6 modules in the codebase. Additionally, wrap-constructor-pattern.js was introduced to refactor class-like constructor functions into Immediately Invoked Function Expressions (IIFEs), ensuring compatibility with older environments that do not support native ES6 classes.

scripts/transpile · high confidence

Test coverage

Add comprehensive test suites for Ramda functions; Added test helpers for transducer protocol and example documentation testing.

Dependencies

Ramda 0.32.0 dependency update and lockfile generation

Ramda version 0.32.0 introduces a comprehensive update to its development dependencies, including upgrades to the Babel toolchain (cli, core, preset-env, register, types), ESLint (v8.53.0), Mocha (v10.2.0), and fast-check (v3.18.0). The project now generates a package-lock.json file to ensure reproducible builds, and the package.json exports field has been configured to support both CommonJS and ES module entry points for Node.js environments.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 60 → 60 (+0.3)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 61 → 61 (+0.0)
  • Architecture 100 → 85 (-14.5)
  • Maturity 53 → 54 (+0.3)
  • Readiness 63 → 64 (+0.7)
  • Security 68 → 74 (+6.5)
  • Performance 75 (new)

Resolved (7)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • Hotspot: source/internal/_clone.js (source/internal/_clone.js)
  • Medium CVE: [GHSA redacted] (package-lock.json)
  • Off-boarding risk: anonymized user #1

New (7)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
  • Documentation: no contributor guidance (README.md)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • Medium vulnerability: [GHSA redacted] (package-lock.json)
  • Off-boarding risk: anonymized user #1
  • Projects may be oversized for their cohesion

Changes since last survey

  • 1 commits — 0 feature/other, 1 fixes

By area

  • source/internal — 1 commit

Notable commits

  • fix: fix(clone): preserve circular Error causes (#3541)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ramda/ramda was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 90b1fd22acf6283126e6352d1b82bdbd7ad8a62e — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.