Fixed all typescript errors (hopefully, github)
diff --git a/.eslintrc.json b/.eslintrc.json
index 4b4e25d..165e759 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -4,7 +4,7 @@
"es2020": true,
"node": true
},
- "ignorePatterns": ["dist/", "src/Unfinished/"],
+ "ignorePatterns": ["dist/", "src/Unfinished/", "src/config/main.d.ts", "*.js"],
"extends": ["eslint:recommended", "plugin:@typescript-eslint/strict", "prettier"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
diff --git a/.gitignore b/.gitignore
index d731f0c..b8b8506 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,10 +2,12 @@
.history/
node_modules/
src/config/*
+
+!src/config/*.d.ts
!src/config/format.ts
!src/config/default.json
!src/config/emojis.json
-src/config/main.json
+src/config/main.ts
.vscode/
.vim/
yarn-error.log
@@ -16,4 +18,4 @@
src/utils/temp/*.jpg
ClicksMigratingProblems/oldData/
-ClicksMigratingProblems/oldData copy/
\ No newline at end of file
+ClicksMigratingProblems/oldData copy/
diff --git a/.prettierignore b/.prettierignore
index bfedc85..7575e2d 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -5,7 +5,7 @@
!src/config/format.ts
!src/config/default.json
!src/config/emojis.json
-src/config/main.json
+!src/config/main.ts
.vscode/
yarn-error.log
yarn.lock
diff --git a/SELF_HOSTING.md b/SELF_HOSTING.md
index 4f01364..1298cd4 100644
--- a/SELF_HOSTING.md
+++ b/SELF_HOSTING.md
@@ -23,7 +23,7 @@
## How to:
-We hide the config file with our important data like the bot token. Below you can find a copy of `src/config/main.json`.
+We hide the config file with our important data like the bot token. Below you can find a copy of `src/config/main.ts`.
Alternatively, you can run `Installer.js` to generate it for you.
```json
diff --git a/src/config/format.ts b/src/config/format.ts
index b00b3e4..a80094e 100644
--- a/src/config/format.ts
+++ b/src/config/format.ts
@@ -1,3 +1,4 @@
+
import fs from "fs";
import * as readLine from "node:readline/promises";
@@ -50,25 +51,27 @@
// }
}
- let json;
+ let json: typeof defaultDict;
let out = true;
try {
- json = JSON.parse(fs.readFileSync("./src/config/main.json", "utf8"));
+ json = await import("./main.js") as unknown as typeof defaultDict;
} catch (e) {
- console.log("\x1b[31m⚠ No main.json found, creating one.");
- console.log(" \x1b[2mYou can edit src/config/main.json directly using template written to the file.\x1b[0m\n");
+ console.log("\x1b[31m⚠ No main.ts found, creating one.");
+ console.log(" \x1b[2mYou can edit src/config/main.ts directly using template written to the file.\x1b[0m\n");
out = false;
- json = {};
+ json = {} as typeof defaultDict;
}
- if (json) {
- if (json.token === defaultDict["token"] || json.developmentToken === defaultDict["developmentToken"]) {
- console.log("\x1b[31m⚠ No main.json found, creating one.");
- console.log(" \x1b[2mYou can edit src/config/main.json directly using template written to the file.\x1b[0m\n");
+
+ if (Object.keys(json).length) {
+ if (json["token"] === defaultDict["token"] || json["developmentToken"] === defaultDict["developmentToken"]) {
+ console.log("\x1b[31m⚠ No main.ts found, creating one.");
+ console.log(" \x1b[2mYou can edit src/config/main.ts directly using template written to the file.\x1b[0m\n");
json = {};
}
}
+
for (const key in defaultDict) {
- if (!json[key]) {
+ if (Object.keys(json).includes(key)) {
if (walkthrough) {
switch (key) {
case "enableDevelopment": {
@@ -99,13 +102,13 @@
}
}
} else {
- json[key] = defaultDict[key];
+ json[key] = defaultDict[key]!;
}
}
}
- if (walkthrough && !json.mongoUrl) json.mongoUrl = "mongodb://127.0.0.1:27017";
- if (!json.mongoUrl.endsWith("/")) json.mongoUrl += "/";
- if (!json.baseUrl.endsWith("/")) json.baseUrl += "/";
+ if (walkthrough && !(json["mongoUrl"] ?? false)) json["mongoUrl"] = "mongodb://127.0.0.1:27017";
+ if (!((json["mongoUrl"] as string | undefined) ?? "").endsWith("/")) json["mongoUrl"] += "/";
+ if (!((json["baseUrl"] as string | undefined) ?? "").endsWith("/")) json["baseUrl"] += "/";
let hosts;
try {
hosts = fs.readFileSync("/etc/hosts", "utf8").toString().split("\n");
@@ -114,16 +117,16 @@
"\x1b[31m⚠ No /etc/hosts found. Please ensure the file exists and is readable. (Windows is not supported, Mac and Linux users should not experience this error)"
);
}
- let localhost = hosts.find((line) => line.split(" ")[1] === "localhost");
+ let localhost: string | undefined = hosts.find((line) => line.split(" ")[1] === "localhost");
if (localhost) {
localhost = localhost.split(" ")[0];
} else {
localhost = "127.0.0.1";
}
- json.mongoUrl = json.mongoUrl.replace("localhost", localhost);
- json.baseUrl = json.baseUrl.replace("localhost", localhost);
+ json["mongoUrl"] = (json["mongoUrl"]! as string).replace("localhost", localhost!);
+ json["baseUrl"] = (json["baseUrl"]! as string).replace("localhost", localhost!);
- fs.writeFileSync("./src/config/main.json", JSON.stringify(json, null, 4));
+ fs.writeFileSync("./src/config/main.ts", "export default " + JSON.stringify(json, null, 4) + ";");
if (walkthrough) {
console.log("\x1b[32m✓ All properties added.\x1b[0m");
diff --git a/src/config/main.d.ts b/src/config/main.d.ts
new file mode 100644
index 0000000..be6a253
--- /dev/null
+++ b/src/config/main.d.ts
@@ -0,0 +1,21 @@
+declare const config: {
+ developmentToken: string,
+ developmentGuildID: string,
+ enableDevelopment: boolean,
+ token: string,
+ managementGuildID: string,
+ owners: string[],
+ commandsFolder: string,
+ eventsFolder: string,
+ messageContextFolder: string,
+ userContextFolder: string,
+ verifySecret: string,
+ mongoUrl: string,
+ baseUrl: string,
+ pastebinApiKey: string,
+ pastebinUsername: string,
+ pastebinPassword: string,
+ rapidApiKey: string
+};
+
+export default config;
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 306ca50..3c132bc 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,6 @@
import runServer from "./api/index.js";
import client from "./utils/client.js";
-import config from "./config/main.json" assert { type: "json" };
+import config from "./config/main.js";
import register from "./utils/commandRegistration/register.js";
import { record as recordPerformance } from "./utils/performanceTesting/record.js";
diff --git a/src/utils/client.ts b/src/utils/client.ts
index 32c9f7a..b05ef5f 100644
--- a/src/utils/client.ts
+++ b/src/utils/client.ts
@@ -5,7 +5,7 @@
import { Guilds, History, ModNotes, Premium, PerformanceTest, ScanCache } from "../utils/database.js";
import EventScheduler from "../utils/eventScheduler.js";
import type { RoleMenuSchema } from "../actions/roleMenu.js";
-import config from "../config/main.json" assert { type: "json" };
+import config from "../config/main.js";
class NucleusClient extends Client {
diff --git a/src/utils/commandRegistration/register.ts b/src/utils/commandRegistration/register.ts
index 693ad00..1a19e2c 100644
--- a/src/utils/commandRegistration/register.ts
+++ b/src/utils/commandRegistration/register.ts
@@ -1,6 +1,6 @@
import type { CommandInteraction } from 'discord.js';
import Discord, { Interaction, SlashCommandBuilder, ApplicationCommandType } from 'discord.js';
-import config from "../../config/main.json" assert { type: "json" };
+import config from "../../config/main.js";
import client from "../client.js";
import fs from "fs";
import EmojiEmbed from '../generateEmojiEmbed.js';
diff --git a/src/utils/commandRegistration/slashCommandBuilder.ts b/src/utils/commandRegistration/slashCommandBuilder.ts
index 9a72605..66291b3 100644
--- a/src/utils/commandRegistration/slashCommandBuilder.ts
+++ b/src/utils/commandRegistration/slashCommandBuilder.ts
@@ -1,6 +1,6 @@
import { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from "discord.js";
import type { SlashCommandBuilder } from "discord.js";
-import config from "../../config/main.json" assert { type: "json" };
+import config from "../../config/main.js";
import getSubcommandsInFolder from "./getFilesInFolder.js";
import client from "../client.js";
import Discord from "discord.js";
diff --git a/src/utils/database.ts b/src/utils/database.ts
index d25cfdb..239da13 100644
--- a/src/utils/database.ts
+++ b/src/utils/database.ts
@@ -1,6 +1,6 @@
import type Discord from "discord.js";
import { Collection, MongoClient } from "mongodb";
-import config from "../config/main.json" assert { type: "json" };
+import config from "../config/main.js";
import client from "../utils/client.js";
const mongoClient = new MongoClient(config.mongoUrl);
diff --git a/src/utils/eventScheduler.ts b/src/utils/eventScheduler.ts
index 60d525c..bdd0d21 100644
--- a/src/utils/eventScheduler.ts
+++ b/src/utils/eventScheduler.ts
@@ -2,7 +2,7 @@
import client from "./client.js";
import * as fs from "fs";
import * as path from "path";
-import config from "../config/main.json" assert { type: "json" };
+import config from "../config/main.js";
class EventScheduler {
private agenda: Agenda;
diff --git a/src/utils/performanceTesting/record.ts b/src/utils/performanceTesting/record.ts
index 17cfb1e..71883c5 100644
--- a/src/utils/performanceTesting/record.ts
+++ b/src/utils/performanceTesting/record.ts
@@ -2,7 +2,7 @@
import * as CP from 'child_process';
import * as process from 'process';
import systeminformation from "systeminformation";
-import config from "../../config/main.json" assert { type: "json" };
+import config from "../../config/main.js";
import singleNotify from "../singleNotify.js";
diff --git a/tsconfig.json b/tsconfig.json
index a67284d..6339096 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -14,6 +14,6 @@
"noImplicitReturns": false,
"ignoreDeprecations": "5.0"
},
- "include": ["src/**/*", "src/index.d.ts"],
+ "include": ["src/**/*", "src/*", "src/config/main.d.ts", "src/config/main.ts"],
"exclude": ["src/Unfinished/**/*"]
}