diff options
Diffstat (limited to 'packages/sw')
| -rw-r--r-- | packages/sw/.eslintrc.cjs (renamed from packages/sw/.eslintrc.js) | 0 | ||||
| -rw-r--r-- | packages/sw/build.js | 9 | ||||
| -rw-r--r-- | packages/sw/package.json | 13 | ||||
| -rw-r--r-- | packages/sw/src/scripts/create-notification.ts | 7 | ||||
| -rw-r--r-- | packages/sw/src/sw.ts | 13 | ||||
| -rw-r--r-- | packages/sw/tsconfig.json | 8 |
6 files changed, 36 insertions, 14 deletions
diff --git a/packages/sw/.eslintrc.js b/packages/sw/.eslintrc.cjs index b1fd6b5edc..b1fd6b5edc 100644 --- a/packages/sw/.eslintrc.js +++ b/packages/sw/.eslintrc.cjs diff --git a/packages/sw/build.js b/packages/sw/build.js index ad16fb9497..e926197640 100644 --- a/packages/sw/build.js +++ b/packages/sw/build.js @@ -1,10 +1,13 @@ // @ts-check -const esbuild = require('esbuild'); -const locales = require('../../locales'); -const meta = require('../../package.json'); +import { fileURLToPath } from 'node:url'; +import * as esbuild from 'esbuild'; +import locales from '../../locales/index.js'; +import meta from '../../package.json' assert { type: "json" }; const watch = process.argv[2]?.includes('watch'); +const __dirname = fileURLToPath(new URL('.', import.meta.url)) + console.log('Starting SW building...'); /** @type {esbuild.BuildOptions} */ diff --git a/packages/sw/package.json b/packages/sw/package.json index 96c4bfe889..0ef6d3f98e 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -9,15 +9,16 @@ "lint": "pnpm typecheck && pnpm eslint" }, "dependencies": { - "esbuild": "0.17.18", - "idb-keyval": "6.2.0", + "esbuild": "0.18.11", + "idb-keyval": "6.2.1", "misskey-js": "workspace:*" }, "devDependencies": { - "@typescript-eslint/parser": "5.59.5", + "@typescript-eslint/parser": "5.61.0", "@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67", - "eslint": "8.40.0", + "eslint": "8.45.0", "eslint-plugin-import": "2.27.5", - "typescript": "5.0.4" - } + "typescript": "5.1.6" + }, + "type": "module" } diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts index 61ffa7ab0f..8f8f22480e 100644 --- a/packages/sw/src/scripts/create-notification.ts +++ b/packages/sw/src/scripts/create-notification.ts @@ -199,6 +199,13 @@ async function composeNotification(data: PushNotificationDataMap[keyof PushNotif tag: `achievement:${data.body.achievement}`, }]; + case 'pollEnded': + return [t('_notification.pollEnded'), { + body: data.body.note.text ?? '', + badge: iconUrl('chart-arrows'), + data, + }]; + case 'app': return [data.body.header ?? data.body.body, { body: data.body.header ? data.body.body : '', diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 2783f2bfb5..1f085c7392 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -21,6 +21,10 @@ globalThis.addEventListener('activate', ev => { ); }); +function offlineContentHTML(): string { + return `<!doctype html>Offline. Service Worker @${_VERSION_} <button onclick="location.reload()">reload</button>` +} + globalThis.addEventListener('fetch', ev => { let isHTMLRequest = false; if (ev.request.headers.get('sec-fetch-dest') === 'document') { @@ -34,7 +38,14 @@ globalThis.addEventListener('fetch', ev => { if (!isHTMLRequest) return; ev.respondWith( fetch(ev.request) - .catch(() => new Response(`Offline. Service Worker @${_VERSION_}`, { status: 200 })), + .catch(() => { + return new Response(offlineContentHTML(), { + status: 200, + headers: { + 'content-type': 'text/html', + }, + }); + }), ); }); diff --git a/packages/sw/tsconfig.json b/packages/sw/tsconfig.json index 750aeff969..96e47db961 100644 --- a/packages/sw/tsconfig.json +++ b/packages/sw/tsconfig.json @@ -9,9 +9,9 @@ "noFallthroughCasesInSwitch": true, "declaration": false, "sourceMap": false, - "target": "es2021", + "target": "ES2022", "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "node16", "removeComments": false, "noLib": false, "strict": true, @@ -21,11 +21,11 @@ "isolatedModules": true, "baseUrl": ".", "paths": { - "@/*": ["./src/*"], + "@/*": ["./src/*"] }, "typeRoots": [ "node_modules/@types", - "@types", + "@types" ], "lib": [ "esnext", |