From 60820a3e5f7388376a7624edfe6b5f34119783ee Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 19 Nov 2022 17:57:31 +0800 Subject: [PATCH] core&ui: bug fix --- package.json | 4 ++-- packages/hydrooj/package.json | 4 ++-- packages/hydrooj/src/handler/record.ts | 2 +- .../components/monaco/languages/typescript.ts | 2 +- .../ui-default/components/preview/preview.page.ts | 2 +- packages/ui-default/service-worker.ts | 11 +++++++---- packages/utils/package.json | 2 +- 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 40e7c89bb..f7b3b243c 100644 --- a/package.json +++ b/package.json @@ -41,14 +41,14 @@ "cross-env": "^7.0.3", "cross-spawn": "^7.0.3", "esbuild": "0.15.2", - "eslint": "^8.27.0", + "eslint": "^8.28.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-import-resolver-typescript": "^3.5.2", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-import": "2.26.0", "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-react": "^7.31.10", + "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-simple-import-sort": "8.0.0", "fs-extra": "^10.1.0", diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index bc9a2426d..f1acdeca2 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -17,7 +17,7 @@ "@aws-sdk/middleware-endpoint": "^3.212.0", "@aws-sdk/s3-presigned-post": "^3.212.0", "@aws-sdk/s3-request-presigner": "^3.212.0", - "@graphql-tools/schema": "^8.5.1", + "@graphql-tools/schema": "^9.0.10", "@hydrooj/utils": "workspace:*", "adm-zip": "0.5.5", "cac": "^6.7.14", @@ -27,7 +27,7 @@ "emojis-list": "2.1.0", "fs-extra": "^10.1.0", "graphql": "^16.6.0", - "graphql-scalars": "1.18.0", + "graphql-scalars": "1.20.1", "isbinaryfile": "^5.0.0", "js-yaml": "^4.1.0", "koa": "^2.13.4", diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index d804e4bd9..f81dafc37 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -346,7 +346,7 @@ class RecordDetailConnectionHandler extends ConnectionHandler { if (!problem.canViewBy(pdoc, this.user)) throw new PermissionError(PERM.PERM_VIEW_PROBLEM_HIDDEN); } - this.throttleSend = throttle(this.send, 1000); + this.throttleSend = throttle(this.sendUpdate, 1000); this.rid = rid.toString(); this.cleanup = bus.on('record/change', this.onRecordChange.bind(this)); this.onRecordChange(rdoc); diff --git a/packages/ui-default/components/monaco/languages/typescript.ts b/packages/ui-default/components/monaco/languages/typescript.ts index f339379d5..f7ca7afc0 100644 --- a/packages/ui-default/components/monaco/languages/typescript.ts +++ b/packages/ui-default/components/monaco/languages/typescript.ts @@ -7,7 +7,7 @@ const diagnosticsOptions: monaco.languages.typescript.DiagnosticsOptions = { noSyntaxValidation: false, noSuggestionDiagnostics: true, }; -const compilerOptions = { +const compilerOptions: monaco.languages.typescript.CompilerOptions = { target: monaco.languages.typescript.ScriptTarget.ES2020, module: monaco.languages.typescript.ModuleKind.ESNext, allowNonTsExtensions: true, diff --git a/packages/ui-default/components/preview/preview.page.ts b/packages/ui-default/components/preview/preview.page.ts index 5b3aace6e..37c728352 100644 --- a/packages/ui-default/components/preview/preview.page.ts +++ b/packages/ui-default/components/preview/preview.page.ts @@ -135,7 +135,7 @@ export async function previewFile(ev, type = '') { if (ext === 'pdf') return previewPDF(`${link}${link.includes('?') ? '&' : '?'}noDisposition=1`); Notification.info(i18n('Loading file...')); try { - const { url } = await request.get(link); + const { url } = await request.get(link, {}, { headers: { 'Do-Not-Cache': 'on' } }); if (/^(doc|xls|ppt)x?$/.test(ext)) return previewOffice(link, url); content = await request.get(url, undefined, { dataType: 'text' }); } catch (e) { diff --git a/packages/ui-default/service-worker.ts b/packages/ui-default/service-worker.ts index a4b61d5f2..2dbd77c67 100644 --- a/packages/ui-default/service-worker.ts +++ b/packages/ui-default/service-worker.ts @@ -21,9 +21,11 @@ self.addEventListener('notificationclick', (event) => { const PRECACHE = `precache-${process.env.VERSION}`; const DO_NOT_CACHE = ['vditor', '.worker.js', 'fonts', 'i.monaco']; -function shouldCache(name: string) { +function shouldCache(name: string, request?: Request) { if (!name.split('/').pop()) return false; if (!name.split('/').pop().includes('.')) return false; + // For files download, a response is formatted as string + if (request && request.headers.get('Do-Not-Cache')) return false; return true; } function shouldPreCache(name: string) { @@ -86,21 +88,22 @@ self.addEventListener('activate', (event) => { self.addEventListener('fetch', (event: FetchEvent) => { if (!['get', 'head'].includes(event.request.method.toLowerCase())) return; - if (!shouldCache(event.request.url) && config?.base && config?.targets?.length) { + if (!shouldCache(event.request.url, event.request) && config?.base && config?.targets?.length) { if (new URL(event.request.url).origin !== location.origin) return; event.respondWith(get(event.request.url)); return; } // Only handle whitelisted origins; if (!config?.hosts?.some((i) => event.request.url.startsWith(i))) return; - if (process.env.NODE_ENV !== 'production' || !shouldCache(event.request.url)) return; + if (!shouldCache(event.request.url, event.request)) return; + const Accept = event.request.headers.get('Accept'); event.respondWith((async () => { const cachedResponse = await caches.match(event.request.url); if (cachedResponse) return cachedResponse; console.log(`Caching ${event.request.url}`); const [cache, response] = await Promise.all([ caches.open(PRECACHE), - fetch(event.request.url), // Fetch from url to prevent opaque response + fetch(event.request.url, { headers: { Accept } }), // Fetch from url to prevent opaque response ]); if (response.ok) { cache.put(event.request.url, response.clone()); diff --git a/packages/utils/package.json b/packages/utils/package.json index 30d5376a7..dffba9087 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -16,7 +16,7 @@ "mongodb": "^3.7.3", "reggol": "^1.3.1", "source-map-support": "^0.5.21", - "systeminformation": "^5.12.15" + "systeminformation": "^5.13.5" }, "devDependencies": { "@types/fs-extra": "^9.0.13",