Skip to content

Latest commit

 

History

History
404 lines (380 loc) · 37 KB

web-tech-libraries.md

File metadata and controls

404 lines (380 loc) · 37 KB

Web Tech

Testing and Code Quality

Overview JS Testing 2019

  • jest unit testing, automatic mocking, parallel execution using workers discussion, discussion2
  • intern complete JavaScript software testing system
  • cypress $ future. innovative advanced automated testing framework
  • wallaby $ realtime test runner with editor integration
  • AVA futuristic test runner
  • playwright Next evolution beyond Puppeteer
  • crawlee web scraping and browser automation library mimics real browser fingerprints
  • testcafe cross platform, cross browser automation without need of WebDriver
  • appium test/automate iOS, Android, and Windows apps using the WebDriver protocol
  • codecept scenario acceptance testing BDD
  • stylelint Enforce best practices for stylesheets
  • eslint Enforce best practices for JavaScript
  • nyc improvements built on instanbul coverage tool
  • chai BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
  • Sinon.js Standalone test spies, stubs and mocks for JavaScript
  • WireMock advanced server side mocking
  • MSW Mock Service Worker API mocking library for browser and Node.js.

Low level libraries

  • lodash General utility library performance focused with FP concepts
  • callbag Tiny and fast reactive/iterable programming library. Callbags
  • lazy Similar to lodash, but with all lazy evaluation
  • stdlib Standard library for JavaScript and Node.js
  • FPO Functional library using named arguments
  • Immutable Fast immutable collection library
  • Crio Immutable library compatible with other collection libraries
  • Collections common data structures with idiomatic interfaces
  • Collect.js array and object collection wrapper
  • mnemonist JS data structures
  • Mindex Fast javascript compound index
  • Iterall Iterate over any collection
  • Iterare iterate over collections performing efficient transformation pipelines
  • P-Iteration iterate over promises using array functions
  • Moize Fast memoize function
  • MobX State management by transparently applying functional reactive programming (TFRP) Discussion MobX Redux - MobX vs Redux - Formidable article
  • Redux State container
  • Most ultra-high performance monadic reactive streams
  • optika optics for JavaScript. Functional Programming
  • ts-pattern Pattern Matching library for TypeScript with smart type inference
  • construct-js declaritive library for creating byte level data structures
  • structurae Fast data structures, Grid, BitField, Pool, Array
  • FastBitSet Speed-optimized BitSet implementation
  • Uint1Array bitfields in JS with TypeArray syntax
  • indexed-bitfield Indexed bitfield that allows you to search for bits efficiently
  • sparse-bitfield allocates a series of small buffers to support sparse bits without allocating a massive buffer
  • Rbush high-performance JavaScript R-tree-based 2D spatial index for points and rectangles
  • SystemJS Loader which supports all module formats and can load dynamically at runtime
  • Lozad uses intersection observer to more efficiently load resources
  • transducers-js Composable algorithmic transformations
  • transducers.js Composable algorithmic transformations. Tranducers performance
  • Sequency.js Lazy object streaming pipeline for JavaScript inspired by Kotlin
  • RxJS Observables + Operators + Schedulers
  • JS-interpreter sandboxed JavaScript interpreter in JS
  • expressions-js simplified JavaScript expressions into executable functions
  • zone.js JavaScript concept of thread local context
  • nlp-compromise NLP JavaScript library
  • core-js Polyfills of ES6+ for older JavaScript engines.
  • cuid Collision-resistant ids optimized for horizontal scaling and performance
  • ulid Universally Unique Lexicographically Sortable Identifier
  • stamp-it Composable object factories
  • MixWith Composable classes with mixins
  • DOMPurify XSS sanitizer for HTML, MathML and SVG
  • stacktrace.js Generate, parse, and enhance JavaScript stack traces in all web browsers
  • hash-it Create hash for any JS object
  • deePool JS object pool
  • VocaJS JS String library
  • broadcast-channel broadcast channel for New Browsers, Old Browsers, WebWorkers and NodeJs
  • Swivel Communication channels across pages using service worker
  • across-tables Communcation across cross origin pages
  • Postal message bus library
  • post-robot Posting across domains in browser pages
  • post-me Communicate with web Workers and other Windows using a simple Promise based API
  • Automerge JSON-like data structure that can be modified concurrently and merged again automatically.
  • html-differ library to diff html changes
  • htmldiff library to diff html changes
  • jsDiff text diff library
  • paste.js cross browser image pasting from clipboard
  • pampy.js Pattern matching
  • fast-copy A blazing fast deep object copier
  • file-type detect file type

