fromfrom
fromfrom copied to clipboard
A JS library written in TS to transform sequences of data from format to another
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 suite -
npm start
: Runnpm run build
in watch mode -
npm run test:watch
: Run test suite in interactive watch mode -
npm run test:prod
: Run linting and generate coverage -
npm run build
: Generate bundles and typings, create docs -
npm run lint
: Lints code -
npm run commit
: Commit using conventional commit style (husky will tell you to use it if you haven't :wink:)
Acknowledgement
Made with :heart: by @TomiTurtiainen.
This project is a grateful recipient of the Futurice Open Source sponsorship program. :heart:
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!