---
title: "On the origin of packages"
publication: "JavaScript Weekly"
issue: 635
published_at: "2023-04-20"
canonical_url: "https://javascriptweekly.com/issues/635"
---

Plus Node.js v20, TypeScript 5.1 beta, and thinking back to Deluxe Paint. |        

#​635 — April 20, 2023 

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

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/algorithms-practice/?utm_source=javascriptweekly&utm_medium=email&utm_content=algorithmspractice)  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ianh3bgg48t6a4lowziv.jpg)](https://github.blog/2023-04-19-introducing-npm-package-provenance/)  

[Introducing npm Package Provenance](https://github.blog/2023-04-19-introducing-npm-package-provenance/) — As stewards of the official npm registry, GitHub has been keen to improve its security. As of this week, if you build npm packages through GitHub Actions, you can publish the _provenance_ of a package which gives users a way to verify which repo a package was built from _and how._ The folks at Socket took [a closer look at how it works.](https://socket.dev/blog/npm-provenance) 

DeHamer and Harrison (GitHub)   

[What's New in ECMAScript 2023, Briefly](https://pawelgrzybek.com/whats-new-in-ecmascript-2023/) — Last week we mentioned the progression of the [ECMAScript 2023 spec](https://tc39.es/ecma262/2023/) but it’s hardly bedtime reading. This post looks more briefly at a few of the new additions including `Array#findLast`, hashbangs, and `Array#toSorted`. 

Pawel Grzybek   [![\](https://copm.s3.amazonaws.com/14319010.png)](https://frontendmasters.com/courses/algorithms-practice/?utm_source=javascriptweekly&utm_medium=email&utm_content=algorithmspractice) 

[New Course by Kyle Simpson: Practical Problem Solving with Algorithms](https://frontendmasters.com/courses/algorithms-practice/?utm_source=javascriptweekly&utm_medium=email&utm_content=algorithmspractice) — Walk through four fun challenges with Kyle in this new video course. You'll learn how to apply algorithms with techniques like recursion, traversals, and acyclic paths, cover memoization to avoid garbage collection, and come away writing more performant code. 

Frontend Masters sponsor   

[Node.js v20 (Current) Released](https://nodejs.org/en/blog/announcements/v20-release-announce) — Released just two days ago, the newest major version of Node.js includes a variety of interesting updates, including: 

- **An experimental permissions model.** This is a feature [Deno has at its core](https://deno.land/manual@v1.32.4/basics/permissions) but now you can restrict access to certain capabilities in Node too.
- **V8 11.3** (which includes [Regexp `/v` flag support](https://chromestatus.com/feature/5144156542861312))
- **The `node:test` test runner goes stable.**
- Official support for Windows on ARM64.
- Improvements to the single executable packaging mechanism. 

The Node.js Team   

[As per policy,](https://nodejs.dev/en/about/releases/) Node v20 will become the main LTS release this October.  

[Vite 4.3: Now It's Even _'Faaaaster'_](https://vitejs.dev/blog/announcing-vite4-3.html) — A minor release of the popular frontend toolchain, but one that focuses on _performance._ The creatively titled [How we made Vite 4.3 faaaaster](https://sun0day.github.io/blog/vite/why-vite4_3-is-faster.html) digs into the details. 

Evan You and Contributors   

**IN BRIEF:** 

- [TypeScript 5.1 Beta](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/) has been released which allows undefined-returning functions to have no `return` statement, to have unrelated types for `get` and `set` accessor properties, namespaced attribute names when using JSX, and more.
- The [React core team](https://react.dev/community/team) appears to have [been](https://twitter.com/mattcarrollcode/status/1648770402272018432) [affected](https://twitter.com/mengdi_en/status/1648718077796786177) by Meta's latest round of layoffs ([as has](https://twitter.com/StatisticsFTW/status/1648820621252653056) that of [Relay](https://relay.dev/)), though Dan Abramov [recently noted](https://twitter.com/dan_abramov/status/1641080531025637378) Meta's continued investment into the ecosystem.   

[Introducing the TERN Stack & How to Migrate from MERN to TERN](https://www.tigrisdata.com/blog/tern-stack/) 

Tigris sponsor   

**RELEASES:** 

- [Shoelace 2.4](https://shoelace.style/)
 ↳ Popular library of well designed Web components.
- [Node.js v18.16.0 (LTS)](https://nodejs.org/en/blog/release/v18.16.0)
- [Gatsby 5.9](https://www.gatsbyjs.com/docs/reference/release-notes/v5.9/)  

📒 Articles & Tutorials 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pyt09svthzqag1hvsve0.jpg)](https://developer.chrome.com/blog/richer-install-ui-desktop/)  

[Richer Install UI for PWAs Available in Chrome](https://developer.chrome.com/blog/richer-install-ui-desktop/) — Gives progressive web app developers a new opportunity to encourage end users to install their app. 

Adriana Jara (Chrome Developers)   

[Passkeys: What and Why?](https://css-tricks.com/passkeys-what-the-heck-and-why/) — The author has been experimenting with passkeys and the associated WebAuthn API that opens them up to the Web. A primer for an increasingly common security approach. 

Neal Fennimore   

[Build Complex Automations 10x Faster, Without Fighting APIs](https://n8n.io/?utm_source=paid&utm_medium=paid-newsletter&utm_campaign=javascript-weekly) — The flexible workflow automation platform for technical people who want to build complex workflows faster — without struggling with manual scripts. 

n8n sponsor   

[Integrating React Flow and the Web Audio API](https://reactflow.dev/blog/react-flow-and-the-web-audio-api/) — [React Flow](https://reactflow.dev/) is a component for building node-based editors and interactive diagrams, which makes it well suited for building audio signal chains. There’s a lot of depth here, some nice examples, and these techniques could prove useful for a lot of other use cases. 

Hayleigh Thompson   

[Ways to Create an Enum in JavaScript](https://dmitripavlutin.com/javascript-enum/) — An enum is a set of named constants. Plain objects, frozen objects, proxied objects or a class-based approach provide some ways to create enums in JavaScript. 

Dmitri Pavlutin   

[Deno vs. Node: No One is Ready for the Move](https://cult.honeypot.io/reads/deno-vs-node-main-differences/) — [Deno](https://deno.land/) has a lot going for it as an alternative to Node, but Node has time, maturity and a huge, established userbase on its side (and continues to develop, as seen with this week's Node v20). 

Piumi Liyana Gunawardhana (Honeypot)   

[How to Work with Dates and Times in Vanilla JavaScript](https://gomakethings.com/how-to-work-with-dates-and-times-in-vanilla-javascript/) 
Chris Ferdinandi  

🛠 Code & Tools  

[Tachyon 2.0: A Bite-Sized Script to Make Page Navigation Faster](https://github.com/weebney/tachyon) — It does this by prerendering pages before a user navigates to them, making page transitions as quick as can be. 

Tachyon   

[instant.page](https://instant.page/) is another well known option in this space.  

[Iconoir: 1300+ Open Source SVG Icons](https://iconoir.com/) — A vast array of clean and simple icons, complete with ways to quickly integrate them into React, React Native, Figma, and other apps – or just using CSS, if you prefer. 

Luca Burgio   

[Tuple – One-Click Code Reviews for Remote Devs](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=sponsorship-blitz&utm_content=JavaScript+Weekly_Review+Link) — Why waste hours setting up Zoom just to review a couple lines of code? Tuple brings your team together in seconds. 

Tuple sponsor   

[Ark UI: A Headless Library of Customizable, Accessible, and Unstyled UI Components](https://ark-ui.com/) — Compatible with React, Vue, and Solid and powered by [Zag.js.](https://zagjs.com/) All components are built with accessibility standards and are easy to theme in line with your own design system. 

Chakra Systems   

[next-route-visualizer: Visualize Next.js App Routes](https://github.com/DiiiaZoTe/next-route-visualizer) — A package for visualizing Next.js app directory routes, as seen in [this demo](https://next-route-visualizer.vercel.app). 

Alexander Vencel   

[ohash: Super Fast Hashing Library in Plain JS](https://github.com/unjs/ohash) 

UnJS   

- [`<relative-time>` Element 4.3](https://github.com/github/relative-time-element)
 ↳ Web component extension of `<time>`
- [Fable 4.1](https://github.com/fable-compiler/Fable)
 ↳ F# to JavaScript/TypeScript compiler.
- [useHotkeys 4.4](https://github.com/JohannesKlauss/react-hotkeys-hook)
 ↳ React hook for keyboard shortcuts.
- [AdminJS 7.0](https://docs.adminjs.co/installation/whats-new-in-v7) – Admin panel for Node webapps.
- [lowdb 6.0](https://github.com/typicode/lowdb) – Simple, local JSON database.
- [imaskjs 6.6](https://github.com/uNmAnNeR/imaskjs) – Vanilla JS input masking.
- [CKEditor 5 37.1](https://github.com/ckeditor/ckeditor5) – Rich text editor framework.     

💻 Jobs  

[Full Stack JavaScript Engineer @ Emerging Cybersecurity Startup](https://defendify.breezy.hr/p/b07e57b21e02-saas-software-engineer) — Small team/big results. Fun + flexible + always interesting. Come build our award-winning, all-in-one cybersecurity platform. 
Defendify   

[Find JavaScript Jobs with Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-javascriptweekly%29&utm_content=find-your-next-job) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired   

🧑‍💻 Got a job listing to share? _[Here's how](https://booking.cooperpress.com/jobs)_.   

🎨 Let's get it arted.. 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/elxovvrgtjk9j7j0a5ul.jpg)](https://www.stef.be/dpaint/)   

[DPaint JS: A Deluxe Paint-Inspired Image Editor](https://www.stef.be/dpaint/) — Sometimes we like to link to impressive projects built with JavaScript, and if you were ever into the Commodore Amiga, you'll love this one. It’s a Web-based image editor inspired by [Deluxe Paint](https://en.wikipedia.org/wiki/Deluxe_Paint), itself a hugely inspirational graphics editing tool from 1980s. Now we’re just waiting for a NeoPaint clone.. :-) 

Steffest         

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
