enumerable-es
v0.1.4
Published
enumerable-es is library operating data as C# LINQ style implemented by TypeScript
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-esor by yarn
$ yarn add enumerable-esor 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
