@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 5.22 kB
Source Map (JSON)
{"version":3,"file":"sync-media.mjs","names":["mediaServices.checks.checkHasMediaStrategy","mediaServices.checks.checkCanStoreMedia"],"sources":["../../../../src/services/media/strategies/sync-media.ts"],"sourcesContent":["import { copy } from \"../../../libs/i18n/index.js\";\nimport type { MediaType } from \"../../../types/response.js\";\nimport { formatBytes } from \"../../../utils/helpers/index.js\";\nimport { resolveMediaKeyTenant } from \"../../../utils/media/index.js\";\nimport type { ServiceFn } from \"../../../utils/services/types.js\";\nimport { mediaServices } from \"../../index.js\";\nimport adjustStorageUsage from \"../adjust-storage-usage.js\";\nimport validateUploadedMedia from \"../helpers/validate-uploaded-media.js\";\n\nconst syncMedia: ServiceFn<\n\t[\n\t\t{\n\t\t\tkey: string;\n\t\t\tfileName: string;\n\t\t\tallowedType?: MediaType;\n\t\t},\n\t],\n\t{\n\t\tmimeType: string;\n\t\tname: string;\n\t\ttype: MediaType;\n\t\textension: string;\n\t\tsize: number;\n\t\tkey: string;\n\t\tetag: string | null;\n\t}\n> = async (context, data) => {\n\tconst mediaStrategyRes =\n\t\tawait mediaServices.checks.checkHasMediaStrategy(context);\n\tif (mediaStrategyRes.error) return mediaStrategyRes;\n\n\tconst tenant = resolveMediaKeyTenant(context.config, data.key);\n\n\tconst mediaMetaRes = await mediaStrategyRes.data.getMeta(context, {\n\t\tkey: data.key,\n\t\ttenant,\n\t});\n\tif (mediaMetaRes.error) return mediaMetaRes;\n\n\tconst proposedSizeRes = await mediaServices.checks.checkCanStoreMedia(\n\t\tcontext,\n\t\t{\n\t\t\tsize: mediaMetaRes.data.size,\n\t\t},\n\t);\n\tif (proposedSizeRes.error) {\n\t\tawait mediaStrategyRes.data.delete(context, {\n\t\t\tkey: data.key,\n\t\t\ttenant,\n\t\t});\n\t\treturn proposedSizeRes;\n\t}\n\n\tconst fileMetaData = await validateUploadedMedia({\n\t\tcontext,\n\t\tstream: mediaStrategyRes.data.stream,\n\t\ttenant,\n\t\tkey: data.key,\n\t\tmimeType: mediaMetaRes.data.mimeType,\n\t\tfileName: data.fileName,\n\t\tallowedType: data.allowedType,\n\t});\n\tif (fileMetaData.error) {\n\t\tawait mediaStrategyRes.data.delete(context, {\n\t\t\tkey: data.key,\n\t\t\ttenant,\n\t\t});\n\t\treturn fileMetaData;\n\t}\n\n\tconst storageLimit = context.config.media.limits.storageBytes;\n\tconst adjustStorageRes = await adjustStorageUsage(context, {\n\t\ttenantKey: context.request?.tenantKey ?? null,\n\t\tdelta: mediaMetaRes.data.size,\n\t\tmax: storageLimit === false ? undefined : storageLimit,\n\t\tmin: 0,\n\t});\n\tif (adjustStorageRes.error) return adjustStorageRes;\n\tif (!adjustStorageRes.data.applied) {\n\t\tif (storageLimit === false) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\ttype: \"basic\",\n\t\t\t\t\tstatus: 500,\n\t\t\t\t},\n\t\t\t\tdata: undefined,\n\t\t\t};\n\t\t}\n\n\t\tawait mediaStrategyRes.data.delete(context, {\n\t\t\tkey: data.key,\n\t\t\ttenant,\n\t\t});\n\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tmessage: copy(\"server:core.files.validation.storage.limit.exceeded\", {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsize: formatBytes(storageLimit),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tstatus: 500,\n\t\t\t\terrors: {\n\t\t\t\t\tfile: {\n\t\t\t\t\t\tcode: \"storage\",\n\t\t\t\t\t\tmessage: copy(\n\t\t\t\t\t\t\t\"server:core.files.validation.storage.limit.exceeded\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tsize: formatBytes(storageLimit),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tmimeType: fileMetaData.data.mimeType,\n\t\t\ttype: fileMetaData.data.type,\n\t\t\textension: fileMetaData.data.extension,\n\t\t\tsize: mediaMetaRes.data.size,\n\t\t\tname: data.fileName,\n\t\t\tkey: data.key,\n\t\t\tetag: mediaMetaRes.data.etag,\n\t\t},\n\t};\n};\n\nexport default syncMedia;\n"],"mappings":"sYASA,MAAM,EAiBF,MAAO,EAAS,IAAS,CAC5B,IAAM,EACL,MAAMA,EAA2C,CAAO,EACzD,GAAI,EAAiB,MAAO,OAAO,EAEnC,IAAM,EAAS,EAAsB,EAAQ,OAAQ,EAAK,GAAG,EAEvD,EAAe,MAAM,EAAiB,KAAK,QAAQ,EAAS,CACjE,IAAK,EAAK,IACV,QACD,CAAC,EACD,GAAI,EAAa,MAAO,OAAO,EAE/B,IAAM,EAAkB,MAAMC,EAC7B,EACA,CACC,KAAM,EAAa,KAAK,IACzB,CACD,EACA,GAAI,EAAgB,MAKnB,OAJA,MAAM,EAAiB,KAAK,OAAO,EAAS,CAC3C,IAAK,EAAK,IACV,QACD,CAAC,EACM,EAGR,IAAM,EAAe,MAAM,EAAsB,CAChD,UACA,OAAQ,EAAiB,KAAK,OAC9B,SACA,IAAK,EAAK,IACV,SAAU,EAAa,KAAK,SAC5B,SAAU,EAAK,SACf,YAAa,EAAK,WACnB,CAAC,EACD,GAAI,EAAa,MAKhB,OAJA,MAAM,EAAiB,KAAK,OAAO,EAAS,CAC3C,IAAK,EAAK,IACV,QACD,CAAC,EACM,EAGR,IAAM,EAAe,EAAQ,OAAO,MAAM,OAAO,aAC3C,EAAmB,MAAM,EAAmB,EAAS,CAC1D,UAAW,EAAQ,SAAS,WAAa,KACzC,MAAO,EAAa,KAAK,KACzB,IAAK,IAAiB,GAAQ,IAAA,GAAY,EAC1C,IAAK,CACN,CAAC,EA6CD,OA5CI,EAAiB,MAAc,EAC9B,EAAiB,KAAK,QA2CpB,CACN,MAAO,IAAA,GACP,KAAM,CACL,SAAU,EAAa,KAAK,SAC5B,KAAM,EAAa,KAAK,KACxB,UAAW,EAAa,KAAK,UAC7B,KAAM,EAAa,KAAK,KACxB,KAAM,EAAK,SACX,IAAK,EAAK,IACV,KAAM,EAAa,KAAK,IACzB,CACD,EArDK,IAAiB,GACb,CACN,MAAO,CACN,KAAM,QACN,OAAQ,GACT,EACA,KAAM,IAAA,EACP,GAGD,MAAM,EAAiB,KAAK,OAAO,EAAS,CAC3C,IAAK,EAAK,IACV,QACD,CAAC,EAEM,CACN,MAAO,CACN,KAAM,QACN,QAAS,EAAK,sDAAuD,CACpE,KAAM,CACL,KAAM,EAAY,CAAY,CAC/B,CACD,CAAC,EACD,OAAQ,IACR,OAAQ,CACP,KAAM,CACL,KAAM,UACN,QAAS,EACR,sDACA,CACC,KAAM,CACL,KAAM,EAAY,CAAY,CAC/B,CACD,CACD,CACD,CACD,CACD,EACA,KAAM,IAAA,EACP,EAeF"}