• Stars
    star
    338
  • Rank 124,931 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

⚡️ Type-safe functional sequences for processing iterable data

Sequencey Travic CI

Type-safe functional sequences for processing iterable data in TypeScript and JavaScript.

Sequencey


★★★ Like this project? Leave a star and follow on Twitter! Thanks. ★★★

About Sequency

Sequency is a lightweight (5 KB minified), intensely tested (200+ tests, 99% coverage), type-safe functional programming library for processing iterable data such as arrays, sets and maps. It's written in TypeScript, compiles to ES5-compatible JavaScript and works in all current browsers and Node applications. The API is inspired by Sequences from the programming language Kotlin.

Try Sequency right in your browser.

Getting started

Download the latest release from GitHub or install Sequency from NPM:

npm install --save sequency

Alternatively use Sequency from CDN by adding this to your HTML:

<script src="https://unpkg.com/sequency"></script>

How Sequency works

Sequency is centered around a single class called Sequence to process any kind of iterable data such as arrays, sets or maps. The API is inspired by Kotlin Sequences.

Sequences can be created by utilizing one of the following functions:

import {
    asSequence,
    sequenceOf, 
    emptySequence, 
    range,
    generateSequence,
    extendSequence
} from 'sequency';
  • sequenceOf accepts one or many values and returns a new sequence.
  • asSequence accepts an iterable (e.g. an array, set or map) and returns a new sequence.
  • emptySequence returns a new empty sequence.
  • range returns as number sequence consisting of all numbers between startInclusive and endExclusive.
  • generateSequence returns a sequence generated from the given generator function.
  • extendSequence allows extending sequences with user-defined operations (see example).

Each Sequence provides a fluent functional API consisting of intermediate and terminal operations. Intermediate functions (e.g. filter, map, sorted) return a new sequence, thus enabling method chaining. Terminal functions (e.g. toArray, groupBy, findLast) return an arbitrary result. Detailed descriptions of all operations are available in the API docs.

Sequences are lazily evaluated to avoid examining all of the input data when it's not necessary. Sequences always perform the minimal amount of operations to gain results. E.g. in a filter - map - find sequence both map and find are executed just one time before returning the single result.

API documentation

Sequency is fully documented via inline JSDoc comments. The docs are also available online. When using an IDE like Intellij IDEA or Webstorm the docs are available inline right inside your editor.

Why Sequency?

I've built Sequency because I'm using Kotlin for server-side code but for some reasons still use TypeScript and JavaScript for client-side browser code. I find that using the same APIs for collection processing both on client and server is a huge gain in productivity for me.

License

MIT © winterbe

More Repositories

1

java8-tutorial

Modern Java - A Guide to Java 8
Java
16,488
star
2

streamjs

Lazy Object Streaming Pipeline for JavaScript
JavaScript
863
star
3

github-matrix-screensaver

The GitHub Matrix Screensaver for Mac OSX
JavaScript
554
star
4

spring-react-example

Isomorphic Spring Boot React.js Example
JavaScript
526
star
5

mobx-logger

Log Mobx Actions, Reactions, Transactions and Computations
JavaScript
229
star
6

github-matrix

The GitHub Matrix
Java
206
star
7

spring-kotlin-react-demo

Demo Webapp using SpringBoot, Kotlin and React.js
JavaScript
186
star
8

expekt

BDD assertion library for Kotlin
Kotlin
172
star
9

react-samples

Just a bunch of React.js examples
JavaScript
77
star
10

nake

A simplified Make for Java 8 Nashorn
JavaScript
72
star
11

jest-teamcity-reporter

Teamcity Reporter for Jest Unittest Results
JavaScript
50
star
12

java8-explorer

Java 8 API Explorer
Java
49
star
13

RNTimerExample

📱 React Native + Mobx sample app
JavaScript
42
star
14

javadoc-reloaded

Proposal for JEP 225: Javadoc Search
CSS
35
star
15

kotlin-examples

Kotlin code samples
Kotlin
15
star
16

algorithms

Various Algorithms written in ES6
JavaScript
11
star
17

challenge

Programming challenges
Kotlin
10
star
18

chaya

An HTML5 Web Chat
JavaScript
9
star
19

dotfiles

My personal dotfiles for Mac OSX terminal
Shell
7
star
20

chrome-bookmarks

Extension for Google Chrome to show your bookmarks in a compact popup
JavaScript
4
star
21

android-moneysheet

Money Sheet for Android
Java
3
star
22

compary

A library for composing complex compare-functions in JavaScript
TypeScript
2
star
23

sway

TypeScript
1
star
24

FoodTracker

Sample iOS App written in Swift
Swift
1
star
25

langs

Learning new programming languages
Swift
1
star