@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.
- package/README.md +195 -0
- package/dist/admin/DocsSetManager.d.ts +2 -0
- package/dist/admin/DocsSetManager.js +298 -0
- package/dist/admin/DocsSetManager.js.map +1 -0
- package/dist/admin/docsSetManagerData.d.ts +25 -0
- package/dist/admin/docsSetManagerData.js +266 -0
- package/dist/admin/docsSetManagerData.js.map +1 -0
- package/dist/admin/docsSetManagerTypes.d.ts +103 -0
- package/dist/admin/docsSetManagerTypes.js +3 -0
- package/dist/admin/docsSetManagerTypes.js.map +1 -0
- package/dist/admin/index.d.ts +3 -0
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.js +211 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/keygen.d.ts +2 -0
- package/dist/cli/commands/keygen.js +89 -0
- package/dist/cli/commands/keygen.js.map +1 -0
- package/dist/cli/commands/manifest.d.ts +2 -0
- package/dist/cli/commands/manifest.js +50 -0
- package/dist/cli/commands/manifest.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +2 -0
- package/dist/cli/commands/plan.js +110 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/push.d.ts +3 -0
- package/dist/cli/commands/push.js +308 -0
- package/dist/cli/commands/push.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +3 -0
- package/dist/cli/commands/validate.js +109 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/filesystem.d.ts +20 -0
- package/dist/cli/filesystem.js +96 -0
- package/dist/cli/filesystem.js.map +1 -0
- package/dist/cli/format.d.ts +35 -0
- package/dist/cli/format.js +76 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/http.d.ts +19 -0
- package/dist/cli/http.js +39 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +214 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parseArgs.d.ts +5 -0
- package/dist/cli/parseArgs.js +219 -0
- package/dist/cli/parseArgs.js.map +1 -0
- package/dist/cli/types.d.ts +51 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/collections/docs.d.ts +9 -0
- package/dist/collections/docs.js +168 -0
- package/dist/collections/docs.js.map +1 -0
- package/dist/collections/docsGroups.d.ts +5 -0
- package/dist/collections/docsGroups.js +57 -0
- package/dist/collections/docsGroups.js.map +1 -0
- package/dist/collections/docsSets.d.ts +8 -0
- package/dist/collections/docsSets.js +158 -0
- package/dist/collections/docsSets.js.map +1 -0
- package/dist/collections/index.d.ts +10 -0
- package/dist/collections/index.js +7 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/nonces.d.ts +6 -0
- package/dist/collections/nonces.js +57 -0
- package/dist/collections/nonces.js.map +1 -0
- package/dist/collections/syncRuns.d.ts +5 -0
- package/dist/collections/syncRuns.js +139 -0
- package/dist/collections/syncRuns.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.js +23 -0
- package/dist/constants.js.map +1 -0
- package/dist/endpoints/index.d.ts +2 -0
- package/dist/endpoints/index.js +3 -0
- package/dist/endpoints/index.js.map +1 -0
- package/dist/endpoints/sync.d.ts +47 -0
- package/dist/endpoints/sync.js +616 -0
- package/dist/endpoints/sync.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/next/PayloadMarkdownDocsPage.d.ts +7 -0
- package/dist/next/PayloadMarkdownDocsPage.js +142 -0
- package/dist/next/PayloadMarkdownDocsPage.js.map +1 -0
- package/dist/next/index.d.ts +9 -0
- package/dist/next/index.js +7 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/markdown.d.ts +14 -0
- package/dist/next/markdown.js +232 -0
- package/dist/next/markdown.js.map +1 -0
- package/dist/next/metadata.d.ts +3 -0
- package/dist/next/metadata.js +33 -0
- package/dist/next/metadata.js.map +1 -0
- package/dist/next/records.d.ts +14 -0
- package/dist/next/records.js +146 -0
- package/dist/next/records.js.map +1 -0
- package/dist/next/route.d.ts +6 -0
- package/dist/next/route.js +271 -0
- package/dist/next/route.js.map +1 -0
- package/dist/next/sidebar.d.ts +15 -0
- package/dist/next/sidebar.js +137 -0
- package/dist/next/sidebar.js.map +1 -0
- package/dist/next/types.d.ts +117 -0
- package/dist/next/types.js +3 -0
- package/dist/next/types.js.map +1 -0
- package/dist/payload/applyDocsSync.d.ts +54 -0
- package/dist/payload/applyDocsSync.js +176 -0
- package/dist/payload/applyDocsSync.js.map +1 -0
- package/dist/payload/docsConflicts.d.ts +12 -0
- package/dist/payload/docsConflicts.js +34 -0
- package/dist/payload/docsConflicts.js.map +1 -0
- package/dist/payload/docsData.d.ts +23 -0
- package/dist/payload/docsData.js +59 -0
- package/dist/payload/docsData.js.map +1 -0
- package/dist/payload/docsSets.d.ts +38 -0
- package/dist/payload/docsSets.js +57 -0
- package/dist/payload/docsSets.js.map +1 -0
- package/dist/payload/existingDocs.d.ts +43 -0
- package/dist/payload/existingDocs.js +97 -0
- package/dist/payload/existingDocs.js.map +1 -0
- package/dist/payload/index.d.ts +15 -0
- package/dist/payload/index.js +10 -0
- package/dist/payload/index.js.map +1 -0
- package/dist/payload/routeCollisions.d.ts +31 -0
- package/dist/payload/routeCollisions.js +104 -0
- package/dist/payload/routeCollisions.js.map +1 -0
- package/dist/payload/syncRuns.d.ts +60 -0
- package/dist/payload/syncRuns.js +53 -0
- package/dist/payload/syncRuns.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +165 -0
- package/dist/plugin.js.map +1 -0
- package/dist/routing/index.d.ts +3 -0
- package/dist/routing/index.js +4 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/paths.d.ts +7 -0
- package/dist/routing/paths.js +23 -0
- package/dist/routing/paths.js.map +1 -0
- package/dist/routing/reservations.d.ts +37 -0
- package/dist/routing/reservations.js +79 -0
- package/dist/routing/reservations.js.map +1 -0
- package/dist/security/canonical.d.ts +12 -0
- package/dist/security/canonical.js +24 -0
- package/dist/security/canonical.js.map +1 -0
- package/dist/security/githubOidc.d.ts +45 -0
- package/dist/security/githubOidc.js +177 -0
- package/dist/security/githubOidc.js.map +1 -0
- package/dist/security/headers.d.ts +22 -0
- package/dist/security/headers.js +44 -0
- package/dist/security/headers.js.map +1 -0
- package/dist/security/index.d.ts +15 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/jwks.d.ts +20 -0
- package/dist/security/jwks.js +40 -0
- package/dist/security/jwks.js.map +1 -0
- package/dist/security/jwt.d.ts +10 -0
- package/dist/security/jwt.js +42 -0
- package/dist/security/jwt.js.map +1 -0
- package/dist/security/nonce.d.ts +34 -0
- package/dist/security/nonce.js +43 -0
- package/dist/security/nonce.js.map +1 -0
- package/dist/security/sign.d.ts +13 -0
- package/dist/security/sign.js +39 -0
- package/dist/security/sign.js.map +1 -0
- package/dist/security/verify.d.ts +28 -0
- package/dist/security/verify.js +54 -0
- package/dist/security/verify.js.map +1 -0
- package/dist/skills/codex/SKILL.md +173 -0
- package/dist/skills/codex/examples/docs-page.md +42 -0
- package/dist/skills/codex/examples/github-actions.md +64 -0
- package/dist/skills/codex/reference/admin.md +28 -0
- package/dist/skills/codex/reference/frontmatter.md +39 -0
- package/dist/skills/codex/reference/payload-markdown-directives.md +77 -0
- package/dist/skills/codex/reference/routing.md +35 -0
- package/dist/skills/codex/reference/sync.md +35 -0
- package/dist/skills/codex/reference/troubleshooting.md +53 -0
- package/dist/skills/codex/reference/workflow.md +39 -0
- package/dist/sync/aiExportManifest.d.ts +58 -0
- package/dist/sync/aiExportManifest.js +430 -0
- package/dist/sync/aiExportManifest.js.map +1 -0
- package/dist/sync/frontmatter.d.ts +28 -0
- package/dist/sync/frontmatter.js +210 -0
- package/dist/sync/frontmatter.js.map +1 -0
- package/dist/sync/hash.d.ts +1 -0
- package/dist/sync/hash.js +8 -0
- package/dist/sync/hash.js.map +1 -0
- package/dist/sync/index.d.ts +12 -0
- package/dist/sync/index.js +9 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/manifest.d.ts +58 -0
- package/dist/sync/manifest.js +21 -0
- package/dist/sync/manifest.js.map +1 -0
- package/dist/sync/paths.d.ts +16 -0
- package/dist/sync/paths.js +116 -0
- package/dist/sync/paths.js.map +1 -0
- package/dist/sync/plan.d.ts +29 -0
- package/dist/sync/plan.js +72 -0
- package/dist/sync/plan.js.map +1 -0
- package/dist/sync/validate.d.ts +26 -0
- package/dist/sync/validate.js +308 -0
- package/dist/sync/validate.js.map +1 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- 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
|