0.1.4 • Published 4 months ago

enumerable-es v0.1.4

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 months ago

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

  • select()
  • selectMany()
  • where()
  • take()
  • skip()
  • all()
  • any()
  • orderBy()
  • orderByDescending()
  • reverse()
  • groupBy()
  • distinct()
  • empty()
  • range()
  • repeat()
  • first()
  • 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

License

Apache License 2.0