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.
60export async function valtownToSQLite(options: { sqlite: SqliteInterface } = { sqlite }) {
61 await options.sqlite.execute(createQuery);
62 let url = "https://api.val.town/v1/search/vals?query=%20&limit=100";
63 while (true) {
64 const resp = await fetch(url);
1export async function create({ code, token }: { code: string; token: string }) {
2 const { error, details, url } = await (await fetch("https://websandbox-createAPI.web.val.run", {
3 body: JSON.stringify({ code, token }),
4 method: "POST",
1Migrated from folder: real/createAPI
6### Val Town-Hosted SQLite
7
8[Val Town](https://val.town/) hosts SQLite as part of its standard library ([@std/sqlite](https://val.town/v/std/sqlite)). This makes a fetch request against their closed-source API (using your API token) which returns results in a consistent format. This is great because you can host your own endpoints that work similarly, and _reuse code that was only designed in mind for that original hosted interface_
9
10The standard format (abridged to important fields):
161import { sqliteUniverseWithOptions, patterns, defaultPatterns } from "https://esm.town/v/postpostscript/sqliteUniverse";
162import { createSqlite } from "https://esm.town/v/postpostscript/sqliteWasm";
163import { sqliteFromAPI } from "https://esm.town/v/postpostscript/sqliteFromAPI";
164import { Statement } from "https://esm.town/v/postpostscript/sqliteBuilder";
165
185 /^~\/(\w+)/,
186 ({ endpoint, tables, match }) => {
187 return sqliteFromAPI(`@postpostscript/${match[1]}`)
188 },
189 ]
192 fallback({ endpoint, tables }) {
193 // if an endpoint is not found, this will be called
194 return sqliteFromAPI(`@postpostscript/sqlitePublic`)
195 },
196 },
8
91. Click `Fork`
102. Change `location` (Line 4) to describe your location. It accepts fairly flexible English descriptions which it turns into locations via [nominatim's geocoder API](https://www.val.town/v/stevekrouse/nominatimSearch).
113. Click `Run`
12