Add basic demo SPA to display claims

This commit is contained in:
Simon Bihel
2022-02-11 13:54:20 +00:00
parent 15763cd0bb
commit 0f110d70b4
11 changed files with 258 additions and 2 deletions

3
example/demo/workers-site/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
node_modules
dist
worker

View File

@@ -0,0 +1,39 @@
import { getAssetFromKV, mapRequestToAsset } from '@cloudflare/kv-asset-handler'
const DEBUG = false
addEventListener('fetch', event => {
event.respondWith(handleEvent(event))
})
async function handleEvent(event) {
let options = {}
options.mapRequestToAsset = spaRouting()
options.cacheControl = {
bypassCache: DEBUG,
}
try {
const page = await getAssetFromKV(event, options)
const response = new Response(page.body, page)
response.headers.set('X-XSS-Protection', '1; mode=block')
response.headers.set('X-Content-Type-Options', 'nosniff')
response.headers.set('X-Frame-Options', 'DENY')
response.headers.set('Referrer-Policy', 'unsafe-url')
response.headers.set('Feature-Policy', 'none')
return response
} catch (e) {
return new Response(e.message || e.toString(), { status: 500 })
}
}
function spaRouting() {
return request => {
let defaultAssetKey = mapRequestToAsset(request)
let url = new URL(defaultAssetKey.url)
if (url.pathname.includes(".html")) {
url.pathname = "/index.html"
}
return new Request(url.toString(), defaultAssetKey)
}
}

View File

@@ -0,0 +1,10 @@
{
"private": true,
"version": "1.0.0",
"description": "A template for kick starting a Cloudflare Workers project",
"main": "index.js",
"license": "MIT",
"dependencies": {
"@cloudflare/kv-asset-handler": "~0.1.2"
}
}