---
title: "Modern shell scripting with JavaScript"
publication: "JavaScript Weekly"
issue: 672
published_at: "2024-01-25"
canonical_url: "https://javascriptweekly.com/issues/672"
---

Plus AdonisJS 6, a deep dive into Web Components, and JavaScript on .NET. |        

#​672 — January 25, 2024 

[Read on the Web](https://javascriptweekly.com/issues/672)  

Together with [![Frontend Masters logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_300,h_70/e_make_transparent/co_white,e_outline:5/nk0tfdvalivacz8rw7rt.png)](https://frontendmasters.com/courses/vite/?utm_source=email&utm_medium=javascriptweekly&utm_content=vite)   

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zjtcrrcfcw1nclxr4hjg.jpg)](https://bun.sh/blog/the-bun-shell)  

[Better JavaScript Shell Scripting with _Bun Shell_](https://bun.sh/blog/the-bun-shell) — Performance-focused server-side runtime [Bun](https://bun.sh/) continues its rapid evolution with a side quest into the world of shell scripting by making it easier, cross-platform friendly, and less verbose. [zx](https://github.com/google/zx) offers similar (but less integrated and focused) functionality to Node users, if you should prefer. 

Jarred Sumner (Bun)   

[Announcing AdonisJS v6](https://adonisjs.com/blog/adonisjs-v6-announcement) — If you want a backend Web framework with [amazing docs](https://docs.adonisjs.com/guides/introduction) and packed with features, [Adonis](https://adonisjs.com/) is a good choice. v6 is a big step forward moving to ESM by default, with more type safety overall (including for routes and middleware references), a new validation library, and more. 

Harminder Virk   [![\](https://copm.s3.amazonaws.com/c960165f.png)](https://frontendmasters.com/courses/vite/?utm_source=email&utm_medium=javascriptweekly&utm_content=vite) 

[Learn Vite, The Fast Build Tool for Modern Web Projects](https://frontendmasters.com/courses/vite/?utm_source=email&utm_medium=javascriptweekly&utm_content=vite) — Join Steve Kinney for this video course tour of Vite's capabilities, including a look at bundling, optimizing static assets, hot module reloading, and its plugin ecosystem. You'll come away proficient at using Vite to build scalable, performant apps. 

Frontend Masters sponsor   

[QuickJS: The Small, Embeddable JavaScript Engine](https://bellard.org/quickjs/) — Several years ago, Fabrice Bellard, the genius behind FFMPEG and JSLinux, built a tiny and complete JavaScript engine in C. It now supports ES2023 and its latest release adds top-level `await` in modules and its REPL, as well as support for some cutting edge JS features ([changelog](https://bellard.org/quickjs/Changelog)). 

Fabrice Bellard   

**IN BRIEF:** 

- [@npm_malware](https://twitter.com/npm_malware) on Twitter/X shares malicious packages detected in real time.
- JetBrains has opened up its [Early Access Program for WebStorm 2024.1](https://blog.jetbrains.com/webstorm/2024/01/webstorm-2024-1-eap1/), its commercial JS/TS IDE.
- 📅 [React Conf 2024](https://conf.react.dev/) takes place this May 15-16 online _and_ at Lake Las Vegas. 

**RELEASES:** 

- [Astro 4.2](https://astro.build/blog/astro-420/) – The framework that never ceases to amaze.
- [Node.js 21.6.1 (Current)](https://nodejs.org/en/blog/release/v21.6.1) – A bug fix for Undici.
- [Puppeteer 21.9](https://pptr.dev/) – Now using Chromium 121.
- [Next.js 14.1](https://nextjs.org/blog/next-14-1), [Qwik 1.4](https://github.com/BuilderIO/qwik/releases/tag/v1.4.0), [Expo Router v3](https://expo.dev/changelog/2024/01-23-router-3), [Redux Toolkit 2.1](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.1.0)  

📒 Articles & Tutorials  

[Web Components in Earnest](https://naildrivin5.com/blog/2024/01/24/web-components-in-earnest.html) — This is.. epic! If you want to really get a walk through the journey of building an entire app using Web Components and JavaScript, this is it. [The app](https://ghola.dev/) in this case is simple, but complete, and the author shows off the realities of going all in with Web Components here. 

David Bryant Copeland   

▶[An Alpine, HTMX, and Astro-Based Wordle App](https://www.youtube.com/watch?v=vQUqgURgG8M) — Popular dev YouTuber Jack demonstrates building a Wordle clone with a modern Alpine, HTMX and Astro-based stack. Or you can go [straight to the code](https://github.com/jherr/ahat-wordle), if you prefer. 

Jack Herrington   

[Complete Your AI Coding Experience with Wallaby.js](https://wallabyjs.com/blog/wallaby-copilot.html?utm_source=cooperpress&utm_medium=javascriptweekly&utm_content=javascriptweekly) — Get instant test feedback and powerful debugging for AI code suggestions. 

Wallaby Team sponsor   

[How to Start a React Project in 2024](https://www.robinwieruch.de/react-starter/) — Robin explains the pros and cons of a few common approaches, including using Vite, Astro, and Next.js. 

Robin Wieruch   

[Build a Next.js App in Storybook with React Server Components and Mock Service Worker](https://storybook.js.org/blog/build-a-nextjs-app-with-rsc-msw-storybook/) — How to develop, document, and test RSC apps in isolation, while using MSW to mock network requests. 

Michael Shilman   

[Reversing and Tooling a Signed Request Hash in Obfuscated JS](https://buer.haus/2024/01/16/reversing-and-tooling-a-signed-request-hash-in-obfuscated-javascript/) 
Brett Buerhaus   

[Create a Currency Converter with HTML, CSS, and Vanilla JavaScript](https://webdesign.tutsplus.com/currency-converter-with-html-css-and-vanilla-javascript--cms-108362t) 
Esther Vaati  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ztfmwe1nwcktekgu2a7a.jpg)](https://github.com/sebastienros/jint)  

[Jint 3.0: A JavaScript Interpreter for .NET](https://github.com/sebastienros/jint) — Run JavaScript within a .NET app and expose .NET objects and functions to JavaScript code. [v3](https://github.com/sebastienros/jint/releases/tag/v3.0.0) arrives after _seven years_ of work and is the most standards-compliant JS engine running entirely within .NET. 

Sébastien Ros   

[Mutative: A Library for Efficient Immutable Updates](https://mutative.js.org/blog/releases/1.0/) — A library for efficient immutable updates, boasting being 2-6x faster than naive handcrafted reducers, and even more than 10x faster than Immer. [GitHub repo.](https://github.com/unadlib/mutative) 

Michael Lin   

[Auth Without Complexity — Authentication in a Straightforward Platform](https://userfront.com/tutorials/react-authentication?&utm_source=javascriptweekly.com&utm_medium=newsletter&utm_campaign=sponsored_link&utm_content=react_authentication) — Userfront streamlines authentication & access control so engineers can focus on their core business. [Read the docs now](https://userfront.com/tutorials/react-authentication?&utm_source=javascriptweekly.com&utm_medium=newsletter&utm_campaign=sponsored_link&utm_content=react_authentication). 

Userfront sponsor   

[React Email 2.0: Build Better Emails with React](https://resend.com/blog/react-email-2) — [React Email](https://react.email/) is a collection of unstyled components for creating emails using JSX and React ([this example](https://demo.react.email/preview/nike-receipt.tsx?view=desktop) shows you the basic idea). 

Gabriel Miranda (Resend)   

[workerpool 9.1: Offload Tasks to a Pool of Workers](https://github.com/josdejong/workerpool) — A long established thread pool library that works not only on Node but also in the browser. 

Jos de Jong   

[Microsoft TypeSpec: A TypeScript-Inspired Way to Define APIs](https://typespec.io/) — A language for concisely describing cloud service APIs and generating other API description languages (e.g. OpenAPI), client and service code, docs, and more. _Formerly [known as CADL](https://www.infoworld.com/article/3683909/introducing-cadl-microsofts-concise-api-design-language.html)._ – [GitHub repo](https://github.com/microsoft/typespec). 

Microsoft   

[Receive, Authenticate, Transform, Filter, Route, and Deliver Webhooks](https://hookdeck.com?ref=jsweekly-672) — The Hookdeck Event Gateway is a reliable platform to support event-driven application development across the full development lifecycle. 

Hookdeck sponsor   

[Partytown 0.9: Run Third Party Scripts in a Web Worker](https://partytown.builder.io/) — A way to run resource intensive scripts on a separate thread (in a web worker) to let the main thread remain responsive. [GitHub repo](https://github.com/BuilderIO/partytown). 

Partytown   

[pretty-ms 9.0: Convert Milliseconds to Readable Strings](https://github.com/sindresorhus/pretty-ms) — `1337000000` → `15d 11h 23m 20s` 

Sindre Sorhus   

[nmea.js: A Library to Parse Maritime Electronics Data](https://github.com/BMSVieira/nmea.js) — I’d never even _heard_ of [NMEA](https://en.wikipedia.org/wiki/National_Marine_Electronics_Association) till now, but if you work with sonars, gyrocompasses, and similar marine electronics, this is for you. 

Bruno Vieira   

- [Zustand 4.5](https://github.com/pmndrs/zustand) – Barebones flux-y state management.
- [Mongoose 8.1](https://github.com/Automattic/mongoose) – MongoDB object modelling approach.
- [EverShop 1.0](https://evershop.io/) – Node.js-based ecommerce platform.
- [pretty-quick 4.0](https://github.com/prettier/pretty-quick) – Run Prettier on changed files.
- [wavesurfer.js 7.7](https://github.com/katspaugh/wavesurfer.js) – Waveform rendering and playback.
- [Flatbush 4.3](https://github.com/mourner/flatbush) – Fast spatial index for 2D points/rectangles.
- [Culori 4.0](https://github.com/Evercoder/culori/releases/tag/v4.0.0) – Comprehensive color library.         

Published by [Cooperpress](https://cooperpress.com/) and edited by [Peter Cooper](https://twitter.com/cooperx86) 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or [stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*). 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
