@payloadcms/plugin-search 3.0.0-beta.9 → 3.0.0-canary.f6e77b8

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.
@@ -1,4 +1,3 @@
1
1
  import type { CollectionAfterDeleteHook } from 'payload/types';
2
- declare const deleteFromSearch: CollectionAfterDeleteHook;
3
- export default deleteFromSearch;
2
+ export declare const deleteFromSearch: CollectionAfterDeleteHook;
4
3
  //# sourceMappingURL=deleteFromSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deleteFromSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAE9D,QAAA,MAAM,gBAAgB,EAAE,yBA2BvB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"deleteFromSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAE9D,eAAO,MAAM,gBAAgB,EAAE,yBA+B9B,CAAA"}
@@ -1,4 +1,4 @@
1
- const deleteFromSearch = async ({ doc, req: { payload }, req })=>{
1
+ export const deleteFromSearch = async ({ doc, req: { payload }, req })=>{
2
2
  try {
3
3
  const searchDocQuery = await payload.find({
4
4
  collection: 'search',
@@ -24,6 +24,5 @@ const deleteFromSearch = async ({ doc, req: { payload }, req })=>{
24
24
  }
25
25
  return doc;
26
26
  };
27
- export default deleteFromSearch;
28
27
 
29
28
  //# sourceMappingURL=deleteFromSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"sourcesContent":["import type { CollectionAfterDeleteHook } from 'payload/types'\n\nconst deleteFromSearch: CollectionAfterDeleteHook = async ({ doc, req: { payload }, req }) => {\n try {\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.value': {\n equals: doc.id,\n },\n },\n })\n\n if (searchDocQuery?.docs?.[0]) {\n await payload.delete({\n id: searchDocQuery?.docs?.[0]?.id,\n collection: 'search',\n req,\n })\n }\n } catch (err: unknown) {\n payload.logger.error({\n err: `Error deleting search doc: ${err}`,\n })\n }\n\n return doc\n}\n\nexport default deleteFromSearch\n"],"names":["deleteFromSearch","doc","req","payload","searchDocQuery","find","collection","depth","where","equals","id","docs","delete","err","logger","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,MAAMA,mBAA8C,OAAO,EAAEC,GAAG,EAAEC,KAAK,EAAEC,OAAO,EAAE,EAAED,GAAG,EAAE;IACvF,IAAI;QACF,MAAME,iBAAiB,MAAMD,QAAQE,IAAI,CAAC;YACxCC,YAAY;YACZC,OAAO;YACPL;YACAM,OAAO;gBACL,aAAa;oBACXC,QAAQR,IAAIS,EAAE;gBAChB;YACF;QACF;QAEA,IAAIN,gBAAgBO,MAAM,CAAC,EAAE,EAAE;YAC7B,MAAMR,QAAQS,MAAM,CAAC;gBACnBF,IAAIN,gBAAgBO,MAAM,CAAC,EAAE,EAAED;gBAC/BJ,YAAY;gBACZJ;YACF;QACF;IACF,EAAE,OAAOW,KAAc;QACrBV,QAAQW,MAAM,CAACC,KAAK,CAAC;YACnBF,KAAK,CAAC,2BAA2B,EAAEA,IAAI,CAAC;QAC1C;IACF;IAEA,OAAOZ;AACT;AAEA,eAAeD,iBAAgB"}
1
+ {"version":3,"sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"sourcesContent":["import type { CollectionAfterDeleteHook } from 'payload/types'\n\nexport const deleteFromSearch: CollectionAfterDeleteHook = async ({\n doc,\n req: { payload },\n req,\n}) => {\n try {\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.value': {\n equals: doc.id,\n },\n },\n })\n\n if (searchDocQuery?.docs?.[0]) {\n await payload.delete({\n id: searchDocQuery?.docs?.[0]?.id,\n collection: 'search',\n req,\n })\n }\n } catch (err: unknown) {\n payload.logger.error({\n err: `Error deleting search doc: ${err}`,\n })\n }\n\n return doc\n}\n"],"names":["deleteFromSearch","doc","req","payload","searchDocQuery","find","collection","depth","where","equals","id","docs","delete","err","logger","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,mBAA8C,OAAO,EAChEC,GAAG,EACHC,KAAK,EAAEC,OAAO,EAAE,EAChBD,GAAG,EACJ;IACC,IAAI;QACF,MAAME,iBAAiB,MAAMD,QAAQE,IAAI,CAAC;YACxCC,YAAY;YACZC,OAAO;YACPL;YACAM,OAAO;gBACL,aAAa;oBACXC,QAAQR,IAAIS,EAAE;gBAChB;YACF;QACF;QAEA,IAAIN,gBAAgBO,MAAM,CAAC,EAAE,EAAE;YAC7B,MAAMR,QAAQS,MAAM,CAAC;gBACnBF,IAAIN,gBAAgBO,MAAM,CAAC,EAAE,EAAED;gBAC/BJ,YAAY;gBACZJ;YACF;QACF;IACF,EAAE,OAAOW,KAAc;QACrBV,QAAQW,MAAM,CAACC,KAAK,CAAC;YACnBF,KAAK,CAAC,2BAA2B,EAAEA,IAAI,CAAC;QAC1C;IACF;IAEA,OAAOZ;AACT,EAAC"}
@@ -1,4 +1,3 @@
1
1
  import type { SyncWithSearch } from '../../types.js';
2
- declare const syncWithSearch: SyncWithSearch;
3
- export default syncWithSearch;
2
+ export declare const syncWithSearch: SyncWithSearch;
4
3
  //# sourceMappingURL=syncWithSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncWithSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/syncWithSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE7E,QAAA,MAAM,cAAc,EAAE,cA8JrB,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"syncWithSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/syncWithSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/D,eAAO,MAAM,cAAc,EAAE,cA6J5B,CAAA"}
@@ -1,9 +1,7 @@
1
- const syncWithSearch = async (args)=>{
2
- const { collection, doc, operation, req: { payload }, req, // @ts-expect-error
3
- searchConfig } = args;
1
+ export const syncWithSearch = async (args)=>{
2
+ const { collection, doc, operation, pluginConfig, req: { payload }, req } = args;
4
3
  const { id, _status: status, title } = doc || {};
5
- const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = searchConfig// todo fix SyncWithSearch type, see note in ./types.ts
6
- ;
4
+ const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = pluginConfig;
7
5
  let dataToSave = {
8
6
  doc: {
9
7
  relationTo: collection,
@@ -133,6 +131,5 @@ const syncWithSearch = async (args)=>{
133
131
  }
134
132
  return doc;
135
133
  };
136
- export default syncWithSearch;
137
134
 
138
135
  //# sourceMappingURL=syncWithSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Search/hooks/syncWithSearch.ts"],"sourcesContent":["import type { DocToSync, SearchConfig, SyncWithSearch } from '../../types.js'\n\nconst syncWithSearch: SyncWithSearch = async (args) => {\n const {\n collection,\n doc,\n operation,\n req: { payload },\n req,\n // @ts-expect-error\n searchConfig,\n } = args\n\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = searchConfig as SearchConfig // todo fix SyncWithSearch type, see note in ./types.ts\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n\n if (typeof beforeSync === 'function') {\n dataToSave = await beforeSync({\n originalDoc: doc,\n payload,\n req,\n searchDoc: dataToSave,\n })\n }\n\n let defaultPriority = 0\n if (defaultPriorities) {\n const { [collection]: priority } = defaultPriorities\n\n if (typeof priority === 'function') {\n try {\n defaultPriority = await priority(doc)\n } catch (err: unknown) {\n payload.logger.error(err)\n payload.logger.error(\n `Error gathering default priority for search documents related to ${collection}`,\n )\n }\n } else {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create') {\n if (doSync) {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n }\n }\n\n if (operation === 'update') {\n try {\n // find the correct doc to sync with\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.value': {\n equals: id,\n },\n },\n })\n\n const docs: Array<{\n id: number | string\n priority?: number\n }> = searchDocQuery?.docs || []\n\n const [foundDoc, ...duplicativeDocs] = docs\n\n // delete all duplicative search docs (docs that reference the same page)\n // to ensure the same, out-of-date result does not appear twice (where only syncing the first found doc)\n if (duplicativeDocs.length > 0) {\n try {\n const duplicativeDocIDs = duplicativeDocs.map(({ id }) => id)\n await payload.delete({\n collection: 'search',\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting duplicative search documents.`)\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: 'search',\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error updating search document.`)\n }\n }\n if (deleteDrafts && status === 'draft') {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: 'search',\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting search document: ${err}`)\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error creating search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(`Error finding search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(\n `Error syncing search document related to ${collection} with id: '${id}': ${err}`,\n )\n }\n\n return doc\n}\n\nexport default syncWithSearch\n"],"names":["syncWithSearch","args","collection","doc","operation","req","payload","searchConfig","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","syncDrafts","dataToSave","relationTo","value","originalDoc","searchDoc","defaultPriority","priority","err","logger","error","doSync","create","data","searchDocQuery","find","depth","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/Search/hooks/syncWithSearch.ts"],"sourcesContent":["import type { DocToSync, SyncWithSearch } from '../../types.js'\n\nexport const syncWithSearch: SyncWithSearch = async (args) => {\n const {\n collection,\n doc,\n operation,\n pluginConfig,\n req: { payload },\n req,\n } = args\n\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, syncDrafts } = pluginConfig\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n\n if (typeof beforeSync === 'function') {\n dataToSave = await beforeSync({\n originalDoc: doc,\n payload,\n req,\n searchDoc: dataToSave,\n })\n }\n\n let defaultPriority = 0\n if (defaultPriorities) {\n const { [collection]: priority } = defaultPriorities\n\n if (typeof priority === 'function') {\n try {\n defaultPriority = await priority(doc)\n } catch (err: unknown) {\n payload.logger.error(err)\n payload.logger.error(\n `Error gathering default priority for search documents related to ${collection}`,\n )\n }\n } else {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create') {\n if (doSync) {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n }\n }\n\n if (operation === 'update') {\n try {\n // find the correct doc to sync with\n const searchDocQuery = await payload.find({\n collection: 'search',\n depth: 0,\n req,\n where: {\n 'doc.value': {\n equals: id,\n },\n },\n })\n\n const docs: Array<{\n id: number | string\n priority?: number\n }> = searchDocQuery?.docs || []\n\n const [foundDoc, ...duplicativeDocs] = docs\n\n // delete all duplicative search docs (docs that reference the same page)\n // to ensure the same, out-of-date result does not appear twice (where only syncing the first found doc)\n if (duplicativeDocs.length > 0) {\n try {\n const duplicativeDocIDs = duplicativeDocs.map(({ id }) => id)\n await payload.delete({\n collection: 'search',\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting duplicative search documents.`)\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: 'search',\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error updating search document.`)\n }\n }\n if (deleteDrafts && status === 'draft') {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: 'search',\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error deleting search document: ${err}`)\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: 'search',\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(`Error creating search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(`Error finding search document: ${err}`)\n }\n }\n } catch (err: unknown) {\n payload.logger.error(\n `Error syncing search document related to ${collection} with id: '${id}': ${err}`,\n )\n }\n\n return doc\n}\n"],"names":["syncWithSearch","args","collection","doc","operation","pluginConfig","req","payload","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","syncDrafts","dataToSave","relationTo","value","originalDoc","searchDoc","defaultPriority","priority","err","logger","error","doSync","create","data","searchDocQuery","find","depth","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { CollectionConfig } from 'payload/types';
2
- import type { SearchConfig } from '../types.js';
3
- export declare const generateSearchCollection: (searchConfig: SearchConfig) => CollectionConfig;
2
+ import type { SearchPluginConfig } from '../types.js';
3
+ export declare const generateSearchCollection: (pluginConfig: SearchPluginConfig) => CollectionConfig;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAIrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,eAAO,MAAM,wBAAwB,iBAAkB,YAAY,KAAG,gBA2DnE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAIrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAKrD,eAAO,MAAM,wBAAwB,iBAAkB,kBAAkB,KAAG,gBA2DzE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import deepMerge from 'deepmerge';
2
2
  import { LinkToDoc } from './ui/index.js';
3
3
  // all settings can be overridden by the config
4
- export const generateSearchCollection = (searchConfig)=>deepMerge({
4
+ export const generateSearchCollection = (pluginConfig)=>deepMerge({
5
5
  slug: 'search',
6
6
  access: {
7
7
  create: ()=>false,
@@ -39,7 +39,7 @@ export const generateSearchCollection = (searchConfig)=>deepMerge({
39
39
  },
40
40
  index: true,
41
41
  maxDepth: 0,
42
- relationTo: searchConfig?.collections || [],
42
+ relationTo: pluginConfig?.collections || [],
43
43
  required: true
44
44
  },
45
45
  {
@@ -57,6 +57,6 @@ export const generateSearchCollection = (searchConfig)=>deepMerge({
57
57
  plural: 'Search Results',
58
58
  singular: 'Search Result'
59
59
  }
60
- }, searchConfig?.searchOverrides || {});
60
+ }, pluginConfig?.searchOverrides || {});
61
61
 
62
62
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Search/index.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport deepMerge from 'deepmerge'\n\nimport type { SearchConfig } from '../types.js'\n\nimport { LinkToDoc } from './ui/index.js'\n\n// all settings can be overridden by the config\nexport const generateSearchCollection = (searchConfig: SearchConfig): CollectionConfig =>\n deepMerge(\n {\n slug: 'search',\n access: {\n create: (): boolean => false,\n read: (): boolean => true,\n },\n admin: {\n defaultColumns: ['title'],\n description:\n 'This is a collection of automatically created search results. These results are used by the global site search and will be updated automatically as documents in the CMS are created or updated.',\n enableRichTextRelationship: false,\n useAsTitle: 'title',\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n admin: {\n readOnly: true,\n },\n },\n {\n name: 'priority',\n type: 'number',\n admin: {\n position: 'sidebar',\n },\n },\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n position: 'sidebar',\n readOnly: true,\n },\n index: true,\n maxDepth: 0,\n relationTo: searchConfig?.collections || [],\n required: true,\n },\n {\n name: 'docUrl',\n type: 'ui',\n admin: {\n components: {\n Field: LinkToDoc,\n },\n position: 'sidebar',\n },\n },\n ],\n labels: {\n plural: 'Search Results',\n singular: 'Search Result',\n },\n },\n searchConfig?.searchOverrides || {},\n )\n"],"names":["deepMerge","LinkToDoc","generateSearchCollection","searchConfig","slug","access","create","read","admin","defaultColumns","description","enableRichTextRelationship","useAsTitle","fields","name","type","readOnly","position","index","maxDepth","relationTo","collections","required","components","Field","labels","plural","singular","searchOverrides"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,eAAe,YAAW;AAIjC,SAASC,SAAS,QAAQ,gBAAe;AAEzC,+CAA+C;AAC/C,OAAO,MAAMC,2BAA2B,CAACC,eACvCH,UACE;QACEI,MAAM;QACNC,QAAQ;YACNC,QAAQ,IAAe;YACvBC,MAAM,IAAe;QACvB;QACAC,OAAO;YACLC,gBAAgB;gBAAC;aAAQ;YACzBC,aACE;YACFC,4BAA4B;YAC5BC,YAAY;QACd;QACAC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLQ,UAAU;gBACZ;YACF;YACA;gBACEF,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLS,UAAU;gBACZ;YACF;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLS,UAAU;oBACVD,UAAU;gBACZ;gBACAE,OAAO;gBACPC,UAAU;gBACVC,YAAYjB,cAAckB,eAAe,EAAE;gBAC3CC,UAAU;YACZ;YACA;gBACER,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLe,YAAY;wBACVC,OAAOvB;oBACT;oBACAgB,UAAU;gBACZ;YACF;SACD;QACDQ,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF,GACAxB,cAAcyB,mBAAmB,CAAC,GACnC"}
1
+ {"version":3,"sources":["../../src/Search/index.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport deepMerge from 'deepmerge'\n\nimport type { SearchPluginConfig } from '../types.js'\n\nimport { LinkToDoc } from './ui/index.js'\n\n// all settings can be overridden by the config\nexport const generateSearchCollection = (pluginConfig: SearchPluginConfig): CollectionConfig =>\n deepMerge(\n {\n slug: 'search',\n access: {\n create: (): boolean => false,\n read: (): boolean => true,\n },\n admin: {\n defaultColumns: ['title'],\n description:\n 'This is a collection of automatically created search results. These results are used by the global site search and will be updated automatically as documents in the CMS are created or updated.',\n enableRichTextRelationship: false,\n useAsTitle: 'title',\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n admin: {\n readOnly: true,\n },\n },\n {\n name: 'priority',\n type: 'number',\n admin: {\n position: 'sidebar',\n },\n },\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n position: 'sidebar',\n readOnly: true,\n },\n index: true,\n maxDepth: 0,\n relationTo: pluginConfig?.collections || [],\n required: true,\n },\n {\n name: 'docUrl',\n type: 'ui',\n admin: {\n components: {\n Field: LinkToDoc,\n },\n position: 'sidebar',\n },\n },\n ],\n labels: {\n plural: 'Search Results',\n singular: 'Search Result',\n },\n },\n pluginConfig?.searchOverrides || {},\n )\n"],"names":["deepMerge","LinkToDoc","generateSearchCollection","pluginConfig","slug","access","create","read","admin","defaultColumns","description","enableRichTextRelationship","useAsTitle","fields","name","type","readOnly","position","index","maxDepth","relationTo","collections","required","components","Field","labels","plural","singular","searchOverrides"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,eAAe,YAAW;AAIjC,SAASC,SAAS,QAAQ,gBAAe;AAEzC,+CAA+C;AAC/C,OAAO,MAAMC,2BAA2B,CAACC,eACvCH,UACE;QACEI,MAAM;QACNC,QAAQ;YACNC,QAAQ,IAAe;YACvBC,MAAM,IAAe;QACvB;QACAC,OAAO;YACLC,gBAAgB;gBAAC;aAAQ;YACzBC,aACE;YACFC,4BAA4B;YAC5BC,YAAY;QACd;QACAC,QAAQ;YACN;gBACEC,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLQ,UAAU;gBACZ;YACF;YACA;gBACEF,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLS,UAAU;gBACZ;YACF;YACA;gBACEH,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLS,UAAU;oBACVD,UAAU;gBACZ;gBACAE,OAAO;gBACPC,UAAU;gBACVC,YAAYjB,cAAckB,eAAe,EAAE;gBAC3CC,UAAU;YACZ;YACA;gBACER,MAAM;gBACNC,MAAM;gBACNP,OAAO;oBACLe,YAAY;wBACVC,OAAOvB;oBACT;oBACAgB,UAAU;gBACZ;YACF;SACD;QACDQ,QAAQ;YACNC,QAAQ;YACRC,UAAU;QACZ;IACF,GACAxB,cAAcyB,mBAAmB,CAAC,GACnC"}
@@ -0,0 +1,2 @@
1
+ export type { BeforeSync, DocToSync, SearchPluginConfig, SyncWithSearch } from '../types.js';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export type { BeforeSync, DocToSync, SearchPluginConfig, SyncWithSearch } from '../types.js'\n"],"names":[],"rangeMappings":"","mappings":"AAAA,WAA4F"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { Config } from 'payload/config';
2
- import type { SearchConfig } from './types.js';
3
- declare const Search: (incomingSearchConfig: SearchConfig) => (config: Config) => Config;
4
- export default Search;
2
+ import type { SearchPluginConfig } from './types.js';
3
+ export declare const searchPlugin: (incomingPluginConfig: SearchPluginConfig) => (config: Config) => Config;
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,QAAA,MAAM,MAAM,yBACa,YAAY,cAC1B,MAAM,KAAG,MAoDjB,CAAA;AAEH,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,eAAO,MAAM,YAAY,yBACA,kBAAkB,cAChC,MAAM,KAAG,MAoDjB,CAAA"}
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
- import deleteFromSearch from './Search/hooks/deleteFromSearch.js';
2
- import syncWithSearch from './Search/hooks/syncWithSearch.js';
1
+ import { deleteFromSearch } from './Search/hooks/deleteFromSearch.js';
2
+ import { syncWithSearch } from './Search/hooks/syncWithSearch.js';
3
3
  import { generateSearchCollection } from './Search/index.js';
4
- const Search = (incomingSearchConfig)=>(config)=>{
4
+ export const searchPlugin = (incomingPluginConfig)=>(config)=>{
5
5
  const { collections } = config;
6
6
  if (collections) {
7
- const searchConfig = {
8
- ...incomingSearchConfig,
7
+ const pluginConfig = {
8
+ ...incomingPluginConfig,
9
9
  deleteDrafts: true,
10
10
  syncDrafts: false
11
11
  };
12
12
  // add afterChange and afterDelete hooks to every search-enabled collection
13
13
  const collectionsWithSearchHooks = config?.collections?.map((collection)=>{
14
14
  const { hooks: existingHooks } = collection;
15
- const enabledCollections = searchConfig.collections || [];
15
+ const enabledCollections = pluginConfig.collections || [];
16
16
  const isEnabled = enabledCollections.indexOf(collection.slug) > -1;
17
17
  if (isEnabled) {
18
18
  return {
@@ -25,7 +25,7 @@ const Search = (incomingSearchConfig)=>(config)=>{
25
25
  await syncWithSearch({
26
26
  ...args,
27
27
  collection: collection.slug,
28
- searchConfig
28
+ pluginConfig
29
29
  });
30
30
  }
31
31
  ],
@@ -42,12 +42,11 @@ const Search = (incomingSearchConfig)=>(config)=>{
42
42
  ...config,
43
43
  collections: [
44
44
  ...collectionsWithSearchHooks || [],
45
- generateSearchCollection(searchConfig)
45
+ generateSearchCollection(pluginConfig)
46
46
  ]
47
47
  };
48
48
  }
49
49
  return config;
50
50
  };
51
- export default Search;
52
51
 
53
52
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config } from 'payload/config'\n\nimport type { SearchConfig } from './types.js'\n\nimport deleteFromSearch from './Search/hooks/deleteFromSearch.js'\nimport syncWithSearch from './Search/hooks/syncWithSearch.js'\nimport { generateSearchCollection } from './Search/index.js'\n\nconst Search =\n (incomingSearchConfig: SearchConfig) =>\n (config: Config): Config => {\n const { collections } = config\n\n if (collections) {\n const searchConfig: SearchConfig = {\n ...incomingSearchConfig,\n deleteDrafts: true,\n syncDrafts: false,\n // write any config defaults here\n }\n\n // add afterChange and afterDelete hooks to every search-enabled collection\n const collectionsWithSearchHooks = config?.collections\n ?.map((collection) => {\n const { hooks: existingHooks } = collection\n\n const enabledCollections = searchConfig.collections || []\n const isEnabled = enabledCollections.indexOf(collection.slug) > -1\n if (isEnabled) {\n return {\n ...collection,\n hooks: {\n ...collection.hooks,\n afterChange: [\n ...(existingHooks?.afterChange || []),\n async (args: any) => {\n await syncWithSearch({\n ...args,\n collection: collection.slug,\n searchConfig,\n })\n },\n ],\n afterDelete: [...(existingHooks?.afterDelete || []), deleteFromSearch],\n },\n }\n }\n\n return collection\n })\n .filter(Boolean)\n\n return {\n ...config,\n collections: [\n ...(collectionsWithSearchHooks || []),\n generateSearchCollection(searchConfig),\n ],\n }\n }\n\n return config\n }\n\nexport default Search\n"],"names":["deleteFromSearch","syncWithSearch","generateSearchCollection","Search","incomingSearchConfig","config","collections","searchConfig","deleteDrafts","syncDrafts","collectionsWithSearchHooks","map","collection","hooks","existingHooks","enabledCollections","isEnabled","indexOf","slug","afterChange","args","afterDelete","filter","Boolean"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,OAAOA,sBAAsB,qCAAoC;AACjE,OAAOC,oBAAoB,mCAAkC;AAC7D,SAASC,wBAAwB,QAAQ,oBAAmB;AAE5D,MAAMC,SACJ,CAACC,uBACD,CAACC;QACC,MAAM,EAAEC,WAAW,EAAE,GAAGD;QAExB,IAAIC,aAAa;YACf,MAAMC,eAA6B;gBACjC,GAAGH,oBAAoB;gBACvBI,cAAc;gBACdC,YAAY;YAEd;YAEA,2EAA2E;YAC3E,MAAMC,6BAA6BL,QAAQC,aACvCK,IAAI,CAACC;gBACL,MAAM,EAAEC,OAAOC,aAAa,EAAE,GAAGF;gBAEjC,MAAMG,qBAAqBR,aAAaD,WAAW,IAAI,EAAE;gBACzD,MAAMU,YAAYD,mBAAmBE,OAAO,CAACL,WAAWM,IAAI,IAAI,CAAC;gBACjE,IAAIF,WAAW;oBACb,OAAO;wBACL,GAAGJ,UAAU;wBACbC,OAAO;4BACL,GAAGD,WAAWC,KAAK;4BACnBM,aAAa;mCACPL,eAAeK,eAAe,EAAE;gCACpC,OAAOC;oCACL,MAAMnB,eAAe;wCACnB,GAAGmB,IAAI;wCACPR,YAAYA,WAAWM,IAAI;wCAC3BX;oCACF;gCACF;6BACD;4BACDc,aAAa;mCAAKP,eAAeO,eAAe,EAAE;gCAAGrB;6BAAiB;wBACxE;oBACF;gBACF;gBAEA,OAAOY;YACT,GACCU,OAAOC;YAEV,OAAO;gBACL,GAAGlB,MAAM;gBACTC,aAAa;uBACPI,8BAA8B,EAAE;oBACpCR,yBAAyBK;iBAC1B;YACH;QACF;QAEA,OAAOF;IACT;AAEF,eAAeF,OAAM"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config } from 'payload/config'\n\nimport type { SearchPluginConfig } from './types.js'\n\nimport { deleteFromSearch } from './Search/hooks/deleteFromSearch.js'\nimport { syncWithSearch } from './Search/hooks/syncWithSearch.js'\nimport { generateSearchCollection } from './Search/index.js'\n\nexport const searchPlugin =\n (incomingPluginConfig: SearchPluginConfig) =>\n (config: Config): Config => {\n const { collections } = config\n\n if (collections) {\n const pluginConfig: SearchPluginConfig = {\n ...incomingPluginConfig,\n deleteDrafts: true,\n syncDrafts: false,\n // write any config defaults here\n }\n\n // add afterChange and afterDelete hooks to every search-enabled collection\n const collectionsWithSearchHooks = config?.collections\n ?.map((collection) => {\n const { hooks: existingHooks } = collection\n\n const enabledCollections = pluginConfig.collections || []\n const isEnabled = enabledCollections.indexOf(collection.slug) > -1\n if (isEnabled) {\n return {\n ...collection,\n hooks: {\n ...collection.hooks,\n afterChange: [\n ...(existingHooks?.afterChange || []),\n async (args: any) => {\n await syncWithSearch({\n ...args,\n collection: collection.slug,\n pluginConfig,\n })\n },\n ],\n afterDelete: [...(existingHooks?.afterDelete || []), deleteFromSearch],\n },\n }\n }\n\n return collection\n })\n .filter(Boolean)\n\n return {\n ...config,\n collections: [\n ...(collectionsWithSearchHooks || []),\n generateSearchCollection(pluginConfig),\n ],\n }\n }\n\n return config\n }\n"],"names":["deleteFromSearch","syncWithSearch","generateSearchCollection","searchPlugin","incomingPluginConfig","config","collections","pluginConfig","deleteDrafts","syncDrafts","collectionsWithSearchHooks","map","collection","hooks","existingHooks","enabledCollections","isEnabled","indexOf","slug","afterChange","args","afterDelete","filter","Boolean"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,wBAAwB,QAAQ,oBAAmB;AAE5D,OAAO,MAAMC,eACX,CAACC,uBACD,CAACC;QACC,MAAM,EAAEC,WAAW,EAAE,GAAGD;QAExB,IAAIC,aAAa;YACf,MAAMC,eAAmC;gBACvC,GAAGH,oBAAoB;gBACvBI,cAAc;gBACdC,YAAY;YAEd;YAEA,2EAA2E;YAC3E,MAAMC,6BAA6BL,QAAQC,aACvCK,IAAI,CAACC;gBACL,MAAM,EAAEC,OAAOC,aAAa,EAAE,GAAGF;gBAEjC,MAAMG,qBAAqBR,aAAaD,WAAW,IAAI,EAAE;gBACzD,MAAMU,YAAYD,mBAAmBE,OAAO,CAACL,WAAWM,IAAI,IAAI,CAAC;gBACjE,IAAIF,WAAW;oBACb,OAAO;wBACL,GAAGJ,UAAU;wBACbC,OAAO;4BACL,GAAGD,WAAWC,KAAK;4BACnBM,aAAa;mCACPL,eAAeK,eAAe,EAAE;gCACpC,OAAOC;oCACL,MAAMnB,eAAe;wCACnB,GAAGmB,IAAI;wCACPR,YAAYA,WAAWM,IAAI;wCAC3BX;oCACF;gCACF;6BACD;4BACDc,aAAa;mCAAKP,eAAeO,eAAe,EAAE;gCAAGrB;6BAAiB;wBACxE;oBACF;gBACF;gBAEA,OAAOY;YACT,GACCU,OAAOC;YAEV,OAAO;gBACL,GAAGlB,MAAM;gBACTC,aAAa;uBACPI,8BAA8B,EAAE;oBACpCR,yBAAyBK;iBAC1B;YACH;QACF;QAEA,OAAOF;IACT,EAAC"}
package/dist/types.d.ts CHANGED
@@ -1,22 +1,22 @@
1
1
  import type { Payload } from 'payload';
2
- import type { CollectionAfterChangeHook, CollectionConfig, PayloadRequest } from 'payload/types';
3
- export interface DocToSync {
2
+ import type { CollectionAfterChangeHook, CollectionConfig, PayloadRequestWithData } from 'payload/types';
3
+ export type DocToSync = {
4
4
  [key: string]: any;
5
5
  doc: {
6
6
  relationTo: string;
7
7
  value: string;
8
8
  };
9
9
  title: string;
10
- }
10
+ };
11
11
  export type BeforeSync = (args: {
12
12
  originalDoc: {
13
13
  [key: string]: any;
14
14
  };
15
15
  payload: Payload;
16
- req: PayloadRequest;
16
+ req: PayloadRequestWithData;
17
17
  searchDoc: DocToSync;
18
18
  }) => DocToSync | Promise<DocToSync>;
19
- export interface SearchConfig {
19
+ export type SearchPluginConfig = {
20
20
  beforeSync?: BeforeSync;
21
21
  collections?: string[];
22
22
  defaultPriorities?: {
@@ -25,8 +25,9 @@ export interface SearchConfig {
25
25
  deleteDrafts?: boolean;
26
26
  searchOverrides?: Partial<CollectionConfig>;
27
27
  syncDrafts?: boolean;
28
- }
28
+ };
29
29
  export type SyncWithSearch = (Args: Omit<Parameters<CollectionAfterChangeHook>[0], 'collection'> & {
30
30
  collection: string;
31
+ pluginConfig: SearchPluginConfig;
31
32
  }) => ReturnType<CollectionAfterChangeHook>;
32
33
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEhG,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAClB,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE;IAC9B,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEpC,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE;QAClB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAA;KACxE,CAAA;IACD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAID,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG;IACnE,UAAU,EAAE,MAAM,CAAA;CACnB,KACE,UAAU,CAAC,yBAAyB,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AAEtB,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAClB,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE;IAC9B,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,sBAAsB,CAAA;IAC3B,SAAS,EAAE,SAAS,CAAA;CACrB,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEpC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE;QAClB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAA;KACxE,CAAA;IACD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAID,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG;IACnE,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;CACjC,KACE,UAAU,CAAC,yBAAyB,CAAC,CAAA"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { Payload } from 'payload'\nimport type { CollectionAfterChangeHook, CollectionConfig, PayloadRequest } from 'payload/types'\n\nexport interface DocToSync {\n [key: string]: any\n doc: {\n relationTo: string\n value: string\n }\n title: string\n}\n\nexport type BeforeSync = (args: {\n originalDoc: {\n [key: string]: any\n }\n payload: Payload\n req: PayloadRequest\n searchDoc: DocToSync\n}) => DocToSync | Promise<DocToSync>\n\nexport interface SearchConfig {\n beforeSync?: BeforeSync\n collections?: string[]\n defaultPriorities?: {\n [collection: string]: ((doc: any) => Promise<number> | number) | number\n }\n deleteDrafts?: boolean\n searchOverrides?: Partial<CollectionConfig>\n syncDrafts?: boolean\n}\n\n// Extend the `CollectionAfterChangeHook` with more function args\n// Convert the `collection` arg from `SanitizedCollectionConfig` to a string\nexport type SyncWithSearch = (\n Args: Omit<Parameters<CollectionAfterChangeHook>[0], 'collection'> & {\n collection: string\n },\n) => ReturnType<CollectionAfterChangeHook>\n"],"names":[],"rangeMappings":";;","mappings":"AAgCA,iEAAiE;AACjE,4EAA4E;AAC5E,WAI0C"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { Payload } from 'payload'\nimport type {\n CollectionAfterChangeHook,\n CollectionConfig,\n PayloadRequestWithData,\n} from 'payload/types'\n\nexport type DocToSync = {\n [key: string]: any\n doc: {\n relationTo: string\n value: string\n }\n title: string\n}\n\nexport type BeforeSync = (args: {\n originalDoc: {\n [key: string]: any\n }\n payload: Payload\n req: PayloadRequestWithData\n searchDoc: DocToSync\n}) => DocToSync | Promise<DocToSync>\n\nexport type SearchPluginConfig = {\n beforeSync?: BeforeSync\n collections?: string[]\n defaultPriorities?: {\n [collection: string]: ((doc: any) => Promise<number> | number) | number\n }\n deleteDrafts?: boolean\n searchOverrides?: Partial<CollectionConfig>\n syncDrafts?: boolean\n}\n\n// Extend the `CollectionAfterChangeHook` with more function args\n// Convert the `collection` arg from `SanitizedCollectionConfig` to a string\nexport type SyncWithSearch = (\n Args: Omit<Parameters<CollectionAfterChangeHook>[0], 'collection'> & {\n collection: string\n pluginConfig: SearchPluginConfig\n },\n) => ReturnType<CollectionAfterChangeHook>\n"],"names":[],"rangeMappings":";;","mappings":"AAoCA,iEAAiE;AACjE,4EAA4E;AAC5E,WAK0C"}
package/package.json CHANGED
@@ -1,16 +1,7 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-search",
3
- "version": "3.0.0-beta.9",
4
- "homepage:": "https://payloadcms.com",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/payloadcms/payload.git",
8
- "directory": "packages/plugin-search"
9
- },
3
+ "version": "3.0.0-canary.f6e77b8",
10
4
  "description": "Search plugin for Payload",
11
- "main": "./dist/index.js",
12
- "types": "./dist/index.d.ts",
13
- "type": "module",
14
5
  "keywords": [
15
6
  "payload",
16
7
  "cms",
@@ -20,32 +11,49 @@
20
11
  "search",
21
12
  "algolia"
22
13
  ],
23
- "author": "dev@trbl.design",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/payloadcms/payload.git",
17
+ "directory": "packages/plugin-search"
18
+ },
24
19
  "license": "MIT",
25
- "peerDependencies": {
26
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
27
- "payload": "3.0.0-beta.9"
20
+ "author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
21
+ "type": "module",
22
+ "exports": {
23
+ ".": {
24
+ "import": "./dist/index.js",
25
+ "require": "./dist/index.js",
26
+ "types": "./dist/index.d.ts"
27
+ },
28
+ "./*": {
29
+ "import": "./dist/exports/*.js",
30
+ "require": "./dist/exports/*.js",
31
+ "types": "./dist/exports/*.d.ts"
32
+ }
28
33
  },
34
+ "main": "./dist/index.js",
35
+ "types": "./dist/index.d.ts",
36
+ "files": [
37
+ "dist"
38
+ ],
29
39
  "dependencies": {
30
40
  "deepmerge": "4.3.1",
31
- "@payloadcms/ui": "3.0.0-beta.9"
41
+ "@payloadcms/ui": "3.0.0-canary.f6e77b8"
32
42
  },
33
43
  "devDependencies": {
34
44
  "@types/express": "^4.17.9",
35
45
  "@types/react": "18.2.74",
36
- "react": "^18.0.0",
37
46
  "@payloadcms/eslint-config": "1.1.1",
38
- "payload": "3.0.0-beta.9"
47
+ "payload": "3.0.0-canary.f6e77b8"
48
+ },
49
+ "peerDependencies": {
50
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
51
+ "payload": "3.0.0-canary.f6e77b8"
39
52
  },
40
- "exports": null,
41
53
  "publishConfig": {
42
54
  "registry": "https://registry.npmjs.org/"
43
55
  },
44
- "files": [
45
- "dist",
46
- "types.js",
47
- "types.d.ts"
48
- ],
56
+ "homepage:": "https://payloadcms.com",
49
57
  "scripts": {
50
58
  "build": "pnpm build:swc && pnpm build:types",
51
59
  "build:swc": "swc ./src -d ./dist --config-file .swcrc",
package/src/index.ts DELETED
@@ -1,65 +0,0 @@
1
- import type { Config } from 'payload/config'
2
-
3
- import type { SearchConfig } from './types.js'
4
-
5
- import deleteFromSearch from './Search/hooks/deleteFromSearch.js'
6
- import syncWithSearch from './Search/hooks/syncWithSearch.js'
7
- import { generateSearchCollection } from './Search/index.js'
8
-
9
- const Search =
10
- (incomingSearchConfig: SearchConfig) =>
11
- (config: Config): Config => {
12
- const { collections } = config
13
-
14
- if (collections) {
15
- const searchConfig: SearchConfig = {
16
- ...incomingSearchConfig,
17
- deleteDrafts: true,
18
- syncDrafts: false,
19
- // write any config defaults here
20
- }
21
-
22
- // add afterChange and afterDelete hooks to every search-enabled collection
23
- const collectionsWithSearchHooks = config?.collections
24
- ?.map((collection) => {
25
- const { hooks: existingHooks } = collection
26
-
27
- const enabledCollections = searchConfig.collections || []
28
- const isEnabled = enabledCollections.indexOf(collection.slug) > -1
29
- if (isEnabled) {
30
- return {
31
- ...collection,
32
- hooks: {
33
- ...collection.hooks,
34
- afterChange: [
35
- ...(existingHooks?.afterChange || []),
36
- async (args: any) => {
37
- await syncWithSearch({
38
- ...args,
39
- collection: collection.slug,
40
- searchConfig,
41
- })
42
- },
43
- ],
44
- afterDelete: [...(existingHooks?.afterDelete || []), deleteFromSearch],
45
- },
46
- }
47
- }
48
-
49
- return collection
50
- })
51
- .filter(Boolean)
52
-
53
- return {
54
- ...config,
55
- collections: [
56
- ...(collectionsWithSearchHooks || []),
57
- generateSearchCollection(searchConfig),
58
- ],
59
- }
60
- }
61
-
62
- return config
63
- }
64
-
65
- export default Search
package/types.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './dist/types'
package/types.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./dist/types')