@valkyrianlabs/payload-markdown-docs 0.1.0-canary.0

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 (204) hide show
  1. package/README.md +195 -0
  2. package/dist/admin/DocsSetManager.d.ts +2 -0
  3. package/dist/admin/DocsSetManager.js +298 -0
  4. package/dist/admin/DocsSetManager.js.map +1 -0
  5. package/dist/admin/docsSetManagerData.d.ts +25 -0
  6. package/dist/admin/docsSetManagerData.js +266 -0
  7. package/dist/admin/docsSetManagerData.js.map +1 -0
  8. package/dist/admin/docsSetManagerTypes.d.ts +103 -0
  9. package/dist/admin/docsSetManagerTypes.js +3 -0
  10. package/dist/admin/docsSetManagerTypes.js.map +1 -0
  11. package/dist/admin/index.d.ts +3 -0
  12. package/dist/admin/index.js +4 -0
  13. package/dist/admin/index.js.map +1 -0
  14. package/dist/cli/commands/install.d.ts +2 -0
  15. package/dist/cli/commands/install.js +211 -0
  16. package/dist/cli/commands/install.js.map +1 -0
  17. package/dist/cli/commands/keygen.d.ts +2 -0
  18. package/dist/cli/commands/keygen.js +89 -0
  19. package/dist/cli/commands/keygen.js.map +1 -0
  20. package/dist/cli/commands/manifest.d.ts +2 -0
  21. package/dist/cli/commands/manifest.js +50 -0
  22. package/dist/cli/commands/manifest.js.map +1 -0
  23. package/dist/cli/commands/plan.d.ts +2 -0
  24. package/dist/cli/commands/plan.js +110 -0
  25. package/dist/cli/commands/plan.js.map +1 -0
  26. package/dist/cli/commands/push.d.ts +3 -0
  27. package/dist/cli/commands/push.js +308 -0
  28. package/dist/cli/commands/push.js.map +1 -0
  29. package/dist/cli/commands/validate.d.ts +3 -0
  30. package/dist/cli/commands/validate.js +109 -0
  31. package/dist/cli/commands/validate.js.map +1 -0
  32. package/dist/cli/filesystem.d.ts +20 -0
  33. package/dist/cli/filesystem.js +96 -0
  34. package/dist/cli/filesystem.js.map +1 -0
  35. package/dist/cli/format.d.ts +35 -0
  36. package/dist/cli/format.js +76 -0
  37. package/dist/cli/format.js.map +1 -0
  38. package/dist/cli/http.d.ts +19 -0
  39. package/dist/cli/http.js +39 -0
  40. package/dist/cli/http.js.map +1 -0
  41. package/dist/cli/index.d.ts +3 -0
  42. package/dist/cli/index.js +214 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/parseArgs.d.ts +5 -0
  45. package/dist/cli/parseArgs.js +219 -0
  46. package/dist/cli/parseArgs.js.map +1 -0
  47. package/dist/cli/types.d.ts +51 -0
  48. package/dist/cli/types.js +3 -0
  49. package/dist/cli/types.js.map +1 -0
  50. package/dist/collections/docs.d.ts +9 -0
  51. package/dist/collections/docs.js +168 -0
  52. package/dist/collections/docs.js.map +1 -0
  53. package/dist/collections/docsGroups.d.ts +5 -0
  54. package/dist/collections/docsGroups.js +57 -0
  55. package/dist/collections/docsGroups.js.map +1 -0
  56. package/dist/collections/docsSets.d.ts +8 -0
  57. package/dist/collections/docsSets.js +158 -0
  58. package/dist/collections/docsSets.js.map +1 -0
  59. package/dist/collections/index.d.ts +10 -0
  60. package/dist/collections/index.js +7 -0
  61. package/dist/collections/index.js.map +1 -0
  62. package/dist/collections/nonces.d.ts +6 -0
  63. package/dist/collections/nonces.js +57 -0
  64. package/dist/collections/nonces.js.map +1 -0
  65. package/dist/collections/syncRuns.d.ts +5 -0
  66. package/dist/collections/syncRuns.js +139 -0
  67. package/dist/collections/syncRuns.js.map +1 -0
  68. package/dist/constants.d.ts +21 -0
  69. package/dist/constants.js +23 -0
  70. package/dist/constants.js.map +1 -0
  71. package/dist/endpoints/index.d.ts +2 -0
  72. package/dist/endpoints/index.js +3 -0
  73. package/dist/endpoints/index.js.map +1 -0
  74. package/dist/endpoints/sync.d.ts +47 -0
  75. package/dist/endpoints/sync.js +616 -0
  76. package/dist/endpoints/sync.js.map +1 -0
  77. package/dist/index.d.ts +9 -0
  78. package/dist/index.js +7 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/next/PayloadMarkdownDocsPage.d.ts +7 -0
  81. package/dist/next/PayloadMarkdownDocsPage.js +142 -0
  82. package/dist/next/PayloadMarkdownDocsPage.js.map +1 -0
  83. package/dist/next/index.d.ts +9 -0
  84. package/dist/next/index.js +7 -0
  85. package/dist/next/index.js.map +1 -0
  86. package/dist/next/markdown.d.ts +14 -0
  87. package/dist/next/markdown.js +232 -0
  88. package/dist/next/markdown.js.map +1 -0
  89. package/dist/next/metadata.d.ts +3 -0
  90. package/dist/next/metadata.js +33 -0
  91. package/dist/next/metadata.js.map +1 -0
  92. package/dist/next/records.d.ts +14 -0
  93. package/dist/next/records.js +146 -0
  94. package/dist/next/records.js.map +1 -0
  95. package/dist/next/route.d.ts +6 -0
  96. package/dist/next/route.js +271 -0
  97. package/dist/next/route.js.map +1 -0
  98. package/dist/next/sidebar.d.ts +15 -0
  99. package/dist/next/sidebar.js +137 -0
  100. package/dist/next/sidebar.js.map +1 -0
  101. package/dist/next/types.d.ts +117 -0
  102. package/dist/next/types.js +3 -0
  103. package/dist/next/types.js.map +1 -0
  104. package/dist/payload/applyDocsSync.d.ts +54 -0
  105. package/dist/payload/applyDocsSync.js +176 -0
  106. package/dist/payload/applyDocsSync.js.map +1 -0
  107. package/dist/payload/docsConflicts.d.ts +12 -0
  108. package/dist/payload/docsConflicts.js +34 -0
  109. package/dist/payload/docsConflicts.js.map +1 -0
  110. package/dist/payload/docsData.d.ts +23 -0
  111. package/dist/payload/docsData.js +59 -0
  112. package/dist/payload/docsData.js.map +1 -0
  113. package/dist/payload/docsSets.d.ts +38 -0
  114. package/dist/payload/docsSets.js +57 -0
  115. package/dist/payload/docsSets.js.map +1 -0
  116. package/dist/payload/existingDocs.d.ts +43 -0
  117. package/dist/payload/existingDocs.js +97 -0
  118. package/dist/payload/existingDocs.js.map +1 -0
  119. package/dist/payload/index.d.ts +15 -0
  120. package/dist/payload/index.js +10 -0
  121. package/dist/payload/index.js.map +1 -0
  122. package/dist/payload/routeCollisions.d.ts +31 -0
  123. package/dist/payload/routeCollisions.js +104 -0
  124. package/dist/payload/routeCollisions.js.map +1 -0
  125. package/dist/payload/syncRuns.d.ts +60 -0
  126. package/dist/payload/syncRuns.js +53 -0
  127. package/dist/payload/syncRuns.js.map +1 -0
  128. package/dist/plugin.d.ts +3 -0
  129. package/dist/plugin.js +165 -0
  130. package/dist/plugin.js.map +1 -0
  131. package/dist/routing/index.d.ts +3 -0
  132. package/dist/routing/index.js +4 -0
  133. package/dist/routing/index.js.map +1 -0
  134. package/dist/routing/paths.d.ts +7 -0
  135. package/dist/routing/paths.js +23 -0
  136. package/dist/routing/paths.js.map +1 -0
  137. package/dist/routing/reservations.d.ts +37 -0
  138. package/dist/routing/reservations.js +79 -0
  139. package/dist/routing/reservations.js.map +1 -0
  140. package/dist/security/canonical.d.ts +12 -0
  141. package/dist/security/canonical.js +24 -0
  142. package/dist/security/canonical.js.map +1 -0
  143. package/dist/security/githubOidc.d.ts +45 -0
  144. package/dist/security/githubOidc.js +177 -0
  145. package/dist/security/githubOidc.js.map +1 -0
  146. package/dist/security/headers.d.ts +22 -0
  147. package/dist/security/headers.js +44 -0
  148. package/dist/security/headers.js.map +1 -0
  149. package/dist/security/index.d.ts +15 -0
  150. package/dist/security/index.js +9 -0
  151. package/dist/security/index.js.map +1 -0
  152. package/dist/security/jwks.d.ts +20 -0
  153. package/dist/security/jwks.js +40 -0
  154. package/dist/security/jwks.js.map +1 -0
  155. package/dist/security/jwt.d.ts +10 -0
  156. package/dist/security/jwt.js +42 -0
  157. package/dist/security/jwt.js.map +1 -0
  158. package/dist/security/nonce.d.ts +34 -0
  159. package/dist/security/nonce.js +43 -0
  160. package/dist/security/nonce.js.map +1 -0
  161. package/dist/security/sign.d.ts +13 -0
  162. package/dist/security/sign.js +39 -0
  163. package/dist/security/sign.js.map +1 -0
  164. package/dist/security/verify.d.ts +28 -0
  165. package/dist/security/verify.js +54 -0
  166. package/dist/security/verify.js.map +1 -0
  167. package/dist/skills/codex/SKILL.md +173 -0
  168. package/dist/skills/codex/examples/docs-page.md +42 -0
  169. package/dist/skills/codex/examples/github-actions.md +64 -0
  170. package/dist/skills/codex/reference/admin.md +28 -0
  171. package/dist/skills/codex/reference/frontmatter.md +39 -0
  172. package/dist/skills/codex/reference/payload-markdown-directives.md +77 -0
  173. package/dist/skills/codex/reference/routing.md +35 -0
  174. package/dist/skills/codex/reference/sync.md +35 -0
  175. package/dist/skills/codex/reference/troubleshooting.md +53 -0
  176. package/dist/skills/codex/reference/workflow.md +39 -0
  177. package/dist/sync/aiExportManifest.d.ts +58 -0
  178. package/dist/sync/aiExportManifest.js +430 -0
  179. package/dist/sync/aiExportManifest.js.map +1 -0
  180. package/dist/sync/frontmatter.d.ts +28 -0
  181. package/dist/sync/frontmatter.js +210 -0
  182. package/dist/sync/frontmatter.js.map +1 -0
  183. package/dist/sync/hash.d.ts +1 -0
  184. package/dist/sync/hash.js +8 -0
  185. package/dist/sync/hash.js.map +1 -0
  186. package/dist/sync/index.d.ts +12 -0
  187. package/dist/sync/index.js +9 -0
  188. package/dist/sync/index.js.map +1 -0
  189. package/dist/sync/manifest.d.ts +58 -0
  190. package/dist/sync/manifest.js +21 -0
  191. package/dist/sync/manifest.js.map +1 -0
  192. package/dist/sync/paths.d.ts +16 -0
  193. package/dist/sync/paths.js +116 -0
  194. package/dist/sync/paths.js.map +1 -0
  195. package/dist/sync/plan.d.ts +29 -0
  196. package/dist/sync/plan.js +72 -0
  197. package/dist/sync/plan.js.map +1 -0
  198. package/dist/sync/validate.d.ts +26 -0
  199. package/dist/sync/validate.js +308 -0
  200. package/dist/sync/validate.js.map +1 -0
  201. package/dist/types.d.ts +84 -0
  202. package/dist/types.js +3 -0
  203. package/dist/types.js.map +1 -0
  204. package/package.json +143 -0
