{"version":3,"file":"tusCleanupHandler.mjs","names":[],"sources":["../../src/endpoints/tusCleanupHandler.ts"],"sourcesContent":["import type { PayloadHandler } from 'payload'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\nimport { MediaCloudErrors } from '../types/errors'\nimport type { S3Store } from '../tus/stores/s3/s3Store'\n\ninterface GetTusCleanupHandlerArgs {\n  getS3Store: () => S3Store\n  collection: string\n}\n\nconst { logError } = useErrorHandler()\n\nexport function getTusCleanupHandler(\n  args: GetTusCleanupHandlerArgs\n): PayloadHandler {\n  const { getS3Store, collection } = args\n\n  return async (req) => {\n    try {\n      const data = await req.json?.()\n      const { filename } = data\n\n      if (!filename) {\n        return new Response('Missing filename', { status: 400 })\n      }\n\n      // Abort the multipart upload and delete S3 objects (.info, .part)\n      await getS3Store().remove(filename)\n\n      // Find and delete the Payload document\n      const payload = req.payload\n      const { docs } = await req.payload.find({\n        collection,\n        where: {\n          filename: {\n            equals: filename,\n          },\n        },\n        limit: 1,\n      })\n\n      if (docs?.length > 0) {\n        await payload.delete({\n          collection,\n          id: docs[0].id,\n        })\n      }\n\n      return new Response('Cleanup successful', { status: 200 })\n    } catch {\n      logError(MediaCloudErrors.TUS_CLEANUP_ERROR.message)\n      return new Response('Cleanup failed', { status: 500 })\n    }\n  }\n}\n"],"mappings":";;;;AAUA,MAAM,EAAE,aAAa,iBAAiB;AAEtC,SAAgB,qBACd,MACgB;CAChB,MAAM,EAAE,YAAY,eAAe;AAEnC,QAAO,OAAO,QAAQ;AACpB,MAAI;GAEF,MAAM,EAAE,aADK,MAAM,IAAI,QAAQ;AAG/B,OAAI,CAAC,SACH,QAAO,IAAI,SAAS,oBAAoB,EAAE,QAAQ,KAAK,CAAC;AAI1D,SAAM,YAAY,CAAC,OAAO,SAAS;GAGnC,MAAM,UAAU,IAAI;GACpB,MAAM,EAAE,SAAS,MAAM,IAAI,QAAQ,KAAK;IACtC;IACA,OAAO,EACL,UAAU,EACR,QAAQ,UACT,EACF;IACD,OAAO;IACR,CAAC;AAEF,OAAI,MAAM,SAAS,EACjB,OAAM,QAAQ,OAAO;IACnB;IACA,IAAI,KAAK,GAAG;IACb,CAAC;AAGJ,UAAO,IAAI,SAAS,sBAAsB,EAAE,QAAQ,KAAK,CAAC;UACpD;AACN,YAAS,iBAAiB,kBAAkB,QAAQ;AACpD,UAAO,IAAI,SAAS,kBAAkB,EAAE,QAAQ,KAAK,CAAC"}