require(esm) makes it to LTS
#559 — December 10, 2024
🎄 The Node world is experiencing a post-Thanksgiving interfestal lull, so this issue includes a few items we overlooked earlier this year. Next week brings our usual annual roundup, though, so keep your eyes peeled for that before the festive break 🙂
__
Peter Cooper, your editor
Node.js Delivers First LTS with require(esm) Enabled — It’s a modest milestone, but Node v22.12.0 (LTS) has been released and marks Node’s first LTS release with non-flagged support for loading native ES modules with require(). It’s still experimental, though, and you’re encouraged to send in feedback and bug reports.
Sarah Gooding
Node’s Corepack: Version Control for Package Managers — A quick intro to a commonly misunderstood (and mildly contentious) part of the modern Node distribution: Corepack. It’s a (still) experimental tool for managing package managers.
Trevor I. Lasn
Memetria K/V: High-Performance Key-Value Hosting — Boost your Node.js apps with Memetria K/V, providing portable, easy-to-use hosting for Redis OSS and Valkey. Scale your applications with ease and achieve high performance. Includes detailed analytics and large key memory tracking.
Memetria sponsor
IN BRIEF:
🎄 Last week we mentioned the fabulous Advent of Code competition which is taking place again right now. The Deno team want to sweeten the deal by bribing encouraging you to give Deno a go with some special stickers on offer for completing certain numbers of days.
Just in case you forgot, Douglas Crockford is Not Your Dad – at least when it comes to putting comments in JSON..
⚛️ React 19 has been released. More on this in tomorrow’s React Status.
Implementing Filtered Semantic Search Using pgvector and JS — If you need something more sophisticated than keyword search, a semantic approach based upon the meanings of words/queries compared using vector embeddings offers a big step up. Luckily, there are some Postgres extensions that make building such things quite simple..
Timescale Team
📄 An Introduction to Database Migrations with Drizzle ORM Adam Rackis
📄 Taking Regular Screenshots of My Website – A nifty robust approach using Playwright and GitHub Actions. Alex Chan
📄 Building Your Own npm create Package – You’ll have seen various scaffolding tools using this technique. (A Different) Alex Chan
📄 I Like Makefiles – I also use this approach to help me organize the various shell incarnations I need for each project I’m working on. Sebastian Witowski
📄 Requesting Camera and Microphone Permissions in an Electron App Farhan CK
📺 The V8 JavaScript Engine: Let’s Read The Code Ants Are Everywhere
🛠 Code & Tools
🖼️ wasm-vips: It’s libvips, Compiled to WebAssembly — libvips is a popular, highly efficient image processing library written in C. You can use it via Sharp in Node.js, but this offers a more isomorphic route for use in Node, Deno, and modern browsers by way of WebAssembly. (There’s a nifty online demo here.)
Kleis Auke Wolthuizen
Build Fully Functional Apps in Minutes, Not Months — Create, run, edit, and deploy full-stack web apps with Bolt.
StackBlitz sponsor
Undici v7.1.0: Now with Stable HTTP/2 Support — Last week we featured the latest major v7 version of Node’s powerful HTTP/1.1 client. Now, after a little discussion, they’re marking Undici’s HTTP/2 support stable too (notes on HTTP/2 support in the docs).
Matteo Collina et al.
tldts: Extract Domain Names, Subdomains and Suffixes from URLs — A ‘blazing fast’ library for extracting hostnames, domains, public suffixes, and more from URLs, with full Unicode/IDA support, type definitions, and more.
Parisot and Berson
📰 Classifieds
🚨 Catch flaky tests before they break your build! Learn to flag unreliable tests early and keep your CI/CD pipeline
running smoothly.
📬 Hookdeck: A serverless queue to reliably send, receive, transform, filter, and route events across your event-driven apps.
Pelias 4.0: A Modular, Stand-Alone ‘Coarse’ Geocoder — Given an address or place name this will come up with geographic coordinates, and vice versa. In terms of finding a location, it’s not super accurate (hence the ‘coarse’) but it may be acceptable for your use case. Demo here.
Pelias
node-qrcode: Generate QR Codes in Node — The ubiquitous 2D barcodes that can store arbitrary data (like URLs).
Ryan Day
Fastify 4.29 – An update to the 4.x branch of the fast, low overhead Node.js web framework. Note that v5.1 remains the absolute latest version, however.
better-sqlite 11.7 – Neat way to use SQLite from Node and Electron. SQLite is bumped up to v3.47.2.
ExpressoTS 3.0 – TypeScript framework for server-side apps.
Piscina 4.8 – Efficient worker thread pool implementation.
pnpm 9.15 – The alternative, efficient package manager.
node-cron 3.3 – Run functions / commands on a schedule.
AlaSQL.js 4.6 – Isomorphic JavaScript SQL database.