import type { SupabaseClient } from '@supabase/supabase-js'; import { createModuleAdapter } from './core/createAdapter'; import type { ModuleAdapter } from './core/types'; import type { Note, CreateNoteInput, UpdateNoteInput } from './types'; import * as api from './api'; /** * Create a notes adapter instance * * @param supabaseClient - Optional Supabase client for realtime subscriptions * * @example * ```ts * import { createClient } from '@supabase/supabase-js'; * import { createNotesAdapter, configureNotesApi } from '@micahgoodman/notes'; * * const supabase = createClient(url, key); * * configureNotesApi({ * apiBase: '/api', * supabaseClient: supabase, * supabaseAnonKey: key * }); * * const NoteAdapter = createNotesAdapter(supabase); * ``` */ export function createNotesAdapter(supabaseClient?: SupabaseClient): ModuleAdapter { return createModuleAdapter({ moduleType: 'note', api: { list: api.fetchNotes, listByContext: api.fetchNotesByContext, create: api.createNote, update: api.updateNote, remove: api.deleteNote, }, getTitle: (item) => item.text.substring(0, 50) + (item.text.length > 50 ? '...' : ''), supabaseClient, disassociate: api.disassociateNote, }); }