MsgBoardqueries.ts2 matches
10await createTables();
1112export async function getMessages(limit = MESSAGE_LIMIT): Promise<Message[]> {
13const messages = await sqlite.execute(
14`SELECT * FROM ${tableName}
20}
2122export async function insertMessage(content: string) {
23await sqlite.execute(
24`INSERT INTO ${tableName} (content)
MsgBoardmigrations.ts1 match
3export const tableName = "reactHonoStarter_messages";
45export async function createTables() {
6await sqlite.batch([
7`CREATE TABLE IF NOT EXISTS ${tableName} (
MsgBoardMessageInput.tsx1 match
3import type { Message } from "../shared/types.ts";
45export function MessageInput({ onSubmit }: { onSubmit: () => void }) {
6const [message, setMessage] = React.useState("");
7
4import { MessageInput } from "./MessageInput.tsx";
56export function App(
7{ initialMessages = [], thisProjectURL }: { initialMessages?: Message[]; thisProjectURL?: string },
8) {
41}
4243function MessageList({ messages }: { messages: Message[] }) {
44const displayedMessages = messages.slice(0, MESSAGE_LIMIT);
45return (
50}
5152function MessageItem({ message }) {
53const formattedDate = new Date(message.timestamp).toLocaleString();
54
rss-subhttp_rss_sub.tsx3 matches
3const API_KEY = Deno.env.get("API_KEY");
45export default async function httpHandler(req: Request): Promise<Response> {
6if (!validateApiKey(req)) {
7return new Response("Unauthorized", { status: 401 });
72}
7374function validateApiKey(req: Request): boolean {
75const authHeader = req.headers.get("Authorization");
76return authHeader === `Bearer ${API_KEY}`;
77}
7879async function initializeDatabase() {
80await sqlite.execute(`create table if not exists feed_urls(
81id integer primary key autoincrement,
FarcasterSpacesanalytics.ts10 matches
3import { dbQuery } from './supabase.ts'
45export function handleAnalyticsEndpoints(app: Hono) {
6app.get('/analytics', async (c) => {
7// todo: load all data in parallel (postgress connection issue)
18}
1920function renderTextTable(data: any[], title: string, props: string[]) {
21const w: number = 78
22const header = (' ┌── ' + title + ' ───').padEnd(w - 1, '─') + '┐ '
34}
3536function queryHistoricalCountUsersOverPeriod() {
37return analyticsQuery(`
38select TO_CHAR(created_at, 'YYYY-MM-DD') as period, COUNT(distinct fid)
42order by period desc`)
43}
44function topOpenLocations() {
45return analyticsQuery(`
46select param, COUNT(*)
51limit 10`).then(miniappLocationDataTransformer)
52}
53function topScreens() {
54return analyticsQuery(`
55select param, COUNT(*)
61}
6263function miniappLocationDataTransformer(data: any) {
64return data.map((item: any) => {
65return {
70}
7172function getLocationText(param: string) {
73let locationText = ''
74if (param) {
87return locationText
88}
89function getClientFidText(clientFid: any) {
90if (!clientFid) return `[W] `
91if (clientFid == 9152) return `[W] `
94}
9596async function analyticsQuery(query: string, args: any[] = []) {
97const result = await dbQuery(query, args)
98return safeRows(result.rows)
99}
100101function safeRows(rows: any[]) {
102return rows.map((row) => {
103const newRow: Record<string, any> = {}
2import { useState } from "https://esm.sh/react@18.2.0";
34export function App() {
5const [clicked, setClicked] = useState(0);
6return (
mcp-servermain.ts13 matches
32};
3334function postFilter(post: Post) {
35return post.type == "post" || post.type == "page";
36}
3738function buildTagsIndex(tags: Array<Tag>) {
39return lunr(function() {
40this.ref("id");
41this.field("name");
50});
51}
52function search(input: string, index: lunr.Index, searchData: Record<string, Post>) {
53let results = index.search(input);
5455if ((results.length == 0) && (input.length > 2)) {
56let tokens = lunr.tokenizer(input).filter(function(token, i) {
57return token.str.length < 20;
58});
5960if (tokens.length > 0) {
61results = index.query(function(query) {
62query.term(tokens, {
63editDistance: Math.round(Math.sqrt(input.length / 2 - 1)),
90}
9192function searchTags(input: string, index: lunr.Index, tags: Array<Tag>) {
93let results = index.search(input);
9495if ((results.length == 0) && (input.length > 2)) {
96let tokens = lunr.tokenizer(input).filter(function(token, i) {
97return token.str.length < 20;
98});
99100if (tokens.length > 0) {
101results = index.query(function(query) {
102query.term(tokens, {
103editDistance: Math.round(Math.sqrt(input.length / 2 - 1)),
116});
117}
118function formatPage(page: Post) {
119return [
120`# [${page.title}](${page.url.startsWith("http") ? page.url : SITE_URL + page.url})`,
135}
136137function extractPostCategory(post: Post) {
138if (post.type == "page") {
139return "page";
160* Uses a cached instance if available
161*/
162async function setupMcpServer(): Promise<McpServer> {
163// Return cached instance if available
164if (mcpServerInstance) {
521522/**
523* Val.town handler function for HTTP requests
524* This will be exposed as a Val.town HTTP endpoint
525*/
ChatResourceViewer.tsx4 matches
33* - Supports fullscreen toggle
34* - Simple component state management
35* - Error handling with retry functionality
36*/
37export default function ResourceViewer({
38fileViewerResult,
39mcpClients = [],
247}, [uri, serverName, retryCount]); // Remove loadResource from dependencies to prevent reload loop
248249// Fullscreen functionality
250const enterFullscreen = () => {
251setIsFullscreen(true);
256};
257258// Retry functionality
259const handleRetry = useCallback(() => {
260setRetryCount(prev => prev + 1);
basic-html-starterscript.js1 match
14scene.add(butterfly);
1516renderer.setAnimationLoop(function animate(time) {
17renderer.render(scene, camera);
18butterfly.rotation.y += 0.01;