@valkyrianlabs/payload-markdown-docs 0.4.3 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/admin/DocsSetManager.js +7 -40
  2. package/dist/admin/DocsSetManager.js.map +1 -1
  3. package/dist/cli/commands/push.js.map +1 -1
  4. package/dist/cli/format.d.ts +1 -3
  5. package/dist/cli/format.js +1 -2
  6. package/dist/cli/format.js.map +1 -1
  7. package/dist/collections/docs.js +18 -0
  8. package/dist/collections/docs.js.map +1 -1
  9. package/dist/collections/docsSets.d.ts +1 -3
  10. package/dist/collections/docsSets.js +17 -10
  11. package/dist/collections/docsSets.js.map +1 -1
  12. package/dist/collections/syncRuns.js +0 -9
  13. package/dist/collections/syncRuns.js.map +1 -1
  14. package/dist/endpoints/index.d.ts +0 -2
  15. package/dist/endpoints/index.js +0 -1
  16. package/dist/endpoints/index.js.map +1 -1
  17. package/dist/endpoints/sync.d.ts +0 -2
  18. package/dist/endpoints/sync.js +4 -15
  19. package/dist/endpoints/sync.js.map +1 -1
  20. package/dist/next/records.d.ts +4 -0
  21. package/dist/next/records.js +7 -0
  22. package/dist/next/records.js.map +1 -1
  23. package/dist/next/route.js +34 -13
  24. package/dist/next/route.js.map +1 -1
  25. package/dist/next/types.d.ts +1 -0
  26. package/dist/next/types.js.map +1 -1
  27. package/dist/payload/applyDocsSync.d.ts +2 -3
  28. package/dist/payload/applyDocsSync.js +4 -6
  29. package/dist/payload/applyDocsSync.js.map +1 -1
  30. package/dist/payload/docsConflicts.js +12 -1
  31. package/dist/payload/docsConflicts.js.map +1 -1
  32. package/dist/payload/docsData.d.ts +2 -5
  33. package/dist/payload/docsData.js +6 -8
  34. package/dist/payload/docsData.js.map +1 -1
  35. package/dist/payload/existingDocs.d.ts +1 -0
  36. package/dist/payload/existingDocs.js +1 -0
  37. package/dist/payload/existingDocs.js.map +1 -1
  38. package/dist/payload/index.d.ts +11 -11
  39. package/dist/payload/index.js.map +1 -1
  40. package/dist/payload/populatePublishedAt.d.ts +2 -0
  41. package/dist/payload/populatePublishedAt.js +14 -0
  42. package/dist/payload/populatePublishedAt.js.map +1 -0
  43. package/dist/payload/syncRuns.d.ts +1 -2
  44. package/dist/payload/syncRuns.js +1 -2
  45. package/dist/payload/syncRuns.js.map +1 -1
  46. package/dist/plugin.js +0 -3
  47. package/dist/plugin.js.map +1 -1
  48. package/dist/skills/codex/reference/admin.md +0 -1
  49. package/dist/types.d.ts +0 -1
  50. package/dist/types.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/endpoints/publishGeneratedDocs.d.ts +0 -6
  53. package/dist/endpoints/publishGeneratedDocs.js +0 -76
  54. package/dist/endpoints/publishGeneratedDocs.js.map +0 -1
  55. package/dist/payload/publishGeneratedDocs.d.ts +0 -29
  56. package/dist/payload/publishGeneratedDocs.js +0 -78
  57. package/dist/payload/publishGeneratedDocs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/route.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsReadPayload,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n} from '../constants.js'\nimport {\n deriveDocsSetRouteBase,\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from '../routing/index.js'\nimport {\n getRelationshipId,\n isRecord,\n isVisibleDocsRecord,\n toResolvedDocsGroup,\n toResolvedDocsRecord,\n toResolvedDocsSet,\n} from './records.js'\nimport { getPayloadMarkdownDocsSidebar } from './sidebar.js'\n\ntype ResolvedCollectionSlugs = {\n docs: string\n docsGroups: string\n docsSets: string\n}\n\nconst resolveCollectionSlugs = (\n collections?: PayloadMarkdownDocsCollectionSlugs,\n): ResolvedCollectionSlugs => ({\n docs: collections?.docs ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsGroups: collections?.docsGroups ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsSets: collections?.docsSets ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n})\n\nexport const getPayloadMarkdownDocsRoutePath = ({\n slug,\n path,\n}: {\n path?: string\n slug?: string | string[]\n}): string => {\n if (path !== undefined) {\n return normalizeRoutePath(path)\n }\n\n if (Array.isArray(slug)) {\n return slug.length === 0 ? '/' : joinRouteSegments(...slug)\n }\n\n if (typeof slug === 'string') {\n return normalizeRoutePath(slug)\n }\n\n return '/'\n}\n\nconst getGroupsById = async ({\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<Map<string, unknown>> => {\n const result = await payload.find({\n collection: collections.docsGroups,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n\n return new Map(\n result.docs.flatMap((doc) => {\n if (!isRecord(doc)) {\n return []\n }\n\n const id = getRelationshipId(doc)\n\n return id ? [[id, doc]] : []\n }),\n )\n}\n\nconst getGroupRoutePath = ({\n groupId,\n groupsById,\n seen = new Set<string>(),\n}: {\n groupId?: string\n groupsById: Map<string, unknown>\n seen?: Set<string>\n}): string | undefined => {\n if (!groupId || seen.has(groupId)) {\n return undefined\n }\n\n const group = groupsById.get(groupId)\n\n if (!isRecord(group)) {\n return undefined\n }\n\n const slug = typeof group.slug === 'string' ? group.slug : undefined\n\n if (!slug) {\n return undefined\n }\n\n const parentRoutePath = getGroupRoutePath({\n groupId: getRelationshipId(group.parent),\n groupsById,\n seen: new Set([groupId, ...seen]),\n })\n\n return joinRouteSegments(parentRoutePath, slug)\n}\n\nconst withComputedDocsSetRoute = ({\n doc,\n docsSet,\n groupsById,\n}: {\n doc?: unknown\n docsSet?: ResolvedPayloadMarkdownDocsSet\n groupsById: Map<string, unknown>\n}): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!docsSet?.slug) {\n return docsSet\n }\n\n const groupId = isRecord(doc) ? getRelationshipId(doc.group) : undefined\n const groupRoutePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return {\n ...docsSet,\n routeBase: deriveDocsSetRouteBase({\n docsSetSlug: docsSet.slug,\n groupRoutePath,\n }),\n }\n}\n\nconst findDocsSetById = async ({\n id,\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n id: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1,\n overrideAccess,\n where: {\n id: {\n equals: id,\n },\n },\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return withComputedDocsSetRoute({\n doc: result.docs[0],\n docsSet: toResolvedDocsSet(result.docs[0]),\n groupsById,\n })\n}\n\nconst findDocsSetByRouteBase = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .find((docsSet) => docsSet?.routeBase === route)\n}\n\nconst findDocsSetByRoutePrefix = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => {\n if (!docsSet) {\n return false\n }\n\n return docsSet.routeBase === route || isRouteDescendant(docsSet.routeBase, route)\n })\n .sort((first, second) => second.routeBase.length - first.routeBase.length)[0]\n}\n\nconst getRelatedDocsSet = (doc: unknown): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc) || !isRecord(doc.docsSet)) {\n return undefined\n }\n\n return toResolvedDocsSet(doc.docsSet)\n}\n\nconst findDocsSetForRecord = async ({\n collections,\n doc,\n overrideAccess,\n payload,\n record,\n}: {\n collections: ResolvedCollectionSlugs\n doc: unknown\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n record: ResolvedPayloadMarkdownDocsRecord\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n if (record.docsSetId) {\n const docsSetById = await findDocsSetById({\n id: record.docsSetId,\n collections,\n overrideAccess,\n payload,\n })\n\n if (docsSetById) {\n return docsSetById\n }\n }\n\n const relatedDocsSet = getRelatedDocsSet(doc)\n\n if (relatedDocsSet) {\n return relatedDocsSet\n }\n\n return findDocsSetByRoutePrefix({\n collections,\n overrideAccess,\n payload,\n route: record.route,\n })\n}\n\nconst findDocsRecordByRoute = async ({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<\n | {\n doc: unknown\n record: ResolvedPayloadMarkdownDocsRecord\n }\n | undefined\n> => {\n const result = await payload.find({\n collection: collections.docs,\n depth: 1,\n limit: 5,\n overrideAccess,\n where: {\n route: {\n equals: route,\n },\n },\n })\n\n for (const doc of result.docs) {\n const record = toResolvedDocsRecord({\n doc,\n markdownField,\n })\n\n if (\n record &&\n record.route === route &&\n isVisibleDocsRecord({\n includeDrafts,\n record,\n })\n ) {\n return {\n doc,\n record,\n }\n }\n }\n\n return undefined\n}\n\nconst findDocsSetIndexRecord = async ({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n docsSet: ResolvedPayloadMarkdownDocsSet\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsRecord | undefined> => {\n const result = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route: docsSet.routeBase,\n })\n\n if (!result) {\n return undefined\n }\n\n if (result.record.docsSetId && result.record.docsSetId !== docsSet.id) {\n return undefined\n }\n\n if (isRecord(result.doc)) {\n const relatedDocsSetId = getRelationshipId(result.doc.docsSet)\n\n if (relatedDocsSetId && relatedDocsSetId !== docsSet.id) {\n return undefined\n }\n }\n\n return result.record\n}\n\nconst findGroupIndexRoute = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsRoute | undefined> => {\n const groupsById = await getGroupsById({\n collections,\n overrideAccess,\n payload,\n })\n const group = [...groupsById.entries()]\n .map(([groupId, doc]) => {\n const resolved = toResolvedDocsGroup(doc)\n const routePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return resolved && routePath\n ? {\n ...resolved,\n routePath,\n }\n : undefined\n })\n .find((candidate) => candidate?.routePath === route && candidate.serveIndex)\n\n if (!group) {\n return undefined\n }\n\n const docsSetsResult = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n const docsSets = docsSetsResult.docs\n .filter((doc) => isRecord(doc) && getRelationshipId(doc.group) === group.id)\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => docsSet !== undefined)\n .sort((first, second) => {\n if (first.order !== second.order) {\n return first.order - second.order\n }\n\n return first.routeBase.localeCompare(second.routeBase)\n })\n\n return {\n type: 'docsGroupIndex',\n docsSets,\n group,\n route,\n }\n}\n\nexport const resolvePayloadMarkdownDocsRoute = async ({\n slug,\n collections: collectionOptions,\n includeDrafts = false,\n markdownField = DEFAULT_MARKDOWN_FIELD_NAME,\n // Route adapter reads plugin-owned generated docs collections server-side.\n // Access is overridden here, then public visibility is enforced explicitly.\n overrideAccess = true,\n path,\n payload,\n}: ResolvePayloadMarkdownDocsRouteOptions): Promise<null | ResolvedPayloadMarkdownDocsRoute> => {\n const route = getPayloadMarkdownDocsRoutePath({\n slug,\n path,\n })\n const collections = resolveCollectionSlugs(collectionOptions)\n const docsSet = await findDocsSetByRouteBase({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n if (docsSet) {\n const [doc, sidebar] = await Promise.all([\n findDocsSetIndexRecord({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n ])\n\n return {\n ...(doc ? { doc } : {}),\n type: 'docsSetIndex',\n docsSet,\n route,\n sidebar,\n }\n }\n\n const docResult = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n })\n\n if (docResult) {\n const resolvedDocsSet = await findDocsSetForRecord({\n collections,\n doc: docResult.doc,\n overrideAccess,\n payload,\n record: docResult.record,\n })\n\n if (resolvedDocsSet) {\n const sidebar = await getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet: resolvedDocsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n })\n\n return {\n type: 'doc',\n doc: docResult.record,\n docsSet: resolvedDocsSet,\n route,\n sidebar,\n }\n }\n }\n\n const groupRoute = await findGroupIndexRoute({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n return groupRoute ?? null\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","deriveDocsSetRouteBase","isRouteDescendant","joinRouteSegments","normalizeRoutePath","getRelationshipId","isRecord","isVisibleDocsRecord","toResolvedDocsGroup","toResolvedDocsRecord","toResolvedDocsSet","getPayloadMarkdownDocsSidebar","resolveCollectionSlugs","collections","docs","docsGroups","docsSets","getPayloadMarkdownDocsRoutePath","slug","path","undefined","Array","isArray","length","getGroupsById","overrideAccess","payload","result","find","collection","depth","limit","Map","flatMap","doc","id","getGroupRoutePath","groupId","groupsById","seen","Set","has","group","get","parentRoutePath","parent","withComputedDocsSetRoute","docsSet","groupRoutePath","routeBase","docsSetSlug","findDocsSetById","Promise","all","where","equals","findDocsSetByRouteBase","route","map","findDocsSetByRoutePrefix","filter","sort","first","second","getRelatedDocsSet","findDocsSetForRecord","record","docsSetId","docsSetById","relatedDocsSet","findDocsRecordByRoute","includeDrafts","markdownField","findDocsSetIndexRecord","relatedDocsSetId","findGroupIndexRoute","entries","resolved","routePath","candidate","serveIndex","docsSetsResult","order","localeCompare","type","resolvePayloadMarkdownDocsRoute","collectionOptions","sidebar","docResult","resolvedDocsSet","groupRoute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/next/route.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsReadPayload,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n} from '../constants.js'\nimport {\n deriveDocsSetRouteBase,\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from '../routing/index.js'\nimport {\n getRelationshipId,\n isRecord,\n isVisibleDocsRecord,\n isVisibleDocsSet,\n toResolvedDocsGroup,\n toResolvedDocsRecord,\n toResolvedDocsSet,\n} from './records.js'\nimport { getPayloadMarkdownDocsSidebar } from './sidebar.js'\n\ntype ResolvedCollectionSlugs = {\n docs: string\n docsGroups: string\n docsSets: string\n}\n\nconst resolveCollectionSlugs = (\n collections?: PayloadMarkdownDocsCollectionSlugs,\n): ResolvedCollectionSlugs => ({\n docs: collections?.docs ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsGroups: collections?.docsGroups ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsSets: collections?.docsSets ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n})\n\nexport const getPayloadMarkdownDocsRoutePath = ({\n slug,\n path,\n}: {\n path?: string\n slug?: string | string[]\n}): string => {\n if (path !== undefined) {\n return normalizeRoutePath(path)\n }\n\n if (Array.isArray(slug)) {\n return slug.length === 0 ? '/' : joinRouteSegments(...slug)\n }\n\n if (typeof slug === 'string') {\n return normalizeRoutePath(slug)\n }\n\n return '/'\n}\n\nconst getGroupsById = async ({\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<Map<string, unknown>> => {\n const result = await payload.find({\n collection: collections.docsGroups,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n\n return new Map(\n result.docs.flatMap((doc) => {\n if (!isRecord(doc)) {\n return []\n }\n\n const id = getRelationshipId(doc)\n\n return id ? [[id, doc]] : []\n }),\n )\n}\n\nconst getGroupRoutePath = ({\n groupId,\n groupsById,\n seen = new Set<string>(),\n}: {\n groupId?: string\n groupsById: Map<string, unknown>\n seen?: Set<string>\n}): string | undefined => {\n if (!groupId || seen.has(groupId)) {\n return undefined\n }\n\n const group = groupsById.get(groupId)\n\n if (!isRecord(group)) {\n return undefined\n }\n\n const slug = typeof group.slug === 'string' ? group.slug : undefined\n\n if (!slug) {\n return undefined\n }\n\n const parentRoutePath = getGroupRoutePath({\n groupId: getRelationshipId(group.parent),\n groupsById,\n seen: new Set([groupId, ...seen]),\n })\n\n return joinRouteSegments(parentRoutePath, slug)\n}\n\nconst withComputedDocsSetRoute = ({\n doc,\n docsSet,\n groupsById,\n}: {\n doc?: unknown\n docsSet?: ResolvedPayloadMarkdownDocsSet\n groupsById: Map<string, unknown>\n}): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!docsSet?.slug) {\n return docsSet\n }\n\n const groupId = isRecord(doc) ? getRelationshipId(doc.group) : undefined\n const groupRoutePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return {\n ...docsSet,\n routeBase: deriveDocsSetRouteBase({\n docsSetSlug: docsSet.slug,\n groupRoutePath,\n }),\n }\n}\n\nconst findDocsSetById = async ({\n id,\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n id: string\n includeDrafts: boolean\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1,\n overrideAccess,\n where: {\n id: {\n equals: id,\n },\n },\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n const docsSet = withComputedDocsSetRoute({\n doc: result.docs[0],\n docsSet: toResolvedDocsSet(result.docs[0]),\n groupsById,\n })\n\n return docsSet && isVisibleDocsSet({ docsSet, includeDrafts }) ? docsSet : undefined\n}\n\nconst findDocsSetByRouteBase = async ({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter(\n (docsSet): docsSet is ResolvedPayloadMarkdownDocsSet =>\n docsSet !== undefined && isVisibleDocsSet({ docsSet, includeDrafts }),\n )\n .find((docsSet) => docsSet?.routeBase === route)\n}\n\nconst findDocsSetByRoutePrefix = async ({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => {\n if (!docsSet) {\n return false\n }\n\n if (!isVisibleDocsSet({ docsSet, includeDrafts })) {\n return false\n }\n\n return docsSet.routeBase === route || isRouteDescendant(docsSet.routeBase, route)\n })\n .sort((first, second) => second.routeBase.length - first.routeBase.length)[0]\n}\n\nconst getRelatedDocsSet = (doc: unknown): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc) || !isRecord(doc.docsSet)) {\n return undefined\n }\n\n return toResolvedDocsSet(doc.docsSet)\n}\n\nconst findDocsSetForRecord = async ({\n collections,\n doc,\n includeDrafts,\n overrideAccess,\n payload,\n record,\n}: {\n collections: ResolvedCollectionSlugs\n doc: unknown\n includeDrafts: boolean\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n record: ResolvedPayloadMarkdownDocsRecord\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n if (record.docsSetId) {\n return findDocsSetById({\n id: record.docsSetId,\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n })\n }\n\n const relatedDocsSet = getRelatedDocsSet(doc)\n\n if (relatedDocsSet && isVisibleDocsSet({ docsSet: relatedDocsSet, includeDrafts })) {\n return relatedDocsSet\n }\n\n return findDocsSetByRoutePrefix({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route: record.route,\n })\n}\n\nconst findDocsRecordByRoute = async ({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<\n | {\n doc: unknown\n record: ResolvedPayloadMarkdownDocsRecord\n }\n | undefined\n> => {\n const result = await payload.find({\n collection: collections.docs,\n depth: 1,\n limit: 5,\n overrideAccess,\n where: {\n route: {\n equals: route,\n },\n },\n })\n\n for (const doc of result.docs) {\n const record = toResolvedDocsRecord({\n doc,\n markdownField,\n })\n\n if (\n record &&\n record.route === route &&\n isVisibleDocsRecord({\n includeDrafts,\n record,\n })\n ) {\n return {\n doc,\n record,\n }\n }\n }\n\n return undefined\n}\n\nconst findDocsSetIndexRecord = async ({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n docsSet: ResolvedPayloadMarkdownDocsSet\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsRecord | undefined> => {\n const result = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route: docsSet.routeBase,\n })\n\n if (!result) {\n return undefined\n }\n\n if (result.record.docsSetId && result.record.docsSetId !== docsSet.id) {\n return undefined\n }\n\n if (isRecord(result.doc)) {\n const relatedDocsSetId = getRelationshipId(result.doc.docsSet)\n\n if (relatedDocsSetId && relatedDocsSetId !== docsSet.id) {\n return undefined\n }\n }\n\n return result.record\n}\n\nconst findGroupIndexRoute = async ({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsRoute | undefined> => {\n const groupsById = await getGroupsById({\n collections,\n overrideAccess,\n payload,\n })\n const group = [...groupsById.entries()]\n .map(([groupId, doc]) => {\n const resolved = toResolvedDocsGroup(doc)\n const routePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return resolved && routePath\n ? {\n ...resolved,\n routePath,\n }\n : undefined\n })\n .find((candidate) => candidate?.routePath === route && candidate.serveIndex)\n\n if (!group) {\n return undefined\n }\n\n const docsSetsResult = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n const docsSets = docsSetsResult.docs\n .filter((doc) => isRecord(doc) && getRelationshipId(doc.group) === group.id)\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => docsSet !== undefined)\n .filter((docsSet) => isVisibleDocsSet({ docsSet, includeDrafts }))\n .sort((first, second) => {\n if (first.order !== second.order) {\n return first.order - second.order\n }\n\n return first.routeBase.localeCompare(second.routeBase)\n })\n\n return {\n type: 'docsGroupIndex',\n docsSets,\n group,\n route,\n }\n}\n\nexport const resolvePayloadMarkdownDocsRoute = async ({\n slug,\n collections: collectionOptions,\n includeDrafts = false,\n markdownField = DEFAULT_MARKDOWN_FIELD_NAME,\n // Route adapter reads plugin-owned generated docs collections server-side.\n // Access is overridden here, then public visibility is enforced explicitly.\n overrideAccess = true,\n path,\n payload,\n}: ResolvePayloadMarkdownDocsRouteOptions): Promise<null | ResolvedPayloadMarkdownDocsRoute> => {\n const route = getPayloadMarkdownDocsRoutePath({\n slug,\n path,\n })\n const collections = resolveCollectionSlugs(collectionOptions)\n const docsSet = await findDocsSetByRouteBase({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route,\n })\n\n if (docsSet) {\n const [doc, sidebar] = await Promise.all([\n findDocsSetIndexRecord({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n ])\n\n return {\n ...(doc ? { doc } : {}),\n type: 'docsSetIndex',\n docsSet,\n route,\n sidebar,\n }\n }\n\n const docResult = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n })\n\n if (docResult) {\n const resolvedDocsSet = await findDocsSetForRecord({\n collections,\n doc: docResult.doc,\n includeDrafts,\n overrideAccess,\n payload,\n record: docResult.record,\n })\n\n if (resolvedDocsSet) {\n const sidebar = await getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet: resolvedDocsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n })\n\n return {\n type: 'doc',\n doc: docResult.record,\n docsSet: resolvedDocsSet,\n route,\n sidebar,\n }\n }\n }\n\n const groupRoute = await findGroupIndexRoute({\n collections,\n includeDrafts,\n overrideAccess,\n payload,\n route,\n })\n\n return groupRoute ?? null\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","deriveDocsSetRouteBase","isRouteDescendant","joinRouteSegments","normalizeRoutePath","getRelationshipId","isRecord","isVisibleDocsRecord","isVisibleDocsSet","toResolvedDocsGroup","toResolvedDocsRecord","toResolvedDocsSet","getPayloadMarkdownDocsSidebar","resolveCollectionSlugs","collections","docs","docsGroups","docsSets","getPayloadMarkdownDocsRoutePath","slug","path","undefined","Array","isArray","length","getGroupsById","overrideAccess","payload","result","find","collection","depth","limit","Map","flatMap","doc","id","getGroupRoutePath","groupId","groupsById","seen","Set","has","group","get","parentRoutePath","parent","withComputedDocsSetRoute","docsSet","groupRoutePath","routeBase","docsSetSlug","findDocsSetById","includeDrafts","Promise","all","where","equals","findDocsSetByRouteBase","route","map","filter","findDocsSetByRoutePrefix","sort","first","second","getRelatedDocsSet","findDocsSetForRecord","record","docsSetId","relatedDocsSet","findDocsRecordByRoute","markdownField","findDocsSetIndexRecord","relatedDocsSetId","findGroupIndexRoute","entries","resolved","routePath","candidate","serveIndex","docsSetsResult","order","localeCompare","type","resolvePayloadMarkdownDocsRoute","collectionOptions","sidebar","docResult","resolvedDocsSet","groupRoute"],"mappings":"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"}
@@ -50,6 +50,7 @@ export type ResolvedPayloadMarkdownDocsSet = {
50
50
  order: number;
51
51
  routeBase: string;
52
52
  slug?: string;
53
+ status?: 'draft' | 'published';
53
54
  title: string;
54
55
  };
55
56
  export type ResolvedPayloadMarkdownDocsGroup = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n sidebarMode?: 'auto' | 'hidden' | 'manual'\n}\n\nexport type PayloadMarkdownDocsOverrides = {\n hideFromNav?: boolean\n navTitle?: string\n}\n\nexport type PayloadMarkdownDocsHeroImage = {\n alt?: string\n height?: number\n id?: string\n relationTo?: string\n url: string\n width?: number\n}\n\nexport type ResolvedPayloadMarkdownDocsSet = {\n aiExport?: DocsAiExportManifest\n defaults?: PayloadMarkdownDocsDefaults\n description?: string\n id: string\n navTitle?: string\n order: number\n routeBase: string\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsGroup = {\n description?: string\n id: string\n navTitle?: string\n order: number\n routePath: string\n serveIndex: boolean\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRecord = {\n archived: boolean\n content?: string\n depth: number\n description?: string\n docsSetId?: string\n heroImage?: PayloadMarkdownDocsHeroImage\n id: string\n navTitle?: string\n order: number\n overrides?: PayloadMarkdownDocsOverrides\n route: string\n sourceHash?: string\n sourcePath: string\n status?: 'draft' | 'published'\n title: string\n}\n\nexport type PayloadMarkdownDocsSidebarItem = {\n children?: PayloadMarkdownDocsSidebarItem[]\n depth: number\n hidden?: boolean\n label: string\n order: number\n route: string\n sourcePath: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRoute =\n | {\n doc: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'doc'\n }\n | {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'docsSetIndex'\n }\n | {\n docsSets: ResolvedPayloadMarkdownDocsSet[]\n group: ResolvedPayloadMarkdownDocsGroup\n route: string\n type: 'docsGroupIndex'\n }\n\nexport type PayloadMarkdownDocsMetadata = {\n description?: string\n title?: string\n}\n"],"names":[],"mappings":"AA4HA,WAGC"}
1
+ {"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n sidebarMode?: 'auto' | 'hidden' | 'manual'\n}\n\nexport type PayloadMarkdownDocsOverrides = {\n hideFromNav?: boolean\n navTitle?: string\n}\n\nexport type PayloadMarkdownDocsHeroImage = {\n alt?: string\n height?: number\n id?: string\n relationTo?: string\n url: string\n width?: number\n}\n\nexport type ResolvedPayloadMarkdownDocsSet = {\n aiExport?: DocsAiExportManifest\n defaults?: PayloadMarkdownDocsDefaults\n description?: string\n id: string\n navTitle?: string\n order: number\n routeBase: string\n slug?: string\n status?: 'draft' | 'published'\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsGroup = {\n description?: string\n id: string\n navTitle?: string\n order: number\n routePath: string\n serveIndex: boolean\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRecord = {\n archived: boolean\n content?: string\n depth: number\n description?: string\n docsSetId?: string\n heroImage?: PayloadMarkdownDocsHeroImage\n id: string\n navTitle?: string\n order: number\n overrides?: PayloadMarkdownDocsOverrides\n route: string\n sourceHash?: string\n sourcePath: string\n status?: 'draft' | 'published'\n title: string\n}\n\nexport type PayloadMarkdownDocsSidebarItem = {\n children?: PayloadMarkdownDocsSidebarItem[]\n depth: number\n hidden?: boolean\n label: string\n order: number\n route: string\n sourcePath: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRoute =\n | {\n doc: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'doc'\n }\n | {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'docsSetIndex'\n }\n | {\n docsSets: ResolvedPayloadMarkdownDocsSet[]\n group: ResolvedPayloadMarkdownDocsGroup\n route: string\n type: 'docsGroupIndex'\n }\n\nexport type PayloadMarkdownDocsMetadata = {\n description?: string\n title?: string\n}\n"],"names":[],"mappings":"AA6HA,WAGC"}
@@ -1,6 +1,5 @@
1
1
  import type { DocsDeleteBehavior, DocsSyncPlan, ValidatedDocsManifest } from '../sync/index.js';
2
2
  import type { DocsSyncConflict } from './docsConflicts.js';
3
- import type { DocsPublishMode } from './docsData.js';
4
3
  import type { ExistingPayloadDocsRecord } from './existingDocs.js';
5
4
  export type ApplyDocsSyncPayloadOperations = {
6
5
  create: (args: {
@@ -38,7 +37,7 @@ export declare const assertApplyDeleteBehaviorSupported: (deleteBehavior: DocsDe
38
37
  allowHardDelete?: boolean;
39
38
  docsEnableDrafts?: boolean;
40
39
  }) => boolean;
41
- export declare const applyDocsSync: ({ collectionSlug, deleteBehavior, docsEnableDrafts, docsSetId, existing, manifest, markdownFieldName, now, payload, plan, publishMode, syncRunId, }: {
40
+ export declare const applyDocsSync: ({ collectionSlug, deleteBehavior, docsEnableDrafts, docsSetId, existing, manifest, markdownFieldName, now, payload, plan, publish, syncRunId, }: {
42
41
  collectionSlug: string;
43
42
  deleteBehavior: DocsDeleteBehavior;
44
43
  docsEnableDrafts: boolean;
@@ -49,6 +48,6 @@ export declare const applyDocsSync: ({ collectionSlug, deleteBehavior, docsEnabl
49
48
  now: Date;
50
49
  payload: ApplyDocsSyncPayloadOperations;
51
50
  plan: DocsSyncPlan;
52
- publishMode: DocsPublishMode;
51
+ publish: boolean;
53
52
  syncRunId?: number | string;
54
53
  }) => Promise<ApplyDocsSyncResult>;
@@ -9,7 +9,7 @@ export const assertApplyDeleteBehaviorSupported = (deleteBehavior, { allowHardDe
9
9
  }
10
10
  return allowHardDelete;
11
11
  };
12
- export const applyDocsSync = async ({ collectionSlug, deleteBehavior, docsEnableDrafts, docsSetId, existing, manifest, markdownFieldName, now, payload, plan, publishMode, syncRunId })=>{
12
+ export const applyDocsSync = async ({ collectionSlug, deleteBehavior, docsEnableDrafts, docsSetId, existing, manifest, markdownFieldName, now, payload, plan, publish, syncRunId })=>{
13
13
  const existingBySourcePath = new Map(existing.map((record)=>[
14
14
  record.sourcePath,
15
15
  record
@@ -52,7 +52,7 @@ export const applyDocsSync = async ({ collectionSlug, deleteBehavior, docsEnable
52
52
  manifest,
53
53
  markdownFieldName,
54
54
  now,
55
- publishMode,
55
+ publish,
56
56
  syncRunId
57
57
  }),
58
58
  overrideAccess: true
@@ -71,14 +71,13 @@ export const applyDocsSync = async ({ collectionSlug, deleteBehavior, docsEnable
71
71
  id: current.id,
72
72
  collection: collectionSlug,
73
73
  data: buildDocsData({
74
- current,
75
74
  desired: change.desired,
76
75
  docsEnableDrafts,
77
76
  docsSetId,
78
77
  manifest,
79
78
  markdownFieldName,
80
79
  now,
81
- publishMode,
80
+ publish,
82
81
  syncRunId
83
82
  }),
84
83
  overrideAccess: true
@@ -97,14 +96,13 @@ export const applyDocsSync = async ({ collectionSlug, deleteBehavior, docsEnable
97
96
  id: current.id,
98
97
  collection: collectionSlug,
99
98
  data: buildDocsData({
100
- current,
101
99
  desired: change.desired,
102
100
  docsEnableDrafts,
103
101
  docsSetId,
104
102
  manifest,
105
103
  markdownFieldName,
106
104
  now,
107
- publishMode,
105
+ publish,
108
106
  syncRunId
109
107
  }),
110
108
  overrideAccess: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/payload/applyDocsSync.ts"],"sourcesContent":["import type {\n DocsDeleteBehavior,\n DocsSyncPlan,\n ValidatedDocsManifest,\n} from '../sync/index.js'\nimport type { DocsSyncConflict } from './docsConflicts.js'\nimport type { DocsPublishMode } from './docsData.js'\nimport type { ExistingPayloadDocsRecord } from './existingDocs.js'\n\nimport { findDocsSyncConflicts } from './docsConflicts.js'\nimport { buildArchiveData, buildDocsData } from './docsData.js'\n\nexport type ApplyDocsSyncPayloadOperations = {\n create: (args: {\n collection: string\n data: Record<string, unknown>\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n delete?: (args: {\n collection: string\n id: string\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n update: (args: {\n collection: string\n data: Record<string, unknown>\n id: string\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n}\n\nexport type ApplyDocsSyncResult =\n | {\n conflicts: DocsSyncConflict[]\n ok: false\n }\n | {\n ok: true\n writes: {\n archive: number\n create: number\n delete: number\n draft: number\n reactivate: number\n update: number\n }\n }\n\nexport const assertApplyDeleteBehaviorSupported = (\n deleteBehavior: DocsDeleteBehavior,\n {\n allowHardDelete = false,\n docsEnableDrafts = false,\n }: {\n allowHardDelete?: boolean\n docsEnableDrafts?: boolean\n } = {},\n): boolean => {\n if (deleteBehavior === 'archive' || deleteBehavior === 'ignore') {\n return true\n }\n\n if (deleteBehavior === 'draft') {\n return docsEnableDrafts\n }\n\n return allowHardDelete\n}\n\nexport const applyDocsSync = async ({\n collectionSlug,\n deleteBehavior,\n docsEnableDrafts,\n docsSetId,\n existing,\n manifest,\n markdownFieldName,\n now,\n payload,\n plan,\n publishMode,\n syncRunId,\n}: {\n collectionSlug: string\n deleteBehavior: DocsDeleteBehavior\n docsEnableDrafts: boolean\n docsSetId?: number | string\n existing: ExistingPayloadDocsRecord[]\n manifest: ValidatedDocsManifest\n markdownFieldName: string\n now: Date\n payload: ApplyDocsSyncPayloadOperations\n plan: DocsSyncPlan\n publishMode: DocsPublishMode\n syncRunId?: number | string\n}): Promise<ApplyDocsSyncResult> => {\n const existingBySourcePath = new Map(\n existing.map((record) => [record.sourcePath, record]),\n )\n const reactivations = plan.unchanged.filter((change) => change.current?.archived)\n const conflicts = findDocsSyncConflicts({\n existingBySourcePath,\n plannedChanges: [\n ...plan.update,\n ...plan.archive,\n ...plan.draft,\n ...plan.delete,\n ...reactivations,\n ],\n })\n\n if (conflicts.length > 0) {\n return {\n conflicts,\n ok: false,\n }\n }\n\n const writes = {\n archive: 0,\n create: 0,\n delete: 0,\n draft: 0,\n reactivate: 0,\n update: 0,\n }\n\n for (const change of plan.create) {\n if (!change.desired) {\n continue\n }\n\n await payload.create({\n collection: collectionSlug,\n data: buildDocsData({\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publishMode,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.create += 1\n }\n\n for (const change of plan.update) {\n if (!change.desired) {\n continue\n }\n\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildDocsData({\n current,\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publishMode,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.update += 1\n }\n\n for (const change of reactivations) {\n if (!change.desired) {\n continue\n }\n\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildDocsData({\n current,\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publishMode,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.reactivate += 1\n }\n\n if (deleteBehavior === 'archive') {\n for (const change of plan.archive) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildArchiveData({\n docsEnableDrafts,\n now,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.archive += 1\n }\n }\n\n if (deleteBehavior === 'draft') {\n for (const change of plan.draft) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildArchiveData({\n docsEnableDrafts,\n draftMissing: true,\n now,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.draft += 1\n }\n }\n\n if (deleteBehavior === 'delete') {\n if (!payload.delete) {\n throw new Error('Payload delete operation is required for hard delete.')\n }\n\n for (const change of plan.delete) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.delete({\n id: current.id,\n collection: collectionSlug,\n overrideAccess: true,\n })\n writes.delete += 1\n }\n }\n\n return {\n ok: true,\n writes,\n }\n}\n"],"names":["findDocsSyncConflicts","buildArchiveData","buildDocsData","assertApplyDeleteBehaviorSupported","deleteBehavior","allowHardDelete","docsEnableDrafts","applyDocsSync","collectionSlug","docsSetId","existing","manifest","markdownFieldName","now","payload","plan","publishMode","syncRunId","existingBySourcePath","Map","map","record","sourcePath","reactivations","unchanged","filter","change","current","archived","conflicts","plannedChanges","update","archive","draft","delete","length","ok","writes","create","reactivate","desired","collection","data","overrideAccess","get","id","draftMissing","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/payload/applyDocsSync.ts"],"sourcesContent":["import type { DocsDeleteBehavior, DocsSyncPlan, ValidatedDocsManifest } from '../sync/index.js'\nimport type { DocsSyncConflict } from './docsConflicts.js'\nimport type { ExistingPayloadDocsRecord } from './existingDocs.js'\n\nimport { findDocsSyncConflicts } from './docsConflicts.js'\nimport { buildArchiveData, buildDocsData } from './docsData.js'\n\nexport type ApplyDocsSyncPayloadOperations = {\n create: (args: {\n collection: string\n data: Record<string, unknown>\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n delete?: (args: {\n collection: string\n id: string\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n update: (args: {\n collection: string\n data: Record<string, unknown>\n id: string\n overrideAccess?: boolean\n }) => Promise<Record<string, unknown>>\n}\n\nexport type ApplyDocsSyncResult =\n | {\n conflicts: DocsSyncConflict[]\n ok: false\n }\n | {\n ok: true\n writes: {\n archive: number\n create: number\n delete: number\n draft: number\n reactivate: number\n update: number\n }\n }\n\nexport const assertApplyDeleteBehaviorSupported = (\n deleteBehavior: DocsDeleteBehavior,\n {\n allowHardDelete = false,\n docsEnableDrafts = false,\n }: {\n allowHardDelete?: boolean\n docsEnableDrafts?: boolean\n } = {},\n): boolean => {\n if (deleteBehavior === 'archive' || deleteBehavior === 'ignore') {\n return true\n }\n\n if (deleteBehavior === 'draft') {\n return docsEnableDrafts\n }\n\n return allowHardDelete\n}\n\nexport const applyDocsSync = async ({\n collectionSlug,\n deleteBehavior,\n docsEnableDrafts,\n docsSetId,\n existing,\n manifest,\n markdownFieldName,\n now,\n payload,\n plan,\n publish,\n syncRunId,\n}: {\n collectionSlug: string\n deleteBehavior: DocsDeleteBehavior\n docsEnableDrafts: boolean\n docsSetId?: number | string\n existing: ExistingPayloadDocsRecord[]\n manifest: ValidatedDocsManifest\n markdownFieldName: string\n now: Date\n payload: ApplyDocsSyncPayloadOperations\n plan: DocsSyncPlan\n publish: boolean\n syncRunId?: number | string\n}): Promise<ApplyDocsSyncResult> => {\n const existingBySourcePath = new Map(existing.map((record) => [record.sourcePath, record]))\n const reactivations = plan.unchanged.filter((change) => change.current?.archived)\n const conflicts = findDocsSyncConflicts({\n existingBySourcePath,\n plannedChanges: [\n ...plan.update,\n ...plan.archive,\n ...plan.draft,\n ...plan.delete,\n ...reactivations,\n ],\n })\n\n if (conflicts.length > 0) {\n return {\n conflicts,\n ok: false,\n }\n }\n\n const writes = {\n archive: 0,\n create: 0,\n delete: 0,\n draft: 0,\n reactivate: 0,\n update: 0,\n }\n\n for (const change of plan.create) {\n if (!change.desired) {\n continue\n }\n\n await payload.create({\n collection: collectionSlug,\n data: buildDocsData({\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publish,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.create += 1\n }\n\n for (const change of plan.update) {\n if (!change.desired) {\n continue\n }\n\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildDocsData({\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publish,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.update += 1\n }\n\n for (const change of reactivations) {\n if (!change.desired) {\n continue\n }\n\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildDocsData({\n desired: change.desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publish,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.reactivate += 1\n }\n\n if (deleteBehavior === 'archive') {\n for (const change of plan.archive) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildArchiveData({\n docsEnableDrafts,\n now,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.archive += 1\n }\n }\n\n if (deleteBehavior === 'draft') {\n for (const change of plan.draft) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.update({\n id: current.id,\n collection: collectionSlug,\n data: buildArchiveData({\n docsEnableDrafts,\n draftMissing: true,\n now,\n syncRunId,\n }),\n overrideAccess: true,\n })\n writes.draft += 1\n }\n }\n\n if (deleteBehavior === 'delete') {\n if (!payload.delete) {\n throw new Error('Payload delete operation is required for hard delete.')\n }\n\n for (const change of plan.delete) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n continue\n }\n\n await payload.delete({\n id: current.id,\n collection: collectionSlug,\n overrideAccess: true,\n })\n writes.delete += 1\n }\n }\n\n return {\n ok: true,\n writes,\n }\n}\n"],"names":["findDocsSyncConflicts","buildArchiveData","buildDocsData","assertApplyDeleteBehaviorSupported","deleteBehavior","allowHardDelete","docsEnableDrafts","applyDocsSync","collectionSlug","docsSetId","existing","manifest","markdownFieldName","now","payload","plan","publish","syncRunId","existingBySourcePath","Map","map","record","sourcePath","reactivations","unchanged","filter","change","current","archived","conflicts","plannedChanges","update","archive","draft","delete","length","ok","writes","create","reactivate","desired","collection","data","overrideAccess","get","id","draftMissing","Error"],"mappings":"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"}
@@ -20,7 +20,18 @@ export const findDocsSyncConflicts = ({ existingBySourcePath, plannedChanges })=
20
20
  continue;
21
21
  }
22
22
  const currentContentHash = sha256Hex(current.content ?? '');
23
- if (currentContentHash !== current.sync.sourceHashAtLastSync) {
23
+ const expectedContentHash = current.sync.contentHashAtLastSync;
24
+ if (expectedContentHash) {
25
+ if (currentContentHash !== expectedContentHash) {
26
+ conflicts.push({
27
+ reason: 'current_content_hash_mismatch',
28
+ route: current.route,
29
+ sourcePath: current.sourcePath
30
+ });
31
+ }
32
+ continue;
33
+ }
34
+ if (currentContentHash !== current.sync.sourceHashAtLastSync && current.sourceHash !== current.sync.sourceHashAtLastSync) {
24
35
  conflicts.push({
25
36
  reason: 'current_content_hash_mismatch',
26
37
  route: current.route,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/payload/docsConflicts.ts"],"sourcesContent":["import type { PlannedDocChange } from '../sync/index.js'\nimport type { ExistingPayloadDocsRecord } from './existingDocs.js'\n\nimport { MANAGED_BY } from '../constants.js'\nimport { sha256Hex } from '../sync/index.js'\n\nexport type DocsSyncConflictReason =\n | 'current_content_hash_mismatch'\n | 'missing_current_record'\n | 'unmanaged_record'\n\nexport type DocsSyncConflict = {\n reason: DocsSyncConflictReason\n route?: string\n sourcePath: string\n}\n\nexport const findDocsSyncConflicts = ({\n existingBySourcePath,\n plannedChanges,\n}: {\n existingBySourcePath: Map<string, ExistingPayloadDocsRecord>\n plannedChanges: PlannedDocChange[]\n}): DocsSyncConflict[] => {\n const conflicts: DocsSyncConflict[] = []\n\n for (const change of plannedChanges) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n conflicts.push({\n reason: 'missing_current_record',\n sourcePath: change.sourcePath,\n })\n continue\n }\n\n if (current.sync?.managedBy !== MANAGED_BY) {\n conflicts.push({\n reason: 'unmanaged_record',\n route: current.route,\n sourcePath: current.sourcePath,\n })\n continue\n }\n\n const currentContentHash = sha256Hex(current.content ?? '')\n\n if (currentContentHash !== current.sync.sourceHashAtLastSync) {\n conflicts.push({\n reason: 'current_content_hash_mismatch',\n route: current.route,\n sourcePath: current.sourcePath,\n })\n }\n }\n\n return conflicts\n}\n\n"],"names":["MANAGED_BY","sha256Hex","findDocsSyncConflicts","existingBySourcePath","plannedChanges","conflicts","change","current","get","sourcePath","push","reason","sync","managedBy","route","currentContentHash","content","sourceHashAtLastSync"],"mappings":"AAGA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,mBAAkB;AAa5C,OAAO,MAAMC,wBAAwB,CAAC,EACpCC,oBAAoB,EACpBC,cAAc,EAIf;IACC,MAAMC,YAAgC,EAAE;IAExC,KAAK,MAAMC,UAAUF,eAAgB;QACnC,MAAMG,UAAUJ,qBAAqBK,GAAG,CAACF,OAAOG,UAAU;QAE1D,IAAI,CAACF,SAAS;YACZF,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRF,YAAYH,OAAOG,UAAU;YAC/B;YACA;QACF;QAEA,IAAIF,QAAQK,IAAI,EAAEC,cAAcb,YAAY;YAC1CK,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRG,OAAOP,QAAQO,KAAK;gBACpBL,YAAYF,QAAQE,UAAU;YAChC;YACA;QACF;QAEA,MAAMM,qBAAqBd,UAAUM,QAAQS,OAAO,IAAI;QAExD,IAAID,uBAAuBR,QAAQK,IAAI,CAACK,oBAAoB,EAAE;YAC5DZ,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRG,OAAOP,QAAQO,KAAK;gBACpBL,YAAYF,QAAQE,UAAU;YAChC;QACF;IACF;IAEA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/payload/docsConflicts.ts"],"sourcesContent":["import type { PlannedDocChange } from '../sync/index.js'\nimport type { ExistingPayloadDocsRecord } from './existingDocs.js'\n\nimport { MANAGED_BY } from '../constants.js'\nimport { sha256Hex } from '../sync/index.js'\n\nexport type DocsSyncConflictReason =\n | 'current_content_hash_mismatch'\n | 'missing_current_record'\n | 'unmanaged_record'\n\nexport type DocsSyncConflict = {\n reason: DocsSyncConflictReason\n route?: string\n sourcePath: string\n}\n\nexport const findDocsSyncConflicts = ({\n existingBySourcePath,\n plannedChanges,\n}: {\n existingBySourcePath: Map<string, ExistingPayloadDocsRecord>\n plannedChanges: PlannedDocChange[]\n}): DocsSyncConflict[] => {\n const conflicts: DocsSyncConflict[] = []\n\n for (const change of plannedChanges) {\n const current = existingBySourcePath.get(change.sourcePath)\n\n if (!current) {\n conflicts.push({\n reason: 'missing_current_record',\n sourcePath: change.sourcePath,\n })\n continue\n }\n\n if (current.sync?.managedBy !== MANAGED_BY) {\n conflicts.push({\n reason: 'unmanaged_record',\n route: current.route,\n sourcePath: current.sourcePath,\n })\n continue\n }\n\n const currentContentHash = sha256Hex(current.content ?? '')\n const expectedContentHash = current.sync.contentHashAtLastSync\n\n if (expectedContentHash) {\n if (currentContentHash !== expectedContentHash) {\n conflicts.push({\n reason: 'current_content_hash_mismatch',\n route: current.route,\n sourcePath: current.sourcePath,\n })\n }\n\n continue\n }\n\n if (\n currentContentHash !== current.sync.sourceHashAtLastSync &&\n current.sourceHash !== current.sync.sourceHashAtLastSync\n ) {\n conflicts.push({\n reason: 'current_content_hash_mismatch',\n route: current.route,\n sourcePath: current.sourcePath,\n })\n }\n }\n\n return conflicts\n}\n"],"names":["MANAGED_BY","sha256Hex","findDocsSyncConflicts","existingBySourcePath","plannedChanges","conflicts","change","current","get","sourcePath","push","reason","sync","managedBy","route","currentContentHash","content","expectedContentHash","contentHashAtLastSync","sourceHashAtLastSync","sourceHash"],"mappings":"AAGA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,mBAAkB;AAa5C,OAAO,MAAMC,wBAAwB,CAAC,EACpCC,oBAAoB,EACpBC,cAAc,EAIf;IACC,MAAMC,YAAgC,EAAE;IAExC,KAAK,MAAMC,UAAUF,eAAgB;QACnC,MAAMG,UAAUJ,qBAAqBK,GAAG,CAACF,OAAOG,UAAU;QAE1D,IAAI,CAACF,SAAS;YACZF,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRF,YAAYH,OAAOG,UAAU;YAC/B;YACA;QACF;QAEA,IAAIF,QAAQK,IAAI,EAAEC,cAAcb,YAAY;YAC1CK,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRG,OAAOP,QAAQO,KAAK;gBACpBL,YAAYF,QAAQE,UAAU;YAChC;YACA;QACF;QAEA,MAAMM,qBAAqBd,UAAUM,QAAQS,OAAO,IAAI;QACxD,MAAMC,sBAAsBV,QAAQK,IAAI,CAACM,qBAAqB;QAE9D,IAAID,qBAAqB;YACvB,IAAIF,uBAAuBE,qBAAqB;gBAC9CZ,UAAUK,IAAI,CAAC;oBACbC,QAAQ;oBACRG,OAAOP,QAAQO,KAAK;oBACpBL,YAAYF,QAAQE,UAAU;gBAChC;YACF;YAEA;QACF;QAEA,IACEM,uBAAuBR,QAAQK,IAAI,CAACO,oBAAoB,IACxDZ,QAAQa,UAAU,KAAKb,QAAQK,IAAI,CAACO,oBAAoB,EACxD;YACAd,UAAUK,IAAI,CAAC;gBACbC,QAAQ;gBACRG,OAAOP,QAAQO,KAAK;gBACpBL,YAAYF,QAAQE,UAAU;YAChC;QACF;IACF;IAEA,OAAOJ;AACT,EAAC"}
@@ -1,20 +1,17 @@
1
1
  import type { ValidatedDocsManifest, ValidatedDocsManifestFile } from '../sync/index.js';
2
- import type { ExistingPayloadDocsRecord } from './existingDocs.js';
3
2
  export type BuildDocsDataInput = {
4
- current?: ExistingPayloadDocsRecord;
5
3
  desired: ValidatedDocsManifestFile;
6
4
  docsEnableDrafts: boolean;
7
5
  docsSetId?: number | string;
8
6
  manifest: ValidatedDocsManifest;
9
7
  markdownFieldName: string;
10
8
  now: Date;
11
- publishMode: DocsPublishMode;
9
+ publish: boolean;
12
10
  syncRunId?: number | string;
13
11
  };
14
12
  export type DocsDraftStatus = 'draft' | 'published';
15
- export type DocsPublishMode = 'draft' | 'preserve' | 'published';
16
13
  export declare const getDocsDepth: (sourcePath: string) => number;
17
- export declare const buildDocsData: ({ current, desired, docsEnableDrafts, docsSetId, manifest, markdownFieldName, now, publishMode, syncRunId, }: BuildDocsDataInput) => Record<string, unknown>;
14
+ export declare const buildDocsData: ({ desired, docsEnableDrafts, docsSetId, manifest, markdownFieldName, now, publish, syncRunId, }: BuildDocsDataInput) => Record<string, unknown>;
18
15
  export declare const buildArchiveData: ({ docsEnableDrafts, draftMissing, now, syncRunId, }: {
19
16
  docsEnableDrafts?: boolean;
20
17
  draftMissing?: boolean;
@@ -1,19 +1,16 @@
1
1
  import { MANAGED_BY } from '../constants.js';
2
+ import { sha256Hex } from '../sync/index.js';
2
3
  export const getDocsDepth = (sourcePath)=>sourcePath === 'index.md' ? 0 : Math.max(0, sourcePath.split('/').length - 1);
3
- const getDraftStatusForDocsData = ({ current, docsEnableDrafts, publishMode })=>{
4
+ const getDraftStatusForDocsData = ({ docsEnableDrafts, publish })=>{
4
5
  if (!docsEnableDrafts) {
5
6
  return undefined;
6
7
  }
7
- if (publishMode === 'draft' || publishMode === 'published') {
8
- return publishMode;
9
- }
10
- return current ? current.status : 'draft';
8
+ return publish ? 'published' : 'draft';
11
9
  };
12
- export const buildDocsData = ({ current, desired, docsEnableDrafts, docsSetId, manifest, markdownFieldName, now, publishMode, syncRunId })=>{
10
+ export const buildDocsData = ({ desired, docsEnableDrafts, docsSetId, manifest, markdownFieldName, now, publish, syncRunId })=>{
13
11
  const draftStatus = getDraftStatusForDocsData({
14
- current,
15
12
  docsEnableDrafts,
16
- publishMode
13
+ publish
17
14
  });
18
15
  return {
19
16
  ...draftStatus ? {
@@ -33,6 +30,7 @@ export const buildDocsData = ({ current, desired, docsEnableDrafts, docsSetId, m
33
30
  sync: {
34
31
  archived: false,
35
32
  archivedAt: null,
33
+ contentHashAtLastSync: sha256Hex(desired.content),
36
34
  lastSyncedAt: now.toISOString(),
37
35
  lastSyncRunId: syncRunId,
38
36
  managedBy: MANAGED_BY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/payload/docsData.ts"],"sourcesContent":["import type {\n ValidatedDocsManifest,\n ValidatedDocsManifestFile,\n} from '../sync/index.js'\nimport type { ExistingPayloadDocsRecord } from './existingDocs.js'\n\nimport { MANAGED_BY } from '../constants.js'\n\nexport type BuildDocsDataInput = {\n current?: ExistingPayloadDocsRecord\n desired: ValidatedDocsManifestFile\n docsEnableDrafts: boolean\n docsSetId?: number | string\n manifest: ValidatedDocsManifest\n markdownFieldName: string\n now: Date\n publishMode: DocsPublishMode\n syncRunId?: number | string\n}\n\nexport type DocsDraftStatus = 'draft' | 'published'\n\nexport type DocsPublishMode = 'draft' | 'preserve' | 'published'\n\nexport const getDocsDepth = (sourcePath: string): number =>\n sourcePath === 'index.md' ? 0 : Math.max(0, sourcePath.split('/').length - 1)\n\nconst getDraftStatusForDocsData = ({\n current,\n docsEnableDrafts,\n publishMode,\n}: {\n current?: ExistingPayloadDocsRecord\n docsEnableDrafts: boolean\n publishMode: DocsPublishMode\n}): DocsDraftStatus | undefined => {\n if (!docsEnableDrafts) {\n return undefined\n }\n\n if (publishMode === 'draft' || publishMode === 'published') {\n return publishMode\n }\n\n return current ? current.status : 'draft'\n}\n\nexport const buildDocsData = ({\n current,\n desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publishMode,\n syncRunId,\n}: BuildDocsDataInput): Record<string, unknown> => {\n const draftStatus = getDraftStatusForDocsData({\n current,\n docsEnableDrafts,\n publishMode,\n })\n\n return {\n ...(draftStatus ? { _status: draftStatus } : {}),\n depth: getDocsDepth(desired.path),\n description: desired.frontmatter.description,\n ...(docsSetId ? { docsSet: docsSetId } : {}),\n [markdownFieldName]: desired.content,\n navTitle: desired.frontmatter.navTitle,\n order: desired.frontmatter.order ?? 0,\n route: desired.route,\n sourceHash: desired.sha256,\n sourcePath: desired.path,\n sync: {\n archived: false,\n archivedAt: null,\n lastSyncedAt: now.toISOString(),\n lastSyncRunId: syncRunId,\n managedBy: MANAGED_BY,\n sourceHashAtLastSync: desired.sha256,\n sourceId: manifest.source.id,\n sourcePath: desired.path,\n },\n title: desired.title,\n }\n}\n\nexport const buildArchiveData = ({\n docsEnableDrafts = false,\n draftMissing = false,\n now,\n syncRunId,\n}: {\n docsEnableDrafts?: boolean\n draftMissing?: boolean\n now: Date\n syncRunId?: number | string\n}): Record<string, unknown> => ({\n ...(draftMissing && docsEnableDrafts ? { _status: 'draft' } : {}),\n sync: {\n archived: true,\n archivedAt: now.toISOString(),\n lastSyncedAt: now.toISOString(),\n lastSyncRunId: syncRunId,\n managedBy: MANAGED_BY,\n },\n})\n"],"names":["MANAGED_BY","getDocsDepth","sourcePath","Math","max","split","length","getDraftStatusForDocsData","current","docsEnableDrafts","publishMode","undefined","status","buildDocsData","desired","docsSetId","manifest","markdownFieldName","now","syncRunId","draftStatus","_status","depth","path","description","frontmatter","docsSet","content","navTitle","order","route","sourceHash","sha256","sync","archived","archivedAt","lastSyncedAt","toISOString","lastSyncRunId","managedBy","sourceHashAtLastSync","sourceId","source","id","title","buildArchiveData","draftMissing"],"mappings":"AAMA,SAASA,UAAU,QAAQ,kBAAiB;AAkB5C,OAAO,MAAMC,eAAe,CAACC,aAC3BA,eAAe,aAAa,IAAIC,KAAKC,GAAG,CAAC,GAAGF,WAAWG,KAAK,CAAC,KAAKC,MAAM,GAAG,GAAE;AAE/E,MAAMC,4BAA4B,CAAC,EACjCC,OAAO,EACPC,gBAAgB,EAChBC,WAAW,EAKZ;IACC,IAAI,CAACD,kBAAkB;QACrB,OAAOE;IACT;IAEA,IAAID,gBAAgB,WAAWA,gBAAgB,aAAa;QAC1D,OAAOA;IACT;IAEA,OAAOF,UAAUA,QAAQI,MAAM,GAAG;AACpC;AAEA,OAAO,MAAMC,gBAAgB,CAAC,EAC5BL,OAAO,EACPM,OAAO,EACPL,gBAAgB,EAChBM,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,GAAG,EACHR,WAAW,EACXS,SAAS,EACU;IACnB,MAAMC,cAAcb,0BAA0B;QAC5CC;QACAC;QACAC;IACF;IAEA,OAAO;QACL,GAAIU,cAAc;YAAEC,SAASD;QAAY,IAAI,CAAC,CAAC;QAC/CE,OAAOrB,aAAaa,QAAQS,IAAI;QAChCC,aAAaV,QAAQW,WAAW,CAACD,WAAW;QAC5C,GAAIT,YAAY;YAAEW,SAASX;QAAU,IAAI,CAAC,CAAC;QAC3C,CAACE,kBAAkB,EAAEH,QAAQa,OAAO;QACpCC,UAAUd,QAAQW,WAAW,CAACG,QAAQ;QACtCC,OAAOf,QAAQW,WAAW,CAACI,KAAK,IAAI;QACpCC,OAAOhB,QAAQgB,KAAK;QACpBC,YAAYjB,QAAQkB,MAAM;QAC1B9B,YAAYY,QAAQS,IAAI;QACxBU,MAAM;YACJC,UAAU;YACVC,YAAY;YACZC,cAAclB,IAAImB,WAAW;YAC7BC,eAAenB;YACfoB,WAAWvC;YACXwC,sBAAsB1B,QAAQkB,MAAM;YACpCS,UAAUzB,SAAS0B,MAAM,CAACC,EAAE;YAC5BzC,YAAYY,QAAQS,IAAI;QAC1B;QACAqB,OAAO9B,QAAQ8B,KAAK;IACtB;AACF,EAAC;AAED,OAAO,MAAMC,mBAAmB,CAAC,EAC/BpC,mBAAmB,KAAK,EACxBqC,eAAe,KAAK,EACpB5B,GAAG,EACHC,SAAS,EAMV,GAA+B,CAAA;QAC9B,GAAI2B,gBAAgBrC,mBAAmB;YAAEY,SAAS;QAAQ,IAAI,CAAC,CAAC;QAChEY,MAAM;YACJC,UAAU;YACVC,YAAYjB,IAAImB,WAAW;YAC3BD,cAAclB,IAAImB,WAAW;YAC7BC,eAAenB;YACfoB,WAAWvC;QACb;IACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../src/payload/docsData.ts"],"sourcesContent":["import type { ValidatedDocsManifest, ValidatedDocsManifestFile } from '../sync/index.js'\n\nimport { MANAGED_BY } from '../constants.js'\nimport { sha256Hex } from '../sync/index.js'\n\nexport type BuildDocsDataInput = {\n desired: ValidatedDocsManifestFile\n docsEnableDrafts: boolean\n docsSetId?: number | string\n manifest: ValidatedDocsManifest\n markdownFieldName: string\n now: Date\n publish: boolean\n syncRunId?: number | string\n}\n\nexport type DocsDraftStatus = 'draft' | 'published'\n\nexport const getDocsDepth = (sourcePath: string): number =>\n sourcePath === 'index.md' ? 0 : Math.max(0, sourcePath.split('/').length - 1)\n\nconst getDraftStatusForDocsData = ({\n docsEnableDrafts,\n publish,\n}: {\n docsEnableDrafts: boolean\n publish: boolean\n}): DocsDraftStatus | undefined => {\n if (!docsEnableDrafts) {\n return undefined\n }\n\n return publish ? 'published' : 'draft'\n}\n\nexport const buildDocsData = ({\n desired,\n docsEnableDrafts,\n docsSetId,\n manifest,\n markdownFieldName,\n now,\n publish,\n syncRunId,\n}: BuildDocsDataInput): Record<string, unknown> => {\n const draftStatus = getDraftStatusForDocsData({\n docsEnableDrafts,\n publish,\n })\n\n return {\n ...(draftStatus ? { _status: draftStatus } : {}),\n depth: getDocsDepth(desired.path),\n description: desired.frontmatter.description,\n ...(docsSetId ? { docsSet: docsSetId } : {}),\n [markdownFieldName]: desired.content,\n navTitle: desired.frontmatter.navTitle,\n order: desired.frontmatter.order ?? 0,\n route: desired.route,\n sourceHash: desired.sha256,\n sourcePath: desired.path,\n sync: {\n archived: false,\n archivedAt: null,\n contentHashAtLastSync: sha256Hex(desired.content),\n lastSyncedAt: now.toISOString(),\n lastSyncRunId: syncRunId,\n managedBy: MANAGED_BY,\n sourceHashAtLastSync: desired.sha256,\n sourceId: manifest.source.id,\n sourcePath: desired.path,\n },\n title: desired.title,\n }\n}\n\nexport const buildArchiveData = ({\n docsEnableDrafts = false,\n draftMissing = false,\n now,\n syncRunId,\n}: {\n docsEnableDrafts?: boolean\n draftMissing?: boolean\n now: Date\n syncRunId?: number | string\n}): Record<string, unknown> => ({\n ...(draftMissing && docsEnableDrafts ? { _status: 'draft' } : {}),\n sync: {\n archived: true,\n archivedAt: now.toISOString(),\n lastSyncedAt: now.toISOString(),\n lastSyncRunId: syncRunId,\n managedBy: MANAGED_BY,\n },\n})\n"],"names":["MANAGED_BY","sha256Hex","getDocsDepth","sourcePath","Math","max","split","length","getDraftStatusForDocsData","docsEnableDrafts","publish","undefined","buildDocsData","desired","docsSetId","manifest","markdownFieldName","now","syncRunId","draftStatus","_status","depth","path","description","frontmatter","docsSet","content","navTitle","order","route","sourceHash","sha256","sync","archived","archivedAt","contentHashAtLastSync","lastSyncedAt","toISOString","lastSyncRunId","managedBy","sourceHashAtLastSync","sourceId","source","id","title","buildArchiveData","draftMissing"],"mappings":"AAEA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,mBAAkB;AAe5C,OAAO,MAAMC,eAAe,CAACC,aAC3BA,eAAe,aAAa,IAAIC,KAAKC,GAAG,CAAC,GAAGF,WAAWG,KAAK,CAAC,KAAKC,MAAM,GAAG,GAAE;AAE/E,MAAMC,4BAA4B,CAAC,EACjCC,gBAAgB,EAChBC,OAAO,EAIR;IACC,IAAI,CAACD,kBAAkB;QACrB,OAAOE;IACT;IAEA,OAAOD,UAAU,cAAc;AACjC;AAEA,OAAO,MAAME,gBAAgB,CAAC,EAC5BC,OAAO,EACPJ,gBAAgB,EAChBK,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,GAAG,EACHP,OAAO,EACPQ,SAAS,EACU;IACnB,MAAMC,cAAcX,0BAA0B;QAC5CC;QACAC;IACF;IAEA,OAAO;QACL,GAAIS,cAAc;YAAEC,SAASD;QAAY,IAAI,CAAC,CAAC;QAC/CE,OAAOnB,aAAaW,QAAQS,IAAI;QAChCC,aAAaV,QAAQW,WAAW,CAACD,WAAW;QAC5C,GAAIT,YAAY;YAAEW,SAASX;QAAU,IAAI,CAAC,CAAC;QAC3C,CAACE,kBAAkB,EAAEH,QAAQa,OAAO;QACpCC,UAAUd,QAAQW,WAAW,CAACG,QAAQ;QACtCC,OAAOf,QAAQW,WAAW,CAACI,KAAK,IAAI;QACpCC,OAAOhB,QAAQgB,KAAK;QACpBC,YAAYjB,QAAQkB,MAAM;QAC1B5B,YAAYU,QAAQS,IAAI;QACxBU,MAAM;YACJC,UAAU;YACVC,YAAY;YACZC,uBAAuBlC,UAAUY,QAAQa,OAAO;YAChDU,cAAcnB,IAAIoB,WAAW;YAC7BC,eAAepB;YACfqB,WAAWvC;YACXwC,sBAAsB3B,QAAQkB,MAAM;YACpCU,UAAU1B,SAAS2B,MAAM,CAACC,EAAE;YAC5BxC,YAAYU,QAAQS,IAAI;QAC1B;QACAsB,OAAO/B,QAAQ+B,KAAK;IACtB;AACF,EAAC;AAED,OAAO,MAAMC,mBAAmB,CAAC,EAC/BpC,mBAAmB,KAAK,EACxBqC,eAAe,KAAK,EACpB7B,GAAG,EACHC,SAAS,EAMV,GAA+B,CAAA;QAC9B,GAAI4B,gBAAgBrC,mBAAmB;YAAEW,SAAS;QAAQ,IAAI,CAAC,CAAC;QAChEY,MAAM;YACJC,UAAU;YACVC,YAAYjB,IAAIoB,WAAW;YAC3BD,cAAcnB,IAAIoB,WAAW;YAC7BC,eAAepB;YACfqB,WAAWvC;QACb;IACF,CAAA,EAAE"}
@@ -18,6 +18,7 @@ export type ExistingPayloadDocsRecord = {
18
18
  sync?: {
19
19
  archived?: boolean;
20
20
  archivedAt?: null | string;
21
+ contentHashAtLastSync?: string;
21
22
  lastSyncedAt?: string;
22
23
  lastSyncRunId?: string;
23
24
  managedBy?: string;
@@ -36,6 +36,7 @@ const toExistingPayloadDocsRecord = ({ doc, markdownFieldName })=>{
36
36
  sync: sync ? {
37
37
  archived: typeof sync.archived === 'boolean' ? sync.archived : undefined,
38
38
  archivedAt: typeof sync.archivedAt === 'string' || sync.archivedAt === null ? sync.archivedAt : undefined,
39
+ contentHashAtLastSync: typeof sync.contentHashAtLastSync === 'string' ? sync.contentHashAtLastSync : undefined,
39
40
  lastSyncedAt: typeof sync.lastSyncedAt === 'string' ? sync.lastSyncedAt : undefined,
40
41
  lastSyncRunId: typeof sync.lastSyncRunId === 'string' ? sync.lastSyncRunId : undefined,
41
42
  managedBy: typeof sync.managedBy === 'string' ? sync.managedBy : undefined,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/payload/existingDocs.ts"],"sourcesContent":["import type { ExistingDocsRecord } from '../sync/index.js'\n\nexport type ExistingDocsPayloadOperations = {\n find: (args: {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n where?: unknown\n }) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type ExistingPayloadDocsRecord = {\n content?: string\n docsSetId?: number | string\n id: string\n status?: 'draft' | 'published'\n sync?: {\n archived?: boolean\n archivedAt?: null | string\n lastSyncedAt?: string\n lastSyncRunId?: string\n managedBy?: string\n sourceHashAtLastSync?: string\n sourceId?: string\n sourcePath?: string\n }\n} & ExistingDocsRecord\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst getRecordId = (doc: Record<string, unknown>): string | undefined => {\n if (typeof doc.id === 'string' || typeof doc.id === 'number') {\n return String(doc.id)\n }\n\n return undefined\n}\n\nconst getRelationshipId = (value: unknown): string | undefined => {\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value)\n }\n\n if (isRecord(value)) {\n return getRecordId(value)\n }\n\n return undefined\n}\n\nconst toExistingPayloadDocsRecord = ({\n doc,\n markdownFieldName,\n}: {\n doc: unknown\n markdownFieldName: string\n}): ExistingPayloadDocsRecord | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n\n if (!id || typeof doc.route !== 'string' || typeof doc.sourcePath !== 'string') {\n return undefined\n }\n\n const sync = isRecord(doc.sync) ? doc.sync : undefined\n const status =\n doc._status === 'draft' || doc._status === 'published'\n ? doc._status\n : undefined\n\n return {\n id,\n archived: typeof sync?.archived === 'boolean' ? sync.archived : undefined,\n content:\n typeof doc[markdownFieldName] === 'string' ? doc[markdownFieldName] : undefined,\n docsSetId: getRelationshipId(doc.docsSet),\n route: doc.route,\n sourceHash: typeof doc.sourceHash === 'string' ? doc.sourceHash : undefined,\n sourcePath: doc.sourcePath,\n status,\n sync: sync\n ? {\n archived: typeof sync.archived === 'boolean' ? sync.archived : undefined,\n archivedAt:\n typeof sync.archivedAt === 'string' || sync.archivedAt === null\n ? sync.archivedAt\n : undefined,\n lastSyncedAt:\n typeof sync.lastSyncedAt === 'string' ? sync.lastSyncedAt : undefined,\n lastSyncRunId:\n typeof sync.lastSyncRunId === 'string' ? sync.lastSyncRunId : undefined,\n managedBy: typeof sync.managedBy === 'string' ? sync.managedBy : undefined,\n sourceHashAtLastSync:\n typeof sync.sourceHashAtLastSync === 'string'\n ? sync.sourceHashAtLastSync\n : undefined,\n sourceId: typeof sync.sourceId === 'string' ? sync.sourceId : undefined,\n sourcePath: typeof sync.sourcePath === 'string' ? sync.sourcePath : undefined,\n }\n : undefined,\n title: typeof doc.title === 'string' ? doc.title : undefined,\n }\n}\n\nexport const toExistingDocsRecord = (\n doc: ExistingPayloadDocsRecord,\n): ExistingDocsRecord => ({\n archived: doc.archived,\n route: doc.route,\n sourceHash: doc.sourceHash,\n sourcePath: doc.sourcePath,\n title: doc.title,\n})\n\nexport const findExistingPayloadDocsRecords = async ({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n}: {\n collectionSlug: string\n docsSetId?: number | string\n markdownFieldName: string\n payload: ExistingDocsPayloadOperations\n sourceId: string\n}): Promise<ExistingPayloadDocsRecord[]> => {\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1000,\n overrideAccess: true,\n where: docsSetId\n ? {\n or: [\n {\n docsSet: {\n equals: docsSetId,\n },\n },\n {\n 'sync.sourceId': {\n equals: sourceId,\n },\n },\n ],\n }\n : {\n 'sync.sourceId': {\n equals: sourceId,\n },\n },\n })\n\n return result.docs\n .map((doc) =>\n toExistingPayloadDocsRecord({\n doc,\n markdownFieldName,\n }),\n )\n .filter((doc): doc is ExistingPayloadDocsRecord => doc !== undefined)\n}\n\nexport const findExistingDocsRecords = async ({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n}: {\n collectionSlug: string\n docsSetId?: number | string\n markdownFieldName: string\n payload: ExistingDocsPayloadOperations\n sourceId: string\n}): Promise<ExistingDocsRecord[]> => {\n const docs = await findExistingPayloadDocsRecords({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n })\n\n return docs.map(toExistingDocsRecord)\n}\n"],"names":["isRecord","value","Array","isArray","getRecordId","doc","id","String","undefined","getRelationshipId","toExistingPayloadDocsRecord","markdownFieldName","route","sourcePath","sync","status","_status","archived","content","docsSetId","docsSet","sourceHash","archivedAt","lastSyncedAt","lastSyncRunId","managedBy","sourceHashAtLastSync","sourceId","title","toExistingDocsRecord","findExistingPayloadDocsRecords","collectionSlug","payload","result","find","collection","depth","limit","overrideAccess","where","or","equals","docs","map","filter","findExistingDocsRecords"],"mappings":"AA+BA,MAAMA,WAAW,CAACC,QAChB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACC,MAAMC,OAAO,CAACF;AAEhE,MAAMG,cAAc,CAACC;IACnB,IAAI,OAAOA,IAAIC,EAAE,KAAK,YAAY,OAAOD,IAAIC,EAAE,KAAK,UAAU;QAC5D,OAAOC,OAAOF,IAAIC,EAAE;IACtB;IAEA,OAAOE;AACT;AAEA,MAAMC,oBAAoB,CAACR;IACzB,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU;QAC1D,OAAOM,OAAON;IAChB;IAEA,IAAID,SAASC,QAAQ;QACnB,OAAOG,YAAYH;IACrB;IAEA,OAAOO;AACT;AAEA,MAAME,8BAA8B,CAAC,EACnCL,GAAG,EACHM,iBAAiB,EAIlB;IACC,IAAI,CAACX,SAASK,MAAM;QAClB,OAAOG;IACT;IAEA,MAAMF,KAAKF,YAAYC;IAEvB,IAAI,CAACC,MAAM,OAAOD,IAAIO,KAAK,KAAK,YAAY,OAAOP,IAAIQ,UAAU,KAAK,UAAU;QAC9E,OAAOL;IACT;IAEA,MAAMM,OAAOd,SAASK,IAAIS,IAAI,IAAIT,IAAIS,IAAI,GAAGN;IAC7C,MAAMO,SACJV,IAAIW,OAAO,KAAK,WAAWX,IAAIW,OAAO,KAAK,cACvCX,IAAIW,OAAO,GACXR;IAEN,OAAO;QACLF;QACAW,UAAU,OAAOH,MAAMG,aAAa,YAAYH,KAAKG,QAAQ,GAAGT;QAChEU,SACE,OAAOb,GAAG,CAACM,kBAAkB,KAAK,WAAWN,GAAG,CAACM,kBAAkB,GAAGH;QACxEW,WAAWV,kBAAkBJ,IAAIe,OAAO;QACxCR,OAAOP,IAAIO,KAAK;QAChBS,YAAY,OAAOhB,IAAIgB,UAAU,KAAK,WAAWhB,IAAIgB,UAAU,GAAGb;QAClEK,YAAYR,IAAIQ,UAAU;QAC1BE;QACAD,MAAMA,OACF;YACEG,UAAU,OAAOH,KAAKG,QAAQ,KAAK,YAAYH,KAAKG,QAAQ,GAAGT;YAC/Dc,YACE,OAAOR,KAAKQ,UAAU,KAAK,YAAYR,KAAKQ,UAAU,KAAK,OACvDR,KAAKQ,UAAU,GACfd;YACNe,cACE,OAAOT,KAAKS,YAAY,KAAK,WAAWT,KAAKS,YAAY,GAAGf;YAC9DgB,eACE,OAAOV,KAAKU,aAAa,KAAK,WAAWV,KAAKU,aAAa,GAAGhB;YAChEiB,WAAW,OAAOX,KAAKW,SAAS,KAAK,WAAWX,KAAKW,SAAS,GAAGjB;YACjEkB,sBACE,OAAOZ,KAAKY,oBAAoB,KAAK,WACjCZ,KAAKY,oBAAoB,GACzBlB;YACNmB,UAAU,OAAOb,KAAKa,QAAQ,KAAK,WAAWb,KAAKa,QAAQ,GAAGnB;YAC9DK,YAAY,OAAOC,KAAKD,UAAU,KAAK,WAAWC,KAAKD,UAAU,GAAGL;QACtE,IACAA;QACJoB,OAAO,OAAOvB,IAAIuB,KAAK,KAAK,WAAWvB,IAAIuB,KAAK,GAAGpB;IACrD;AACF;AAEA,OAAO,MAAMqB,uBAAuB,CAClCxB,MACwB,CAAA;QACxBY,UAAUZ,IAAIY,QAAQ;QACtBL,OAAOP,IAAIO,KAAK;QAChBS,YAAYhB,IAAIgB,UAAU;QAC1BR,YAAYR,IAAIQ,UAAU;QAC1Be,OAAOvB,IAAIuB,KAAK;IAClB,CAAA,EAAE;AAEF,OAAO,MAAME,iCAAiC,OAAO,EACnDC,cAAc,EACdZ,SAAS,EACTR,iBAAiB,EACjBqB,OAAO,EACPL,QAAQ,EAOT;IACC,MAAMM,SAAS,MAAMD,QAAQE,IAAI,CAAC;QAChCC,YAAYJ;QACZK,OAAO;QACPC,OAAO;QACPC,gBAAgB;QAChBC,OAAOpB,YACH;YACEqB,IAAI;gBACF;oBACEpB,SAAS;wBACPqB,QAAQtB;oBACV;gBACF;gBACA;oBACE,iBAAiB;wBACfsB,QAAQd;oBACV;gBACF;aACD;QACH,IACA;YACE,iBAAiB;gBACfc,QAAQd;YACV;QACF;IACN;IAEA,OAAOM,OAAOS,IAAI,CACfC,GAAG,CAAC,CAACtC,MACJK,4BAA4B;YAC1BL;YACAM;QACF,IAEDiC,MAAM,CAAC,CAACvC,MAA0CA,QAAQG;AAC/D,EAAC;AAED,OAAO,MAAMqC,0BAA0B,OAAO,EAC5Cd,cAAc,EACdZ,SAAS,EACTR,iBAAiB,EACjBqB,OAAO,EACPL,QAAQ,EAOT;IACC,MAAMe,OAAO,MAAMZ,+BAA+B;QAChDC;QACAZ;QACAR;QACAqB;QACAL;IACF;IAEA,OAAOe,KAAKC,GAAG,CAACd;AAClB,EAAC"}
1
+ {"version":3,"sources":["../../src/payload/existingDocs.ts"],"sourcesContent":["import type { ExistingDocsRecord } from '../sync/index.js'\n\nexport type ExistingDocsPayloadOperations = {\n find: (args: {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n where?: unknown\n }) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type ExistingPayloadDocsRecord = {\n content?: string\n docsSetId?: number | string\n id: string\n status?: 'draft' | 'published'\n sync?: {\n archived?: boolean\n archivedAt?: null | string\n contentHashAtLastSync?: string\n lastSyncedAt?: string\n lastSyncRunId?: string\n managedBy?: string\n sourceHashAtLastSync?: string\n sourceId?: string\n sourcePath?: string\n }\n} & ExistingDocsRecord\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst getRecordId = (doc: Record<string, unknown>): string | undefined => {\n if (typeof doc.id === 'string' || typeof doc.id === 'number') {\n return String(doc.id)\n }\n\n return undefined\n}\n\nconst getRelationshipId = (value: unknown): string | undefined => {\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value)\n }\n\n if (isRecord(value)) {\n return getRecordId(value)\n }\n\n return undefined\n}\n\nconst toExistingPayloadDocsRecord = ({\n doc,\n markdownFieldName,\n}: {\n doc: unknown\n markdownFieldName: string\n}): ExistingPayloadDocsRecord | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n\n if (!id || typeof doc.route !== 'string' || typeof doc.sourcePath !== 'string') {\n return undefined\n }\n\n const sync = isRecord(doc.sync) ? doc.sync : undefined\n const status = doc._status === 'draft' || doc._status === 'published' ? doc._status : undefined\n\n return {\n id,\n archived: typeof sync?.archived === 'boolean' ? sync.archived : undefined,\n content: typeof doc[markdownFieldName] === 'string' ? doc[markdownFieldName] : undefined,\n docsSetId: getRelationshipId(doc.docsSet),\n route: doc.route,\n sourceHash: typeof doc.sourceHash === 'string' ? doc.sourceHash : undefined,\n sourcePath: doc.sourcePath,\n status,\n sync: sync\n ? {\n archived: typeof sync.archived === 'boolean' ? sync.archived : undefined,\n archivedAt:\n typeof sync.archivedAt === 'string' || sync.archivedAt === null\n ? sync.archivedAt\n : undefined,\n contentHashAtLastSync:\n typeof sync.contentHashAtLastSync === 'string' ? sync.contentHashAtLastSync : undefined,\n lastSyncedAt: typeof sync.lastSyncedAt === 'string' ? sync.lastSyncedAt : undefined,\n lastSyncRunId: typeof sync.lastSyncRunId === 'string' ? sync.lastSyncRunId : undefined,\n managedBy: typeof sync.managedBy === 'string' ? sync.managedBy : undefined,\n sourceHashAtLastSync:\n typeof sync.sourceHashAtLastSync === 'string' ? sync.sourceHashAtLastSync : undefined,\n sourceId: typeof sync.sourceId === 'string' ? sync.sourceId : undefined,\n sourcePath: typeof sync.sourcePath === 'string' ? sync.sourcePath : undefined,\n }\n : undefined,\n title: typeof doc.title === 'string' ? doc.title : undefined,\n }\n}\n\nexport const toExistingDocsRecord = (doc: ExistingPayloadDocsRecord): ExistingDocsRecord => ({\n archived: doc.archived,\n route: doc.route,\n sourceHash: doc.sourceHash,\n sourcePath: doc.sourcePath,\n title: doc.title,\n})\n\nexport const findExistingPayloadDocsRecords = async ({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n}: {\n collectionSlug: string\n docsSetId?: number | string\n markdownFieldName: string\n payload: ExistingDocsPayloadOperations\n sourceId: string\n}): Promise<ExistingPayloadDocsRecord[]> => {\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1000,\n overrideAccess: true,\n where: docsSetId\n ? {\n or: [\n {\n docsSet: {\n equals: docsSetId,\n },\n },\n {\n 'sync.sourceId': {\n equals: sourceId,\n },\n },\n ],\n }\n : {\n 'sync.sourceId': {\n equals: sourceId,\n },\n },\n })\n\n return result.docs\n .map((doc) =>\n toExistingPayloadDocsRecord({\n doc,\n markdownFieldName,\n }),\n )\n .filter((doc): doc is ExistingPayloadDocsRecord => doc !== undefined)\n}\n\nexport const findExistingDocsRecords = async ({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n}: {\n collectionSlug: string\n docsSetId?: number | string\n markdownFieldName: string\n payload: ExistingDocsPayloadOperations\n sourceId: string\n}): Promise<ExistingDocsRecord[]> => {\n const docs = await findExistingPayloadDocsRecords({\n collectionSlug,\n docsSetId,\n markdownFieldName,\n payload,\n sourceId,\n })\n\n return docs.map(toExistingDocsRecord)\n}\n"],"names":["isRecord","value","Array","isArray","getRecordId","doc","id","String","undefined","getRelationshipId","toExistingPayloadDocsRecord","markdownFieldName","route","sourcePath","sync","status","_status","archived","content","docsSetId","docsSet","sourceHash","archivedAt","contentHashAtLastSync","lastSyncedAt","lastSyncRunId","managedBy","sourceHashAtLastSync","sourceId","title","toExistingDocsRecord","findExistingPayloadDocsRecords","collectionSlug","payload","result","find","collection","depth","limit","overrideAccess","where","or","equals","docs","map","filter","findExistingDocsRecords"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- export { applyDocsSync, assertApplyDeleteBehaviorSupported, } from './applyDocsSync.js';
2
- export type { ApplyDocsSyncPayloadOperations, ApplyDocsSyncResult, } from './applyDocsSync.js';
1
+ export { applyDocsSync, assertApplyDeleteBehaviorSupported } from './applyDocsSync.js';
2
+ export type { ApplyDocsSyncPayloadOperations, ApplyDocsSyncResult } from './applyDocsSync.js';
3
3
  export { findDocsSyncConflicts } from './docsConflicts.js';
4
- export type { DocsSyncConflict, DocsSyncConflictReason, } from './docsConflicts.js';
5
- export { buildArchiveData, buildDocsData, getDocsDepth, } from './docsData.js';
6
- export type { BuildDocsDataInput, DocsDraftStatus, DocsPublishMode, } from './docsData.js';
4
+ export type { DocsSyncConflict, DocsSyncConflictReason } from './docsConflicts.js';
5
+ export { buildArchiveData, buildDocsData, getDocsDepth } from './docsData.js';
6
+ export type { BuildDocsDataInput, DocsDraftStatus } from './docsData.js';
7
7
  export { findDocsKeyById } from './docsKeys.js';
8
- export type { DocsKeyPayloadOperations, ResolvedDocsKey, } from './docsKeys.js';
8
+ export type { DocsKeyPayloadOperations, ResolvedDocsKey } from './docsKeys.js';
9
9
  export { findDocsSetByRouteBase, findDocsSetBySlug, isEd25519AuthEnabled, isGitHubOidcAuthEnabled, updateDocsSetAfterSync, } from './docsSets.js';
10
- export type { DocsSetPayloadOperations, ResolvedDocsSet, } from './docsSets.js';
10
+ export type { DocsSetPayloadOperations, ResolvedDocsSet } from './docsSets.js';
11
11
  export { findTrustedGitHubSources } from './docsTrusted.js';
12
12
  export type { DocsTrustedPayloadOperations } from './docsTrusted.js';
13
13
  export { findExistingDocsRecords } from './existingDocs.js';
14
- export { findExistingPayloadDocsRecords, toExistingDocsRecord, } from './existingDocs.js';
15
- export type { ExistingDocsPayloadOperations, ExistingPayloadDocsRecord, } from './existingDocs.js';
14
+ export { findExistingPayloadDocsRecords, toExistingDocsRecord } from './existingDocs.js';
15
+ export type { ExistingDocsPayloadOperations, ExistingPayloadDocsRecord } from './existingDocs.js';
16
16
  export { findConfiguredPagesRouteCollisions, findDuplicateDesiredRouteCollisions, findExistingDocsRouteCollisions, } from './routeCollisions.js';
17
- export type { DocsRouteCollisionIssue, RouteCollisionPayloadOperations, } from './routeCollisions.js';
18
- export { createSyncRunAudit, getRecordId, updateSyncRunAudit, } from './syncRuns.js';
17
+ export type { DocsRouteCollisionIssue, RouteCollisionPayloadOperations } from './routeCollisions.js';
18
+ export { createSyncRunAudit, getRecordId, updateSyncRunAudit } from './syncRuns.js';
19
19
  export type { CreateSyncRunAuditInput, SyncRunsPayloadOperations, SyncRunStatus, SyncRunSummary, } from './syncRuns.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/payload/index.ts"],"sourcesContent":["export {\n applyDocsSync,\n assertApplyDeleteBehaviorSupported,\n} from './applyDocsSync.js'\nexport type {\n ApplyDocsSyncPayloadOperations,\n ApplyDocsSyncResult,\n} from './applyDocsSync.js'\nexport { findDocsSyncConflicts } from './docsConflicts.js'\nexport type {\n DocsSyncConflict,\n DocsSyncConflictReason,\n} from './docsConflicts.js'\nexport {\n buildArchiveData,\n buildDocsData,\n getDocsDepth,\n} from './docsData.js'\nexport type {\n BuildDocsDataInput,\n DocsDraftStatus,\n DocsPublishMode,\n} from './docsData.js'\nexport { findDocsKeyById } from './docsKeys.js'\nexport type {\n DocsKeyPayloadOperations,\n ResolvedDocsKey,\n} from './docsKeys.js'\nexport {\n findDocsSetByRouteBase,\n findDocsSetBySlug,\n isEd25519AuthEnabled,\n isGitHubOidcAuthEnabled,\n updateDocsSetAfterSync,\n} from './docsSets.js'\nexport type {\n DocsSetPayloadOperations,\n ResolvedDocsSet,\n} from './docsSets.js'\nexport { findTrustedGitHubSources } from './docsTrusted.js'\nexport type { DocsTrustedPayloadOperations } from './docsTrusted.js'\nexport { findExistingDocsRecords } from './existingDocs.js'\nexport {\n findExistingPayloadDocsRecords,\n toExistingDocsRecord,\n} from './existingDocs.js'\nexport type {\n ExistingDocsPayloadOperations,\n ExistingPayloadDocsRecord,\n} from './existingDocs.js'\nexport {\n findConfiguredPagesRouteCollisions,\n findDuplicateDesiredRouteCollisions,\n findExistingDocsRouteCollisions,\n} from './routeCollisions.js'\nexport type {\n DocsRouteCollisionIssue,\n RouteCollisionPayloadOperations,\n} from './routeCollisions.js'\nexport {\n createSyncRunAudit,\n getRecordId,\n updateSyncRunAudit,\n} from './syncRuns.js'\nexport type {\n CreateSyncRunAuditInput,\n SyncRunsPayloadOperations,\n SyncRunStatus,\n SyncRunSummary,\n} from './syncRuns.js'\n"],"names":["applyDocsSync","assertApplyDeleteBehaviorSupported","findDocsSyncConflicts","buildArchiveData","buildDocsData","getDocsDepth","findDocsKeyById","findDocsSetByRouteBase","findDocsSetBySlug","isEd25519AuthEnabled","isGitHubOidcAuthEnabled","updateDocsSetAfterSync","findTrustedGitHubSources","findExistingDocsRecords","findExistingPayloadDocsRecords","toExistingDocsRecord","findConfiguredPagesRouteCollisions","findDuplicateDesiredRouteCollisions","findExistingDocsRouteCollisions","createSyncRunAudit","getRecordId","updateSyncRunAudit"],"mappings":"AAAA,SACEA,aAAa,EACbC,kCAAkC,QAC7B,qBAAoB;AAK3B,SAASC,qBAAqB,QAAQ,qBAAoB;AAK1D,SACEC,gBAAgB,EAChBC,aAAa,EACbC,YAAY,QACP,gBAAe;AAMtB,SAASC,eAAe,QAAQ,gBAAe;AAK/C,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,uBAAuB,EACvBC,sBAAsB,QACjB,gBAAe;AAKtB,SAASC,wBAAwB,QAAQ,mBAAkB;AAE3D,SAASC,uBAAuB,QAAQ,oBAAmB;AAC3D,SACEC,8BAA8B,EAC9BC,oBAAoB,QACf,oBAAmB;AAK1B,SACEC,kCAAkC,EAClCC,mCAAmC,EACnCC,+BAA+B,QAC1B,uBAAsB;AAK7B,SACEC,kBAAkB,EAClBC,WAAW,EACXC,kBAAkB,QACb,gBAAe"}
1
+ {"version":3,"sources":["../../src/payload/index.ts"],"sourcesContent":["export { applyDocsSync, assertApplyDeleteBehaviorSupported } from './applyDocsSync.js'\nexport type { ApplyDocsSyncPayloadOperations, ApplyDocsSyncResult } from './applyDocsSync.js'\nexport { findDocsSyncConflicts } from './docsConflicts.js'\nexport type { DocsSyncConflict, DocsSyncConflictReason } from './docsConflicts.js'\nexport { buildArchiveData, buildDocsData, getDocsDepth } from './docsData.js'\nexport type { BuildDocsDataInput, DocsDraftStatus } from './docsData.js'\nexport { findDocsKeyById } from './docsKeys.js'\nexport type { DocsKeyPayloadOperations, ResolvedDocsKey } from './docsKeys.js'\nexport {\n findDocsSetByRouteBase,\n findDocsSetBySlug,\n isEd25519AuthEnabled,\n isGitHubOidcAuthEnabled,\n updateDocsSetAfterSync,\n} from './docsSets.js'\nexport type { DocsSetPayloadOperations, ResolvedDocsSet } from './docsSets.js'\nexport { findTrustedGitHubSources } from './docsTrusted.js'\nexport type { DocsTrustedPayloadOperations } from './docsTrusted.js'\nexport { findExistingDocsRecords } from './existingDocs.js'\nexport { findExistingPayloadDocsRecords, toExistingDocsRecord } from './existingDocs.js'\nexport type { ExistingDocsPayloadOperations, ExistingPayloadDocsRecord } from './existingDocs.js'\nexport {\n findConfiguredPagesRouteCollisions,\n findDuplicateDesiredRouteCollisions,\n findExistingDocsRouteCollisions,\n} from './routeCollisions.js'\nexport type { DocsRouteCollisionIssue, RouteCollisionPayloadOperations } from './routeCollisions.js'\nexport { createSyncRunAudit, getRecordId, updateSyncRunAudit } from './syncRuns.js'\nexport type {\n CreateSyncRunAuditInput,\n SyncRunsPayloadOperations,\n SyncRunStatus,\n SyncRunSummary,\n} from './syncRuns.js'\n"],"names":["applyDocsSync","assertApplyDeleteBehaviorSupported","findDocsSyncConflicts","buildArchiveData","buildDocsData","getDocsDepth","findDocsKeyById","findDocsSetByRouteBase","findDocsSetBySlug","isEd25519AuthEnabled","isGitHubOidcAuthEnabled","updateDocsSetAfterSync","findTrustedGitHubSources","findExistingDocsRecords","findExistingPayloadDocsRecords","toExistingDocsRecord","findConfiguredPagesRouteCollisions","findDuplicateDesiredRouteCollisions","findExistingDocsRouteCollisions","createSyncRunAudit","getRecordId","updateSyncRunAudit"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kCAAkC,QAAQ,qBAAoB;AAEtF,SAASC,qBAAqB,QAAQ,qBAAoB;AAE1D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,YAAY,QAAQ,gBAAe;AAE7E,SAASC,eAAe,QAAQ,gBAAe;AAE/C,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,uBAAuB,EACvBC,sBAAsB,QACjB,gBAAe;AAEtB,SAASC,wBAAwB,QAAQ,mBAAkB;AAE3D,SAASC,uBAAuB,QAAQ,oBAAmB;AAC3D,SAASC,8BAA8B,EAAEC,oBAAoB,QAAQ,oBAAmB;AAExF,SACEC,kCAAkC,EAClCC,mCAAmC,EACnCC,+BAA+B,QAC1B,uBAAsB;AAE7B,SAASC,kBAAkB,EAAEC,WAAW,EAAEC,kBAAkB,QAAQ,gBAAe"}
@@ -0,0 +1,2 @@
1
+ import type { CollectionBeforeChangeHook } from 'payload';
2
+ export declare const populatePublishedAt: CollectionBeforeChangeHook;
@@ -0,0 +1,14 @@
1
+ export const populatePublishedAt = ({ data, operation, req })=>{
2
+ if (operation === 'create' || operation === 'update') {
3
+ if (req.data && !req.data.publishedAt) {
4
+ const now = new Date();
5
+ return {
6
+ ...data,
7
+ publishedAt: now
8
+ };
9
+ }
10
+ }
11
+ return data;
12
+ };
13
+
14
+ //# sourceMappingURL=populatePublishedAt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/payload/populatePublishedAt.ts"],"sourcesContent":["import type { CollectionBeforeChangeHook } from 'payload'\n\nexport const populatePublishedAt: CollectionBeforeChangeHook = ({ data, operation, req }) => {\n if (operation === 'create' || operation === 'update') {\n if (req.data && !req.data.publishedAt) {\n const now = new Date()\n\n return {\n ...data,\n publishedAt: now,\n }\n }\n }\n\n return data\n}\n"],"names":["populatePublishedAt","data","operation","req","publishedAt","now","Date"],"mappings":"AAEA,OAAO,MAAMA,sBAAkD,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,GAAG,EAAE;IACtF,IAAID,cAAc,YAAYA,cAAc,UAAU;QACpD,IAAIC,IAAIF,IAAI,IAAI,CAACE,IAAIF,IAAI,CAACG,WAAW,EAAE;YACrC,MAAMC,MAAM,IAAIC;YAEhB,OAAO;gBACL,GAAGL,IAAI;gBACPG,aAAaC;YACf;QACF;IACF;IAEA,OAAOJ;AACT,EAAC"}
@@ -31,7 +31,6 @@ export type CreateSyncRunAuditInput = {
31
31
  commit?: string;
32
32
  completedAt: Date;
33
33
  deleteBehavior: DocsDeleteBehavior;
34
- effectivePublishMode?: 'draft' | 'preserve' | 'published';
35
34
  errors: DocsValidationIssue[];
36
35
  fileCount: number;
37
36
  keyId: string;
@@ -46,7 +45,7 @@ export type CreateSyncRunAuditInput = {
46
45
  totalBytes: number;
47
46
  warnings: DocsValidationIssue[];
48
47
  };
49
- export declare const createSyncRunAudit: ({ actor, bodyHash, branch, collectionSlug, commit, completedAt, deleteBehavior, effectivePublishMode, errors, fileCount, keyId, mode, payload, publishRequested, repository, sourceId, startedAt, status, summary, totalBytes, warnings, }: CreateSyncRunAuditInput) => Promise<Record<string, unknown>>;
48
+ export declare const createSyncRunAudit: ({ actor, bodyHash, branch, collectionSlug, commit, completedAt, deleteBehavior, errors, fileCount, keyId, mode, payload, publishRequested, repository, sourceId, startedAt, status, summary, totalBytes, warnings, }: CreateSyncRunAuditInput) => Promise<Record<string, unknown>>;
50
49
  export declare const getRecordId: (record: Record<string, unknown>) => PayloadRecordId | undefined;
51
50
  export declare const updateSyncRunAudit: ({ collectionSlug, completedAt, errors, payload, status, summary, syncRunId, warnings, }: {
52
51
  collectionSlug: string;
@@ -1,7 +1,7 @@
1
1
  const issueToArrayRow = (issue)=>({
2
2
  message: issue.path ? `${issue.path}: ${issue.message}` : issue.message
3
3
  });
4
- export const createSyncRunAudit = async ({ actor, bodyHash, branch, collectionSlug, commit, completedAt, deleteBehavior, effectivePublishMode, errors, fileCount, keyId, mode, payload, publishRequested, repository, sourceId, startedAt, status, summary, totalBytes, warnings })=>payload.create({
4
+ export const createSyncRunAudit = async ({ actor, bodyHash, branch, collectionSlug, commit, completedAt, deleteBehavior, errors, fileCount, keyId, mode, payload, publishRequested, repository, sourceId, startedAt, status, summary, totalBytes, warnings })=>payload.create({
5
5
  collection: collectionSlug,
6
6
  data: {
7
7
  actor,
@@ -10,7 +10,6 @@ export const createSyncRunAudit = async ({ actor, bodyHash, branch, collectionSl
10
10
  commit,
11
11
  completedAt: completedAt.toISOString(),
12
12
  deleteBehavior,
13
- effectivePublishMode,
14
13
  errors: errors.map(issueToArrayRow),
15
14
  fileCount,
16
15
  keyId,