export type MemoriumFile = { type: "file"; name: string; path: string; modTime: string; mime: string; size: string; content: any; }; export type MemoriumDir = { type: "dir"; name: string; path: string; modTime: string; mime: string; size: string; content: MemoriumEntry[]; }; export type MemoriumEntry = MemoriumFile | MemoriumDir; const SERVER_URL = "https://marka.max-richter.dev"; //const SERVER_URL = "http://localhost:8080"; const cache = {}; export async function listResource( id: string, ): Promise { const url = `${SERVER_URL}/resources/${id}`; if (cache[url]) return cache[url]; try { const response = await fetch(url, { signal: AbortSignal.timeout(5000) }); if (response.ok) { const json = await response.json(); if (json.type == "dir") { const res = { ...json, content: json.content.filter((res: MemoriumEntry) => res.mime === "application/markdown" ), }; cache[url] = res; return res; } cache[url] = json; return json; } } catch (_e) { console.log("Failed to get: ", url); cache[url] = undefined; return; } } export function getImageUrl(input: string): string { if (!input) { return; } if (input.startsWith("https://") || input.startsWith("http://")) { return input; } if (input.startsWith("/")) { return `${SERVER_URL}${input}`; } return `${SERVER_URL}/${input}`; }