{"version":3,"file":"get-upload-session.mjs","names":[],"sources":["../../../src/services/media/get-upload-session.ts"],"sourcesContent":["import type { UploadSessionStateResponse } from \"@lucidcms/types\";\nimport { 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 getUploadSession: ServiceFn<\n\t[\n\t\t{\n\t\t\tsessionId: string;\n\t\t},\n\t],\n\tUploadSessionStateResponse\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: [\n\t\t\t\"session_id\",\n\t\t\t\"key\",\n\t\t\t\"adapter_key\",\n\t\t\t\"adapter_upload_id\",\n\t\t\t\"part_size\",\n\t\t\t\"expires_at\",\n\t\t\t\"status\",\n\t\t],\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: undefined,\n\t\t\tdata: {\n\t\t\t\tcanResume: false,\n\t\t\t\tsessionId: sessionRes.data.session_id,\n\t\t\t\treason: \"adapter_changed\",\n\t\t\t},\n\t\t};\n\t}\n\tif (!hasResumableUploadSessions(context.media)) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: {\n\t\t\t\tcanResume: false,\n\t\t\t\tsessionId: sessionRes.data.session_id,\n\t\t\t\treason: \"adapter_not_resumable\",\n\t\t\t},\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\tif (!sessionRes.data.part_size) {\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.missing.part.size\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst partsRes = await context.media.listUploadParts(context, {\n\t\tkey: sessionRes.data.key,\n\t\tuploadId: sessionRes.data.adapter_upload_id,\n\t\ttenant: resolveMediaKeyTenant(context.config, sessionRes.data.key),\n\t});\n\tif (partsRes.error) return partsRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tcanResume: true,\n\t\t\tkey: sessionRes.data.key,\n\t\t\tsessionId: sessionRes.data.session_id,\n\t\t\tpartSize: sessionRes.data.part_size,\n\t\t\texpiresAt: new Date(\n\t\t\t\tsessionRes.data.expires_at as string | Date,\n\t\t\t).toISOString(),\n\t\t\tuploadedParts: partsRes.data.uploadedParts,\n\t\t},\n\t};\n};\n\nexport default getUploadSession;\n"],"mappings":"+UAQA,MAAM,EAOF,MAAO,EAAS,IAAS,CAK5B,IAAM,EAAa,MAAM,IAJO,EAC/B,EAAQ,GAAG,OACX,EAAQ,OAAO,EAE2B,CAAC,CAAC,aAAa,CACzD,OAAQ,CACP,aACA,MACA,cACA,oBACA,YACA,aACA,QACD,EACA,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,IAAA,GACP,KAAM,CACL,UAAW,GACX,UAAW,EAAW,KAAK,WAC3B,OAAQ,iBACT,CACD,EAED,GAAI,CAAC,EAA2B,EAAQ,KAAK,EAC5C,MAAO,CACN,MAAO,IAAA,GACP,KAAM,CACL,UAAW,GACX,UAAW,EAAW,KAAK,WAC3B,OAAQ,uBACT,CACD,EAED,GAAI,CAAC,EAAW,KAAK,kBACpB,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EACR,6DACD,CACD,EACA,KAAM,IAAA,EACP,EAED,GAAI,CAAC,EAAW,KAAK,UACpB,MAAO,CACN,MAAO,CACN,KAAM,QACN,OAAQ,IACR,QAAS,EAAK,qDAAqD,CACpE,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAW,MAAM,EAAQ,MAAM,gBAAgB,EAAS,CAC7D,IAAK,EAAW,KAAK,IACrB,SAAU,EAAW,KAAK,kBAC1B,OAAQ,EAAsB,EAAQ,OAAQ,EAAW,KAAK,GAAG,CAClE,CAAC,EAGD,OAFI,EAAS,MAAc,EAEpB,CACN,MAAO,IAAA,GACP,KAAM,CACL,UAAW,GACX,IAAK,EAAW,KAAK,IACrB,UAAW,EAAW,KAAK,WAC3B,SAAU,EAAW,KAAK,UAC1B,UAAW,IAAI,KACd,EAAW,KAAK,UACjB,CAAC,CAAC,YAAY,EACd,cAAe,EAAS,KAAK,aAC9B,CACD,CACD"}