2024-03-26 00:47:53 +00:00
|
|
|
import { startOfHour, startOfMonth } from 'date-fns';
|
2022-08-29 03:20:54 +00:00
|
|
|
import { hash } from 'next-basics';
|
2024-04-26 06:21:12 +00:00
|
|
|
import { v4, v5 } from 'uuid';
|
2020-07-23 03:45:09 +00:00
|
|
|
|
|
|
|
|
export function secret() {
|
2022-12-28 05:38:23 +00:00
|
|
|
return hash(process.env.APP_SECRET || process.env.DATABASE_URL);
|
2020-07-23 03:45:09 +00:00
|
|
|
}
|
2020-07-22 22:46:05 +00:00
|
|
|
|
2020-08-21 02:38:20 +00:00
|
|
|
export function salt() {
|
2022-08-29 03:20:54 +00:00
|
|
|
const ROTATING_SALT = hash(startOfMonth(new Date()).toUTCString());
|
|
|
|
|
|
2022-10-31 18:02:37 +00:00
|
|
|
return hash(secret(), ROTATING_SALT);
|
2020-08-21 02:38:20 +00:00
|
|
|
}
|
2023-07-29 00:21:34 +00:00
|
|
|
|
2024-03-26 17:43:01 +00:00
|
|
|
export function visitSalt() {
|
2024-03-26 00:47:53 +00:00
|
|
|
const ROTATING_SALT = hash(startOfHour(new Date()).toUTCString());
|
|
|
|
|
|
|
|
|
|
return hash(secret(), ROTATING_SALT);
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-04 06:49:30 +00:00
|
|
|
export function uuid(...args: any) {
|
2023-07-29 00:21:34 +00:00
|
|
|
if (!args.length) return v4();
|
|
|
|
|
|
2023-10-20 20:54:03 +00:00
|
|
|
return v5(hash(...args, salt()), v5.DNS);
|
2023-07-29 00:21:34 +00:00
|
|
|
}
|