{{random-uuid}} 目前使用 {{Math/random}} 通过 {{rand-int}} 生成用于 v4 UUIDs 的随机数。此补丁旨在使用可用的密码学强度足够的 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}} 似乎没有 Node.js 模块的条件 {{require}},也许应该保持这种方式。