From a01a94fff211bfcebcfa878dee7efc8cd592d4d9 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Sun, 6 Apr 2025 14:08:36 -0400 Subject: [PATCH] refactor: use node crypto uuid --- server/package.json | 2 -- server/server/api/v1/auth/signup/simple.post.ts | 10 ++++------ server/server/internal/clients/handler.ts | 6 +++--- server/server/internal/objects/fsBackend.ts | 1 - server/server/internal/objects/objectHandler.ts | 1 - server/server/internal/objects/transactional.ts | 6 +++--- server/server/internal/saves/index.ts | 4 ++-- server/yarn.lock | 10 ---------- 8 files changed, 12 insertions(+), 28 deletions(-) diff --git a/server/package.json b/server/package.json index 2fe0b3fb..dec78b43 100644 --- a/server/package.json +++ b/server/package.json @@ -40,7 +40,6 @@ "stream": "^0.0.3", "stream-mime-type": "^2.0.0", "turndown": "^7.2.0", - "uuid": "^10.0.0", "vue": "latest", "vue-router": "latest", "vue3-carousel": "^0.15.0", @@ -53,7 +52,6 @@ "@types/bcryptjs": "^2.4.6", "@types/node": "^22.13.16", "@types/turndown": "^5.0.5", - "@types/uuid": "^10.0.0", "autoprefixer": "^10.4.20", "h3": "^1.13.0", "postcss": "^8.4.47", diff --git a/server/server/api/v1/auth/signup/simple.post.ts b/server/server/api/v1/auth/signup/simple.post.ts index 8c91bb66..25a9ebd0 100644 --- a/server/server/api/v1/auth/signup/simple.post.ts +++ b/server/server/api/v1/auth/signup/simple.post.ts @@ -1,12 +1,10 @@ import { AuthMec, Invitation } from "@prisma/client"; import prisma from "~/server/internal/db/database"; -import { - createHashArgon2, -} from "~/server/internal/security/simple"; -import { v4 as uuidv4 } from "uuid"; +import { createHashArgon2 } from "~/server/internal/security/simple"; import * as jdenticon from "jdenticon"; import objectHandler from "~/server/internal/objects"; import { type } from "arktype"; +import { randomUUID } from "node:crypto"; import { writeNonLiteralDefaultMessage } from "arktype/internal/parser/shift/operator/default.ts"; const userValidator = type({ @@ -59,9 +57,9 @@ export default defineEventHandler(async (h3) => { statusMessage: "Username already taken.", }); - const userId = uuidv4(); + const userId = randomUUID(); - const profilePictureId = uuidv4(); + const profilePictureId = randomUUID(); await objectHandler.createFromSource( profilePictureId, async () => jdenticon.toPng(user.username, 256), diff --git a/server/server/internal/clients/handler.ts b/server/server/internal/clients/handler.ts index f2176ea5..a10d254d 100644 --- a/server/server/internal/clients/handler.ts +++ b/server/server/internal/clients/handler.ts @@ -1,4 +1,4 @@ -import { v4 as uuidv4 } from "uuid"; +import { randomUUID } from "node:crypto"; import { CertificateBundle } from "./ca"; import prisma from "../db/database"; import { Platform } from "@prisma/client"; @@ -20,7 +20,7 @@ export class ClientHandler { } = {}; async initiate(metadata: ClientMetadata) { - const clientId = uuidv4(); + const clientId = randomUUID(); this.temporaryClientTable[clientId] = { data: metadata, @@ -53,7 +53,7 @@ export class ClientHandler { const entry = this.temporaryClientTable[clientId]; if (!entry) throw new Error("Invalid clientId to generate token"); - const token = uuidv4(); + const token = randomUUID(); this.temporaryClientTable[clientId].authToken = token; return token; diff --git a/server/server/internal/objects/fsBackend.ts b/server/server/internal/objects/fsBackend.ts index 321acf06..d9be1222 100644 --- a/server/server/internal/objects/fsBackend.ts +++ b/server/server/internal/objects/fsBackend.ts @@ -11,7 +11,6 @@ import sanitize from "sanitize-filename"; import fs from "fs"; import path from "path"; import { Readable, Stream } from "stream"; -import { v4 as uuidv4 } from "uuid"; export class FsObjectBackend extends ObjectBackend { private baseObjectPath: string; diff --git a/server/server/internal/objects/objectHandler.ts b/server/server/internal/objects/objectHandler.ts index 818f3d13..84039e48 100644 --- a/server/server/internal/objects/objectHandler.ts +++ b/server/server/internal/objects/objectHandler.ts @@ -17,7 +17,6 @@ import { parse as getMimeTypeBuffer } from "file-type-mime"; import Stream, { Readable, Writable } from "stream"; import { getMimeType as getMimeTypeStream } from "stream-mime-type"; -import { v4 as uuidv4 } from "uuid"; export type ObjectReference = string; export type ObjectMetadata = { diff --git a/server/server/internal/objects/transactional.ts b/server/server/internal/objects/transactional.ts index 922ff6ae..dc557e2c 100644 --- a/server/server/internal/objects/transactional.ts +++ b/server/server/internal/objects/transactional.ts @@ -3,7 +3,7 @@ The purpose of this class is to hold references to remote objects (like images) This is used as a utility in metadata handling, so we only fetch the objects if we're actually creating a database record. */ import { Readable } from "stream"; -import { v4 as uuidv4 } from "uuid"; +import { randomUUID } from "node:crypto"; import objectHandler from "."; export type TransactionDataType = string | Readable | Buffer; @@ -21,12 +21,12 @@ export class ObjectTransactionalHandler { metadata: { [key: string]: string }, permissions: Array ): [Register, Pull, Dump] { - const transactionId = uuidv4(); + const transactionId = randomUUID(); this.record[transactionId] ??= {}; const register = (data: TransactionDataType) => { - const objectId = uuidv4(); + const objectId = randomUUID(); this.record[transactionId][objectId] = data; return objectId; diff --git a/server/server/internal/saves/index.ts b/server/server/internal/saves/index.ts index 5a9d23d8..df6797d3 100644 --- a/server/server/internal/saves/index.ts +++ b/server/server/internal/saves/index.ts @@ -2,7 +2,7 @@ import Stream, { Readable } from "stream"; import prisma from "../db/database"; import { applicationSettings } from "../config/application-configuration"; import objectHandler from "../objects"; -import { v4 as uuidv4 } from "uuid"; +import { randomUUID } from "node:crypto"; import crypto from "crypto"; import { IncomingMessage } from "http"; @@ -35,7 +35,7 @@ class SaveManager { if (!save) throw createError({ statusCode: 404, statusMessage: "Save not found" }); - const newSaveObjectId = uuidv4(); + const newSaveObjectId = randomUUID(); const newSaveStream = await objectHandler.createWithStream( newSaveObjectId, { saveSlot: JSON.stringify({ userId, gameId, index }) }, diff --git a/server/yarn.lock b/server/yarn.lock index b66fef7f..c8bbe85b 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -1777,11 +1777,6 @@ resolved "https://registry.yarnpkg.com/@types/turndown/-/turndown-5.0.5.tgz#614de24fc9ace4d8c0d9483ba81dc8c1976dd26f" integrity sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w== -"@types/uuid@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" - integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== - "@unhead/dom@1.11.20", "@unhead/dom@^1.11.18": version "1.11.20" resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.11.20.tgz#b777f439e1c5f80ebcceb89aa45c45e877013c62" @@ -7142,11 +7137,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - vary@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"