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