@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.
- package/dist/Search/hooks/deleteFromSearch.d.ts +1 -2
- package/dist/Search/hooks/deleteFromSearch.d.ts.map +1 -1
- package/dist/Search/hooks/deleteFromSearch.js +1 -2
- package/dist/Search/hooks/deleteFromSearch.js.map +1 -1
- package/dist/Search/hooks/syncWithSearch.d.ts +1 -2
- package/dist/Search/hooks/syncWithSearch.d.ts.map +1 -1
- package/dist/Search/hooks/syncWithSearch.js +3 -6
- package/dist/Search/hooks/syncWithSearch.js.map +1 -1
- package/dist/Search/index.d.ts +2 -2
- package/dist/Search/index.d.ts.map +1 -1
- package/dist/Search/index.js +3 -3
- package/dist/Search/index.js.map +1 -1
- package/dist/exports/types.d.ts +2 -0
- package/dist/exports/types.d.ts.map +1 -0
- package/dist/exports/types.js +3 -0
- package/dist/exports/types.js.map +1 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +7 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +31 -23
- package/src/index.ts +0 -65
- package/types.d.ts +0 -1
- package/types.js +0 -1
|
@@ -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,
|
|
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\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncWithSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/syncWithSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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
|
|
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 } =
|
|
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,
|
|
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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"}
|
package/dist/Search/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload/types';
|
|
2
|
-
import type {
|
|
3
|
-
export declare const generateSearchCollection: (
|
|
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,
|
|
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"}
|
package/dist/Search/index.js
CHANGED
|
@@ -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 = (
|
|
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:
|
|
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
|
-
},
|
|
60
|
+
}, pluginConfig?.searchOverrides || {});
|
|
61
61
|
|
|
62
62
|
//# sourceMappingURL=index.js.map
|
package/dist/Search/index.js.map
CHANGED
|
@@ -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 {
|
|
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 @@
|
|
|
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 @@
|
|
|
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 {
|
|
3
|
-
declare const
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
4
|
+
export const searchPlugin = (incomingPluginConfig)=>(config)=>{
|
|
5
5
|
const { collections } = config;
|
|
6
6
|
if (collections) {
|
|
7
|
-
const
|
|
8
|
-
...
|
|
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 =
|
|
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
|
-
|
|
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(
|
|
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 {
|
|
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,
|
|
3
|
-
export
|
|
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:
|
|
16
|
+
req: PayloadRequestWithData;
|
|
17
17
|
searchDoc: DocToSync;
|
|
18
18
|
}) => DocToSync | Promise<DocToSync>;
|
|
19
|
-
export
|
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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-
|
|
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
|
-
"
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/payloadcms/payload.git",
|
|
17
|
+
"directory": "packages/plugin-search"
|
|
18
|
+
},
|
|
24
19
|
"license": "MIT",
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
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-
|
|
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-
|
|
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
|
-
"
|
|
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')
|