aboutsummaryrefslogtreecommitdiffstats
path: root/src/worker
diff options
context:
space:
mode:
author2023-02-16 22:57:52 +0530
committer2023-02-16 22:57:52 +0530
commit93e75949e9a2861f651e2a3602e08e9b25cf47c4 (patch)
tree9da44bdc8885c94355ee3dc7a1ae029bc2627356 /src/worker
parent0.4.3 (diff)
downloadsudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar.gz
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar.bz2
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar.lz
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar.xz
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.tar.zst
sudomsg-93e75949e9a2861f651e2a3602e08e9b25cf47c4.zip
Move to Server Side Render with expressjs
Backend Rewritten in typescript Signed-off-by: Marc Pervaz Boocha <mboocha@sudomsg.xyz> On branch main Your branch is up to date with 'origin/main'. Changes to be committed: new file: .editorconfig modified: .gitignore new file: Containerfile renamed: favicon/icon.svg -> assets/favicon.svg modified: assets/index.css deleted: assets/index.js deleted: assets/mandle.png deleted: assets/sw.js new file: assets/syntax.css modified: deploy deleted: eleventy.config.js deleted: favicon/192.png deleted: favicon/512.png deleted: favicon/icon.ico deleted: license modified: package-lock.json modified: package.json deleted: src/_data/env.js deleted: src/_data/metadata.js deleted: src/_includes/base.njk deleted: src/_includes/page.njk deleted: src/_includes/post.njk deleted: src/about.njk deleted: src/blog.njk new file: src/client/index.ts deleted: src/gen/atom.njk deleted: src/gen/error.njk deleted: src/gen/feedjson.11ty.js deleted: src/gen/gen.11tydata.js deleted: src/gen/manifest.11ty.js deleted: src/gen/metadata.11ty.js deleted: src/gen/robot.njk deleted: src/gen/sitemap.njk deleted: src/index.njk deleted: src/post/post.11tydata.js new file: src/server/app.ts new file: src/server/build.ts new file: src/server/content/about.ts new file: src/server/content/blog.ts new file: src/server/content/feed.ts new file: src/server/content/index.ts new file: src/server/content/robots.ts new file: src/server/content/sitemap.ts new file: src/server/content/webmanifest.ts new file: src/server/errHanadler.ts new file: src/server/img.ts new file: src/server/metadata.ts new file: src/server/router.ts new file: src/server/server.ts new file: src/server/template/Base.ts new file: src/server/template/Page.ts new file: src/server/template/Post.ts new file: src/server/template/atom.ts new file: src/server/template/header.ts new file: src/server/template/html.ts new file: src/server/template/sitemap.ts new file: src/server/template/syntax.ts new file: src/server/template/table.ts new file: src/server/template/vdom.ts new file: src/server/template/xml.ts new file: src/server/utils/createUrl.ts new file: src/server/utils/curl.ts new file: src/server/utils/isDefined.ts new file: src/server/utils/isDevel.ts new file: src/server/utils/relDir.ts new file: src/server/utils/relUrl.ts new file: src/server/utils/schema.ts new file: src/server/utils/setStingRoute.ts new file: src/server/utils/strHandler.ts new file: src/worker/sw.ts new file: src/worker/tsconfig.json new file: tsconfig.json
Diffstat (limited to 'src/worker')
-rw-r--r--src/worker/sw.ts51
-rw-r--r--src/worker/tsconfig.json10
2 files changed, 61 insertions, 0 deletions
diff --git a/src/worker/sw.ts b/src/worker/sw.ts
new file mode 100644
index 0000000..e125879
--- /dev/null
+++ b/src/worker/sw.ts
@@ -0,0 +1,51 @@
+declare var self: ServiceWorkerGlobalScope;
+export {};
+
+
+const sw_cache = {
+ offline: "/offline",
+ default: [
+ "/index.js",
+ "/index.css",
+ "/app.webmanifest",
+ "/favicon.svg"
+ ],
+ store: "app",
+}
+
+async function install() {
+ const cache = await self.caches.open(sw_cache.store)
+ return cache.addAll([sw_cache.offline, ...sw_cache.default])
+}
+
+async function activate() {
+ const keys = await self.caches.keys()
+ return Promise.all(keys.map(key => {
+ return key !== sw_cache.store ? self.caches.delete(key) : undefined
+ }))
+}
+
+async function req(event: FetchEvent) {
+ const cache = await caches.open(sw_cache.store)
+ const cachedResponse = await cache.match(event.request)
+ var networkResponse
+ try {
+ networkResponse = await fetch(event.request)
+ if (networkResponse.ok) {
+ cache.put(event.request, networkResponse.clone())
+ }
+ } catch(error) {
+ console.error(error)
+ if (event.request.mode === "navigate") {
+ networkResponse = await caches.match("/offline")
+ }
+ }
+ return (cachedResponse || networkResponse) as Response
+
+}
+
+self.addEventListener("install", event => event.waitUntil(install()))
+
+self.addEventListener("activate", event => event.waitUntil(activate()))
+
+self.addEventListener("fetch", event => event.respondWith(req(event)))
diff --git a/src/worker/tsconfig.json b/src/worker/tsconfig.json
new file mode 100644
index 0000000..f485c2e
--- /dev/null
+++ b/src/worker/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "importHelpers": true,
+ "lib": ["es2022", "webworker"],
+ "composite": true,
+ "sourceMap": true
+ },
+}