@@ -0,0 +1,59 @@
1
+ import { MANAGED_BY } from '../constants.js';
2
+ export const getDocsDepth = (sourcePath)=>sourcePath === 'index.md' ? 0 : Math.max(0, sourcePath.split('/').length - 1);
3
+ const getDraftStatusForDocsData = ({ current, docsEnableDrafts, publishMode })=>{
4
+ if (!docsEnableDrafts) {
5
+ return undefined;
6
+ }
7
+ if (publishMode === 'draft' || publishMode === 'published') {
8
+ return publishMode;
9
+ }
10
+ return current ? current.status : 'draft';
11
+ };
12
+ export const buildDocsData = ({ current, desired, docsEnableDrafts, docsSetId, manifest, markdownFieldName, now, publishMode, syncRunId })=>{
13
+ const draftStatus = getDraftStatusForDocsData({
14
+ current,
15
+ docsEnableDrafts,
16
+ publishMode
17
+ });
18
+ return {
19
+ ...draftStatus ? {
20
+ _status: draftStatus
21
+ } : {},
22
+ depth: getDocsDepth(desired.path),
23
+ description: desired.frontmatter.description,
24
+ ...docsSetId ? {
25
+ docsSet: docsSetId
26
+ } : {},
27
+ [markdownFieldName]: desired.content,
28
+ navTitle: desired.frontmatter.navTitle,
29
+ order: desired.frontmatter.order ?? 0,
30
+ route: desired.route,
31
+ sourceHash: desired.sha256,
32
+ sourcePath: desired.path,
33
+ sync: {
34
+ archived: false,
35
+ archivedAt: null,
36
+ lastSyncedAt: now.toISOString(),
37
+ lastSyncRunId: syncRunId,
38
+ managedBy: MANAGED_BY,
39
+ sourceHashAtLastSync: desired.sha256,
40
+ sourceId: manifest.source.id,
41
+ sourcePath: desired.path
42
+ },
43
+ title: desired.title
44
+ };
45
+ };
46
+ export const buildArchiveData = ({ docsEnableDrafts = false, draftMissing = false, now, syncRunId })=>({
47
+ ...draftMissing && docsEnableDrafts ? {
48
+ _status: 'draft'
49
+ } : {},
50
+ sync: {
51
+ archived: true,
52
+ archivedAt: now.toISOString(),
53
+ lastSyncedAt: now.toISOString(),
54
+ lastSyncRunId: syncRunId,
55
+ managedBy: MANAGED_BY
56
+ }
57
+ });
58
+
59
+ //# sourceMappingURL=docsData.js.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ export type DocsSetPayloadOperations = {
2
+ find: (args: {
3
+ collection: string;
4
+ depth?: number;
5
+ limit?: number;
6
+ overrideAccess?: boolean;
7
+ where?: unknown;
8
+ }) => Promise<{
9
+ docs: unknown[];
10
+ }>;
11
+ update?: (args: {
12
+ collection: string;
13
+ data: Record<string, unknown>;
14
+ id: string;
15
+ overrideAccess?: boolean;
16
+ }) => Promise<Record<string, unknown>>;
17
+ };
18
+ export type PayloadRecordId = number | string;
19
+ export type ResolvedDocsSet = {
20
+ id: PayloadRecordId;
21
+ routeBase: string;
22
+ sourceId: string;
23
+ sourceRoot?: string;
24
+ };
25
+ export declare const updateDocsSetAfterSync: ({ aiExport, collectionSlug, docsCount, docsSetId, now, payload, syncRunId, }: {
26
+ aiExport?: unknown;
27
+ collectionSlug: string;
28
+ docsCount: number;
29
+ docsSetId: PayloadRecordId;
30
+ now: Date;
31
+ payload: DocsSetPayloadOperations;
32
+ syncRunId?: PayloadRecordId;
33
+ }) => Promise<void>;
34
+ export declare const findDocsSetBySourceId: ({ collectionSlug, payload, sourceId, }: {
35
+ collectionSlug: string;
36
+ payload: DocsSetPayloadOperations;
37
+ sourceId: string;
38
+ }) => Promise<ResolvedDocsSet | undefined>;
@@ -0,0 +1,57 @@
1
+ export const updateDocsSetAfterSync = async ({ aiExport, collectionSlug, docsCount, docsSetId, now, payload, syncRunId })=>{
2
+ if (!payload.update) {
3
+ return;
4
+ }
5
+ await payload.update({
6
+ id: String(docsSetId),
7
+ collection: collectionSlug,
8
+ data: {
9
+ aiExport: aiExport ?? null,
10
+ sync: {
11
+ docsCount,
12
+ lastStatus: 'success',
13
+ lastSyncedAt: now.toISOString(),
14
+ lastSyncRunId: syncRunId
15
+ }
16
+ },
17
+ overrideAccess: true
18
+ });
19
+ };
20
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
21
+ const getRecordId = (doc)=>{
22
+ if (typeof doc.id === 'string' || typeof doc.id === 'number') {
23
+ return doc.id;
24
+ }
25
+ return undefined;
26
+ };
27
+ const toResolvedDocsSet = (doc)=>{
28
+ if (!isRecord(doc)) {
29
+ return undefined;
30
+ }
31
+ const id = getRecordId(doc);
32
+ if (!id || typeof doc.sourceId !== 'string' || typeof doc.routeBase !== 'string') {
33
+ return undefined;
34
+ }
35
+ return {
36
+ id,
37
+ routeBase: doc.routeBase,
38
+ sourceId: doc.sourceId,
39
+ sourceRoot: typeof doc.sourceRoot === 'string' ? doc.sourceRoot : undefined
40
+ };
41
+ };
42
+ export const findDocsSetBySourceId = async ({ collectionSlug, payload, sourceId })=>{
43
+ const result = await payload.find({
44
+ collection: collectionSlug,
45
+ depth: 0,
46
+ limit: 1,
47
+ overrideAccess: true,
48
+ where: {
49
+ sourceId: {
50
+ equals: sourceId
51
+ }
52
+ }
53
+ });
54
+ return toResolvedDocsSet(result.docs[0]);
55
+ };
56
+
57
+ //# sourceMappingURL=docsSets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/payload/docsSets.ts"],"sourcesContent":["export type DocsSetPayloadOperations = {\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 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 PayloadRecordId = number | string\n\nexport type ResolvedDocsSet = {\n id: PayloadRecordId\n routeBase: string\n sourceId: string\n sourceRoot?: string\n}\n\nexport const updateDocsSetAfterSync = async ({\n aiExport,\n collectionSlug,\n docsCount,\n docsSetId,\n now,\n payload,\n syncRunId,\n}: {\n aiExport?: unknown\n collectionSlug: string\n docsCount: number\n docsSetId: PayloadRecordId\n now: Date\n payload: DocsSetPayloadOperations\n syncRunId?: PayloadRecordId\n}): Promise<void> => {\n if (!payload.update) {\n return\n }\n\n await payload.update({\n id: String(docsSetId),\n collection: collectionSlug,\n data: {\n aiExport: aiExport ?? null,\n sync: {\n docsCount,\n lastStatus: 'success',\n lastSyncedAt: now.toISOString(),\n lastSyncRunId: syncRunId,\n },\n },\n overrideAccess: true,\n })\n}\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>): PayloadRecordId | undefined => {\n if (typeof doc.id === 'string' || typeof doc.id === 'number') {\n return doc.id\n }\n\n return undefined\n}\n\nconst toResolvedDocsSet = (doc: unknown): ResolvedDocsSet | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n\n if (\n !id ||\n typeof doc.sourceId !== 'string' ||\n typeof doc.routeBase !== 'string'\n ) {\n return undefined\n }\n\n return {\n id,\n routeBase: doc.routeBase,\n sourceId: doc.sourceId,\n sourceRoot: typeof doc.sourceRoot === 'string' ? doc.sourceRoot : undefined,\n }\n}\n\nexport const findDocsSetBySourceId = async ({\n collectionSlug,\n payload,\n sourceId,\n}: {\n collectionSlug: string\n payload: DocsSetPayloadOperations\n sourceId: string\n}): Promise<ResolvedDocsSet | undefined> => {\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n where: {\n sourceId: {\n equals: sourceId,\n },\n },\n })\n\n return toResolvedDocsSet(result.docs[0])\n}\n"],"names":["updateDocsSetAfterSync","aiExport","collectionSlug","docsCount","docsSetId","now","payload","syncRunId","update","id","String","collection","data","sync","lastStatus","lastSyncedAt","toISOString","lastSyncRunId","overrideAccess","isRecord","value","Array","isArray","getRecordId","doc","undefined","toResolvedDocsSet","sourceId","routeBase","sourceRoot","findDocsSetBySourceId","result","find","depth","limit","where","equals","docs"],"mappings":"AA2BA,OAAO,MAAMA,yBAAyB,OAAO,EAC3CC,QAAQ,EACRC,cAAc,EACdC,SAAS,EACTC,SAAS,EACTC,GAAG,EACHC,OAAO,EACPC,SAAS,EASV;IACC,IAAI,CAACD,QAAQE,MAAM,EAAE;QACnB;IACF;IAEA,MAAMF,QAAQE,MAAM,CAAC;QACnBC,IAAIC,OAAON;QACXO,YAAYT;QACZU,MAAM;YACJX,UAAUA,YAAY;YACtBY,MAAM;gBACJV;gBACAW,YAAY;gBACZC,cAAcV,IAAIW,WAAW;gBAC7BC,eAAeV;YACjB;QACF;QACAW,gBAAgB;IAClB;AACF,EAAC;AAED,MAAMC,WAAW,CAACC,QAChB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACC,MAAMC,OAAO,CAACF;AAEhE,MAAMG,cAAc,CAACC;IACnB,IAAI,OAAOA,IAAIf,EAAE,KAAK,YAAY,OAAOe,IAAIf,EAAE,KAAK,UAAU;QAC5D,OAAOe,IAAIf,EAAE;IACf;IAEA,OAAOgB;AACT;AAEA,MAAMC,oBAAoB,CAACF;IACzB,IAAI,CAACL,SAASK,MAAM;QAClB,OAAOC;IACT;IAEA,MAAMhB,KAAKc,YAAYC;IAEvB,IACE,CAACf,MACD,OAAOe,IAAIG,QAAQ,KAAK,YACxB,OAAOH,IAAII,SAAS,KAAK,UACzB;QACA,OAAOH;IACT;IAEA,OAAO;QACLhB;QACAmB,WAAWJ,IAAII,SAAS;QACxBD,UAAUH,IAAIG,QAAQ;QACtBE,YAAY,OAAOL,IAAIK,UAAU,KAAK,WAAWL,IAAIK,UAAU,GAAGJ;IACpE;AACF;AAEA,OAAO,MAAMK,wBAAwB,OAAO,EAC1C5B,cAAc,EACdI,OAAO,EACPqB,QAAQ,EAKT;IACC,MAAMI,SAAS,MAAMzB,QAAQ0B,IAAI,CAAC;QAChCrB,YAAYT;QACZ+B,OAAO;QACPC,OAAO;QACPhB,gBAAgB;QAChBiB,OAAO;YACLR,UAAU;gBACRS,QAAQT;YACV;QACF;IACF;IAEA,OAAOD,kBAAkBK,OAAOM,IAAI,CAAC,EAAE;AACzC,EAAC"}
@@ -0,0 +1,43 @@
1
+ import type { ExistingDocsRecord } from '../sync/index.js';
2
+ export type ExistingDocsPayloadOperations = {
3
+ find: (args: {
4
+ collection: string;
5
+ depth?: number;
6
+ limit?: number;
7
+ overrideAccess?: boolean;
8
+ where?: unknown;
9
+ }) => Promise<{
10
+ docs: unknown[];
11
+ }>;
12
+ };
13
+ export type ExistingPayloadDocsRecord = {
14
+ content?: string;
15
+ docsSetId?: number | string;
16
+ id: string;
17
+ status?: 'draft' | 'published';
18
+ sync?: {
19
+ archived?: boolean;
20
+ archivedAt?: null | string;
21
+ lastSyncedAt?: string;
22
+ lastSyncRunId?: string;
23
+ managedBy?: string;
24
+ sourceHashAtLastSync?: string;
25
+ sourceId?: string;
26
+ sourcePath?: string;
27
+ };
28
+ } & ExistingDocsRecord;
29
+ export declare const toExistingDocsRecord: (doc: ExistingPayloadDocsRecord) => ExistingDocsRecord;
30
+ export declare const findExistingPayloadDocsRecords: ({ collectionSlug, docsSetId, markdownFieldName, payload, sourceId, }: {
31
+ collectionSlug: string;
32
+ docsSetId?: number | string;
33
+ markdownFieldName: string;
34
+ payload: ExistingDocsPayloadOperations;
35
+ sourceId: string;
36
+ }) => Promise<ExistingPayloadDocsRecord[]>;
37
+ export declare const findExistingDocsRecords: ({ collectionSlug, docsSetId, markdownFieldName, payload, sourceId, }: {
38
+ collectionSlug: string;
39
+ docsSetId?: number | string;
40
+ markdownFieldName: string;
41
+ payload: ExistingDocsPayloadOperations;
42
+ sourceId: string;
43
+ }) => Promise<ExistingDocsRecord[]>;
@@ -0,0 +1,97 @@
1
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
2
+ const getRecordId = (doc)=>{
3
+ if (typeof doc.id === 'string' || typeof doc.id === 'number') {
4
+ return String(doc.id);
5
+ }
6
+ return undefined;
7
+ };
8
+ const getRelationshipId = (value)=>{
9
+ if (typeof value === 'string' || typeof value === 'number') {
10
+ return String(value);
11
+ }
12
+ if (isRecord(value)) {
13
+ return getRecordId(value);
14
+ }
15
+ return undefined;
16
+ };
17
+ const toExistingPayloadDocsRecord = ({ doc, markdownFieldName })=>{
18
+ if (!isRecord(doc)) {
19
+ return undefined;
20
+ }
21
+ const id = getRecordId(doc);
22
+ if (!id || typeof doc.route !== 'string' || typeof doc.sourcePath !== 'string') {
23
+ return undefined;
24
+ }
25
+ const sync = isRecord(doc.sync) ? doc.sync : undefined;
26
+ const status = doc._status === 'draft' || doc._status === 'published' ? doc._status : undefined;
27
+ return {
28
+ id,
29
+ archived: typeof sync?.archived === 'boolean' ? sync.archived : undefined,
30
+ content: typeof doc[markdownFieldName] === 'string' ? doc[markdownFieldName] : undefined,
31
+ docsSetId: getRelationshipId(doc.docsSet),
32
+ route: doc.route,
33
+ sourceHash: typeof doc.sourceHash === 'string' ? doc.sourceHash : undefined,
34
+ sourcePath: doc.sourcePath,
35
+ status,
36
+ sync: sync ? {
37
+ archived: typeof sync.archived === 'boolean' ? sync.archived : undefined,
38
+ archivedAt: typeof sync.archivedAt === 'string' || sync.archivedAt === null ? sync.archivedAt : undefined,
39
+ lastSyncedAt: typeof sync.lastSyncedAt === 'string' ? sync.lastSyncedAt : undefined,
40
+ lastSyncRunId: typeof sync.lastSyncRunId === 'string' ? sync.lastSyncRunId : undefined,
41
+ managedBy: typeof sync.managedBy === 'string' ? sync.managedBy : undefined,
42
+ sourceHashAtLastSync: typeof sync.sourceHashAtLastSync === 'string' ? sync.sourceHashAtLastSync : undefined,
43
+ sourceId: typeof sync.sourceId === 'string' ? sync.sourceId : undefined,
44
+ sourcePath: typeof sync.sourcePath === 'string' ? sync.sourcePath : undefined
45
+ } : undefined,
46
+ title: typeof doc.title === 'string' ? doc.title : undefined
47
+ };
48
+ };
49
+ export const toExistingDocsRecord = (doc)=>({
50
+ archived: doc.archived,
51
+ route: doc.route,
52
+ sourceHash: doc.sourceHash,
53
+ sourcePath: doc.sourcePath,
54
+ title: doc.title
55
+ });
56
+ export const findExistingPayloadDocsRecords = async ({ collectionSlug, docsSetId, markdownFieldName, payload, sourceId })=>{
57
+ const result = await payload.find({
58
+ collection: collectionSlug,
59
+ depth: 0,
60
+ limit: 1000,
61
+ overrideAccess: true,
62
+ where: docsSetId ? {
63
+ or: [
64
+ {
65
+ docsSet: {
66
+ equals: docsSetId
67
+ }
68
+ },
69
+ {
70
+ 'sync.sourceId': {
71
+ equals: sourceId
72
+ }
73
+ }
74
+ ]
75
+ } : {
76
+ 'sync.sourceId': {
77
+ equals: sourceId
78
+ }
79
+ }
80
+ });
81
+ return result.docs.map((doc)=>toExistingPayloadDocsRecord({
82
+ doc,
83
+ markdownFieldName
84
+ })).filter((doc)=>doc !== undefined);
85
+ };
86
+ export const findExistingDocsRecords = async ({ collectionSlug, docsSetId, markdownFieldName, payload, sourceId })=>{
87
+ const docs = await findExistingPayloadDocsRecords({
88
+ collectionSlug,
89
+ docsSetId,
90
+ markdownFieldName,
91
+ payload,
92
+ sourceId
93
+ });
94
+ return docs.map(toExistingDocsRecord);
95
+ };
96
+
97
+ //# sourceMappingURL=existingDocs.js.map
@@ -0,0 +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":"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"}
@@ -0,0 +1,15 @@
1
+ export { applyDocsSync, assertApplyDeleteBehaviorSupported, } from './applyDocsSync.js';
2
+ export type { ApplyDocsSyncPayloadOperations, ApplyDocsSyncResult, } from './applyDocsSync.js';
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';
7
+ export { findDocsSetBySourceId, updateDocsSetAfterSync, } from './docsSets.js';
8
+ export type { DocsSetPayloadOperations, ResolvedDocsSet, } from './docsSets.js';
9
+ export { findExistingDocsRecords } from './existingDocs.js';
10
+ export { findExistingPayloadDocsRecords, toExistingDocsRecord, } from './existingDocs.js';
11
+ export type { ExistingDocsPayloadOperations, ExistingPayloadDocsRecord, } from './existingDocs.js';
12
+ export { findConfiguredPagesRouteCollisions, findDuplicateDesiredRouteCollisions, findExistingDocsRouteCollisions, } from './routeCollisions.js';
13
+ export type { DocsRouteCollisionIssue, RouteCollisionPayloadOperations, } from './routeCollisions.js';
14
+ export { createSyncRunAudit, getRecordId, updateSyncRunAudit, } from './syncRuns.js';
15
+ export type { CreateSyncRunAuditInput, SyncRunsPayloadOperations, SyncRunStatus, SyncRunSummary, } from './syncRuns.js';
@@ -0,0 +1,10 @@
1
+ export { applyDocsSync, assertApplyDeleteBehaviorSupported } from './applyDocsSync.js';
2
+ export { findDocsSyncConflicts } from './docsConflicts.js';
3
+ export { buildArchiveData, buildDocsData, getDocsDepth } from './docsData.js';
4
+ export { findDocsSetBySourceId, updateDocsSetAfterSync } from './docsSets.js';
5
+ export { findExistingDocsRecords } from './existingDocs.js';
6
+ export { findExistingPayloadDocsRecords, toExistingDocsRecord } from './existingDocs.js';
7
+ export { findConfiguredPagesRouteCollisions, findDuplicateDesiredRouteCollisions, findExistingDocsRouteCollisions } from './routeCollisions.js';
8
+ export { createSyncRunAudit, getRecordId, updateSyncRunAudit } from './syncRuns.js';
9
+
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 {\n findDocsSetBySourceId,\n updateDocsSetAfterSync,\n} from './docsSets.js'\nexport type {\n DocsSetPayloadOperations,\n ResolvedDocsSet,\n} from './docsSets.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","findDocsSetBySourceId","updateDocsSetAfterSync","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,SACEC,qBAAqB,EACrBC,sBAAsB,QACjB,gBAAe;AAKtB,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"}
@@ -0,0 +1,31 @@
1
+ export type RouteCollisionPayloadOperations = {
2
+ find: (args: {
3
+ collection: string;
4
+ depth?: number;
5
+ limit?: number;
6
+ overrideAccess?: boolean;
7
+ where?: unknown;
8
+ }) => Promise<{
9
+ docs: unknown[];
10
+ }>;
11
+ };
12
+ export type DocsRouteCollisionIssue = {
13
+ reason: string;
14
+ route: string;
15
+ };
16
+ export declare const findDuplicateDesiredRouteCollisions: (routes: string[]) => DocsRouteCollisionIssue[];
17
+ export declare const findExistingDocsRouteCollisions: ({ collectionSlug, docsSetId, payload, routes, sourceId, }: {
18
+ collectionSlug: string;
19
+ docsSetId?: number | string;
20
+ payload: RouteCollisionPayloadOperations;
21
+ routes: string[];
22
+ sourceId: string;
23
+ }) => Promise<DocsRouteCollisionIssue[]>;
24
+ export declare const findConfiguredPagesRouteCollisions: ({ allowBridgePages, bridgeField, collectionSlug, docsSetRouteBase, payload, routeField, }: {
25
+ allowBridgePages: boolean;
26
+ bridgeField: string;
27
+ collectionSlug: string;
28
+ docsSetRouteBase: string;
29
+ payload: RouteCollisionPayloadOperations;
30
+ routeField: string;
31
+ }) => Promise<DocsRouteCollisionIssue[]>;
@@ -0,0 +1,104 @@
1
+ import { findPageRouteCollisions, findRouteReservationCollisions, normalizeRoutePath } from '../routing/index.js';
2
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ const getRecordId = (doc)=>{
4
+ if (typeof doc.id === 'string' || typeof doc.id === 'number') {
5
+ return String(doc.id);
6
+ }
7
+ return undefined;
8
+ };
9
+ const getRelationshipId = (value)=>{
10
+ if (typeof value === 'string' || typeof value === 'number') {
11
+ return String(value);
12
+ }
13
+ if (isRecord(value)) {
14
+ return getRecordId(value);
15
+ }
16
+ return undefined;
17
+ };
18
+ const getNestedString = (value, dottedPath)=>{
19
+ const segments = dottedPath.split('.');
20
+ let current = value;
21
+ for (const segment of segments){
22
+ if (!isRecord(current)) {
23
+ return undefined;
24
+ }
25
+ current = current[segment];
26
+ }
27
+ return typeof current === 'string' ? current : undefined;
28
+ };
29
+ const collisionToIssue = (collision)=>({
30
+ reason: collision.reason,
31
+ route: collision.first.route === collision.second.route ? collision.first.route : `${collision.first.route} <> ${collision.second.route}`
32
+ });
33
+ export const findDuplicateDesiredRouteCollisions = (routes)=>findRouteReservationCollisions(routes.map((route, index)=>({
34
+ ownerId: `desired-${index}`,
35
+ ownerType: 'doc',
36
+ route
37
+ }))).map(collisionToIssue);
38
+ export const findExistingDocsRouteCollisions = async ({ collectionSlug, docsSetId, payload, routes, sourceId })=>{
39
+ const normalizedRoutes = [
40
+ ...new Set(routes.map(normalizeRoutePath))
41
+ ];
42
+ if (normalizedRoutes.length === 0) {
43
+ return [];
44
+ }
45
+ const result = await payload.find({
46
+ collection: collectionSlug,
47
+ depth: 0,
48
+ limit: 1000,
49
+ overrideAccess: true,
50
+ where: {
51
+ route: {
52
+ in: normalizedRoutes
53
+ }
54
+ }
55
+ });
56
+ return result.docs.flatMap((doc)=>{
57
+ if (!isRecord(doc) || typeof doc.route !== 'string') {
58
+ return [];
59
+ }
60
+ const existingDocsSetId = getRelationshipId(doc.docsSet);
61
+ const existingSourceId = getNestedString(doc, 'sync.sourceId');
62
+ const sameOwner = docsSetId ? existingDocsSetId === String(docsSetId) || !existingDocsSetId && existingSourceId === sourceId : !existingDocsSetId && existingSourceId === sourceId;
63
+ if (sameOwner) {
64
+ return [];
65
+ }
66
+ return [
67
+ {
68
+ reason: 'existing_doc_route_collision',
69
+ route: normalizeRoutePath(doc.route)
70
+ }
71
+ ];
72
+ });
73
+ };
74
+ export const findConfiguredPagesRouteCollisions = async ({ allowBridgePages, bridgeField, collectionSlug, docsSetRouteBase, payload, routeField })=>{
75
+ const result = await payload.find({
76
+ collection: collectionSlug,
77
+ depth: 0,
78
+ limit: 1000,
79
+ overrideAccess: true
80
+ });
81
+ const collisions = findPageRouteCollisions({
82
+ allowBridgePages,
83
+ docsSetRouteBase,
84
+ pages: result.docs.flatMap((doc)=>{
85
+ if (!isRecord(doc)) {
86
+ return [];
87
+ }
88
+ const route = getNestedString(doc, routeField);
89
+ if (!route) {
90
+ return [];
91
+ }
92
+ return [
93
+ {
94
+ id: getRecordId(doc),
95
+ bridge: doc[bridgeField] === true,
96
+ route
97
+ }
98
+ ];
99
+ })
100
+ });
101
+ return collisions.map(collisionToIssue);
102
+ };
103
+
104
+ //# sourceMappingURL=routeCollisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/payload/routeCollisions.ts"],"sourcesContent":["import type { DocsRouteCollision } from '../routing/index.js'\n\nimport {\n findPageRouteCollisions,\n findRouteReservationCollisions,\n normalizeRoutePath,\n} from '../routing/index.js'\n\nexport type RouteCollisionPayloadOperations = {\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 DocsRouteCollisionIssue = {\n reason: string\n route: string\n}\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 getNestedString = (\n value: Record<string, unknown>,\n dottedPath: string,\n): string | undefined => {\n const segments = dottedPath.split('.')\n let current: unknown = value\n\n for (const segment of segments) {\n if (!isRecord(current)) {\n return undefined\n }\n\n current = current[segment]\n }\n\n return typeof current === 'string' ? current : undefined\n}\n\nconst collisionToIssue = (collision: DocsRouteCollision): DocsRouteCollisionIssue => ({\n reason: collision.reason,\n route: collision.first.route === collision.second.route\n ? collision.first.route\n : `${collision.first.route} <> ${collision.second.route}`,\n})\n\nexport const findDuplicateDesiredRouteCollisions = (\n routes: string[],\n): DocsRouteCollisionIssue[] =>\n findRouteReservationCollisions(\n routes.map((route, index) => ({\n ownerId: `desired-${index}`,\n ownerType: 'doc',\n route,\n })),\n ).map(collisionToIssue)\n\nexport const findExistingDocsRouteCollisions = async ({\n collectionSlug,\n docsSetId,\n payload,\n routes,\n sourceId,\n}: {\n collectionSlug: string\n docsSetId?: number | string\n payload: RouteCollisionPayloadOperations\n routes: string[]\n sourceId: string\n}): Promise<DocsRouteCollisionIssue[]> => {\n const normalizedRoutes = [...new Set(routes.map(normalizeRoutePath))]\n\n if (normalizedRoutes.length === 0) {\n return []\n }\n\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1000,\n overrideAccess: true,\n where: {\n route: {\n in: normalizedRoutes,\n },\n },\n })\n\n return result.docs.flatMap((doc) => {\n if (!isRecord(doc) || typeof doc.route !== 'string') {\n return []\n }\n\n const existingDocsSetId = getRelationshipId(doc.docsSet)\n const existingSourceId = getNestedString(doc, 'sync.sourceId')\n const sameOwner = docsSetId\n ? existingDocsSetId === String(docsSetId) ||\n (!existingDocsSetId && existingSourceId === sourceId)\n : !existingDocsSetId && existingSourceId === sourceId\n\n if (sameOwner) {\n return []\n }\n\n return [\n {\n reason: 'existing_doc_route_collision',\n route: normalizeRoutePath(doc.route),\n },\n ]\n })\n}\n\nexport const findConfiguredPagesRouteCollisions = async ({\n allowBridgePages,\n bridgeField,\n collectionSlug,\n docsSetRouteBase,\n payload,\n routeField,\n}: {\n allowBridgePages: boolean\n bridgeField: string\n collectionSlug: string\n docsSetRouteBase: string\n payload: RouteCollisionPayloadOperations\n routeField: string\n}): Promise<DocsRouteCollisionIssue[]> => {\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1000,\n overrideAccess: true,\n })\n\n const collisions = findPageRouteCollisions({\n allowBridgePages,\n docsSetRouteBase,\n pages: result.docs.flatMap((doc) => {\n if (!isRecord(doc)) {\n return []\n }\n\n const route = getNestedString(doc, routeField)\n\n if (!route) {\n return []\n }\n\n return [\n {\n id: getRecordId(doc),\n bridge: doc[bridgeField] === true,\n route,\n },\n ]\n }),\n })\n\n return collisions.map(collisionToIssue)\n}\n"],"names":["findPageRouteCollisions","findRouteReservationCollisions","normalizeRoutePath","isRecord","value","Array","isArray","getRecordId","doc","id","String","undefined","getRelationshipId","getNestedString","dottedPath","segments","split","current","segment","collisionToIssue","collision","reason","route","first","second","findDuplicateDesiredRouteCollisions","routes","map","index","ownerId","ownerType","findExistingDocsRouteCollisions","collectionSlug","docsSetId","payload","sourceId","normalizedRoutes","Set","length","result","find","collection","depth","limit","overrideAccess","where","in","docs","flatMap","existingDocsSetId","docsSet","existingSourceId","sameOwner","findConfiguredPagesRouteCollisions","allowBridgePages","bridgeField","docsSetRouteBase","routeField","collisions","pages","bridge"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { DocsDeleteBehavior, DocsSyncMode, DocsValidationIssue } from '../sync/index.js';
2
+ export type SyncRunStatus = 'failed' | 'pending' | 'success';
3
+ export type SyncRunSummary = {
4
+ archive: number;
5
+ create: number;
6
+ delete: number;
7
+ draft: number;
8
+ unchanged: number;
9
+ update: number;
10
+ warnings: number;
11
+ };
12
+ export type PayloadRecordId = number | string;
13
+ export type SyncRunsPayloadOperations = {
14
+ create: (args: {
15
+ collection: string;
16
+ data: Record<string, unknown>;
17
+ overrideAccess?: boolean;
18
+ }) => Promise<Record<string, unknown>>;
19
+ update?: (args: {
20
+ collection: string;
21
+ data: Record<string, unknown>;
22
+ id: PayloadRecordId;
23
+ overrideAccess?: boolean;
24
+ }) => Promise<Record<string, unknown>>;
25
+ };
26
+ export type CreateSyncRunAuditInput = {
27
+ actor?: string;
28
+ bodyHash: string;
29
+ branch?: string;
30
+ collectionSlug: string;
31
+ commit?: string;
32
+ completedAt: Date;
33
+ deleteBehavior: DocsDeleteBehavior;
34
+ effectivePublishMode?: 'draft' | 'preserve' | 'published';
35
+ errors: DocsValidationIssue[];
36
+ fileCount: number;
37
+ keyId: string;
38
+ mode: DocsSyncMode;
39
+ payload: SyncRunsPayloadOperations;
40
+ publishRequested: boolean;
41
+ repository?: string;
42
+ sourceId: string;
43
+ startedAt: Date;
44
+ status: SyncRunStatus;
45
+ summary: SyncRunSummary;
46
+ totalBytes: number;
47
+ warnings: DocsValidationIssue[];
48
+ };
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>>;
50
+ export declare const getRecordId: (record: Record<string, unknown>) => PayloadRecordId | undefined;
51
+ export declare const updateSyncRunAudit: ({ collectionSlug, completedAt, errors, payload, status, summary, syncRunId, warnings, }: {
52
+ collectionSlug: string;
53
+ completedAt: Date;
54
+ errors?: DocsValidationIssue[];
55
+ payload: SyncRunsPayloadOperations;
56
+ status: SyncRunStatus;
57
+ summary?: SyncRunSummary;
58
+ syncRunId: PayloadRecordId;
59
+ warnings?: DocsValidationIssue[];
60
+ }) => Promise<Record<string, unknown> | undefined>;
@@ -0,0 +1,53 @@
1
+ const issueToArrayRow = (issue)=>({
2
+ message: issue.path ? `${issue.path}: ${issue.message}` : issue.message
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({
5
+ collection: collectionSlug,
6
+ data: {
7
+ actor,
8
+ bodyHash,
9
+ branch,
10
+ commit,
11
+ completedAt: completedAt.toISOString(),
12
+ deleteBehavior,
13
+ effectivePublishMode,
14
+ errors: errors.map(issueToArrayRow),
15
+ fileCount,
16
+ keyId,
17
+ mode,
18
+ publishRequested,
19
+ repository,
20
+ sourceId,
21
+ startedAt: startedAt.toISOString(),
22
+ status,
23
+ summary,
24
+ totalBytes,
25
+ warnings: warnings.map(issueToArrayRow)
26
+ },
27
+ overrideAccess: true
28
+ });
29
+ export const getRecordId = (record)=>{
30
+ if (typeof record.id === 'string' || typeof record.id === 'number') {
31
+ return record.id;
32
+ }
33
+ return undefined;
34
+ };
35
+ export const updateSyncRunAudit = async ({ collectionSlug, completedAt, errors, payload, status, summary, syncRunId, warnings })=>{
36
+ if (!payload.update) {
37
+ return undefined;
38
+ }
39
+ return payload.update({
40
+ id: syncRunId,
41
+ collection: collectionSlug,
42
+ data: {
43
+ completedAt: completedAt.toISOString(),
44
+ errors: errors?.map(issueToArrayRow),
45
+ status,
46
+ summary,
47
+ warnings: warnings?.map(issueToArrayRow)
48
+ },
49
+ overrideAccess: true
50
+ });
51
+ };
52
+
53
+ //# sourceMappingURL=syncRuns.js.map