2import { renderToString } from "npm:react-dom/server";
3
4export default async function(req: Request) {
5 return new Response(
6 renderToString(
12export type Handler = (req: Request) => Response | Promise<Response>;
13
14export function pwa(handler: Handler, manifest: Partial<ManifestOptions>): Handler {
15 return async (req: Request) => {
16 const url = new URL(req.url);
5// Sends an email with all the open PRs that have not had any activity
6// for specified period of days
7// Set up this function to run every day (or any interval)
8export async function staleGithubPRsEmail() {
9 // Set up a secret named githubRepos with all the repos you want to analyze (comma separated)
10 let repos = Deno.env.get("githubRepos")?.split(",").filter((r) => r.trim()) ?? [];
33- [x] fix wonky sidebar separator height problem (thanks to @stevekrouse)
34- [x] make result tables scrollable
35- [x] add export to CSV, and JSON (CSV and JSON helper functions written in [this val](https://www.val.town/v/nbbaier/sqliteExportHelpers). Thanks to @pomdtr for merging the initial version!)
36- [x] add listener for cmd+enter to submit query
8}
9
10export async function emojiData(): Promise<Emoji[]> {
11 const res = await fetch("https://www.unicode.org/Public/draft/emoji/emoji-test.txt");
12 const text = await res.text();
1export async function codePointNames(): Promise<Record<string, string>> {
2 const res = await fetch("https://unicode.org/Public/UNIDATA/UnicodeData.txt");
3 const text = await res.text();
1// Function to upload data using Wormhole API and return the URL
2async function uploadToFileIo(file) {
3 const formData = new FormData();
4 formData.append("file", file);
1import { runBackupIfChanged } from 'https://esm.town/v/iamseeley/valBackup';
2
3export default async function (interval: Interval) {
4// await runBackupIfChanged();
5}
1
2
3export default async function convertResume(req: Request): Promise<Response> {
4 const html = `
5 <!DOCTYPE html>
119 import { hostResume } from 'https://esm.town/v/iamseeley/hostResume';
120
121 document.getElementById('resumeForm').addEventListener('submit', async function(event) {
122 event.preventDefault();
123 const resumeContent = document.getElementById('resumeContent').value;
151 document.getElementById('copyButton').addEventListener('click', () => copyToClip('jsonOutput'));
152
153 document.getElementById('hostButton').addEventListener('click', async function() {
154 const jsonOutput = document.querySelector('#jsonOutput').innerText;
155 const valTownApiKey = document.getElementById('apiKeyInput').value; // Get the Val Town API key from input
2import { parseXML } from "https://esm.town/v/stevekrouse/parseXML";
3
4export default async function(req: Request): Promise<Response> {
5 try {
6 const xml = await fetch("https://ej-public-files.sfo3.cdn.digitaloceanspaces.com/wiitdb.xml");
A helper function to build a file's email
Simple functional CSS library for Val Town
LangChain (https://langchain.com) Ambassador, KubeSphere (https://kubesphere.io) Ambassador, CNCF OpenFunction (https://openfunction.dev) TOC Member.
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": "*",