Networking

Asynchronous and Threading

  • threads.js Make web workers & worker threads as simple as a function call
  • Async Async utilities for node and the browser
  • Promise-worker Communicate with a Web Worker using Promises
  • Operative run code inline within a web worker
  • thaw.js synthetic asynchronous processing
  • posterus Composable async primitives (futures) with true cancelation, control over scheduling, and coroutines
  • Task.js Distribute across workers for Node and Web
  • greenlet run async function in a web worker
  • workerize run a module in a web worker
  • comlink auto proxy to web worker

Parsing and Serialization

  • struct-fu Convert between JSON objects and binary buffer data according to a given field layout/structure declaration. Can handle bitfields.
  • struct Creates a proxy view into a buffer based on a struct definition. No bitwise data
  • typed-array-buffer-schema Schema based Object to Buffer converter
  • corrode library for reading binary data
  • lave Stringify serialize any JS object
  • devalue serialize JSON with XSS safe escapes
  • oboe.js Streaming approach to JSON. Similar to SAX
  • Arquero library for query processing and transformation of array-backed data tables
  • PapaParse CSV parser, streaming, worker thread
  • Transit-js Fast serialization superset of JSON
  • SJS Fast JSON stringify using schema
  • jsan handles circular references with JSON
  • flatted handle circular JSON
  • MessagePack cross platform fast, small binary data serialization. Good drop in replacement for JSON. review article
  • FlatBuffers cross platform fast serialization for networking and storage. review article
  • chevrotain Fast parser DSL, no code generation. Performance comparison
  • PEG.js Parser generator based on parsing expression grammar
  • nearly.js can handle any grammar you can define in BNF (and more!) using Nearly algorithm
  • Arcsecond Fantasy Land compliant javascript Parser Combinator library largely inspired by Haskell's Parsec. Introduction
  • Ohm library and language for building parsers, interpreters, compilers, etc. Intro article
  • Cheerio server side HTML and XML fast parser. Uses CSS Selector paradigm like jQuery. htmlparser2 as parsing engine
  • jsdom HTML/XML parser and browser API's. Uses parse5 for HTML and saxes for XML
  • xmldom JS XML DOM and internal parser.
  • xpath XPath 1.0 works with jsdom, xmldom, slimdom
  • fotoxpath XPath 3.1 works with jsdom, xmldom, slimdom
  • saxes XML parser enforces well formed XML. slimdom-sax-parser provides a DOM built using saxes
  • htmlparser2 very fast streaming HTML/XML NodeJS parser, but non-strict
  • domino W3C DOM Level 4 HTML parser
  • fast-xml-parser Validate XML, Parse XML to JS/JSON and vise versa. Uses regex as parser.
  • js-yaml JS YAML parser/serializer

Data Search and Validate

  • JMESPath query language for JSON
  • JSONata JSON query and transformation language
  • is.js Data type and data format testing functions
  • Validate.js declaritive validation of JavaScript objects
  • SuperStruct composable JavaScript validation
  • Luxon A modern browser version of Moment
  • date-fns large collection of date functions
  • xtype.js data validation for JavaScript
  • VerbalExpressions Regular expressions in plain english
  • XRegExp Extended regular expression support
  • Rex Regex verbose API
  • super-expressive build regular expressions in almost natural language
  • ElasticLunr Lightweight full-text search engine in Javascript for browser search and offline search
  • fuzzysort sublime like pattern matching
  • fuse Lightweight fuzzy-search
  • flexsearch fastest and most memory efficient full text search library

Analytics, AI Learning

  • brain.js library of Neural Networks written in JavaScript.

