@valkyrianlabs/payload-markdown-docs 0.4.2 → 0.4.3

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.
@@ -2,8 +2,9 @@ import type { CollectionConfig } from 'payload';
2
2
  export type CreateDocsCollectionOptions = {
3
3
  docsSetsCollectionSlug?: string;
4
4
  enableDrafts?: boolean;
5
+ heroImageMediaCollectionSlugs?: string[];
5
6
  markdownFieldName: string;
6
7
  slug: string;
7
8
  syncRunsCollectionSlug?: string;
8
9
  };
9
- export declare const createDocsCollection: ({ slug, docsSetsCollectionSlug, enableDrafts, markdownFieldName, syncRunsCollectionSlug, }: CreateDocsCollectionOptions) => CollectionConfig;
10
+ export declare const createDocsCollection: ({ slug, docsSetsCollectionSlug, enableDrafts, heroImageMediaCollectionSlugs, markdownFieldName, syncRunsCollectionSlug, }: CreateDocsCollectionOptions) => CollectionConfig;
@@ -1,6 +1,28 @@
1
1
  import { markdownField } from '@valkyrianlabs/payload-markdown';
2
2
  import { MANAGED_BY } from '../constants.js';
3
- export const createDocsCollection = ({ slug, docsSetsCollectionSlug, enableDrafts = false, markdownFieldName, syncRunsCollectionSlug })=>({
3
+ const createHeroImageField = (relationToSlugs)=>{
4
+ const fieldBase = {
5
+ name: 'heroImage',
6
+ type: 'upload',
7
+ admin: {
8
+ description: 'Optional hero image rendered above generated docs content.'
9
+ },
10
+ displayPreview: true,
11
+ label: 'Hero Image',
12
+ maxDepth: 1
13
+ };
14
+ if (relationToSlugs.length === 1) {
15
+ return {
16
+ ...fieldBase,
17
+ relationTo: relationToSlugs[0] ?? 'media'
18
+ };
19
+ }
20
+ return {
21
+ ...fieldBase,
22
+ relationTo: relationToSlugs
23
+ };
24
+ };
25
+ export const createDocsCollection = ({ slug, docsSetsCollectionSlug, enableDrafts = false, heroImageMediaCollectionSlugs, markdownFieldName, syncRunsCollectionSlug })=>({
4
26
  slug,
5
27
  admin: {
6
28
  defaultColumns: [
@@ -67,6 +89,9 @@ export const createDocsCollection = ({ slug, docsSetsCollectionSlug, enableDraft
67
89
  type: 'relationship',
68
90
  relationTo: slug
69
91
  },
92
+ ...heroImageMediaCollectionSlugs?.length ? [
93
+ createHeroImageField(heroImageMediaCollectionSlugs)
94
+ ] : [],
70
95
  markdownField({
71
96
  name: markdownFieldName,
72
97
  label: 'Content'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collections/docs.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { markdownField } from '@valkyrianlabs/payload-markdown'\n\nimport { MANAGED_BY } from '../constants.js'\n\nexport type CreateDocsCollectionOptions = {\n docsSetsCollectionSlug?: string\n enableDrafts?: boolean\n markdownFieldName: string\n slug: string\n syncRunsCollectionSlug?: string\n}\n\nexport const createDocsCollection = ({\n slug,\n docsSetsCollectionSlug,\n enableDrafts = false,\n markdownFieldName,\n syncRunsCollectionSlug,\n}: CreateDocsCollectionOptions): CollectionConfig => ({\n slug,\n admin: {\n defaultColumns: ['title', 'route', 'sourcePath', 'updatedAt'],\n hidden: true,\n useAsTitle: 'title',\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n required: true,\n },\n {\n name: 'navTitle',\n type: 'text',\n },\n {\n name: 'description',\n type: 'textarea',\n },\n {\n name: 'route',\n type: 'text',\n index: true,\n required: true,\n unique: true,\n },\n {\n name: 'sourcePath',\n type: 'text',\n index: true,\n required: true,\n },\n ...(docsSetsCollectionSlug\n ? [\n {\n name: 'docsSet',\n type: 'relationship' as const,\n index: true,\n relationTo: docsSetsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'sourceHash',\n type: 'text',\n index: true,\n },\n {\n name: 'depth',\n type: 'number',\n defaultValue: 0,\n },\n {\n name: 'order',\n type: 'number',\n defaultValue: 0,\n },\n {\n name: 'parent',\n type: 'relationship',\n relationTo: slug,\n },\n markdownField({\n name: markdownFieldName,\n label: 'Content',\n }),\n {\n name: 'overrides',\n type: 'group',\n fields: [\n {\n name: 'navTitle',\n type: 'text',\n },\n {\n name: 'hideFromNav',\n type: 'checkbox',\n defaultValue: false,\n },\n ],\n },\n {\n name: 'sync',\n type: 'group',\n fields: [\n {\n name: 'sourceId',\n type: 'text',\n index: true,\n },\n {\n name: 'sourcePath',\n type: 'text',\n index: true,\n },\n {\n name: 'sourceHashAtLastSync',\n type: 'text',\n index: true,\n },\n {\n name: 'lastSyncedAt',\n type: 'date',\n },\n ...(syncRunsCollectionSlug\n ? [\n {\n name: 'lastSyncRunId',\n type: 'relationship' as const,\n relationTo: syncRunsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'managedBy',\n type: 'text',\n defaultValue: MANAGED_BY,\n },\n {\n name: 'archived',\n type: 'checkbox',\n defaultValue: false,\n index: true,\n },\n {\n name: 'archivedAt',\n type: 'date',\n },\n ],\n },\n ],\n ...(enableDrafts\n ? {\n versions: {\n drafts: true,\n },\n }\n : {}),\n})\n"],"names":["markdownField","MANAGED_BY","createDocsCollection","slug","docsSetsCollectionSlug","enableDrafts","markdownFieldName","syncRunsCollectionSlug","admin","defaultColumns","hidden","useAsTitle","fields","name","type","required","index","unique","relationTo","defaultValue","label","versions","drafts"],"mappings":"AAEA,SAASA,aAAa,QAAQ,kCAAiC;AAE/D,SAASC,UAAU,QAAQ,kBAAiB;AAU5C,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,IAAI,EACJC,sBAAsB,EACtBC,eAAe,KAAK,EACpBC,iBAAiB,EACjBC,sBAAsB,EACM,GAAwB,CAAA;QACpDJ;QACAK,OAAO;YACLC,gBAAgB;gBAAC;gBAAS;gBAAS;gBAAc;aAAY;YAC7DC,QAAQ;YACRC,YAAY;QACd;QACAC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNC,UAAU;YACZ;YACA;gBACEF,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;gBACNE,OAAO;gBACPD,UAAU;gBACVE,QAAQ;YACV;YACA;gBACEJ,MAAM;gBACNC,MAAM;gBACNE,OAAO;gBACPD,UAAU;YACZ;eACIX,yBACA;gBACE;oBACES,MAAM;oBACNC,MAAM;oBACNE,OAAO;oBACPE,YAAYd;gBACd;aACD,GACD,EAAE;YACN;gBACES,MAAM;gBACNC,MAAM;gBACNE,OAAO;YACT;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNK,cAAc;YAChB;YACA;gBACEN,MAAM;gBACNC,MAAM;gBACNK,cAAc;YAChB;YACA;gBACEN,MAAM;gBACNC,MAAM;gBACNI,YAAYf;YACd;YACAH,cAAc;gBACZa,MAAMP;gBACNc,OAAO;YACT;YACA;gBACEP,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;oBACR;oBACA;wBACED,MAAM;wBACNC,MAAM;wBACNK,cAAc;oBAChB;iBACD;YACH;YACA;gBACEN,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNE,OAAO;oBACT;oBACA;wBACEH,MAAM;wBACNC,MAAM;wBACNE,OAAO;oBACT;oBACA;wBACEH,MAAM;wBACNC,MAAM;wBACNE,OAAO;oBACT;oBACA;wBACEH,MAAM;wBACNC,MAAM;oBACR;uBACIP,yBACA;wBACE;4BACEM,MAAM;4BACNC,MAAM;4BACNI,YAAYX;wBACd;qBACD,GACD,EAAE;oBACN;wBACEM,MAAM;wBACNC,MAAM;wBACNK,cAAclB;oBAChB;oBACA;wBACEY,MAAM;wBACNC,MAAM;wBACNK,cAAc;wBACdH,OAAO;oBACT;oBACA;wBACEH,MAAM;wBACNC,MAAM;oBACR;iBACD;YACH;SACD;QACD,GAAIT,eACA;YACEgB,UAAU;gBACRC,QAAQ;YACV;QACF,IACA,CAAC,CAAC;IACR,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../src/collections/docs.ts"],"sourcesContent":["import type { CollectionConfig, Field } from 'payload'\n\nimport { markdownField } from '@valkyrianlabs/payload-markdown'\n\nimport { MANAGED_BY } from '../constants.js'\n\nexport type CreateDocsCollectionOptions = {\n docsSetsCollectionSlug?: string\n enableDrafts?: boolean\n heroImageMediaCollectionSlugs?: string[]\n markdownFieldName: string\n slug: string\n syncRunsCollectionSlug?: string\n}\n\nconst createHeroImageField = (relationToSlugs: string[]): Field => {\n const fieldBase = {\n name: 'heroImage',\n type: 'upload' as const,\n admin: {\n description: 'Optional hero image rendered above generated docs content.',\n },\n displayPreview: true,\n label: 'Hero Image',\n maxDepth: 1,\n }\n\n if (relationToSlugs.length === 1) {\n return {\n ...fieldBase,\n relationTo: relationToSlugs[0] ?? 'media',\n }\n }\n\n return {\n ...fieldBase,\n relationTo: relationToSlugs,\n }\n}\n\nexport const createDocsCollection = ({\n slug,\n docsSetsCollectionSlug,\n enableDrafts = false,\n heroImageMediaCollectionSlugs,\n markdownFieldName,\n syncRunsCollectionSlug,\n}: CreateDocsCollectionOptions): CollectionConfig => ({\n slug,\n admin: {\n defaultColumns: ['title', 'route', 'sourcePath', 'updatedAt'],\n hidden: true,\n useAsTitle: 'title',\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n required: true,\n },\n {\n name: 'navTitle',\n type: 'text',\n },\n {\n name: 'description',\n type: 'textarea',\n },\n {\n name: 'route',\n type: 'text',\n index: true,\n required: true,\n unique: true,\n },\n {\n name: 'sourcePath',\n type: 'text',\n index: true,\n required: true,\n },\n ...(docsSetsCollectionSlug\n ? [\n {\n name: 'docsSet',\n type: 'relationship' as const,\n index: true,\n relationTo: docsSetsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'sourceHash',\n type: 'text',\n index: true,\n },\n {\n name: 'depth',\n type: 'number',\n defaultValue: 0,\n },\n {\n name: 'order',\n type: 'number',\n defaultValue: 0,\n },\n {\n name: 'parent',\n type: 'relationship',\n relationTo: slug,\n },\n ...(heroImageMediaCollectionSlugs?.length\n ? [createHeroImageField(heroImageMediaCollectionSlugs)]\n : []),\n markdownField({\n name: markdownFieldName,\n label: 'Content',\n }),\n {\n name: 'overrides',\n type: 'group',\n fields: [\n {\n name: 'navTitle',\n type: 'text',\n },\n {\n name: 'hideFromNav',\n type: 'checkbox',\n defaultValue: false,\n },\n ],\n },\n {\n name: 'sync',\n type: 'group',\n fields: [\n {\n name: 'sourceId',\n type: 'text',\n index: true,\n },\n {\n name: 'sourcePath',\n type: 'text',\n index: true,\n },\n {\n name: 'sourceHashAtLastSync',\n type: 'text',\n index: true,\n },\n {\n name: 'lastSyncedAt',\n type: 'date',\n },\n ...(syncRunsCollectionSlug\n ? [\n {\n name: 'lastSyncRunId',\n type: 'relationship' as const,\n relationTo: syncRunsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'managedBy',\n type: 'text',\n defaultValue: MANAGED_BY,\n },\n {\n name: 'archived',\n type: 'checkbox',\n defaultValue: false,\n index: true,\n },\n {\n name: 'archivedAt',\n type: 'date',\n },\n ],\n },\n ],\n ...(enableDrafts\n ? {\n versions: {\n drafts: true,\n },\n }\n : {}),\n})\n"],"names":["markdownField","MANAGED_BY","createHeroImageField","relationToSlugs","fieldBase","name","type","admin","description","displayPreview","label","maxDepth","length","relationTo","createDocsCollection","slug","docsSetsCollectionSlug","enableDrafts","heroImageMediaCollectionSlugs","markdownFieldName","syncRunsCollectionSlug","defaultColumns","hidden","useAsTitle","fields","required","index","unique","defaultValue","versions","drafts"],"mappings":"AAEA,SAASA,aAAa,QAAQ,kCAAiC;AAE/D,SAASC,UAAU,QAAQ,kBAAiB;AAW5C,MAAMC,uBAAuB,CAACC;IAC5B,MAAMC,YAAY;QAChBC,MAAM;QACNC,MAAM;QACNC,OAAO;YACLC,aAAa;QACf;QACAC,gBAAgB;QAChBC,OAAO;QACPC,UAAU;IACZ;IAEA,IAAIR,gBAAgBS,MAAM,KAAK,GAAG;QAChC,OAAO;YACL,GAAGR,SAAS;YACZS,YAAYV,eAAe,CAAC,EAAE,IAAI;QACpC;IACF;IAEA,OAAO;QACL,GAAGC,SAAS;QACZS,YAAYV;IACd;AACF;AAEA,OAAO,MAAMW,uBAAuB,CAAC,EACnCC,IAAI,EACJC,sBAAsB,EACtBC,eAAe,KAAK,EACpBC,6BAA6B,EAC7BC,iBAAiB,EACjBC,sBAAsB,EACM,GAAwB,CAAA;QACpDL;QACAR,OAAO;YACLc,gBAAgB;gBAAC;gBAAS;gBAAS;gBAAc;aAAY;YAC7DC,QAAQ;YACRC,YAAY;QACd;QACAC,QAAQ;YACN;gBACEnB,MAAM;gBACNC,MAAM;gBACNmB,UAAU;YACZ;YACA;gBACEpB,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;gBACNoB,OAAO;gBACPD,UAAU;gBACVE,QAAQ;YACV;YACA;gBACEtB,MAAM;gBACNC,MAAM;gBACNoB,OAAO;gBACPD,UAAU;YACZ;eACIT,yBACA;gBACE;oBACEX,MAAM;oBACNC,MAAM;oBACNoB,OAAO;oBACPb,YAAYG;gBACd;aACD,GACD,EAAE;YACN;gBACEX,MAAM;gBACNC,MAAM;gBACNoB,OAAO;YACT;YACA;gBACErB,MAAM;gBACNC,MAAM;gBACNsB,cAAc;YAChB;YACA;gBACEvB,MAAM;gBACNC,MAAM;gBACNsB,cAAc;YAChB;YACA;gBACEvB,MAAM;gBACNC,MAAM;gBACNO,YAAYE;YACd;eACIG,+BAA+BN,SAC/B;gBAACV,qBAAqBgB;aAA+B,GACrD,EAAE;YACNlB,cAAc;gBACZK,MAAMc;gBACNT,OAAO;YACT;YACA;gBACEL,MAAM;gBACNC,MAAM;gBACNkB,QAAQ;oBACN;wBACEnB,MAAM;wBACNC,MAAM;oBACR;oBACA;wBACED,MAAM;wBACNC,MAAM;wBACNsB,cAAc;oBAChB;iBACD;YACH;YACA;gBACEvB,MAAM;gBACNC,MAAM;gBACNkB,QAAQ;oBACN;wBACEnB,MAAM;wBACNC,MAAM;wBACNoB,OAAO;oBACT;oBACA;wBACErB,MAAM;wBACNC,MAAM;wBACNoB,OAAO;oBACT;oBACA;wBACErB,MAAM;wBACNC,MAAM;wBACNoB,OAAO;oBACT;oBACA;wBACErB,MAAM;wBACNC,MAAM;oBACR;uBACIc,yBACA;wBACE;4BACEf,MAAM;4BACNC,MAAM;4BACNO,YAAYO;wBACd;qBACD,GACD,EAAE;oBACN;wBACEf,MAAM;wBACNC,MAAM;wBACNsB,cAAc3B;oBAChB;oBACA;wBACEI,MAAM;wBACNC,MAAM;wBACNsB,cAAc;wBACdF,OAAO;oBACT;oBACA;wBACErB,MAAM;wBACNC,MAAM;oBACR;iBACD;YACH;SACD;QACD,GAAIW,eACA;YACEY,UAAU;gBACRC,QAAQ;YACV;QACF,IACA,CAAC,CAAC;IACR,CAAA,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collections/docsSets.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport {\n DOCS_GLOBALS_ADMIN_GROUP,\n DOCS_SET_MANAGER_COMPONENT,\n} from '../constants.js'\nimport { createPublishGeneratedDocsEndpoint } from '../endpoints/publishGeneratedDocs.js'\n\nexport type CreateDocsSetsCollectionOptions = {\n allowPublish?: boolean\n docsCollectionSlug?: string\n docsEnableDrafts?: boolean\n docsGroupsCollectionSlug: string\n slug: string\n syncRunsCollectionSlug?: string\n}\n\nexport const createDocsSetsCollection = ({\n slug,\n allowPublish = false,\n docsCollectionSlug,\n docsEnableDrafts = false,\n docsGroupsCollectionSlug,\n syncRunsCollectionSlug,\n}: CreateDocsSetsCollectionOptions): CollectionConfig => ({\n slug,\n admin: {\n defaultColumns: ['title', 'slug', 'branch', 'updatedAt'],\n group: DOCS_GLOBALS_ADMIN_GROUP,\n useAsTitle: 'title',\n },\n endpoints:\n docsCollectionSlug && docsEnableDrafts && allowPublish\n ? [\n createPublishGeneratedDocsEndpoint({\n docsCollectionSlug,\n docsSetsCollectionSlug: slug,\n }),\n ]\n : undefined,\n fields: [\n {\n name: 'title',\n type: 'text',\n required: true,\n },\n {\n name: 'slug',\n type: 'text',\n index: true,\n required: true,\n unique: true,\n },\n {\n name: 'group',\n type: 'relationship',\n relationTo: docsGroupsCollectionSlug,\n },\n {\n name: 'branch',\n type: 'text',\n admin: {\n description:\n 'Git branch allowed to publish this docs set. The full Git ref is handled internally.',\n },\n defaultValue: 'main',\n },\n {\n name: 'allowPullRequests',\n type: 'checkbox',\n admin: {\n description:\n 'Allow GitHub pull request events to dry-run or publish this docs set.',\n },\n defaultValue: false,\n },\n {\n name: 'description',\n type: 'textarea',\n },\n {\n name: 'advancedSecurity',\n type: 'group',\n admin: {\n description:\n 'Optional workflow lock-down. Leave disabled to allow any workflow from a trusted GitHub owner/repository and branch.',\n },\n fields: [\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n description:\n 'When enabled, only the workflow refs listed below can publish this docs set.',\n },\n defaultValue: false,\n },\n {\n name: 'allowedWorkflowRefs',\n type: 'array',\n admin: {\n condition: (_data, siblingData) => siblingData?.enabled === true,\n description:\n 'Exact GitHub workflow refs, for example owner/repo/.github/workflows/publish-docs.yml@refs/heads/main.',\n },\n fields: [\n {\n name: 'value',\n type: 'text',\n required: true,\n },\n ],\n validate: (value, { siblingData }) => {\n const advancedSecurityData =\n typeof siblingData === 'object' && siblingData !== null\n ? (siblingData as { enabled?: unknown })\n : undefined\n\n if (\n advancedSecurityData?.enabled === true &&\n (!Array.isArray(value) || value.length === 0)\n ) {\n return 'Add at least one workflow ref or disable advanced security.'\n }\n\n return true\n },\n },\n ],\n },\n {\n name: 'aiExport',\n type: 'json',\n admin: {\n description:\n 'Parsed index.ai.yml control data for the raw Markdown AI export route.',\n },\n },\n {\n name: 'sync',\n type: 'group',\n fields: [\n {\n name: 'lastSyncedAt',\n type: 'date',\n },\n ...(syncRunsCollectionSlug\n ? [\n {\n name: 'lastSyncRunId',\n type: 'relationship' as const,\n relationTo: syncRunsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'lastStatus',\n type: 'select',\n options: ['failed', 'pending', 'success'],\n },\n {\n name: 'docsCount',\n type: 'number',\n defaultValue: 0,\n },\n ],\n },\n ...(docsCollectionSlug\n ? [\n {\n name: 'docsSetManager',\n type: 'ui' as const,\n admin: {\n components: {\n Field: DOCS_SET_MANAGER_COMPONENT,\n },\n custom: {\n allowPublish,\n docsCollectionSlug,\n docsEnableDrafts,\n docsGroupsCollectionSlug,\n docsSetsCollectionSlug: slug,\n },\n },\n },\n ]\n : []),\n ],\n labels: {\n plural: 'Sets',\n singular: 'Set',\n },\n})\n"],"names":["DOCS_GLOBALS_ADMIN_GROUP","DOCS_SET_MANAGER_COMPONENT","createPublishGeneratedDocsEndpoint","createDocsSetsCollection","slug","allowPublish","docsCollectionSlug","docsEnableDrafts","docsGroupsCollectionSlug","syncRunsCollectionSlug","admin","defaultColumns","group","useAsTitle","endpoints","docsSetsCollectionSlug","undefined","fields","name","type","required","index","unique","relationTo","description","defaultValue","condition","_data","siblingData","enabled","validate","value","advancedSecurityData","Array","isArray","length","options","components","Field","custom","labels","plural","singular"],"mappings":"AAEA,SACEA,wBAAwB,EACxBC,0BAA0B,QACrB,kBAAiB;AACxB,SAASC,kCAAkC,QAAQ,uCAAsC;AAWzF,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,IAAI,EACJC,eAAe,KAAK,EACpBC,kBAAkB,EAClBC,mBAAmB,KAAK,EACxBC,wBAAwB,EACxBC,sBAAsB,EACU,GAAwB,CAAA;QACxDL;QACAM,OAAO;YACLC,gBAAgB;gBAAC;gBAAS;gBAAQ;gBAAU;aAAY;YACxDC,OAAOZ;YACPa,YAAY;QACd;QACAC,WACER,sBAAsBC,oBAAoBF,eACtC;YACEH,mCAAmC;gBACjCI;gBACAS,wBAAwBX;YAC1B;SACD,GACDY;QACNC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNC,UAAU;YACZ;YACA;gBACEF,MAAM;gBACNC,MAAM;gBACNE,OAAO;gBACPD,UAAU;gBACVE,QAAQ;YACV;YACA;gBACEJ,MAAM;gBACNC,MAAM;gBACNI,YAAYf;YACd;YACA;gBACEU,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;gBACAC,cAAc;YAChB;YACA;gBACEP,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;gBACAC,cAAc;YAChB;YACA;gBACEP,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;gBACAP,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNT,OAAO;4BACLc,aACE;wBACJ;wBACAC,cAAc;oBAChB;oBACA;wBACEP,MAAM;wBACNC,MAAM;wBACNT,OAAO;4BACLgB,WAAW,CAACC,OAAOC,cAAgBA,aAAaC,YAAY;4BAC5DL,aACE;wBACJ;wBACAP,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;gCACNC,UAAU;4BACZ;yBACD;wBACDU,UAAU,CAACC,OAAO,EAAEH,WAAW,EAAE;4BAC/B,MAAMI,uBACJ,OAAOJ,gBAAgB,YAAYA,gBAAgB,OAC9CA,cACDZ;4BAEN,IACEgB,sBAAsBH,YAAY,QACjC,CAAA,CAACI,MAAMC,OAAO,CAACH,UAAUA,MAAMI,MAAM,KAAK,CAAA,GAC3C;gCACA,OAAO;4BACT;4BAEA,OAAO;wBACT;oBACF;iBACD;YACH;YACA;gBACEjB,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;YACF;YACA;gBACEN,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;oBACR;uBACIV,yBACA;wBACE;4BACES,MAAM;4BACNC,MAAM;4BACNI,YAAYd;wBACd;qBACD,GACD,EAAE;oBACN;wBACES,MAAM;wBACNC,MAAM;wBACNiB,SAAS;4BAAC;4BAAU;4BAAW;yBAAU;oBAC3C;oBACA;wBACElB,MAAM;wBACNC,MAAM;wBACNM,cAAc;oBAChB;iBACD;YACH;eACInB,qBACA;gBACE;oBACEY,MAAM;oBACNC,MAAM;oBACNT,OAAO;wBACL2B,YAAY;4BACVC,OAAOrC;wBACT;wBACAsC,QAAQ;4BACNlC;4BACAC;4BACAC;4BACAC;4BACAO,wBAAwBX;wBAC1B;oBACF;gBACF;aACD,GACD,EAAE;SACP;QACDoC,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../src/collections/docsSets.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { DOCS_GLOBALS_ADMIN_GROUP, DOCS_SET_MANAGER_COMPONENT } from '../constants.js'\nimport { createPublishGeneratedDocsEndpoint } from '../endpoints/publishGeneratedDocs.js'\n\nexport type CreateDocsSetsCollectionOptions = {\n allowPublish?: boolean\n docsCollectionSlug?: string\n docsEnableDrafts?: boolean\n docsGroupsCollectionSlug: string\n slug: string\n syncRunsCollectionSlug?: string\n}\n\nexport const createDocsSetsCollection = ({\n slug,\n allowPublish = false,\n docsCollectionSlug,\n docsEnableDrafts = false,\n docsGroupsCollectionSlug,\n syncRunsCollectionSlug,\n}: CreateDocsSetsCollectionOptions): CollectionConfig => ({\n slug,\n admin: {\n defaultColumns: ['title', 'slug', 'branch', 'updatedAt'],\n group: DOCS_GLOBALS_ADMIN_GROUP,\n useAsTitle: 'title',\n },\n endpoints:\n docsCollectionSlug && docsEnableDrafts && allowPublish\n ? [\n createPublishGeneratedDocsEndpoint({\n docsCollectionSlug,\n docsSetsCollectionSlug: slug,\n }),\n ]\n : undefined,\n fields: [\n {\n name: 'title',\n type: 'text',\n required: true,\n },\n {\n name: 'slug',\n type: 'text',\n index: true,\n required: true,\n unique: true,\n },\n {\n name: 'group',\n type: 'relationship',\n relationTo: docsGroupsCollectionSlug,\n },\n {\n name: 'branch',\n type: 'text',\n admin: {\n description:\n 'Git branch allowed to publish this docs set. The full Git ref is handled internally.',\n },\n defaultValue: 'main',\n },\n {\n name: 'allowPullRequests',\n type: 'checkbox',\n admin: {\n description: 'Allow GitHub pull request events to dry-run or publish this docs set.',\n },\n defaultValue: false,\n },\n {\n name: 'description',\n type: 'textarea',\n },\n {\n name: 'advancedSecurity',\n type: 'group',\n admin: {\n description:\n 'Optional workflow lock-down. Leave disabled to allow any workflow from a trusted GitHub owner/repository and branch.',\n },\n fields: [\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n description:\n 'When enabled, only the workflow refs listed below can publish this docs set.',\n },\n defaultValue: false,\n },\n {\n name: 'allowedWorkflowRefs',\n type: 'array',\n admin: {\n condition: (_data, siblingData) => siblingData?.enabled === true,\n description:\n 'Exact GitHub workflow refs, for example owner/repo/.github/workflows/publish-docs.yml@refs/heads/main.',\n },\n fields: [\n {\n name: 'value',\n type: 'text',\n required: true,\n },\n ],\n validate: (value, { siblingData }) => {\n const advancedSecurityData =\n typeof siblingData === 'object' && siblingData !== null\n ? (siblingData as { enabled?: unknown })\n : undefined\n\n if (\n advancedSecurityData?.enabled === true &&\n (!Array.isArray(value) || value.length === 0)\n ) {\n return 'Add at least one workflow ref or disable advanced security.'\n }\n\n return true\n },\n },\n ],\n },\n {\n name: 'aiExport',\n type: 'json',\n admin: {\n description: 'Parsed index.ai.yml control data for the raw Markdown AI export route.',\n },\n },\n {\n name: 'sync',\n type: 'group',\n fields: [\n {\n name: 'lastSyncedAt',\n type: 'date',\n },\n ...(syncRunsCollectionSlug\n ? [\n {\n name: 'lastSyncRunId',\n type: 'relationship' as const,\n relationTo: syncRunsCollectionSlug,\n },\n ]\n : []),\n {\n name: 'lastStatus',\n type: 'select',\n options: ['failed', 'pending', 'success'],\n },\n {\n name: 'docsCount',\n type: 'number',\n defaultValue: 0,\n },\n ],\n },\n ...(docsCollectionSlug\n ? [\n {\n name: 'docsSetManager',\n type: 'ui' as const,\n admin: {\n components: {\n Field: DOCS_SET_MANAGER_COMPONENT,\n },\n custom: {\n allowPublish,\n docsCollectionSlug,\n docsEnableDrafts,\n docsGroupsCollectionSlug,\n docsSetsCollectionSlug: slug,\n },\n },\n },\n ]\n : []),\n ],\n labels: {\n plural: 'Sets',\n singular: 'Set',\n },\n})\n"],"names":["DOCS_GLOBALS_ADMIN_GROUP","DOCS_SET_MANAGER_COMPONENT","createPublishGeneratedDocsEndpoint","createDocsSetsCollection","slug","allowPublish","docsCollectionSlug","docsEnableDrafts","docsGroupsCollectionSlug","syncRunsCollectionSlug","admin","defaultColumns","group","useAsTitle","endpoints","docsSetsCollectionSlug","undefined","fields","name","type","required","index","unique","relationTo","description","defaultValue","condition","_data","siblingData","enabled","validate","value","advancedSecurityData","Array","isArray","length","options","components","Field","custom","labels","plural","singular"],"mappings":"AAEA,SAASA,wBAAwB,EAAEC,0BAA0B,QAAQ,kBAAiB;AACtF,SAASC,kCAAkC,QAAQ,uCAAsC;AAWzF,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,IAAI,EACJC,eAAe,KAAK,EACpBC,kBAAkB,EAClBC,mBAAmB,KAAK,EACxBC,wBAAwB,EACxBC,sBAAsB,EACU,GAAwB,CAAA;QACxDL;QACAM,OAAO;YACLC,gBAAgB;gBAAC;gBAAS;gBAAQ;gBAAU;aAAY;YACxDC,OAAOZ;YACPa,YAAY;QACd;QACAC,WACER,sBAAsBC,oBAAoBF,eACtC;YACEH,mCAAmC;gBACjCI;gBACAS,wBAAwBX;YAC1B;SACD,GACDY;QACNC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNC,UAAU;YACZ;YACA;gBACEF,MAAM;gBACNC,MAAM;gBACNE,OAAO;gBACPD,UAAU;gBACVE,QAAQ;YACV;YACA;gBACEJ,MAAM;gBACNC,MAAM;gBACNI,YAAYf;YACd;YACA;gBACEU,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;gBACAC,cAAc;YAChB;YACA;gBACEP,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aAAa;gBACf;gBACAC,cAAc;YAChB;YACA;gBACEP,MAAM;gBACNC,MAAM;YACR;YACA;gBACED,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aACE;gBACJ;gBACAP,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNT,OAAO;4BACLc,aACE;wBACJ;wBACAC,cAAc;oBAChB;oBACA;wBACEP,MAAM;wBACNC,MAAM;wBACNT,OAAO;4BACLgB,WAAW,CAACC,OAAOC,cAAgBA,aAAaC,YAAY;4BAC5DL,aACE;wBACJ;wBACAP,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;gCACNC,UAAU;4BACZ;yBACD;wBACDU,UAAU,CAACC,OAAO,EAAEH,WAAW,EAAE;4BAC/B,MAAMI,uBACJ,OAAOJ,gBAAgB,YAAYA,gBAAgB,OAC9CA,cACDZ;4BAEN,IACEgB,sBAAsBH,YAAY,QACjC,CAAA,CAACI,MAAMC,OAAO,CAACH,UAAUA,MAAMI,MAAM,KAAK,CAAA,GAC3C;gCACA,OAAO;4BACT;4BAEA,OAAO;wBACT;oBACF;iBACD;YACH;YACA;gBACEjB,MAAM;gBACNC,MAAM;gBACNT,OAAO;oBACLc,aAAa;gBACf;YACF;YACA;gBACEN,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;oBACR;uBACIV,yBACA;wBACE;4BACES,MAAM;4BACNC,MAAM;4BACNI,YAAYd;wBACd;qBACD,GACD,EAAE;oBACN;wBACES,MAAM;wBACNC,MAAM;wBACNiB,SAAS;4BAAC;4BAAU;4BAAW;yBAAU;oBAC3C;oBACA;wBACElB,MAAM;wBACNC,MAAM;wBACNM,cAAc;oBAChB;iBACD;YACH;eACInB,qBACA;gBACE;oBACEY,MAAM;oBACNC,MAAM;oBACNT,OAAO;wBACL2B,YAAY;4BACVC,OAAOrC;wBACT;wBACAsC,QAAQ;4BACNlC;4BACAC;4BACAC;4BACAC;4BACAO,wBAAwBX;wBAC1B;oBACF;gBACF;aACD,GACD,EAAE;SACP;QACDoC,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF,CAAA,EAAE"}
@@ -8,6 +8,7 @@ export declare const DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG = "docs-sync-runs";
8
8
  export declare const DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG = "docs-trusted";
9
9
  export declare const DEFAULT_DOCS_SYNC_ENDPOINT_PATH = "/payload-markdown-docs/sync";
10
10
  export declare const DEFAULT_MARKDOWN_FIELD_NAME = "content";
11
+ export declare const DEFAULT_MEDIA_COLLECTION_SLUG = "media";
11
12
  export declare const DOCS_SET_MANAGER_COMPONENT = "@valkyrianlabs/payload-markdown-docs/admin#DocsSetManager";
12
13
  export declare const DEFAULT_PAGES_BRIDGE_FIELD = "docsBridge";
13
14
  export declare const DEFAULT_PAGES_COLLECTION_SLUG = "pages";
package/dist/constants.js CHANGED
@@ -8,6 +8,7 @@ export const DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG = 'docs-sync-runs';
8
8
  export const DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG = 'docs-trusted';
9
9
  export const DEFAULT_DOCS_SYNC_ENDPOINT_PATH = '/payload-markdown-docs/sync';
10
10
  export const DEFAULT_MARKDOWN_FIELD_NAME = 'content';
11
+ export const DEFAULT_MEDIA_COLLECTION_SLUG = 'media';
11
12
  export const DOCS_SET_MANAGER_COMPONENT = '@valkyrianlabs/payload-markdown-docs/admin#DocsSetManager';
12
13
  export const DEFAULT_PAGES_BRIDGE_FIELD = 'docsBridge';
13
14
  export const DEFAULT_PAGES_COLLECTION_SLUG = 'pages';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const DEFAULT_DOCS_COLLECTION_SLUG = 'docs'\nexport const DEFAULT_DOCS_GROUPS_COLLECTION_SLUG = 'docs-groups'\nexport const DEFAULT_DOCS_KEYS_COLLECTION_SLUG = 'docs-keys'\nexport const DEFAULT_DOCS_ROUTE_BASE = '/docs'\nexport const DEFAULT_DOCS_SETS_COLLECTION_SLUG = 'docs-sets'\nexport const DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG = 'docs-sync-nonces'\nexport const DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG = 'docs-sync-runs'\nexport const DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG = 'docs-trusted'\nexport const DEFAULT_DOCS_SYNC_ENDPOINT_PATH = '/payload-markdown-docs/sync'\nexport const DEFAULT_MARKDOWN_FIELD_NAME = 'content'\nexport const DOCS_SET_MANAGER_COMPONENT =\n '@valkyrianlabs/payload-markdown-docs/admin#DocsSetManager'\nexport const DEFAULT_PAGES_BRIDGE_FIELD = 'docsBridge'\nexport const DEFAULT_PAGES_COLLECTION_SLUG = 'pages'\nexport const DEFAULT_PAGES_ROUTE_FIELD = 'slug'\nexport const DEFAULT_MAX_DOCS_FILE_BYTES = 500_000\nexport const DEFAULT_MAX_DOCS_FILES = 500\nexport const DEFAULT_MAX_DOCS_TOTAL_BYTES = 5_000_000\nexport const DEFAULT_MAX_BODY_BYTES = 5_000_000\nexport const DEFAULT_MAX_SKEW_SECONDS = 300\nexport const DEFAULT_NONCE_TTL_SECONDS = 600\nexport const DEFAULT_GITHUB_OIDC_ISSUER =\n 'https://token.actions.githubusercontent.com'\nexport const MANAGED_BY = 'payload-markdown-docs'\nexport const DOCS_GLOBALS_ADMIN_GROUP = 'Docs Globals'\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_ROUTE_BASE","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_MARKDOWN_FIELD_NAME","DOCS_SET_MANAGER_COMPONENT","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","DEFAULT_MAX_DOCS_FILE_BYTES","DEFAULT_MAX_DOCS_FILES","DEFAULT_MAX_DOCS_TOTAL_BYTES","DEFAULT_MAX_BODY_BYTES","DEFAULT_MAX_SKEW_SECONDS","DEFAULT_NONCE_TTL_SECONDS","DEFAULT_GITHUB_OIDC_ISSUER","MANAGED_BY","DOCS_GLOBALS_ADMIN_GROUP"],"mappings":"AAAA,OAAO,MAAMA,+BAA+B,OAAM;AAClD,OAAO,MAAMC,sCAAsC,cAAa;AAChE,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,0BAA0B,QAAO;AAC9C,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,2CAA2C,mBAAkB;AAC1E,OAAO,MAAMC,yCAAyC,iBAAgB;AACtE,OAAO,MAAMC,uCAAuC,eAAc;AAClE,OAAO,MAAMC,kCAAkC,8BAA6B;AAC5E,OAAO,MAAMC,8BAA8B,UAAS;AACpD,OAAO,MAAMC,6BACX,4DAA2D;AAC7D,OAAO,MAAMC,6BAA6B,aAAY;AACtD,OAAO,MAAMC,gCAAgC,QAAO;AACpD,OAAO,MAAMC,4BAA4B,OAAM;AAC/C,OAAO,MAAMC,8BAA8B,QAAO;AAClD,OAAO,MAAMC,yBAAyB,IAAG;AACzC,OAAO,MAAMC,+BAA+B,UAAS;AACrD,OAAO,MAAMC,yBAAyB,UAAS;AAC/C,OAAO,MAAMC,2BAA2B,IAAG;AAC3C,OAAO,MAAMC,4BAA4B,IAAG;AAC5C,OAAO,MAAMC,6BACX,8CAA6C;AAC/C,OAAO,MAAMC,aAAa,wBAAuB;AACjD,OAAO,MAAMC,2BAA2B,eAAc"}
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const DEFAULT_DOCS_COLLECTION_SLUG = 'docs'\nexport const DEFAULT_DOCS_GROUPS_COLLECTION_SLUG = 'docs-groups'\nexport const DEFAULT_DOCS_KEYS_COLLECTION_SLUG = 'docs-keys'\nexport const DEFAULT_DOCS_ROUTE_BASE = '/docs'\nexport const DEFAULT_DOCS_SETS_COLLECTION_SLUG = 'docs-sets'\nexport const DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG = 'docs-sync-nonces'\nexport const DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG = 'docs-sync-runs'\nexport const DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG = 'docs-trusted'\nexport const DEFAULT_DOCS_SYNC_ENDPOINT_PATH = '/payload-markdown-docs/sync'\nexport const DEFAULT_MARKDOWN_FIELD_NAME = 'content'\nexport const DEFAULT_MEDIA_COLLECTION_SLUG = 'media'\nexport const DOCS_SET_MANAGER_COMPONENT =\n '@valkyrianlabs/payload-markdown-docs/admin#DocsSetManager'\nexport const DEFAULT_PAGES_BRIDGE_FIELD = 'docsBridge'\nexport const DEFAULT_PAGES_COLLECTION_SLUG = 'pages'\nexport const DEFAULT_PAGES_ROUTE_FIELD = 'slug'\nexport const DEFAULT_MAX_DOCS_FILE_BYTES = 500_000\nexport const DEFAULT_MAX_DOCS_FILES = 500\nexport const DEFAULT_MAX_DOCS_TOTAL_BYTES = 5_000_000\nexport const DEFAULT_MAX_BODY_BYTES = 5_000_000\nexport const DEFAULT_MAX_SKEW_SECONDS = 300\nexport const DEFAULT_NONCE_TTL_SECONDS = 600\nexport const DEFAULT_GITHUB_OIDC_ISSUER = 'https://token.actions.githubusercontent.com'\nexport const MANAGED_BY = 'payload-markdown-docs'\nexport const DOCS_GLOBALS_ADMIN_GROUP = 'Docs Globals'\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_ROUTE_BASE","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_MARKDOWN_FIELD_NAME","DEFAULT_MEDIA_COLLECTION_SLUG","DOCS_SET_MANAGER_COMPONENT","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","DEFAULT_MAX_DOCS_FILE_BYTES","DEFAULT_MAX_DOCS_FILES","DEFAULT_MAX_DOCS_TOTAL_BYTES","DEFAULT_MAX_BODY_BYTES","DEFAULT_MAX_SKEW_SECONDS","DEFAULT_NONCE_TTL_SECONDS","DEFAULT_GITHUB_OIDC_ISSUER","MANAGED_BY","DOCS_GLOBALS_ADMIN_GROUP"],"mappings":"AAAA,OAAO,MAAMA,+BAA+B,OAAM;AAClD,OAAO,MAAMC,sCAAsC,cAAa;AAChE,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,0BAA0B,QAAO;AAC9C,OAAO,MAAMC,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,2CAA2C,mBAAkB;AAC1E,OAAO,MAAMC,yCAAyC,iBAAgB;AACtE,OAAO,MAAMC,uCAAuC,eAAc;AAClE,OAAO,MAAMC,kCAAkC,8BAA6B;AAC5E,OAAO,MAAMC,8BAA8B,UAAS;AACpD,OAAO,MAAMC,gCAAgC,QAAO;AACpD,OAAO,MAAMC,6BACX,4DAA2D;AAC7D,OAAO,MAAMC,6BAA6B,aAAY;AACtD,OAAO,MAAMC,gCAAgC,QAAO;AACpD,OAAO,MAAMC,4BAA4B,OAAM;AAC/C,OAAO,MAAMC,8BAA8B,QAAO;AAClD,OAAO,MAAMC,yBAAyB,IAAG;AACzC,OAAO,MAAMC,+BAA+B,UAAS;AACrD,OAAO,MAAMC,yBAAyB,UAAS;AAC/C,OAAO,MAAMC,2BAA2B,IAAG;AAC3C,OAAO,MAAMC,4BAA4B,IAAG;AAC5C,OAAO,MAAMC,6BAA6B,8CAA6C;AACvF,OAAO,MAAMC,aAAa,wBAAuB;AACjD,OAAO,MAAMC,2BAA2B,eAAc"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_MAX_DOCS_FILE_BYTES, DEFAULT_MAX_DOCS_FILES, DEFAULT_MAX_DOCS_TOTAL_BYTES, DEFAULT_MAX_SKEW_SECONDS, DEFAULT_NONCE_TTL_SECONDS, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD, DOCS_GLOBALS_ADMIN_GROUP, DOCS_SET_MANAGER_COMPONENT, } from './constants.js';
1
+ export { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_MAX_DOCS_FILE_BYTES, DEFAULT_MAX_DOCS_FILES, DEFAULT_MAX_DOCS_TOTAL_BYTES, DEFAULT_MAX_SKEW_SECONDS, DEFAULT_MEDIA_COLLECTION_SLUG, DEFAULT_NONCE_TTL_SECONDS, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD, DOCS_GLOBALS_ADMIN_GROUP, DOCS_SET_MANAGER_COMPONENT, } from './constants.js';
2
2
  export { payloadMarkdownDocs } from './plugin.js';
3
3
  export { deriveDocsSetRouteBase, findPageRouteCollisions, findRouteReservationCollisions, isRouteDescendant, joinRouteSegments, normalizeRoutePath, } from './routing/index.js';
4
4
  export type { DocsRouteCollision, DocsRouteCollisionReason, DocsRouteReservation, DocsRouteReservationOwnerType, } from './routing/index.js';
5
5
  export { signDocsSyncRequest } from './security/index.js';
6
- export type { SignDocsSyncRequestOptions, SignedDocsSyncRequest, } from './security/index.js';
6
+ export type { SignDocsSyncRequestOptions, SignedDocsSyncRequest } from './security/index.js';
7
7
  export { buildDocsManifest, deriveRouteFromSourcePath, inferTitleFromMarkdown, normalizeDocsPath, parseDocsFrontmatter, planDocsSync, resolveDocsTitle, sha256Hex, titleFromSourcePath, validateDocsManifest, } from './sync/index.js';
8
8
  export type { DocsDeleteBehavior, DocsFrontmatter, DocsManifest, DocsManifestFile, DocsManifestInputFile, DocsManifestSource, DocsSyncMode, DocsSyncPlan, DocsValidationErrorCode, DocsValidationIssue, DocsValidationOptions, DocsValidationResult, ExistingDocsRecord, ParseDocsFrontmatterResult, PlannedDocChange, ValidatedDocsManifest, ValidatedDocsManifestFile, } from './sync/index.js';
9
- export type { PayloadMarkdownDocsAuthConfig, PayloadMarkdownDocsCollectionConfig, PayloadMarkdownDocsCollectionsConfig, PayloadMarkdownDocsConfig, PayloadMarkdownDocsEndpointConfig, PayloadMarkdownDocsPagesRoutingConfig, PayloadMarkdownDocsRoutingConfig, PayloadMarkdownDocsSyncConfig, PayloadMarkdownDocsTargetConfig, } from './types.js';
9
+ export type { PayloadMarkdownDocsAuthConfig, PayloadMarkdownDocsCollectionConfig, PayloadMarkdownDocsCollectionsConfig, PayloadMarkdownDocsConfig, PayloadMarkdownDocsEndpointConfig, PayloadMarkdownDocsHeroImageConfig, PayloadMarkdownDocsPagesRoutingConfig, PayloadMarkdownDocsRoutingConfig, PayloadMarkdownDocsSyncConfig, PayloadMarkdownDocsTargetConfig, } from './types.js';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_MAX_DOCS_FILE_BYTES, DEFAULT_MAX_DOCS_FILES, DEFAULT_MAX_DOCS_TOTAL_BYTES, DEFAULT_MAX_SKEW_SECONDS, DEFAULT_NONCE_TTL_SECONDS, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD, DOCS_GLOBALS_ADMIN_GROUP, DOCS_SET_MANAGER_COMPONENT } from './constants.js';
1
+ export { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_MAX_DOCS_FILE_BYTES, DEFAULT_MAX_DOCS_FILES, DEFAULT_MAX_DOCS_TOTAL_BYTES, DEFAULT_MAX_SKEW_SECONDS, DEFAULT_MEDIA_COLLECTION_SLUG, DEFAULT_NONCE_TTL_SECONDS, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD, DOCS_GLOBALS_ADMIN_GROUP, DOCS_SET_MANAGER_COMPONENT } from './constants.js';
2
2
  export { payloadMarkdownDocs } from './plugin.js';
3
3
  export { deriveDocsSetRouteBase, findPageRouteCollisions, findRouteReservationCollisions, isRouteDescendant, joinRouteSegments, normalizeRoutePath } from './routing/index.js';
4
4
  export { signDocsSyncRequest } from './security/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n DEFAULT_MAX_BODY_BYTES,\n DEFAULT_MAX_DOCS_FILE_BYTES,\n DEFAULT_MAX_DOCS_FILES,\n DEFAULT_MAX_DOCS_TOTAL_BYTES,\n DEFAULT_MAX_SKEW_SECONDS,\n DEFAULT_NONCE_TTL_SECONDS,\n DEFAULT_PAGES_BRIDGE_FIELD,\n DEFAULT_PAGES_COLLECTION_SLUG,\n DEFAULT_PAGES_ROUTE_FIELD,\n DOCS_GLOBALS_ADMIN_GROUP,\n DOCS_SET_MANAGER_COMPONENT,\n} from './constants.js'\nexport { payloadMarkdownDocs } from './plugin.js'\nexport {\n deriveDocsSetRouteBase,\n findPageRouteCollisions,\n findRouteReservationCollisions,\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from './routing/index.js'\nexport type {\n DocsRouteCollision,\n DocsRouteCollisionReason,\n DocsRouteReservation,\n DocsRouteReservationOwnerType,\n} from './routing/index.js'\nexport { signDocsSyncRequest } from './security/index.js'\nexport type {\n SignDocsSyncRequestOptions,\n SignedDocsSyncRequest,\n} from './security/index.js'\nexport {\n buildDocsManifest,\n deriveRouteFromSourcePath,\n inferTitleFromMarkdown,\n normalizeDocsPath,\n parseDocsFrontmatter,\n planDocsSync,\n resolveDocsTitle,\n sha256Hex,\n titleFromSourcePath,\n validateDocsManifest,\n} from './sync/index.js'\nexport type {\n DocsDeleteBehavior,\n DocsFrontmatter,\n DocsManifest,\n DocsManifestFile,\n DocsManifestInputFile,\n DocsManifestSource,\n DocsSyncMode,\n DocsSyncPlan,\n DocsValidationErrorCode,\n DocsValidationIssue,\n DocsValidationOptions,\n DocsValidationResult,\n ExistingDocsRecord,\n ParseDocsFrontmatterResult,\n PlannedDocChange,\n ValidatedDocsManifest,\n ValidatedDocsManifestFile,\n} from './sync/index.js'\nexport type {\n PayloadMarkdownDocsAuthConfig,\n PayloadMarkdownDocsCollectionConfig,\n PayloadMarkdownDocsCollectionsConfig,\n PayloadMarkdownDocsConfig,\n PayloadMarkdownDocsEndpointConfig,\n PayloadMarkdownDocsPagesRoutingConfig,\n PayloadMarkdownDocsRoutingConfig,\n PayloadMarkdownDocsSyncConfig,\n PayloadMarkdownDocsTargetConfig,\n} from './types.js'\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","DEFAULT_MAX_BODY_BYTES","DEFAULT_MAX_DOCS_FILE_BYTES","DEFAULT_MAX_DOCS_FILES","DEFAULT_MAX_DOCS_TOTAL_BYTES","DEFAULT_MAX_SKEW_SECONDS","DEFAULT_NONCE_TTL_SECONDS","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","DOCS_GLOBALS_ADMIN_GROUP","DOCS_SET_MANAGER_COMPONENT","payloadMarkdownDocs","deriveDocsSetRouteBase","findPageRouteCollisions","findRouteReservationCollisions","isRouteDescendant","joinRouteSegments","normalizeRoutePath","signDocsSyncRequest","buildDocsManifest","deriveRouteFromSourcePath","inferTitleFromMarkdown","normalizeDocsPath","parseDocsFrontmatter","planDocsSync","resolveDocsTitle","sha256Hex","titleFromSourcePath","validateDocsManifest"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,mCAAmC,EACnCC,iCAAiC,EACjCC,iCAAiC,EACjCC,+BAA+B,EAC/BC,wCAAwC,EACxCC,sCAAsC,EACtCC,oCAAoC,EACpCC,2BAA2B,EAC3BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,sBAAsB,EACtBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,yBAAyB,EACzBC,0BAA0B,EAC1BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,wBAAwB,EACxBC,0BAA0B,QACrB,iBAAgB;AACvB,SAASC,mBAAmB,QAAQ,cAAa;AACjD,SACEC,sBAAsB,EACtBC,uBAAuB,EACvBC,8BAA8B,EAC9BC,iBAAiB,EACjBC,iBAAiB,EACjBC,kBAAkB,QACb,qBAAoB;AAO3B,SAASC,mBAAmB,QAAQ,sBAAqB;AAKzD,SACEC,iBAAiB,EACjBC,yBAAyB,EACzBC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,YAAY,EACZC,gBAAgB,EAChBC,SAAS,EACTC,mBAAmB,EACnBC,oBAAoB,QACf,kBAAiB"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n DEFAULT_MAX_BODY_BYTES,\n DEFAULT_MAX_DOCS_FILE_BYTES,\n DEFAULT_MAX_DOCS_FILES,\n DEFAULT_MAX_DOCS_TOTAL_BYTES,\n DEFAULT_MAX_SKEW_SECONDS,\n DEFAULT_MEDIA_COLLECTION_SLUG,\n DEFAULT_NONCE_TTL_SECONDS,\n DEFAULT_PAGES_BRIDGE_FIELD,\n DEFAULT_PAGES_COLLECTION_SLUG,\n DEFAULT_PAGES_ROUTE_FIELD,\n DOCS_GLOBALS_ADMIN_GROUP,\n DOCS_SET_MANAGER_COMPONENT,\n} from './constants.js'\nexport { payloadMarkdownDocs } from './plugin.js'\nexport {\n deriveDocsSetRouteBase,\n findPageRouteCollisions,\n findRouteReservationCollisions,\n isRouteDescendant,\n joinRouteSegments,\n normalizeRoutePath,\n} from './routing/index.js'\nexport type {\n DocsRouteCollision,\n DocsRouteCollisionReason,\n DocsRouteReservation,\n DocsRouteReservationOwnerType,\n} from './routing/index.js'\nexport { signDocsSyncRequest } from './security/index.js'\nexport type { SignDocsSyncRequestOptions, SignedDocsSyncRequest } from './security/index.js'\nexport {\n buildDocsManifest,\n deriveRouteFromSourcePath,\n inferTitleFromMarkdown,\n normalizeDocsPath,\n parseDocsFrontmatter,\n planDocsSync,\n resolveDocsTitle,\n sha256Hex,\n titleFromSourcePath,\n validateDocsManifest,\n} from './sync/index.js'\nexport type {\n DocsDeleteBehavior,\n DocsFrontmatter,\n DocsManifest,\n DocsManifestFile,\n DocsManifestInputFile,\n DocsManifestSource,\n DocsSyncMode,\n DocsSyncPlan,\n DocsValidationErrorCode,\n DocsValidationIssue,\n DocsValidationOptions,\n DocsValidationResult,\n ExistingDocsRecord,\n ParseDocsFrontmatterResult,\n PlannedDocChange,\n ValidatedDocsManifest,\n ValidatedDocsManifestFile,\n} from './sync/index.js'\nexport type {\n PayloadMarkdownDocsAuthConfig,\n PayloadMarkdownDocsCollectionConfig,\n PayloadMarkdownDocsCollectionsConfig,\n PayloadMarkdownDocsConfig,\n PayloadMarkdownDocsEndpointConfig,\n PayloadMarkdownDocsHeroImageConfig,\n PayloadMarkdownDocsPagesRoutingConfig,\n PayloadMarkdownDocsRoutingConfig,\n PayloadMarkdownDocsSyncConfig,\n PayloadMarkdownDocsTargetConfig,\n} from './types.js'\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","DEFAULT_MAX_BODY_BYTES","DEFAULT_MAX_DOCS_FILE_BYTES","DEFAULT_MAX_DOCS_FILES","DEFAULT_MAX_DOCS_TOTAL_BYTES","DEFAULT_MAX_SKEW_SECONDS","DEFAULT_MEDIA_COLLECTION_SLUG","DEFAULT_NONCE_TTL_SECONDS","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","DOCS_GLOBALS_ADMIN_GROUP","DOCS_SET_MANAGER_COMPONENT","payloadMarkdownDocs","deriveDocsSetRouteBase","findPageRouteCollisions","findRouteReservationCollisions","isRouteDescendant","joinRouteSegments","normalizeRoutePath","signDocsSyncRequest","buildDocsManifest","deriveRouteFromSourcePath","inferTitleFromMarkdown","normalizeDocsPath","parseDocsFrontmatter","planDocsSync","resolveDocsTitle","sha256Hex","titleFromSourcePath","validateDocsManifest"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,mCAAmC,EACnCC,iCAAiC,EACjCC,iCAAiC,EACjCC,+BAA+B,EAC/BC,wCAAwC,EACxCC,sCAAsC,EACtCC,oCAAoC,EACpCC,2BAA2B,EAC3BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,sBAAsB,EACtBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,6BAA6B,EAC7BC,yBAAyB,EACzBC,0BAA0B,EAC1BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,wBAAwB,EACxBC,0BAA0B,QACrB,iBAAgB;AACvB,SAASC,mBAAmB,QAAQ,cAAa;AACjD,SACEC,sBAAsB,EACtBC,uBAAuB,EACvBC,8BAA8B,EAC9BC,iBAAiB,EACjBC,iBAAiB,EACjBC,kBAAkB,QACb,qBAAoB;AAO3B,SAASC,mBAAmB,QAAQ,sBAAqB;AAEzD,SACEC,iBAAiB,EACjBC,yBAAyB,EACzBC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,YAAY,EACZC,gBAAgB,EAChBC,SAAS,EACTC,mBAAmB,EACnBC,oBAAoB,QACf,kBAAiB"}
@@ -1,6 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { DEFAULT_DOCS_COLLECTION_SLUG } from '../constants.js';
3
3
  const cx = (...values)=>values.filter(Boolean).join(' ');
4
+ const docsLayoutStyles = `
5
+ [data-payload-markdown-docs-layout] {
6
+ display: grid;
7
+ gap: 2.5rem;
8
+ grid-template-columns: minmax(0, 1fr);
9
+ }
10
+
11
+ @media (min-width: 1024px) {
12
+ [data-payload-markdown-docs-layout="with-sidebar"] {
13
+ grid-template-columns: 16rem minmax(0, 1fr);
14
+ }
15
+ }
16
+ `;
17
+ const getDocsLayoutStyle = (hasHero)=>hasHero ? {} : {
18
+ marginTop: '6rem'
19
+ };
4
20
  const renderSidebarItems = (items, activeRoute, depth = 0)=>{
5
21
  if (items.length === 0) {
6
22
  return null;
@@ -51,6 +67,32 @@ const DocsHeader = ({ doc, docsSet })=>{
51
67
  ]
52
68
  });
53
69
  };
70
+ const DocsHero = ({ heroImage, title })=>{
71
+ if (!heroImage) {
72
+ return null;
73
+ }
74
+ return /*#__PURE__*/ _jsx("figure", {
75
+ className: "mb-10 overflow-hidden rounded-xl border border-border bg-white/[0.03]",
76
+ "data-payload-markdown-docs-hero": true,
77
+ style: {
78
+ borderRadius: '0.75rem',
79
+ marginBottom: '2.5rem',
80
+ overflow: 'hidden'
81
+ },
82
+ children: /*#__PURE__*/ _jsx("img", {
83
+ alt: heroImage.alt ?? title,
84
+ className: "block h-auto w-full",
85
+ height: heroImage.height,
86
+ src: heroImage.url,
87
+ style: {
88
+ display: 'block',
89
+ height: 'auto',
90
+ width: '100%'
91
+ },
92
+ width: heroImage.width
93
+ })
94
+ });
95
+ };
54
96
  export const PayloadMarkdownDocsPage = async ({ collectionSlug = DEFAULT_DOCS_COLLECTION_SLUG, renderSidebar = true, resolved })=>{
55
97
  if (resolved.type === 'docsGroupIndex') {
56
98
  return /*#__PURE__*/ _jsx("main", {
@@ -106,32 +148,48 @@ export const PayloadMarkdownDocsPage = async ({ collectionSlug = DEFAULT_DOCS_CO
106
148
  collectionSlug,
107
149
  markdown: resolved.doc?.content
108
150
  });
109
- return /*#__PURE__*/ _jsx("main", {
151
+ const hasHero = Boolean(resolved.doc?.heroImage);
152
+ const hasSidebar = renderSidebar && resolved.sidebar.length > 0;
153
+ return /*#__PURE__*/ _jsxs("main", {
110
154
  className: "min-h-screen bg-background text-foreground",
111
155
  "data-payload-markdown-docs-route": resolved.route,
112
- children: /*#__PURE__*/ _jsxs("div", {
113
- className: cx('mx-auto grid w-full max-w-7xl gap-10 px-6 py-10 lg:px-8', renderSidebar && resolved.sidebar.length > 0 ? 'lg:grid-cols-[16rem_minmax(0,1fr)]' : 'lg:grid-cols-[minmax(0,1fr)]'),
114
- children: [
115
- renderSidebar && resolved.sidebar.length > 0 ? /*#__PURE__*/ _jsx("aside", {
116
- className: "lg:sticky lg:top-8 lg:self-start",
117
- children: /*#__PURE__*/ _jsx("nav", {
118
- "aria-label": "Docs navigation",
119
- className: "rounded-xl border border-border bg-white/[0.03] p-3",
120
- children: renderSidebarItems(resolved.sidebar, resolved.route)
156
+ children: [
157
+ /*#__PURE__*/ _jsx("style", {
158
+ children: docsLayoutStyles
159
+ }),
160
+ /*#__PURE__*/ _jsxs("div", {
161
+ className: "mx-auto w-full max-w-7xl px-6 py-10 lg:px-8",
162
+ "data-payload-markdown-docs-layout": hasSidebar ? 'with-sidebar' : 'default',
163
+ style: getDocsLayoutStyle(hasHero),
164
+ children: [
165
+ hasSidebar ? /*#__PURE__*/ _jsx("aside", {
166
+ className: "lg:sticky lg:top-8 lg:self-start",
167
+ style: {
168
+ alignSelf: 'start'
169
+ },
170
+ children: /*#__PURE__*/ _jsx("nav", {
171
+ "aria-label": "Docs navigation",
172
+ className: "rounded-xl border border-border bg-white/[0.03] p-3",
173
+ children: renderSidebarItems(resolved.sidebar, resolved.route)
174
+ })
175
+ }) : null,
176
+ /*#__PURE__*/ _jsxs("article", {
177
+ className: "min-w-0 max-w-4xl",
178
+ children: [
179
+ /*#__PURE__*/ _jsx(DocsHero, {
180
+ heroImage: resolved.doc?.heroImage,
181
+ title: resolved.doc?.title ?? resolved.docsSet.title
182
+ }),
183
+ /*#__PURE__*/ _jsx(DocsHeader, {
184
+ doc: resolved.doc,
185
+ docsSet: resolved.docsSet
186
+ }),
187
+ markdown
188
+ ]
121
189
  })
122
- }) : null,
123
- /*#__PURE__*/ _jsxs("article", {
124
- className: "min-w-0 max-w-4xl",
125
- children: [
126
- /*#__PURE__*/ _jsx(DocsHeader, {
127
- doc: resolved.doc,
128
- docsSet: resolved.docsSet
129
- }),
130
- markdown
131
- ]
132
- })
133
- ]
134
- })
190
+ ]
191
+ })
192
+ ]
135
193
  });
136
194
  };
137
195
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/PayloadMarkdownDocsPage.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport type {\n PayloadMarkdownDocsSidebarItem,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n} from './types.js'\n\nimport { DEFAULT_DOCS_COLLECTION_SLUG } from '../constants.js'\n\nexport type PayloadMarkdownDocsPageProps = {\n collectionSlug?: string\n renderSidebar?: boolean\n resolved: ResolvedPayloadMarkdownDocsRoute\n}\n\nconst cx = (...values: (false | null | string | undefined)[]): string =>\n values.filter(Boolean).join(' ')\n\nconst renderSidebarItems = (\n items: PayloadMarkdownDocsSidebarItem[],\n activeRoute: string,\n depth = 0,\n): ReactNode => {\n if (items.length === 0) {\n return null\n }\n\n return (\n <ul\n className={cx(\n depth === 0\n ? 'space-y-1'\n : 'ml-3 mt-1 space-y-1 border-l border-border pl-3',\n )}\n >\n {items.map((item) => (\n <li key={item.route}>\n <a\n className={cx(\n 'block rounded-lg px-3 py-2 text-sm leading-5 transition-colors',\n item.route === activeRoute\n ? 'bg-cyan-400/10 text-cyan-200'\n : 'text-foreground/70 hover:bg-white/[0.04] hover:text-foreground',\n )}\n href={item.route}\n >\n {item.label}\n </a>\n {item.children\n ? renderSidebarItems(item.children, activeRoute, depth + 1)\n : null}\n </li>\n ))}\n </ul>\n )\n}\n\nconst renderMarkdown = async ({\n collectionSlug,\n markdown,\n}: {\n collectionSlug: string\n markdown?: string\n}): Promise<ReactNode> => {\n if (!markdown?.trim()) {\n return null\n }\n\n const { MarkdownRenderer } = await import('@valkyrianlabs/payload-markdown/server')\n\n return MarkdownRenderer({\n className: 'min-w-0',\n collectionSlug,\n markdown,\n scope: 'field',\n size: 'md',\n variant: 'docs',\n wrapperClassName: 'min-w-0',\n })\n}\n\nconst DocsHeader = ({\n doc,\n docsSet,\n}: {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n}) => {\n const description =\n doc?.description ??\n docsSet.description\n const title = doc?.title ?? docsSet.title\n\n return (\n <header className=\"mb-10 border-b border-border pb-8\">\n <h1 className=\"text-4xl font-semibold tracking-tight text-foreground md:text-5xl\">\n {title}\n </h1>\n {description ? (\n <p className=\"mt-4 max-w-3xl text-lg leading-8 text-foreground/70\">\n {description}\n </p>\n ) : null}\n </header>\n )\n}\n\nexport const PayloadMarkdownDocsPage = async ({\n collectionSlug = DEFAULT_DOCS_COLLECTION_SLUG,\n renderSidebar = true,\n resolved,\n}: PayloadMarkdownDocsPageProps) => {\n if (resolved.type === 'docsGroupIndex') {\n return (\n <main\n className=\"min-h-screen bg-background text-foreground\"\n data-payload-markdown-docs-route={resolved.route}\n >\n <div className=\"mx-auto w-full max-w-6xl px-6 py-14 lg:px-8\">\n <header className=\"mb-10 border-b border-border pb-8\">\n <p className=\"mb-3 text-sm font-medium uppercase tracking-wide text-cyan-300\">\n Docs\n </p>\n <h1 className=\"text-4xl font-semibold tracking-tight md:text-5xl\">\n {resolved.group.navTitle ?? resolved.group.title}\n </h1>\n {resolved.group.description ? (\n <p className=\"mt-4 max-w-3xl text-lg leading-8 text-foreground/70\">\n {resolved.group.description}\n </p>\n ) : null}\n </header>\n {resolved.docsSets.length > 0 ? (\n <nav aria-label=\"Docs sets\">\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {resolved.docsSets.map((docsSet) => (\n <li key={docsSet.id}>\n <a\n className=\"block rounded-xl border border-border bg-white/[0.03] p-5 transition-colors hover:bg-white/[0.06]\"\n href={docsSet.routeBase}\n >\n <span className=\"text-base font-semibold text-foreground\">\n {docsSet.navTitle ?? docsSet.title}\n </span>\n {docsSet.description ? (\n <span className=\"mt-2 block text-sm leading-6 text-foreground/65\">\n {docsSet.description}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n ) : null}\n </div>\n </main>\n )\n }\n\n const markdown = await renderMarkdown({\n collectionSlug,\n markdown: resolved.doc?.content,\n })\n\n return (\n <main\n className=\"min-h-screen bg-background text-foreground\"\n data-payload-markdown-docs-route={resolved.route}\n >\n <div\n className={cx(\n 'mx-auto grid w-full max-w-7xl gap-10 px-6 py-10 lg:px-8',\n renderSidebar && resolved.sidebar.length > 0\n ? 'lg:grid-cols-[16rem_minmax(0,1fr)]'\n : 'lg:grid-cols-[minmax(0,1fr)]',\n )}\n >\n {renderSidebar && resolved.sidebar.length > 0 ? (\n <aside className=\"lg:sticky lg:top-8 lg:self-start\">\n <nav\n aria-label=\"Docs navigation\"\n className=\"rounded-xl border border-border bg-white/[0.03] p-3\"\n >\n {renderSidebarItems(resolved.sidebar, resolved.route)}\n </nav>\n </aside>\n ) : null}\n <article className=\"min-w-0 max-w-4xl\">\n <DocsHeader doc={resolved.doc} docsSet={resolved.docsSet} />\n {markdown}\n </article>\n </div>\n </main>\n )\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","cx","values","filter","Boolean","join","renderSidebarItems","items","activeRoute","depth","length","ul","className","map","item","li","a","route","href","label","children","renderMarkdown","collectionSlug","markdown","trim","MarkdownRenderer","scope","size","variant","wrapperClassName","DocsHeader","doc","docsSet","description","title","header","h1","p","PayloadMarkdownDocsPage","renderSidebar","resolved","type","main","data-payload-markdown-docs-route","div","group","navTitle","docsSets","nav","aria-label","routeBase","span","id","content","sidebar","aside","article"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/next/PayloadMarkdownDocsPage.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react'\n\nimport type {\n PayloadMarkdownDocsHeroImage,\n PayloadMarkdownDocsSidebarItem,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n} from './types.js'\n\nimport { DEFAULT_DOCS_COLLECTION_SLUG } from '../constants.js'\n\nexport type PayloadMarkdownDocsPageProps = {\n collectionSlug?: string\n renderSidebar?: boolean\n resolved: ResolvedPayloadMarkdownDocsRoute\n}\n\nconst cx = (...values: (false | null | string | undefined)[]): string =>\n values.filter(Boolean).join(' ')\n\nconst docsLayoutStyles = `\n[data-payload-markdown-docs-layout] {\n display: grid;\n gap: 2.5rem;\n grid-template-columns: minmax(0, 1fr);\n}\n\n@media (min-width: 1024px) {\n [data-payload-markdown-docs-layout=\"with-sidebar\"] {\n grid-template-columns: 16rem minmax(0, 1fr);\n }\n}\n`\n\nconst getDocsLayoutStyle = (hasHero: boolean): CSSProperties =>\n hasHero\n ? {}\n : {\n marginTop: '6rem',\n }\n\nconst renderSidebarItems = (\n items: PayloadMarkdownDocsSidebarItem[],\n activeRoute: string,\n depth = 0,\n): ReactNode => {\n if (items.length === 0) {\n return null\n }\n\n return (\n <ul\n className={cx(depth === 0 ? 'space-y-1' : 'ml-3 mt-1 space-y-1 border-l border-border pl-3')}\n >\n {items.map((item) => (\n <li key={item.route}>\n <a\n className={cx(\n 'block rounded-lg px-3 py-2 text-sm leading-5 transition-colors',\n item.route === activeRoute\n ? 'bg-cyan-400/10 text-cyan-200'\n : 'text-foreground/70 hover:bg-white/[0.04] hover:text-foreground',\n )}\n href={item.route}\n >\n {item.label}\n </a>\n {item.children ? renderSidebarItems(item.children, activeRoute, depth + 1) : null}\n </li>\n ))}\n </ul>\n )\n}\n\nconst renderMarkdown = async ({\n collectionSlug,\n markdown,\n}: {\n collectionSlug: string\n markdown?: string\n}): Promise<ReactNode> => {\n if (!markdown?.trim()) {\n return null\n }\n\n const { MarkdownRenderer } = await import('@valkyrianlabs/payload-markdown/server')\n\n return MarkdownRenderer({\n className: 'min-w-0',\n collectionSlug,\n markdown,\n scope: 'field',\n size: 'md',\n variant: 'docs',\n wrapperClassName: 'min-w-0',\n })\n}\n\nconst DocsHeader = ({\n doc,\n docsSet,\n}: {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n}) => {\n const description = doc?.description ?? docsSet.description\n const title = doc?.title ?? docsSet.title\n\n return (\n <header className=\"mb-10 border-b border-border pb-8\">\n <h1 className=\"text-4xl font-semibold tracking-tight text-foreground md:text-5xl\">{title}</h1>\n {description ? (\n <p className=\"mt-4 max-w-3xl text-lg leading-8 text-foreground/70\">{description}</p>\n ) : null}\n </header>\n )\n}\n\nconst DocsHero = ({\n heroImage,\n title,\n}: {\n heroImage?: PayloadMarkdownDocsHeroImage\n title: string\n}) => {\n if (!heroImage) {\n return null\n }\n\n return (\n <figure\n className=\"mb-10 overflow-hidden rounded-xl border border-border bg-white/[0.03]\"\n data-payload-markdown-docs-hero\n style={{\n borderRadius: '0.75rem',\n marginBottom: '2.5rem',\n overflow: 'hidden',\n }}\n >\n <img\n alt={heroImage.alt ?? title}\n className=\"block h-auto w-full\"\n height={heroImage.height}\n src={heroImage.url}\n style={{\n display: 'block',\n height: 'auto',\n width: '100%',\n }}\n width={heroImage.width}\n />\n </figure>\n )\n}\n\nexport const PayloadMarkdownDocsPage = async ({\n collectionSlug = DEFAULT_DOCS_COLLECTION_SLUG,\n renderSidebar = true,\n resolved,\n}: PayloadMarkdownDocsPageProps) => {\n if (resolved.type === 'docsGroupIndex') {\n return (\n <main\n className=\"min-h-screen bg-background text-foreground\"\n data-payload-markdown-docs-route={resolved.route}\n >\n <div className=\"mx-auto w-full max-w-6xl px-6 py-14 lg:px-8\">\n <header className=\"mb-10 border-b border-border pb-8\">\n <p className=\"mb-3 text-sm font-medium uppercase tracking-wide text-cyan-300\">Docs</p>\n <h1 className=\"text-4xl font-semibold tracking-tight md:text-5xl\">\n {resolved.group.navTitle ?? resolved.group.title}\n </h1>\n {resolved.group.description ? (\n <p className=\"mt-4 max-w-3xl text-lg leading-8 text-foreground/70\">\n {resolved.group.description}\n </p>\n ) : null}\n </header>\n {resolved.docsSets.length > 0 ? (\n <nav aria-label=\"Docs sets\">\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {resolved.docsSets.map((docsSet) => (\n <li key={docsSet.id}>\n <a\n className=\"block rounded-xl border border-border bg-white/[0.03] p-5 transition-colors hover:bg-white/[0.06]\"\n href={docsSet.routeBase}\n >\n <span className=\"text-base font-semibold text-foreground\">\n {docsSet.navTitle ?? docsSet.title}\n </span>\n {docsSet.description ? (\n <span className=\"mt-2 block text-sm leading-6 text-foreground/65\">\n {docsSet.description}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n ) : null}\n </div>\n </main>\n )\n }\n\n const markdown = await renderMarkdown({\n collectionSlug,\n markdown: resolved.doc?.content,\n })\n const hasHero = Boolean(resolved.doc?.heroImage)\n const hasSidebar = renderSidebar && resolved.sidebar.length > 0\n\n return (\n <main\n className=\"min-h-screen bg-background text-foreground\"\n data-payload-markdown-docs-route={resolved.route}\n >\n <style>{docsLayoutStyles}</style>\n <div\n className=\"mx-auto w-full max-w-7xl px-6 py-10 lg:px-8\"\n data-payload-markdown-docs-layout={hasSidebar ? 'with-sidebar' : 'default'}\n style={getDocsLayoutStyle(hasHero)}\n >\n {hasSidebar ? (\n <aside\n className=\"lg:sticky lg:top-8 lg:self-start\"\n style={{\n alignSelf: 'start',\n }}\n >\n <nav\n aria-label=\"Docs navigation\"\n className=\"rounded-xl border border-border bg-white/[0.03] p-3\"\n >\n {renderSidebarItems(resolved.sidebar, resolved.route)}\n </nav>\n </aside>\n ) : null}\n <article className=\"min-w-0 max-w-4xl\">\n <DocsHero\n heroImage={resolved.doc?.heroImage}\n title={resolved.doc?.title ?? resolved.docsSet.title}\n />\n <DocsHeader doc={resolved.doc} docsSet={resolved.docsSet} />\n {markdown}\n </article>\n </div>\n </main>\n )\n}\n"],"names":["DEFAULT_DOCS_COLLECTION_SLUG","cx","values","filter","Boolean","join","docsLayoutStyles","getDocsLayoutStyle","hasHero","marginTop","renderSidebarItems","items","activeRoute","depth","length","ul","className","map","item","li","a","route","href","label","children","renderMarkdown","collectionSlug","markdown","trim","MarkdownRenderer","scope","size","variant","wrapperClassName","DocsHeader","doc","docsSet","description","title","header","h1","p","DocsHero","heroImage","figure","data-payload-markdown-docs-hero","style","borderRadius","marginBottom","overflow","img","alt","height","src","url","display","width","PayloadMarkdownDocsPage","renderSidebar","resolved","type","main","data-payload-markdown-docs-route","div","group","navTitle","docsSets","nav","aria-label","routeBase","span","id","content","hasSidebar","sidebar","data-payload-markdown-docs-layout","aside","alignSelf","article"],"mappings":";AAUA,SAASA,4BAA4B,QAAQ,kBAAiB;AAQ9D,MAAMC,KAAK,CAAC,GAAGC,SACbA,OAAOC,MAAM,CAACC,SAASC,IAAI,CAAC;AAE9B,MAAMC,mBAAmB,CAAC;;;;;;;;;;;;AAY1B,CAAC;AAED,MAAMC,qBAAqB,CAACC,UAC1BA,UACI,CAAC,IACD;QACEC,WAAW;IACb;AAEN,MAAMC,qBAAqB,CACzBC,OACAC,aACAC,QAAQ,CAAC;IAET,IAAIF,MAAMG,MAAM,KAAK,GAAG;QACtB,OAAO;IACT;IAEA,qBACE,KAACC;QACCC,WAAWf,GAAGY,UAAU,IAAI,cAAc;kBAEzCF,MAAMM,GAAG,CAAC,CAACC,qBACV,MAACC;;kCACC,KAACC;wBACCJ,WAAWf,GACT,kEACAiB,KAAKG,KAAK,KAAKT,cACX,iCACA;wBAENU,MAAMJ,KAAKG,KAAK;kCAEfH,KAAKK,KAAK;;oBAEZL,KAAKM,QAAQ,GAAGd,mBAAmBQ,KAAKM,QAAQ,EAAEZ,aAAaC,QAAQ,KAAK;;eAZtEK,KAAKG,KAAK;;AAiB3B;AAEA,MAAMI,iBAAiB,OAAO,EAC5BC,cAAc,EACdC,QAAQ,EAIT;IACC,IAAI,CAACA,UAAUC,QAAQ;QACrB,OAAO;IACT;IAEA,MAAM,EAAEC,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC;IAE1C,OAAOA,iBAAiB;QACtBb,WAAW;QACXU;QACAC;QACAG,OAAO;QACPC,MAAM;QACNC,SAAS;QACTC,kBAAkB;IACpB;AACF;AAEA,MAAMC,aAAa,CAAC,EAClBC,GAAG,EACHC,OAAO,EAIR;IACC,MAAMC,cAAcF,KAAKE,eAAeD,QAAQC,WAAW;IAC3D,MAAMC,QAAQH,KAAKG,SAASF,QAAQE,KAAK;IAEzC,qBACE,MAACC;QAAOvB,WAAU;;0BAChB,KAACwB;gBAAGxB,WAAU;0BAAqEsB;;YAClFD,4BACC,KAACI;gBAAEzB,WAAU;0BAAuDqB;iBAClE;;;AAGV;AAEA,MAAMK,WAAW,CAAC,EAChBC,SAAS,EACTL,KAAK,EAIN;IACC,IAAI,CAACK,WAAW;QACd,OAAO;IACT;IAEA,qBACE,KAACC;QACC5B,WAAU;QACV6B,iCAA+B;QAC/BC,OAAO;YACLC,cAAc;YACdC,cAAc;YACdC,UAAU;QACZ;kBAEA,cAAA,KAACC;YACCC,KAAKR,UAAUQ,GAAG,IAAIb;YACtBtB,WAAU;YACVoC,QAAQT,UAAUS,MAAM;YACxBC,KAAKV,UAAUW,GAAG;YAClBR,OAAO;gBACLS,SAAS;gBACTH,QAAQ;gBACRI,OAAO;YACT;YACAA,OAAOb,UAAUa,KAAK;;;AAI9B;AAEA,OAAO,MAAMC,0BAA0B,OAAO,EAC5C/B,iBAAiB1B,4BAA4B,EAC7C0D,gBAAgB,IAAI,EACpBC,QAAQ,EACqB;IAC7B,IAAIA,SAASC,IAAI,KAAK,kBAAkB;QACtC,qBACE,KAACC;YACC7C,WAAU;YACV8C,oCAAkCH,SAAStC,KAAK;sBAEhD,cAAA,MAAC0C;gBAAI/C,WAAU;;kCACb,MAACuB;wBAAOvB,WAAU;;0CAChB,KAACyB;gCAAEzB,WAAU;0CAAiE;;0CAC9E,KAACwB;gCAAGxB,WAAU;0CACX2C,SAASK,KAAK,CAACC,QAAQ,IAAIN,SAASK,KAAK,CAAC1B,KAAK;;4BAEjDqB,SAASK,KAAK,CAAC3B,WAAW,iBACzB,KAACI;gCAAEzB,WAAU;0CACV2C,SAASK,KAAK,CAAC3B,WAAW;iCAE3B;;;oBAELsB,SAASO,QAAQ,CAACpD,MAAM,GAAG,kBAC1B,KAACqD;wBAAIC,cAAW;kCACd,cAAA,KAACrD;4BAAGC,WAAU;sCACX2C,SAASO,QAAQ,CAACjD,GAAG,CAAC,CAACmB,wBACtB,KAACjB;8CACC,cAAA,MAACC;wCACCJ,WAAU;wCACVM,MAAMc,QAAQiC,SAAS;;0DAEvB,KAACC;gDAAKtD,WAAU;0DACboB,QAAQ6B,QAAQ,IAAI7B,QAAQE,KAAK;;4CAEnCF,QAAQC,WAAW,iBAClB,KAACiC;gDAAKtD,WAAU;0DACboB,QAAQC,WAAW;iDAEpB;;;mCAZCD,QAAQmC,EAAE;;yBAkBvB;;;;IAIZ;IAEA,MAAM5C,WAAW,MAAMF,eAAe;QACpCC;QACAC,UAAUgC,SAASxB,GAAG,EAAEqC;IAC1B;IACA,MAAMhE,UAAUJ,QAAQuD,SAASxB,GAAG,EAAEQ;IACtC,MAAM8B,aAAaf,iBAAiBC,SAASe,OAAO,CAAC5D,MAAM,GAAG;IAE9D,qBACE,MAAC+C;QACC7C,WAAU;QACV8C,oCAAkCH,SAAStC,KAAK;;0BAEhD,KAACyB;0BAAOxC;;0BACR,MAACyD;gBACC/C,WAAU;gBACV2D,qCAAmCF,aAAa,iBAAiB;gBACjE3B,OAAOvC,mBAAmBC;;oBAEzBiE,2BACC,KAACG;wBACC5D,WAAU;wBACV8B,OAAO;4BACL+B,WAAW;wBACb;kCAEA,cAAA,KAACV;4BACCC,cAAW;4BACXpD,WAAU;sCAETN,mBAAmBiD,SAASe,OAAO,EAAEf,SAAStC,KAAK;;yBAGtD;kCACJ,MAACyD;wBAAQ9D,WAAU;;0CACjB,KAAC0B;gCACCC,WAAWgB,SAASxB,GAAG,EAAEQ;gCACzBL,OAAOqB,SAASxB,GAAG,EAAEG,SAASqB,SAASvB,OAAO,CAACE,KAAK;;0CAEtD,KAACJ;gCAAWC,KAAKwB,SAASxB,GAAG;gCAAEC,SAASuB,SAASvB,OAAO;;4BACvDT;;;;;;;AAKX,EAAC"}
@@ -1,11 +1,11 @@
1
- export { getPayloadMarkdownDocsLinks, } from './links.js';
2
- export type { GetPayloadMarkdownDocsLinksOptions, PayloadMarkdownDocsLink, } from './links.js';
1
+ export { getPayloadMarkdownDocsLinks } from './links.js';
2
+ export type { GetPayloadMarkdownDocsLinksOptions, PayloadMarkdownDocsLink } from './links.js';
3
3
  export { createPayloadMarkdownDocsMarkdownResponse, resolvePayloadMarkdownDocsMarkdownRoute, } from './markdown.js';
4
4
  export type { ResolvedPayloadMarkdownDocsMarkdownRoute, ResolvePayloadMarkdownDocsMarkdownRouteOptions, } from './markdown.js';
5
- export { generatePayloadMarkdownDocsMetadata, getPayloadMarkdownDocsMetadata, } from './metadata.js';
5
+ export { generatePayloadMarkdownDocsMetadata, getPayloadMarkdownDocsMetadata } from './metadata.js';
6
6
  export { PayloadMarkdownDocsPage } from './PayloadMarkdownDocsPage.js';
7
7
  export type { PayloadMarkdownDocsPageProps } from './PayloadMarkdownDocsPage.js';
8
- export { getPayloadMarkdownDocsRoutePath, resolvePayloadMarkdownDocsRoute, } from './route.js';
9
- export { buildPayloadMarkdownDocsSidebar, getPayloadMarkdownDocsSidebar, } from './sidebar.js';
8
+ export { getPayloadMarkdownDocsRoutePath, resolvePayloadMarkdownDocsRoute } from './route.js';
9
+ export { buildPayloadMarkdownDocsSidebar, getPayloadMarkdownDocsSidebar } from './sidebar.js';
10
10
  export type { BuildPayloadMarkdownDocsSidebarOptions, GetPayloadMarkdownDocsSidebarOptions, } from './sidebar.js';
11
- export type { PayloadMarkdownDocsCollectionSlugs, PayloadMarkdownDocsDefaults, PayloadMarkdownDocsFindArgs, PayloadMarkdownDocsMetadata, PayloadMarkdownDocsOverrides, PayloadMarkdownDocsReadPayload, PayloadMarkdownDocsSidebarItem, ResolvedPayloadMarkdownDocsGroup, ResolvedPayloadMarkdownDocsRecord, ResolvedPayloadMarkdownDocsRoute, ResolvedPayloadMarkdownDocsSet, ResolvePayloadMarkdownDocsRouteOptions, } from './types.js';
11
+ export type { PayloadMarkdownDocsCollectionSlugs, PayloadMarkdownDocsDefaults, PayloadMarkdownDocsFindArgs, PayloadMarkdownDocsHeroImage, PayloadMarkdownDocsMetadata, PayloadMarkdownDocsOverrides, PayloadMarkdownDocsReadPayload, PayloadMarkdownDocsSidebarItem, ResolvedPayloadMarkdownDocsGroup, ResolvedPayloadMarkdownDocsRecord, ResolvedPayloadMarkdownDocsRoute, ResolvedPayloadMarkdownDocsSet, ResolvePayloadMarkdownDocsRouteOptions, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/index.ts"],"sourcesContent":["export {\n getPayloadMarkdownDocsLinks,\n} from './links.js'\nexport type {\n GetPayloadMarkdownDocsLinksOptions,\n PayloadMarkdownDocsLink,\n} from './links.js'\nexport {\n createPayloadMarkdownDocsMarkdownResponse,\n resolvePayloadMarkdownDocsMarkdownRoute,\n} from './markdown.js'\nexport type {\n ResolvedPayloadMarkdownDocsMarkdownRoute,\n ResolvePayloadMarkdownDocsMarkdownRouteOptions,\n} from './markdown.js'\nexport {\n generatePayloadMarkdownDocsMetadata,\n getPayloadMarkdownDocsMetadata,\n} from './metadata.js'\nexport { PayloadMarkdownDocsPage } from './PayloadMarkdownDocsPage.js'\nexport type { PayloadMarkdownDocsPageProps } from './PayloadMarkdownDocsPage.js'\nexport {\n getPayloadMarkdownDocsRoutePath,\n resolvePayloadMarkdownDocsRoute,\n} from './route.js'\nexport {\n buildPayloadMarkdownDocsSidebar,\n getPayloadMarkdownDocsSidebar,\n} from './sidebar.js'\nexport type {\n BuildPayloadMarkdownDocsSidebarOptions,\n GetPayloadMarkdownDocsSidebarOptions,\n} from './sidebar.js'\nexport type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsDefaults,\n PayloadMarkdownDocsFindArgs,\n PayloadMarkdownDocsMetadata,\n PayloadMarkdownDocsOverrides,\n PayloadMarkdownDocsReadPayload,\n PayloadMarkdownDocsSidebarItem,\n ResolvedPayloadMarkdownDocsGroup,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n"],"names":["getPayloadMarkdownDocsLinks","createPayloadMarkdownDocsMarkdownResponse","resolvePayloadMarkdownDocsMarkdownRoute","generatePayloadMarkdownDocsMetadata","getPayloadMarkdownDocsMetadata","PayloadMarkdownDocsPage","getPayloadMarkdownDocsRoutePath","resolvePayloadMarkdownDocsRoute","buildPayloadMarkdownDocsSidebar","getPayloadMarkdownDocsSidebar"],"mappings":"AAAA,SACEA,2BAA2B,QACtB,aAAY;AAKnB,SACEC,yCAAyC,EACzCC,uCAAuC,QAClC,gBAAe;AAKtB,SACEC,mCAAmC,EACnCC,8BAA8B,QACzB,gBAAe;AACtB,SAASC,uBAAuB,QAAQ,+BAA8B;AAEtE,SACEC,+BAA+B,EAC/BC,+BAA+B,QAC1B,aAAY;AACnB,SACEC,+BAA+B,EAC/BC,6BAA6B,QACxB,eAAc"}
1
+ {"version":3,"sources":["../../src/next/index.ts"],"sourcesContent":["export { getPayloadMarkdownDocsLinks } from './links.js'\nexport type { GetPayloadMarkdownDocsLinksOptions, PayloadMarkdownDocsLink } from './links.js'\nexport {\n createPayloadMarkdownDocsMarkdownResponse,\n resolvePayloadMarkdownDocsMarkdownRoute,\n} from './markdown.js'\nexport type {\n ResolvedPayloadMarkdownDocsMarkdownRoute,\n ResolvePayloadMarkdownDocsMarkdownRouteOptions,\n} from './markdown.js'\nexport { generatePayloadMarkdownDocsMetadata, getPayloadMarkdownDocsMetadata } from './metadata.js'\nexport { PayloadMarkdownDocsPage } from './PayloadMarkdownDocsPage.js'\nexport type { PayloadMarkdownDocsPageProps } from './PayloadMarkdownDocsPage.js'\nexport { getPayloadMarkdownDocsRoutePath, resolvePayloadMarkdownDocsRoute } from './route.js'\nexport { buildPayloadMarkdownDocsSidebar, getPayloadMarkdownDocsSidebar } from './sidebar.js'\nexport type {\n BuildPayloadMarkdownDocsSidebarOptions,\n GetPayloadMarkdownDocsSidebarOptions,\n} from './sidebar.js'\nexport type {\n PayloadMarkdownDocsCollectionSlugs,\n PayloadMarkdownDocsDefaults,\n PayloadMarkdownDocsFindArgs,\n PayloadMarkdownDocsHeroImage,\n PayloadMarkdownDocsMetadata,\n PayloadMarkdownDocsOverrides,\n PayloadMarkdownDocsReadPayload,\n PayloadMarkdownDocsSidebarItem,\n ResolvedPayloadMarkdownDocsGroup,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsRoute,\n ResolvedPayloadMarkdownDocsSet,\n ResolvePayloadMarkdownDocsRouteOptions,\n} from './types.js'\n"],"names":["getPayloadMarkdownDocsLinks","createPayloadMarkdownDocsMarkdownResponse","resolvePayloadMarkdownDocsMarkdownRoute","generatePayloadMarkdownDocsMetadata","getPayloadMarkdownDocsMetadata","PayloadMarkdownDocsPage","getPayloadMarkdownDocsRoutePath","resolvePayloadMarkdownDocsRoute","buildPayloadMarkdownDocsSidebar","getPayloadMarkdownDocsSidebar"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,aAAY;AAExD,SACEC,yCAAyC,EACzCC,uCAAuC,QAClC,gBAAe;AAKtB,SAASC,mCAAmC,EAAEC,8BAA8B,QAAQ,gBAAe;AACnG,SAASC,uBAAuB,QAAQ,+BAA8B;AAEtE,SAASC,+BAA+B,EAAEC,+BAA+B,QAAQ,aAAY;AAC7F,SAASC,+BAA+B,EAAEC,6BAA6B,QAAQ,eAAc"}
@@ -40,6 +40,24 @@ const toOverrides = (value)=>{
40
40
  });
41
41
  return Object.keys(overrides).length > 0 ? overrides : undefined;
42
42
  };
43
+ const toHeroImage = (value)=>{
44
+ const media = isRecord(value) && isRecord(value.value) ? value.value : value;
45
+ if (!isRecord(media)) {
46
+ return undefined;
47
+ }
48
+ const url = getOptionalString(media, 'url');
49
+ if (!url) {
50
+ return undefined;
51
+ }
52
+ return cleanObject({
53
+ id: getRecordId(media),
54
+ alt: getOptionalString(media, 'alt'),
55
+ height: getOptionalNumber(media, 'height'),
56
+ relationTo: isRecord(value) ? getOptionalString(value, 'relationTo') : undefined,
57
+ url,
58
+ width: getOptionalNumber(media, 'width')
59
+ });
60
+ };
43
61
  export const toResolvedDocsSet = (doc)=>{
44
62
  if (!isRecord(doc)) {
45
63
  return undefined;
@@ -110,6 +128,7 @@ export const toResolvedDocsRecord = ({ doc, markdownField })=>{
110
128
  depth: getOptionalNumber(doc, 'depth') ?? 0,
111
129
  description: getOptionalString(doc, 'description'),
112
130
  docsSetId: getRelationshipId(doc.docsSet),
131
+ heroImage: toHeroImage(doc.heroImage),
113
132
  navTitle: getOptionalString(doc, 'navTitle'),
114
133
  order: getOptionalNumber(doc, 'order') ?? 0,
115
134
  overrides: toOverrides(doc.overrides),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/records.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsDefaults,\n PayloadMarkdownDocsOverrides,\n ResolvedPayloadMarkdownDocsGroup,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsSet,\n} from './types.js'\n\nimport {\n deriveDocsSetRouteBase,\n normalizeRoutePath,\n} from '../routing/index.js'\nimport {\n isAiMarkdownExportManifestPath,\n validateDocsAiExportManifest,\n} from '../sync/index.js'\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nexport const 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\nexport const 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 getOptionalString = (\n doc: Record<string, unknown>,\n key: string,\n): string | undefined => (typeof doc[key] === 'string' ? doc[key] : undefined)\n\nconst getOptionalNumber = (\n doc: Record<string, unknown>,\n key: string,\n): number | undefined => (typeof doc[key] === 'number' ? doc[key] : undefined)\n\nconst getOptionalBoolean = (\n doc: Record<string, unknown>,\n key: string,\n): boolean | undefined => (typeof doc[key] === 'boolean' ? doc[key] : undefined)\n\nconst cleanObject = <T extends Record<string, unknown>>(input: T): Partial<T> =>\n Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined && value !== null),\n ) as Partial<T>\n\nconst toDefaults = (value: unknown): PayloadMarkdownDocsDefaults | undefined => {\n if (!isRecord(value)) {\n return undefined\n }\n\n const sidebarMode: PayloadMarkdownDocsDefaults['sidebarMode'] =\n value.sidebarMode === 'auto' ||\n value.sidebarMode === 'hidden' ||\n value.sidebarMode === 'manual'\n ? value.sidebarMode\n : undefined\n const defaults = cleanObject({\n sidebarMode,\n } satisfies PayloadMarkdownDocsDefaults)\n\n return Object.keys(defaults).length > 0\n ? (defaults as PayloadMarkdownDocsDefaults)\n : undefined\n}\n\nconst toOverrides = (value: unknown): PayloadMarkdownDocsOverrides | undefined => {\n if (!isRecord(value)) {\n return undefined\n }\n\n const overrides = cleanObject({\n hideFromNav: getOptionalBoolean(value, 'hideFromNav'),\n navTitle: getOptionalString(value, 'navTitle'),\n })\n\n return Object.keys(overrides).length > 0 ? overrides : undefined\n}\n\nexport const toResolvedDocsSet = (\n doc: unknown,\n): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const routeBase = getOptionalString(doc, 'routeBase')\n const title = getOptionalString(doc, 'title')\n const slug = getOptionalString(doc, 'slug')\n\n if (!id || !title || (!routeBase && !slug)) {\n return undefined\n }\n\n const aiExportValidation =\n doc.aiExport === undefined || doc.aiExport === null\n ? undefined\n : validateDocsAiExportManifest(doc.aiExport)\n\n return {\n ...(aiExportValidation?.ok ? { aiExport: aiExportValidation.manifest } : {}),\n id,\n slug,\n defaults: toDefaults(doc.defaults),\n description: getOptionalString(doc, 'description'),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n routeBase: normalizeRoutePath(\n routeBase ??\n deriveDocsSetRouteBase({\n docsSetSlug: slug ?? id,\n }),\n ),\n title,\n }\n}\n\nexport const toResolvedDocsGroup = (\n doc: unknown,\n): ResolvedPayloadMarkdownDocsGroup | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const routePath = getOptionalString(doc, 'routePath')\n const title = getOptionalString(doc, 'title')\n const slug = getOptionalString(doc, 'slug')\n\n if (!id || !title || (!routePath && !slug)) {\n return undefined\n }\n\n return {\n id,\n slug,\n description: getOptionalString(doc, 'description'),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n routePath: normalizeRoutePath(routePath ?? `/${slug}`),\n serveIndex: getOptionalBoolean(doc, 'serveIndex') ?? false,\n title,\n }\n}\n\nexport const toResolvedDocsRecord = ({\n doc,\n markdownField,\n}: {\n doc: unknown\n markdownField: string\n}): ResolvedPayloadMarkdownDocsRecord | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const route = getOptionalString(doc, 'route')\n const sourcePath = getOptionalString(doc, 'sourcePath')\n const title = getOptionalString(doc, 'title')\n\n if (!id || !route || !sourcePath || !title) {\n return undefined\n }\n\n const sync = isRecord(doc.sync) ? doc.sync : undefined\n const status =\n doc._status === 'draft' || doc._status === 'published' ? doc._status : undefined\n\n return {\n id,\n archived: getOptionalBoolean(sync ?? {}, 'archived') ?? false,\n content:\n typeof doc[markdownField] === 'string' ? doc[markdownField] : undefined,\n depth: getOptionalNumber(doc, 'depth') ?? 0,\n description: getOptionalString(doc, 'description'),\n docsSetId: getRelationshipId(doc.docsSet),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n overrides: toOverrides(doc.overrides),\n route: normalizeRoutePath(route),\n sourceHash: getOptionalString(doc, 'sourceHash'),\n sourcePath,\n status,\n title,\n }\n}\n\nexport const isVisibleDocsRecord = ({\n includeDrafts = false,\n record,\n}: {\n includeDrafts?: boolean\n record: ResolvedPayloadMarkdownDocsRecord\n}): boolean => {\n if (record.archived) {\n return false\n }\n\n if (isAiMarkdownExportManifestPath(record.sourcePath)) {\n return false\n }\n\n if (!includeDrafts && record.status === 'draft') {\n return false\n }\n\n return true\n}\n"],"names":["deriveDocsSetRouteBase","normalizeRoutePath","isAiMarkdownExportManifestPath","validateDocsAiExportManifest","isRecord","value","Array","isArray","getRecordId","doc","id","String","undefined","getRelationshipId","getOptionalString","key","getOptionalNumber","getOptionalBoolean","cleanObject","input","Object","fromEntries","entries","filter","toDefaults","sidebarMode","defaults","keys","length","toOverrides","overrides","hideFromNav","navTitle","toResolvedDocsSet","routeBase","title","slug","aiExportValidation","aiExport","ok","manifest","description","order","docsSetSlug","toResolvedDocsGroup","routePath","serveIndex","toResolvedDocsRecord","markdownField","route","sourcePath","sync","status","_status","archived","content","depth","docsSetId","docsSet","sourceHash","isVisibleDocsRecord","includeDrafts","record"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/next/records.ts"],"sourcesContent":["import type {\n PayloadMarkdownDocsDefaults,\n PayloadMarkdownDocsHeroImage,\n PayloadMarkdownDocsOverrides,\n ResolvedPayloadMarkdownDocsGroup,\n ResolvedPayloadMarkdownDocsRecord,\n ResolvedPayloadMarkdownDocsSet,\n} from './types.js'\n\nimport { deriveDocsSetRouteBase, normalizeRoutePath } from '../routing/index.js'\nimport { isAiMarkdownExportManifestPath, validateDocsAiExportManifest } from '../sync/index.js'\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nexport const 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\nexport const 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 getOptionalString = (doc: Record<string, unknown>, key: string): string | undefined =>\n typeof doc[key] === 'string' ? doc[key] : undefined\n\nconst getOptionalNumber = (doc: Record<string, unknown>, key: string): number | undefined =>\n typeof doc[key] === 'number' ? doc[key] : undefined\n\nconst getOptionalBoolean = (doc: Record<string, unknown>, key: string): boolean | undefined =>\n typeof doc[key] === 'boolean' ? doc[key] : undefined\n\nconst cleanObject = <T extends Record<string, unknown>>(input: T): Partial<T> =>\n Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined && value !== null),\n ) as Partial<T>\n\nconst toDefaults = (value: unknown): PayloadMarkdownDocsDefaults | undefined => {\n if (!isRecord(value)) {\n return undefined\n }\n\n const sidebarMode: PayloadMarkdownDocsDefaults['sidebarMode'] =\n value.sidebarMode === 'auto' || value.sidebarMode === 'hidden' || value.sidebarMode === 'manual'\n ? value.sidebarMode\n : undefined\n const defaults = cleanObject({\n sidebarMode,\n } satisfies PayloadMarkdownDocsDefaults)\n\n return Object.keys(defaults).length > 0 ? (defaults as PayloadMarkdownDocsDefaults) : undefined\n}\n\nconst toOverrides = (value: unknown): PayloadMarkdownDocsOverrides | undefined => {\n if (!isRecord(value)) {\n return undefined\n }\n\n const overrides = cleanObject({\n hideFromNav: getOptionalBoolean(value, 'hideFromNav'),\n navTitle: getOptionalString(value, 'navTitle'),\n })\n\n return Object.keys(overrides).length > 0 ? overrides : undefined\n}\n\nconst toHeroImage = (value: unknown): PayloadMarkdownDocsHeroImage | undefined => {\n const media = isRecord(value) && isRecord(value.value) ? value.value : value\n\n if (!isRecord(media)) {\n return undefined\n }\n\n const url = getOptionalString(media, 'url')\n\n if (!url) {\n return undefined\n }\n\n return cleanObject({\n id: getRecordId(media),\n alt: getOptionalString(media, 'alt'),\n height: getOptionalNumber(media, 'height'),\n relationTo: isRecord(value) ? getOptionalString(value, 'relationTo') : undefined,\n url,\n width: getOptionalNumber(media, 'width'),\n }) as PayloadMarkdownDocsHeroImage\n}\n\nexport const toResolvedDocsSet = (doc: unknown): ResolvedPayloadMarkdownDocsSet | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const routeBase = getOptionalString(doc, 'routeBase')\n const title = getOptionalString(doc, 'title')\n const slug = getOptionalString(doc, 'slug')\n\n if (!id || !title || (!routeBase && !slug)) {\n return undefined\n }\n\n const aiExportValidation =\n doc.aiExport === undefined || doc.aiExport === null\n ? undefined\n : validateDocsAiExportManifest(doc.aiExport)\n\n return {\n ...(aiExportValidation?.ok ? { aiExport: aiExportValidation.manifest } : {}),\n id,\n slug,\n defaults: toDefaults(doc.defaults),\n description: getOptionalString(doc, 'description'),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n routeBase: normalizeRoutePath(\n routeBase ??\n deriveDocsSetRouteBase({\n docsSetSlug: slug ?? id,\n }),\n ),\n title,\n }\n}\n\nexport const toResolvedDocsGroup = (doc: unknown): ResolvedPayloadMarkdownDocsGroup | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const routePath = getOptionalString(doc, 'routePath')\n const title = getOptionalString(doc, 'title')\n const slug = getOptionalString(doc, 'slug')\n\n if (!id || !title || (!routePath && !slug)) {\n return undefined\n }\n\n return {\n id,\n slug,\n description: getOptionalString(doc, 'description'),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n routePath: normalizeRoutePath(routePath ?? `/${slug}`),\n serveIndex: getOptionalBoolean(doc, 'serveIndex') ?? false,\n title,\n }\n}\n\nexport const toResolvedDocsRecord = ({\n doc,\n markdownField,\n}: {\n doc: unknown\n markdownField: string\n}): ResolvedPayloadMarkdownDocsRecord | undefined => {\n if (!isRecord(doc)) {\n return undefined\n }\n\n const id = getRecordId(doc)\n const route = getOptionalString(doc, 'route')\n const sourcePath = getOptionalString(doc, 'sourcePath')\n const title = getOptionalString(doc, 'title')\n\n if (!id || !route || !sourcePath || !title) {\n return undefined\n }\n\n const sync = isRecord(doc.sync) ? doc.sync : undefined\n const status = doc._status === 'draft' || doc._status === 'published' ? doc._status : undefined\n\n return {\n id,\n archived: getOptionalBoolean(sync ?? {}, 'archived') ?? false,\n content: typeof doc[markdownField] === 'string' ? doc[markdownField] : undefined,\n depth: getOptionalNumber(doc, 'depth') ?? 0,\n description: getOptionalString(doc, 'description'),\n docsSetId: getRelationshipId(doc.docsSet),\n heroImage: toHeroImage(doc.heroImage),\n navTitle: getOptionalString(doc, 'navTitle'),\n order: getOptionalNumber(doc, 'order') ?? 0,\n overrides: toOverrides(doc.overrides),\n route: normalizeRoutePath(route),\n sourceHash: getOptionalString(doc, 'sourceHash'),\n sourcePath,\n status,\n title,\n }\n}\n\nexport const isVisibleDocsRecord = ({\n includeDrafts = false,\n record,\n}: {\n includeDrafts?: boolean\n record: ResolvedPayloadMarkdownDocsRecord\n}): boolean => {\n if (record.archived) {\n return false\n }\n\n if (isAiMarkdownExportManifestPath(record.sourcePath)) {\n return false\n }\n\n if (!includeDrafts && record.status === 'draft') {\n return false\n }\n\n return true\n}\n"],"names":["deriveDocsSetRouteBase","normalizeRoutePath","isAiMarkdownExportManifestPath","validateDocsAiExportManifest","isRecord","value","Array","isArray","getRecordId","doc","id","String","undefined","getRelationshipId","getOptionalString","key","getOptionalNumber","getOptionalBoolean","cleanObject","input","Object","fromEntries","entries","filter","toDefaults","sidebarMode","defaults","keys","length","toOverrides","overrides","hideFromNav","navTitle","toHeroImage","media","url","alt","height","relationTo","width","toResolvedDocsSet","routeBase","title","slug","aiExportValidation","aiExport","ok","manifest","description","order","docsSetSlug","toResolvedDocsGroup","routePath","serveIndex","toResolvedDocsRecord","markdownField","route","sourcePath","sync","status","_status","archived","content","depth","docsSetId","docsSet","heroImage","sourceHash","isVisibleDocsRecord","includeDrafts","record"],"mappings":"AASA,SAASA,sBAAsB,EAAEC,kBAAkB,QAAQ,sBAAqB;AAChF,SAASC,8BAA8B,EAAEC,4BAA4B,QAAQ,mBAAkB;AAE/F,OAAO,MAAMC,WAAW,CAACC,QACvB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACC,MAAMC,OAAO,CAACF,OAAM;AAEtE,OAAO,MAAMG,cAAc,CAACC;IAC1B,IAAI,OAAOA,IAAIC,EAAE,KAAK,YAAY,OAAOD,IAAIC,EAAE,KAAK,UAAU;QAC5D,OAAOC,OAAOF,IAAIC,EAAE;IACtB;IAEA,OAAOE;AACT,EAAC;AAED,OAAO,MAAMC,oBAAoB,CAACR;IAChC,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU;QAC1D,OAAOM,OAAON;IAChB;IAEA,IAAID,SAASC,QAAQ;QACnB,OAAOG,YAAYH;IACrB;IAEA,OAAOO;AACT,EAAC;AAED,MAAME,oBAAoB,CAACL,KAA8BM,MACvD,OAAON,GAAG,CAACM,IAAI,KAAK,WAAWN,GAAG,CAACM,IAAI,GAAGH;AAE5C,MAAMI,oBAAoB,CAACP,KAA8BM,MACvD,OAAON,GAAG,CAACM,IAAI,KAAK,WAAWN,GAAG,CAACM,IAAI,GAAGH;AAE5C,MAAMK,qBAAqB,CAACR,KAA8BM,MACxD,OAAON,GAAG,CAACM,IAAI,KAAK,YAAYN,GAAG,CAACM,IAAI,GAAGH;AAE7C,MAAMM,cAAc,CAAoCC,QACtDC,OAAOC,WAAW,CAChBD,OAAOE,OAAO,CAACH,OAAOI,MAAM,CAAC,CAAC,GAAGlB,MAAM,GAAKA,UAAUO,aAAaP,UAAU;AAGjF,MAAMmB,aAAa,CAACnB;IAClB,IAAI,CAACD,SAASC,QAAQ;QACpB,OAAOO;IACT;IAEA,MAAMa,cACJpB,MAAMoB,WAAW,KAAK,UAAUpB,MAAMoB,WAAW,KAAK,YAAYpB,MAAMoB,WAAW,KAAK,WACpFpB,MAAMoB,WAAW,GACjBb;IACN,MAAMc,WAAWR,YAAY;QAC3BO;IACF;IAEA,OAAOL,OAAOO,IAAI,CAACD,UAAUE,MAAM,GAAG,IAAKF,WAA2Cd;AACxF;AAEA,MAAMiB,cAAc,CAACxB;IACnB,IAAI,CAACD,SAASC,QAAQ;QACpB,OAAOO;IACT;IAEA,MAAMkB,YAAYZ,YAAY;QAC5Ba,aAAad,mBAAmBZ,OAAO;QACvC2B,UAAUlB,kBAAkBT,OAAO;IACrC;IAEA,OAAOe,OAAOO,IAAI,CAACG,WAAWF,MAAM,GAAG,IAAIE,YAAYlB;AACzD;AAEA,MAAMqB,cAAc,CAAC5B;IACnB,MAAM6B,QAAQ9B,SAASC,UAAUD,SAASC,MAAMA,KAAK,IAAIA,MAAMA,KAAK,GAAGA;IAEvE,IAAI,CAACD,SAAS8B,QAAQ;QACpB,OAAOtB;IACT;IAEA,MAAMuB,MAAMrB,kBAAkBoB,OAAO;IAErC,IAAI,CAACC,KAAK;QACR,OAAOvB;IACT;IAEA,OAAOM,YAAY;QACjBR,IAAIF,YAAY0B;QAChBE,KAAKtB,kBAAkBoB,OAAO;QAC9BG,QAAQrB,kBAAkBkB,OAAO;QACjCI,YAAYlC,SAASC,SAASS,kBAAkBT,OAAO,gBAAgBO;QACvEuB;QACAI,OAAOvB,kBAAkBkB,OAAO;IAClC;AACF;AAEA,OAAO,MAAMM,oBAAoB,CAAC/B;IAChC,IAAI,CAACL,SAASK,MAAM;QAClB,OAAOG;IACT;IAEA,MAAMF,KAAKF,YAAYC;IACvB,MAAMgC,YAAY3B,kBAAkBL,KAAK;IACzC,MAAMiC,QAAQ5B,kBAAkBL,KAAK;IACrC,MAAMkC,OAAO7B,kBAAkBL,KAAK;IAEpC,IAAI,CAACC,MAAM,CAACgC,SAAU,CAACD,aAAa,CAACE,MAAO;QAC1C,OAAO/B;IACT;IAEA,MAAMgC,qBACJnC,IAAIoC,QAAQ,KAAKjC,aAAaH,IAAIoC,QAAQ,KAAK,OAC3CjC,YACAT,6BAA6BM,IAAIoC,QAAQ;IAE/C,OAAO;QACL,GAAID,oBAAoBE,KAAK;YAAED,UAAUD,mBAAmBG,QAAQ;QAAC,IAAI,CAAC,CAAC;QAC3ErC;QACAiC;QACAjB,UAAUF,WAAWf,IAAIiB,QAAQ;QACjCsB,aAAalC,kBAAkBL,KAAK;QACpCuB,UAAUlB,kBAAkBL,KAAK;QACjCwC,OAAOjC,kBAAkBP,KAAK,YAAY;QAC1CgC,WAAWxC,mBACTwC,aACEzC,uBAAuB;YACrBkD,aAAaP,QAAQjC;QACvB;QAEJgC;IACF;AACF,EAAC;AAED,OAAO,MAAMS,sBAAsB,CAAC1C;IAClC,IAAI,CAACL,SAASK,MAAM;QAClB,OAAOG;IACT;IAEA,MAAMF,KAAKF,YAAYC;IACvB,MAAM2C,YAAYtC,kBAAkBL,KAAK;IACzC,MAAMiC,QAAQ5B,kBAAkBL,KAAK;IACrC,MAAMkC,OAAO7B,kBAAkBL,KAAK;IAEpC,IAAI,CAACC,MAAM,CAACgC,SAAU,CAACU,aAAa,CAACT,MAAO;QAC1C,OAAO/B;IACT;IAEA,OAAO;QACLF;QACAiC;QACAK,aAAalC,kBAAkBL,KAAK;QACpCuB,UAAUlB,kBAAkBL,KAAK;QACjCwC,OAAOjC,kBAAkBP,KAAK,YAAY;QAC1C2C,WAAWnD,mBAAmBmD,aAAa,CAAC,CAAC,EAAET,MAAM;QACrDU,YAAYpC,mBAAmBR,KAAK,iBAAiB;QACrDiC;IACF;AACF,EAAC;AAED,OAAO,MAAMY,uBAAuB,CAAC,EACnC7C,GAAG,EACH8C,aAAa,EAId;IACC,IAAI,CAACnD,SAASK,MAAM;QAClB,OAAOG;IACT;IAEA,MAAMF,KAAKF,YAAYC;IACvB,MAAM+C,QAAQ1C,kBAAkBL,KAAK;IACrC,MAAMgD,aAAa3C,kBAAkBL,KAAK;IAC1C,MAAMiC,QAAQ5B,kBAAkBL,KAAK;IAErC,IAAI,CAACC,MAAM,CAAC8C,SAAS,CAACC,cAAc,CAACf,OAAO;QAC1C,OAAO9B;IACT;IAEA,MAAM8C,OAAOtD,SAASK,IAAIiD,IAAI,IAAIjD,IAAIiD,IAAI,GAAG9C;IAC7C,MAAM+C,SAASlD,IAAImD,OAAO,KAAK,WAAWnD,IAAImD,OAAO,KAAK,cAAcnD,IAAImD,OAAO,GAAGhD;IAEtF,OAAO;QACLF;QACAmD,UAAU5C,mBAAmByC,QAAQ,CAAC,GAAG,eAAe;QACxDI,SAAS,OAAOrD,GAAG,CAAC8C,cAAc,KAAK,WAAW9C,GAAG,CAAC8C,cAAc,GAAG3C;QACvEmD,OAAO/C,kBAAkBP,KAAK,YAAY;QAC1CuC,aAAalC,kBAAkBL,KAAK;QACpCuD,WAAWnD,kBAAkBJ,IAAIwD,OAAO;QACxCC,WAAWjC,YAAYxB,IAAIyD,SAAS;QACpClC,UAAUlB,kBAAkBL,KAAK;QACjCwC,OAAOjC,kBAAkBP,KAAK,YAAY;QAC1CqB,WAAWD,YAAYpB,IAAIqB,SAAS;QACpC0B,OAAOvD,mBAAmBuD;QAC1BW,YAAYrD,kBAAkBL,KAAK;QACnCgD;QACAE;QACAjB;IACF;AACF,EAAC;AAED,OAAO,MAAM0B,sBAAsB,CAAC,EAClCC,gBAAgB,KAAK,EACrBC,MAAM,EAIP;IACC,IAAIA,OAAOT,QAAQ,EAAE;QACnB,OAAO;IACT;IAEA,IAAI3D,+BAA+BoE,OAAOb,UAAU,GAAG;QACrD,OAAO;IACT;IAEA,IAAI,CAACY,iBAAiBC,OAAOX,MAAM,KAAK,SAAS;QAC/C,OAAO;IACT;IAEA,OAAO;AACT,EAAC"}
@@ -33,6 +33,14 @@ export type PayloadMarkdownDocsOverrides = {
33
33
  hideFromNav?: boolean;
34
34
  navTitle?: string;
35
35
  };
36
+ export type PayloadMarkdownDocsHeroImage = {
37
+ alt?: string;
38
+ height?: number;
39
+ id?: string;
40
+ relationTo?: string;
41
+ url: string;
42
+ width?: number;
43
+ };
36
44
  export type ResolvedPayloadMarkdownDocsSet = {
37
45
  aiExport?: DocsAiExportManifest;
38
46
  defaults?: PayloadMarkdownDocsDefaults;
@@ -60,6 +68,7 @@ export type ResolvedPayloadMarkdownDocsRecord = {
60
68
  depth: number;
61
69
  description?: string;
62
70
  docsSetId?: string;
71
+ heroImage?: PayloadMarkdownDocsHeroImage;
63
72
  id: string;
64
73
  navTitle?: string;
65
74
  order: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n sidebarMode?: 'auto' | 'hidden' | 'manual'\n}\n\nexport type PayloadMarkdownDocsOverrides = {\n hideFromNav?: boolean\n navTitle?: string\n}\n\nexport type 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"}
1
+ {"version":3,"sources":["../../src/next/types.ts"],"sourcesContent":["import type { DocsAiExportManifest } from '../sync/index.js'\n\nexport type PayloadMarkdownDocsFindArgs = {\n collection: string\n depth?: number\n limit?: number\n overrideAccess?: boolean\n sort?: string\n where?: unknown\n}\n\nexport type PayloadMarkdownDocsReadPayload = {\n find: (args: PayloadMarkdownDocsFindArgs) => Promise<{\n docs: unknown[]\n }>\n}\n\nexport type PayloadMarkdownDocsCollectionSlugs = {\n docs?: string\n docsGroups?: string\n docsSets?: string\n}\n\nexport type ResolvePayloadMarkdownDocsRouteOptions = {\n collections?: PayloadMarkdownDocsCollectionSlugs\n includeDrafts?: boolean\n markdownField?: string\n overrideAccess?: boolean\n path?: string\n payload: PayloadMarkdownDocsReadPayload\n slug?: string | string[]\n}\n\nexport type PayloadMarkdownDocsDefaults = {\n sidebarMode?: 'auto' | 'hidden' | 'manual'\n}\n\nexport type PayloadMarkdownDocsOverrides = {\n hideFromNav?: boolean\n navTitle?: string\n}\n\nexport type PayloadMarkdownDocsHeroImage = {\n alt?: string\n height?: number\n id?: string\n relationTo?: string\n url: string\n width?: number\n}\n\nexport type ResolvedPayloadMarkdownDocsSet = {\n aiExport?: DocsAiExportManifest\n defaults?: PayloadMarkdownDocsDefaults\n description?: string\n id: string\n navTitle?: string\n order: number\n routeBase: string\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsGroup = {\n description?: string\n id: string\n navTitle?: string\n order: number\n routePath: string\n serveIndex: boolean\n slug?: string\n title: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRecord = {\n archived: boolean\n content?: string\n depth: number\n description?: string\n docsSetId?: string\n heroImage?: PayloadMarkdownDocsHeroImage\n id: string\n navTitle?: string\n order: number\n overrides?: PayloadMarkdownDocsOverrides\n route: string\n sourceHash?: string\n sourcePath: string\n status?: 'draft' | 'published'\n title: string\n}\n\nexport type PayloadMarkdownDocsSidebarItem = {\n children?: PayloadMarkdownDocsSidebarItem[]\n depth: number\n hidden?: boolean\n label: string\n order: number\n route: string\n sourcePath: string\n}\n\nexport type ResolvedPayloadMarkdownDocsRoute =\n | {\n doc: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'doc'\n }\n | {\n doc?: ResolvedPayloadMarkdownDocsRecord\n docsSet: ResolvedPayloadMarkdownDocsSet\n route: string\n sidebar: PayloadMarkdownDocsSidebarItem[]\n type: 'docsSetIndex'\n }\n | {\n docsSets: ResolvedPayloadMarkdownDocsSet[]\n group: ResolvedPayloadMarkdownDocsGroup\n route: string\n type: 'docsGroupIndex'\n }\n\nexport type PayloadMarkdownDocsMetadata = {\n description?: string\n title?: string\n}\n"],"names":[],"mappings":"AA4HA,WAGC"}
package/dist/plugin.js CHANGED
@@ -1,10 +1,22 @@
1
1
  import { createDocsCollection, createDocsGroupsCollection, createDocsKeysCollection, createDocsSetsCollection, createDocsTrustedCollection, createNoncesCollection, createSyncRunsCollection } from './collections/index.js';
2
- import { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD } from './constants.js';
2
+ import { DEFAULT_DOCS_COLLECTION_SLUG, DEFAULT_DOCS_GROUPS_COLLECTION_SLUG, DEFAULT_DOCS_KEYS_COLLECTION_SLUG, DEFAULT_DOCS_SETS_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_ENDPOINT_PATH, DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG, DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG, DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG, DEFAULT_MARKDOWN_FIELD_NAME, DEFAULT_MAX_BODY_BYTES, DEFAULT_MEDIA_COLLECTION_SLUG, DEFAULT_PAGES_BRIDGE_FIELD, DEFAULT_PAGES_COLLECTION_SLUG, DEFAULT_PAGES_ROUTE_FIELD } from './constants.js';
3
3
  import { createSyncEndpoint } from './endpoints/index.js';
4
4
  const normalizeEndpointPath = (path)=>{
5
5
  const normalized = `/${path.trim()}`.replace(/\/+/g, '/');
6
6
  return normalized.length > 1 ? normalized.replace(/\/+$/g, '') : normalized;
7
7
  };
8
+ const resolveHeroImageMediaCollectionSlugs = (pluginOptions)=>{
9
+ if (pluginOptions.target?.heroImage === false) {
10
+ return undefined;
11
+ }
12
+ const additionalMediaCollections = typeof pluginOptions.target?.heroImage === 'object' ? pluginOptions.target.heroImage.additionalMediaCollections ?? [] : [];
13
+ return [
14
+ ...new Set([
15
+ DEFAULT_MEDIA_COLLECTION_SLUG,
16
+ ...additionalMediaCollections.map((slug)=>slug.trim()).filter(Boolean)
17
+ ])
18
+ ];
19
+ };
8
20
  const resolveCollectionOptions = (pluginOptions)=>{
9
21
  if (pluginOptions.target?.type !== undefined && pluginOptions.target.type !== 'docsCollection') {
10
22
  throw new Error('payloadMarkdownDocs: target.type only supports "docsCollection". existingCollection is not supported.');
@@ -26,6 +38,7 @@ const resolveCollectionOptions = (pluginOptions)=>{
26
38
  docsTrustedCollectionSlug: pluginOptions.collections?.docsTrusted?.slug ?? DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,
27
39
  docsTrustedEnabled: pluginOptions.collections?.docsTrusted?.enabled !== false,
28
40
  enableDrafts: pluginOptions.target?.enableDrafts === true,
41
+ heroImageMediaCollectionSlugs: resolveHeroImageMediaCollectionSlugs(pluginOptions),
29
42
  markdownFieldName: pluginOptions.target?.markdownField ?? DEFAULT_MARKDOWN_FIELD_NAME,
30
43
  noncesCollectionSlug: pluginOptions.collections?.nonces?.slug ?? DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,
31
44
  noncesEnabled: pluginOptions.collections?.nonces?.enabled !== false,
@@ -53,7 +66,7 @@ export const payloadMarkdownDocs = (pluginOptions = {})=>(incomingConfig)=>{
53
66
  if (pluginOptions.enabled === false) {
54
67
  return incomingConfig;
55
68
  }
56
- const { docsCollectionSlug, docsEnabled, docsGroupsCollectionSlug, docsGroupsEnabled, docsKeysCollectionSlug, docsKeysEnabled, docsSetsCollectionSlug, docsSetsEnabled, docsTrustedCollectionSlug, docsTrustedEnabled, enableDrafts, markdownFieldName, noncesCollectionSlug, noncesEnabled, syncRunsCollectionSlug, syncRunsEnabled } = resolveCollectionOptions(pluginOptions);
69
+ const { docsCollectionSlug, docsEnabled, docsGroupsCollectionSlug, docsGroupsEnabled, docsKeysCollectionSlug, docsKeysEnabled, docsSetsCollectionSlug, docsSetsEnabled, docsTrustedCollectionSlug, docsTrustedEnabled, enableDrafts, heroImageMediaCollectionSlugs, markdownFieldName, noncesCollectionSlug, noncesEnabled, syncRunsCollectionSlug, syncRunsEnabled } = resolveCollectionOptions(pluginOptions);
57
70
  assertCollectionOptionCompatibility({
58
71
  docsCollectionSlug,
59
72
  docsEnabled,
@@ -66,6 +79,7 @@ export const payloadMarkdownDocs = (pluginOptions = {})=>(incomingConfig)=>{
66
79
  docsTrustedCollectionSlug,
67
80
  docsTrustedEnabled,
68
81
  enableDrafts,
82
+ heroImageMediaCollectionSlugs,
69
83
  markdownFieldName,
70
84
  noncesCollectionSlug,
71
85
  noncesEnabled,
@@ -128,6 +142,7 @@ export const payloadMarkdownDocs = (pluginOptions = {})=>(incomingConfig)=>{
128
142
  slug: docsCollectionSlug,
129
143
  docsSetsCollectionSlug: docsSetsEnabled ? docsSetsCollectionSlug : undefined,
130
144
  enableDrafts,
145
+ heroImageMediaCollectionSlugs,
131
146
  markdownFieldName,
132
147
  syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined
133
148
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config, Plugin } from 'payload'\n\nimport type { PayloadMarkdownDocsConfig } from './types.js'\n\nimport {\n createDocsCollection,\n createDocsGroupsCollection,\n createDocsKeysCollection,\n createDocsSetsCollection,\n createDocsTrustedCollection,\n createNoncesCollection,\n createSyncRunsCollection,\n} from './collections/index.js'\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n DEFAULT_MAX_BODY_BYTES,\n DEFAULT_PAGES_BRIDGE_FIELD,\n DEFAULT_PAGES_COLLECTION_SLUG,\n DEFAULT_PAGES_ROUTE_FIELD,\n} from './constants.js'\nimport { createSyncEndpoint } from './endpoints/index.js'\n\ntype ResolvedCollectionOptions = {\n docsCollectionSlug: string\n docsEnabled: boolean\n docsGroupsCollectionSlug: string\n docsGroupsEnabled: boolean\n docsKeysCollectionSlug: string\n docsKeysEnabled: boolean\n docsSetsCollectionSlug: string\n docsSetsEnabled: boolean\n docsTrustedCollectionSlug: string\n docsTrustedEnabled: boolean\n enableDrafts: boolean\n markdownFieldName: string\n noncesCollectionSlug: string\n noncesEnabled: boolean\n syncRunsCollectionSlug: string\n syncRunsEnabled: boolean\n}\n\nconst normalizeEndpointPath = (path: string): string => {\n const normalized = `/${path.trim()}`.replace(/\\/+/g, '/')\n\n return normalized.length > 1 ? normalized.replace(/\\/+$/g, '') : normalized\n}\n\nconst resolveCollectionOptions = (\n pluginOptions: PayloadMarkdownDocsConfig,\n): ResolvedCollectionOptions => {\n if (\n pluginOptions.target?.type !== undefined &&\n pluginOptions.target.type !== 'docsCollection'\n ) {\n throw new Error(\n 'payloadMarkdownDocs: target.type only supports \"docsCollection\". existingCollection is not supported.',\n )\n }\n\n const docsSlugFromTarget = pluginOptions.target?.slug\n const docsSlugFromCollections = pluginOptions.collections?.docs?.slug\n\n if (\n docsSlugFromTarget &&\n docsSlugFromCollections &&\n docsSlugFromTarget !== docsSlugFromCollections\n ) {\n throw new Error(\n 'payloadMarkdownDocs: target.slug and collections.docs.slug must match when both are provided.',\n )\n }\n\n return {\n docsCollectionSlug:\n docsSlugFromTarget ?? docsSlugFromCollections ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsEnabled: pluginOptions.collections?.docs?.enabled !== false,\n docsGroupsCollectionSlug:\n pluginOptions.collections?.docsGroups?.slug ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsGroupsEnabled: pluginOptions.collections?.docsGroups?.enabled !== false,\n docsKeysCollectionSlug:\n pluginOptions.collections?.docsKeys?.slug ?? DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n docsKeysEnabled: pluginOptions.collections?.docsKeys?.enabled !== false,\n docsSetsCollectionSlug:\n pluginOptions.collections?.docsSets?.slug ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n docsSetsEnabled: pluginOptions.collections?.docsSets?.enabled !== false,\n docsTrustedCollectionSlug:\n pluginOptions.collections?.docsTrusted?.slug ?? DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n docsTrustedEnabled: pluginOptions.collections?.docsTrusted?.enabled !== false,\n enableDrafts:\n pluginOptions.target?.enableDrafts === true,\n markdownFieldName:\n pluginOptions.target?.markdownField ?? DEFAULT_MARKDOWN_FIELD_NAME,\n noncesCollectionSlug:\n pluginOptions.collections?.nonces?.slug ?? DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n noncesEnabled: pluginOptions.collections?.nonces?.enabled !== false,\n syncRunsCollectionSlug:\n pluginOptions.collections?.syncRuns?.slug ?? DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n syncRunsEnabled: pluginOptions.collections?.syncRuns?.enabled !== false,\n }\n}\n\nconst assertCollectionOptionCompatibility = ({\n docsGroupsEnabled,\n docsSetsEnabled,\n}: ResolvedCollectionOptions) => {\n if (docsSetsEnabled && !docsGroupsEnabled) {\n throw new Error(\n 'payloadMarkdownDocs: collections.docsSets requires collections.docsGroups to be enabled.',\n )\n }\n}\n\nconst assertNoCollectionSlugConflicts = (\n incomingConfig: Config,\n collectionSlugsToAdd: string[],\n) => {\n const duplicateRequestedSlug = collectionSlugsToAdd.find(\n (slug, index) => collectionSlugsToAdd.indexOf(slug) !== index,\n )\n\n if (duplicateRequestedSlug) {\n throw new Error(\n `payloadMarkdownDocs: collection slug \"${duplicateRequestedSlug}\" is configured more than once.`,\n )\n }\n\n const existingCollectionSlugs = new Set(\n incomingConfig.collections?.map((collection) => collection.slug) ?? [],\n )\n\n const conflictingSlug = collectionSlugsToAdd.find((slug) =>\n existingCollectionSlugs.has(slug),\n )\n\n if (conflictingSlug) {\n throw new Error(\n `payloadMarkdownDocs: collection slug \"${conflictingSlug}\" already exists in the Payload config.`,\n )\n }\n}\n\nexport const payloadMarkdownDocs =\n (pluginOptions: PayloadMarkdownDocsConfig = {}): Plugin =>\n (incomingConfig: Config): Config => {\n if (pluginOptions.enabled === false) {\n return incomingConfig\n }\n\n const {\n docsCollectionSlug,\n docsEnabled,\n docsGroupsCollectionSlug,\n docsGroupsEnabled,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n enableDrafts,\n markdownFieldName,\n noncesCollectionSlug,\n noncesEnabled,\n syncRunsCollectionSlug,\n syncRunsEnabled,\n } = resolveCollectionOptions(pluginOptions)\n assertCollectionOptionCompatibility({\n docsCollectionSlug,\n docsEnabled,\n docsGroupsCollectionSlug,\n docsGroupsEnabled,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n enableDrafts,\n markdownFieldName,\n noncesCollectionSlug,\n noncesEnabled,\n syncRunsCollectionSlug,\n syncRunsEnabled,\n })\n const endpointPath = normalizeEndpointPath(\n pluginOptions.endpoint?.path ?? DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n )\n\n const collectionSlugsToAdd = [\n ...(docsGroupsEnabled ? [docsGroupsCollectionSlug] : []),\n ...(docsSetsEnabled ? [docsSetsCollectionSlug] : []),\n ...(docsKeysEnabled ? [docsKeysCollectionSlug] : []),\n ...(docsTrustedEnabled ? [docsTrustedCollectionSlug] : []),\n ...(docsEnabled ? [docsCollectionSlug] : []),\n ...(syncRunsEnabled ? [syncRunsCollectionSlug] : []),\n ...(noncesEnabled ? [noncesCollectionSlug] : []),\n ]\n\n assertNoCollectionSlugConflicts(incomingConfig, collectionSlugsToAdd)\n\n const addedCollections = [\n ...(docsGroupsEnabled\n ? [\n createDocsGroupsCollection({\n slug: docsGroupsCollectionSlug,\n }),\n ]\n : []),\n ...(docsSetsEnabled\n ? [\n createDocsSetsCollection({\n slug: docsSetsCollectionSlug,\n allowPublish: pluginOptions.sync?.allowPublish === true,\n docsCollectionSlug: docsEnabled ? docsCollectionSlug : undefined,\n docsEnableDrafts: enableDrafts,\n docsGroupsCollectionSlug,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ...(docsKeysEnabled\n ? [\n createDocsKeysCollection({\n slug: docsKeysCollectionSlug,\n }),\n ]\n : []),\n ...(docsTrustedEnabled\n ? [\n createDocsTrustedCollection({\n slug: docsTrustedCollectionSlug,\n }),\n ]\n : []),\n ...(docsEnabled\n ? [\n createDocsCollection({\n slug: docsCollectionSlug,\n docsSetsCollectionSlug: docsSetsEnabled\n ? docsSetsCollectionSlug\n : undefined,\n enableDrafts,\n markdownFieldName,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ...(syncRunsEnabled\n ? [\n createSyncRunsCollection({\n slug: syncRunsCollectionSlug,\n }),\n ]\n : []),\n ...(noncesEnabled\n ? [\n createNoncesCollection({\n slug: noncesCollectionSlug,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ]\n\n return {\n ...incomingConfig,\n collections: [...(incomingConfig.collections ?? []), ...addedCollections],\n endpoints: [\n ...(incomingConfig.endpoints ?? []),\n createSyncEndpoint({\n allowHardDelete: pluginOptions.sync?.allowHardDelete,\n allowPublish: pluginOptions.sync?.allowPublish,\n allowWrites: pluginOptions.sync?.allowWrites,\n auth: pluginOptions.auth,\n defaultPublishMode: pluginOptions.sync?.defaultPublishMode,\n deleteBehavior: pluginOptions.sync?.deleteBehavior,\n docsCollectionSlug,\n docsEnabled,\n docsEnableDrafts: enableDrafts,\n docsGroupsCollectionSlug,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n endpointPath,\n markdownFieldName,\n maxBodyBytes: pluginOptions.endpoint?.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES,\n noncesCollectionSlug,\n noncesEnabled,\n requireDryRunBeforeApply: pluginOptions.sync?.requireDryRunBeforeApply,\n routing: {\n pages: {\n allowBridgePages:\n pluginOptions.routing?.pages?.allowBridgePages ?? true,\n bridgeField:\n pluginOptions.routing?.pages?.bridgeField ?? DEFAULT_PAGES_BRIDGE_FIELD,\n collection:\n pluginOptions.routing?.pages?.collection ?? DEFAULT_PAGES_COLLECTION_SLUG,\n enabled: pluginOptions.routing?.pages?.enabled === true,\n routeField:\n pluginOptions.routing?.pages?.routeField ?? DEFAULT_PAGES_ROUTE_FIELD,\n },\n },\n syncRunsCollectionSlug,\n syncRunsEnabled,\n }),\n ],\n }\n }\n"],"names":["createDocsCollection","createDocsGroupsCollection","createDocsKeysCollection","createDocsSetsCollection","createDocsTrustedCollection","createNoncesCollection","createSyncRunsCollection","DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","DEFAULT_MAX_BODY_BYTES","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","createSyncEndpoint","normalizeEndpointPath","path","normalized","trim","replace","length","resolveCollectionOptions","pluginOptions","target","type","undefined","Error","docsSlugFromTarget","slug","docsSlugFromCollections","collections","docs","docsCollectionSlug","docsEnabled","enabled","docsGroupsCollectionSlug","docsGroups","docsGroupsEnabled","docsKeysCollectionSlug","docsKeys","docsKeysEnabled","docsSetsCollectionSlug","docsSets","docsSetsEnabled","docsTrustedCollectionSlug","docsTrusted","docsTrustedEnabled","enableDrafts","markdownFieldName","markdownField","noncesCollectionSlug","nonces","noncesEnabled","syncRunsCollectionSlug","syncRuns","syncRunsEnabled","assertCollectionOptionCompatibility","assertNoCollectionSlugConflicts","incomingConfig","collectionSlugsToAdd","duplicateRequestedSlug","find","index","indexOf","existingCollectionSlugs","Set","map","collection","conflictingSlug","has","payloadMarkdownDocs","endpointPath","endpoint","addedCollections","allowPublish","sync","docsEnableDrafts","endpoints","allowHardDelete","allowWrites","auth","defaultPublishMode","deleteBehavior","maxBodyBytes","requireDryRunBeforeApply","routing","pages","allowBridgePages","bridgeField","routeField"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config, Plugin } from 'payload'\n\nimport type { PayloadMarkdownDocsConfig } from './types.js'\n\nimport {\n createDocsCollection,\n createDocsGroupsCollection,\n createDocsKeysCollection,\n createDocsSetsCollection,\n createDocsTrustedCollection,\n createNoncesCollection,\n createSyncRunsCollection,\n} from './collections/index.js'\nimport {\n DEFAULT_DOCS_COLLECTION_SLUG,\n DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n DEFAULT_MARKDOWN_FIELD_NAME,\n DEFAULT_MAX_BODY_BYTES,\n DEFAULT_MEDIA_COLLECTION_SLUG,\n DEFAULT_PAGES_BRIDGE_FIELD,\n DEFAULT_PAGES_COLLECTION_SLUG,\n DEFAULT_PAGES_ROUTE_FIELD,\n} from './constants.js'\nimport { createSyncEndpoint } from './endpoints/index.js'\n\ntype ResolvedCollectionOptions = {\n docsCollectionSlug: string\n docsEnabled: boolean\n docsGroupsCollectionSlug: string\n docsGroupsEnabled: boolean\n docsKeysCollectionSlug: string\n docsKeysEnabled: boolean\n docsSetsCollectionSlug: string\n docsSetsEnabled: boolean\n docsTrustedCollectionSlug: string\n docsTrustedEnabled: boolean\n enableDrafts: boolean\n heroImageMediaCollectionSlugs?: string[]\n markdownFieldName: string\n noncesCollectionSlug: string\n noncesEnabled: boolean\n syncRunsCollectionSlug: string\n syncRunsEnabled: boolean\n}\n\nconst normalizeEndpointPath = (path: string): string => {\n const normalized = `/${path.trim()}`.replace(/\\/+/g, '/')\n\n return normalized.length > 1 ? normalized.replace(/\\/+$/g, '') : normalized\n}\n\nconst resolveHeroImageMediaCollectionSlugs = (\n pluginOptions: PayloadMarkdownDocsConfig,\n): string[] | undefined => {\n if (pluginOptions.target?.heroImage === false) {\n return undefined\n }\n\n const additionalMediaCollections =\n typeof pluginOptions.target?.heroImage === 'object'\n ? (pluginOptions.target.heroImage.additionalMediaCollections ?? [])\n : []\n\n return [\n ...new Set([\n DEFAULT_MEDIA_COLLECTION_SLUG,\n ...additionalMediaCollections.map((slug) => slug.trim()).filter(Boolean),\n ]),\n ]\n}\n\nconst resolveCollectionOptions = (\n pluginOptions: PayloadMarkdownDocsConfig,\n): ResolvedCollectionOptions => {\n if (pluginOptions.target?.type !== undefined && pluginOptions.target.type !== 'docsCollection') {\n throw new Error(\n 'payloadMarkdownDocs: target.type only supports \"docsCollection\". existingCollection is not supported.',\n )\n }\n\n const docsSlugFromTarget = pluginOptions.target?.slug\n const docsSlugFromCollections = pluginOptions.collections?.docs?.slug\n\n if (\n docsSlugFromTarget &&\n docsSlugFromCollections &&\n docsSlugFromTarget !== docsSlugFromCollections\n ) {\n throw new Error(\n 'payloadMarkdownDocs: target.slug and collections.docs.slug must match when both are provided.',\n )\n }\n\n return {\n docsCollectionSlug:\n docsSlugFromTarget ?? docsSlugFromCollections ?? DEFAULT_DOCS_COLLECTION_SLUG,\n docsEnabled: pluginOptions.collections?.docs?.enabled !== false,\n docsGroupsCollectionSlug:\n pluginOptions.collections?.docsGroups?.slug ?? DEFAULT_DOCS_GROUPS_COLLECTION_SLUG,\n docsGroupsEnabled: pluginOptions.collections?.docsGroups?.enabled !== false,\n docsKeysCollectionSlug:\n pluginOptions.collections?.docsKeys?.slug ?? DEFAULT_DOCS_KEYS_COLLECTION_SLUG,\n docsKeysEnabled: pluginOptions.collections?.docsKeys?.enabled !== false,\n docsSetsCollectionSlug:\n pluginOptions.collections?.docsSets?.slug ?? DEFAULT_DOCS_SETS_COLLECTION_SLUG,\n docsSetsEnabled: pluginOptions.collections?.docsSets?.enabled !== false,\n docsTrustedCollectionSlug:\n pluginOptions.collections?.docsTrusted?.slug ?? DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG,\n docsTrustedEnabled: pluginOptions.collections?.docsTrusted?.enabled !== false,\n enableDrafts: pluginOptions.target?.enableDrafts === true,\n heroImageMediaCollectionSlugs: resolveHeroImageMediaCollectionSlugs(pluginOptions),\n markdownFieldName: pluginOptions.target?.markdownField ?? DEFAULT_MARKDOWN_FIELD_NAME,\n noncesCollectionSlug:\n pluginOptions.collections?.nonces?.slug ?? DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG,\n noncesEnabled: pluginOptions.collections?.nonces?.enabled !== false,\n syncRunsCollectionSlug:\n pluginOptions.collections?.syncRuns?.slug ?? DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG,\n syncRunsEnabled: pluginOptions.collections?.syncRuns?.enabled !== false,\n }\n}\n\nconst assertCollectionOptionCompatibility = ({\n docsGroupsEnabled,\n docsSetsEnabled,\n}: ResolvedCollectionOptions) => {\n if (docsSetsEnabled && !docsGroupsEnabled) {\n throw new Error(\n 'payloadMarkdownDocs: collections.docsSets requires collections.docsGroups to be enabled.',\n )\n }\n}\n\nconst assertNoCollectionSlugConflicts = (\n incomingConfig: Config,\n collectionSlugsToAdd: string[],\n) => {\n const duplicateRequestedSlug = collectionSlugsToAdd.find(\n (slug, index) => collectionSlugsToAdd.indexOf(slug) !== index,\n )\n\n if (duplicateRequestedSlug) {\n throw new Error(\n `payloadMarkdownDocs: collection slug \"${duplicateRequestedSlug}\" is configured more than once.`,\n )\n }\n\n const existingCollectionSlugs = new Set(\n incomingConfig.collections?.map((collection) => collection.slug) ?? [],\n )\n\n const conflictingSlug = collectionSlugsToAdd.find((slug) => existingCollectionSlugs.has(slug))\n\n if (conflictingSlug) {\n throw new Error(\n `payloadMarkdownDocs: collection slug \"${conflictingSlug}\" already exists in the Payload config.`,\n )\n }\n}\n\nexport const payloadMarkdownDocs =\n (pluginOptions: PayloadMarkdownDocsConfig = {}): Plugin =>\n (incomingConfig: Config): Config => {\n if (pluginOptions.enabled === false) {\n return incomingConfig\n }\n\n const {\n docsCollectionSlug,\n docsEnabled,\n docsGroupsCollectionSlug,\n docsGroupsEnabled,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n enableDrafts,\n heroImageMediaCollectionSlugs,\n markdownFieldName,\n noncesCollectionSlug,\n noncesEnabled,\n syncRunsCollectionSlug,\n syncRunsEnabled,\n } = resolveCollectionOptions(pluginOptions)\n assertCollectionOptionCompatibility({\n docsCollectionSlug,\n docsEnabled,\n docsGroupsCollectionSlug,\n docsGroupsEnabled,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n enableDrafts,\n heroImageMediaCollectionSlugs,\n markdownFieldName,\n noncesCollectionSlug,\n noncesEnabled,\n syncRunsCollectionSlug,\n syncRunsEnabled,\n })\n const endpointPath = normalizeEndpointPath(\n pluginOptions.endpoint?.path ?? DEFAULT_DOCS_SYNC_ENDPOINT_PATH,\n )\n\n const collectionSlugsToAdd = [\n ...(docsGroupsEnabled ? [docsGroupsCollectionSlug] : []),\n ...(docsSetsEnabled ? [docsSetsCollectionSlug] : []),\n ...(docsKeysEnabled ? [docsKeysCollectionSlug] : []),\n ...(docsTrustedEnabled ? [docsTrustedCollectionSlug] : []),\n ...(docsEnabled ? [docsCollectionSlug] : []),\n ...(syncRunsEnabled ? [syncRunsCollectionSlug] : []),\n ...(noncesEnabled ? [noncesCollectionSlug] : []),\n ]\n\n assertNoCollectionSlugConflicts(incomingConfig, collectionSlugsToAdd)\n\n const addedCollections = [\n ...(docsGroupsEnabled\n ? [\n createDocsGroupsCollection({\n slug: docsGroupsCollectionSlug,\n }),\n ]\n : []),\n ...(docsSetsEnabled\n ? [\n createDocsSetsCollection({\n slug: docsSetsCollectionSlug,\n allowPublish: pluginOptions.sync?.allowPublish === true,\n docsCollectionSlug: docsEnabled ? docsCollectionSlug : undefined,\n docsEnableDrafts: enableDrafts,\n docsGroupsCollectionSlug,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ...(docsKeysEnabled\n ? [\n createDocsKeysCollection({\n slug: docsKeysCollectionSlug,\n }),\n ]\n : []),\n ...(docsTrustedEnabled\n ? [\n createDocsTrustedCollection({\n slug: docsTrustedCollectionSlug,\n }),\n ]\n : []),\n ...(docsEnabled\n ? [\n createDocsCollection({\n slug: docsCollectionSlug,\n docsSetsCollectionSlug: docsSetsEnabled ? docsSetsCollectionSlug : undefined,\n enableDrafts,\n heroImageMediaCollectionSlugs,\n markdownFieldName,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ...(syncRunsEnabled\n ? [\n createSyncRunsCollection({\n slug: syncRunsCollectionSlug,\n }),\n ]\n : []),\n ...(noncesEnabled\n ? [\n createNoncesCollection({\n slug: noncesCollectionSlug,\n syncRunsCollectionSlug: syncRunsEnabled ? syncRunsCollectionSlug : undefined,\n }),\n ]\n : []),\n ]\n\n return {\n ...incomingConfig,\n collections: [...(incomingConfig.collections ?? []), ...addedCollections],\n endpoints: [\n ...(incomingConfig.endpoints ?? []),\n createSyncEndpoint({\n allowHardDelete: pluginOptions.sync?.allowHardDelete,\n allowPublish: pluginOptions.sync?.allowPublish,\n allowWrites: pluginOptions.sync?.allowWrites,\n auth: pluginOptions.auth,\n defaultPublishMode: pluginOptions.sync?.defaultPublishMode,\n deleteBehavior: pluginOptions.sync?.deleteBehavior,\n docsCollectionSlug,\n docsEnabled,\n docsEnableDrafts: enableDrafts,\n docsGroupsCollectionSlug,\n docsKeysCollectionSlug,\n docsKeysEnabled,\n docsSetsCollectionSlug,\n docsSetsEnabled,\n docsTrustedCollectionSlug,\n docsTrustedEnabled,\n endpointPath,\n markdownFieldName,\n maxBodyBytes: pluginOptions.endpoint?.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES,\n noncesCollectionSlug,\n noncesEnabled,\n requireDryRunBeforeApply: pluginOptions.sync?.requireDryRunBeforeApply,\n routing: {\n pages: {\n allowBridgePages: pluginOptions.routing?.pages?.allowBridgePages ?? true,\n bridgeField: pluginOptions.routing?.pages?.bridgeField ?? DEFAULT_PAGES_BRIDGE_FIELD,\n collection: pluginOptions.routing?.pages?.collection ?? DEFAULT_PAGES_COLLECTION_SLUG,\n enabled: pluginOptions.routing?.pages?.enabled === true,\n routeField: pluginOptions.routing?.pages?.routeField ?? DEFAULT_PAGES_ROUTE_FIELD,\n },\n },\n syncRunsCollectionSlug,\n syncRunsEnabled,\n }),\n ],\n }\n }\n"],"names":["createDocsCollection","createDocsGroupsCollection","createDocsKeysCollection","createDocsSetsCollection","createDocsTrustedCollection","createNoncesCollection","createSyncRunsCollection","DEFAULT_DOCS_COLLECTION_SLUG","DEFAULT_DOCS_GROUPS_COLLECTION_SLUG","DEFAULT_DOCS_KEYS_COLLECTION_SLUG","DEFAULT_DOCS_SETS_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_ENDPOINT_PATH","DEFAULT_DOCS_SYNC_NONCES_COLLECTION_SLUG","DEFAULT_DOCS_SYNC_RUNS_COLLECTION_SLUG","DEFAULT_DOCS_TRUSTED_COLLECTION_SLUG","DEFAULT_MARKDOWN_FIELD_NAME","DEFAULT_MAX_BODY_BYTES","DEFAULT_MEDIA_COLLECTION_SLUG","DEFAULT_PAGES_BRIDGE_FIELD","DEFAULT_PAGES_COLLECTION_SLUG","DEFAULT_PAGES_ROUTE_FIELD","createSyncEndpoint","normalizeEndpointPath","path","normalized","trim","replace","length","resolveHeroImageMediaCollectionSlugs","pluginOptions","target","heroImage","undefined","additionalMediaCollections","Set","map","slug","filter","Boolean","resolveCollectionOptions","type","Error","docsSlugFromTarget","docsSlugFromCollections","collections","docs","docsCollectionSlug","docsEnabled","enabled","docsGroupsCollectionSlug","docsGroups","docsGroupsEnabled","docsKeysCollectionSlug","docsKeys","docsKeysEnabled","docsSetsCollectionSlug","docsSets","docsSetsEnabled","docsTrustedCollectionSlug","docsTrusted","docsTrustedEnabled","enableDrafts","heroImageMediaCollectionSlugs","markdownFieldName","markdownField","noncesCollectionSlug","nonces","noncesEnabled","syncRunsCollectionSlug","syncRuns","syncRunsEnabled","assertCollectionOptionCompatibility","assertNoCollectionSlugConflicts","incomingConfig","collectionSlugsToAdd","duplicateRequestedSlug","find","index","indexOf","existingCollectionSlugs","collection","conflictingSlug","has","payloadMarkdownDocs","endpointPath","endpoint","addedCollections","allowPublish","sync","docsEnableDrafts","endpoints","allowHardDelete","allowWrites","auth","defaultPublishMode","deleteBehavior","maxBodyBytes","requireDryRunBeforeApply","routing","pages","allowBridgePages","bridgeField","routeField"],"mappings":"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"}
@@ -11,6 +11,7 @@ It shows:
11
11
  - draft and published docs
12
12
  - hidden-from-nav docs
13
13
  - docs with overrides
14
+ - hero images on generated docs records
14
15
  - generated docs grouped by source path
15
16
  - links to generated docs records
16
17
  - a publish action for draft generated docs when draft publishing is enabled
package/dist/types.d.ts CHANGED
@@ -45,10 +45,14 @@ export type PayloadMarkdownDocsRoutingConfig = {
45
45
  };
46
46
  export type PayloadMarkdownDocsTargetConfig = {
47
47
  enableDrafts?: boolean;
48
+ heroImage?: false | PayloadMarkdownDocsHeroImageConfig;
48
49
  markdownField?: string;
49
50
  slug?: string;
50
51
  type?: 'docsCollection';
51
52
  };
53
+ export type PayloadMarkdownDocsHeroImageConfig = {
54
+ additionalMediaCollections?: string[];
55
+ };
52
56
  export type PayloadMarkdownDocsSyncConfig = {
53
57
  allowHardDelete?: boolean;
54
58
  allowPublish?: boolean;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export type PayloadMarkdownDocsConfig = {\n auth?: PayloadMarkdownDocsAuthConfig\n collections?: PayloadMarkdownDocsCollectionsConfig\n enabled?: boolean\n endpoint?: PayloadMarkdownDocsEndpointConfig\n routing?: PayloadMarkdownDocsRoutingConfig\n sync?: PayloadMarkdownDocsSyncConfig\n target?: PayloadMarkdownDocsTargetConfig\n}\n\nexport type PayloadMarkdownDocsEndpointConfig = {\n maxBodyBytes?: number\n path?: string\n}\n\nexport type PayloadMarkdownDocsAuthConfig =\n | {\n ed25519?: boolean | PayloadMarkdownDocsAuthToggle\n githubOidc?: boolean | PayloadMarkdownDocsAuthToggle\n }\n | {\n mode: 'disabled'\n }\n\nexport type PayloadMarkdownDocsAuthToggle = {\n enabled?: boolean\n}\n\nexport type PayloadMarkdownDocsCollectionConfig = {\n enabled?: boolean\n slug?: string\n}\n\nexport type PayloadMarkdownDocsCollectionsConfig = {\n docs?: PayloadMarkdownDocsCollectionConfig\n docsGroups?: PayloadMarkdownDocsCollectionConfig\n docsKeys?: PayloadMarkdownDocsCollectionConfig\n docsSets?: PayloadMarkdownDocsCollectionConfig\n docsTrusted?: PayloadMarkdownDocsCollectionConfig\n nonces?: PayloadMarkdownDocsCollectionConfig\n syncRuns?: PayloadMarkdownDocsCollectionConfig\n}\n\nexport type PayloadMarkdownDocsPagesRoutingConfig = {\n allowBridgePages?: boolean\n bridgeField?: string\n collection?: string\n enabled?: boolean\n routeField?: string\n}\n\nexport type PayloadMarkdownDocsRoutingConfig = {\n pages?: PayloadMarkdownDocsPagesRoutingConfig\n}\n\nexport type PayloadMarkdownDocsTargetConfig =\n {\n enableDrafts?: boolean\n markdownField?: string\n slug?: string\n type?: 'docsCollection'\n }\n\nexport type PayloadMarkdownDocsSyncConfig = {\n allowHardDelete?: boolean\n allowPublish?: boolean\n allowWrites?: boolean\n defaultPublishMode?: 'draft' | 'preserve' | 'published'\n deleteBehavior?: 'archive' | 'delete' | 'draft' | 'ignore'\n requireDryRunBeforeApply?: boolean\n}\n"],"names":[],"mappings":"AA+DA,WAOC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export type PayloadMarkdownDocsConfig = {\n auth?: PayloadMarkdownDocsAuthConfig\n collections?: PayloadMarkdownDocsCollectionsConfig\n enabled?: boolean\n endpoint?: PayloadMarkdownDocsEndpointConfig\n routing?: PayloadMarkdownDocsRoutingConfig\n sync?: PayloadMarkdownDocsSyncConfig\n target?: PayloadMarkdownDocsTargetConfig\n}\n\nexport type PayloadMarkdownDocsEndpointConfig = {\n maxBodyBytes?: number\n path?: string\n}\n\nexport type PayloadMarkdownDocsAuthConfig =\n | {\n ed25519?: boolean | PayloadMarkdownDocsAuthToggle\n githubOidc?: boolean | PayloadMarkdownDocsAuthToggle\n }\n | {\n mode: 'disabled'\n }\n\nexport type PayloadMarkdownDocsAuthToggle = {\n enabled?: boolean\n}\n\nexport type PayloadMarkdownDocsCollectionConfig = {\n enabled?: boolean\n slug?: string\n}\n\nexport type PayloadMarkdownDocsCollectionsConfig = {\n docs?: PayloadMarkdownDocsCollectionConfig\n docsGroups?: PayloadMarkdownDocsCollectionConfig\n docsKeys?: PayloadMarkdownDocsCollectionConfig\n docsSets?: PayloadMarkdownDocsCollectionConfig\n docsTrusted?: PayloadMarkdownDocsCollectionConfig\n nonces?: PayloadMarkdownDocsCollectionConfig\n syncRuns?: PayloadMarkdownDocsCollectionConfig\n}\n\nexport type PayloadMarkdownDocsPagesRoutingConfig = {\n allowBridgePages?: boolean\n bridgeField?: string\n collection?: string\n enabled?: boolean\n routeField?: string\n}\n\nexport type PayloadMarkdownDocsRoutingConfig = {\n pages?: PayloadMarkdownDocsPagesRoutingConfig\n}\n\nexport type PayloadMarkdownDocsTargetConfig = {\n enableDrafts?: boolean\n heroImage?: false | PayloadMarkdownDocsHeroImageConfig\n markdownField?: string\n slug?: string\n type?: 'docsCollection'\n}\n\nexport type PayloadMarkdownDocsHeroImageConfig = {\n additionalMediaCollections?: string[]\n}\n\nexport type PayloadMarkdownDocsSyncConfig = {\n allowHardDelete?: boolean\n allowPublish?: boolean\n allowWrites?: boolean\n defaultPublishMode?: 'draft' | 'preserve' | 'published'\n deleteBehavior?: 'archive' | 'delete' | 'draft' | 'ignore'\n requireDryRunBeforeApply?: boolean\n}\n"],"names":[],"mappings":"AAmEA,WAOC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valkyrianlabs/payload-markdown-docs",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Git-backed Markdown documentation sync for Payload CMS, powered by payload-markdown.",
5
5
  "bin": {
6
6
  "payload-markdown-docs": "./dist/cli/index.js"