{"version":3,"file":"get-upload-part-urls.mjs","names":[],"sources":["../../../src/services/media/get-upload-part-urls.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport { hasResumableUploadSessions } from \"../../libs/media/resumable-upload-sessions.js\";\nimport { MediaUploadSessionsRepository } from \"../../libs/repositories/index.js\";\nimport { resolveMediaKeyTenant } from \"../../utils/media/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\nimport checkMediaKeyAccess from \"./checks/check-media-key-access.js\";\n\nconst getUploadPartUrls: ServiceFn<\n\t[\n\t\t{\n\t\t\tsessionId: string;\n\t\t\tpartNumbers: number[];\n\t\t},\n\t],\n\t{\n\t\tparts: Array<{\n\t\t\tpartNumber: number;\n\t\t\turl: string;\n\t\t\theaders?: Record<string, string>;\n\t\t}>;\n\t}\n> = async (context, data) => {\n\tconst MediaUploadSessions = new MediaUploadSessionsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\tconst sessionRes = await MediaUploadSessions.selectSingle({\n\t\tselect: [\"key\", \"adapter_key\", \"adapter_upload_id\", \"expires_at\", \"status\"],\n\t\twhere: [\n\t\t\t{ key: \"session_id\", operator: \"=\", value: data.sessionId },\n\t\t\t{ key: \"status\", operator: \"=\", value: \"active\" },\n\t\t],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t\tdefaultError: {\n\t\t\t\tstatus: 404,\n\t\t\t},\n\t\t},\n\t});\n\tif (sessionRes.error) return sessionRes;\n\n\tconst keyAccessRes = await checkMediaKeyAccess(context, {\n\t\tkey: sessionRes.data.key,\n\t});\n\tif (keyAccessRes.error) return keyAccessRes;\n\n\tif (!context.media) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\tmessage: copy(\"server:core.media.adapters.not.enabled\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\tif (sessionRes.data.adapter_key !== context.media.key) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\tmessage: copy(\"server:core.media.upload.sessions.adapter.changed\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\tif (!hasResumableUploadSessions(context.media)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\tmessage: copy(\n\t\t\t\t\t\"server:core.media.upload.sessions.resumable.not.supported\",\n\t\t\t\t),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\tif (!sessionRes.data.adapter_upload_id) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\tmessage: copy(\n\t\t\t\t\t\"server:core.media.upload.sessions.missing.adapter.upload.id\",\n\t\t\t\t),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst urlsRes = await context.media.getUploadPartUrls(context, {\n\t\tkey: sessionRes.data.key,\n\t\tuploadId: sessionRes.data.adapter_upload_id,\n\t\tpartNumbers: data.partNumbers,\n\t\texpiresAt: new Date(\n\t\t\tsessionRes.data.expires_at as string | Date,\n\t\t).toISOString(),\n\t\ttenant: resolveMediaKeyTenant(context.config, sessionRes.data.key),\n\t});\n\tif (urlsRes.error) return urlsRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: urlsRes.data,\n\t};\n};\n\nexport default getUploadPartUrls;\n"],"mappings":"+UAOA,MAAM,EAcF,MAAO,EAAS,IAAS,CAK5B,IAAM,EAAa,MAAM,IAJO,EAC/B,EAAQ,GAAG,OACX,EAAQ,OAAO,EAE2B,CAAC,CAAC,aAAa,CACzD,OAAQ,CAAC,MAAO,cAAe,oBAAqB,aAAc,QAAQ,EAC1E,MAAO,CACN,CAAE,IAAK,aAAc,SAAU,IAAK,MAAO,EAAK,SAAU,EAC1D,CAAE,IAAK,SAAU,SAAU,IAAK,MAAO,QAAS,CACjD,EACA,WAAY,CACX,QAAS,GACT,aAAc,CACb,OAAQ,GACT,CACD,CACD,CAAC,EACD,GAAI,EAAW,MAAO,OAAO,EAE7B,IAAM,EAAe,MAAM,EAAoB,EAAS,CACvD,IAAK,EAAW,KAAK,GACtB,CAAC,EACD,GAAI,EAAa,MAAO,OAAO,EAE/B,GAAI,CAAC,EAAQ,MACZ,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EAAK,wCAAwC,CACvD,EACA,KAAM,IAAA,EACP,EAED,GAAI,EAAW,KAAK,cAAgB,EAAQ,MAAM,IACjD,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EAAK,mDAAmD,CAClE,EACA,KAAM,IAAA,EACP,EAED,GAAI,CAAC,EAA2B,EAAQ,KAAK,EAC5C,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EACR,2DACD,CACD,EACA,KAAM,IAAA,EACP,EAED,GAAI,CAAC,EAAW,KAAK,kBACpB,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EACR,6DACD,CACD,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAU,MAAM,EAAQ,MAAM,kBAAkB,EAAS,CAC9D,IAAK,EAAW,KAAK,IACrB,SAAU,EAAW,KAAK,kBAC1B,YAAa,EAAK,YAClB,UAAW,IAAI,KACd,EAAW,KAAK,UACjB,CAAC,CAAC,YAAY,EACd,OAAQ,EAAsB,EAAQ,OAAQ,EAAW,KAAK,GAAG,CAClE,CAAC,EAGD,OAFI,EAAQ,MAAc,EAEnB,CACN,MAAO,IAAA,GACP,KAAM,EAAQ,IACf,CACD"}