5import { renderToString } from "npm:react-dom/server";
6
7function StatusRow({ rows }) {
8 return (
9 <div className="w-full flex flex-col space-y-2">
28}
29
30function StatusSection({ url, rows }) {
31 const sectionRows = rows.filter(row => row[0] === url);
32 const percentUp = Math.round((sectionRows.filter(row => row[1]).length / sectionRows.length) * 100);
44}
45
46export default async function(req: Request): Promise<Response> {
47 const { rows } = await sqlite.execute(
48 "select url, ok, duration, timestamp from uptime order by timestamp desc limit 200",
11];
12
13export async function sendEmailNewsletter(interval: Interval) {
14 const { jsx: newsletterContent, subject, webUrl, targetSendDate } = newsletters[newsletters.length - 1];
15
2import { sqlite } from "https://esm.town/v/std/sqlite?v=4";
3
4export function getJune2024Newsletter() {
5 const subject = "#2 — June 2024";
6 const webUrl = "https://petemillspaugh.com/june-2024";
138}
139
140async function insertIntoNewslettersTable() {
141 const { subject, webUrl, targetSendDate } = getJune2024Newsletter();
142
5`);
6
7function uint64(data: Uint8Array) {
8 let result = 0n;
9 for (let i = 0; i < data.length; i++) {
15console.log(uint64(input));
16
17function bytes(str: string): Uint8Array {
18 return base16.decode(str.replaceAll(/\s/g, "").toUpperCase());
19}
6`);
7
8function publicKey(data: Uint8Array) {
9 return base58.encode(data);
10}
12console.log(publicKey(input));
13
14function bytes(str: string): Uint8Array {
15 return base16.decode(str.replaceAll(/\s/g, "").toUpperCase());
16}
307};
308
309// To test the function
310bookReservationOnResy({
311 reservation: {
5import { render } from "npm:preact-render-to-string";
6
7export function sendTestEmailNewsletter(interval: Interval) {
8 /*
9 * Since this is a public Val, anyone can run it.
8}
9
10export function generateNewsletterJsx({ webUrl, newsletterContent, emailAddress }) {
11 return (
12 <main>
4import { currency } from "https://esm.town/v/stevekrouse/currency";
5
6export async function btcPriceAlert() {
7 const lastBtcPrice: number = await blob.getJSON("lastBtcPrice");
8 let btcPrice = await currency("usd", "btc");
3import { newRSSItems } from "https://esm.town/v/stevekrouse/newRSSItems";
4
5export async function pollRSSFeeds({ lastRunAt }: Interval) {
6 return Promise.all(
7 Object.entries(rssFeeds).map(async ([name, url]) => {
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": "*",