@payloadcms/plugin-search 1.0.0 → 1.0.1

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/README.md CHANGED
@@ -2,13 +2,14 @@
2
2
 
3
3
  [![NPM](https://img.shields.io/npm/v/@payloadcms/plugin-search)](https://www.npmjs.com/package/@payloadcms/plugin-search)
4
4
 
5
- A plugin for [Payload CMS](https://github.com/payloadcms/payload) to create extremely fast search results from your existing documents.
5
+ A plugin for [Payload](https://github.com/payloadcms/payload) to create extremely fast search results from your existing documents.
6
6
 
7
7
  Core features:
8
- - Creates a `search` collection that:
9
- - Automatically creates, syncs, and deletes search results related to your documents
10
- - Serves search results extremely quickly by saving only search-critical data that you define
11
- - Allows you to sort search results by priority
8
+
9
+ - Creates a `search` collection that:
10
+ - Automatically creates, syncs, and deletes search results related to your documents
11
+ - Serves search results extremely quickly by saving only search-critical data that you define
12
+ - Allows you to sort search results by priority
12
13
 
13
14
  ## Installation
14
15
 
@@ -23,32 +24,29 @@ Core features:
23
24
  In the `plugins` array of your [Payload config](https://payloadcms.com/docs/configuration/overview), call the plugin with [options](#options):
24
25
 
25
26
  ```js
26
- import { buildConfig } from 'payload/config';
27
- import search from 'payload-search';
27
+ import { buildConfig } from "payload/config";
28
+ import search from "@payloadcms/plugin-search";
28
29
 
29
30
  const config = buildConfig({
30
31
  collections: [
31
32
  {
32
- slug: 'pages',
33
- fields: []
33
+ slug: "pages",
34
+ fields: [],
34
35
  },
35
36
  {
36
- slug: 'posts',
37
- fields: []
38
- }
37
+ slug: "posts",
38
+ fields: [],
39
+ },
39
40
  ],
40
41
  plugins: [
41
42
  search({
42
- collections: [
43
- 'pages',
44
- 'posts'
45
- ],
43
+ collections: ["pages", "posts"],
46
44
  defaultPriorities: {
47
45
  pages: 10,
48
- posts: 20
49
- }
50
- })
51
- ]
46
+ posts: 20,
47
+ },
48
+ }),
49
+ ],
52
50
  });
53
51
 
54
52
  export default config;
@@ -58,7 +56,7 @@ export default config;
58
56
 
59
57
  #### `collections`
60
58
 
61
- An array of collections slugs to enable sync-to-search. Enabled collections receive a `beforeChange` and `afterDelete` hook that creates, syncs, and deleted the document to its related search document as it changes over time, and also an `afterDelete` hook that deletes.
59
+ An array of collections slugs to enable sync-to-search. Enabled collections receive a `beforeChange` and `afterDelete` hook that creates, syncs, and deleted the document to its related search document as it changes over time, and also an `afterDelete` hook that deletes.
62
60
 
63
61
  #### `defaultPriorities`
64
62
 
@@ -68,11 +66,11 @@ The default priorities first set on `create` operations. Send an object of colle
68
66
  plugins: [
69
67
  searchPlugin({
70
68
  defaultPriorities: {
71
- pages: ({ doc }) => doc.title.startsWith('Hello, world!') ? 1 : 10,
72
- posts: 20
73
- }
74
- })
75
- ]
69
+ pages: ({ doc }) => (doc.title.startsWith("Hello, world!") ? 1 : 10),
70
+ posts: 20,
71
+ },
72
+ }),
73
+ ];
76
74
  ```
77
75
 
78
76
  #### `searchOverrides`
@@ -83,47 +81,42 @@ Override anything on the search collection by sending a [Payload Collection Conf
83
81
  plugins: [
84
82
  searchPlugin({
85
83
  searchOverrides: {
86
- slug: 'search-results'
87
- }
88
- })
89
- ]
84
+ slug: "search-results",
85
+ },
86
+ }),
87
+ ];
90
88
  ```
91
89
 
92
90
  #### `beforeSync`
93
91
 
94
- An [afterChange]([afterChange](https://payloadcms.com/docs/hooks/globals#afterchange)) hook that is called before creating or syncing the document to search. This allows you to modify the data in any way before doing so.
92
+ An [afterChange](<[afterChange](https://payloadcms.com/docs/hooks/globals#afterchange)>) hook that is called before creating or syncing the document to search. This allows you to modify the data in any way before doing so.
95
93
 
96
- ```js
97
- plugins: [
98
- searchPlugin({
99
- beforeSync: ({ originalDoc, searchDoc }) => ({
100
- ...searchDoc,
101
- // Modify your docs in any way here, this can be async
102
- excerpt: originalDoc?.excerpt || 'This is a fallback excerpt'
103
- }),
104
- })
105
- ]
106
- ```
94
+ ```js
95
+ plugins: [
96
+ searchPlugin({
97
+ beforeSync: ({ originalDoc, searchDoc }) => ({
98
+ ...searchDoc,
99
+ // Modify your docs in any way here, this can be async
100
+ excerpt: originalDoc?.excerpt || "This is a fallback excerpt",
101
+ }),
102
+ }),
103
+ ];
104
+ ```
107
105
 
108
106
  #### `syncDrafts`
109
107
 
110
- If true, will sync draft documents to search. By default, this plugin will only sync published documents. False by default. You must have [Payload Drafts](https://payloadcms.com/docs/versions/drafts) enabled for this to apply.
108
+ If true, will sync draft documents to search. By default, this plugin will only sync published documents. False by default. You must have [Payload Drafts](https://payloadcms.com/docs/versions/drafts) enabled for this to apply.
111
109
 
112
110
  #### `deleteDrafts`
113
111
 
114
- If true, will delete documents from search that change to draft status. True by default. You must have [Payload Drafts](https://payloadcms.com/docs/versions/drafts) enabled for this to apply.
112
+ If true, will delete documents from search that change to draft status. True by default. You must have [Payload Drafts](https://payloadcms.com/docs/versions/drafts) enabled for this to apply.
115
113
 
116
114
  ## TypeScript
117
115
 
118
116
  All types can be directly imported:
119
117
 
120
118
  ```js
121
- import {
122
- SearchConfig,
123
- BeforeSync
124
- } from '@payloadcms/plugin-search/dist/types';
119
+ import { SearchConfig, BeforeSync } from "@payloadcms/plugin-search/dist/types";
125
120
  ```
126
121
 
127
122
  ## Screenshots
128
-
129
- <!-- ![screenshot 1](https://github.com/@payloadcms/plugin-search/blob/main/images/screenshot-1.jpg?raw=true) -->
@@ -1,3 +1,3 @@
1
- import { CollectionAfterDeleteHook } from 'payload/types';
1
+ import type { CollectionAfterDeleteHook } from 'payload/types';
2
2
  declare const deleteFromSearch: CollectionAfterDeleteHook;
3
3
  export default deleteFromSearch;
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -68,7 +68,9 @@ var deleteFromSearch = function (_a) {
68
68
  deleteSearchDoc();
69
69
  }
70
70
  catch (err) {
71
- console.error(err);
71
+ payload.logger.error({
72
+ err: "Error deleting search doc: ".concat(err),
73
+ });
72
74
  }
73
75
  return doc;
74
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"deleteFromSearch.js","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,gBAAgB,GAA8B,UAAC,EAAyB;QAAhB,OAAO,iBAAA,EAAI,GAAG,SAAA;IAC1E,IAAI;QACF,IAAM,eAAe,GAAG;;;;;4BACC,qBAAM,OAAO,CAAC,IAAI,CAAC;4BACxC,UAAU,EAAE,QAAQ;4BACpB,KAAK,EAAE;gCACL,WAAW,EAAE;oCACX,MAAM,EAAE,GAAG,CAAC,EAAE;iCACf;6BACF;4BACD,KAAK,EAAE,CAAC;yBACT,CAAC,EAAA;;wBARI,cAAc,GAAG,SAQd;wBAET,IAAI,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,CAAC,EAAE;4BAC7B,OAAO,CAAC,MAAM,CAAC;gCACb,UAAU,EAAE,QAAQ;gCACpB,EAAE,EAAE,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,CAAC,0CAAE,EAAE;6BAClC,CAAC,CAAC;yBACJ;;;;aACF,CAAC;QAEF,eAAe,EAAE,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACpB;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"deleteFromSearch.js","sourceRoot":"","sources":["../../../src/Search/hooks/deleteFromSearch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,gBAAgB,GAA8B,UAAC,EAAyB;QAAhB,OAAO,iBAAA,EAAI,GAAG,SAAA;IAC1E,IAAI;QACF,IAAM,eAAe,GAAG;;;;;4BACC,qBAAM,OAAO,CAAC,IAAI,CAAC;4BACxC,UAAU,EAAE,QAAQ;4BACpB,KAAK,EAAE;gCACL,WAAW,EAAE;oCACX,MAAM,EAAE,GAAG,CAAC,EAAE;iCACf;6BACF;4BACD,KAAK,EAAE,CAAC;yBACT,CAAC,EAAA;;wBARI,cAAc,GAAG,SAQrB;wBAEF,IAAI,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,CAAC,EAAE;4BAC7B,OAAO,CAAC,MAAM,CAAC;gCACb,UAAU,EAAE,QAAQ;gCACpB,EAAE,EAAE,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,CAAC,0CAAE,EAAE;6BAClC,CAAC,CAAA;yBACH;;;;aACF,CAAA;QAED,eAAe,EAAE,CAAA;KAClB;IAAC,OAAO,GAAY,EAAE;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,GAAG,EAAE,qCAA8B,GAAG,CAAE;SACzC,CAAC,CAAA;KACH;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,kBAAe,gBAAgB,CAAA"}
@@ -1,3 +1,3 @@
1
- import { SyncWithSearch } from '../../types';
1
+ import type { SyncWithSearch } from '../../types';
2
2
  declare const syncWithSearch: SyncWithSearch;
3
3
  export default syncWithSearch;
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
29
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
30
  if (y = 0, t) op = [op[0] & 2, t.value];
31
31
  switch (op[0]) {
@@ -49,16 +49,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  var syncWithSearch = function (args) { return __awaiter(void 0, void 0, void 0, function () {
51
51
  var payload, doc, operation,
52
- // @ts-ignore
52
+ // @ts-expect-error
53
53
  collection,
54
- // @ts-ignore
54
+ // @ts-expect-error
55
55
  searchConfig, _a, title, id, status, _b, beforeSync, syncDrafts, deleteDrafts, defaultPriorities, dataToSave, defaultPriority, _c, _d, priority, err_1, doSync, searchDocQuery, docs, foundDoc, duplicativeDocs, searchDocID, err_2, err_3;
56
56
  return __generator(this, function (_e) {
57
57
  switch (_e.label) {
58
58
  case 0:
59
59
  payload = args.req.payload, doc = args.doc, operation = args.operation, collection = args.collection, searchConfig = args.searchConfig;
60
60
  _a = doc || {}, title = _a.title, id = _a.id, status = _a._status;
61
- _b = searchConfig, beforeSync = _b.beforeSync, syncDrafts = _b.syncDrafts, deleteDrafts = _b.deleteDrafts, defaultPriorities = _b.defaultPriorities;
61
+ _b = searchConfig // todo fix SyncWithSearch type, see note in ./types.ts
62
+ , beforeSync = _b.beforeSync, syncDrafts = _b.syncDrafts, deleteDrafts = _b.deleteDrafts, defaultPriorities = _b.defaultPriorities;
62
63
  dataToSave = {
63
64
  title: title,
64
65
  doc: {
@@ -70,7 +71,7 @@ var syncWithSearch = function (args) { return __awaiter(void 0, void 0, void 0,
70
71
  return [4 /*yield*/, beforeSync({
71
72
  originalDoc: doc,
72
73
  searchDoc: dataToSave,
73
- payload: payload
74
+ payload: payload,
74
75
  })];
75
76
  case 1:
76
77
  dataToSave = _e.sent();
@@ -166,7 +167,7 @@ var syncWithSearch = function (args) { return __awaiter(void 0, void 0, void 0,
166
167
  });
167
168
  }
168
169
  catch (err) {
169
- payload.logger.error("Error deleting search document.");
170
+ payload.logger.error("Error deleting search document: ".concat(err));
170
171
  }
171
172
  }
172
173
  }
@@ -178,20 +179,18 @@ var syncWithSearch = function (args) { return __awaiter(void 0, void 0, void 0,
178
179
  });
179
180
  }
180
181
  catch (err) {
181
- payload.logger.error(err);
182
- payload.logger.error("Error creating search document.");
182
+ payload.logger.error("Error creating search document: ".concat(err));
183
183
  }
184
184
  }
185
185
  return [3 /*break*/, 13];
186
186
  case 12:
187
187
  err_2 = _e.sent();
188
- payload.logger.error("Error finding search document.");
188
+ payload.logger.error("Error finding search document: ".concat(err_2));
189
189
  return [3 /*break*/, 13];
190
190
  case 13: return [3 /*break*/, 15];
191
191
  case 14:
192
192
  err_3 = _e.sent();
193
- payload.logger.error(err_3);
194
- payload.logger.error("Error syncing search document related to ".concat(collection, " with id: '").concat(id, "'"));
193
+ payload.logger.error("Error syncing search document related to ".concat(collection, " with id: '").concat(id, "': ").concat(err_3));
195
194
  return [3 /*break*/, 15];
196
195
  case 15: return [2 /*return*/, doc];
197
196
  }
@@ -1 +1 @@
1
- {"version":3,"file":"syncWithSearch.js","sourceRoot":"","sources":["../../../src/Search/hooks/syncWithSearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncWithSearch.js","sourceRoot":"","sources":["../../../src/Search/hooks/syncWithSearch.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { CollectionConfig } from 'payload/types';
2
- import { SearchConfig } from '../types';
1
+ import type { CollectionConfig } from 'payload/types';
2
+ import type { SearchConfig } from '../types';
3
3
  export declare const generateSearchCollection: (searchConfig: SearchConfig) => CollectionConfig;
@@ -7,62 +7,62 @@ exports.generateSearchCollection = void 0;
7
7
  var ts_deepmerge_1 = __importDefault(require("ts-deepmerge"));
8
8
  var ui_1 = require("./ui");
9
9
  // all settings can be overridden by the config
10
- var generateSearchCollection = function (searchConfig) { return (0, ts_deepmerge_1.default)({
11
- slug: 'search',
12
- labels: {
13
- singular: 'Search Result',
14
- plural: 'Search Results',
15
- },
16
- admin: {
17
- useAsTitle: 'title',
18
- defaultColumns: [
19
- 'title',
20
- ],
21
- description: '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.',
22
- enableRichTextRelationship: false,
23
- },
24
- access: {
25
- read: function () { return true; },
26
- create: function () { return false; },
27
- },
28
- fields: [
29
- {
30
- name: 'title',
31
- type: 'text',
32
- admin: {
33
- readOnly: true,
34
- }
10
+ var generateSearchCollection = function (searchConfig) {
11
+ return (0, ts_deepmerge_1.default)({
12
+ slug: 'search',
13
+ labels: {
14
+ singular: 'Search Result',
15
+ plural: 'Search Results',
35
16
  },
36
- {
37
- name: 'priority',
38
- type: 'number',
39
- admin: {
40
- position: 'sidebar'
41
- }
17
+ admin: {
18
+ useAsTitle: 'title',
19
+ defaultColumns: ['title'],
20
+ description: '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.',
21
+ enableRichTextRelationship: false,
42
22
  },
43
- {
44
- name: 'doc',
45
- type: 'relationship',
46
- relationTo: (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.collections) || [],
47
- required: true,
48
- index: true,
49
- maxDepth: 0,
50
- admin: {
51
- readOnly: true,
52
- position: 'sidebar'
53
- },
23
+ access: {
24
+ read: function () { return true; },
25
+ create: function () { return false; },
54
26
  },
55
- {
56
- name: 'docUrl',
57
- type: 'ui',
58
- admin: {
59
- position: 'sidebar',
60
- components: {
61
- Field: ui_1.LinkToDoc
62
- }
27
+ fields: [
28
+ {
29
+ name: 'title',
30
+ type: 'text',
31
+ admin: {
32
+ readOnly: true,
33
+ },
63
34
  },
64
- },
65
- ],
66
- }, (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchOverrides) || {}); };
35
+ {
36
+ name: 'priority',
37
+ type: 'number',
38
+ admin: {
39
+ position: 'sidebar',
40
+ },
41
+ },
42
+ {
43
+ name: 'doc',
44
+ type: 'relationship',
45
+ relationTo: (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.collections) || [],
46
+ required: true,
47
+ index: true,
48
+ maxDepth: 0,
49
+ admin: {
50
+ readOnly: true,
51
+ position: 'sidebar',
52
+ },
53
+ },
54
+ {
55
+ name: 'docUrl',
56
+ type: 'ui',
57
+ admin: {
58
+ position: 'sidebar',
59
+ components: {
60
+ Field: ui_1.LinkToDoc,
61
+ },
62
+ },
63
+ },
64
+ ],
65
+ }, (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchOverrides) || {});
66
+ };
67
67
  exports.generateSearchCollection = generateSearchCollection;
68
68
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":";;;;;;AAEA,8DAAqC;AACrC,2BAAiC;AAEjC,+CAA+C;AACxC,IAAM,wBAAwB,GAAG,UAAC,YAA0B,IAAuB,OAAA,IAAA,sBAAS,EAAC;IAClG,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE;QACN,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,gBAAgB;KACzB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,OAAO;QACnB,cAAc,EAAE;YACd,OAAO;SACR;QACD,WAAW,EAAE,kMAAkM;QAC/M,0BAA0B,EAAE,KAAK;KAClC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAe,OAAA,IAAI,EAAJ,CAAI;QACzB,MAAM,EAAE,cAAe,OAAA,KAAK,EAAL,CAAK;KAC7B;IACD,MAAM,EAAE;QACN;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;aACf;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE;gBACL,QAAQ,EAAE,SAAS;aACpB;SACF;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,KAAI,EAAE;YAC3C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,SAAS;aACpB;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,KAAK,EAAE;gBACL,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE;oBACV,KAAK,EAAE,cAAS;iBACjB;aACF;SACF;KACF;CACF,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,KAAI,EAAE,CAAC,EAxDmD,CAwDnD,CAAC;AAxD3B,QAAA,wBAAwB,4BAwDG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Search/index.ts"],"names":[],"mappings":";;;;;;AACA,8DAAoC;AAGpC,2BAAgC;AAEhC,+CAA+C;AACxC,IAAM,wBAAwB,GAAG,UAAC,YAA0B;IACjE,OAAA,IAAA,sBAAS,EACP;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE;YACN,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,gBAAgB;SACzB;QACD,KAAK,EAAE;YACL,UAAU,EAAE,OAAO;YACnB,cAAc,EAAE,CAAC,OAAO,CAAC;YACzB,WAAW,EACT,kMAAkM;YACpM,0BAA0B,EAAE,KAAK;SAClC;QACD,MAAM,EAAE;YACN,IAAI,EAAE,cAAe,OAAA,IAAI,EAAJ,CAAI;YACzB,MAAM,EAAE,cAAe,OAAA,KAAK,EAAL,CAAK;SAC7B;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;iBACf;aACF;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE;oBACL,QAAQ,EAAE,SAAS;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,KAAI,EAAE;gBAC3C,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,SAAS;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE;oBACL,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE;wBACV,KAAK,EAAE,cAAS;qBACjB;iBACF;aACF;SACF;KACF,EACD,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,KAAI,EAAE,CACpC;AA1DD,CA0DC,CAAA;AA3DU,QAAA,wBAAwB,4BA2DlC"}
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.LinkToDoc = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var forms_1 = require("payload/components/forms");
9
- var CopyToClipboard_1 = __importDefault(require("payload/dist/admin/components/elements/CopyToClipboard"));
10
9
  var utilities_1 = require("payload/components/utilities");
10
+ var CopyToClipboard_1 = __importDefault(require("payload/dist/admin/components/elements/CopyToClipboard"));
11
11
  var LinkToDoc = function () {
12
12
  var form = (0, forms_1.useWatchForm)();
13
13
  var fields = form.fields;
@@ -18,13 +18,13 @@ var LinkToDoc = function () {
18
18
  return (react_1.default.createElement("div", null,
19
19
  react_1.default.createElement("div", null,
20
20
  react_1.default.createElement("span", { className: "label", style: {
21
- color: '#9A9A9A'
21
+ color: '#9A9A9A',
22
22
  } }, "Doc URL"),
23
23
  react_1.default.createElement(CopyToClipboard_1.default, { value: href })),
24
24
  react_1.default.createElement("div", { style: {
25
25
  overflow: 'hidden',
26
26
  textOverflow: 'ellipsis',
27
- fontWeight: '600'
27
+ fontWeight: '600',
28
28
  } },
29
29
  react_1.default.createElement("a", { href: href }, href))));
30
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Search/ui/index.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAC1B,kDAAwD;AACxD,2GAAqF;AAGrF,0DAAyD;AAWlD,IAAM,SAAS,GAAsB;IAC1C,IAAM,IAAI,GAAG,IAAA,oBAAY,GAAE,CAAC;IAC5B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAuB,CAAC;IAIxC,IAAA,KAKA,MAAM,UAFL,EAFC,UAAU,gBAAA,EACH,KAAK,WACb,CAEM;IAEX,IAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAGzB,IAAA,SAAS,GAIP,MAAM,UAJC,EACT,KAGE,MAAM,OADF,EAFN,qBAEI,EAAE,KAAA,EADG,UAAU,WACb,CACG;IAEX,IAAM,IAAI,GAAG,UAAG,SAAS,SAAG,UAAU,0BAAgB,UAAU,cAAI,KAAK,CAAE,CAAA;IAE3E,OAAO,CACL;QACE;YACE,wCACE,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE;oBACL,KAAK,EAAE,SAAS;iBACjB,cAGI;YACP,8BAAC,yBAAe,IACd,KAAK,EAAE,IAAc,GACrB,CACE;QACN,uCACE,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,UAAU;gBACxB,UAAU,EAAE,KAAK;aAClB;YAED,qCAAG,IAAI,EAAE,IAAc,IACpB,IAAI,CACH,CACA,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AApDW,QAAA,SAAS,aAoDpB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Search/ui/index.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAyB;AACzB,kDAAuD;AACvD,0DAAwD;AACxD,2GAAoF;AAa7E,IAAM,SAAS,GAAsB;IAC1C,IAAM,IAAI,GAAG,IAAA,oBAAY,GAAE,CAAA;IAC3B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAuB,CAAA;IAIvC,IAAA,KAEA,MAAM,UAF6B,EAA1B,UAAU,gBAAA,EAAS,KAAK,WAAE,CAE7B;IAEV,IAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAA;IAGxB,IAAA,SAAS,GAIP,MAAM,UAJC,EACT,KAGE,MAAM,OADF,EAFN,qBAEI,EAAE,KAAA,EADG,UAAU,WACb,CACE;IAEV,IAAM,IAAI,GAAG,UAAG,SAAS,SAAG,UAAU,0BAAgB,UAAU,cAAI,KAAK,CAAE,CAAA;IAE3E,OAAO,CACL;QACE;YACE,wCACE,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE;oBACL,KAAK,EAAE,SAAS;iBACjB,cAGI;YACP,8BAAC,yBAAe,IAAC,KAAK,EAAE,IAAc,GAAI,CACtC;QACN,uCACE,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,UAAU;gBACxB,UAAU,EAAE,KAAK;aAClB;YAED,qCAAG,IAAI,EAAE,IAAc,IAAG,IAAI,CAAK,CAC/B,CACF,CACP,CAAA;AACH,CAAC,CAAA;AA7CY,QAAA,SAAS,aA6CrB"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Config } from 'payload/config';
2
- import { SearchConfig } from './types';
1
+ import type { Config } from 'payload/config';
2
+ import type { SearchConfig } from './types';
3
3
  declare const Search: (incomingSearchConfig: SearchConfig) => (config: Config) => Config;
4
4
  export default Search;
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
29
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
30
  if (y = 0, t) op = [op[0] & 2, t.value];
31
31
  switch (op[0]) {
@@ -60,37 +60,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
60
60
  };
61
61
  Object.defineProperty(exports, "__esModule", { value: true });
62
62
  var Search_1 = require("./Search");
63
- var syncWithSearch_1 = __importDefault(require("./Search/hooks/syncWithSearch"));
64
63
  var deleteFromSearch_1 = __importDefault(require("./Search/hooks/deleteFromSearch"));
65
- var Search = function (incomingSearchConfig) { return function (config) {
66
- var _a;
67
- var collections = config.collections;
68
- if (collections) {
69
- var searchConfig_1 = __assign(__assign({}, incomingSearchConfig), { syncDrafts: false, deleteDrafts: true });
70
- // add a beforeChange hook to every search-enabled collection
71
- var collectionsWithSearchHooks = (_a = config === null || config === void 0 ? void 0 : config.collections) === null || _a === void 0 ? void 0 : _a.map(function (collection) {
72
- var existingHooks = collection.hooks;
73
- var enabledCollections = searchConfig_1.collections || [];
74
- var isEnabled = enabledCollections.indexOf(collection.slug) > -1;
75
- if (isEnabled) {
76
- return __assign(__assign({}, collection), { hooks: __assign(__assign({}, collection.hooks), { afterChange: __spreadArray(__spreadArray([], ((existingHooks === null || existingHooks === void 0 ? void 0 : existingHooks.afterChange) || []), true), [
77
- function (args) { return __awaiter(void 0, void 0, void 0, function () {
78
- return __generator(this, function (_a) {
79
- (0, syncWithSearch_1.default)(__assign(__assign({}, args), { collection: collection.slug, searchConfig: searchConfig_1 }));
80
- return [2 /*return*/];
81
- });
82
- }); },
83
- ], false), afterDelete: __spreadArray(__spreadArray([], ((existingHooks === null || existingHooks === void 0 ? void 0 : existingHooks.afterDelete) || []), true), [
84
- deleteFromSearch_1.default,
85
- ], false) }) });
86
- }
87
- return collection;
88
- }).filter(Boolean);
89
- return __assign(__assign({}, config), { collections: __spreadArray(__spreadArray([], collectionsWithSearchHooks || [], true), [
90
- (0, Search_1.generateSearchCollection)(searchConfig_1),
91
- ], false) });
92
- }
93
- return config;
94
- }; };
64
+ var syncWithSearch_1 = __importDefault(require("./Search/hooks/syncWithSearch"));
65
+ var Search = function (incomingSearchConfig) {
66
+ return function (config) {
67
+ var _a;
68
+ var collections = config.collections;
69
+ if (collections) {
70
+ var searchConfig_1 = __assign(__assign({}, incomingSearchConfig), { syncDrafts: false, deleteDrafts: true });
71
+ // add a beforeChange hook to every search-enabled collection
72
+ var collectionsWithSearchHooks = (_a = config === null || config === void 0 ? void 0 : config.collections) === null || _a === void 0 ? void 0 : _a.map(function (collection) {
73
+ var existingHooks = collection.hooks;
74
+ var enabledCollections = searchConfig_1.collections || [];
75
+ var isEnabled = enabledCollections.indexOf(collection.slug) > -1;
76
+ if (isEnabled) {
77
+ return __assign(__assign({}, collection), { hooks: __assign(__assign({}, collection.hooks), { afterChange: __spreadArray(__spreadArray([], ((existingHooks === null || existingHooks === void 0 ? void 0 : existingHooks.afterChange) || []), true), [
78
+ function (args) { return __awaiter(void 0, void 0, void 0, function () {
79
+ return __generator(this, function (_a) {
80
+ (0, syncWithSearch_1.default)(__assign(__assign({}, args), { collection: collection.slug, searchConfig: searchConfig_1 }));
81
+ return [2 /*return*/];
82
+ });
83
+ }); },
84
+ ], false), afterDelete: __spreadArray(__spreadArray([], ((existingHooks === null || existingHooks === void 0 ? void 0 : existingHooks.afterDelete) || []), true), [deleteFromSearch_1.default], false) }) });
85
+ }
86
+ return collection;
87
+ }).filter(Boolean);
88
+ return __assign(__assign({}, config), { collections: __spreadArray(__spreadArray([], (collectionsWithSearchHooks || []), true), [
89
+ (0, Search_1.generateSearchCollection)(searchConfig_1),
90
+ ], false) });
91
+ }
92
+ return config;
93
+ };
94
+ };
95
95
  exports.default = Search;
96
96
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAoD;AACpD,iFAA2D;AAC3D,qFAA+D;AAG/D,IAAM,MAAM,GAAG,UAAC,oBAAkC,IAAK,OAAA,UAAC,MAAc;;IAElE,IAAA,WAAW,GACT,MAAM,YADG,CACF;IAEX,IAAI,WAAW,EAAE;QACf,IAAM,cAAY,yBACb,oBAAoB,KACvB,UAAU,EAAE,KAAK,EACjB,YAAY,EAAE,IAAI,GAEnB,CAAC;QAEF,6DAA6D;QAC7D,IAAM,0BAA0B,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,GAAG,CAAC,UAAC,UAAU;YAEnE,IAAO,aAAa,GAClB,UAAU,MADQ,CACP;YAEf,IAAM,kBAAkB,GAAG,cAAY,CAAC,WAAW,IAAI,EAAE,CAAC;YAC1D,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,SAAS,EAAE;gBACb,6BACK,UAAU,KACb,KAAK,wBACA,UAAU,CAAC,KAAK,KACnB,WAAW,kCACN,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAI,EAAE,CAAC;4BACrC,UAAO,IAAS;;oCACd,IAAA,wBAAc,wBACT,IAAI,KACP,UAAU,EAAE,UAAU,CAAC,IAAI,EAC3B,YAAY,gBAAA,IACZ,CAAA;;;iCACH;mCAEH,WAAW,kCACN,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAI,EAAE,CAAC;4BACrC,0BAAgB;wCAGpB;aACH;YAED,OAAO,UAAU,CAAC;QACpB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,6BACK,MAAM,KACT,WAAW,kCACN,0BAA0B,IAAI,EAAE;gBACnC,IAAA,iCAAwB,EAAC,cAAY,CAAC;yBAExC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,EAzDsD,CAyDtD,CAAC;AAEF,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mCAAmD;AACnD,qFAA8D;AAC9D,iFAA0D;AAG1D,IAAM,MAAM,GACV,UAAC,oBAAkC;IACnC,OAAA,UAAC,MAAc;;QACL,IAAA,WAAW,GAAK,MAAM,YAAX,CAAW;QAE9B,IAAI,WAAW,EAAE;YACf,IAAM,cAAY,yBACb,oBAAoB,KACvB,UAAU,EAAE,KAAK,EACjB,YAAY,EAAE,IAAI,GAEnB,CAAA;YAED,6DAA6D;YAC7D,IAAM,0BAA0B,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAClD,GAAG,CAAC,UAAA,UAAU;gBACN,IAAO,aAAa,GAAK,UAAU,MAAf,CAAe;gBAE3C,IAAM,kBAAkB,GAAG,cAAY,CAAC,WAAW,IAAI,EAAE,CAAA;gBACzD,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBAClE,IAAI,SAAS,EAAE;oBACb,6BACK,UAAU,KACb,KAAK,wBACA,UAAU,CAAC,KAAK,KACnB,WAAW,kCACN,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAI,EAAE,CAAC;gCACrC,UAAO,IAAS;;wCACd,IAAA,wBAAc,wBACT,IAAI,KACP,UAAU,EAAE,UAAU,CAAC,IAAI,EAC3B,YAAY,gBAAA,IACZ,CAAA;;;qCACH;uCAEH,WAAW,kCAAM,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAI,EAAE,CAAC,UAAE,0BAAgB,gBAExE;iBACF;gBAED,OAAO,UAAU,CAAA;YACnB,CAAC,EACA,MAAM,CAAC,OAAO,CAAC,CAAA;YAElB,6BACK,MAAM,KACT,WAAW,kCACN,CAAC,0BAA0B,IAAI,EAAE,CAAC;oBACrC,IAAA,iCAAwB,EAAC,cAAY,CAAC;6BAEzC;SACF;QAED,OAAO,MAAM,CAAA;IACf,CAAC;AApDD,CAoDC,CAAA;AAEH,kBAAe,MAAM,CAAA"}
package/dist/types.d.ts CHANGED
@@ -1,21 +1,21 @@
1
- import { Payload } from 'payload';
2
- import { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
3
- export declare type DocToSync = {
1
+ import type { Payload } from 'payload';
2
+ import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
3
+ export interface DocToSync {
4
4
  [key: string]: any;
5
5
  title: string;
6
6
  doc: {
7
7
  relationTo: string;
8
8
  value: string;
9
9
  };
10
- };
11
- export declare type BeforeSync = (args: {
10
+ }
11
+ export type BeforeSync = (args: {
12
12
  originalDoc: {
13
13
  [key: string]: any;
14
14
  };
15
15
  searchDoc: DocToSync;
16
16
  payload: Payload;
17
17
  }) => DocToSync | Promise<DocToSync>;
18
- export declare type SearchConfig = {
18
+ export interface SearchConfig {
19
19
  searchOverrides?: Partial<CollectionConfig>;
20
20
  collections?: string[];
21
21
  defaultPriorities?: {
@@ -24,5 +24,5 @@ export declare type SearchConfig = {
24
24
  beforeSync?: BeforeSync;
25
25
  syncDrafts?: boolean;
26
26
  deleteDrafts?: boolean;
27
- };
28
- export declare type SyncWithSearch = CollectionAfterChangeHook;
27
+ }
28
+ export type SyncWithSearch = CollectionAfterChangeHook;
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-search",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "homepage:": "https://payloadcms.com",
5
5
  "repository": "git@github.com:payloadcms/plugin-search.git",
6
- "description": "Search plugin for Payload CMS",
6
+ "description": "Search plugin for Payload",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
9
9
  "scripts": {
10
10
  "build": "tsc",
11
- "test": "echo \"Error: no test specified\" && exit 1"
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "lint": "eslint src",
13
+ "lint:fix": "eslint --fix --ext .ts,.tsx src"
12
14
  },
13
15
  "keywords": [
14
16
  "payload",
@@ -22,18 +24,38 @@
22
24
  "author": "dev@trbl.design",
23
25
  "license": "MIT",
24
26
  "peerDependencies": {
25
- "payload": "^0.18.5",
27
+ "payload": "^0.18.5 || ^1.0.0",
26
28
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
27
29
  },
30
+ "dependencies": {
31
+ "ts-deepmerge": "^2.0.1"
32
+ },
28
33
  "devDependencies": {
29
- "payload": "^0.18.5",
30
- "react": "^17.0.2",
31
- "typescript": "^4.5.5"
34
+ "@payloadcms/eslint-config": "^0.0.1",
35
+ "@types/express": "^4.17.9",
36
+ "@types/node": "18.11.3",
37
+ "@types/react": "18.0.21",
38
+ "@typescript-eslint/eslint-plugin": "^5.51.0",
39
+ "@typescript-eslint/parser": "^5.51.0",
40
+ "copyfiles": "^2.4.1",
41
+ "cross-env": "^7.0.3",
42
+ "eslint": "^8.19.0",
43
+ "eslint-config-prettier": "^8.5.0",
44
+ "eslint-plugin-filenames": "^1.3.2",
45
+ "eslint-plugin-import": "2.25.4",
46
+ "eslint-plugin-prettier": "^4.0.0",
47
+ "eslint-plugin-react-hooks": "^4.6.0",
48
+ "eslint-plugin-simple-import-sort": "^10.0.0",
49
+ "nodemon": "^2.0.6",
50
+ "payload": "^1.8.2",
51
+ "prettier": "^2.7.1",
52
+ "react": "^18.0.0",
53
+ "ts-node": "^9.1.1",
54
+ "typescript": "^4.8.4"
32
55
  },
33
56
  "files": [
34
- "dist"
35
- ],
36
- "dependencies": {
37
- "ts-deepmerge": "^2.0.1"
38
- }
57
+ "dist",
58
+ "types.js",
59
+ "types.d.ts"
60
+ ]
39
61
  }
package/types.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/types';
package/types.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/types');