fromfrom
fromfrom is a LINQ inspired library to transform sequences of data.
Installation
npm install --save fromfrom
Documentation
Find it here.
Usage
The library exports only a single function, from
. from
wraps the given source data into a Sequence
. Sequence
has a wide range of chainable methods to operate and transform the sequence. The sequence can then be converted into a JS type.
For example
import { from } from "fromfrom";
// Transform an array of users
const users = [
{ id: 1, name: "John", age: 31, active: true },
{ id: 2, name: "Jane", age: 32, active: false },
{ id: 3, name: "Luke", age: 33, active: false },
{ id: 4, name: "Mary", age: 34, active: true },
];
from(users)
.filter(user => user.active)
.sortByDescending(user => user.age)
.toArray();
// Returns
// [
// { id: 4, name: "Mary", age: 34, active: true },
// { id: 1, name: "John", age: 31, active: true }
// ]
Features
- Familiar method names - Even though it's LINQ inspired, uses familiar method names from JS.
- Supports all main JS types - Works with arrays, objects, maps, sets, and objects that implement the iterable protocol.
- No dependencies - Guarantees small size.
- Type safe - Written in TypeScript. Type definitions included.
- Deferred execution - The execution of the sequence is deferred until you begin consuming the sequence.
- Fully tested - 100% test coverage.
How does it work
See "how does it work" section from the initial release blog post.
Development
NPM scripts
npm t
: Run test suitenpm start
: Runnpm run build
in watch modenpm run test:watch
: Run test suite in interactive watch modenpm run test:prod
: Run linting and generate coveragenpm run build
: Generate bundles and typings, create docsnpm run lint
: Lints codenpm run commit
: Commit using conventional commit style (husky will tell you to use it if you haven't 😉)
Acknowledgement
Made with ❤️ by @TomiTurtiainen.
This project is a grateful recipient of the Futurice Open Source sponsorship program. ❤️
Forked from TypeScript library starter
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Tomi Turtiainen 💻 📖 🚇 |
jtenner 💻 |
Ville Vaarala 🚧 |
Theo 💻 |
Rudolf Poels 📖 |
Andrew Ross 🐛 |
This project follows the all-contributors specification. Contributions of any kind welcome!