You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
'use strict'
|
|
|
|
|
|
|
|
|
|
module.exports = function () {
|
|
|
|
|
// 2,147,483,647 (2^31 − 1) stands for max SMI value (an internal optimization of V8).
|
|
|
|
|
// With this upper bound, if you'll be generating 1k ids/sec, you're going to hit it in ~25 days.
|
|
|
|
|
// This is very likely to happen in real-world applications, hence the limit is enforced.
|
|
|
|
|
// Growing beyond this value will make the id generation slower and cause a deopt.
|
|
|
|
|
// In the worst cases, it will become a float, losing accuracy.
|
|
|
|
|
const maxInt = 2147483647
|
|
|
|
|
let nextReqId = 0
|
|
|
|
|
return function genReqId (req) {
|
|
|
|
|
nextReqId = (nextReqId + 1) & maxInt
|
|
|
|
|
return `req-${nextReqId.toString(36)}`
|
|
|
|
|
}
|
|
|
|
|
}
|