RxLine helps you manage complex (possibly async) operations on collections (or streams) of entities. A common example is performing a series of tasks on a list of files (compiling sass to css or markdown to html).
1npm i rxline
Typical usage of RxLine looks like this:
1import { line } from 'rxline';
2
3line([1, 2, 3, 4]) // --> define the line
4 .pipe(x => x * 2, // --> add a transform
5 x => x + 11) // --> expand the transform
6 .collect(console.log); // --> process and collect the results.
7
8// Result:
9// [13, 15, 17, 19]
1import { concurrently } from 'rxline';
2import { files, mapContent, readFile, writeFile, pathMatch } from 'rxline/fs';
3
4files('./src') // --> define the line
5 .pick(pathMatch(/\.js$/)) // --> filter its content
6 .pipe(readFile()) // --> read the content of the file
7 .pipe(mapContent( // --> map the content of the file
8 (content, path) => // --> define the transform
9 `/** @file ${path} **/\n` + content // --> add a comment of the file's path on top of it
10 ))
11 .pipe(writeFile()) // --> write the file to filesystem
12 .process(concurrently); // --> process the line
13
14// Result:
15// adds a first line `/** @file module/filename.js **/` to each javascript file in `./src`