{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4bcc-7c33-9597-3fe9a1c886b0","file":"B5c56JuN.mjs","mappings":"qTAWA,eAAsBA,EACrBC,EACAC,EACAC,EACsF,CACtF,MAAMC,EAAM,MAAM,MAAM,8BAA+B,CACtD,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAA,EAC3B,KAAM,KAAK,UAAU,CAAE,MAAAD,EAAO,KAAMD,EAAK,KAAM,CAAA,CAC/C,EACKG,EAAQ,MAAMD,EAAI,KAAA,EAAO,MAAM,KAAO,CAAA,EAAG,EAK/C,GAAI,CAACA,EAAI,IAAM,CAACC,EAAK,MAAQ,CAACA,EAAK,MAClC,MAAO,CAAE,KAAM,KAAM,MAAO,CAAE,QAASA,EAAK,OAAS,cAAcD,EAAI,MAAM,EAAA,CAAG,EAEjF,KAAM,CAAE,MAAAE,GAAU,MAAML,EAAS,QAC/B,KAAK,aAAa,EAClB,kBAAkBI,EAAK,KAAMA,EAAK,MAAOH,EAAM,CAAE,YAAa,aAAc,OAAQ,GAAO,EAC7F,OAAII,EAAc,CAAE,KAAM,KAAM,MAAAA,CAAA,EACzB,CAAE,KAAMD,EAAK,KAAM,MAAO,IAAA,CAClC","names":["uploadSubmissionPhoto","supabase","file","scope","res","sign","error"],"sources":["../../../../../../src/lib/submission-upload.ts"],"sourcesContent":["import type { SupabaseClient } from '@supabase/supabase-js';\n\nexport type SubmissionUploadScope = 'rate' | 'duel';\n\n/** Upload a rate / duel photo (already compressed to a jpeg) to the\n *  `submissions` bucket through a signed URL from /api/submissions/upload-url.\n *  The server picks the path; this returns it for the form action to send back.\n *\n *  Resolves `{ error }` when the server or Storage refuses the upload, and\n *  throws only for what storage-js re-throws (a bug on our side) or a network\n *  failure, so callers keep their \"rejected vs threw\" reporting. */\nexport async function uploadSubmissionPhoto(\n\tsupabase: SupabaseClient,\n\tfile: Blob,\n\tscope: SubmissionUploadScope\n): Promise<{ path: string; error: null } | { path: null; error: { message: string } }> {\n\tconst res = await fetch('/api/submissions/upload-url', {\n\t\tmethod: 'POST',\n\t\theaders: { 'content-type': 'application/json' },\n\t\tbody: JSON.stringify({ scope, size: file.size })\n\t});\n\tconst sign = (await res.json().catch(() => ({}))) as {\n\t\tpath?: string;\n\t\ttoken?: string;\n\t\terror?: string;\n\t};\n\tif (!res.ok || !sign.path || !sign.token) {\n\t\treturn { path: null, error: { message: sign.error || `upload-url ${res.status}` } };\n\t}\n\tconst { error } = await supabase.storage\n\t\t.from('submissions')\n\t\t.uploadToSignedUrl(sign.path, sign.token, file, { contentType: 'image/jpeg', upsert: false });\n\tif (error) return { path: null, error };\n\treturn { path: sign.path, error: null };\n}\n"],"version":3}