SYMBOL INDEX (88 symbols across 46 files) FILE: next.config.mjs method redirects (line 25) | async redirects() { FILE: src/blog/2022/01/mochip/mochip.tsx class Mochip (line 10) | class Mochip extends Post { method render (line 27) | public render() { FILE: src/blog/2022/01/serverless-discord-oauth/serverless-discord-oauth.tsx class ServerlessDiscordOAuth (line 7) | class ServerlessDiscordOAuth extends Post { method render (line 15) | public render() { FILE: src/blog/2022/01/zero-kb-blog/zero-kb-blog.tsx class ZeroKbBlog (line 6) | class ZeroKbBlog extends Post { method render (line 14) | public render() { FILE: src/blog/2022/03/open-source/open-source.tsx class OpenSource (line 3) | class OpenSource extends Post { method render (line 11) | public render() { FILE: src/blog/2022/08/strict-tsconfig/strict-tsconfig.tsx class StrictTSConfig (line 5) | class StrictTSConfig extends Post { method render (line 13) | public render() { FILE: src/blog/2023/wtf-esm/wtf-esm.tsx class WTFESM (line 7) | class WTFESM extends Post { method render (line 17) | public render() { FILE: src/blog/2025/ambient-declarations/ambient-declarations.tsx class AmbientDeclarations (line 6) | class AmbientDeclarations extends Post { method render (line 14) | public render() { FILE: src/blog/Post.ts method toJSON (line 11) | public toJSON(): Post.PartialJSON { method toTinyJSON (line 22) | public toTinyJSON(): Post.TinyJSON { type PartialJSON (line 35) | interface PartialJSON { type TinyJSON (line 44) | interface TinyJSON { FILE: src/blog/posts.ts function sortPosts (line 19) | function sortPosts(p: typeof posts) { FILE: src/components/blog-footer.tsx function FooterLink (line 26) | function FooterLink({href, children}: {href: string; children: React.Rea... FILE: src/components/blog-post-list.tsx function BlogPostList (line 11) | function BlogPostList() { FILE: src/components/external-link.tsx function ExternalLink (line 3) | function ExternalLink(props: ComponentProps<'a'>) { FILE: src/components/message.tsx function message (line 7) | function message( type MessageOrNode (line 31) | type MessageOrNode = type MessageGroupProps (line 43) | interface MessageGroupProps { function MessageBubble (line 57) | function MessageBubble({ function MessageGroupContainer (line 87) | function MessageGroupContainer({children}: {children: ReactNode}) { function MessageGroup (line 111) | function MessageGroup({messages}: MessageGroupProps) { FILE: src/components/note.tsx type NoteProps (line 5) | type NoteProps = { function Note (line 18) | function Note(props: NoteProps) { FILE: src/components/stats.tsx function Stats (line 4) | function Stats() { FILE: src/components/syntax-highligher.tsx function Shell (line 12) | function Shell({ function Filename (line 45) | function Filename({filename}: {readonly filename: string}) { function Highlighter (line 69) | function Highlighter({ FILE: src/hooks/use-did-initial-page-animations.ts function useShouldDoInitialPageAnimations (line 9) | function useShouldDoInitialPageAnimations() { FILE: src/hooks/use-first-ever-load.ts function useFirstEverLoad (line 4) | function useFirstEverLoad() { function useVisitCounts (line 14) | function useVisitCounts() { FILE: src/hooks/use-isomorphic-value.ts function useIsomorphicValue (line 4) | function useIsomorphicValue(client: () => T, server: () => T) { FILE: src/hooks/use-lerp-transform.ts function useLerpTransform (line 4) | function useLerpTransform(value: MotionValue) { FILE: src/pages/404.tsx function Page404 (line 4) | function Page404() { FILE: src/pages/[slug].tsx type Props (line 13) | interface Props { function PostPage (line 17) | function PostPage({slug}: Props) { FILE: src/pages/_app.tsx function App (line 26) | function App({Component, pageProps}: AppProps) { FILE: src/pages/_document.tsx class WebsiteDocument (line 3) | class WebsiteDocument extends Document { method render (line 4) | override render() { FILE: src/pages/_error.tsx function ErrorPage (line 1) | function ErrorPage() { FILE: src/pages/api/contact.ts method POST (line 15) | async POST({req, ctx}) { FILE: src/pages/api/oauth.ts constant OAUTH_URL (line 21) | const OAUTH_URL = pathcat('https://discord.com/api/oauth2/authorize', { function exchangeCode (line 32) | async function exchangeCode(code: string) { function getCookieHeader (line 58) | function getCookieHeader(token: string) { FILE: src/pages/api/oauth/[platform]/callback.ts method GET (line 11) | async GET({req, res}) { FILE: src/pages/api/oauth/[platform]/redirect.ts method GET (line 14) | async GET({req}) { FILE: src/pages/api/og.tsx function loadGoogleFont (line 9) | async function loadGoogleFont(font: string) { function handler (line 27) | async function handler(req: NextApiRequest, res: NextApiResponse) { FILE: src/pages/blog.tsx function Blog (line 9) | function Blog() { function BlogLink (line 72) | function BlogLink(props: {readonly href: string; readonly children: Reac... FILE: src/pages/demos/serverless-discord-oauth.tsx type Props (line 7) | interface Props { function ServerlessDiscordOAuthDemoPage (line 15) | function ServerlessDiscordOAuthDemoPage({user}: Props) { FILE: src/pages/experiments/index.tsx function ExperimentsList (line 3) | function ExperimentsList() { FILE: src/pages/experiments/morphing-shapes.tsx constant THEME_COLORS (line 5) | const THEME_COLORS = ['#fc9494', '#94e4fc', '#bffc94', '#ffffff']; constant IS_BROWSER (line 8) | const IS_BROWSER = typeof window !== 'undefined'; constant LIMITS (line 10) | const LIMITS = { type BoxState (line 18) | interface BoxState { function generateNewState (line 28) | function generateNewState(oldState: Partial): BoxState { function Box (line 45) | function Box() { function Boxes (line 82) | function Boxes({count}: {count: number}) { function MorphingShapes (line 88) | function MorphingShapes() { FILE: src/pages/experiments/rekordbox-history-parser.tsx function parseTitleAndArtist (line 3) | function parseTitleAndArtist(title: string, artist: string) { function RekordboxHistoryParser (line 21) | function RekordboxHistoryParser() { FILE: src/pages/index.tsx type Props (line 17) | interface Props { function Home (line 46) | function Home(props: Props) { FILE: src/pages/monzo/dashboard/index.tsx type Props (line 8) | type Props = function MonzoDashboard (line 31) | function MonzoDashboard(props: Props) { FILE: src/pages/stats.tsx function StatsPage (line 7) | function StatsPage() { FILE: src/server/api.ts method onError (line 7) | async onError(_req, _res, error) { method getContext (line 16) | async getContext() { FILE: src/server/apple-maps.ts function getMapURL (line 6) | function getMapURL(center: string, theme: 'light' | 'dark') { FILE: src/server/sessions.ts type SessionData (line 6) | interface SessionData { function createSessionJWT (line 19) | function createSessionJWT(data: SessionData) { function parseSessionJWT (line 25) | function parseSessionJWT(token: string): SessionData | null { function getCookieHeader (line 39) | function getCookieHeader(token: string) { FILE: src/utils/discord.ts function codeblock (line 1) | function codeblock(code: string, lang = 'ts') { FILE: src/utils/lists.ts constant SUPPORTS_INTL (line 3) | const SUPPORTS_INTL = typeof Intl !== 'undefined'; function formatList (line 5) | function formatList(list: string[], type: Intl.ListFormatType): string { FILE: src/utils/timers.ts function debounce (line 3) | function debounce(func: (...args: A) => void, ... FILE: src/utils/types.ts type NativeTimeout (line 1) | type NativeTimeout = ReturnType; type DistributedOmit (line 2) | type DistributedOmit = T extends T ? Omit : ...