{{random-uuid}} 目前通过 {{Math/random}} 和 {{rand-int}} 使用 {{Math/random}} 在大多数浏览器中生成随机数,用于 v4 UUID。此补丁旨在在可用的情况下使用加密强度强的 PRNG (伪随机数生成器)。
所使用的函数包括
{{window.crypto.getRandomValues}} 在大多数浏览器中
{{window.msCrypto.getRandomValues}} 在 IE11 中
* {{Math/random}} 在不支持前者的浏览器或 Node.js 上的加密模块不可用的情况下
当前未使用
* {{crypto.randomBytes}} 在 Node.js 上
Google Closure 似乎不提供对 crypto-APIs 的功能检测或包装,因此附带的补丁建议基于功能检测实现了一个模拟件。
一个悬而未决的问题是如何使 Node.js 的 {{crypto}} 模块可用,因为 ClojureScripts 的 {{core.cljs}} 似乎没有条件 {{require}} Node.js 模块,也许应该保持这种方式。