2import { email } from "https://esm.town/v/std/email";
3
4export default async function(interval: Interval) {
5 const locale = "de/de";
6 const stores = [117, 187, 226];
5// Rest of the client-side code remains the same...
6
7export default async function server(request: Request): Promise<Response> {
8 const { sqlite } = await import("https://esm.town/v/stevekrouse/sqlite");
9 const KEY = "Expense";
18 }> = {};
19
20 // Enhanced cookie parsing function
21 const parseCookies = (cookieHeader: string | null): Record<string, string> => {
22 console.log("Raw Cookie Header:", cookieHeader);
4import { OpenAI } from "npm:openai";
5
6function pm(...lines: string[]): string {
7 return lines.join("\n");
8}
9
10export async function emailValHandler(inboundEmail: Email) {
11 const userPrompt = pm(
12 `From: ${inboundEmail.from}`,
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
4
5function App() {
6 const [principal, setPrincipal] = useState('');
7 const [rate, setRate] = useState('');
83}
84
85function client() {
86 createRoot(document.getElementById("root")).render(<App />);
87}
88if (typeof document !== "undefined") { client(); }
89
90export default async function server(request: Request): Promise<Response> {
91 if (request.method === 'POST') {
92 const { principal, rate, months } = await request.json();
1import { emailValHandler } from "./emailHandler";
2
3export default async function(interval: Interval) {
4 const today = new Intl.DateTimeFormat("en-US", {
5 month: "short",
3import type { Message } from "../shared/types.ts";
4
5export function MessageInput({ onSubmit }: { onSubmit: () => void }) {
6 const [message, setMessage] = React.useState("");
7
15In a normal server environment, you would likely use a middleware [like this one](https://hono.dev/docs/getting-started/nodejs#serve-static-files) to serve static files. Some frameworks or deployment platforms automatically make any content inside a `public/` folder public.
16
17However in Val Town you need to handle this yourself, and it can be suprisingly difficult to read and serve files in a Val Town Project. This template uses helper functions from [stevekrouse/utils/serve-public](https://www.val.town/x/stevekrouse/utils/branch/main/code/serve-public/README.md), which handle reading project files in a way that will work across branches and forks, automatically transpiles typescript to javascript, and assigns content-types based on the file's extension.
18
19### `index.html`
25## CRUD API Routes
26
27This app has two CRUD API routes: for reading and inserting into the messages table. They both speak JSON, which is standard. They import their functions from `/backend/database/queries.ts`. These routes are called from the React app to refresh and update data.
28
29## Errors
61});
62
63async function getFilesWithContent(files: any[], projectId) {
64 const nonDirectoryFiles = files.filter(file => file.type !== "directory");
65
97}
98
99async function createZipFromEndpoints(
100 files: any[],
101 zipFileName: string,
5export const tableName = `${KEY}_reviews_${SCHEMA_VERSION}`;
6
7export async function createTables() {
8 await sqlite.batch([
9 ` CREATE TABLE IF NOT EXISTS ${tableName} (
10await createTables();
11
12export async function getReviews(limit = REVIEW_LIMIT): Promise<Review[]> {
13 const reviews = await sqlite.execute(
14 `SELECT * FROM ${tableName}
20}
21
22export async function insertReview(name: string, cake1Review: string, cake2Review: string) {
23 await sqlite.execute(
24 `INSERT INTO ${tableName} (name, cake1Review, cake2Review)
28}
29
30export async function analyzeReviews(): Promise<string> {
31 const reviews = await getReviews();
32
96}
97
98export async function clearReviews(): Promise<void> {
99 try {
100 await sqlite.execute(`DELETE FROM ${tableName}`);
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": "*",