summary refs log tree commit diff
path: root/util/src/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'util/src/schemas')
-rw-r--r--util/src/schemas/Validator.ts54
-rw-r--r--util/src/schemas/index.ts2
-rw-r--r--util/src/schemas/voice.ts69
3 files changed, 0 insertions, 125 deletions
diff --git a/util/src/schemas/Validator.ts b/util/src/schemas/Validator.ts
deleted file mode 100644

index e5f12ac5..00000000 --- a/util/src/schemas/Validator.ts +++ /dev/null
@@ -1,54 +0,0 @@ -import Ajv from "ajv"; -import addFormats from "ajv-formats"; -import fs from "fs"; -import path from "path"; - -const SchemaPath = path.join(__dirname, "..", "..", "..", "api", "assets", "schemas.json"); -const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" })); - -export const ajv = new Ajv({ - allErrors: true, - parseDate: true, - allowDate: true, - schemas, - coerceTypes: true, - messages: true, - strict: true, - strictRequired: true -}); - -addFormats(ajv); - -export function validateSchema<G>(schema: string, data: G): G { - const valid = ajv.validate(schema, normalizeBody(data)); - if (!valid) throw ajv.errors; - return data; -} - -// Normalizer is introduced to workaround https://github.com/ajv-validator/ajv/issues/1287 -// this removes null values as ajv doesn't treat them as undefined -// normalizeBody allows to handle circular structures without issues -// taken from https://github.com/serverless/serverless/blob/master/lib/classes/ConfigSchemaHandler/index.js#L30 (MIT license) -export const normalizeBody = (body: any = {}) => { - const normalizedObjectsSet = new WeakSet(); - const normalizeObject = (object: any) => { - if (normalizedObjectsSet.has(object)) return; - normalizedObjectsSet.add(object); - if (Array.isArray(object)) { - for (const [index, value] of object.entries()) { - if (typeof value === "object") normalizeObject(value); - } - } else { - for (const [key, value] of Object.entries(object)) { - if (value == null) { - if (key === "icon" || key === "avatar" || key === "banner" || key === "splash" || key === "discovery_splash") continue; - delete object[key]; - } else if (typeof value === "object") { - normalizeObject(value); - } - } - } - }; - normalizeObject(body); - return body; -}; \ No newline at end of file diff --git a/util/src/schemas/index.ts b/util/src/schemas/index.ts deleted file mode 100644
index 662152dc..00000000 --- a/util/src/schemas/index.ts +++ /dev/null
@@ -1,2 +0,0 @@ -export * from "./Validator"; -export * from "./voice"; \ No newline at end of file diff --git a/util/src/schemas/voice.ts b/util/src/schemas/voice.ts deleted file mode 100644
index 61c12f92..00000000 --- a/util/src/schemas/voice.ts +++ /dev/null
@@ -1,69 +0,0 @@ -export interface VoiceVideoSchema { - audio_ssrc: number; - video_ssrc: number; - rtx_ssrc?: number; - user_id?: string; - streams?: { - type: "video" | "audio"; - rid: string; - ssrc: number; - active: boolean; - quality: number; - rtx_ssrc: number; - max_bitrate: number; - max_framerate: number; - max_resolution: { type: string; width: number; height: number; }; - }[]; -} - -export const VoiceStateUpdateSchema = { - $guild_id: String, - $channel_id: String, - self_mute: Boolean, - self_deaf: Boolean, - self_video: Boolean -}; - -//TODO need more testing when community guild and voice stage channel are working -export interface VoiceStateUpdateSchema { - channel_id: string; - guild_id?: string; - suppress?: boolean; - request_to_speak_timestamp?: Date; - self_mute?: boolean; - self_deaf?: boolean; - self_video?: boolean; -} - -export interface VoiceIdentifySchema { - server_id: string; - user_id: string; - session_id: string; - token: string; - video?: boolean; - streams?: { - type: string; - rid: string; - quality: number; - }[]; -} - -export interface SelectProtocolSchema { - protocol: "webrtc" | "udp"; - data: - | string - | { - address: string; - port: number; - mode: string; - }; - sdp?: string; - codecs?: { - name: "opus" | "VP8" | "VP9" | "H264"; - type: "audio" | "video"; - priority: number; - payload_type: number; - rtx_payload_type?: number | null; - }[]; - rtc_connection_id?: string; // uuid -} \ No newline at end of file