Val Town Code SearchReturn to Val Town

API Access

You can access search results via JSON API by adding format=json to your query:

https://codesearch.val.run/%22mailto:kurt@sachersolutions.ca/%22data:image//%22https:/unpkg.com/react@18/umd/react.development.js/%22?q=function&page=1&format=json

For typeahead suggestions, use the /typeahead endpoint:

https://codesearch.val.run/typeahead?q=function

Returns an array of strings in format "username" or "username/projectName"

Found 40686 results for "function"(1532ms)

untitled-1522api.ts3 matches

@jessicaocean•Updated 36 mins ago
14 generateConversationTitle,
15 getConversationMessages,
16 // Participant functions
17 getConversationParticipants,
18 isUserParticipant,
21 addParticipant,
22 ensureUserIsParticipant,
23 // Invite functions
24 createInvite,
25 getInviteByToken,
415 }, 30000); // Ping every 30 seconds
416
417 // Store cleanup function
418 (controller as any).cleanup = () => {
419 clearInterval(pingInterval);

untitled-1522queries.ts23 matches

@jessicaocean•Updated 37 mins ago
4
5// User operations
6export async function findOrCreateUser(email: string): Promise<User> {
7 // Try to find existing user
8 const { rows } = await sqlite.execute(
25
26// Conversation operations
27export async function getUserConversations(userId: number): Promise<Conversation[]> {
28 // Use the new participant-based query but return simple Conversation objects for backward compatibility
29 const conversations = await getUserConversationsWithParticipants(userId);
31}
32
33export async function createConversation(userId: number, title: string): Promise<Conversation> {
34 const result = await sqlite.execute(
35 `INSERT INTO ${CONVERSATIONS_TABLE} (user_id, title) VALUES (?, ?) RETURNING *`,
45}
46
47export async function updateConversationTimestamp(conversationId: number): Promise<void> {
48 await sqlite.execute(
49 `UPDATE ${CONVERSATIONS_TABLE} SET updated_at = CURRENT_TIMESTAMP WHERE id = ?`,
52}
53
54export async function deleteConversation(conversationId: number, userId: number): Promise<boolean> {
55 // Check if user is admin
56 const isAdmin = await isUserAdmin(conversationId, userId);
87
88// Message operations
89export async function getConversationMessages(conversationId: number): Promise<Message[]> {
90 const { rows } = await sqlite.execute(
91 `SELECT * FROM ${MESSAGES_TABLE} WHERE conversation_id = ? ORDER BY timestamp ASC`,
96}
97
98export async function addMessage(conversationId: number, role: 'user' | 'assistant', content: string): Promise<Message> {
99 const result = await sqlite.execute(
100 `INSERT INTO ${MESSAGES_TABLE} (conversation_id, role, content) VALUES (?, ?, ?) RETURNING *`,
105}
106
107export async function getConversationWithMessages(conversationId: number, userId: number): Promise<ConversationWithMessages | null> {
108 // Check if user is participant
109 const isParticipant = await isUserParticipant(conversationId, userId);
131}
132
133// Helper function to generate conversation title from first message
134export function generateConversationTitle(firstMessage: string): string {
135 // Take first 50 characters and add ellipsis if longer
136 const title = firstMessage.trim();
139
140// Participant operations
141export async function addParticipant(conversationId: number, userId: number, role: 'admin' | 'participant'): Promise<ConversationParticipant> {
142 const result = await sqlite.execute(
143 `INSERT INTO ${PARTICIPANTS_TABLE} (conversation_id, user_id, role) VALUES (?, ?, ?) RETURNING *`,
148}
149
150export async function getConversationParticipants(conversationId: number): Promise<ConversationParticipant[]> {
151 const { rows } = await sqlite.execute(`
152 SELECT p.*, u.email as user_email
160}
161
162export async function isUserParticipant(conversationId: number, userId: number): Promise<boolean> {
163 const { rows } = await sqlite.execute(
164 `SELECT 1 FROM ${PARTICIPANTS_TABLE} WHERE conversation_id = ? AND user_id = ?`,
169}
170
171export async function isUserAdmin(conversationId: number, userId: number): Promise<boolean> {
172 const { rows } = await sqlite.execute(
173 `SELECT 1 FROM ${PARTICIPANTS_TABLE} WHERE conversation_id = ? AND user_id = ? AND role = 'admin'`,
178}
179
180export async function removeParticipant(conversationId: number, userId: number): Promise<boolean> {
181 const result = await sqlite.execute(
182 `DELETE FROM ${PARTICIPANTS_TABLE} WHERE conversation_id = ? AND user_id = ?`,
187}
188
189export async function getUserConversationsWithParticipants(userId: number): Promise<(Conversation & { participant_count: number, is_group: boolean })[]> {
190 const { rows } = await sqlite.execute(`
191 SELECT c.*,
202}
203
204// Migration function to fix existing conversations without participants
205export async function ensureUserIsParticipant(conversationId: number, userId: number): Promise<void> {
206 // Check if user is already a participant
207 const isParticipant = await isUserParticipant(conversationId, userId);
222
223// Invite operations
224export async function createInvite(conversationId: number, invitedEmail: string, invitedBy: number): Promise<ConversationInvite> {
225 // Generate unique token
226 const token = crypto.randomUUID();
238}
239
240export async function getInviteByToken(token: string): Promise<(ConversationInvite & { conversation_title: string, invited_by_email: string }) | null> {
241 const { rows } = await sqlite.execute(`
242 SELECT i.*, c.title as conversation_title, u.email as invited_by_email
250}
251
252export async function deleteInvite(token: string): Promise<boolean> {
253 const result = await sqlite.execute(
254 `DELETE FROM ${INVITES_TABLE} WHERE invite_token = ?`,
259}
260
261export async function isEmailAlreadyInvited(conversationId: number, email: string): Promise<boolean> {
262 const { rows } = await sqlite.execute(`
263 SELECT 1 FROM ${INVITES_TABLE}
268}
269
270export async function isEmailAlreadyParticipant(conversationId: number, email: string): Promise<boolean> {
271 const { rows } = await sqlite.execute(`
272 SELECT 1 FROM ${PARTICIPANTS_TABLE} p

untitled-1522README.md3 matches

@jessicaocean•Updated 40 mins ago
1# Backend
2
3Hono-based API server with LastLogin authentication, SQLite database, and group chat functionality.
4
5## Structure
6
7- `index.ts` - Main HTTP handler with LastLogin wrapper
8- `database/` - Database migrations and query functions
9- `routes/` - API route handlers
10
50- **Conversation history storage** with full message history
51- **ChatGPT integration** via OpenAI API
52- **Group chat functionality** with role-based permissions
53- **Email invitations** with secure tokens
54- **Real-time updates** via Server-Sent Events

untitled-1522README.md2 matches

@jessicaocean•Updated 40 mins ago
1# ChatGPT Conversation App
2
3A full-stack chat application with Google authentication, conversation storage, and **group chat functionality**.
4
5## Features
15## Group Chat Features
16
17### 🎯 Core Functionality
18- **Invite by Email** - Admins can invite users via email
19- **Role-based Access** - Admin vs Participant permissions

untitled-1522App.tsx1 match

@jessicaocean•Updated 41 mins ago
15}
16
17export default function App({ initialData }: AppProps) {
18 const [conversations, setConversations] = useState<ConversationWithParticipants[]>([]);
19 const [currentConversation, setCurrentConversation] = useState<ConversationWithMessages | null>(null);

untitled-1522ChatInterface.tsx1 match

@jessicaocean•Updated 42 mins ago
15}
16
17export default function ChatInterface({
18 conversation,
19 onSendMessage,

untitled-1522ConversationList.tsx1 match

@jessicaocean•Updated 42 mins ago
12}
13
14export default function ConversationList({
15 conversations,
16 currentConversationId,

untitled-1522ParticipantsList.tsx1 match

@jessicaocean•Updated 43 mins ago
10}
11
12export default function ParticipantsList({
13 conversationId,
14 currentUserEmail,

untitled-1522InvitePage.tsx1 match

@jessicaocean•Updated 43 mins ago
11}
12
13export default function InvitePage({ token, isAuthenticated, userEmail, onInviteAccepted }: InvitePageProps) {
14 const [inviteDetails, setInviteDetails] = useState<InviteDetails | null>(null);
15 const [isLoading, setIsLoading] = useState(true);

untitled-1522InviteModal.tsx1 match

@jessicaocean•Updated 43 mins ago
11}
12
13export default function InviteModal({
14 isOpen,
15 onClose,

ratelimit4 file matches

@unkey•Updated 1 month ago
Rate limit your serverless functions

discordWebhook2 file matches

@stevekrouse•Updated 2 months ago
Helper function to send Discord messages
lost1991
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": "*",
webup
LangChain (https://langchain.com) Ambassador, KubeSphere (https://kubesphere.io) Ambassador, CNCF OpenFunction (https://openfunction.dev) TOC Member.