2import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON";
3
4export async function dailyDadJoke() {
5 let { setup, punchline } = await fetchJSON("https://official-joke-api.appspot.com/random_joke");
6 return email({
6const JSDOM = jsdom.JSDOM;
7
8export function readableHtml(urlOrContent: URL | string, options?: RequestInit): Promise<string> {
9 if (typeof urlOrContent === "string") {
10 return readableHtmlFromText(urlOrContent);
15export default readableHtml;
16
17async function readableHtmlFromUrl(url: URL, options?: RequestInit): Promise<string> {
18 const body = await fetchText(url.toString(), options);
19 return readableHtmlFromText(body);
20}
21
22async function readableHtmlFromText(content: string): Promise<string> {
23 let doc = new JSDOM(content);
24 let reader = new Readability(doc.window.document);
1export default async function server(request: Request): Promise<Response> {
2 const url = new URL(request.url);
3
50
51 <script>
52 async function fetchFiles() {
53 const user = document.getElementById('user').value;
54 const repo = document.getElementById('repo').value;
1export default async function handler(request: Request) {
2 if (request.method !== "POST") {
3 return Response.json({ message: "This val responds to POST requests." }, {
1export default async function handler(request: Request) {
2 if (request.method !== "POST") {
3 return Response.json({ message: "This val responds to POST requests." }, {
2import { renderToString } from "npm:react-dom/server";
3
4export default async function(req: Request) {
5 return new Response(
6 renderToString(
25];
26
27// Function to search blog content
28function searchBlogContent(query: string) {
29 return blogPosts.filter(post =>
30 post.title.toLowerCase().includes(query.toLowerCase()) ||
58 const sendButton = document.getElementById('sendButton');
59
60 function addMessage(message, isUser = false) {
61 const messageElem = document.createElement('p');
62 messageElem.textContent = isUser ? \`You: \${message}\` : \`Bot: \${message}\`;
66 }
67
68 async function sendMessage() {
69 const message = userInput.value.trim();
70 if (!message) return;
136});
137
138export default async function server(req: Request): Promise<Response> {
139 return app.fetch(req);
140}
2
3// https://github.com/web-push-libs/web-push/blob/v3.4.4/README.md#using-vapid-key-for-applicationserverkey
4function urlBase64ToUint8Array(b64) {
5 const padding = "=".repeat((4 - (b64.length % 4)) % 4);
6 const base64 = (b64 + padding)
19
20// https://stackoverflow.com/a/56848917/9068081
21function getPrivKeyJWK({ pubKey, privKey }: { pubKey: string; privKey: string }) {
22 const pubKeyArray = urlBase64ToUint8Array(pubKey);
23 const privKeyArray = urlBase64ToUint8Array(privKey);
49};
50
51async function importVapidKeys(
52 exportedKeys: { pubKey: string; privKey: string },
53 { crypto = globalThis.crypto.subtle, extractable = false }: {
1import { OpenAI } from "https://esm.town/v/std/openai";
2export default async function(req: Request): Promise<Response> {
3 const openai = new OpenAI();
4 const stream = await openai.chat.completions.create({
15 `);
16
17export default async function(req: Request): Promise<Response> {
18 await db.query(`
19 UPDATE test
A helper function to build a file's email
Simple functional CSS library for Val Town
import { OpenAI } from "https://esm.town/v/std/openai";
export default async function(req: Request): Promise<Response> {
if (req.method === "OPTIONS") {
return new Response(null, {
headers: {
"Access-Control-Allow-Origin": "*",
LangChain (https://langchain.com) Ambassador, KubeSphere (https://kubesphere.io) Ambassador, CNCF OpenFunction (https://openfunction.dev) TOC Member.