diff options
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.ts | 51 | ||||
-rw-r--r-- | src/worker/tsconfig.json | 10 |
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 + }, +} |