1# `upgradeExpress`
2Upgrade Express vals to the Web API without breaking existing consumers
3
4## How it works
5`upgradeExpress` wraps a Web handler into a function that works as normal when called by the Web API, and redirects to the Web API when called by the Express API.
6
7## Example
1import { API_URL } from "https://esm.town/v/std/API_URL?v=5";
2
3export const user = async ({ token, id }: {
10 profileImageUrl: string;
11}> =>
12 await (await fetch(`${API_URL}/v1/users/${id}`, {
13 headers: token
14 ? {
1import { API_URL } from "https://esm.town/v/std/API_URL?v=5";
2
3export async function alias<P extends Params>(params: P): Promise<Result<P>> {
4 const username = params.username;
5 let url = `${API_URL}/v1/alias/${username}`;
6 if ("valName" in params)
7 url = url + `/${params.valName}`;
1# Returning HTML from the Val Town Web API
2
3This just lets you use the standard [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) object with our [Web API](https://docs.val.town/api/web) to return an HTML response from this Val.
10 const table = stripAnsi(renderTable(zip(res)));
11
12 const resp = await fetch("https://sourcecodeshots.com/api/image", {
13 method: "POST",
14 headers: {
1import { Statement, type StatementInstance } from "https://esm.town/v/postpostscript/sqliteBuilder";
2import { createSqlite } from "https://esm.town/v/postpostscript/sqliteWasm";
3import { blob as blobAPI } from "https://esm.town/v/std/blob";
4
5export async function sqliteBlob(options: SqliteBlobOptions = {}) {
11
12export async function sqliteBlobSchema(
13 { prefix = undefined, table = Statement`blobs`, blob = blobAPI }: SqliteBlobOptions = {},
14) {
15 const blobs = await blob.list(prefix);
4import { Statement, StatementInstance } from "https://esm.town/v/postpostscript/sqliteBuilder";
5import { sqliteDump } from "https://esm.town/v/postpostscript/sqliteDump";
6import { sqliteFromAPI } from "https://esm.town/v/postpostscript/sqliteFromAPI";
7import type { SqliteInterface } from "https://esm.town/v/postpostscript/sqliteTypes";
8import { createSqlite } from "https://esm.town/v/postpostscript/sqliteWasm";
141 /^https:\/\//,
142 ({ endpoint }) => {
143 return sqliteFromAPI(endpoint);
144 },
145 ] as SqlitePatternTup,
147 /^@/,
148 ({ endpoint }) => {
149 return sqliteFromAPI(endpoint);
150 },
151 ] as SqlitePatternTup,
1import { api } from "https://esm.town/v/pomdtr/api";
2import ts from "npm:typescript";
3
1export default async function() {
2 const res = await fetch("https://api.manifold.markets/request-loan", {
3 headers: {
4 Authorization: `Key ${Deno.env.get("manifoldApiKey")}`,
5 },
6 });
3Instructions:
41. Fork this Val.
52. Get your Manifold API key [from your profile](https://manifold.markets/profile).
63. Add `manifoldApiKey` with your key to the [Val Environment Variables](https://www.val.town/settings/environment-variables).
74. Hit run! It will run daily to collect your loans.