SYMBOL INDEX (41 symbols across 23 files) FILE: app/actions.ts function saveNote (line 9) | async function saveNote( function deleteNote (line 36) | async function deleteNote(noteId: string) { FILE: app/layout.tsx type Note (line 24) | type Note = { function RootLayout (line 32) | async function RootLayout({ FILE: app/note/[id]/loading.tsx function NoteSkeleton (line 1) | function NoteSkeleton() { FILE: app/note/[id]/page.tsx function Page (line 10) | async function Page(props: { params: Promise<{ id: string }> }) { FILE: app/note/edit/[id]/page.tsx type Note (line 12) | type Note = { function EditPage (line 17) | async function EditPage(props: { params: Promise<{ id: string }> }) { FILE: app/note/edit/loading.tsx function EditSkeleton (line 1) | function EditSkeleton() { FILE: app/note/edit/page.tsx function EditPage (line 9) | async function EditPage() { FILE: app/page.tsx function Page (line 1) | async function Page() { FILE: components/auth-button.tsx function AuthButton (line 5) | async function AuthButton({ FILE: components/note-editor.tsx function NoteEditor (line 8) | function NoteEditor({ FILE: components/note-list-skeleton.tsx function NoteListSkeleton (line 1) | function NoteListSkeleton() { FILE: components/note-list.tsx function NoteList (line 9) | function NoteList({ notes, searchText }) { function excerpts (line 35) | function excerpts(html, length) { function SidebarNote (line 50) | function SidebarNote({ note }) { FILE: components/note-preview.tsx function NotePreview (line 18) | function NotePreview({ children }) { FILE: components/note-ui.tsx function NoteUI (line 8) | async function NoteUI({ note, isEditing }) { FILE: components/search.tsx function SearchField (line 6) | function SearchField() { function Spinner (line 42) | function Spinner({ active = true }) { FILE: components/sidebar-note.tsx function SidebarNote (line 6) | function SidebarNote({ id, title, children, expandedChildren }) { FILE: components/sidebar.tsx type Note (line 10) | type Note = { function Sidebar (line 18) | function Sidebar({ function Notes (line 56) | function Notes({ notes }: { notes: Note[] }) { FILE: libs/session.ts function encode (line 10) | function encode(value) { function decode (line 14) | function decode(value) { function base64ToArrayBuffer (line 18) | function base64ToArrayBuffer(base64) { function arrayBufferToBase64 (line 28) | function arrayBufferToBase64(buffer) { function createEncrypt (line 36) | function createEncrypt() { function createDecrypt (line 56) | function createDecrypt() { function getSession (line 73) | function getSession(userCookie) { function getUser (line 84) | function getUser(userCookie) { FILE: middleware.ts function matchPathname (line 9) | function matchPathname(url, pathname) { function middleware (line 13) | async function middleware(req: NextRequest) { FILE: middleware/api.ts function middleware (line 5) | function middleware(req: NextRequest) { FILE: middleware/auth.ts constant CLIENT_ID (line 5) | const CLIENT_ID = process.env.OAUTH_CLIENT_KEY constant CLIENT_SECRET (line 6) | const CLIENT_SECRET = process.env.OAUTH_CLIENT_SECRET function middleware (line 8) | async function middleware(req: NextRequest) { FILE: middleware/edit.ts function middleware (line 5) | async function middleware(req: NextRequest) { FILE: middleware/logout.ts function middleware (line 5) | async function middleware(req: NextRequest) {