3export default async function(req: Request): Promise<Response> {
4const url = new URL(req.url);
5return fetch(TARGET_URL + url.pathname + url.search, {
6headers: {
7"X-API-Key": Deno.env.get("OpenAQ_API_KEY") as string,
aqinominatim.ts2 matches
1import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON";
23export function nominatimSearch(params: Search): Promise<Place[]> {
4return fetchJSON(
5"https://nominatim.openstreetmap.org/search?"
6+ new URLSearchParams({
6263useEffect(() => {
64const fetchYCCompanies = async () => {
65const storedCompanies = localStorage.getItem("ycCompanies");
66if (storedCompanies) {
69setDebugInfo(prevInfo => prevInfo + `\nLoaded ${companies.length} companies from localStorage`);
70} else {
71const response = await fetch("/companies.json");
72const companies = await response.json();
73setYcCompanies(companies);
74localStorage.setItem("ycCompanies", JSON.stringify(companies));
75setDebugInfo(prevInfo =>
76prevInfo + `\nFetched ${companies.length} companies from server and stored in localStorage`
77);
78}
79};
80fetchYCCompanies();
81}, []);
82226227export default async function server(request: Request): Promise<Response> {
228const companies = await fetch("https://stevekrouse-yc_database.web.val.run").then(res => res.json());
229const url = new URL(request.url);
230if (url.pathname === "/companies.json") {
2import { cleanupOldAggregatedEntries } from "./cleanup"; // For manual trigger
3import { initializeAggregatorDB } from "./db"; // Make sure DB is initialized
4import { fetchAndStoreNewCreations } from "./fetchAndStore"; // For manual trigger
5import { serveFrontend } from "./frontend";
6import { generateRSSFeed } from "./generateRSS";
15console.log(`[${new Date().toISOString()}] Request: ${req.method} ${path}`);
1617// Add CORS headers - useful if you ever want to fetch feed via JS
18const corsHeaders = {
19"Access-Control-Allow-Origin": "*",
49case "/_update":
50console.log("Manual update triggered.");
51const fetchRes = await fetchAndStoreNewCreations();
52const cleanupRes = await cleanupOldAggregatedEntries();
53response = Response.json({ ok: true, fetch: fetchRes, cleanup: cleanupRes }, { headers: corsHeaders });
54break;
55
3// Use a distinct table name for this aggregator instance
4export const AGGREGATOR_TABLE_NAME = "pondiverse_rss_aggregator_v2"; // Incremented version
5export const UPSTREAM_PONDIVERSE_URL = "https://pondiverse.com"; // URL for linking, not fetching
67export async function initializeAggregatorDB() {
FeedPondgenerateRSS.js2 matches
27try {
28const results = await sqlite.execute({
29// Fetch recent items, ordered by original creation time
30sql: `SELECT title, type, creation_time, image_url, link
31FROM ${AGGREGATOR_TABLE_NAME}
54}
55} catch (error) {
56console.error("Error fetching items for RSS feed:", error);
57// Optionally add an error item to the feed
58itemsXml = `
FeedPondfetchAndStore.js0 matches
stevensDemosendDailyBrief.ts1 match
135const lastSunday = today.startOf("week").minus({ days: 1 });
136137// Fetch relevant memories using the utility function
138const memories = await getRelevantMemories();
139
stevensDemoNotebookView.tsx12 matches
67const [currentPage, setCurrentPage] = useState(1);
6869const fetchMemories = useCallback(async () => {
70setLoading(true);
71setError(null);
72try {
73const response = await fetch(API_BASE);
74if (!response.ok) {
75throw new Error(`HTTP error! status: ${response.status}`);
78setMemories(data);
79} catch (e) {
80console.error("Failed to fetch memories:", e);
81setError(e.message || "Failed to fetch memories.");
82} finally {
83setLoading(false);
8687useEffect(() => {
88fetchMemories();
89}, [fetchMemories]);
9091const handleAddMemory = async (e: React.FormEvent) => {
100101try {
102const response = await fetch(API_BASE, {
103method: "POST",
104headers: { "Content-Type": "application/json" },
112setNewMemoryTags("");
113setShowAddForm(false);
114await fetchMemories();
115} catch (e) {
116console.error("Failed to add memory:", e);
123124try {
125const response = await fetch(`${API_BASE}/${id}`, {
126method: "DELETE",
127});
129throw new Error(`HTTP error! status: ${response.status}`);
130}
131await fetchMemories();
132} catch (e) {
133console.error("Failed to delete memory:", e);
155156try {
157const response = await fetch(`${API_BASE}/${editingMemory.id}`, {
158method: "PUT",
159headers: { "Content-Type": "application/json" },
164}
165setEditingMemory(null);
166await fetchMemories();
167} catch (e) {
168console.error("Failed to update memory:", e);
stevensDemoindex.ts2 matches
135));
136137// HTTP vals expect an exported "fetch handler"
138export default app.fetch;