Persistence

  • LokiJS A fast, in-memory document-oriented datastore for node.js, browser and cordova
  • RethinkDB realtime web pushes JSON to your apps status?
  • localForage Local storage library for browsers IndexDB and WebSQL
  • Dexie Local storage IndexDB wrapper library
  • ClickHouse Extremely fast columnar DB discussion
  • MonetDB columnar DB with native NodeJS support discussion
  • RXDB Reactive Offline-first Database with Sync, Schema, Mongo-Query, Encryption, LevelDown
  • knex.js SQL query builder for Postgres, MSSQL, MySQL, MariaDB, SQLite3, Oracle, and Amazon Redshift. DB2
  • remoteStorage.js library for storing user data locally in the browser, as well as connecting to remoteStorage servers such as dropBox and Google Drive
  • gun realtime, decentralized, offline-first, mutable graph database engine
  • orbit-db Peer-to-Peer Databases for the Decentralized Web
  • ipfs JavaScript implementation of the IPFS protocol
  • prisma toolkit for PostgreSQL, MySQL, SQL Server, and SQLite. Very positive opinions

Application Framework

Flux, Redux, Behavior-Event-State-Tree, Model-View-Update, Model-View-Intent, Nested Dialogues

View libraries

Performance comparison

UI

Great article for reference when choosing a CSS libary

  • Dragula Drag and drop library
  • Draggable Drag and drop library from Shopify
  • Muuri Drag Drop Filter and Sort Grid
  • glide data grid canvas-based data grid, supporting millions of rows, rapid updating, and native scrolling.
  • dropzone Drag and drop for file uploads
  • quill Rich text editor
  • medium editor ContentEditable API editor
  • Slate Customizable rich text editor. discussion
  • Segment small library animate SVG path strokes
  • Emotion Next Generation CSS in JS. Article
  • nano-css CSS in JS. 0.5kb performant modular library. 5th generation
  • fela high-performant and framework-agnostic toolbelt to handle state-driven css in JavaScript.
  • StyleTron CSS-in-JS engine built from the ground up for high-performance
  • Bulma CSS designed with flexbox
  • Tachyons Functional css for humans review
  • Tailwind A utility-first CSS framework for rapid UI development.
  • Spectre Lightweight, Responsive and Modern CSS Framework
  • Push cross browser desktop notifications
  • Cleave UI enforced field validations and formatted input
  • Clusterize Tiny plugin to display large data sets easily
  • Smart Table Scroll Build 1MM row tables with native scroll bars by reusing and yielding nodes
  • palx color theme generator
  • tinykeys key bindings

Graphic libraries

State of web animation, May 2016

Visualization

  • D3 Library for document manipulation based on data
  • dc.js interactive cross filtering on top of D3
  • nvd3 charts built on top of D3
  • Vis.js library with DataSet, Timeline, Network, Graph2d and Graph3d visualization types
  • Chart.js animated charts using canvas
  • Billboard.js re-usable, easy interface JavaScript chart library, based on D3 v4+
  • Recharts React component charts
  • jointJS diagramming library, SVG, interactive editing, path routing
  • Dagre directed graph layout library. use view as D3, jointJS, cytoscape
  • cola.js contraint based layout library.
  • MathBox Presentation-quality WebGL math graphing
  • OpenLayers high-performance, feature-packed library for all your mapping needs
  • pdfmake client/server PDF JS library
  • pts library for visualization and creative-coding

Multi Media

  • video.js JS Browser video player
  • plyr JS Browser video audio player
  • howler.js Audio playback library. Web Audio, HTML 5 fallback
  • tone.js Audio framework for making interactive music
  • timbre.js Objective sound programming
  • tonal.js Funtional music theory library
  • flocking audio synthesizer library
  • jsfx JavaScript sound effect generator
  • standardized audio context cross-browser implementation of the AudioContext
  • openmusic.gallery Music making, remixing, and collaborating tools for the web
  • essentia.js music/audio signal analysis and processing for both real-time and offline use-cases

