Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { init, createId } from "@paralleldrive/cuid2";
|
||||
import config from "../config/index.js";
|
||||
const TIME2000 = 946684800000;
|
||||
const TIMESTAMP_LENGTH = 8;
|
||||
const length = Math.min(Math.max(config.cuid?.length ?? 16, 16), 24) - TIMESTAMP_LENGTH;
|
||||
const fingerprint = `${config.cuid?.fingerprint ?? ""}${createId()}`;
|
||||
const genCuid2 = init({
|
||||
length,
|
||||
fingerprint
|
||||
});
|
||||
/**
|
||||
* The generated ID results in the form of `[8 chars timestamp] + [cuid2]`.
|
||||
* The minimum and maximum lengths are 16 and 24, respectively.
|
||||
* With the length of 16, namely 8 for cuid2, roughly 1427399 IDs are needed
|
||||
* in the same millisecond to reach 50% chance of collision.
|
||||
*
|
||||
* Ref: https://github.com/paralleldrive/cuid2#parameterized-length
|
||||
*/ export function genId(date) {
|
||||
const now = (date ?? new Date()).getTime();
|
||||
const time = Math.max(now - TIME2000, 0);
|
||||
const timestamp = time.toString(36).padStart(TIMESTAMP_LENGTH, "0");
|
||||
return `${timestamp}${genCuid2()}`;
|
||||
}
|
||||
Reference in New Issue
Block a user