From 7d795903ef9264d4febb89c62bf4abb269ab8851 Mon Sep 17 00:00:00 2001 From: Diego Magdaleno Date: Sat, 22 May 2021 22:30:36 -0500 Subject: Config: Implement new configuration options --- src/util/Config.ts | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) (limited to 'src/util/Config.ts') diff --git a/src/util/Config.ts b/src/util/Config.ts index eee20e1d..138e1c2f 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts @@ -1,21 +1,36 @@ import { Config } from "@fosscord/server-util"; - -export default { - init() { - return Config.init({ gateway: DefaultOptions }); - }, - get() { - return Config.getAll().gateway; - }, - set(val: any) { - return Config.setAll({ gateway: val }); - }, - getAll: Config.getAll, - setAll: Config.setAll, -}; +import { getConfigPathForFile } from "@fosscord/server-util/dist/util/Config"; +import Ajv, { JSONSchemaType } from "ajv"; export interface DefaultOptions { endpoint?: string; + security: { + jwtSecret: string; + } } -export const DefaultOptions: DefaultOptions = {}; +const schema: JSONSchemaType = { + type: "object", + properties: { + endpoint: { + type: "string", + nullable: true + }, + security: { + type: "object", + properties: { + jwtSecret: { + type: "string" + } + }, + required: ["jwtSecret"] + }, + }, + required: ["security"] +} + +const ajv = new Ajv(); +const validator = ajv.compile(schema); + +const configPath = getConfigPathForFile("fosscord", "gateway", ".json"); +export const gatewayConfig = new Config({path: configPath, schemaValidator: validator, schema: schema}) \ No newline at end of file -- cgit 1.5.1 From a2a22c9afa9231c86133ba043b8111520765763d Mon Sep 17 00:00:00 2001 From: Diego Magdaleno Date: Sun, 23 May 2021 13:46:26 -0500 Subject: Fix: No more typecasting required --- package-lock.json | 14 +++++++------- package.json | 2 +- src/opcodes/Identify.ts | 4 ++-- src/util/Config.ts | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src/util/Config.ts') diff --git a/package-lock.json b/package-lock.json index 7315fbd6..b7bb7da6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@fosscord/server-util": "^1.3.0", + "@fosscord/server-util": "^1.3.1", "ajv": "^8.5.0", "dotenv": "^8.2.0", "jsonwebtoken": "^8.5.1", @@ -31,9 +31,9 @@ } }, "node_modules/@fosscord/server-util": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.0.tgz", - "integrity": "sha512-GBU1XLAQKylr76Vb5kGEkYInj0qPkz/D9oAVSPISMIWbYeo6RIfARVneg6FdreWC+WK7UNcpGr+JFJpvMfSeOA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.1.tgz", + "integrity": "sha512-NmrJ8HcZmOHyIUDMoQ+UnjoeMMi/HSbN2p/EMt1penTDSBvWcD8YS5m2NljuH0QxSmhuA2yLgSEpV1ydvJmOIw==", "dependencies": { "@types/jsonwebtoken": "^8.5.0", "@types/mongoose-autopopulate": "^0.10.1", @@ -2217,9 +2217,9 @@ }, "dependencies": { "@fosscord/server-util": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.0.tgz", - "integrity": "sha512-GBU1XLAQKylr76Vb5kGEkYInj0qPkz/D9oAVSPISMIWbYeo6RIfARVneg6FdreWC+WK7UNcpGr+JFJpvMfSeOA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.1.tgz", + "integrity": "sha512-NmrJ8HcZmOHyIUDMoQ+UnjoeMMi/HSbN2p/EMt1penTDSBvWcD8YS5m2NljuH0QxSmhuA2yLgSEpV1ydvJmOIw==", "requires": { "@types/jsonwebtoken": "^8.5.0", "@types/mongoose-autopopulate": "^0.10.1", diff --git a/package.json b/package.json index f45b0008..78fd3939 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "author": "Fosscord", "license": "ISC", "dependencies": { - "@fosscord/server-util": "^1.3.0", + "@fosscord/server-util": "^1.3.1", "ajv": "^8.5.0", "dotenv": "^8.2.0", "jsonwebtoken": "^8.5.1", diff --git a/src/opcodes/Identify.ts b/src/opcodes/Identify.ts index be805eda..0781afde 100644 --- a/src/opcodes/Identify.ts +++ b/src/opcodes/Identify.ts @@ -17,7 +17,7 @@ import { IdentifySchema } from "../schema/Identify"; import { Send } from "../util/Send"; import experiments from "./experiments.json"; import { check } from "./instanceOf"; -import { DefaultOptions, gatewayConfig } from "../util/Config"; +import * as Config from "../util/Config"; // TODO: bot sharding // TODO: check priviliged intents @@ -30,7 +30,7 @@ export async function onIdentify(this: WebSocket, data: Payload) { const identify: IdentifySchema = data.d; try { - const { jwtSecret } = (gatewayConfig.getAll() as DefaultOptions).security; + const { jwtSecret } = Config.gatewayConfig.getAll().security; var decoded = await checkToken(identify.token, jwtSecret); // will throw an error if invalid } catch (error) { console.error("invalid token", error); diff --git a/src/util/Config.ts b/src/util/Config.ts index 138e1c2f..8489888c 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts @@ -33,4 +33,4 @@ const ajv = new Ajv(); const validator = ajv.compile(schema); const configPath = getConfigPathForFile("fosscord", "gateway", ".json"); -export const gatewayConfig = new Config({path: configPath, schemaValidator: validator, schema: schema}) \ No newline at end of file +export const gatewayConfig = new Config({path: configPath, schemaValidator: validator, schema: schema}) \ No newline at end of file -- cgit 1.5.1 From e287d3e5bd3960fbf8f08d81779ea7ff303f0664 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Mon, 24 May 2021 20:46:07 +0200 Subject: :sparkles: use new config --- src/opcodes/Identify.ts | 4 ++-- src/util/Config.ts | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) (limited to 'src/util/Config.ts') diff --git a/src/opcodes/Identify.ts b/src/opcodes/Identify.ts index 0781afde..0ddc58d1 100644 --- a/src/opcodes/Identify.ts +++ b/src/opcodes/Identify.ts @@ -11,13 +11,13 @@ import { UserModel, toObject, EVENTEnum, + Config, } from "@fosscord/server-util"; import { setupListener } from "../listener/listener"; import { IdentifySchema } from "../schema/Identify"; import { Send } from "../util/Send"; import experiments from "./experiments.json"; import { check } from "./instanceOf"; -import * as Config from "../util/Config"; // TODO: bot sharding // TODO: check priviliged intents @@ -30,7 +30,7 @@ export async function onIdentify(this: WebSocket, data: Payload) { const identify: IdentifySchema = data.d; try { - const { jwtSecret } = Config.gatewayConfig.getAll().security; + const { jwtSecret } = Config.get().security; var decoded = await checkToken(identify.token, jwtSecret); // will throw an error if invalid } catch (error) { console.error("invalid token", error); diff --git a/src/util/Config.ts b/src/util/Config.ts index 8489888c..9ceb8cd5 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts @@ -1,3 +1,4 @@ +// @ts-nocheck import { Config } from "@fosscord/server-util"; import { getConfigPathForFile } from "@fosscord/server-util/dist/util/Config"; import Ajv, { JSONSchemaType } from "ajv"; @@ -6,7 +7,7 @@ export interface DefaultOptions { endpoint?: string; security: { jwtSecret: string; - } + }; } const schema: JSONSchemaType = { @@ -14,23 +15,27 @@ const schema: JSONSchemaType = { properties: { endpoint: { type: "string", - nullable: true + nullable: true, }, security: { type: "object", properties: { jwtSecret: { - type: "string" - } + type: "string", + }, }, - required: ["jwtSecret"] + required: ["jwtSecret"], }, }, - required: ["security"] -} + required: ["security"], +}; const ajv = new Ajv(); const validator = ajv.compile(schema); -const configPath = getConfigPathForFile("fosscord", "gateway", ".json"); -export const gatewayConfig = new Config({path: configPath, schemaValidator: validator, schema: schema}) \ No newline at end of file +const configPath = getConfigPathForFile("fosscord", "gateway", ".json"); +export const gatewayConfig = new Config({ + path: configPath, + schemaValidator: validator, + schema: schema, +}); -- cgit 1.5.1