import { randomBytes } from "crypto"; import type { Visibility } from "#server/constants/visibility"; /** URL-safe token, ~43 chars */ export function newShareToken(): string { return randomBytes(32).toString("base64url"); } /** * `unlisted` 需要 token;切回 public/private 时清空 token(分享链失效)。 */ export function visibilityShareToken(visibility: Visibility, previousToken: string | null | undefined): string | null { if (visibility === "unlisted") { return previousToken && previousToken.length > 0 ? previousToken : newShareToken(); } return null; }