summaryrefslogtreecommitdiff
path: root/packages/sw
diff options
context:
space:
mode:
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.js9
-rw-r--r--packages/sw/package.json13
-rw-r--r--packages/sw/src/scripts/create-notification.ts7
-rw-r--r--packages/sw/src/sw.ts13
-rw-r--r--packages/sw/tsconfig.json8
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",