36 tables: string[];
37};
38function parseOptions(params: URLSearchParams): GenerateOptions {
39 const camelCase = params.has("camelCase") ? params.get("camelCase") === "true" : undefined;
40 const excludePattern = params.get("excludePattern") ?? undefined;
54 };
55}
56export default async function(req: Request): Promise<Response> {
57 const url = new URL(req.url);
58 if (url.pathname !== "/") return new Response(null, { status: 404 });
39});
40
41export async function getLatestVersion(scope: string, name: string) {
42 scope = normalizeScope(scope);
43 const data = await client.get(`@${scope}/${name}/meta.json`).json();
45}
46
47export async function getManifest(scope: string, name: string, version = "latest") {
48 scope = normalizeScope(scope);
49 if (version === "latest") {
54}
55
56export async function getConfig(scope: string, name: string, version: string) {
57 scope = normalizeScope(scope);
58 const manifest = await getManifest(scope, name, version);
64}
65
66function normalizeScope(input: string) {
67 if (!input.startsWith("@")) return input;
68 return input.slice(1);
1export function handler(e: Request) {
2 return new Response("xxxxxxx");
3}
1import { base64 as b64 } from "npm:multiformats/bases/base64";
2
3export function newValURL(code?: string, base64 = true) {
4 const url = new URL("https://www.val.town/new");
5 if (!code) {
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}
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": "*",