{"version":3,"file":"getGlobalData.js","names":["globalLockDurationDefault","getGlobalData","req","payload","config","globalData","globals","length","collections","lockedDocuments","find","collection","depth","overrideAccess","pagination","select","globalSlug","updatedAt","user","where","exists","map","global","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","slug","data","_isLocked","_lastEditedAt","_userEditing","value"],"sources":["../../src/utilities/getGlobalData.ts"],"sourcesContent":["import type { ClientUser, PayloadRequest, TypedUser } from 'payload'\n\nconst globalLockDurationDefault = 300\n\nexport async function getGlobalData(req: PayloadRequest) {\n const {\n payload: { config },\n payload,\n } = req\n // Query locked global documents only if there are globals in the config\n // This type is repeated from DashboardViewServerPropsOnly['globalData'].\n // I thought about moving it to a payload to share it, but we're already\n // exporting all the views props from the next package.\n let globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }> = []\n\n if (config.globals.length > 0) {\n if (payload.collections?.['payload-locked-documents']) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n select: {\n globalSlug: true,\n updatedAt: true,\n user: true,\n },\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : globalLockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: (lockedDoc?.updatedAt as string) ?? null,\n _userEditing: (lockedDoc?.user as { value?: TypedUser })?.value ?? null,\n },\n lockDuration,\n }\n })\n } else {\n // If locked-documents collection doesn't exist, return globals without lock data\n globalData = config.globals.map((global) => {\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : globalLockDurationDefault\n\n return {\n slug: global.slug,\n data: {\n _isLocked: false,\n _lastEditedAt: null,\n _userEditing: null,\n },\n lockDuration,\n }\n })\n }\n }\n\n return globalData\n}\n"],"mappings":"AAEA,MAAMA,yBAAA,GAA4B;AAElC,OAAO,eAAeC,cAAcC,GAAmB;EACrD,MAAM;IACJC,OAAA,EAAS;MAAEC;IAAM,CAAE;IACnBD;EAAO,CACR,GAAGD,GAAA;EACJ;EACA;EACA;EACA;EACA,IAAIG,UAAA,GAIC,EAAE;EAEP,IAAID,MAAA,CAAOE,OAAO,CAACC,MAAM,GAAG,GAAG;IAC7B,IAAIJ,OAAA,CAAQK,WAAW,GAAG,2BAA2B,EAAE;MACrD,MAAMC,eAAA,GAAkB,MAAMN,OAAA,CAAQO,IAAI,CAAC;QACzCC,UAAA,EAAY;QACZC,KAAA,EAAO;QACPC,cAAA,EAAgB;QAChBC,UAAA,EAAY;QACZZ,GAAA;QACAa,MAAA,EAAQ;UACNC,UAAA,EAAY;UACZC,SAAA,EAAW;UACXC,IAAA,EAAM;QACR;QACAC,KAAA,EAAO;UACLH,UAAA,EAAY;YACVI,MAAA,EAAQ;UACV;QACF;MACF;MAEA;MACAf,UAAA,GAAaD,MAAA,CAAOE,OAAO,CAACe,GAAG,CAAEC,MAAA;QAC/B,MAAMC,YAAA,GACJ,OAAOD,MAAA,CAAOE,aAAa,KAAK,WAC5BF,MAAA,CAAOE,aAAa,CAACC,QAAQ,GAC7BzB,yBAAA;QAEN,MAAM0B,SAAA,GAAYjB,eAAA,CAAgBkB,IAAI,CAACjB,IAAI,CAAEkB,GAAA,IAAQA,GAAA,CAAIZ,UAAU,KAAKM,MAAA,CAAOO,IAAI;QAEnF,OAAO;UACLA,IAAA,EAAMP,MAAA,CAAOO,IAAI;UACjBC,IAAA,EAAM;YACJC,SAAA,EAAW,CAAC,CAACL,SAAA;YACbM,aAAA,EAAeN,SAAC,EAAWT,SAAA,IAAwB;YACnDgB,YAAA,EAAcP,SAAC,EAAWR,IAAA,EAAgCgB,KAAA,IAAS;UACrE;UACAX;QACF;MACF;IACF,OAAO;MACL;MACAlB,UAAA,GAAaD,MAAA,CAAOE,OAAO,CAACe,GAAG,CAAEC,MAAA;QAC/B,MAAMC,YAAA,GACJ,OAAOD,MAAA,CAAOE,aAAa,KAAK,WAC5BF,MAAA,CAAOE,aAAa,CAACC,QAAQ,GAC7BzB,yBAAA;QAEN,OAAO;UACL6B,IAAA,EAAMP,MAAA,CAAOO,IAAI;UACjBC,IAAA,EAAM;YACJC,SAAA,EAAW;YACXC,aAAA,EAAe;YACfC,YAAA,EAAc;UAChB;UACAV;QACF;MACF;IACF;EACF;EAEA,OAAOlB,UAAA;AACT","ignoreList":[]}