This commit is contained in:
bd_ 2023-10-11 18:38:03 +09:00
parent 5fff791f47
commit bbb9cb9ac9
13 changed files with 2235 additions and 0 deletions

3
docs-site~/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
node_modules
.yarn
.pnp.*

16
docs-site~/package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "worker-sites-template",
"version": "0.0.0",
"devDependencies": {
"@cloudflare/kv-asset-handler": "^0.2.0",
"wrangler": "0.0.30"
},
"private": true,
"scripts": {
"start": "wrangler dev",
"publish": "wrangler publish"
},
"dependencies": {
"accept-language": "^3.0.18"
}
}

View File

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
<style>
h1 {
font-family: Pacifico, sans-serif;
font-size: 4em;
color: #3eb5f1;
margin: 0;
}
h2 {
font-weight: 300;
font-family: sans-serif;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#ferris {
width: 75%;
}
</style>
</head>
<body>
<div class="centered">
<h1>404 Not Found</h1>
<h2>Oh dang! We couldn't find that page.</h2>
<img id="ferris" alt="a sad crab is unable to unable to lasso a paper airplane. 404 not found." src="./img/404-wrangler-ferris.gif">
</div>
</body>
</html>

View File

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
<style>
h1 {
font-family: Pacifico, sans-serif;
font-size: 4em;
color: #3eb5f1;
margin: 0;
}
h2 {
font-weight: 300;
font-family: sans-serif;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#ferris {
width: 75%;
}
</style>
</head>
<body>
<div class="centered">
<h1>200 Success</h1>
<h2>English /a</h2>
<img id="ferris" alt="a happy crab is wearing a cowboy hat and holding a lasso. 200 success." src="./img/200-wrangler-ferris.gif">
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
<style>
h1 {
font-family: Pacifico, sans-serif;
font-size: 4em;
color: #3eb5f1;
margin: 0;
}
h2 {
font-weight: 300;
font-family: sans-serif;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#ferris {
width: 75%;
}
</style>
</head>
<body>
<div class="centered">
<h1>200 Success</h1>
<h2>Hello World! Welcome to your Workers Site.</h2>
<img id="ferris" alt="a happy crab is wearing a cowboy hat and holding a lasso. 200 success." src="./img/200-wrangler-ferris.gif">
</div>
</body>
</html>

View File

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
<style>
h1 {
font-family: Pacifico, sans-serif;
font-size: 4em;
color: #3eb5f1;
margin: 0;
}
h2 {
font-weight: 300;
font-family: sans-serif;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#ferris {
width: 75%;
}
</style>
</head>
<body>
<div class="centered">
<h1>200 Success</h1>
<h2>日本語版 /a</h2>
<img id="ferris" alt="a happy crab is wearing a cowboy hat and holding a lasso. 200 success." src="./img/200-wrangler-ferris.gif">
</div>
</body>
</html>

View File

@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
<style>
h1 {
font-family: Pacifico, sans-serif;
font-size: 4em;
color: #3eb5f1;
margin: 0;
}
h2 {
font-weight: 300;
font-family: sans-serif;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#ferris {
width: 75%;
}
</style>
</head>
<body>
<div class="centered">
<h1>200 Success</h1>
<h2>日本語版ルート</h2>
<img id="ferris" alt="a happy crab is wearing a cowboy hat and holding a lasso. 200 success." src="./img/200-wrangler-ferris.gif">
</div>
</body>
</html>

139
docs-site~/src/index.js Normal file
View File

@ -0,0 +1,139 @@
import {
getAssetFromKV,
mapRequestToAsset,
} from "@cloudflare/kv-asset-handler";
import acceptLanguage from 'accept-language';
/**
* The DEBUG flag will do two things that help during development:
* 1. we will skip caching on the edge, which makes it easier to
* debug.
* 2. we will return an error message on exception in your Response rather
* than the default 404.html page.
*/
const DEBUG = false;
addEventListener("fetch", (event) => {
event.respondWith(handleEvent(event));
});
const STRIP_SUFFIX_RE = new RegExp('^(/.+)(?:/(?:index\.html)?)$');
acceptLanguage.languages(['en-US', 'ja-JP']);
async function handleEvent(event) {
let options = {};
/**
* You can add custom logic to how we fetch your assets
* by configuring the function `mapRequestToAsset`
*/
// options.mapRequestToAsset = handlePrefix(/^\/docs/)
try {
if (DEBUG) {
// customize caching
options.cacheControl = {
bypassCache: true,
};
}
let response;
const url = new URL(event.request.url);
const path = url.pathname;
const strip_match = STRIP_SUFFIX_RE.exec(path);
if (url.searchParams.get("lang") === 'auto') {
let resolvedLanguage = acceptLanguage.get(event.request.headers.get('Accept-Language'));
if (resolvedLanguage === null) {
resolvedLanguage = 'en-US';
} else {
resolvedLanguage = resolvedLanguage.split('-')[0];
}
let destination;
switch (resolvedLanguage) {
case 'ja':
if (url.pathname.startsWith('/dev')) {
destination = '/ja/dev' + url.pathname.substring(4);
} else {
destination = '/ja' + url.pathname;
}
break;
default:
destination = url.pathname;
break;
}
response = new Response("Redirecting", {
status: 301,
headers: {
Location: destination,
Vary: 'Accept-Language',
},
});
} else if (strip_match !== null) {
console.log("=== Redirect");
response = new Response("Redirecting", {
status: 301,
headers: {
Location: strip_match[1],
}
});
} else {
const page = await getAssetFromKV(event, options);
// allow headers to be altered
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) {
console.log(e);
// if an error is thrown try to serve the asset at 404.html
if (!DEBUG) {
try {
let notFoundResponse = await getAssetFromKV(event, {
mapRequestToAsset: (req) =>
new Request(`${new URL(req.url).origin}/404.html`, req),
});
return new Response(notFoundResponse.body, {
...notFoundResponse,
status: 404,
});
} catch (e) {}
}
return new Response(e.message || e.toString(), { status: 500 });
}
}
/**
* Here's one example of how to modify a request to
* remove a specific prefix, in this case `/docs` from
* the url. This can be useful if you are deploying to a
* route on a zone, or if you only want your static content
* to exist at a specific path.
*/
function handlePrefix(prefix) {
return (request) => {
// compute the default (e.g. / -> index.html)
let defaultAssetKey = mapRequestToAsset(request);
let url = new URL(defaultAssetKey.url);
// strip the prefix from the path for lookup
url.pathname = url.pathname.replace(prefix, "/");
// inherit all other props from the default request
return new Request(url.toString(), defaultAssetKey);
};
}

5
docs-site~/wrangler.toml Normal file
View File

@ -0,0 +1,5 @@
name = "modular-avatar-docs-test"
main = "src/index.js"
compatibility_date = "2022-05-06"
site = { bucket = "./public" }

1872
docs-site~/yarn.lock Normal file

File diff suppressed because it is too large Load Diff