Support multiple content types or allow custom response handling
matejm opened this issue · 0 comments
Bug report
- I confirm this is a bug with Supabase, not with my own application.
- I confirm I have searched the Docs, GitHub Discussions, and Discord.
Describe the bug
Currently, @supabase/functions-js
package automatically handles JSON/text/multipart-form/blob parsing. However, this is done simply by checking if Content-Type
if one of three predefined options (see functions-js source code). In all other cases, response is converted to text.
Example
Supabase has defined following edge function:
// read-pdf-file
serve(async (req) => {
// read pdf file from S3 storage and return it as a response
const pdfFile: Blob = ...
return new Response(
pdfFile,
{
headers: {
// set correct content type
"Content-Type": "application/pdf",
},
},
);
});
When this function is invoked via Supabase client:
const { data } = await client.functions.invoke(f, { method: 'GET' });
// data is of type string, but should be Blob
As application/pdf
is not one of three predefined content types, response is converted to text (in this line).
I know it is impossible to handle all possible content types, but defaulting to text might not be the best idea. Maybe you could add something like customResponseParser
, which could be handled in a similar way to customFetch
option already provided.
Does this make sense or am I missing something?