1 files changed, 18 insertions, 0 deletions
diff --git a/src/gateway/opcodes/instanceOf.ts b/src/gateway/opcodes/instanceOf.ts
new file mode 100644
index 00000000..eb6f6ea1
--- /dev/null
+++ b/src/gateway/opcodes/instanceOf.ts
@@ -0,0 +1,18 @@
+import { instanceOf } from "@fosscord/util";
+import { WebSocket } from "@fosscord/gateway";
+import { CLOSECODES } from "../util/Constants";
+
+export function check(this: WebSocket, schema: any, data: any) {
+ try {
+ const error = instanceOf(schema, data, { path: "body" });
+ if (error !== true) {
+ throw error;
+ }
+ return true;
+ } catch (error) {
+ console.error(error);
+ // invalid payload
+ this.close(CLOSECODES.Decode_error);
+ throw error;
+ }
+}
|