NodeJS

  • Electron Web technologies as desktop applications Essential Electron
  • NW.js Web technologies as desktop applications
  • nodegui Native GUI using QT for Linux, OSX, Windows
  • pkg Node.js project into an executable
  • Hackathon Starter Starter skeleton framework for server application
  • got Simplified HTTP requests
  • undici replacement for nodeJS core http
  • uWebSockets Highly scalable WebSocket server library
  • deepstream.io a fast, secure and scalable websocket & tcp server for mobile, web & iot
  • socket.io Realtime application framework
  • fastify Fastify is a web framework with the least overhead and a powerful plugin architecture
  • restify framework for server REST APIs
  • FFI Foreign function interface. Call c functions from node
  • piscina the node.js worker pool
  • klyng Distributed computing
  • EMS Shared memory parellelism for node
  • micro.js Micro services library
  • feathers minimalist real-time framework for rapid prototype development
  • Nodal API services on node
  • loopback Server API Framework.
  • Incheon Node game server
  • Vorpal CLI command line framework
  • Caporal CLI command line framework
  • Enquirer Stylish, intuitive and user-friendly prompts
  • Inquirer.js A collection of common interactive command line user interfaces
  • Commander.js node.js command-line interfaces made easy
  • Gluegun CLI Builder
  • Yargs Advanced CLI argument parser
  • shell.js Unix commands available for cross platform NodeJS
  • event-stream EventStream is like functional programming meets IO
  • fs-jetpack better filesystem API
  • fdir fast file glob
  • watchr Better file system watching for Node.js
  • systeminformation hardware system information

Platform

  • JavaPoly.js JVM in the browser
  • doppio JVM in the browser
  • Serverless AWS Lambda architecture
  • Elasticsearch distributed real-time search and analytics capabilities
  • Cheerp C++ to JavaScript compiler
  • NeutralinoJS Develop web apps with native os functions
  • Carlo Web rendering surface for Node applications
  • Tauri Framework agnostic toolchain for building highly secure native apps that have tiny binaries and are very fast
  • low.js Node.js with far lower system requirements for microcontroller boards based on the ESP32-WROVER module
  • Wails Desktop apps using Go and web tech

Mobile

  • NativeScript Native mobile apps in JavaScript with low level access to system API's
  • React Native Native UI's built on React
  • UpUp Mobile first library for offline
  • ZingTouch Gesture library
  • Leaflet mobile-friendly interactive maps

WASM Web Assembly

  • assemblyscript Limited TypeScript to WASM compiler
  • wasmer High-Performance WebAssembly JIT interpreter

Future

  • Neon Rust abstraction layer for native Node.js modules
  • Gpujs GPU Accelerated JavaScript
  • lume Performance focused web rendering engine
  • DGraph Scalable, Distributed, Low Latency Graph Database
  • lighthouse progressive web app diagnostics
  • HyperTerm modern terminal. Electron based
  • Terminus modern terminal. Electron based
  • Tesseract.js JS OCR
  • skia-canvas Browser Canvas for Node.js
  • BlueSky Decentralized web projects
  • Fly.io Run your full stack apps and databases all over the world. No ops required.
  • SurrealDb SQL-style query language, real-time queries with highly-efficient related data retrieval

Tools

  • Frida Debugging through injecting JavaScript into native apps
  • verso Low level debugging cross platform
  • gdbgui browser-based frontend to gdb (gnu debugger)
  • UIforETW Low level performance tracing on Windows
  • ndb ndb is an improved debugging experience for Node.js, enabled by Chrome DevTools
  • reveal.js Interactive presentation framework
  • impress.js presentation framework based on the power of CSS3 transforms and transitions
  • npm-check Check for outdated, incorrect or unused dependencies
  • cheerp C++ compiler to JavaScript
  • gitsome Enhanced command line Git
  • OpenRefine exploring and manipulating messy data
  • Huginn Build agents that act on your behalf
  • PMD source code analyzer
  • licecap record animated gif windows/osx
  • rollup.js next generation module bundler. tree-shaking
  • Webpack Very configurable supporting large scale development
  • Fuse-Box blazing fast js bundler/loader with a comprehensive API
  • Broswerify Easiest to setup and use module builder
  • GitKraken cross platform graphical Git management
  • robotN Node interface to robotGo cross platform automation library
  • nut-js Node Desktop automation library in typescript
  • n8n workflow automation visual composition
  • Webpack Bundle Analyzer bundle content as convenient interactive zoomable treemap
  • Marky High performance timer for performance analysis
  • Pencil UI prototype sketch tool
  • apify-js web scrapper for high scale using puppeteer
  • sharp high performance image scaling. fastest module to resize JPEG, PNG, WebP and TIFF images
  • tad CSV data viewer
  • mkcert make locally trusted development certificates
  • jscodeshift JavaScript codemod toolkit
  • gh-pages publish files to a 'gh-pages' branch
  • volta toolchain manager for NodeJS development
  • unplugin universal interace for build tool plugins
  • motionity web-based motion graphics editor