enumerable-es
v0.1.4
Published
enumerable-es is library operating data as C# LINQ style implemented by TypeScript
Downloads
2
Readme
Introduction
enumerable-es is library operating data as C# LINQ style implemented by TypeScript, 简体中文.
Quick Start
enumerable-es is available on npmjs.
$ npm install enumerable-es
or by yarn
$ yarn add enumerable-es
or in browser
<script type="module">
import enumerable from 'https://cdn.skypack.dev/enumerable-es';
</script>
or in codesandbox.io
Development
run unit test
$ yarn test --coverage
yarn run v1.22.5
$ jest --coverage
PASS test/enumerable/Sequence.test.ts
PASS test/index.test.ts
----------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------|---------|----------|---------|---------|-------------------
All files | 98.4 | 86.96 | 100 | 98.11 |
src | 100 | 100 | 100 | 100 |
index.ts | 100 | 100 | 100 | 100 |
src/enumerable | 98.25 | 86.36 | 100 | 97.95 |
Sequence.ts | 98.25 | 86.36 | 100 | 97.95 | 30,73,104
----------------|---------|----------|---------|---------|-------------------
Test Suites: 2 passed, 2 total
Tests: 26 passed, 26 total
Snapshots: 0 total
Time: 5.816 s
Ran all test suites.
Done in 6.87s.
build from source
$ rm -rf dist/* && yarn build:cjs && yarn build:es6 && yarn build:web
yarn run v1.22.5
$ tsc -P tsconfig.json
Done in 4.08s.
yarn run v1.22.5
$ tsc -P tsconfig.json --module ES6 --outDir dist/es6
Done in 4.11s.
yarn run v1.22.5
$ browserify dist/cjs/src/index.js --standalone enumerable -o dist/web/bundle.js
Done in 0.81s.
Features
API implemented as bellow
- [x]
select()
- [x]
selectMany()
- [x]
where()
- [x]
take()
- [x]
skip()
- [x]
all()
- [x]
any()
- [x]
orderBy()
- [x]
orderByDescending()
- [x]
reverse()
- [x]
groupBy()
- [x]
distinct()
- [x]
empty()
- [x]
range()
- [x]
repeat()
- [x]
first()
- [x]
toArray()
plan list
- [ ]
concat
- [ ]
except
- [ ]
thenBy()
- [ ]
thenByDescending()
Sample
get all anchors from current page, group them by href domain, take top 5 which have most items.
enumerable.from(document.querySelectorAll('a'))
.groupBy(x => (/https?:\/\/(.+?)\/.*/.exec(x.href) || 0)[1], x => x)
.orderByDescending(x => x.count())
.take(5)
.select(x => ({key: x.key(), items: x.toArray()}))
.toArray()
Get more usage from test case in Sequence.test.ts