3import Keyv from "npm:@keyvhq/core";
4
5export function openKv<T = any>() {
6 const { slug } = callerRef();
7 return new Keyv<T>({ store: sqliteStore, namespace: slug });
86 * Create a SQL query for a list of values.
87 */
88export function join(
89 values: readonly RawValue[],
90 separator = ",",
107 * Create a SQL query for a list of structured values.
108 */
109export function bulk(
110 data: ReadonlyArray<ReadonlyArray<RawValue>>,
111 separator = ",",
140 * Create raw SQL statement.
141 */
142export function raw(value: string) {
143 return new Sql([value], []);
144}
152 * Create a SQL object from a template string.
153 */
154export function sql(
155 strings: readonly string[],
156 ...values: readonly RawValue[]
161type ResultSet = Awaited<ReturnType<typeof sqlite["execute"]>>;
162
163export function zip(res: ResultSet) {
164 return res.rows.map(row => Object.fromEntries(zip2(res.columns, row)));
165}
3const reParam = /(?<key>[^\s=]+)(?:\s*=\s*"?(?<value>[^"]+)"?)?/;
4
5export function parseLinkHeader(input: string, baseUrl: string | URL) {
6 const links = input.split(/,\s*(?=<)/g);
7 return links.map(link => parseLink(link, baseUrl));
8}
9
10function parseLink(input: string, baseUrl: string | URL) {
11 const [link, ...linkParams] = input.split(/;\s*/g);
12 const { href } = new URL(
2
3// Fetches a random joke.
4async function fetchRandomJoke() {
5 const response = await fetch(
6 "https://official-joke-api.appspot.com/random_joke",
17});
18
19export default async function(req: Request): Promise<Response> {
20 const { pathname, searchParams } = new URL(req.url);
21 const query = Object.fromEntries(searchParams.entries());
1export default async function(req: Request): Promise<Response> {
2 return Response.json({ ok: false });
3}
36});
37
38export async function fetchNewestVals({ page = 0 } = {}) {
39 const url = new URL("https://www.val.town/newest");
40 url.searchParams.set("_data", "routes/_app.newest");
24});
25
26export async function fetchVal(author: string, name: string) {
27 const prefixUrl = new URL("/v1/alias", API_URL);
28 const resp = await ky.get(`${author}/${name}`, { prefixUrl }).json();
17`;
18
19export default function() {
20 return new Response(body, {
21 headers: {
2import { BrowserContext } from "https://esm.town/v/pomdtr/browser";
3
4export default async function(ctx: BrowserContext) {
5 const { author, name } = ctx.params;
6
7 await askAI(`Add jsdoc comments for each exported function of the val @${author}/${name}`);
8}
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.