denoland / deno_std

The Deno Standard Library
https://jsr.io/@std
MIT License
2.83k stars 581 forks source link

UUID v4 generator for non-secure contexts? #5156

Open m93a opened 6 days ago

m93a commented 6 days ago

Is your feature request related to a problem? Please describe.

I love how with jsr.io, Deno's std is on the way to become a true "standard library" for JavaScript. Not having to constantly search for (often abandoned) NPM packages for even the most basic stuff is huge. However, the fact that @std/uuid lacks a generator for v4 UUID (the most commonly generated one) is really annoying.

My team and I are developing a web app that needs to run on a company's intranet (HTTP on non-localhost address, therefore outside of secure context), so we cannot use crypto.randomUUID as recommended by the README.

Describe the solution you'd like

A "polyfill" implementation of v4/generate that falls back to crypto.randomUUID whenever it's available would be awesome.

EDIT: That's exactly what npm:uuid already does.

Describe alternatives you've considered

Right now we are forced to use the uuid NPM package for a feature that IMO should be "built in", at least in the standard library.

m93a commented 6 days ago

Also, if I interpret this thread correctly, the reasons for only exposing crypto.randomUUID in a secure context is purely "politics" (ie. corporations enforcing what they see as "good practice" on engineers), which kind of sucks IMHO.

kt3k commented 5 days ago

We used to have JS implementation of uuid v4, but switched to crypto.randomUUID() in #971. Maybe we can restore that logic as fallback path.