From cfd7cf0f1ec24adcef11eb7052e786ae882fe28c Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 12 Dec 2022 22:20:35 +0900 Subject: [PATCH] refactor(sw): Typecheck the service worker (#9314) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Typecheck the service worker Currently the service worker build never typechecks, since esbuild and typescript-eslint don't do such job. esbuild: https://esbuild.github.io/content-types/#typescript >However, esbuild does not do any type checking so you will still need to run tsc -noEmit in parallel with esbuild to check types. This is not something esbuild does itself. typescript-eslint: https://typescript-eslint.io/linting/troubleshooting#why-dont-i-see-typescript-errors-in-my-eslint-output >TypeScript's compiler (or whatever your build chain may be) is specifically designed and built to validate the correctness of your codebase. Our tooling does not reproduce the errors that TypeScript provides, because doing so would slow down the lint run [1], and duplicate the errors that TypeScript already outputs for you. Adding this step adds tons of TS errors 😱 * Override lib-webworker with service worker --- packages/sw/package.json | 6 ++++-- packages/sw/src/scripts/create-notification.ts | 5 ----- packages/sw/src/scripts/operations.ts | 5 ----- packages/sw/src/sw.ts | 4 ---- yarn.lock | 9 +++++++++ 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/sw/package.json b/packages/sw/package.json index b3935011c4..163cdf5926 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -4,7 +4,7 @@ "scripts": { "watch": "node build.js watch", "build": "node build.js", - "lint": "eslint --quiet src/**/*.ts" + "lint": "tsc --noEmit && eslint --quiet src/**/*.ts" }, "dependencies": { "esbuild": "^0.14.42", @@ -13,7 +13,9 @@ }, "devDependencies": { "@typescript-eslint/parser": "^5.45.0", + "@typescript/lib-webworker": "npm:@types/serviceworker@^0.0.58", "eslint": "^8.16.0", - "eslint-plugin-import": "^2.26.0" + "eslint-plugin-import": "^2.26.0", + "typescript": "4.9.4" } } diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts index cbc86d1d7e..c27e8c709c 100644 --- a/packages/sw/src/scripts/create-notification.ts +++ b/packages/sw/src/scripts/create-notification.ts @@ -1,11 +1,6 @@ /* * Notification manager for SW */ - -// TODO: remove this declaration when https://github.com/microsoft/TypeScript/issues/11781 closes -// eslint-disable-next-line no-var -declare var self: ServiceWorkerGlobalScope; - import { swLang } from '@/scripts/lang'; import { cli } from '@/scripts/operations'; import { pushNotificationDataMap } from '@/types'; diff --git a/packages/sw/src/scripts/operations.ts b/packages/sw/src/scripts/operations.ts index dc24315aea..fd27418073 100644 --- a/packages/sw/src/scripts/operations.ts +++ b/packages/sw/src/scripts/operations.ts @@ -2,11 +2,6 @@ * Operations * 各種操作 */ - -// TODO: remove this declaration when https://github.com/microsoft/TypeScript/issues/11781 closes -// eslint-disable-next-line no-var -declare var self: ServiceWorkerGlobalScope; - import * as Misskey from 'misskey-js'; import { SwMessage, swMessageOrderType } from '@/types'; import { acct as getAcct } from '@/filters/user'; diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 3d2413ab2e..04372a0708 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -1,7 +1,3 @@ -// TODO: remove this declaration when https://github.com/microsoft/TypeScript/issues/11781 closes -// eslint-disable-next-line no-var -declare var self: ServiceWorkerGlobalScope; - import { createEmptyNotification, createNotification } from '@/scripts/create-notification'; import { swLang } from '@/scripts/lang'; import { swNotificationRead } from '@/scripts/notification-read'; diff --git a/yarn.lock b/yarn.lock index 43f2ae81d4..efd4592985 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3009,6 +3009,13 @@ __metadata: languageName: node linkType: hard +"@typescript/lib-webworker@npm:@types/serviceworker@^0.0.58": + version: 0.0.58 + resolution: "@types/serviceworker@npm:0.0.58" + checksum: d6aa73d02854968ccaa0fb7f1aafb30b202870dc15b9d09e3ee8fe8131ffc26d521c1e56b5b030f39fba329143a32b2fa88351d57df3ae5aa29498384a251946 + languageName: node + linkType: hard + "@vitejs/plugin-vue@npm:4.0.0": version: 4.0.0 resolution: "@vitejs/plugin-vue@npm:4.0.0" @@ -15791,11 +15798,13 @@ __metadata: resolution: "sw@workspace:packages/sw" dependencies: "@typescript-eslint/parser": ^5.45.0 + "@typescript/lib-webworker": "npm:@types/serviceworker@^0.0.58" esbuild: ^0.14.42 eslint: ^8.16.0 eslint-plugin-import: ^2.26.0 idb-keyval: ^6.1.0 misskey-js: 0.0.14 + typescript: 4.9.4 languageName: unknown linkType: soft