summary refs log tree commit diff
path: root/src/api/util/utility/RandomInviteID.ts
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-06-16 02:39:15 +0200
committerRory& <root@rory.gay>2026-06-16 02:39:15 +0200
commit92f4099b82f9b56972aff99b74dba4c3892272cb (patch)
tree46c443c5b536d387314a86c92ef7e9ef64155c9d /src/api/util/utility/RandomInviteID.ts
parentDont fetch roles if role id set is empty (diff)
downloadserver-ts-92f4099b82f9b56972aff99b74dba4c3892272cb.tar.xz
Move random string to Random class in extensions
Diffstat (limited to 'src/api/util/utility/RandomInviteID.ts')
-rw-r--r--src/api/util/utility/RandomInviteID.ts68
1 files changed, 0 insertions, 68 deletions
diff --git a/src/api/util/utility/RandomInviteID.ts b/src/api/util/utility/RandomInviteID.ts
deleted file mode 100644

index ec54a9fc..00000000 --- a/src/api/util/utility/RandomInviteID.ts +++ /dev/null
@@ -1,68 +0,0 @@ -/* - Spacebar: A FOSS re-implementation and extension of the Discord.com backend. - Copyright (C) 2023 Spacebar and Spacebar Contributors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - -import { Snowflake } from "@spacebar/util"; -import crypto from "node:crypto"; - -// TODO: 'random'? seriously? who named this? -// And why is this even here? Just use cryto.randomBytes? - -export function randomString(length = 6) { - // Declare all characters - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - // Pick characers randomly - let str = ""; - for (let i = 0; i < length; i++) { - str += chars.charAt(Math.floor(crypto.randomInt(chars.length))); - } - - return str; -} - -export function snowflakeBasedInvite() { - // Declare all characters - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - const base = BigInt(chars.length); - let snowflake = Snowflake.generateWorkerProcess(); - - // snowflakes hold ~10.75 characters worth of entropy; - // safe to generate a 8-char invite out of them - const str = ""; - for (let i = 0; i < 10; i++) { - str.concat(chars.charAt(Number(snowflake % base))); - snowflake = snowflake / base; - } - - return str - .slice(3, 3 + 8) - .split("") - .reverse() - .join(""); -} - -export function randomUpperString(length: number = 10) { - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - let result = ""; - for (let i = 0; i < length; i++) { - result += chars.charAt(Math.floor(Math.random() * chars.length)); - } - - return result; -}