nejquery
v5.5.13
Published
A lightweight functional JavaScript utility library inspired by Ramda, Lodash, and FP principles.
Maintainers
Readme
nejQuery
nejQuery is a lightweight, functional JavaScript utility library — inspired by Ramda, Lodash, and FP principles — with a focus on data-last, curried, and composable functions. It offers a rich set of helpers for arrays, strings, numbers, objects, predicates, ADTs, and more.
It's like Ramda with fewer gotchas, Lodash with less weight, and jQuery with... well, no jQuery.
🙃 Why not just use Ramda or Lodash?
Honestly? You should. They're battle-tested, community-loved, and full-featured.
But if you've ever screamed "why is this curried nonsense so weird" or thought Lodash was a bit... much — welcome to nejQuery, the utility library your inner minimalist didn’t know it needed.
✨ Features
- Data-last, curried function signatures
- Immutable and side-effect-aware utilities
- Composable with
pipe()andcompose() - Includes support for custom ADTs like
MaybeandResult - Written in plain JavaScript (no build step required)
📦 Installation
npm install nejqueryOr add manually:
<script src="path/to/nejquery.js"></script>🔧 Usage
Instead of writing imperative code like this:
const nums = [1, 2, 3, 4];
const result = [];
for (let i = 0; i < nums.length; i++) {
const x = nums[i];
if (x % 2 === 1) {
result.push(x + 1);
}
}
console.log(result); // [2, 4]...you can write code declaratively like this:
import { pipe, map, filter, add } from 'nejquery'
const nums = [1, 2, 3, 4]
const isOdd = x => x % 2 === 1
// Partially applied functions
const add1 = add(1)
const filterIsOdd = filter(isOdd)
const mapIncrement = map(add1)
// Using Pipe for function composition
const incrementOdds = pipe(filterIsOdd, mapIncrement)
console.log(incrementOdds(nums)) // => [2, 4]🧰 Categories
nejQuery is organized into the following sections:
Full documentation is available in nejquery_docs.md
🧪 ADT Support
Use createADT to build expressive data structures:
const Vehicle = createADT({
Car: ['make', 'model'],
Bicycle: ['type'],
Truck: ['make', 'payloadCapacity']
})
const myVehicle = Vehicle.Car('Toyota', 'Camry')
match(myVehicle, {
Car: ({make, model}) => console.log(`Car: ${make} ${model}`),
Bicycle: ({type}) => console.log(`Bicycle: ${type}`),
Truck: ({make, payloadCapacity}) => console.log(`Truck: ${make}, Payload: ${payloadCapacity}kg`)
})Includes built-in ADTs: Maybe, Result and matching helpers.
📄 Documentation
All functions are documented with descriptions, examples, and implementations in nejquery_docs.md
🧠 Philosophy
- Keep functions small and pure
- Prioritize readability and composability
- Never mutate inputs
- Empower functional programming in everyday JavaScript
📣 Contributing
Got a function to propose? Open a PR or an issue — contributions are welcome!
Disclaimer: nejQuery is not affiliated with or endorsed by the jQuery Foundation or OpenJS Foundation.
Plus, I have great respect for jQuery. My grandfather used to use it.
📜 License
MIT
