UNPKG

uuid-base62

Version:

Base62 non-sequential url-safe UUID generator (RFC4122)

114 lines (88 loc) 2.9 kB
var baseX = require('base-x')('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); var b62 = require('b62'); var Uuid = require('node-uuid'); var buf = new Buffer([0x30, 0x17, 0xe8, 0x92, 0xe2, 0x3d, 0xff]); var str = "Hello World!"; var encodedX, encoded62, decodedX, decoded62, runs=100; // warm up console.time('base-x'); for(var i = 0; i < runs; i++){ encodedX = baseX.encode(buf, 'hex'); decodedX = baseX.decode(encodedX); //console.log('x:', encodedX); //console.log('x:', new Buffer(decodedX).toString('hex')); encodedX = baseX.encode(new Buffer(str)); decodedX = baseX.decode(encodedX); //console.log('x:', encodedX); //console.log('x:', new Buffer(decodedX).toString()); } console.timeEnd('base-x'); console.time('b62'); for(var i = 0; i < runs; i++){ encoded62 = b62.encode(buf); decoded62 = b62.decode(encoded62, 'hex'); //decoded62 = b62.decode(encoded62); //console.log('b62:', decoded62); encoded62 = b62.encode(str); //console.log('b62:', encoded62); //console.log('x:', 'b62:', decoded62); } console.timeEnd('b62'); // Test console.time('base-x'); for(var i = 0; i < runs; i++){ encodedX = baseX.encode(buf, 'hex'); decodedX = baseX.decode(encodedX); encodedX = baseX.encode(new Buffer(str)); decodedX = baseX.decode(encodedX); } console.timeEnd('base-x'); console.time('b62'); for(var i = 0; i < runs; i++){ encoded62 = b62.encode(buf); decoded62 = b62.decode(encoded62, 'hex'); encoded62 = b62.encode(str); decoded62 = b62.decode(encoded62); } console.timeEnd('b62'); // b64 console.log() var b64 = b62("-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); var encoded = b64.encode("Hi this is b64 example"); console.log(encoded); console.log(b64.decode(encoded)); // uuid console.log(); var buf = new Buffer(16); var uuid = Uuid.v4(null, buf); var uuidB62 = baseX.encode(uuid); // -> 71jbvv7LfRKYp19gtRLtkn console.log(uuidB62); console.log(new Buffer(baseX.decode(uuidB62)).toString('hex')); console.log(); console.log('encode'); // uuid2 //uuid = '06ad547ffe02477b9473f7977e4d5e17'; //uuid = '00000000000000000000000000000000'; uuid = 'ffffffffffffffffffffffffffffffff'; console.log('basex:', baseX.encode(new Buffer(uuid, 'hex'))); console.log('b62 :', b62.encode(new Buffer(uuid, 'hex'))); console.log(); console.log('decode'); uuidB62 = '0cBaidlJ84Ggc5JA7IYCgv'; console.log('basex:', new Buffer(baseX.decode(uuidB62)).toString('hex')); console.log('b62 :', b62.decode(uuidB62, 'hex')); console.log(); function trimLeft(str, maxLen){ str = str + ""; var trim = 0; while(str[trim] === '0' && (str.length - trim) > maxLen){ trim++; } return str.slice(trim); }; console.log('001:', trimLeft('00001', 3)); console.log('01:', trimLeft('01', 2)); console.log('01:', trimLeft('001', 2)); console.log('111:', trimLeft('111', 2)); console.log('111:', trimLeft('0111', 2));