aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets
diff options
context:
space:
mode:
author2022-01-08 17:27:42 +0530
committer2022-01-08 17:27:42 +0530
commit5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a (patch)
treebbca1d1fa46fb810d9974484572de5a9bfac54b8 /src/assets
parentmake it ready to deploy (diff)
downloadsudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar.gz
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar.bz2
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar.lz
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar.xz
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.tar.zst
sudomsg-5aeaf2f352e7da0a0d55a7ad2cd7dbd3869b875a.zip
add service worker
Diffstat (limited to '')
-rw-r--r--src/assets/assets.11tydata.json3
-rw-r--r--src/assets/atom.njk (renamed from src/feed.njk)3
-rw-r--r--src/assets/error.md (renamed from src/error.md)1
-rw-r--r--src/assets/index.mjs13
-rw-r--r--src/assets/json.njk30
-rw-r--r--src/assets/manifest.njk29
-rw-r--r--src/assets/prism.css (renamed from src/prism.css)0
-rw-r--r--src/assets/robot.njk (renamed from src/robot.njk)1
-rw-r--r--src/assets/sitemap.njk (renamed from src/sitemap.njk)1
-rw-r--r--src/assets/sw.11tydata.json3
-rw-r--r--src/assets/sw.mjs63
11 files changed, 142 insertions, 5 deletions
diff --git a/src/assets/assets.11tydata.json b/src/assets/assets.11tydata.json
new file mode 100644
index 0000000..45b2b90
--- /dev/null
+++ b/src/assets/assets.11tydata.json
@@ -0,0 +1,3 @@
+{
+ "eleventyExcludeFromCollections": true
+} \ No newline at end of file
diff --git a/src/feed.njk b/src/assets/atom.njk
index 120c33b..4e517ca 100644
--- a/src/feed.njk
+++ b/src/assets/atom.njk
@@ -1,6 +1,5 @@
---
permalink: /feed.xml
-eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
@@ -21,7 +20,7 @@ eleventyExcludeFromCollections: true
<link href="{{ absolutePostUrl }}"/>
<updated>{{ post.date | dateToRfc3339 }}</updated>
<id>{{ '/' | url | absoluteUrl(metadata.url) }}</id>
- <content type="html">{{ post.templateContent | htmlToAbsoluteUrls( absolutePostUrl ) }}</content>
+ <content type="html"><![CDATA[{{ post.templateContent | htmlToAbsoluteUrls( absolutePostUrl ) }}]]></content>
</entry>
{% endfor %}
</feed>
diff --git a/src/error.md b/src/assets/error.md
index a84fe07..65655f3 100644
--- a/src/error.md
+++ b/src/assets/error.md
@@ -5,7 +5,6 @@ pagination:
size: 1
alias: error
permalink: "/{{ error.code }}.html"
-eleventyExcludeFromCollections: true
---
# ERROR: {{ error.code }} {.err}
diff --git a/src/assets/index.mjs b/src/assets/index.mjs
new file mode 100644
index 0000000..99a92fc
--- /dev/null
+++ b/src/assets/index.mjs
@@ -0,0 +1,13 @@
+const main = async () => {
+ window.addEventListener('load', async () => {
+ if ('serviceWorker' in navigator) {
+ try {
+ var sw = await navigator.serviceWorker.register('/sw.js')
+ } catch {
+ console.log("Service Worker failed to register")
+ }
+ }
+ })
+}
+
+main()
diff --git a/src/assets/json.njk b/src/assets/json.njk
new file mode 100644
index 0000000..6d8c7ec
--- /dev/null
+++ b/src/assets/json.njk
@@ -0,0 +1,30 @@
+---
+permalink: /feed.json
+---
+{
+ "version": "https://jsonfeed.org/version/1.1",
+ "title": "{{ metadata.title }}",
+ "language": "{{ metadata.language }}",
+ "home_page_url": "{{ "/" | url | absoluteUrl(metadata.url) }}",
+ "feed_url": "{{ permalink | url | absoluteUrl(metadata.url) }}",
+ "description": "{{ metadata.description }}",
+ "author": {
+ "name": "{{ metadata.author.name }}"
+ },
+ "items": [
+ {%- for post in collections.posts | reverse %}
+ {%- set absolutePostUrl %}{{ post.url | url | absoluteUrl(metadata.url) }}{% endset -%}
+ {
+ "id": "{{ absolutePostUrl }}",
+ "url": "{{ absolutePostUrl }}",
+ "title": "{{ post.data.title }}",
+ "content_html": {% if post.templateContent %}{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) | dump | safe }}
+ {% else %}""{% endif %},
+ "date_published": "{{ post.date | rssDate }}"
+ }
+ {%- if not loop.last -%}
+ ,
+ {%- endif -%}
+{%- endfor %}
+]
+}
diff --git a/src/assets/manifest.njk b/src/assets/manifest.njk
new file mode 100644
index 0000000..3942d06
--- /dev/null
+++ b/src/assets/manifest.njk
@@ -0,0 +1,29 @@
+---
+permalink: /app.webmanifest
+---
+{
+ "$schema": "https://json.schemastore.org/web-manifest-combined.json",
+ "name": "{{ metadata.title }}",
+
+ "lang": "en-GB",
+ "start_url": "{{ '/' | url }}",
+ "id": "{{ '/' | url }}",
+ "scope": "{{ '/' | url }}",
+ "display": "minimal-ui",
+ "background_color": "red",
+ "theme_color": "red",
+ "description": "{{ metadata.description }}",
+ "icons": [
+ {
+ "src": "{{ '/favicon.ico' | url }}",
+ "sizes": "256x256",
+ "type": "image/vnd.microsoft.icon"
+ },
+ {
+ "src": "{{ '/favicon.svg' | url }}",
+ "sizes": "any",
+ "type": "image/svg+xml"
+ }
+ ]
+
+}
diff --git a/src/prism.css b/src/assets/prism.css
index 431fe8a..431fe8a 100644
--- a/src/prism.css
+++ b/src/assets/prism.css
diff --git a/src/robot.njk b/src/assets/robot.njk
index 79c49c0..dcaa728 100644
--- a/src/robot.njk
+++ b/src/assets/robot.njk
@@ -1,6 +1,5 @@
---
permalink: /robot.txt
-eleventyExcludeFromCollections: true
---
User-agent: *
Allow: /
diff --git a/src/sitemap.njk b/src/assets/sitemap.njk
index b2ff291..910b238 100644
--- a/src/sitemap.njk
+++ b/src/assets/sitemap.njk
@@ -1,6 +1,5 @@
---
permalink: /sitemap.xml
-eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
diff --git a/src/assets/sw.11tydata.json b/src/assets/sw.11tydata.json
new file mode 100644
index 0000000..55b70b5
--- /dev/null
+++ b/src/assets/sw.11tydata.json
@@ -0,0 +1,3 @@
+{
+ "permalink": "/sw.js"
+} \ No newline at end of file
diff --git a/src/assets/sw.mjs b/src/assets/sw.mjs
new file mode 100644
index 0000000..432e630
--- /dev/null
+++ b/src/assets/sw.mjs
@@ -0,0 +1,63 @@
+const cache_name = "v3"
+
+const install_sw = async event => {
+ const precache = async() => {
+ const cache = await caches.open(cache_name);
+ return cache.addAll([
+ '/index.css',
+ '/prism.css',
+ '/index.js',
+ '/sw.js',
+ '/favicon.svg',
+ '/offline.html',
+ '/'
+ ])
+ }
+ event.waitUntil(precache())
+}
+
+const activate_sw = async event => {
+ const cachepreserve = ['v3'];
+
+ const invalidatecache = async() => {
+ const keys = await caches.keys()
+ Promise.all(
+ keys.map((key) => {
+ if (cachepreserve.indexOf(key) === -1) {
+ return caches.delete(key)
+ }
+ }))
+ }
+ event.waitUntil(invalidatecache())
+}
+
+const fetch_sw = async event => {
+ const cache_fetch = async() => {
+ if (event.request.method != 'GET') {
+ return
+ }
+ const cacheres = await caches.match(event.request)
+ if (cacheres !== undefined) {
+ return cacheres
+ }
+ try {
+ const response = await fetch(event.request)
+ const cache = await caches.open(cache_name)
+ cache.put(event.request, response.clone())
+ return response
+ } catch {
+ return caches.match('/offline.html')
+ }
+ }
+
+ event.respondWith(cache_fetch())
+}
+
+const main = async() => {
+ self.addEventListener('install', install_sw)
+ self.addEventListener('activate', activate_sw)
+ self.addEventListener('fetch', fetch_sw)
+
+}
+
+main() \ No newline at end of file