ngn-data
Version:
Data modeling, stores, proxies, and utilities for NGN
56 lines (45 loc) • 1.63 kB
JavaScript
/**
* v0.1.11 generated on: Sat Jun 24 2017 01:20:07 GMT+0000 (UTC)
* Copyright (c) 2014-2017, Ecor Ventures LLC. All Rights Reserved. See LICENSE (BSD3).
*/
NGN.DATA = NGN.DATA || {}
NGN.DATA.util = {}
Object.defineProperties(NGN.DATA.util, {
crcTable: NGN.private(null),
makeCRCTable: NGN.privateconst(function () {
let c
let crcTable = []
for (let n = 0; n < 256; n++) {
c = n
for (let k = 0; k < 8; k++) {
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1))
}
crcTable[n] = c
}
return crcTable
}),
checksum: NGN.const(function (str) {
let crcTable = this.crcTable || (this.crcTable = this.makeCRCTable())
let crc = 0 ^ (-1)
for (let i = 0; i < str.length; i++) {
crc = (crc >>> 8) ^ crcTable[(crc ^ str.charCodeAt(i)) & 0xFF]
}
return (crc ^ (-1)) >>> 0
}),
GUID: NGN.const(function () {
let lut = []
for (var i = 0; i < 256; i++) {
lut[i] = (i < 16 ? '0' : '') + (i).toString(16)
}
const d0 = Math.random() * 0xffffffff | 0
const d1 = Math.random() * 0xffffffff | 0
const d2 = Math.random() * 0xffffffff | 0
const d3 = Math.random() * 0xffffffff | 0
return lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] +
'-' + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] +
lut[d1 >> 24 & 0xff] + '-' + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' +
lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] +
lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]
})
})