@payloadcms/plugin-search 3.60.0 → 3.61.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateReindexHandler.d.ts","sourceRoot":"","sources":["../../src/utilities/generateReindexHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"generateReindexHandler.d.ts","sourceRoot":"","sources":["../../src/utilities/generateReindexHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,SAAS,CAAA;AAWpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAS9D,eAAO,MAAM,sBAAsB,iBAClB,2BAA2B,KAAG,cAiL5C,CAAA"}
|
|
@@ -80,19 +80,26 @@ export const generateReindexHandler = (pluginConfig)=>async (req)=>{
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
const payload = req.payload;
|
|
83
|
-
const batchSize = pluginConfig
|
|
83
|
+
const { reindexBatchSize: batchSize, syncDrafts } = pluginConfig;
|
|
84
84
|
const defaultLocalApiProps = {
|
|
85
85
|
overrideAccess: false,
|
|
86
86
|
req,
|
|
87
87
|
user: req.user
|
|
88
88
|
};
|
|
89
|
+
const whereStatusPublished = {
|
|
90
|
+
_status: {
|
|
91
|
+
equals: 'published'
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
let aggregateDocsWithDrafts = 0;
|
|
89
95
|
let aggregateErrors = 0;
|
|
90
96
|
let aggregateDocs = 0;
|
|
91
|
-
const countDocuments = async (collection)=>{
|
|
97
|
+
const countDocuments = async (collection, drafts)=>{
|
|
92
98
|
const { totalDocs } = await payload.count({
|
|
93
99
|
collection,
|
|
94
100
|
...defaultLocalApiProps,
|
|
95
|
-
req: undefined
|
|
101
|
+
req: undefined,
|
|
102
|
+
where: drafts ? undefined : whereStatusPublished
|
|
96
103
|
});
|
|
97
104
|
return totalDocs;
|
|
98
105
|
};
|
|
@@ -112,8 +119,11 @@ export const generateReindexHandler = (pluginConfig)=>async (req)=>{
|
|
|
112
119
|
});
|
|
113
120
|
};
|
|
114
121
|
const reindexCollection = async (collection)=>{
|
|
115
|
-
const
|
|
122
|
+
const draftsEnabled = Boolean(payload.collections[collection]?.config.versions?.drafts);
|
|
123
|
+
const totalDocsWithDrafts = await countDocuments(collection, true);
|
|
124
|
+
const totalDocs = syncDrafts || !draftsEnabled ? totalDocsWithDrafts : await countDocuments(collection, !draftsEnabled);
|
|
116
125
|
const totalBatches = Math.ceil(totalDocs / batchSize);
|
|
126
|
+
aggregateDocsWithDrafts += totalDocsWithDrafts;
|
|
117
127
|
aggregateDocs += totalDocs;
|
|
118
128
|
for(let j = 0; j < reindexLocales.length; j++){
|
|
119
129
|
// create first index, then we update with other locales accordingly
|
|
@@ -126,6 +136,7 @@ export const generateReindexHandler = (pluginConfig)=>async (req)=>{
|
|
|
126
136
|
limit: batchSize,
|
|
127
137
|
locale: localeToSync,
|
|
128
138
|
page: i + 1,
|
|
139
|
+
where: syncDrafts || !draftsEnabled ? undefined : whereStatusPublished,
|
|
129
140
|
...defaultLocalApiProps
|
|
130
141
|
});
|
|
131
142
|
for (const doc of docs){
|
|
@@ -174,7 +185,8 @@ export const generateReindexHandler = (pluginConfig)=>async (req)=>{
|
|
|
174
185
|
const message = t('general:successfullyReindexed', {
|
|
175
186
|
collections: collections.join(', '),
|
|
176
187
|
count: aggregateDocs - aggregateErrors,
|
|
177
|
-
|
|
188
|
+
skips: syncDrafts ? 0 : aggregateDocsWithDrafts - aggregateDocs,
|
|
189
|
+
total: aggregateDocsWithDrafts
|
|
178
190
|
});
|
|
179
191
|
if (shouldCommit) {
|
|
180
192
|
await commitTransaction(req);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/generateReindexHandler.ts"],"sourcesContent":["import type { PayloadHandler } from 'payload'\n\nimport {\n addLocalesToRequestFromData,\n commitTransaction,\n getAccessResults,\n headersWithCors,\n initTransaction,\n killTransaction,\n} from 'payload'\n\nimport type { SanitizedSearchPluginConfig } from '../types.js'\n\nimport { syncDocAsSearchIndex } from './syncDocAsSearchIndex.js'\n\ntype ValidationResult = {\n isValid: boolean\n message?: string\n}\n\nexport const generateReindexHandler =\n (pluginConfig: SanitizedSearchPluginConfig): PayloadHandler =>\n async (req) => {\n addLocalesToRequestFromData(req)\n if (!req.json) {\n return new Response('Req.json is undefined', { status: 400 })\n }\n const { collections = [] } = (await req.json()) as { collections: string[] }\n const t = req.t\n\n const searchSlug = pluginConfig?.searchOverrides?.slug || 'search'\n const searchCollections = pluginConfig?.collections || []\n const reindexLocales = pluginConfig?.locales?.length\n ? pluginConfig.locales\n : req.locale\n ? [req.locale]\n : []\n\n const validatePermissions = async (): Promise<ValidationResult> => {\n const accessResults = await getAccessResults({ req })\n const searchAccessResults = accessResults.collections?.[searchSlug]\n if (!searchAccessResults) {\n return { isValid: false, message: t('error:notAllowedToPerformAction') }\n }\n\n const permissions = [searchAccessResults.delete, searchAccessResults.update]\n // plugin doesn't allow create by default:\n // if user provided, then add it to check\n if (pluginConfig.searchOverrides?.access?.create) {\n permissions.push(searchAccessResults.create)\n }\n // plugin allows reads by anyone by default:\n // so if user provided, then add to check\n if (pluginConfig.searchOverrides?.access?.read) {\n permissions.push(searchAccessResults.read)\n }\n return permissions.every(Boolean)\n ? { isValid: true }\n : { isValid: false, message: t('error:notAllowedToPerformAction') }\n }\n\n const validateCollections = (): ValidationResult => {\n const collectionsAreValid = collections.every((col) => searchCollections.includes(col))\n return collections.length && collectionsAreValid\n ? { isValid: true }\n : { isValid: false, message: t('error:invalidRequestArgs', { args: `'collections'` }) }\n }\n\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n const { isValid: hasPermissions, message: permissionError } = await validatePermissions()\n if (!hasPermissions) {\n return Response.json({ message: permissionError }, { headers, status: 401 })\n }\n\n const { isValid: validCollections, message: collectionError } = validateCollections()\n if (!validCollections) {\n return Response.json({ message: collectionError }, { headers, status: 400 })\n }\n\n const payload = req.payload\n const batchSize = pluginConfig.reindexBatchSize\n\n const defaultLocalApiProps = {\n overrideAccess: false,\n req,\n user: req.user,\n }\n let aggregateErrors = 0\n let aggregateDocs = 0\n\n const countDocuments = async (collection: string): Promise<number> => {\n const { totalDocs } = await payload.count({\n collection,\n ...defaultLocalApiProps,\n req: undefined,\n })\n return totalDocs\n }\n\n const deleteIndexes = async (collection: string) => {\n await payload.delete({\n collection: searchSlug,\n depth: 0,\n select: { id: true },\n where: { 'doc.relationTo': { equals: collection } },\n ...defaultLocalApiProps,\n })\n }\n\n const reindexCollection = async (collection: string) => {\n const totalDocs = await countDocuments(collection)\n const totalBatches = Math.ceil(totalDocs / batchSize)\n aggregateDocs += totalDocs\n\n for (let j = 0; j < reindexLocales.length; j++) {\n // create first index, then we update with other locales accordingly\n const operation = j === 0 ? 'create' : 'update'\n const localeToSync = reindexLocales[j]\n\n for (let i = 0; i < totalBatches; i++) {\n const { docs } = await payload.find({\n collection,\n depth: 0,\n limit: batchSize,\n locale: localeToSync,\n page: i + 1,\n ...defaultLocalApiProps,\n })\n\n for (const doc of docs) {\n await syncDocAsSearchIndex({\n collection,\n data: doc,\n doc,\n locale: localeToSync,\n onSyncError: () => operation === 'create' && aggregateErrors++,\n operation,\n pluginConfig,\n req,\n })\n }\n }\n }\n }\n\n const shouldCommit = await initTransaction(req)\n\n try {\n const promises = collections.map(async (collection) => {\n try {\n await deleteIndexes(collection)\n await reindexCollection(collection)\n } catch (err) {\n const message = t('error:unableToReindexCollection', { collection })\n payload.logger.error({ err, msg: message })\n }\n })\n\n await Promise.all(promises)\n } catch (err: any) {\n if (shouldCommit) {\n await killTransaction(req)\n }\n return Response.json({ message: err.message }, { headers, status: 500 })\n }\n\n const message = t('general:successfullyReindexed', {\n collections: collections.join(', '),\n count: aggregateDocs - aggregateErrors,\n total: aggregateDocs,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return Response.json({ message }, { headers, status: 200 })\n }\n"],"names":["addLocalesToRequestFromData","commitTransaction","getAccessResults","headersWithCors","initTransaction","killTransaction","syncDocAsSearchIndex","generateReindexHandler","pluginConfig","req","json","Response","status","collections","t","searchSlug","searchOverrides","slug","searchCollections","reindexLocales","locales","length","locale","validatePermissions","accessResults","searchAccessResults","isValid","message","permissions","delete","update","access","create","push","read","every","Boolean","validateCollections","collectionsAreValid","col","includes","args","headers","Headers","hasPermissions","permissionError","validCollections","collectionError","payload","batchSize","reindexBatchSize","defaultLocalApiProps","overrideAccess","user","aggregateErrors","aggregateDocs","countDocuments","collection","totalDocs","count","undefined","deleteIndexes","depth","select","id","where","equals","reindexCollection","totalBatches","Math","ceil","j","operation","localeToSync","i","docs","find","limit","page","doc","data","onSyncError","shouldCommit","promises","map","err","logger","error","msg","Promise","all","join","total"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/generateReindexHandler.ts"],"sourcesContent":["import type { PayloadHandler, Where } from 'payload'\n\nimport {\n addLocalesToRequestFromData,\n commitTransaction,\n getAccessResults,\n headersWithCors,\n initTransaction,\n killTransaction,\n} from 'payload'\n\nimport type { SanitizedSearchPluginConfig } from '../types.js'\n\nimport { syncDocAsSearchIndex } from './syncDocAsSearchIndex.js'\n\ntype ValidationResult = {\n isValid: boolean\n message?: string\n}\n\nexport const generateReindexHandler =\n (pluginConfig: SanitizedSearchPluginConfig): PayloadHandler =>\n async (req) => {\n addLocalesToRequestFromData(req)\n if (!req.json) {\n return new Response('Req.json is undefined', { status: 400 })\n }\n const { collections = [] } = (await req.json()) as { collections: string[] }\n const t = req.t\n\n const searchSlug = pluginConfig?.searchOverrides?.slug || 'search'\n const searchCollections = pluginConfig?.collections || []\n const reindexLocales = pluginConfig?.locales?.length\n ? pluginConfig.locales\n : req.locale\n ? [req.locale]\n : []\n\n const validatePermissions = async (): Promise<ValidationResult> => {\n const accessResults = await getAccessResults({ req })\n const searchAccessResults = accessResults.collections?.[searchSlug]\n if (!searchAccessResults) {\n return { isValid: false, message: t('error:notAllowedToPerformAction') }\n }\n\n const permissions = [searchAccessResults.delete, searchAccessResults.update]\n // plugin doesn't allow create by default:\n // if user provided, then add it to check\n if (pluginConfig.searchOverrides?.access?.create) {\n permissions.push(searchAccessResults.create)\n }\n // plugin allows reads by anyone by default:\n // so if user provided, then add to check\n if (pluginConfig.searchOverrides?.access?.read) {\n permissions.push(searchAccessResults.read)\n }\n return permissions.every(Boolean)\n ? { isValid: true }\n : { isValid: false, message: t('error:notAllowedToPerformAction') }\n }\n\n const validateCollections = (): ValidationResult => {\n const collectionsAreValid = collections.every((col) => searchCollections.includes(col))\n return collections.length && collectionsAreValid\n ? { isValid: true }\n : { isValid: false, message: t('error:invalidRequestArgs', { args: `'collections'` }) }\n }\n\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n const { isValid: hasPermissions, message: permissionError } = await validatePermissions()\n if (!hasPermissions) {\n return Response.json({ message: permissionError }, { headers, status: 401 })\n }\n\n const { isValid: validCollections, message: collectionError } = validateCollections()\n if (!validCollections) {\n return Response.json({ message: collectionError }, { headers, status: 400 })\n }\n\n const payload = req.payload\n const { reindexBatchSize: batchSize, syncDrafts } = pluginConfig\n\n const defaultLocalApiProps = {\n overrideAccess: false,\n req,\n user: req.user,\n }\n const whereStatusPublished: Where = {\n _status: {\n equals: 'published',\n },\n }\n let aggregateDocsWithDrafts = 0\n let aggregateErrors = 0\n let aggregateDocs = 0\n\n const countDocuments = async (collection: string, drafts?: boolean): Promise<number> => {\n const { totalDocs } = await payload.count({\n collection,\n ...defaultLocalApiProps,\n req: undefined,\n where: drafts ? undefined : whereStatusPublished,\n })\n return totalDocs\n }\n\n const deleteIndexes = async (collection: string) => {\n await payload.delete({\n collection: searchSlug,\n depth: 0,\n select: { id: true },\n where: { 'doc.relationTo': { equals: collection } },\n ...defaultLocalApiProps,\n })\n }\n\n const reindexCollection = async (collection: string) => {\n const draftsEnabled = Boolean(payload.collections[collection]?.config.versions?.drafts)\n\n const totalDocsWithDrafts = await countDocuments(collection, true)\n const totalDocs =\n syncDrafts || !draftsEnabled\n ? totalDocsWithDrafts\n : await countDocuments(collection, !draftsEnabled)\n const totalBatches = Math.ceil(totalDocs / batchSize)\n\n aggregateDocsWithDrafts += totalDocsWithDrafts\n aggregateDocs += totalDocs\n\n for (let j = 0; j < reindexLocales.length; j++) {\n // create first index, then we update with other locales accordingly\n const operation = j === 0 ? 'create' : 'update'\n const localeToSync = reindexLocales[j]\n\n for (let i = 0; i < totalBatches; i++) {\n const { docs } = await payload.find({\n collection,\n depth: 0,\n limit: batchSize,\n locale: localeToSync,\n page: i + 1,\n where: syncDrafts || !draftsEnabled ? undefined : whereStatusPublished,\n ...defaultLocalApiProps,\n })\n\n for (const doc of docs) {\n await syncDocAsSearchIndex({\n collection,\n data: doc,\n doc,\n locale: localeToSync,\n onSyncError: () => operation === 'create' && aggregateErrors++,\n operation,\n pluginConfig,\n req,\n })\n }\n }\n }\n }\n\n const shouldCommit = await initTransaction(req)\n\n try {\n const promises = collections.map(async (collection) => {\n try {\n await deleteIndexes(collection)\n await reindexCollection(collection)\n } catch (err) {\n const message = t('error:unableToReindexCollection', { collection })\n payload.logger.error({ err, msg: message })\n }\n })\n\n await Promise.all(promises)\n } catch (err: any) {\n if (shouldCommit) {\n await killTransaction(req)\n }\n return Response.json({ message: err.message }, { headers, status: 500 })\n }\n\n const message = t('general:successfullyReindexed', {\n collections: collections.join(', '),\n count: aggregateDocs - aggregateErrors,\n skips: syncDrafts ? 0 : aggregateDocsWithDrafts - aggregateDocs,\n total: aggregateDocsWithDrafts,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return Response.json({ message }, { headers, status: 200 })\n }\n"],"names":["addLocalesToRequestFromData","commitTransaction","getAccessResults","headersWithCors","initTransaction","killTransaction","syncDocAsSearchIndex","generateReindexHandler","pluginConfig","req","json","Response","status","collections","t","searchSlug","searchOverrides","slug","searchCollections","reindexLocales","locales","length","locale","validatePermissions","accessResults","searchAccessResults","isValid","message","permissions","delete","update","access","create","push","read","every","Boolean","validateCollections","collectionsAreValid","col","includes","args","headers","Headers","hasPermissions","permissionError","validCollections","collectionError","payload","reindexBatchSize","batchSize","syncDrafts","defaultLocalApiProps","overrideAccess","user","whereStatusPublished","_status","equals","aggregateDocsWithDrafts","aggregateErrors","aggregateDocs","countDocuments","collection","drafts","totalDocs","count","undefined","where","deleteIndexes","depth","select","id","reindexCollection","draftsEnabled","config","versions","totalDocsWithDrafts","totalBatches","Math","ceil","j","operation","localeToSync","i","docs","find","limit","page","doc","data","onSyncError","shouldCommit","promises","map","err","logger","error","msg","Promise","all","join","skips","total"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-search",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.61.0-canary.0",
|
|
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": "3.
|
|
54
|
-
"@payloadcms/ui": "3.
|
|
53
|
+
"@payloadcms/next": "3.61.0-canary.0",
|
|
54
|
+
"@payloadcms/ui": "3.61.0-canary.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/react": "19.1.12",
|
|
58
58
|
"@types/react-dom": "19.1.9",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
59
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
60
|
+
"payload": "3.61.0-canary.0"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
64
64
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
65
|
-
"payload": "3.
|
|
65
|
+
"payload": "3.61.0-canary.0"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"registry": "https://registry.npmjs.org/"
|