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 b3935011c..163cdf592 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 cbc86d1d7..c27e8c709 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 dc24315ae..fd2741807 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 3d2413ab2..04372a070 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 43f2ae81d..efd459298 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