diff --git a/.github/workflows/validator.yml b/.github/workflows/validator.yml index b6bb326a3..df623e6f2 100644 --- a/.github/workflows/validator.yml +++ b/.github/workflows/validator.yml @@ -11,7 +11,7 @@ on: - synchronize env: - RUBY_VERSION: '2.6' + RUBY_VERSION: '3.2' defaults: run: @@ -22,30 +22,32 @@ jobs: name: Validator runs-on: ubuntu-latest steps: + - id: checkout + name: Checkout + uses: actions/checkout@v4 + - id: setup-ruby name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ env.RUBY_VERSION }} - - - id: checkout - name: Checkout - uses: actions/checkout@v2 + bundler-cache: true - id: install-gem name: Install gem run: | - gem install awesome_bot + gem install awesome_bot --no-document - id: validate name: Validate + continue-on-error: true run: | awesome_bot README.md --request-delay 0.5 --allow-timeout --allow-redirect - id: upload-artifact name: Upload artifact - uses: actions/upload-artifact@v2 - if: failure() + uses: actions/upload-artifact@v4 + if: ${{ failure() }} with: if-no-files-found: warn name: ab-results @@ -53,4 +55,3 @@ jobs: ab-results-README.md.json ab-results-README.md-filtered.json ab-results-README.md-markdown-table.json - diff --git a/README.md b/README.md index 05b536c64..4fe829ca5 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,9 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Generators](#generators) * [Full Text Search](#full-text-search) * [SDK](#sdk) + * [ORM](#orm) + * [WebSockets](#websockets) + * [Generative AI](#generative-ai) * [Misc](#misc) * [Worth Reading](#worth-reading) * [Other Awesome Lists](#other-awesome-lists) @@ -96,6 +99,7 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Duo](https://github.com/duojs/duo) - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless. * [yarn](https://yarnpkg.com/) - Fast, reliable, and secure dependency management. * [pnpm](https://pnpm.io/) - Fast, disk space efficient package manager. +* [bun](https://bun.sh/) - Bun is a fast JavaScript all-in-one toolkit. ## Component Management @@ -129,6 +133,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Microbundle](https://github.com/developit/microbundle) - Zero-configuration bundler for tiny modules. * [FuseBox](https://github.com/fuse-box/fuse-box) - A bundler that does it right * [Snowpack](https://www.snowpack.dev/) - A lightning-fast frontend build tool, designed for the modern web. +* [bundle](https://bundle.js.org) - A quick online npm package size checker. +* [Vite](https://vite.dev/) - Next Generation Frontend Tooling. # Minimizers @@ -142,6 +148,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Hegel](https://hegel.js.org/) - A static type checker for JavaScript with a bias on type inference an strong type system. * [TypL](https://github.com/getify/TypL) - the JavaScript Type Linter with a bias on type inference. * [Hindley Milner Definitions](https://github.com/xodio/hm-def) - runtime type checking for JavaScript functions using Haskell-alike Hindley Milner type signatures. +* [Zod](https://github.com/colinhacks/zod) - TypeScript-first schema validation with built-in static type inference. +* [Yup](https://github.com/jquense/yup) - JavaScript schema builder and validator. ## Testing Frameworks @@ -158,6 +166,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [TestCafe](https://github.com/DevExpress/testcafe) - Automated browser testing for the modern web development stack. * [ava](https://github.com/avajs/ava) - 🚀 Futuristic JavaScript test runner * [Cypress](https://www.cypress.io/) - Complete end-to-end testing framework for anything that runs in a browser and beyond. +* [WebdriverI/O](https://webdriver.io/) - Next-gen browser and mobile automation test framework for Node.js +* [Suites](https://suites.dev) - A unit-testing framework for backends working with inversion of control and dependency injection ### Assertion @@ -167,6 +177,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Sinon.JS](https://github.com/sinonjs/sinon) - Test spies, stubs, and mocks for JavaScript. * [expect.js](https://github.com/Automattic/expect.js) - Minimalistic BDD-style assertions for Node.JS and the browser. * [proxyquire](https://github.com/thlorenz/proxyquire) - Stub nodejs's require. +* [Supertest](https://github.com/visionmedia/supertest) - A popular HTTP assertion library for testing REST APIs, often used with other testing frameworks like Mocha or Jest +* [Pocket Mocker](https://github.com/tianchangNorth/pocket-mocker) - In-browser visual network mocking tool, supports fetch/XHR interception. ### Coverage @@ -203,6 +215,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Pre-evaluate code at buildtime](https://github.com/kentcdodds/preval.macro) - Pre-evaluate your front end javascript code at build-time * [JS-Beautifier](https://github.com/beautify-web/js-beautify) - Npm cli and library to format JS code. * [husky](https://github.com/typicode/husky) - Prevents bad git commit, git push and more. +* [Rev-dep](https://github.com/jayu/rev-dep) - Trace imports, identify circular dependencies, find unused code, clean node modules — all from a blazing-fast CLI. +* [fallow](https://github.com/fallow-rs/fallow) - Finds dead code, duplication, circular dependencies, and complexity hotspots in JavaScript and TypeScript projects. ## MVC Frameworks and Libraries @@ -250,6 +264,7 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [Blockly](https://github.com/google/blockly) - A library that adds a visual code editor to web and mobile apps by Google. * [Million](https://github.com/aidenybai/million) - <1kb compiler-focused virtual DOM. It's fast! * [Whatsup](https://github.com/whatsup/whatsup) - A frontend framework for chillout-mode development 🥤. JSX components on generators, fast mobx-like state management and exclusive cssx style system. +* [Remult](https://github.com/remult/remult) - A CRUD framework for full-stack TypeScript. ## Node-Powered CMS Frameworks @@ -283,6 +298,7 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [xtemplate](https://github.com/xtemplate/xtemplate) - eXtensible Template Engine lib for node and the browser * [marko](https://github.com/marko-js/marko) - A fast, lightweight, HTML-based templating engine for Node.js and the browser with async, streaming, custom tags and CommonJS modules as compiled output. * [swig](https://github.com/paularmstrong/swig) - (Archived) A simple, powerful, and extendable Node.js and browser-based JavaScript template engine. +* [hmpl](https://hmpl-lang.dev) - Server-oriented customizable templating for JavaScript. ## Game Engines * [A-Frame](https://aframe.io) - Make WebVR. @@ -349,6 +365,8 @@ A collection of awesome browser-side [JavaScript](https://developer.mozilla.org/ * [cola.js](https://ialab.it.monash.edu/webcola/) - library for arranging your HTML5 documents and diagrams using constraint-based optimization techniques * [jointjs](https://github.com/clientIO/joint) - Diagramming library to create static diagrams or fully interactive diagramming tools. * [vizzu](https://github.com/vizzuhq/vizzu-lib) - Library for animated data visualizations and data stories. +* [G6](https://github.com/antvis/g6) - A graph visualization engine. +* [Infographic](https://github.com/antvis/Infographic) - A next-generation declarative infographic visualization engine. There're also some great commercial libraries, like [amchart](https://www.amcharts.com/), [anychart](https://www.anychart.com/), [plotly](https://plotly.com/), and [lightning chart](https://www.arction.com/lightningchart-js/). @@ -363,6 +381,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Frappe Datatable](https://github.com/frappe/datatable) - Frappe DataTable is a simple, modern and interactive datatable library for displaying tabular data. * [Luckysheet](https://github.com/mengshukeji/Luckysheet) - Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source. * [Jspreadsheet CE](https://github.com/jspreadsheet/ce) - Jspreadsheet is a lightweight vanilla javascript plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software. + * [RevoGrid](https://github.com/revolist/revogrid) - RevoGrid is a fast, responsive excel like data grid library for modern web applications. ## Editors @@ -443,6 +462,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [MobX](https://github.com/mobxjs/mobx) - TFRP library for simple, scalable state management. * [Cycle.js](https://cycle.js.org) - A functional and reactive JavaScript library for cleaner code. * [concent](https://github.com/concentjs/concent) - Definitely the ❤️ simplest but ⚡️ strongest state management for react, it is predictable、progressive and efficient. +* [stunk](https://github.com/I-am-abdulazeez/stunk) A framework-agnostic state management library that keeps your app’s state clean and simple. It uses a fine-grained state model, breaking state into independent, manageable chunks. ## Data Structure *Data structure libraries to build a more sophisticated application.* @@ -470,6 +490,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [map-countdown](https://github.com/dawidjaniga/map-countdown) - A browser countdown built on top of the Google Maps. * [dayjs](https://github.com/iamkun/dayjs) - Day.js 2KB immutable date library alternative to Moment.js with the same modern API. * [luxon](https://github.com/moment/luxon) - Luxon is a library for working with dates and times in JavaScript. +* [tempo](https://github.com/formkit/tempo) - Parsing, formatting, and timezones — Tempo is a small tree-shakable library for native Date objects. ## String *String Libraries.* @@ -524,7 +545,8 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Lovefield](https://google.github.io/lovefield) - Lovefield is a relational database for web apps, By Google. * [Dexie.js](https://github.com/dexie/Dexie.js) - Dexie.js is a wrapper library for indexedDB. * [proxy-web-storage](https://github.com/KID-joker/proxy-web-storage) - Keep the type of storage value unchanged and change array and object directly. Supports listening to the changes and setting expires. - +* [PostgreSQL Browser](https://github.com/datawan-labs/pg) - Browser PostgreSQL Playground, no server, just client and pglite (postgresql wasm) + ## Color * [randomColor](https://github.com/davidmerfield/randomColor) - A color generator for JavaScript. @@ -570,6 +592,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [js-xss](https://github.com/leizongmin/js-xss) - Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist. * [xss-filters](https://github.com/yahoo/xss-filters) - Secure XSS Filters by Yahoo. * [sanitize-html](https://github.com/apostrophecms/sanitize-html) - sanitize-html provides a simple HTML sanitizer with a clear API. +* [pompelmi](https://github.com/pompelmi/pompelmi) - Fast file-upload malware scanning for Node.js. ## Log @@ -579,10 +602,13 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [loglevel](https://github.com/pimterry/loglevel) - Minimal lightweight logging for JavaScript, adding reliable log level methods to wrap any available console.log methods. * [minilog](http://mixu.net/minilog/) – Lightweight client & server-side logging with Stream-API backends. * [storyboard](http://guigrpa.github.io/storyboard/) - Universal logging library + Chrome extension; it lets you see all client and server tasks triggered by a user action in a single place. +* [LogTape](https://logtape.org/) - Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions. ## RegExp * [RegEx101](https://regex101.com/#javascript) - Online regex tester and debugger for JavaScript. Also supports Python, PHP and PCRE. * [RegExr](https://regexr.com/) - HTML/JS based tool for creating, testing, and learning about Regular Expressions. +* [Regulex](https://jex.im/regulex/) - JavaScript Regular Expression Parser & Visualizer. +* [Regex-Vis](https://regex-vis.com/) - Regex visualizer & editor. ## Voice Command @@ -598,7 +624,6 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [jquery.rest](https://github.com/jpillora/jquery.rest) - A jQuery plugin for easy consumption of RESTful APIs. * [Rails Ranger](https://github.com/victor-am/rails-ranger) - An opinionated REST client for Ruby on Rails APIs. * [wretch](https://github.com/elbywan/wretch) - A tiny wrapper built around fetch with an intuitive syntax. -* [Bearer.sh](https://github.com/Bearer/bearer-js) - Universal API client that supports OAuth / API Key / Basic / etc. * [FarFetch](https://github.com/WebsiteBeaver/far-fetch) - Modern Fetch API wrapper for simplicity, with concise file uploading. * [Optic](https://github.com/opticdev/optic) - Optic automatically documents and tests your APIs. * [SWR](https://github.com/vercel/swr) - React Hooks library for remote data fetching. @@ -626,6 +651,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [ml5.js](https://ml5js.org) - Friendly Machine Learning for the Web. * [Synapses](https://github.com/mrdimosthenis/Synapses) - Lightweight cross-platform Neural Network library. * [m2cgen](https://github.com/BayesWitnesses/m2cgen) - A CLI tool to transpile trained classic ML models into a native JavaScript code with zero dependencies. +* [JS-PyTorch](https://github.com/eduardoleao052/js-pytorch) - GPU accelerated PyTorch in JavaScript. ## Browser Detection @@ -638,6 +664,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [benchmark.js](https://github.com/bestiejs/benchmark.js) - A benchmarking library. As used on jsPerf.com. * [matcha](https://github.com/logicalparadox/matcha) - A caffeine driven, simplistic approach to benchmarking. +* [bencher](https://github.com/bencherdev/bencher) - A suite of continuous benchmarking tools designed to catch performance regressions in CI. ## Web Worker @@ -656,6 +683,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Highlight.js](https://github.com/isagalaev/highlight.js) - JavaScript syntax highlighter. * [PrismJS](https://github.com/PrismJS/prism) - Lightweight, robust, elegant syntax highlighting. +* [shiki](https://github.com/shikijs/shiki) - Code highlighter powered by VS Code TextMate grammars. Accurate, themeable, works in Node or browser, great for JS and TS. ## Loading Status *Libraries for indicate load status.* @@ -773,6 +801,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Date Range Picker](https://github.com/dangrossman/daterangepicker) - creates a dropdown menu from which a user can select a range of dates. * [Duet Date Picker](https://github.com/duetds/date-picker) - open source version of Duet Design System’s accessible date picker, WCAG 2.1 accessibility complaint * [tui.calendar](https://github.com/nhn/tui.calendar) - A JavaScript schedule calendar that is full featured. Now your service just got the customizable calendar. +* [Schedule-X](https://github.com/schedule-x/schedule-x) - Material design event calendar. Features drag & drop, dark mode, multiple views and more. ### Select @@ -929,7 +958,6 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Ion.Sound](https://github.com/IonDen/ion.sound) - Simple sounds on any web page. * [photobooth-js](https://github.com/WolframHempel/photobooth-js) - A widget that allows users to take their avatar pictures on your site. * [clappr](https://github.com/clappr/clappr) - An extensible media player for the web http://clappr.io - * [exifr](https://github.com/MikeKovarik/exifr) - The fastest and most versatile EXIF reading library. https://mutiny.cz/exifr/ * [ts-audio](https://github.com/EvandroLG/ts-audio) - an agnostic and easy-to-use library to work with the `AudioContext` API. * [AmplitudeJS](https://521dimensions.com/open-source/amplitudejs) - Open Source HTML5 Web Audio Library. Design your web audio player, the way you want. No dependencies required. * [ractive-player](https://github.com/ysulyma/ractive-player) - A library for making interactive videos in React.js. @@ -966,7 +994,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [shuffle-images](https://github.com/peachananr/shuffle-images) - The Simplest Way to shuffle through images in a Creative Way. * [smoothState.js](https://github.com/miguel-perez/smoothState.js) - Unobtrusive page transitions with jQuery. * [Anime.js](https://animejs.com/) - A JavaScript animation engine. -* [Mo.js](http://mojs.io) - Motion graphics toolbelt for the web. +* [Mo.js](https://mojs.github.io/) - Motion graphics toolbelt for the web. * [particles.js](https://github.com/VincentGarreau/particles.js) - A lightweight JavaScript library for creating particles. * [tsParticles](https://github.com/matteobruni/tsparticles) - A new and improved version of particles.js with bug fixes and many new features. * [particles-bg](https://github.com/lindelof/particles-bg) - A lightweight React particles animation background component. @@ -985,7 +1013,7 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [es6features](https://github.com/lukehoban/es6features) - Overview of ECMAScript 6 features. * [es6-features](https://github.com/rse/es6-features) - ECMAScript 6: Feature Overview & Comparison. * [es6-cheatsheet](https://github.com/DrkSephy/es6-cheatsheet) - ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets. -* [ECMAScript 6 compatibility table](http://kangax.github.io/compat-table/es6/) - Compatibility tables for all ECMAScript 6 features on a variety of environments. +* [ECMAScript 6 compatibility table](https://compat-table.github.io/compat-table/es6/) - Compatibility tables for all ECMAScript 6 features on a variety of environments. * [Babel (Formerly 6to5)](https://github.com/babel/babel) - Turn ES6+ code into vanilla ES5 with no runtime. * [Traceur compiler](https://github.com/google/traceur-compiler) - ES6 features > ES5. Includes classes, generators, promises, destructuring patterns, default parameters & more. @@ -996,18 +1024,45 @@ There're also some great commercial libraries, like [amchart](https://www.amchar * [Gridsome](https://github.com/gridsome/gridsome) - Vue-powered static site generator. * [Docusaurus](https://github.com/facebook/docusaurus) - React-based static site generator by Facebook, ideal for content-centric websites. * [Next.js](https://github.com/vercel/next.js) - React powered static site generator, and they say "All the tools you need to make the Web. Faster.". +* [Lume](https://github.com/lumeland/lume) - Static site generator for Deno. +* [Astro](https://github.com/withastro/astro) - The web framework for content-driven websites. +* [Nuxt](https://github.com/nuxt/nuxt) - The Intuitive Vue Framework. ## SDK * [javascript-sdk-design](https://github.com/huei90/javascript-sdk-design) - JavaScript SDK design guide extracted from work and personal experience. * [Spotify SDK](https://github.com/loverajoel/spotify-sdk) - Entity oriented SDK to work with the Spotify Web API. * [Square Node.js SDK](https://github.com/square/connect-nodejs-sdk/) - JavaScript client library for payments and other Square APIs. +* [OpenAI SDK](https://github.com/openai/openai-node) - Official JavaScript / TypeScript library for the OpenAI API. +* [Stripe Node.js SDK](https://github.com/stripe/stripe-node) - Stripe Node.js SDK lets you integrate payments, subscriptions, and billing into your JavaScript/TypeScript apps. ## Full Text Search * [lunr](https://github.com/olivernn/lunr.js) - Library for use in the browser and It indexes JSON documents and provides a simple search interface for retrieving documents that best match text queries. * [flexsearch](https://github.com/nextapps-de/flexsearch) - It is a Next-Generation full text search library for Browser and Node.js. * [Elasticlunr](https://github.com/weixsong/elasticlunr.js) - This library is based on lunr.js, but more flexible and customized. + +## ORM + +* [Prisma](https://github.com/prisma/prisma) Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB. +* [Sequelize](https://github.com/sequelize/sequelize) Feature-rich ORM for modern Node.js and TypeScript | PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB... +* [Mongoose](https://github.com/Automattic/mongoose) MongoDB object modeling designed to work in an asynchronous environment. +* [TypeORM](https://github.com/typeorm/typeorm) ORM for TypeScript and JavaScript, Works in NodeJS, Browser, Ionic, Cordova and Electron platforms. +* [Drizzle ORM](https://github.com/drizzle-team/drizzle-orm) Headless TypeScript ORM with a head. Runs on Node, Bun and Deno. +* [Kysely](https://github.com/kysely-org/kysely) A type-safe typescript SQL query builder. +* [Knex](https://github.com/knex/knex) A query builder for PostgreSQL, MySQL, CockroachDB, SQL Server, SQLite3 and Oracle, designed to be flexible, portable, and fun to use. +* [MikroORM](https://github.com/mikro-orm/mikro-orm) TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. +* [Objection.js](https://github.com/Vincit/objection.js) A SQL-friendly ORM for Node.js built on top of Knex.js, with powerful relational support. + + +## WebSockets + +* [Socket.io](https://github.com/socketio/socket.io) The most widely used WebSocket library for real-time applications. Supports auto-reconnection, rooms, and fallbacks (e.g., polling). +* [ws](https://github.com/websockets/ws) Simple to use, blazing fast and thoroughly tested WebSocket client and server for Node.js. + +## Generative AI + +* [KaibanJS](https://github.com/kaiban-ai/KaibanJS) - KaibanJS is an open-source framework browser-compatibility of orchestration of multi-agent ai systems using a Kanban-inspired architecture. ## Misc @@ -1049,6 +1104,8 @@ https://listjs.com * [JavaScript Tutorials](https://hackr.io/tutorials/learn-javascript) - Learn Javascript online from a diverse range of user ranked online tutorials. * [Functional-Light JavaScript](https://github.com/getify/Functional-Light-JS) - Pragmatic, balanced FP in JavaScript. * [Clean Code JavaScript](https://github.com/ryanmcdermott/clean-code-javascript) - Clean Code concepts adapted for JavaScript. +* [Roadmap.sh JavaScript Roadmap](https://roadmap.sh/javascript) - Learn JavaScript from a community sourced learning roadmap. +* [JavaScript Info](https://javascript.info) - Modern JavaScript tutorial with simple explanations. # Other Awesome Lists