UNPKG

jaydata-reso

Version:

Jaydata fork for RESO Web API

89 lines (73 loc) 2.56 kB
$data.Guid = function Guid(value) { ///<param name="value" type="string" /> if (value === undefined || (typeof value === 'string' && /^[a-zA-z0-9]{8}-[a-zA-z0-9]{4}-[a-zA-z0-9]{4}-[a-zA-z0-9]{4}-[a-zA-z0-9]{12}$/.test(value))) { this.value = value || '00000000-0000-0000-0000-000000000000'; } else { throw Guard.raise(new Exception('TypeError: ', 'value not convertable to $data.Guid', value)); } }; $data.Container.registerType(['$data.Guid', 'Guid', 'guid'], $data.Guid); $data.Container.registerConverter('$data.Guid', { '$data.String': function (value) { return value ? $data.parseGuid(value).toString() : value; }, '$data.Guid': function (value) { return value ? value.toString() : value; } }, { '$data.String': function (value) { return value ? value.toString() : value; } }); $data.Guid.prototype.toJSON = function () { return this.value; }; $data.Guid.prototype.valueOf = function () { return this.value; }; $data.Guid.prototype.toString = function () { return this.value; }; $data.Guid.NewGuid = function () { return $data.createGuid(); }; $data.parseGuid = function (guid) { return new $data.Guid(guid); }; (function () { /*! Math.uuid.js (v1.4) http://www.broofa.com mailto:robert@broofa.com Copyright (c) 2010 Robert Kieffer Dual licensed under the MIT and GPL licenses. */ var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); $data.createGuid = function (guidString) { if (guidString) { return new $data.Guid(guidString); }; var len; var chars = CHARS, uuid = [], i; var radix = chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return $data.parseGuid(uuid.join('')); }; })();