From a89e17a3904cce8b7c9a70519e275fe9364526ae Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 9 Oct 2022 22:58:08 +0200 Subject: [PATCH] Make typescript happy, tsc test run in CI --- .github/workflows/lint.yml | 2 +- package.json | 54 ++++++++++++++++--------------- src/Vencord.ts | 2 +- src/api/MessageEvents.ts | 2 +- src/components/Settings.tsx | 2 +- src/globals.d.ts | 2 +- src/plugins/randomiseFileNames.ts | 2 +- src/utils/ChangeList.ts | 2 +- src/utils/misc.tsx | 2 +- src/utils/quickCss.ts | 3 +- tsconfig.json | 8 ++++- 11 files changed, 45 insertions(+), 36 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3a303ffdb..5e8dc04a2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -24,4 +24,4 @@ jobs: run: pnpm install --frozen-lockfile - name: Lint & Test if it compiles - run: pnpm lint && pnpm build + run: pnpm test diff --git a/package.json b/package.json index 5b5719f49..71da6fca6 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,30 @@ { - "devDependencies": { - "@types/node": "^18.7.13", - "@types/react": "^18.0.17", - "@types/yazl": "^2.4.2", - "@typescript-eslint/parser": "^5.39.0", - "electron": "^20.1.0", - "esbuild": "^0.15.5", - "eslint": "^8.24.0", - "typescript": "^4.8.4", - "yazl": "^2.5.1" - }, - "dependencies": { - "console-menu": "^0.1.0", - "discord-types": "^1.3.26", - "electron-devtools-installer": "^3.2.0" - }, - "scripts": { - "buildWeb": "node buildWeb.mjs", - "build": "node build.mjs", - "watch": "node build.mjs --watch", - "inject": "node scripts/patcher/install.js", - "uninject": "node scripts/patcher/uninstall.js", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx", - "lint:fix": "pnpm lint --fix" - }, - "packageManager": "pnpm@7.12.2" + "scripts": { + "build": "node build.mjs", + "buildWeb": "node buildWeb.mjs", + "inject": "node scripts/patcher/install.js", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx", + "lint:fix": "pnpm lint --fix", + "test": "pnpm lint && pnpm build && pnpm testTsc", + "testTsc": "tsc --noEmit", + "uninject": "node scripts/patcher/uninstall.js", + "watch": "node build.mjs --watch" + }, + "dependencies": { + "console-menu": "^0.1.0", + "electron-devtools-installer": "^3.2.0" + }, + "devDependencies": { + "@types/node": "^18.7.13", + "@types/react": "^18.0.17", + "@types/yazl": "^2.4.2", + "@typescript-eslint/parser": "^5.39.0", + "discord-types": "^1.3.26", + "electron": "^20.1.0", + "esbuild": "^0.15.5", + "eslint": "^8.24.0", + "typescript": "^4.8.4", + "yazl": "^2.5.1" + }, + "packageManager": "pnpm@7.12.2" } diff --git a/src/Vencord.ts b/src/Vencord.ts index 5a0bb71b6..578e69d06 100644 --- a/src/Vencord.ts +++ b/src/Vencord.ts @@ -22,7 +22,7 @@ Object.defineProperty(window, "IS_WEB", { enumerable: true }); -export let Components; +export let Components: any; async function init() { await onceReady; diff --git a/src/api/MessageEvents.ts b/src/api/MessageEvents.ts index 0b3be651b..047a0158f 100644 --- a/src/api/MessageEvents.ts +++ b/src/api/MessageEvents.ts @@ -67,7 +67,7 @@ type ClickListener = (message: Message, channel: Channel, event: MouseEvent) => const listeners = new Set(); -export function _handleClick(message, channel, event) { +export function _handleClick(message: Message, channel: Channel, event: MouseEvent) { for (const listener of listeners) { try { listener(message, channel, event); diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index 56c97cb61..77569024e 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -127,7 +127,7 @@ export default ErrorBoundary.wrap(function Settings() { disabled={p.required || dependency} key={p.name} value={settings.plugins[p.name].enabled || p.required || dependency} - onChange={v => { + onChange={(v: boolean) => { settings.plugins[p.name].enabled = v; let needsRestart = Boolean(p.patches?.length); if (v) { diff --git a/src/globals.d.ts b/src/globals.d.ts index 8c5ee1026..4320e1c61 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -12,7 +12,7 @@ declare global { push(chunk: any): any; pop(): any; }; - [k: PropertyKey]: any; + [k: string]: any; } } diff --git a/src/plugins/randomiseFileNames.ts b/src/plugins/randomiseFileNames.ts index 02166bf5b..30603aff7 100644 --- a/src/plugins/randomiseFileNames.ts +++ b/src/plugins/randomiseFileNames.ts @@ -16,7 +16,7 @@ export default definePlugin({ }, ], - rand(file) { + rand(file: string) { const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; const rand = Array.from( diff --git a/src/utils/ChangeList.ts b/src/utils/ChangeList.ts index d8f744978..a0da8f22d 100644 --- a/src/utils/ChangeList.ts +++ b/src/utils/ChangeList.ts @@ -1,5 +1,5 @@ export class ChangeList{ - private set = new Set; + private set = new Set(); public get changeCount() { return this.set.size; diff --git a/src/utils/misc.tsx b/src/utils/misc.tsx index a7d781aae..7a733ed8d 100644 --- a/src/utils/misc.tsx +++ b/src/utils/misc.tsx @@ -28,7 +28,7 @@ export function lazyWebpack(filter: FilterFn): T { construct: (_, args, newTarget) => Reflect.construct(getMod(), args, newTarget), deleteProperty: (_, prop) => delete getMod()[prop], defineProperty: (_, property, attributes) => !!Object.defineProperty(getMod(), property, attributes) - }) as T; + }) as any as T; } /** diff --git a/src/utils/quickCss.ts b/src/utils/quickCss.ts index eea44df85..785dd710f 100644 --- a/src/utils/quickCss.ts +++ b/src/utils/quickCss.ts @@ -12,7 +12,8 @@ export async function toggle(isEnabled: boolean) { VencordNative.ipc.on(IpcEvents.QUICK_CSS_UPDATE, (_, css: string) => style.innerText = css); style.innerText = await VencordNative.ipc.invoke(IpcEvents.GET_QUICK_CSS); } - } else style.disabled = !isEnabled; + } else // @ts-ignore yes typescript, property 'disabled' does exist on type 'HTMLStyleElement' u should try reading the docs some time + style.disabled = !isEnabled; } document.addEventListener("DOMContentLoaded", () => { diff --git a/tsconfig.json b/tsconfig.json index 620512ab5..5d87cedd2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,13 @@ "compilerOptions": { "allowSyntheticDefaultImports": true, "esModuleInterop": true, - "lib": ["DOM", "esnext", "esnext.array", "esnext.asynciterable", "esnext.symbol"], + "lib": [ + "DOM", + "esnext", + "esnext.array", + "esnext.asynciterable", + "esnext.symbol" + ], "module": "commonjs", "moduleResolution": "node", "strict": true,