summary refs log tree commit diff
path: root/gateway/src/util/Config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'gateway/src/util/Config.ts')
-rw-r--r--gateway/src/util/Config.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/gateway/src/util/Config.ts b/gateway/src/util/Config.ts
new file mode 100644
index 00000000..9ceb8cd5
--- /dev/null
+++ b/gateway/src/util/Config.ts
@@ -0,0 +1,41 @@
+// @ts-nocheck
+import { Config } from "@fosscord/server-util";
+import { getConfigPathForFile } from "@fosscord/server-util/dist/util/Config";
+import Ajv, { JSONSchemaType } from "ajv";
+
+export interface DefaultOptions {
+	endpoint?: string;
+	security: {
+		jwtSecret: string;
+	};
+}
+
+const schema: JSONSchemaType<DefaultOptions> = {
+	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<DefaultOptions>({
+	path: configPath,
+	schemaValidator: validator,
+	schema: schema,
+});