ContentFile() — supabase Function Reference
Architecture documentation for the ContentFile() function in content.tsx from the supabase codebase.
Entity Profile
Relationship Graph
Source Code
apps/studio/components/interfaces/Connect/content/nextjs/app/supabasejs/content.tsx lines 11–155
const ContentFile = ({ projectKeys }: ContentFileProps) => {
return (
<ConnectTabs>
<ConnectTabTriggers>
<ConnectTabTrigger value=".env.local" />
<ConnectTabTrigger value="page.tsx" />
<ConnectTabTrigger value="utils/supabase/server.ts" />
<ConnectTabTrigger value="utils/supabase/client.ts" />
<ConnectTabTrigger value="utils/supabase/middleware.ts" />
</ConnectTabTriggers>
<ConnectTabContent value=".env.local">
<SimpleCodeBlock className="bash" parentClassName="min-h-72">
{[
'',
`NEXT_PUBLIC_SUPABASE_URL=${projectKeys.apiUrl ?? 'your-project-url'}`,
projectKeys?.publishableKey
? `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=${projectKeys.publishableKey}`
: `NEXT_PUBLIC_SUPABASE_ANON_KEY=${projectKeys.anonKey ?? 'your-anon-key'}`,
'',
].join('\n')}
</SimpleCodeBlock>
</ConnectTabContent>
<ConnectTabContent value="page.tsx">
<SimpleCodeBlock className="tsx" parentClassName="min-h-72">
{`
import { createClient } from '@/utils/supabase/server'
import { cookies } from 'next/headers'
export default async function Page() {
const cookieStore = await cookies()
const supabase = createClient(cookieStore)
const { data: todos } = await supabase.from('todos').select()
return (
<ul>
{todos?.map((todo) => (
<li>{todo}</li>
))}
</ul>
)
}
`}
</SimpleCodeBlock>
</ConnectTabContent>
<ConnectTabContent value="utils/supabase/server.ts">
<SimpleCodeBlock className="ts" parentClassName="min-h-72">
{`
import { createServerClient, type CookieOptions } from "@supabase/ssr";
import { cookies } from "next/headers";
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.${projectKeys?.publishableKey ? 'NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY' : 'NEXT_PUBLIC_SUPABASE_ANON_KEY'};
export const createClient = (cookieStore: ReturnType<typeof cookies>) => {
return createServerClient(
supabaseUrl!,
supabaseKey!,
{
cookies: {
getAll() {
return cookieStore.getAll()
},
setAll(cookiesToSet) {
try {
cookiesToSet.forEach(({ name, value, options }) => cookieStore.set(name, value, options))
} catch {
// The \`setAll\` method was called from a Server Component.
// This can be ignored if you have middleware refreshing
// user sessions.
}
},
},
},
);
};
`}
</SimpleCodeBlock>
</ConnectTabContent>
<ConnectTabContent value="utils/supabase/client.ts">
<SimpleCodeBlock className="ts" parentClassName="min-h-72">
{`
import { createBrowserClient } from "@supabase/ssr";
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.${projectKeys?.publishableKey ? 'NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY' : 'NEXT_PUBLIC_SUPABASE_ANON_KEY'};
export const createClient = () =>
createBrowserClient(
supabaseUrl!,
supabaseKey!,
);
`}
</SimpleCodeBlock>
</ConnectTabContent>
<ConnectTabContent value="utils/supabase/middleware.ts">
<SimpleCodeBlock className="ts" parentClassName="min-h-72">
{`
import { createServerClient, type CookieOptions } from "@supabase/ssr";
import { type NextRequest, NextResponse } from "next/server";
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.${projectKeys?.publishableKey ? 'NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY' : 'NEXT_PUBLIC_SUPABASE_ANON_KEY'};
export const createClient = (request: NextRequest) => {
// Create an unmodified response
let supabaseResponse = NextResponse.next({
request: {
headers: request.headers,
},
});
const supabase = createServerClient(
supabaseUrl!,
supabaseKey!,
{
cookies: {
getAll() {
return request.cookies.getAll()
},
setAll(cookiesToSet) {
cookiesToSet.forEach(({ name, value, options }) => request.cookies.set(name, value))
supabaseResponse = NextResponse.next({
request,
})
cookiesToSet.forEach(({ name, value, options }) =>
supabaseResponse.cookies.set(name, value, options)
)
},
},
},
);
return supabaseResponse
};
`}
</SimpleCodeBlock>
</ConnectTabContent>
</ConnectTabs>
)
}
Domain
Subdomains
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free