{"version":3,"file":"file.mjs","sources":["../../../server/src/services/file.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport { async } from '@strapi/utils';\n\nimport { FOLDER_MODEL_UID, FILE_MODEL_UID } from '../constants';\nimport { getService } from '../utils';\n\nimport { Config, type File } from '../types';\n\nconst getFolderPath = async (folderId?: number | null) => {\n  if (!folderId) return '/';\n\n  const parentFolder = await strapi.db.query(FOLDER_MODEL_UID).findOne({ where: { id: folderId } });\n\n  return parentFolder.path;\n};\n\nconst deleteByIds = async (ids: number[] = []) => {\n  const filesToDelete = await strapi.db\n    .query(FILE_MODEL_UID)\n    .findMany({ where: { id: { $in: ids } } });\n\n  await Promise.all(filesToDelete.map((file: File) => getService('upload').remove(file)));\n\n  return filesToDelete;\n};\n\nconst signFileUrls = async (file: File) => {\n  const { provider } = strapi.plugins.upload;\n  const { provider: providerConfig } = strapi.config.get<Config>('plugin::upload');\n  const isPrivate = await provider.isPrivate();\n  file.isUrlSigned = false;\n\n  // Check file provider and if provider is private\n  if (file.provider !== providerConfig || !isPrivate) {\n    return file;\n  }\n\n  const signUrl = async (file: File) => {\n    const signedUrl = await provider.getSignedUrl(file);\n    file.url = signedUrl.url;\n    file.isUrlSigned = true;\n  };\n\n  const signedFile = cloneDeep(file);\n\n  // Sign each file format\n  await signUrl(signedFile);\n  if (file.formats) {\n    await async.map(Object.values(signedFile.formats ?? {}), signUrl);\n  }\n\n  return signedFile;\n};\n\nexport default { getFolderPath, deleteByIds, signFileUrls };\n"],"names":["getFolderPath","folderId","parentFolder","strapi","db","query","FOLDER_MODEL_UID","findOne","where","id","path","deleteByIds","ids","filesToDelete","FILE_MODEL_UID","findMany","$in","Promise","all","map","file","getService","remove","signFileUrls","provider","plugins","upload","providerConfig","config","get","isPrivate","isUrlSigned","signUrl","signedUrl","getSignedUrl","url","signedFile","cloneDeep","formats","async","Object","values"],"mappings":";;;;;AAQA,MAAMA,gBAAgB,OAAOC,QAAAA,GAAAA;IAC3B,IAAI,CAACA,UAAU,OAAO,GAAA;IAEtB,MAAMC,YAAAA,GAAe,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACC,gBAAkBC,CAAAA,CAAAA,OAAO,CAAC;QAAEC,KAAO,EAAA;YAAEC,EAAIR,EAAAA;AAAS;AAAE,KAAA,CAAA;AAE/F,IAAA,OAAOC,aAAaQ,IAAI;AAC1B,CAAA;AAEA,MAAMC,WAAAA,GAAc,OAAOC,GAAAA,GAAgB,EAAE,GAAA;IAC3C,MAAMC,aAAAA,GAAgB,MAAMV,MAAOC,CAAAA,EAAE,CAClCC,KAAK,CAACS,cACNC,CAAAA,CAAAA,QAAQ,CAAC;QAAEP,KAAO,EAAA;YAAEC,EAAI,EAAA;gBAAEO,GAAKJ,EAAAA;AAAI;AAAE;AAAE,KAAA,CAAA;IAE1C,MAAMK,OAAAA,CAAQC,GAAG,CAACL,aAAcM,CAAAA,GAAG,CAAC,CAACC,IAAeC,GAAAA,UAAAA,CAAW,QAAUC,CAAAA,CAAAA,MAAM,CAACF,IAAAA,CAAAA,CAAAA,CAAAA;IAEhF,OAAOP,aAAAA;AACT,CAAA;AAEA,MAAMU,eAAe,OAAOH,IAAAA,GAAAA;AAC1B,IAAA,MAAM,EAAEI,QAAQ,EAAE,GAAGrB,MAAOsB,CAAAA,OAAO,CAACC,MAAM;IAC1C,MAAM,EAAEF,UAAUG,cAAc,EAAE,GAAGxB,MAAOyB,CAAAA,MAAM,CAACC,GAAG,CAAS,gBAAA,CAAA;IAC/D,MAAMC,SAAAA,GAAY,MAAMN,QAAAA,CAASM,SAAS,EAAA;AAC1CV,IAAAA,IAAAA,CAAKW,WAAW,GAAG,KAAA;;AAGnB,IAAA,IAAIX,IAAKI,CAAAA,QAAQ,KAAKG,cAAAA,IAAkB,CAACG,SAAW,EAAA;QAClD,OAAOV,IAAAA;AACT;AAEA,IAAA,MAAMY,UAAU,OAAOZ,IAAAA,GAAAA;AACrB,QAAA,MAAMa,SAAY,GAAA,MAAMT,QAASU,CAAAA,YAAY,CAACd,IAAAA,CAAAA;QAC9CA,IAAKe,CAAAA,GAAG,GAAGF,SAAAA,CAAUE,GAAG;AACxBf,QAAAA,IAAAA,CAAKW,WAAW,GAAG,IAAA;AACrB,KAAA;AAEA,IAAA,MAAMK,aAAaC,SAAUjB,CAAAA,IAAAA,CAAAA;;AAG7B,IAAA,MAAMY,OAAQI,CAAAA,UAAAA,CAAAA;IACd,IAAIhB,IAAAA,CAAKkB,OAAO,EAAE;QAChB,MAAMC,KAAAA,CAAMpB,GAAG,CAACqB,MAAOC,CAAAA,MAAM,CAACL,UAAWE,CAAAA,OAAO,IAAI,EAAKN,CAAAA,EAAAA,OAAAA,CAAAA;AAC3D;IAEA,OAAOI,UAAAA;AACT,CAAA;AAEA,WAAe;AAAEpC,IAAAA,aAAAA;AAAeW,IAAAA,WAAAA;AAAaY,IAAAA;AAAa,CAAE;;;;"}