Files
supabase/apps/studio/components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionDetails.constants.ts
Saxon FletcherandJoshen Lim 904d8e4482 Improve single edge function layout (#33725)
* page components

* page component changes

* settings but broken saving

* rvert

* use sheet for provider

* styling

* remove things

* Some refactoring and fixing, added JSDocs to layouts

* Smol refactor

* Fix

* Update JSDocs

* updated scaffolding

* update edge functions layout

* remove params

* single function layout

* invocation cleanup

* remove vars

* Clean up

* Spelling

* Clean up FormFieldWrappers

* One last clean up

* fix merge errors

* fix merge errors

* rmeove import

* Address comments

* Remove unnecessary prop

* Remove settings/functions and add redirects in next config

* fix empty

* Fix key prop issue and fix selected state in layout for single edge function

* Clean up edge function details

* Use zodResolver

* Refactor file name

* Remove unnecessary fragment

* Small refactors

* Refactor deleting edge function to use ConfirmationModal

* edge details fixes

* Small adjustment to paddings

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-02-27 17:02:05 +08:00

69 lines
1.7 KiB
TypeScript

interface InvocationTab {
id: string
label: string
language: 'bash' | 'js' | 'ts' | 'dart' | 'python'
hideLineNumbers?: boolean
code: (functionUrl: string, functionName: string, apiKey: string) => string
}
export const INVOCATION_TABS: InvocationTab[] = [
{
id: 'curl',
label: 'cURL',
language: 'bash',
code: (functionUrl, _, apiKey) => `curl -L -X POST '${functionUrl}' \\
-H 'Authorization: Bearer ${apiKey}' \\
-H 'Content-Type: application/json' \\
--data '{"name":"Functions"}'`,
},
{
id: 'supabase-js',
label: 'JavaScript',
language: 'js',
hideLineNumbers: true,
code: (_, functionName) => `import { createClient } from '@supabase/supabase-js'
const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY)
const { data, error } = await supabase.functions.invoke('${functionName}', {
body: { name: 'Functions' },
})`,
},
{
id: 'swift',
label: 'Swift',
language: 'ts',
hideLineNumbers: true,
code: (_, functionName) => `struct Response: Decodable {
// Expected response definition
}
let response: Response = try await supabase.functions
.invoke(
"${functionName}",
options: FunctionInvokeOptions(
body: ["name": "Functions"]
)
)`,
},
{
id: 'flutter',
label: 'Flutter',
language: 'dart',
hideLineNumbers: true,
code: (
_,
functionName
) => `final res = await supabase.functions.invoke('${functionName}', body: {'name': 'Functions'});
final data = res.data;`,
},
{
id: 'python',
label: 'Python',
language: 'python',
hideLineNumbers: true,
code: (_, functionName) => `response = supabase.functions.invoke(
"${functionName}",
invoke_options={"body": {"name": "Functions"}}
)`,
},
]