define(function(require, exports, module) { exports.inherits = function(Child, Parent) { Child.prototype = Object.create(Parent.prototype, { constructor: { value: Child }}); } var isNode = (typeof global !== "undefined" && ({}).toString.call(global) == '[object global]'); var isBrowser = (typeof window !== "undefined" && ({}).toString.call(window) == '[object window]'); if (isNode) { exports.uid = function(length) { return (require("crypto") .randomBytes(length) .toString("base64") .slice(0, length) ); }; } else if (isBrowser && window.crypto && window.crypto.getRandomValues) { exports.uid = function(length) { var values = new Uint8Array(length); window.crypto.getRandomValues(values); return btoa(String.fromCharCode.apply(null, values)).slice(0, 10); }; } else { exports.uid = function(length) { var arr = []; for (var i = 0; i < length; i++) { arr[i] = Math.floor(Math.random() * 255); } return btoa(String.fromCharCode.apply(null, values)).slice(0, 10); }; } });