@payloadcms/plugin-search 4.0.0-canary.36 → 4.0.0-canary.37
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.map +1 -1
- package/dist/Search/hooks/deleteFromSearch.js +1 -0
- package/dist/Search/hooks/deleteFromSearch.js.map +1 -1
- package/dist/utilities/syncDocAsSearchIndex.d.ts.map +1 -1
- package/dist/utilities/syncDocAsSearchIndex.js +9 -0
- package/dist/utilities/syncDocAsSearchIndex.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteFromSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"deleteFromSearch.d.ts","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,eAAO,MAAM,gBAAgB,EAAE,gBA0B5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"sourcesContent":["import type { DeleteFromSearch } from '../../types.js'\n\nexport const deleteFromSearch: DeleteFromSearch =\n (pluginConfig) =>\n async ({ id, collection, req: { payload }, req }) => {\n const searchSlug = pluginConfig?.searchOverrides?.slug || 'search'\n\n try {\n await payload.delete({\n collection: searchSlug,\n depth: 0,\n req,\n where: {\n 'doc.relationTo': {\n equals: collection.slug,\n },\n 'doc.value': {\n equals: id,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting ${searchSlug} doc.`,\n })\n }\n }\n"],"names":["deleteFromSearch","pluginConfig","id","collection","req","payload","searchSlug","searchOverrides","slug","delete","depth","where","equals","err","logger","error","msg"],"mappings":"AAEA,OAAO,MAAMA,mBACX,CAACC,eACD,OAAO,EAAEC,EAAE,EAAEC,UAAU,EAAEC,KAAK,EAAEC,OAAO,EAAE,EAAED,GAAG,EAAE;QAC9C,MAAME,aAAaL,cAAcM,iBAAiBC,QAAQ;QAE1D,IAAI;YACF,MAAMH,QAAQI,MAAM,CAAC;gBACnBN,YAAYG;gBACZI,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"sourcesContent":["import type { DeleteFromSearch } from '../../types.js'\n\nexport const deleteFromSearch: DeleteFromSearch =\n (pluginConfig) =>\n async ({ id, collection, req: { payload }, req }) => {\n const searchSlug = pluginConfig?.searchOverrides?.slug || 'search'\n\n try {\n await payload.delete({\n collection: searchSlug,\n depth: 0,\n overrideAccess: true,\n req,\n where: {\n 'doc.relationTo': {\n equals: collection.slug,\n },\n 'doc.value': {\n equals: id,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting ${searchSlug} doc.`,\n })\n }\n }\n"],"names":["deleteFromSearch","pluginConfig","id","collection","req","payload","searchSlug","searchOverrides","slug","delete","depth","overrideAccess","where","equals","err","logger","error","msg"],"mappings":"AAEA,OAAO,MAAMA,mBACX,CAACC,eACD,OAAO,EAAEC,EAAE,EAAEC,UAAU,EAAEC,KAAK,EAAEC,OAAO,EAAE,EAAED,GAAG,EAAE;QAC9C,MAAME,aAAaL,cAAcM,iBAAiBC,QAAQ;QAE1D,IAAI;YACF,MAAMH,QAAQI,MAAM,CAAC;gBACnBN,YAAYG;gBACZI,OAAO;gBACPC,gBAAgB;gBAChBP;gBACAQ,OAAO;oBACL,kBAAkB;wBAChBC,QAAQV,WAAWK,IAAI;oBACzB;oBACA,aAAa;wBACXK,QAAQX;oBACV;gBACF;YACF;QACF,EAAE,OAAOY,KAAc;YACrBT,QAAQU,MAAM,CAACC,KAAK,CAAC;gBACnBF;gBACAG,KAAK,CAAC,eAAe,EAAEX,WAAW,KAAK,CAAC;YAC1C;QACF;IACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncDocAsSearchIndex.d.ts","sourceRoot":"","sources":["../../src/utilities/syncDocAsSearchIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,eAAO,MAAM,oBAAoB,8FAS9B,WAAW,
|
|
1
|
+
{"version":3,"file":"syncDocAsSearchIndex.d.ts","sourceRoot":"","sources":["../../src/utilities/syncDocAsSearchIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,eAAO,MAAM,oBAAoB,8FAS9B,WAAW,iBAyRb,CAAA"}
|
|
@@ -51,6 +51,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
51
51
|
id,
|
|
52
52
|
collection,
|
|
53
53
|
locale: syncLocale,
|
|
54
|
+
overrideAccess: true,
|
|
54
55
|
req,
|
|
55
56
|
// Include trashed documents when the document being synced is trashed
|
|
56
57
|
trash: isTrashDocument
|
|
@@ -89,6 +90,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
89
90
|
},
|
|
90
91
|
depth: 0,
|
|
91
92
|
locale: syncLocale,
|
|
93
|
+
overrideAccess: true,
|
|
92
94
|
req
|
|
93
95
|
});
|
|
94
96
|
}
|
|
@@ -99,6 +101,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
99
101
|
collection: searchSlug,
|
|
100
102
|
depth: 0,
|
|
101
103
|
locale: syncLocale,
|
|
104
|
+
overrideAccess: true,
|
|
102
105
|
req,
|
|
103
106
|
where: {
|
|
104
107
|
'doc.relationTo': {
|
|
@@ -119,6 +122,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
119
122
|
await payload.delete({
|
|
120
123
|
collection: searchSlug,
|
|
121
124
|
depth: 0,
|
|
125
|
+
overrideAccess: true,
|
|
122
126
|
req,
|
|
123
127
|
where: {
|
|
124
128
|
id: {
|
|
@@ -143,6 +147,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
143
147
|
id: searchDocID,
|
|
144
148
|
collection: searchSlug,
|
|
145
149
|
depth: 0,
|
|
150
|
+
overrideAccess: true,
|
|
146
151
|
req
|
|
147
152
|
});
|
|
148
153
|
} catch (err) {
|
|
@@ -164,6 +169,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
164
169
|
},
|
|
165
170
|
depth: 0,
|
|
166
171
|
locale: syncLocale,
|
|
172
|
+
overrideAccess: true,
|
|
167
173
|
req
|
|
168
174
|
});
|
|
169
175
|
} catch (err) {
|
|
@@ -182,6 +188,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
182
188
|
draft: false,
|
|
183
189
|
limit: 1,
|
|
184
190
|
locale: syncLocale,
|
|
191
|
+
overrideAccess: true,
|
|
185
192
|
pagination: false,
|
|
186
193
|
req,
|
|
187
194
|
where: {
|
|
@@ -206,6 +213,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
206
213
|
id: searchDocID,
|
|
207
214
|
collection: searchSlug,
|
|
208
215
|
depth: 0,
|
|
216
|
+
overrideAccess: true,
|
|
209
217
|
req
|
|
210
218
|
});
|
|
211
219
|
} catch (err) {
|
|
@@ -227,6 +235,7 @@ export const syncDocAsSearchIndex = async ({ collection, doc, locale, onSyncErro
|
|
|
227
235
|
},
|
|
228
236
|
depth: 0,
|
|
229
237
|
locale: syncLocale,
|
|
238
|
+
overrideAccess: true,
|
|
230
239
|
req
|
|
231
240
|
});
|
|
232
241
|
} catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/syncDocAsSearchIndex.ts"],"sourcesContent":["import type { DocToSync, SyncDocArgs } from '../types.js'\n\nexport const syncDocAsSearchIndex = async ({\n collection,\n doc,\n locale,\n onSyncError,\n operation,\n pluginConfig,\n req: { payload },\n req,\n}: SyncDocArgs) => {\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, searchOverrides, syncDrafts } = pluginConfig\n\n const searchSlug = searchOverrides?.slug || 'search'\n\n // Determine sync locale\n const syncLocale = locale || req.locale || undefined\n\n if (typeof pluginConfig.skipSync === 'function') {\n try {\n const skipSync = await pluginConfig.skipSync({\n collectionSlug: collection,\n doc,\n locale: syncLocale,\n req,\n })\n\n if (skipSync) {\n return doc\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: 'Search plugin: Error executing skipSync. Proceeding with sync.',\n })\n }\n }\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n const docKeyPrefix = `${collection}:${id}`\n const docKey = req.payload.config.localization ? `${docKeyPrefix}:${syncLocale}` : docKeyPrefix\n const syncedDocsSet = (req.context?.syncedDocsSet as Set<string>) || new Set<string>()\n\n if (syncedDocsSet.has(docKey)) {\n /*\n * prevents duplicate syncing of documents in the same request\n * this can happen when hooks call `payload.update` within the create lifecycle\n * like the nested-docs plugin does\n */\n return doc\n } else {\n syncedDocsSet.add(docKey)\n }\n\n req.context.syncedDocsSet = syncedDocsSet\n\n if (typeof beforeSync === 'function') {\n let docToSyncWith = doc\n if (payload.config?.localization) {\n // Check if document is trashed (has deletedAt field)\n const isTrashDocument = doc && 'deletedAt' in doc && doc.deletedAt\n\n docToSyncWith = await payload.findByID({\n id,\n collection,\n locale: syncLocale,\n req,\n // Include trashed documents when the document being synced is trashed\n trash: isTrashDocument,\n })\n }\n dataToSave = await beforeSync({\n collectionSlug: collection,\n originalDoc: docToSyncWith,\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 ${searchSlug} documents related to ${collection}`,\n )\n }\n } else if (priority !== undefined) {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create' && doSync) {\n await payload.create({\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n req,\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: searchSlug,\n depth: 0,\n locale: syncLocale,\n req,\n where: {\n 'doc.relationTo': {\n equals: collection,\n },\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: searchSlug,\n depth: 0,\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting duplicative ${searchSlug} documents.`,\n })\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n // Check if document is trashed and delete from search\n const isTrashDocument = doc && 'deletedAt' in doc && doc.deletedAt\n\n if (isTrashDocument) {\n try {\n await payload.delete({\n id: searchDocID,\n collection: searchSlug,\n depth: 0,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting ${searchSlug} document for trashed doc.`,\n })\n }\n } else {\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error updating ${searchSlug} document.` })\n }\n }\n\n if (deleteDrafts && status === 'draft') {\n // Check to see if there's a published version of the doc\n // We don't want to remove the search doc if there is a published version but a new draft has been created\n const {\n docs: [docWithPublish],\n } = await payload.find({\n collection,\n depth: 0,\n draft: false,\n limit: 1,\n locale: syncLocale,\n pagination: false,\n req,\n where: {\n and: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (!docWithPublish) {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: searchSlug,\n depth: 0,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error deleting ${searchSlug} document.` })\n }\n }\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error creating ${searchSlug} document.` })\n }\n }\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error finding ${searchSlug} document.` })\n }\n }\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error syncing ${searchSlug} document related to ${collection} with id: '${id}'.`,\n })\n\n if (onSyncError) {\n onSyncError()\n }\n }\n\n return doc\n}\n"],"names":["syncDocAsSearchIndex","collection","doc","locale","onSyncError","operation","pluginConfig","req","payload","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","searchOverrides","syncDrafts","searchSlug","slug","syncLocale","undefined","skipSync","collectionSlug","err","logger","error","msg","dataToSave","relationTo","value","docKeyPrefix","docKey","config","localization","syncedDocsSet","context","Set","has","add","docToSyncWith","isTrashDocument","deletedAt","findByID","trash","originalDoc","searchDoc","defaultPriority","priority","doSync","create","data","depth","searchDocQuery","find","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update","docWithPublish","draft","limit","pagination","and"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,OAAO,EACzCC,UAAU,EACVC,GAAG,EACHC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,KAAK,EAAEC,OAAO,EAAE,EAChBD,GAAG,EACS;IACZ,MAAM,EAAEE,EAAE,EAAEC,SAASC,MAAM,EAAEC,KAAK,EAAE,GAAGV,OAAO,CAAC;IAE/C,MAAM,EAAEW,UAAU,EAAEC,iBAAiB,EAAEC,YAAY,EAAEC,eAAe,EAAEC,UAAU,EAAE,GAAGX;IAErF,MAAMY,aAAaF,iBAAiBG,QAAQ;IAE5C,wBAAwB;IACxB,MAAMC,aAAajB,UAAUI,IAAIJ,MAAM,IAAIkB;IAE3C,IAAI,OAAOf,aAAagB,QAAQ,KAAK,YAAY;QAC/C,IAAI;YACF,MAAMA,WAAW,MAAMhB,aAAagB,QAAQ,CAAC;gBAC3CC,gBAAgBtB;gBAChBC;gBACAC,QAAQiB;gBACRb;YACF;YAEA,IAAIe,UAAU;gBACZ,OAAOpB;YACT;QACF,EAAE,OAAOsB,KAAK;YACZjB,IAAIC,OAAO,CAACiB,MAAM,CAACC,KAAK,CAAC;gBACvBF;gBACAG,KAAK;YACP;QACF;IACF;IAEA,IAAIC,aAAwB;QAC1B1B,KAAK;YACH2B,YAAY5B;YACZ6B,OAAOrB;QACT;QACAG;IACF;IACA,MAAMmB,eAAe,GAAG9B,WAAW,CAAC,EAAEQ,IAAI;IAC1C,MAAMuB,SAASzB,IAAIC,OAAO,CAACyB,MAAM,CAACC,YAAY,GAAG,GAAGH,aAAa,CAAC,EAAEX,YAAY,GAAGW;IACnF,MAAMI,gBAAgB,AAAC5B,IAAI6B,OAAO,EAAED,iBAAiC,IAAIE;IAEzE,IAAIF,cAAcG,GAAG,CAACN,SAAS;QAC7B;;;;KAIC,GACD,OAAO9B;IACT,OAAO;QACLiC,cAAcI,GAAG,CAACP;IACpB;IAEAzB,IAAI6B,OAAO,CAACD,aAAa,GAAGA;IAE5B,IAAI,OAAOtB,eAAe,YAAY;QACpC,IAAI2B,gBAAgBtC;QACpB,IAAIM,QAAQyB,MAAM,EAAEC,cAAc;YAChC,qDAAqD;YACrD,MAAMO,kBAAkBvC,OAAO,eAAeA,OAAOA,IAAIwC,SAAS;YAElEF,gBAAgB,MAAMhC,QAAQmC,QAAQ,CAAC;gBACrClC;gBACAR;gBACAE,QAAQiB;gBACRb;gBACA,sEAAsE;gBACtEqC,OAAOH;YACT;QACF;QACAb,aAAa,MAAMf,WAAW;YAC5BU,gBAAgBtB;YAChB4C,aAAaL;YACbhC;YACAD;YACAuC,WAAWlB;QACb;IACF;IAEA,IAAImB,kBAAkB;IACtB,IAAIjC,mBAAmB;QACrB,MAAM,EAAE,CAACb,WAAW,EAAE+C,QAAQ,EAAE,GAAGlC;QAEnC,IAAI,OAAOkC,aAAa,YAAY;YAClC,IAAI;gBACFD,kBAAkB,MAAMC,SAAS9C;YACnC,EAAE,OAAOsB,KAAc;gBACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAACF;gBACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAClB,CAAC,qCAAqC,EAAER,WAAW,sBAAsB,EAAEjB,YAAY;YAE3F;QACF,OAAO,IAAI+C,aAAa3B,WAAW;YACjC0B,kBAAkBC;QACpB;IACF;IAEA,MAAMC,SAAShC,cAAe,CAACA,cAAcN,WAAW;IAExD,IAAI;QACF,IAAIN,cAAc,YAAY4C,QAAQ;YACpC,MAAMzC,QAAQ0C,MAAM,CAAC;gBACnBjD,YAAYiB;gBACZiC,MAAM;oBACJ,GAAGvB,UAAU;oBACboB,UAAUD;gBACZ;gBACAK,OAAO;gBACPjD,QAAQiB;gBACRb;YACF;QACF;QAEA,IAAIF,cAAc,UAAU;YAC1B,IAAI;gBACF,oCAAoC;gBACpC,MAAMgD,iBAAiB,MAAM7C,QAAQ8C,IAAI,CAAC;oBACxCrD,YAAYiB;oBACZkC,OAAO;oBACPjD,QAAQiB;oBACRb;oBACAgD,OAAO;wBACL,kBAAkB;4BAChBC,QAAQvD;wBACV;wBACA,aAAa;4BACXuD,QAAQ/C;wBACV;oBACF;gBACF;gBAEA,MAAMgD,OAGDJ,gBAAgBI,QAAQ,EAAE;gBAE/B,MAAM,CAACC,UAAU,GAAGC,gBAAgB,GAAGF;gBAEvC,yEAAyE;gBACzE,wGAAwG;gBACxG,IAAIE,gBAAgBC,MAAM,GAAG,GAAG;oBAC9B,IAAI;wBACF,MAAMC,oBAAoBF,gBAAgBG,GAAG,CAAC,CAAC,EAAErD,EAAE,EAAE,GAAKA;wBAC1D,MAAMD,QAAQuD,MAAM,CAAC;4BACnB9D,YAAYiB;4BACZkC,OAAO;4BACP7C;4BACAgD,OAAO;gCAAE9C,IAAI;oCAAEuD,IAAIH;gCAAkB;4BAAE;wBACzC;oBACF,EAAE,OAAOrC,KAAc;wBACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;4BACnBF;4BACAG,KAAK,CAAC,2BAA2B,EAAET,WAAW,WAAW,CAAC;wBAC5D;oBACF;gBACF;gBAEA,IAAIwC,UAAU;oBACZ,MAAM,EAAEjD,IAAIwD,WAAW,EAAE,GAAGP;oBAE5B,sDAAsD;oBACtD,MAAMjB,kBAAkBvC,OAAO,eAAeA,OAAOA,IAAIwC,SAAS;oBAElE,IAAID,iBAAiB;wBACnB,IAAI;4BACF,MAAMjC,QAAQuD,MAAM,CAAC;gCACnBtD,IAAIwD;gCACJhE,YAAYiB;gCACZkC,OAAO;gCACP7C;4BACF;wBACF,EAAE,OAAOiB,KAAc;4BACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;gCACnBF;gCACAG,KAAK,CAAC,eAAe,EAAET,WAAW,0BAA0B,CAAC;4BAC/D;wBACF;oBACF,OAAO;wBACL,IAAI+B,QAAQ;4BACV,0BAA0B;4BAC1B,IAAI;gCACF,MAAMzC,QAAQ0D,MAAM,CAAC;oCACnBzD,IAAIwD;oCACJhE,YAAYiB;oCACZiC,MAAM;wCACJ,GAAGvB,UAAU;wCACboB,UAAUU,SAASV,QAAQ,IAAID;oCACjC;oCACAK,OAAO;oCACPjD,QAAQiB;oCACRb;gCACF;4BACF,EAAE,OAAOiB,KAAc;gCACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;oCAAEF;oCAAKG,KAAK,CAAC,eAAe,EAAET,WAAW,UAAU,CAAC;gCAAC;4BAC5E;wBACF;wBAEA,IAAIH,gBAAgBJ,WAAW,SAAS;4BACtC,yDAAyD;4BACzD,0GAA0G;4BAC1G,MAAM,EACJ8C,MAAM,CAACU,eAAe,EACvB,GAAG,MAAM3D,QAAQ8C,IAAI,CAAC;gCACrBrD;gCACAmD,OAAO;gCACPgB,OAAO;gCACPC,OAAO;gCACPlE,QAAQiB;gCACRkD,YAAY;gCACZ/D;gCACAgD,OAAO;oCACLgB,KAAK;wCACH;4CACE7D,SAAS;gDACP8C,QAAQ;4CACV;wCACF;wCACA;4CACE/C,IAAI;gDACF+C,QAAQ/C;4CACV;wCACF;qCACD;gCACH;4BACF;4BAEA,IAAI,CAAC0D,gBAAgB;gCACnB,oEAAoE;gCACpE,IAAI;oCACF,MAAM3D,QAAQuD,MAAM,CAAC;wCACnBtD,IAAIwD;wCACJhE,YAAYiB;wCACZkC,OAAO;wCACP7C;oCACF;gCACF,EAAE,OAAOiB,KAAc;oCACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;wCAAEF;wCAAKG,KAAK,CAAC,eAAe,EAAET,WAAW,UAAU,CAAC;oCAAC;gCAC5E;4BACF;wBACF;oBACF;gBACF,OAAO,IAAI+B,QAAQ;oBACjB,IAAI;wBACF,MAAMzC,QAAQ0C,MAAM,CAAC;4BACnBjD,YAAYiB;4BACZiC,MAAM;gCACJ,GAAGvB,UAAU;gCACboB,UAAUD;4BACZ;4BACAK,OAAO;4BACPjD,QAAQiB;4BACRb;wBACF;oBACF,EAAE,OAAOiB,KAAc;wBACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;4BAAEF;4BAAKG,KAAK,CAAC,eAAe,EAAET,WAAW,UAAU,CAAC;wBAAC;oBAC5E;gBACF;YACF,EAAE,OAAOM,KAAc;gBACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;oBAAEF;oBAAKG,KAAK,CAAC,cAAc,EAAET,WAAW,UAAU,CAAC;gBAAC;YAC3E;QACF;IACF,EAAE,OAAOM,KAAc;QACrBhB,QAAQiB,MAAM,CAACC,KAAK,CAAC;YACnBF;YACAG,KAAK,CAAC,cAAc,EAAET,WAAW,qBAAqB,EAAEjB,WAAW,WAAW,EAAEQ,GAAG,EAAE,CAAC;QACxF;QAEA,IAAIL,aAAa;YACfA;QACF;IACF;IAEA,OAAOF;AACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/syncDocAsSearchIndex.ts"],"sourcesContent":["import type { DocToSync, SyncDocArgs } from '../types.js'\n\nexport const syncDocAsSearchIndex = async ({\n collection,\n doc,\n locale,\n onSyncError,\n operation,\n pluginConfig,\n req: { payload },\n req,\n}: SyncDocArgs) => {\n const { id, _status: status, title } = doc || {}\n\n const { beforeSync, defaultPriorities, deleteDrafts, searchOverrides, syncDrafts } = pluginConfig\n\n const searchSlug = searchOverrides?.slug || 'search'\n\n // Determine sync locale\n const syncLocale = locale || req.locale || undefined\n\n if (typeof pluginConfig.skipSync === 'function') {\n try {\n const skipSync = await pluginConfig.skipSync({\n collectionSlug: collection,\n doc,\n locale: syncLocale,\n req,\n })\n\n if (skipSync) {\n return doc\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: 'Search plugin: Error executing skipSync. Proceeding with sync.',\n })\n }\n }\n\n let dataToSave: DocToSync = {\n doc: {\n relationTo: collection,\n value: id,\n },\n title,\n }\n const docKeyPrefix = `${collection}:${id}`\n const docKey = req.payload.config.localization ? `${docKeyPrefix}:${syncLocale}` : docKeyPrefix\n const syncedDocsSet = (req.context?.syncedDocsSet as Set<string>) || new Set<string>()\n\n if (syncedDocsSet.has(docKey)) {\n /*\n * prevents duplicate syncing of documents in the same request\n * this can happen when hooks call `payload.update` within the create lifecycle\n * like the nested-docs plugin does\n */\n return doc\n } else {\n syncedDocsSet.add(docKey)\n }\n\n req.context.syncedDocsSet = syncedDocsSet\n\n if (typeof beforeSync === 'function') {\n let docToSyncWith = doc\n if (payload.config?.localization) {\n // Check if document is trashed (has deletedAt field)\n const isTrashDocument = doc && 'deletedAt' in doc && doc.deletedAt\n\n docToSyncWith = await payload.findByID({\n id,\n collection,\n locale: syncLocale,\n overrideAccess: true,\n req,\n // Include trashed documents when the document being synced is trashed\n trash: isTrashDocument,\n })\n }\n dataToSave = await beforeSync({\n collectionSlug: collection,\n originalDoc: docToSyncWith,\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 ${searchSlug} documents related to ${collection}`,\n )\n }\n } else if (priority !== undefined) {\n defaultPriority = priority\n }\n }\n\n const doSync = syncDrafts || (!syncDrafts && status !== 'draft')\n\n try {\n if (operation === 'create' && doSync) {\n await payload.create({\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n overrideAccess: true,\n req,\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: searchSlug,\n depth: 0,\n locale: syncLocale,\n overrideAccess: true,\n req,\n where: {\n 'doc.relationTo': {\n equals: collection,\n },\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: searchSlug,\n depth: 0,\n overrideAccess: true,\n req,\n where: { id: { in: duplicativeDocIDs } },\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting duplicative ${searchSlug} documents.`,\n })\n }\n }\n\n if (foundDoc) {\n const { id: searchDocID } = foundDoc\n\n // Check if document is trashed and delete from search\n const isTrashDocument = doc && 'deletedAt' in doc && doc.deletedAt\n\n if (isTrashDocument) {\n try {\n await payload.delete({\n id: searchDocID,\n collection: searchSlug,\n depth: 0,\n overrideAccess: true,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error deleting ${searchSlug} document for trashed doc.`,\n })\n }\n } else {\n if (doSync) {\n // update the doc normally\n try {\n await payload.update({\n id: searchDocID,\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: foundDoc.priority || defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n overrideAccess: true,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error updating ${searchSlug} document.` })\n }\n }\n\n if (deleteDrafts && status === 'draft') {\n // Check to see if there's a published version of the doc\n // We don't want to remove the search doc if there is a published version but a new draft has been created\n const {\n docs: [docWithPublish],\n } = await payload.find({\n collection,\n depth: 0,\n draft: false,\n limit: 1,\n locale: syncLocale,\n overrideAccess: true,\n pagination: false,\n req,\n where: {\n and: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (!docWithPublish) {\n // do not include draft docs in search results, so delete the record\n try {\n await payload.delete({\n id: searchDocID,\n collection: searchSlug,\n depth: 0,\n overrideAccess: true,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error deleting ${searchSlug} document.` })\n }\n }\n }\n }\n } else if (doSync) {\n try {\n await payload.create({\n collection: searchSlug,\n data: {\n ...dataToSave,\n priority: defaultPriority,\n },\n depth: 0,\n locale: syncLocale,\n overrideAccess: true,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error creating ${searchSlug} document.` })\n }\n }\n } catch (err: unknown) {\n payload.logger.error({ err, msg: `Error finding ${searchSlug} document.` })\n }\n }\n } catch (err: unknown) {\n payload.logger.error({\n err,\n msg: `Error syncing ${searchSlug} document related to ${collection} with id: '${id}'.`,\n })\n\n if (onSyncError) {\n onSyncError()\n }\n }\n\n return doc\n}\n"],"names":["syncDocAsSearchIndex","collection","doc","locale","onSyncError","operation","pluginConfig","req","payload","id","_status","status","title","beforeSync","defaultPriorities","deleteDrafts","searchOverrides","syncDrafts","searchSlug","slug","syncLocale","undefined","skipSync","collectionSlug","err","logger","error","msg","dataToSave","relationTo","value","docKeyPrefix","docKey","config","localization","syncedDocsSet","context","Set","has","add","docToSyncWith","isTrashDocument","deletedAt","findByID","overrideAccess","trash","originalDoc","searchDoc","defaultPriority","priority","doSync","create","data","depth","searchDocQuery","find","where","equals","docs","foundDoc","duplicativeDocs","length","duplicativeDocIDs","map","delete","in","searchDocID","update","docWithPublish","draft","limit","pagination","and"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-search",
|
|
3
|
-
"version": "4.0.0-canary.
|
|
3
|
+
"version": "4.0.0-canary.37",
|
|
4
4
|
"description": "Search plugin for Payload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
@@ -50,19 +50,19 @@
|
|
|
50
50
|
"dist"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@payloadcms/next": "4.0.0-canary.
|
|
54
|
-
"@payloadcms/ui": "4.0.0-canary.
|
|
53
|
+
"@payloadcms/next": "4.0.0-canary.37",
|
|
54
|
+
"@payloadcms/ui": "4.0.0-canary.37"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/react": "19.2.14",
|
|
58
58
|
"@types/react-dom": "19.2.3",
|
|
59
59
|
"@payloadcms/eslint-config": "3.28.0",
|
|
60
|
-
"payload": "4.0.0-canary.
|
|
60
|
+
"payload": "4.0.0-canary.37"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
64
64
|
"react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
65
|
-
"payload": "4.0.0-canary.
|
|
65
|
+
"payload": "4.0.0-canary.37"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"registry": "https://registry.npmjs.org/"
|