UNPKG

cluster-id

Version:

Database cluster friendly object id with great query isolation.

39 lines (32 loc) 827 B
var ref = require('./base64'); var encode = ref.encode; var maxNum = ref.maxNum; // return string in reverse order to increase variability of first symbols function reverse (str) { return str.split('').reverse().join('') } function createCounter (counterLen) { var maxCounter = maxNum(counterLen) var counter var counterStartSecond function updateCounter (seconds, time) { if (counterStartSecond === seconds) { counter += 1 if (counter > maxCounter) { counter = 0 } } else { counter = time % maxCounter counterStartSecond = seconds } return counter } function encodeCounter (counter) { return reverse(encode(counter, counterLen)) } return { updateCounter: updateCounter, encodeCounter: encodeCounter } } module.exports = createCounter