Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
14 KiB
Plaintext
1 line
14 KiB
Plaintext
{"version":3,"file":"getVersions.js","names":["sanitizeID","traverseForLocalizedFields","combineQueries","extractAccessFromPermission","hasAutosaveEnabled","hasDraftsEnabled","getVersions","id","idArg","collectionConfig","doc","docPermissions","globalConfig","locale","payload","user","publishedDoc","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","hasLocalizedFields","fields","localizedDraftsEnabled","config","localization","shouldFetchVersions","Boolean","readVersions","_status","find","collection","slug","depth","limit","undefined","pagination","select","updatedAt","where","and","equals","docs","parent","push","snapshot","not_equals","mostRecentVersion","findVersions","autosave","totalDocs","countVersions","greater_than","countVersionsWhere","findGlobal","findGlobalVersions","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import { sanitizeID, traverseForLocalizedFields } from '@payloadcms/ui/shared'\nimport {\n combineQueries,\n extractAccessFromPermission,\n type Payload,\n type SanitizedCollectionConfig,\n type SanitizedDocumentPermissions,\n type SanitizedGlobalConfig,\n type TypedUser,\n} from 'payload'\nimport { hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n /**\n * Optional - performance optimization.\n * If a document has been fetched before fetching versions, pass it here.\n * If this document is set to published, we can skip the query to find out if a published document exists,\n * as the passed in document is proof of its existence.\n */\n doc?: Record<string, any>\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\n// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedDoc\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n const hasLocalizedFields = traverseForLocalizedFields(entityConfig.fields)\n const localizedDraftsEnabled =\n hasDraftsEnabled(entityConfig) &&\n typeof payload.config.localization === 'object' &&\n hasLocalizedFields\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n // Without readVersions permission, determine published status from the _status field\n const hasPublishedDoc = localizedDraftsEnabled\n ? doc?._status === 'published'\n : doc?._status !== 'draft'\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (hasDraftsEnabled(collectionConfig)) {\n // Find out if a published document exists\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = (\n await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale: locale || undefined,\n pagination: false,\n select: {\n updatedAt: true,\n },\n user,\n where: {\n and: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n )?.docs?.[0]\n }\n\n if (publishedDoc) {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(collectionConfig)) {\n const where: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n if (localizedDraftsEnabled) {\n where.and.push({\n snapshot: {\n not_equals: true,\n },\n })\n }\n\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n where: combineQueries(where, extractAccessFromPermission(docPermissions.readVersions)),\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n const countVersionsWhere: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n if (localizedDraftsEnabled) {\n countVersionsWhere.and.push({\n snapshot: {\n not_equals: true,\n },\n })\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n countVersionsWhere,\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n\n if (globalConfig) {\n // Find out if a published document exists\n if (hasDraftsEnabled(globalConfig)) {\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n select: {\n updatedAt: true,\n },\n user,\n })\n }\n\n if (publishedDoc?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(globalConfig)) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n where: localizedDraftsEnabled\n ? {\n snapshot: {\n not_equals: true,\n },\n }\n : undefined,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]} |