Skip to content
Source
Sign inSign up

AnnotationIds.ts

11 lines411 Bytes

1/** Per-load nonces avoid draft ID collisions; getRandomValues works on plain HTTP. */
2export function createAnnotationIdSource(): (prefix: string) => string {
3 const pageLoad = Array.from(crypto.getRandomValues(new Uint32Array(2)), (part) =>
4 part.toString(36),
5 ).join("");
6 let sequence = 0;
7 return (prefix) => {
8 sequence += 1;
9 return `${prefix}_${pageLoad}_${sequence.toString(36)}`;
10 };