@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 1.73 kB
Source Map (JSON)
{"version":3,"file":"generate-key.mjs","names":["constants"],"sources":["../../../src/utils/media/generate-key.ts"],"sourcesContent":["import crypto from \"node:crypto\";\nimport constants from \"../../constants/constants.js\";\nimport { copy } from \"../../libs/i18n/index.js\";\nimport type { ServiceResponse } from \"../services/types.js\";\n\n/**\n * Generates a unique key for a media file.\n */\nconst generateKey = (props: {\n\tname: string;\n\tpublic: boolean;\n\ttenantKey?: string | null;\n\ttemporary?: boolean;\n}): Awaited<ServiceResponse<string>> => {\n\tconst name = props.name.trim();\n\n\tif (!name) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tname: copy(\"server:core.media.name.invalid\"),\n\t\t\t\tmessage: copy(\"server:core.media.name.invalid\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst uuid = crypto.randomUUID().replaceAll(\"-\", \"\");\n\tconst root = props.temporary\n\t\t? constants.media.awaitingSyncKey\n\t\t: props.public\n\t\t\t? constants.media.visibilityKeys.public\n\t\t\t: constants.media.visibilityKeys.private;\n\tconst prefix = props.tenantKey ? `${root}/${props.tenantKey}/` : `${root}/`;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: `${prefix}${uuid}`,\n\t};\n};\n\nexport default generateKey;\n"],"mappings":"wHAQA,MAAM,EAAe,GAKmB,CAGvC,GAAI,CAFS,EAAM,KAAK,KAEhB,EACP,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,gCAAgC,EAC3C,QAAS,EAAK,gCAAgC,EAC9C,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAO,EAAO,WAAW,CAAC,CAAC,WAAW,IAAK,EAAE,EAC7C,EAAO,EAAM,UAChBA,EAAU,MAAM,gBAChB,EAAM,OACLA,EAAU,MAAM,eAAe,OAC/BA,EAAU,MAAM,eAAe,QAGnC,MAAO,CACN,MAAO,IAAA,GACP,KAAM,GAJQ,EAAM,UAAY,GAAG,EAAK,GAAG,EAAM,UAAU,GAAK,GAAG,EAAK,KAItD,GACnB,CACD"}