3This is a lightweight Blob Admin interface to view and debug your Blob data.
4
5
6
7Use this button to install the val:
70 .error { color: red; }
71 #refreshButton { padding: 10px 20px; font-size: 16px; margin-bottom: 20px; }
72 .embedded-image { max-width: 100%; height: auto; margin-top: 10px; border-radius: 4px; }
73 </style>
74 </head>
84 <div class="author">${item.author?.displayName || 'Unknown'} (@${item.author?.username || 'unknown'})</div>
85 <div>${item.text || 'No content'}</div>
86 ${item.embeds?.images && item.embeds.images.length > 0 ?
87 `<img src="${item.embeds.images[0].url}" alt="Embedded image" class="embedded-image">` :
88 ''}
89 <div class="timestamp">${new Date(item.timestamp || Date.now()).toLocaleString()}</div>
105 <div class="author">\${item.author?.displayName || 'Unknown'} (@\${item.author?.username || 'unknown'})</div>
106 <div>\${item.text || 'No content'}</div>
107 \${item.embeds?.images && item.embeds.images.length > 0 ?
108 \`<img src="\${item.embeds.images[0].url}" alt="Embedded image" class="embedded-image">\` :
109 ''}
110 <div class="timestamp">\${new Date(item.timestamp || Date.now()).toLocaleString()}</div>
4
5
6<img width="400px" src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/2661d748-d7a7-4d1e-85a4-f60fae262000/public" />
7
4
5
6<img width="400px" src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/2661d748-d7a7-4d1e-85a4-f60fae262000/public" />
7
4
5
6<img width="400px" src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/2661d748-d7a7-4d1e-85a4-f60fae262000/public" />
7
1# Image generated from a path name powered by fal.ai
2
3https://maxm-imggenurl.web.val.run/firefly.jpg
1import { generateImage } from "https://esm.town/v/isidentical/falImageGen?v=11";
2import { blob } from "https://esm.town/v/std/blob?v=12";
3
4const genKey = (key: string): string => {
5 return "genImageCache-v1-" + key;
6};
7
10 let url = await blob.getJSON(genKey(key));
11 if (!url) {
12 let resp = await generateImage(`generate the image you would expect if the url path was: "${key}"`);
13 url = resp.url;
14 await blob.setJSON(genKey(key), url);
15 }
16 return new Response((await fetch(url)).body, { headers: { "content-type": "image/jpg" } });
17}
4
5<div align="center">
6<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/67a1d35e-c37c-41a4-0e5a-03a9ba585d00/public" width="700px"/>
7</div>
3View and interact with your Val Town SQLite data. It's based off Steve's excellent [SQLite Admin](https://www.val.town/v/stevekrouse/sqlite_admin?v=46) val, adding the ability to run SQLite queries directly in the interface. This new version has a revised UI and that's heavily inspired by [LibSQL Studio](https://github.com/invisal/libsql-studio) by [invisal](https://github.com/invisal). This is now more an SPA, with tables, queries and results showing up on the same page.
4
5
6
7## Install
11 let html = `<h1>${valTownInspo.title}</h1>
12 <p>${valTownInspo.description}</p>
13 <a href="https://val.town/${valTownInspo.val}"><img src="${valTownInspo.image}" style="max-width:576px"/></a>
14 <p><a href="https://www.val.town/settings/intervals">Unsubscribe here</a></p>`;
15