{"version":3,"sources":["../../../src/globals/operations/findVersionByID.ts"],"sourcesContent":["import type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { FindGlobalVersionsArgs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { SanitizedGlobalConfig } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionGlobalFields } from '../../versions/buildGlobalFields.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\n\nexport type Arguments = {\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n globalConfig: SanitizedGlobalConfig\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n} & Pick, 'select'>\n\nexport const findVersionByIDOperation = async = any>(\n args: Arguments,\n): Promise => {\n const {\n id,\n currentDepth,\n depth,\n disableErrors,\n globalConfig,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n } = args\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, globalConfig.access.readVersions)\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null!\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n const select = sanitizeSelect({\n fields: buildVersionGlobalFields(payload.config, globalConfig, true),\n forceSelect: getQueryDraftsSelect({ select: globalConfig.forceSelect }),\n select: incomingSelect,\n versions: true,\n })\n\n const findGlobalVersionsArgs: FindGlobalVersionsArgs = {\n global: globalConfig.slug,\n limit: 1,\n locale: locale!,\n req,\n select,\n where: combineQueries({ id: { equals: id } }, accessResults),\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n if (!findGlobalVersionsArgs.where?.and?.[0]?.id) {\n throw new NotFound(req.t)\n }\n\n const { docs: results } = await payload.db.findGlobalVersions(findGlobalVersionsArgs)\n if (!results || results?.length === 0) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null!\n }\n\n // Clone the result - it may have come back memoized\n let result: any = deepCopyObjectSimple(results[0])\n\n if (!result.version) {\n result.version = {}\n }\n\n // Patch globalType onto version doc\n result.version.globalType = globalConfig.slug\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeRead?.length) {\n for (const hook of globalConfig.hooks.beforeRead) {\n result =\n (await hook({\n context: req.context,\n doc: result.version,\n global: globalConfig,\n overrideAccess,\n req,\n })) || result.version\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: null,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result.version,\n draft: undefined!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result.version =\n (await hook({\n context: req.context,\n doc: result.version,\n global: globalConfig,\n overrideAccess,\n query: findGlobalVersionsArgs.where,\n req,\n })) || result.version\n }\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","Forbidden","NotFound","afterRead","deepCopyObjectSimple","killTransaction","sanitizeSelect","buildVersionGlobalFields","getQueryDraftsSelect","findVersionByIDOperation","args","id","currentDepth","depth","disableErrors","globalConfig","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","accessResults","access","readVersions","hasWhereAccess","fields","config","forceSelect","versions","findGlobalVersionsArgs","global","slug","limit","where","equals","and","t","docs","results","db","findGlobalVersions","length","result","version","globalType","hooks","beforeRead","hook","context","doc","collection","draft","undefined","query","error"],"mappings":"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"}