146});
147
148export default passwordAuth(app.fetch);
60}
61
62async function fetchUser(token: string): Promise<{ id: string }> {
63 const resp = await fetch("https://api.val.town/v1/me", {
64 headers: {
65 Authorization: `Bearer ${token}`,
68
69 if (resp.status !== 200) {
70 throw new Error("Could not fetch user");
71 }
72
76async function verifyApiToken(token: string) {
77 try {
78 const [currentUser, requestUser] = await Promise.all([fetchUser(Deno.env.get("valtown")), fetchUser(token)]);
79 return currentUser.id == requestUser.id;
80 } catch (_) {
13app.get("/", (c) => c.html(Layout`${userActionsDisplay(c.get("auth"))}` as string));
14
15export default app.fetch;
5app.get("/", (c) => c.text("Hello Val!!!"));
6
7export default app.fetch;
5app.get("/", (c) => c.text("Hello Val!"));
6
7export default app.fetch;
5app.get("/", (c) => c.text("Hello Val!!!!!!"));
6
7export default app.fetch;
1import { fetch } from "https://esm.town/v/std/fetch?v=4";
2import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON";
3
4console.log(await fetchJSON("https://pie.dev/get"));
5console.log(await fetchJSON("https://pie.dev/get", { fetch }));
1Migrated from folder: Archive/fetchJSON_example
212});
213
214export default codeOnValTown(router.fetch);
30 | { type: "JSXInvalid"; value: string };
31
32let source = await (await fetch("https://unpkg.com/js-tokens@9.0.0/index.js")).text();
33source = source.replace(String.raw`Identifier = /(\x23?)`, String.raw`Identifier = /([@#]?)`);
34source = source.replace(