@valkyrianlabs/payload-markdown-docs 0.3.1 → 0.4.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 +76 -176
- package/dist/admin/DocsSetManager.js +5 -3
- package/dist/admin/DocsSetManager.js.map +1 -1
- package/dist/admin/docsSetManagerData.d.ts +6 -5
- package/dist/admin/docsSetManagerData.js +60 -33
- package/dist/admin/docsSetManagerData.js.map +1 -1
- package/dist/admin/docsSetManagerTypes.d.ts +12 -9
- package/dist/admin/docsSetManagerTypes.js.map +1 -1
- package/dist/cli/commands/manifest.js +1 -2
- package/dist/cli/commands/manifest.js.map +1 -1
- package/dist/cli/commands/plan.js +1 -2
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/push.js +2 -5
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/validate.js +11 -6
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/index.js +5 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/parseArgs.js +0 -3
- package/dist/cli/parseArgs.js.map +1 -1
- package/dist/cli/types.d.ts +0 -3
- package/dist/cli/types.js.map +1 -1
- package/dist/collections/docs.js +0 -24
- package/dist/collections/docs.js.map +1 -1
- package/dist/collections/docsGroups.js +8 -9
- package/dist/collections/docsGroups.js.map +1 -1
- package/dist/collections/docsKeys.d.ts +5 -0
- package/dist/collections/docsKeys.js +44 -0
- package/dist/collections/docsKeys.js.map +1 -0
- package/dist/collections/docsSets.js +47 -202
- package/dist/collections/docsSets.js.map +1 -1
- package/dist/collections/docsTrusted.d.ts +5 -0
- package/dist/collections/docsTrusted.js +60 -0
- package/dist/collections/docsTrusted.js.map +1 -0
- package/dist/collections/index.d.ts +4 -0
- package/dist/collections/index.js +2 -0
- package/dist/collections/index.js.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/endpoints/sync.d.ts +6 -7
- package/dist/endpoints/sync.js +57 -124
- package/dist/endpoints/sync.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/next/PayloadMarkdownDocsPage.js +2 -6
- package/dist/next/PayloadMarkdownDocsPage.js.map +1 -1
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.js +1 -0
- package/dist/next/index.js.map +1 -1
- package/dist/next/links.d.ts +11 -0
- package/dist/next/links.js +79 -0
- package/dist/next/links.js.map +1 -0
- package/dist/next/markdown.js +91 -19
- package/dist/next/markdown.js.map +1 -1
- package/dist/next/metadata.js +6 -6
- package/dist/next/metadata.js.map +1 -1
- package/dist/next/records.js +13 -23
- package/dist/next/records.js.map +1 -1
- package/dist/next/route.js +141 -49
- package/dist/next/route.js.map +1 -1
- package/dist/next/types.d.ts +0 -14
- package/dist/next/types.js.map +1 -1
- package/dist/payload/docsKeys.d.ts +20 -0
- package/dist/payload/docsKeys.js +29 -0
- package/dist/payload/docsKeys.js.map +1 -0
- package/dist/payload/docsSets.d.ts +32 -6
- package/dist/payload/docsSets.js +146 -83
- package/dist/payload/docsSets.js.map +1 -1
- package/dist/payload/docsTrusted.d.ts +16 -0
- package/dist/payload/docsTrusted.js +49 -0
- package/dist/payload/docsTrusted.js.map +1 -0
- package/dist/payload/index.d.ts +5 -1
- package/dist/payload/index.js +3 -1
- package/dist/payload/index.js.map +1 -1
- package/dist/plugin.js +36 -9
- package/dist/plugin.js.map +1 -1
- package/dist/security/githubOidc.d.ts +18 -5
- package/dist/security/githubOidc.js +44 -16
- package/dist/security/githubOidc.js.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/skills/codex/SKILL.md +3 -4
- package/dist/skills/codex/examples/github-actions.md +0 -2
- package/dist/skills/codex/reference/admin.md +0 -6
- package/dist/skills/codex/reference/routing.md +2 -1
- package/dist/skills/codex/reference/sync.md +7 -5
- package/dist/skills/codex/reference/troubleshooting.md +3 -4
- package/dist/skills/codex/reference/workflow.md +0 -1
- package/dist/sync/manifest.d.ts +1 -3
- package/dist/sync/manifest.js +2 -3
- package/dist/sync/manifest.js.map +1 -1
- package/dist/sync/validate.js +1 -2
- package/dist/sync/validate.js.map +1 -1
- package/dist/types.d.ts +7 -50
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
package/dist/next/route.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME } from '../constants.js';
|
|
2
|
-
import { isRouteDescendant, joinRouteSegments, normalizeRoutePath } from '../routing/index.js';
|
|
2
|
+
import { deriveDocsSetRouteBase, isRouteDescendant, joinRouteSegments, normalizeRoutePath } from '../routing/index.js';
|
|
3
3
|
import { getRelationshipId, isRecord, isVisibleDocsRecord, toResolvedDocsGroup, toResolvedDocsRecord, toResolvedDocsSet } from './records.js';
|
|
4
4
|
import { getPayloadMarkdownDocsSidebar } from './sidebar.js';
|
|
5
5
|
const resolveCollectionSlugs = (collections)=>({
|
|
@@ -19,42 +19,129 @@ export const getPayloadMarkdownDocsRoutePath = ({ slug, path })=>{
|
|
|
19
19
|
}
|
|
20
20
|
return '/';
|
|
21
21
|
};
|
|
22
|
-
const
|
|
22
|
+
const getGroupsById = async ({ collections, overrideAccess, payload })=>{
|
|
23
23
|
const result = await payload.find({
|
|
24
|
-
collection: collections.
|
|
24
|
+
collection: collections.docsGroups,
|
|
25
25
|
depth: 0,
|
|
26
|
-
limit:
|
|
27
|
-
overrideAccess
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
limit: 1000,
|
|
27
|
+
overrideAccess
|
|
28
|
+
});
|
|
29
|
+
return new Map(result.docs.flatMap((doc)=>{
|
|
30
|
+
if (!isRecord(doc)) {
|
|
31
|
+
return [];
|
|
32
32
|
}
|
|
33
|
+
const id = getRelationshipId(doc);
|
|
34
|
+
return id ? [
|
|
35
|
+
[
|
|
36
|
+
id,
|
|
37
|
+
doc
|
|
38
|
+
]
|
|
39
|
+
] : [];
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
const getGroupRoutePath = ({ groupId, groupsById, seen = new Set() })=>{
|
|
43
|
+
if (!groupId || seen.has(groupId)) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const group = groupsById.get(groupId);
|
|
47
|
+
if (!isRecord(group)) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const slug = typeof group.slug === 'string' ? group.slug : undefined;
|
|
51
|
+
if (!slug) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const parentRoutePath = getGroupRoutePath({
|
|
55
|
+
groupId: getRelationshipId(group.parent),
|
|
56
|
+
groupsById,
|
|
57
|
+
seen: new Set([
|
|
58
|
+
groupId,
|
|
59
|
+
...seen
|
|
60
|
+
])
|
|
33
61
|
});
|
|
34
|
-
return
|
|
62
|
+
return joinRouteSegments(parentRoutePath, slug);
|
|
35
63
|
};
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
64
|
+
const withComputedDocsSetRoute = ({ doc, docsSet, groupsById })=>{
|
|
65
|
+
if (!docsSet?.slug) {
|
|
66
|
+
return docsSet;
|
|
67
|
+
}
|
|
68
|
+
const groupId = isRecord(doc) ? getRelationshipId(doc.group) : undefined;
|
|
69
|
+
const groupRoutePath = getGroupRoutePath({
|
|
70
|
+
groupId,
|
|
71
|
+
groupsById
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
...docsSet,
|
|
75
|
+
routeBase: deriveDocsSetRouteBase({
|
|
76
|
+
docsSetSlug: docsSet.slug,
|
|
77
|
+
groupRoutePath
|
|
78
|
+
})
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const findDocsSetById = async ({ id, collections, overrideAccess, payload })=>{
|
|
82
|
+
const [result, groupsById] = await Promise.all([
|
|
83
|
+
payload.find({
|
|
84
|
+
collection: collections.docsSets,
|
|
85
|
+
depth: 0,
|
|
86
|
+
limit: 1,
|
|
87
|
+
overrideAccess,
|
|
88
|
+
where: {
|
|
89
|
+
id: {
|
|
90
|
+
equals: id
|
|
91
|
+
}
|
|
45
92
|
}
|
|
46
|
-
}
|
|
93
|
+
}),
|
|
94
|
+
getGroupsById({
|
|
95
|
+
collections,
|
|
96
|
+
overrideAccess,
|
|
97
|
+
payload
|
|
98
|
+
})
|
|
99
|
+
]);
|
|
100
|
+
return withComputedDocsSetRoute({
|
|
101
|
+
doc: result.docs[0],
|
|
102
|
+
docsSet: toResolvedDocsSet(result.docs[0]),
|
|
103
|
+
groupsById
|
|
47
104
|
});
|
|
48
|
-
|
|
105
|
+
};
|
|
106
|
+
const findDocsSetByRouteBase = async ({ collections, overrideAccess, payload, route })=>{
|
|
107
|
+
const [result, groupsById] = await Promise.all([
|
|
108
|
+
payload.find({
|
|
109
|
+
collection: collections.docsSets,
|
|
110
|
+
depth: 0,
|
|
111
|
+
limit: 1000,
|
|
112
|
+
overrideAccess
|
|
113
|
+
}),
|
|
114
|
+
getGroupsById({
|
|
115
|
+
collections,
|
|
116
|
+
overrideAccess,
|
|
117
|
+
payload
|
|
118
|
+
})
|
|
119
|
+
]);
|
|
120
|
+
return result.docs.map((doc)=>withComputedDocsSetRoute({
|
|
121
|
+
doc,
|
|
122
|
+
docsSet: toResolvedDocsSet(doc),
|
|
123
|
+
groupsById
|
|
124
|
+
})).find((docsSet)=>docsSet?.routeBase === route);
|
|
49
125
|
};
|
|
50
126
|
const findDocsSetByRoutePrefix = async ({ collections, overrideAccess, payload, route })=>{
|
|
51
|
-
const result = await
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
127
|
+
const [result, groupsById] = await Promise.all([
|
|
128
|
+
payload.find({
|
|
129
|
+
collection: collections.docsSets,
|
|
130
|
+
depth: 0,
|
|
131
|
+
limit: 1000,
|
|
132
|
+
overrideAccess
|
|
133
|
+
}),
|
|
134
|
+
getGroupsById({
|
|
135
|
+
collections,
|
|
136
|
+
overrideAccess,
|
|
137
|
+
payload
|
|
138
|
+
})
|
|
139
|
+
]);
|
|
140
|
+
return result.docs.map((doc)=>withComputedDocsSetRoute({
|
|
141
|
+
doc,
|
|
142
|
+
docsSet: toResolvedDocsSet(doc),
|
|
143
|
+
groupsById
|
|
144
|
+
})).filter((docsSet)=>{
|
|
58
145
|
if (!docsSet) {
|
|
59
146
|
return false;
|
|
60
147
|
}
|
|
@@ -68,10 +155,6 @@ const getRelatedDocsSet = (doc)=>{
|
|
|
68
155
|
return toResolvedDocsSet(doc.docsSet);
|
|
69
156
|
};
|
|
70
157
|
const findDocsSetForRecord = async ({ collections, doc, overrideAccess, payload, record })=>{
|
|
71
|
-
const relatedDocsSet = getRelatedDocsSet(doc);
|
|
72
|
-
if (relatedDocsSet) {
|
|
73
|
-
return relatedDocsSet;
|
|
74
|
-
}
|
|
75
158
|
if (record.docsSetId) {
|
|
76
159
|
const docsSetById = await findDocsSetById({
|
|
77
160
|
id: record.docsSetId,
|
|
@@ -83,6 +166,10 @@ const findDocsSetForRecord = async ({ collections, doc, overrideAccess, payload,
|
|
|
83
166
|
return docsSetById;
|
|
84
167
|
}
|
|
85
168
|
}
|
|
169
|
+
const relatedDocsSet = getRelatedDocsSet(doc);
|
|
170
|
+
if (relatedDocsSet) {
|
|
171
|
+
return relatedDocsSet;
|
|
172
|
+
}
|
|
86
173
|
return findDocsSetByRoutePrefix({
|
|
87
174
|
collections,
|
|
88
175
|
overrideAccess,
|
|
@@ -143,18 +230,24 @@ const findDocsSetIndexRecord = async ({ collections, docsSet, includeDrafts, mar
|
|
|
143
230
|
return result.record;
|
|
144
231
|
};
|
|
145
232
|
const findGroupIndexRoute = async ({ collections, overrideAccess, payload, route })=>{
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
depth: 0,
|
|
149
|
-
limit: 5,
|
|
233
|
+
const groupsById = await getGroupsById({
|
|
234
|
+
collections,
|
|
150
235
|
overrideAccess,
|
|
151
|
-
|
|
152
|
-
routePath: {
|
|
153
|
-
equals: route
|
|
154
|
-
}
|
|
155
|
-
}
|
|
236
|
+
payload
|
|
156
237
|
});
|
|
157
|
-
const group =
|
|
238
|
+
const group = [
|
|
239
|
+
...groupsById.entries()
|
|
240
|
+
].map(([groupId, doc])=>{
|
|
241
|
+
const resolved = toResolvedDocsGroup(doc);
|
|
242
|
+
const routePath = getGroupRoutePath({
|
|
243
|
+
groupId,
|
|
244
|
+
groupsById
|
|
245
|
+
});
|
|
246
|
+
return resolved && routePath ? {
|
|
247
|
+
...resolved,
|
|
248
|
+
routePath
|
|
249
|
+
} : undefined;
|
|
250
|
+
}).find((candidate)=>candidate?.routePath === route && candidate.serveIndex);
|
|
158
251
|
if (!group) {
|
|
159
252
|
return undefined;
|
|
160
253
|
}
|
|
@@ -162,14 +255,13 @@ const findGroupIndexRoute = async ({ collections, overrideAccess, payload, route
|
|
|
162
255
|
collection: collections.docsSets,
|
|
163
256
|
depth: 0,
|
|
164
257
|
limit: 1000,
|
|
165
|
-
overrideAccess
|
|
166
|
-
where: {
|
|
167
|
-
group: {
|
|
168
|
-
equals: group.id
|
|
169
|
-
}
|
|
170
|
-
}
|
|
258
|
+
overrideAccess
|
|
171
259
|
});
|
|
172
|
-
const docsSets = docsSetsResult.docs.
|
|
260
|
+
const docsSets = docsSetsResult.docs.filter((doc)=>isRecord(doc) && getRelationshipId(doc.group) === group.id).map((doc)=>withComputedDocsSetRoute({
|
|
261
|
+
doc,
|
|
262
|
+
docsSet: toResolvedDocsSet(doc),
|
|
263
|
+
groupsById
|
|
264
|
+
})).filter((docsSet)=>docsSet !== undefined).sort((first, second)=>{
|
|
173
265
|
if (first.order !== second.order) {
|
|
174
266
|
return first.order - second.order;
|
|
175
267
|
}
|
package/dist/next/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/next/route.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsReadPayload,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n} from '../constants.js'\nimport {\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from '../routing/index.js'\nimport {\n getRelationshipId,\n isRecord,\n isVisibleDocsRecord,\n toResolvedDocsGroup,\n toResolvedDocsRecord,\n toResolvedDocsSet,\n} from './records.js'\nimport { getPayloadMarkdownDocsSidebar } from './sidebar.js'\n\ntype ResolvedCollectionSlugs = {\n docs: string\n docsGroups: string\n docsSets: string\n}\n\nconst resolveCollectionSlugs = (\n collections?: PayloadMarkdownDocsCollectionSlugs,\n): ResolvedCollectionSlugs => ({\n docs: collections?.docs ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsGroups: collections?.docsGroups ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsSets: collections?.docsSets ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n})\n\nexport const getPayloadMarkdownDocsRoutePath = ({\n slug,\n path,\n}: {\n path?: string\n slug?: string | string[]\n}): string => {\n if (path !== undefined) {\n return normalizeRoutePath(path)\n }\n\n if (Array.isArray(slug)) {\n return slug.length === 0 ? '/' : joinRouteSegments(...slug)\n }\n\n if (typeof slug === 'string') {\n return normalizeRoutePath(slug)\n }\n\n return '/'\n}\n\nconst findDocsSetById = async ({\n id,\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n id: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const result = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1,\n overrideAccess,\n where: {\n id: {\n equals: id,\n },\n },\n })\n\n return toResolvedDocsSet(result.docs[0])\n}\n\nconst findDocsSetByRouteBase = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const result = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1,\n overrideAccess,\n where: {\n routeBase: {\n equals: route,\n },\n },\n })\n\n return result.docs\n .map(toResolvedDocsSet)\n .find((docsSet) => docsSet?.routeBase === route)\n}\n\nconst findDocsSetByRoutePrefix = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const result = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n\n return result.docs\n .map(toResolvedDocsSet)\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => {\n if (!docsSet) {\n return false\n }\n\n return docsSet.routeBase === route || isRouteDescendant(docsSet.routeBase, route)\n })\n .sort((first, second) => second.routeBase.length - first.routeBase.length)[0]\n}\n\nconst getRelatedDocsSet = (doc: unknown): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc) || !isRecord(doc.docsSet)) {\n return undefined\n }\n\n return toResolvedDocsSet(doc.docsSet)\n}\n\nconst findDocsSetForRecord = async ({\n collections,\n doc,\n overrideAccess,\n payload,\n record,\n}: {\n collections: ResolvedCollectionSlugs\n doc: unknown\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n record: ResolvedPayloadMarkdownDocsRecord\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const relatedDocsSet = getRelatedDocsSet(doc)\n\n if (relatedDocsSet) {\n return relatedDocsSet\n }\n\n if (record.docsSetId) {\n const docsSetById = await findDocsSetById({\n id: record.docsSetId,\n collections,\n overrideAccess,\n payload,\n })\n\n if (docsSetById) {\n return docsSetById\n }\n }\n\n return findDocsSetByRoutePrefix({\n collections,\n overrideAccess,\n payload,\n route: record.route,\n })\n}\n\nconst findDocsRecordByRoute = async ({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<\n | {\n doc: unknown\n record: ResolvedPayloadMarkdownDocsRecord\n }\n | undefined\n> => {\n const result = await payload.find({\n collection: collections.docs,\n depth: 1,\n limit: 5,\n overrideAccess,\n where: {\n route: {\n equals: route,\n },\n },\n })\n\n for (const doc of result.docs) {\n const record = toResolvedDocsRecord({\n doc,\n markdownField,\n })\n\n if (\n record &&\n record.route === route &&\n isVisibleDocsRecord({\n includeDrafts,\n record,\n })\n ) {\n return {\n doc,\n record,\n }\n }\n }\n\n return undefined\n}\n\nconst findDocsSetIndexRecord = async ({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n docsSet: ResolvedPayloadMarkdownDocsSet\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsRecord | undefined> => {\n const result = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route: docsSet.routeBase,\n })\n\n if (!result) {\n return undefined\n }\n\n if (result.record.docsSetId && result.record.docsSetId !== docsSet.id) {\n return undefined\n }\n\n if (isRecord(result.doc)) {\n const relatedDocsSetId = getRelationshipId(result.doc.docsSet)\n\n if (relatedDocsSetId && relatedDocsSetId !== docsSet.id) {\n return undefined\n }\n }\n\n return result.record\n}\n\nconst findGroupIndexRoute = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsRoute | undefined> => {\n const result = await payload.find({\n collection: collections.docsGroups,\n depth: 0,\n limit: 5,\n overrideAccess,\n where: {\n routePath: {\n equals: route,\n },\n },\n })\n const group = result.docs\n .map(toResolvedDocsGroup)\n .find((candidate) => candidate?.routePath === route && candidate.serveIndex)\n\n if (!group) {\n return undefined\n }\n\n const docsSetsResult = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n where: {\n group: {\n equals: group.id,\n },\n },\n })\n const docsSets = docsSetsResult.docs\n .map(toResolvedDocsSet)\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => docsSet !== undefined)\n .sort((first, second) => {\n if (first.order !== second.order) {\n return first.order - second.order\n }\n\n return first.routeBase.localeCompare(second.routeBase)\n })\n\n return {\n type: 'docsGroupIndex',\n docsSets,\n group,\n route,\n }\n}\n\nexport const resolvePayloadMarkdownDocsRoute = async ({\n slug,\n collections: collectionOptions,\n includeDrafts = false,\n markdownField = DEFAULT_MARKDOWN_FIELD_NAME,\n // Route adapter reads plugin-owned generated docs collections server-side.\n // Access is overridden here, then public visibility is enforced explicitly.\n overrideAccess = true,\n path,\n payload,\n}: ResolvePayloadMarkdownDocsRouteOptions): Promise<null | ResolvedPayloadMarkdownDocsRoute> => {\n const route = getPayloadMarkdownDocsRoutePath({\n slug,\n path,\n })\n const collections = resolveCollectionSlugs(collectionOptions)\n const docsSet = await findDocsSetByRouteBase({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n if (docsSet) {\n const [doc, sidebar] = await Promise.all([\n findDocsSetIndexRecord({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n ])\n\n return {\n ...(doc ? { doc } : {}),\n type: 'docsSetIndex',\n docsSet,\n route,\n sidebar,\n }\n }\n\n const docResult = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n })\n\n if (docResult) {\n const resolvedDocsSet = await findDocsSetForRecord({\n collections,\n doc: docResult.doc,\n overrideAccess,\n payload,\n record: docResult.record,\n })\n\n if (resolvedDocsSet) {\n const sidebar = await getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet: resolvedDocsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n })\n\n return {\n type: 'doc',\n doc: docResult.record,\n docsSet: resolvedDocsSet,\n route,\n sidebar,\n }\n }\n }\n\n const groupRoute = await findGroupIndexRoute({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n return groupRoute ?? null\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","isRouteDescendant","joinRouteSegments","normalizeRoutePath","getRelationshipId","isRecord","isVisibleDocsRecord","toResolvedDocsGroup","toResolvedDocsRecord","toResolvedDocsSet","getPayloadMarkdownDocsSidebar","resolveCollectionSlugs","collections","docs","docsGroups","docsSets","getPayloadMarkdownDocsRoutePath","slug","path","undefined","Array","isArray","length","findDocsSetById","id","overrideAccess","payload","result","find","collection","depth","limit","where","equals","findDocsSetByRouteBase","route","routeBase","map","docsSet","findDocsSetByRoutePrefix","filter","sort","first","second","getRelatedDocsSet","doc","findDocsSetForRecord","record","relatedDocsSet","docsSetId","docsSetById","findDocsRecordByRoute","includeDrafts","markdownField","findDocsSetIndexRecord","relatedDocsSetId","findGroupIndexRoute","routePath","group","candidate","serveIndex","docsSetsResult","order","localeCompare","type","resolvePayloadMarkdownDocsRoute","collectionOptions","sidebar","Promise","all","docResult","resolvedDocsSet","groupRoute"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/next/route.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsReadPayload,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n} from '../constants.js'\nimport {\n deriveDocsSetRouteBase,\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from '../routing/index.js'\nimport {\n getRelationshipId,\n isRecord,\n isVisibleDocsRecord,\n toResolvedDocsGroup,\n toResolvedDocsRecord,\n toResolvedDocsSet,\n} from './records.js'\nimport { getPayloadMarkdownDocsSidebar } from './sidebar.js'\n\ntype ResolvedCollectionSlugs = {\n docs: string\n docsGroups: string\n docsSets: string\n}\n\nconst resolveCollectionSlugs = (\n collections?: PayloadMarkdownDocsCollectionSlugs,\n): ResolvedCollectionSlugs => ({\n docs: collections?.docs ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsGroups: collections?.docsGroups ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsSets: collections?.docsSets ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n})\n\nexport const getPayloadMarkdownDocsRoutePath = ({\n slug,\n path,\n}: {\n path?: string\n slug?: string | string[]\n}): string => {\n if (path !== undefined) {\n return normalizeRoutePath(path)\n }\n\n if (Array.isArray(slug)) {\n return slug.length === 0 ? '/' : joinRouteSegments(...slug)\n }\n\n if (typeof slug === 'string') {\n return normalizeRoutePath(slug)\n }\n\n return '/'\n}\n\nconst getGroupsById = async ({\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<Map<string, unknown>> => {\n const result = await payload.find({\n collection: collections.docsGroups,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n\n return new Map(\n result.docs.flatMap((doc) => {\n if (!isRecord(doc)) {\n return []\n }\n\n const id = getRelationshipId(doc)\n\n return id ? [[id, doc]] : []\n }),\n )\n}\n\nconst getGroupRoutePath = ({\n groupId,\n groupsById,\n seen = new Set<string>(),\n}: {\n groupId?: string\n groupsById: Map<string, unknown>\n seen?: Set<string>\n}): string | undefined => {\n if (!groupId || seen.has(groupId)) {\n return undefined\n }\n\n const group = groupsById.get(groupId)\n\n if (!isRecord(group)) {\n return undefined\n }\n\n const slug = typeof group.slug === 'string' ? group.slug : undefined\n\n if (!slug) {\n return undefined\n }\n\n const parentRoutePath = getGroupRoutePath({\n groupId: getRelationshipId(group.parent),\n groupsById,\n seen: new Set([groupId, ...seen]),\n })\n\n return joinRouteSegments(parentRoutePath, slug)\n}\n\nconst withComputedDocsSetRoute = ({\n doc,\n docsSet,\n groupsById,\n}: {\n doc?: unknown\n docsSet?: ResolvedPayloadMarkdownDocsSet\n groupsById: Map<string, unknown>\n}): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!docsSet?.slug) {\n return docsSet\n }\n\n const groupId = isRecord(doc) ? getRelationshipId(doc.group) : undefined\n const groupRoutePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return {\n ...docsSet,\n routeBase: deriveDocsSetRouteBase({\n docsSetSlug: docsSet.slug,\n groupRoutePath,\n }),\n }\n}\n\nconst findDocsSetById = async ({\n id,\n collections,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n id: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1,\n overrideAccess,\n where: {\n id: {\n equals: id,\n },\n },\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return withComputedDocsSetRoute({\n doc: result.docs[0],\n docsSet: toResolvedDocsSet(result.docs[0]),\n groupsById,\n })\n}\n\nconst findDocsSetByRouteBase = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .find((docsSet) => docsSet?.routeBase === route)\n}\n\nconst findDocsSetByRoutePrefix = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n const [result, groupsById] = await Promise.all([\n payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n }),\n getGroupsById({\n collections,\n overrideAccess,\n payload,\n }),\n ])\n\n return result.docs\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => {\n if (!docsSet) {\n return false\n }\n\n return docsSet.routeBase === route || isRouteDescendant(docsSet.routeBase, route)\n })\n .sort((first, second) => second.routeBase.length - first.routeBase.length)[0]\n}\n\nconst getRelatedDocsSet = (doc: unknown): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc) || !isRecord(doc.docsSet)) {\n return undefined\n }\n\n return toResolvedDocsSet(doc.docsSet)\n}\n\nconst findDocsSetForRecord = async ({\n collections,\n doc,\n overrideAccess,\n payload,\n record,\n}: {\n collections: ResolvedCollectionSlugs\n doc: unknown\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n record: ResolvedPayloadMarkdownDocsRecord\n}): Promise<ResolvedPayloadMarkdownDocsSet | undefined> => {\n if (record.docsSetId) {\n const docsSetById = await findDocsSetById({\n id: record.docsSetId,\n collections,\n overrideAccess,\n payload,\n })\n\n if (docsSetById) {\n return docsSetById\n }\n }\n\n const relatedDocsSet = getRelatedDocsSet(doc)\n\n if (relatedDocsSet) {\n return relatedDocsSet\n }\n\n return findDocsSetByRoutePrefix({\n collections,\n overrideAccess,\n payload,\n route: record.route,\n })\n}\n\nconst findDocsRecordByRoute = async ({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<\n | {\n doc: unknown\n record: ResolvedPayloadMarkdownDocsRecord\n }\n | undefined\n> => {\n const result = await payload.find({\n collection: collections.docs,\n depth: 1,\n limit: 5,\n overrideAccess,\n where: {\n route: {\n equals: route,\n },\n },\n })\n\n for (const doc of result.docs) {\n const record = toResolvedDocsRecord({\n doc,\n markdownField,\n })\n\n if (\n record &&\n record.route === route &&\n isVisibleDocsRecord({\n includeDrafts,\n record,\n })\n ) {\n return {\n doc,\n record,\n }\n }\n }\n\n return undefined\n}\n\nconst findDocsSetIndexRecord = async ({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n}: {\n collections: ResolvedCollectionSlugs\n docsSet: ResolvedPayloadMarkdownDocsSet\n includeDrafts: boolean\n markdownField: string\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n}): Promise<ResolvedPayloadMarkdownDocsRecord | undefined> => {\n const result = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route: docsSet.routeBase,\n })\n\n if (!result) {\n return undefined\n }\n\n if (result.record.docsSetId && result.record.docsSetId !== docsSet.id) {\n return undefined\n }\n\n if (isRecord(result.doc)) {\n const relatedDocsSetId = getRelationshipId(result.doc.docsSet)\n\n if (relatedDocsSetId && relatedDocsSetId !== docsSet.id) {\n return undefined\n }\n }\n\n return result.record\n}\n\nconst findGroupIndexRoute = async ({\n collections,\n overrideAccess,\n payload,\n route,\n}: {\n collections: ResolvedCollectionSlugs\n overrideAccess: boolean\n payload: PayloadMarkdownDocsReadPayload\n route: string\n}): Promise<ResolvedPayloadMarkdownDocsRoute | undefined> => {\n const groupsById = await getGroupsById({\n collections,\n overrideAccess,\n payload,\n })\n const group = [...groupsById.entries()]\n .map(([groupId, doc]) => {\n const resolved = toResolvedDocsGroup(doc)\n const routePath = getGroupRoutePath({\n groupId,\n groupsById,\n })\n\n return resolved && routePath\n ? {\n ...resolved,\n routePath,\n }\n : undefined\n })\n .find((candidate) => candidate?.routePath === route && candidate.serveIndex)\n\n if (!group) {\n return undefined\n }\n\n const docsSetsResult = await payload.find({\n collection: collections.docsSets,\n depth: 0,\n limit: 1000,\n overrideAccess,\n })\n const docsSets = docsSetsResult.docs\n .filter((doc) => isRecord(doc) && getRelationshipId(doc.group) === group.id)\n .map((doc) =>\n withComputedDocsSetRoute({\n doc,\n docsSet: toResolvedDocsSet(doc),\n groupsById,\n }),\n )\n .filter((docsSet): docsSet is ResolvedPayloadMarkdownDocsSet => docsSet !== undefined)\n .sort((first, second) => {\n if (first.order !== second.order) {\n return first.order - second.order\n }\n\n return first.routeBase.localeCompare(second.routeBase)\n })\n\n return {\n type: 'docsGroupIndex',\n docsSets,\n group,\n route,\n }\n}\n\nexport const resolvePayloadMarkdownDocsRoute = async ({\n slug,\n collections: collectionOptions,\n includeDrafts = false,\n markdownField = DEFAULT_MARKDOWN_FIELD_NAME,\n // Route adapter reads plugin-owned generated docs collections server-side.\n // Access is overridden here, then public visibility is enforced explicitly.\n overrideAccess = true,\n path,\n payload,\n}: ResolvePayloadMarkdownDocsRouteOptions): Promise<null | ResolvedPayloadMarkdownDocsRoute> => {\n const route = getPayloadMarkdownDocsRoutePath({\n slug,\n path,\n })\n const collections = resolveCollectionSlugs(collectionOptions)\n const docsSet = await findDocsSetByRouteBase({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n if (docsSet) {\n const [doc, sidebar] = await Promise.all([\n findDocsSetIndexRecord({\n collections,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n }),\n ])\n\n return {\n ...(doc ? { doc } : {}),\n type: 'docsSetIndex',\n docsSet,\n route,\n sidebar,\n }\n }\n\n const docResult = await findDocsRecordByRoute({\n collections,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n route,\n })\n\n if (docResult) {\n const resolvedDocsSet = await findDocsSetForRecord({\n collections,\n doc: docResult.doc,\n overrideAccess,\n payload,\n record: docResult.record,\n })\n\n if (resolvedDocsSet) {\n const sidebar = await getPayloadMarkdownDocsSidebar({\n collections: collectionOptions,\n docsSet: resolvedDocsSet,\n includeDrafts,\n markdownField,\n overrideAccess,\n payload,\n })\n\n return {\n type: 'doc',\n doc: docResult.record,\n docsSet: resolvedDocsSet,\n route,\n sidebar,\n }\n }\n }\n\n const groupRoute = await findGroupIndexRoute({\n collections,\n overrideAccess,\n payload,\n route,\n })\n\n return groupRoute ?? null\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","deriveDocsSetRouteBase","isRouteDescendant","joinRouteSegments","normalizeRoutePath","getRelationshipId","isRecord","isVisibleDocsRecord","toResolvedDocsGroup","toResolvedDocsRecord","toResolvedDocsSet","getPayloadMarkdownDocsSidebar","resolveCollectionSlugs","collections","docs","docsGroups","docsSets","getPayloadMarkdownDocsRoutePath","slug","path","undefined","Array","isArray","length","getGroupsById","overrideAccess","payload","result","find","collection","depth","limit","Map","flatMap","doc","id","getGroupRoutePath","groupId","groupsById","seen","Set","has","group","get","parentRoutePath","parent","withComputedDocsSetRoute","docsSet","groupRoutePath","routeBase","docsSetSlug","findDocsSetById","Promise","all","where","equals","findDocsSetByRouteBase","route","map","findDocsSetByRoutePrefix","filter","sort","first","second","getRelatedDocsSet","findDocsSetForRecord","record","docsSetId","docsSetById","relatedDocsSet","findDocsRecordByRoute","includeDrafts","markdownField","findDocsSetIndexRecord","relatedDocsSetId","findGroupIndexRoute","entries","resolved","routePath","candidate","serveIndex","docsSetsResult","order","localeCompare","type","resolvePayloadMarkdownDocsRoute","collectionOptions","sidebar","docResult","resolvedDocsSet","groupRoute"],"mappings":"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"}
|
package/dist/next/types.d.ts
CHANGED
|
@@ -27,23 +27,11 @@ export type ResolvePayloadMarkdownDocsRouteOptions = {
|
|
|
27
27
|
slug?: string | string[];
|
|
28
28
|
};
|
|
29
29
|
export type PayloadMarkdownDocsDefaults = {
|
|
30
|
-
heroDescription?: string;
|
|
31
|
-
heroEyebrow?: string;
|
|
32
|
-
heroTitle?: string;
|
|
33
|
-
seoDescription?: string;
|
|
34
|
-
seoTitle?: string;
|
|
35
30
|
sidebarMode?: 'auto' | 'hidden' | 'manual';
|
|
36
|
-
theme?: string;
|
|
37
31
|
};
|
|
38
32
|
export type PayloadMarkdownDocsOverrides = {
|
|
39
|
-
heroDescription?: string;
|
|
40
|
-
heroEyebrow?: string;
|
|
41
|
-
heroTitle?: string;
|
|
42
33
|
hideFromNav?: boolean;
|
|
43
34
|
navTitle?: string;
|
|
44
|
-
seoDescription?: string;
|
|
45
|
-
seoTitle?: string;
|
|
46
|
-
theme?: string;
|
|
47
35
|
};
|
|
48
36
|
export type ResolvedPayloadMarkdownDocsSet = {
|
|
49
37
|
aiExport?: DocsAiExportManifest;
|
|
@@ -54,8 +42,6 @@ export type ResolvedPayloadMarkdownDocsSet = {
|
|
|
54
42
|
order: number;
|
|
55
43
|
routeBase: string;
|
|
56
44
|
slug?: string;
|
|
57
|
-
sourceId?: string;
|
|
58
|
-
sourceRoot?: string;
|
|
59
45
|
title: string;
|
|
60
46
|
};
|
|
61
47
|
export type ResolvedPayloadMarkdownDocsGroup = {
|
package/dist/next/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n
|
|
1
|
+
{"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n sidebarMode?: 'auto' | 'hidden' | 'manual'\n}\n\nexport type PayloadMarkdownDocsOverrides = {\n hideFromNav?: boolean\n navTitle?: string\n}\n\nexport type ResolvedPayloadMarkdownDocsSet = {\n aiExport?: DocsAiExportManifest\n defaults?: PayloadMarkdownDocsDefaults\n description?: string\n id: string\n navTitle?: string\n order: number\n routeBase: string\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsGroup = {\n description?: string\n id: string\n navTitle?: string\n order: number\n routePath: string\n serveIndex: boolean\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRecord = {\n archived: boolean\n content?: string\n depth: number\n description?: string\n docsSetId?: string\n id: string\n navTitle?: string\n order: number\n overrides?: PayloadMarkdownDocsOverrides\n route: string\n sourceHash?: string\n sourcePath: string\n status?: 'draft' | 'published'\n title: string\n}\n\nexport type PayloadMarkdownDocsSidebarItem = {\n children?: PayloadMarkdownDocsSidebarItem[]\n depth: number\n hidden?: boolean\n label: string\n order: number\n route: string\n sourcePath: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRoute =\n | {\n doc: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'doc'\n }\n | {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'docsSetIndex'\n }\n | {\n docsSets: ResolvedPayloadMarkdownDocsSet[]\n group: ResolvedPayloadMarkdownDocsGroup\n route: string\n type: 'docsGroupIndex'\n }\n\nexport type PayloadMarkdownDocsMetadata = {\n description?: string\n title?: string\n}\n"],"names":[],"mappings":"AAkHA,WAGC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type DocsKeyPayloadOperations = {
|
|
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 ResolvedDocsKey = {
|
|
13
|
+
id: string;
|
|
14
|
+
publicKey: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const findDocsKeyById: ({ collectionSlug, keyId, payload, }: {
|
|
17
|
+
collectionSlug: string;
|
|
18
|
+
keyId: string;
|
|
19
|
+
payload: DocsKeyPayloadOperations;
|
|
20
|
+
}) => Promise<ResolvedDocsKey | undefined>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
2
|
+
const getString = (value)=>typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
|
|
3
|
+
const toResolvedDocsKey = (doc)=>{
|
|
4
|
+
if (!isRecord(doc)) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
const id = getString(doc.keyId);
|
|
8
|
+
const publicKey = getString(doc.publicKey);
|
|
9
|
+
return id && publicKey ? {
|
|
10
|
+
id,
|
|
11
|
+
publicKey
|
|
12
|
+
} : undefined;
|
|
13
|
+
};
|
|
14
|
+
export const findDocsKeyById = async ({ collectionSlug, keyId, payload })=>{
|
|
15
|
+
const result = await payload.find({
|
|
16
|
+
collection: collectionSlug,
|
|
17
|
+
depth: 0,
|
|
18
|
+
limit: 1,
|
|
19
|
+
overrideAccess: true,
|
|
20
|
+
where: {
|
|
21
|
+
keyId: {
|
|
22
|
+
equals: keyId
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return toResolvedDocsKey(result.docs[0]);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=docsKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/payload/docsKeys.ts"],"sourcesContent":["export type DocsKeyPayloadOperations = {\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 ResolvedDocsKey = {\n id: string\n publicKey: string\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst getString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined\n\nconst toResolvedDocsKey = (doc: unknown): ResolvedDocsKey | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getString(doc.keyId)\n const publicKey = getString(doc.publicKey)\n\n return id && publicKey\n ? {\n id,\n publicKey,\n }\n : undefined\n}\n\nexport const findDocsKeyById = async ({\n collectionSlug,\n keyId,\n payload,\n}: {\n collectionSlug: string\n keyId: string\n payload: DocsKeyPayloadOperations\n}): Promise<ResolvedDocsKey | undefined> => {\n const result = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n where: {\n keyId: {\n equals: keyId,\n },\n },\n })\n\n return toResolvedDocsKey(result.docs[0])\n}\n"],"names":["isRecord","value","Array","isArray","getString","trim","undefined","toResolvedDocsKey","doc","id","keyId","publicKey","findDocsKeyById","collectionSlug","payload","result","find","collection","depth","limit","overrideAccess","where","equals","docs"],"mappings":"AAiBA,MAAMA,WAAW,CAACC,QAChB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACC,MAAMC,OAAO,CAACF;AAEhE,MAAMG,YAAY,CAACH,QACjB,OAAOA,UAAU,YAAYA,MAAMI,IAAI,OAAO,KAAKJ,MAAMI,IAAI,KAAKC;AAEpE,MAAMC,oBAAoB,CAACC;IACzB,IAAI,CAACR,SAASQ,MAAM;QAClB,OAAOF;IACT;IAEA,MAAMG,KAAKL,UAAUI,IAAIE,KAAK;IAC9B,MAAMC,YAAYP,UAAUI,IAAIG,SAAS;IAEzC,OAAOF,MAAME,YACT;QACEF;QACAE;IACF,IACAL;AACN;AAEA,OAAO,MAAMM,kBAAkB,OAAO,EACpCC,cAAc,EACdH,KAAK,EACLI,OAAO,EAKR;IACC,MAAMC,SAAS,MAAMD,QAAQE,IAAI,CAAC;QAChCC,YAAYJ;QACZK,OAAO;QACPC,OAAO;QACPC,gBAAgB;QAChBC,OAAO;YACLX,OAAO;gBACLY,QAAQZ;YACV;QACF;IACF;IAEA,OAAOH,kBAAkBQ,OAAOQ,IAAI,CAAC,EAAE;AACzC,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PayloadMarkdownDocsAuthToggle } from '../types.js';
|
|
2
2
|
export type DocsSetPayloadOperations = {
|
|
3
3
|
find: (args: {
|
|
4
4
|
collection: string;
|
|
@@ -17,13 +17,32 @@ export type DocsSetPayloadOperations = {
|
|
|
17
17
|
}) => Promise<Record<string, unknown>>;
|
|
18
18
|
};
|
|
19
19
|
export type PayloadRecordId = number | string;
|
|
20
|
+
export type ResolvedDocsGroup = {
|
|
21
|
+
id: PayloadRecordId;
|
|
22
|
+
parentId?: string;
|
|
23
|
+
routePath: string;
|
|
24
|
+
slug: string;
|
|
25
|
+
};
|
|
20
26
|
export type ResolvedDocsSet = {
|
|
21
|
-
|
|
27
|
+
advancedSecurity?: {
|
|
28
|
+
allowedWorkflowRefs: string[];
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
};
|
|
31
|
+
allowPullRequests: boolean;
|
|
32
|
+
branch: string;
|
|
33
|
+
groupId?: string;
|
|
22
34
|
id: PayloadRecordId;
|
|
23
35
|
routeBase: string;
|
|
24
|
-
|
|
25
|
-
sourceRoot?: string;
|
|
36
|
+
slug: string;
|
|
26
37
|
};
|
|
38
|
+
export declare const isGitHubOidcAuthEnabled: (auth: {
|
|
39
|
+
githubOidc?: boolean | PayloadMarkdownDocsAuthToggle;
|
|
40
|
+
mode?: "disabled";
|
|
41
|
+
} | undefined) => boolean;
|
|
42
|
+
export declare const isEd25519AuthEnabled: (auth: {
|
|
43
|
+
ed25519?: boolean | PayloadMarkdownDocsAuthToggle;
|
|
44
|
+
mode?: "disabled";
|
|
45
|
+
} | undefined) => boolean;
|
|
27
46
|
export declare const updateDocsSetAfterSync: ({ aiExport, collectionSlug, docsCount, docsSetId, now, payload, syncRunId, }: {
|
|
28
47
|
aiExport?: unknown;
|
|
29
48
|
collectionSlug: string;
|
|
@@ -33,8 +52,15 @@ export declare const updateDocsSetAfterSync: ({ aiExport, collectionSlug, docsCo
|
|
|
33
52
|
payload: DocsSetPayloadOperations;
|
|
34
53
|
syncRunId?: PayloadRecordId;
|
|
35
54
|
}) => Promise<void>;
|
|
36
|
-
export declare const
|
|
55
|
+
export declare const findDocsSetBySlug: ({ slug, collectionSlug, docsGroupsCollectionSlug, payload, }: {
|
|
56
|
+
collectionSlug: string;
|
|
57
|
+
docsGroupsCollectionSlug: string;
|
|
58
|
+
payload: DocsSetPayloadOperations;
|
|
59
|
+
slug: string;
|
|
60
|
+
}) => Promise<ResolvedDocsSet | undefined>;
|
|
61
|
+
export declare const findDocsSetByRouteBase: ({ collectionSlug, docsGroupsCollectionSlug, payload, routeBase, }: {
|
|
37
62
|
collectionSlug: string;
|
|
63
|
+
docsGroupsCollectionSlug: string;
|
|
38
64
|
payload: DocsSetPayloadOperations;
|
|
39
|
-
|
|
65
|
+
routeBase: string;
|
|
40
66
|
}) => Promise<ResolvedDocsSet | undefined>;
|