diff --git a/code/client/dev-dist/registerSW.js b/code/client/dev-dist/registerSW.js new file mode 100644 index 0000000..1d5625f --- /dev/null +++ b/code/client/dev-dist/registerSW.js @@ -0,0 +1 @@ +if('serviceWorker' in navigator) navigator.serviceWorker.register('/dev-sw.js?dev-sw', { scope: '/', type: 'classic' }) \ No newline at end of file diff --git a/code/client/dev-dist/sw.js b/code/client/dev-dist/sw.js new file mode 100644 index 0000000..5c80871 --- /dev/null +++ b/code/client/dev-dist/sw.js @@ -0,0 +1,92 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// If the loader is already loaded, just stop. +if (!self.define) { + let registry = {}; + + // Used for `eval` and `importScripts` where we can't get script URL by other means. + // In both cases, it's safe to use a global var because those functions are synchronous. + let nextDefineUri; + + const singleRequire = (uri, parentUri) => { + uri = new URL(uri + ".js", parentUri).href; + return registry[uri] || ( + + new Promise(resolve => { + if ("document" in self) { + const script = document.createElement("script"); + script.src = uri; + script.onload = resolve; + document.head.appendChild(script); + } else { + nextDefineUri = uri; + importScripts(uri); + resolve(); + } + }) + + .then(() => { + let promise = registry[uri]; + if (!promise) { + throw new Error(`Module ${uri} didn’t register its module`); + } + return promise; + }) + ); + }; + + self.define = (depsNames, factory) => { + const uri = nextDefineUri || ("document" in self ? document.currentScript.src : "") || location.href; + if (registry[uri]) { + // Module is already loading or loaded. + return; + } + let exports = {}; + const require = depUri => singleRequire(depUri, uri); + const specialDeps = { + module: { uri }, + exports, + require + }; + registry[uri] = Promise.all(depsNames.map( + depName => specialDeps[depName] || require(depName) + )).then(deps => { + factory(...deps); + return exports; + }); + }; +} +define(['./workbox-b5f7729d'], (function (workbox) { 'use strict'; + + self.skipWaiting(); + workbox.clientsClaim(); + + /** + * The precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ + workbox.precacheAndRoute([{ + "url": "registerSW.js", + "revision": "3ca0b8505b4bec776b69afdba2768812" + }, { + "url": "index.html", + "revision": "0.mhatuu3dq7g" + }], {}); + workbox.cleanupOutdatedCaches(); + workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { + allowlist: [/^\/$/] + })); + +})); diff --git a/code/client/src/pwa/manifest-config.ts b/code/client/src/pwa/manifest-config.ts index 2093f82..9de7296 100644 --- a/code/client/src/pwa/manifest-config.ts +++ b/code/client/src/pwa/manifest-config.ts @@ -1,22 +1,36 @@ import { ManifestOptions } from 'vite-plugin-pwa'; -const manifestConfig: Partial = { +export const manifestConfig: Partial = { name: 'NoteSpace', short_name: 'NoteSpace', - description: 'A multiplatform note management and sharing app', + description: 'A multi-platform real-time note-taking app', + start_url: '/', + scope: '.', + display: 'standalone', + background_color: '#ffffff', theme_color: '#ffffff', + orientation: 'portrait-primary', icons: [ { - src: '/assets/icon.png', + src: 'pwa-64x64.png', + sizes: '64x64', + type: 'image/png', + }, + { + src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png', }, { - src: '/assets/icon.png', + src: 'pwa-512x512.png', + sizes: '512x512', + type: 'image/png', + }, + { + src: 'maskable-icon-512x512.png', sizes: '512x512', type: 'image/png', + purpose: 'maskable', }, ], -}; - -export default manifestConfig; +}; \ No newline at end of file diff --git a/code/client/src/pwa/pwa-assets.config.ts b/code/client/src/pwa/pwa-assets.config.ts new file mode 100644 index 0000000..d291c05 --- /dev/null +++ b/code/client/src/pwa/pwa-assets.config.ts @@ -0,0 +1,9 @@ +import { defineConfig, minimal2023Preset as preset } from '@vite-pwa/assets-generator/config'; + +export default defineConfig({ + headLinkOptions: { + preset: '2023', + }, + preset, + images: ['public/notespace.png'], +}); \ No newline at end of file diff --git a/code/client/src/pwa/pwa-config.ts b/code/client/src/pwa/pwa-config.ts index 348755d..def6cb2 100644 --- a/code/client/src/pwa/pwa-config.ts +++ b/code/client/src/pwa/pwa-config.ts @@ -1,11 +1,11 @@ import { VitePWAOptions } from 'vite-plugin-pwa'; -//import manifestConfig from "./manifest-config"; +import {manifestConfig} from "./manifest-config"; const pwaConfig: Partial = { registerType: 'autoUpdate', - //manifest: manifestConfig, - //devOptions: { - // enabled: true, - //} + manifest: manifestConfig, + devOptions: { + enabled: true, + } }; export default pwaConfig;