@vegan-friendly/strapi-plugin-elasticsearch 0.1.0-alpha.2 → 0.1.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.
- package/dist/admin/index.d.ts +8 -0
- package/dist/admin/index.js +92 -0
- package/dist/admin/pluginId.d.ts +2 -0
- package/dist/admin/pluginId.js +8 -0
- package/dist/admin/src/components/Initializer/index.js +2 -1
- package/dist/admin/src/components/SubNavigation/index.js +10 -8
- package/dist/admin/src/pages/ConfigureCollectionList/index.js +40 -28
- package/dist/admin/src/pages/Homepage/index.js +20 -21
- package/dist/admin/src/pluginId.d.ts +1 -1
- package/dist/admin/src/utils/apiUrls.js +1 -0
- package/dist/admin/src/utils/axiosInstance.js +1 -2
- package/dist/package.json +63 -0
- package/dist/server/bootstrap.d.ts +4 -0
- package/dist/server/bootstrap.js +3 -3
- package/dist/server/config/index.d.ts +5 -0
- package/dist/server/config/index.js +2 -1
- package/dist/server/content-types/index.d.ts +83 -2
- package/dist/server/content-types/index.js +9 -5
- package/dist/server/content-types/indexing-logs.d.ts +32 -0
- package/dist/server/content-types/indexing-logs.js +22 -24
- package/dist/server/content-types/tasks.d.ts +46 -0
- package/dist/server/content-types/tasks.js +33 -38
- package/dist/server/controllers/configure-indexing.d.ts +11 -0
- package/dist/server/controllers/configure-indexing.js +3 -2
- package/dist/server/controllers/index.d.ts +33 -5
- package/dist/server/controllers/index.js +15 -11
- package/dist/server/controllers/log-indexing.d.ts +6 -0
- package/dist/server/controllers/log-indexing.js +3 -2
- package/dist/server/controllers/perform-indexing.d.ts +8 -0
- package/dist/server/controllers/perform-indexing.js +3 -2
- package/dist/server/controllers/perform-search.d.ts +4 -1
- package/dist/server/controllers/perform-search.js +11 -8
- package/dist/server/controllers/setup-info.d.ts +6 -0
- package/dist/server/controllers/setup-info.js +2 -1
- package/dist/server/destroy.d.ts +4 -0
- package/dist/server/destroy.js +2 -1
- package/dist/server/index.d.ts +312 -10
- package/dist/server/index.js +25 -21
- package/dist/server/middlewares/index.d.ts +2 -0
- package/dist/server/middlewares/index.js +2 -1
- package/dist/server/policies/index.d.ts +2 -0
- package/dist/server/policies/index.js +2 -1
- package/dist/server/register.d.ts +4 -0
- package/dist/server/register.js +2 -1
- package/dist/server/routes/configure-indexing.d.ts +12 -0
- package/dist/server/routes/configure-indexing.js +2 -1
- package/dist/server/routes/index.d.ts +58 -5
- package/dist/server/routes/index.js +15 -11
- package/dist/server/routes/perform-indexing.d.ts +12 -0
- package/dist/server/routes/perform-indexing.js +2 -1
- package/dist/server/routes/perform-search.d.ts +12 -0
- package/dist/server/routes/perform-search.js +4 -3
- package/dist/server/routes/run-log.d.ts +12 -0
- package/dist/server/routes/run-log.js +3 -2
- package/dist/server/routes/setup-info.d.ts +12 -0
- package/dist/server/routes/setup-info.js +3 -2
- package/dist/server/services/configure-indexing.d.ts +23 -23
- package/dist/server/services/configure-indexing.js +30 -18
- package/dist/server/services/es-interface.d.ts +27 -4
- package/dist/server/services/es-interface.js +13 -14
- package/dist/server/services/helper.d.ts +34 -33
- package/dist/server/services/helper.js +31 -23
- package/dist/server/services/index.d.ts +124 -7
- package/dist/server/services/index.js +19 -15
- package/dist/server/services/log-indexing.d.ts +8 -0
- package/dist/server/services/log-indexing.js +8 -7
- package/dist/server/services/perform-indexing.d.ts +8 -0
- package/dist/server/services/perform-indexing.js +29 -16
- package/dist/server/services/schedule-indexing.d.ts +19 -0
- package/dist/server/services/schedule-indexing.js +13 -12
- package/dist/server/services/transform-content.d.ts +7 -2
- package/dist/server/services/transform-content.js +4 -3
- package/package.json +4 -2
- package/dist/strapi-admin.d.ts +0 -0
- package/dist/strapi-admin.js +0 -2
- package/dist/strapi-server.d.ts +0 -0
- package/dist/strapi-server.js +0 -2
@@ -1,27 +1,28 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = ({ strapi }) => ({
|
3
4
|
async recordIndexingPass(message) {
|
4
5
|
const entry = await strapi.entityService.create('plugin::elasticsearch.indexing-log', {
|
5
6
|
data: {
|
6
7
|
status: 'pass',
|
7
|
-
details: message
|
8
|
-
}
|
8
|
+
details: message,
|
9
|
+
},
|
9
10
|
});
|
10
11
|
},
|
11
12
|
async recordIndexingFail(message) {
|
12
13
|
const entry = await strapi.entityService.create('plugin::elasticsearch.indexing-log', {
|
13
14
|
data: {
|
14
15
|
status: 'fail',
|
15
|
-
details: String(message)
|
16
|
-
}
|
16
|
+
details: String(message),
|
17
|
+
},
|
17
18
|
});
|
18
19
|
},
|
19
20
|
async fetchIndexingLogs(count = 50) {
|
20
21
|
const records = await strapi.entityService.findMany('plugin::elasticsearch.indexing-log', {
|
21
22
|
sort: { createdAt: 'DESC' },
|
22
23
|
start: 0,
|
23
|
-
limit: count
|
24
|
+
limit: count,
|
24
25
|
});
|
25
26
|
return records;
|
26
|
-
}
|
27
|
+
},
|
27
28
|
});
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = ({ strapi }) => ({
|
3
4
|
async rebuildIndex() {
|
4
5
|
const helper = strapi.plugins['elasticsearch'].services.helper;
|
5
6
|
const esInterface = strapi.plugins['elasticsearch'].services.esInterface;
|
@@ -25,7 +26,6 @@ module.exports = ({ strapi }) => ({
|
|
25
26
|
console.log('strapi-plugin-elasticsearch : Indexing of data into the new index complete.');
|
26
27
|
//Step 4 : Move the alias to this new index
|
27
28
|
await esInterface.attachAliasToIndex(newIndexName);
|
28
|
-
;
|
29
29
|
console.log('strapi-plugin-elasticsearch : Attaching the newly created index to the alias.');
|
30
30
|
//Step 3 : Update the search-indexing-name
|
31
31
|
await helper.storeCurrentIndexName(newIndexName);
|
@@ -61,9 +61,9 @@ module.exports = ({ strapi }) => ({
|
|
61
61
|
populate: populateAttrib['populate'],
|
62
62
|
filters: {
|
63
63
|
publishedAt: {
|
64
|
-
$notNull: true
|
65
|
-
}
|
66
|
-
}
|
64
|
+
$notNull: true,
|
65
|
+
},
|
66
|
+
},
|
67
67
|
});
|
68
68
|
}
|
69
69
|
else {
|
@@ -75,10 +75,17 @@ module.exports = ({ strapi }) => ({
|
|
75
75
|
if (entries) {
|
76
76
|
for (let s = 0; s < entries.length; s++) {
|
77
77
|
const item = entries[s];
|
78
|
-
const indexItemId = helper.getIndexItemId({
|
79
|
-
|
78
|
+
const indexItemId = helper.getIndexItemId({
|
79
|
+
collectionName: collectionName,
|
80
|
+
itemId: item.id,
|
81
|
+
});
|
82
|
+
const collectionConfig = await configureIndexingService.getCollectionConfig({
|
83
|
+
collectionName,
|
84
|
+
});
|
80
85
|
const dataToIndex = await helper.extractDataToIndex({
|
81
|
-
collectionName,
|
86
|
+
collectionName,
|
87
|
+
data: item,
|
88
|
+
collectionConfig,
|
82
89
|
});
|
83
90
|
await esInterface.indexDataToSpecificIndex({ itemId: indexItemId, itemData: dataToIndex }, indexName);
|
84
91
|
}
|
@@ -92,7 +99,7 @@ module.exports = ({ strapi }) => ({
|
|
92
99
|
const esInterface = strapi.plugins['elasticsearch'].services.esInterface;
|
93
100
|
const helper = strapi.plugins['elasticsearch'].services.helper;
|
94
101
|
const recs = await scheduleIndexingService.getItemsPendingToBeIndexed();
|
95
|
-
const fullSiteIndexing = recs.filter(r => r.full_site_indexing === true).length > 0;
|
102
|
+
const fullSiteIndexing = recs.filter((r) => r.full_site_indexing === true).length > 0;
|
96
103
|
if (fullSiteIndexing) {
|
97
104
|
await this.rebuildIndex();
|
98
105
|
for (let r = 0; r < recs.length; r++)
|
@@ -108,24 +115,30 @@ module.exports = ({ strapi }) => ({
|
|
108
115
|
if (recs[r].indexing_type !== 'remove-from-index') {
|
109
116
|
const populateAttrib = helper.getPopulateAttribute({ collectionName: col });
|
110
117
|
const item = await strapi.entityService.findOne(col, recs[r].item_id, {
|
111
|
-
populate: populateAttrib['populate']
|
118
|
+
populate: populateAttrib['populate'],
|
112
119
|
});
|
113
120
|
const indexItemId = helper.getIndexItemId({ collectionName: col, itemId: item.id });
|
114
|
-
const collectionConfig = await configureIndexingService.getCollectionConfig({
|
121
|
+
const collectionConfig = await configureIndexingService.getCollectionConfig({
|
122
|
+
collectionName: col,
|
123
|
+
});
|
115
124
|
const dataToIndex = await helper.extractDataToIndex({
|
116
|
-
collectionName: col,
|
125
|
+
collectionName: col,
|
126
|
+
data: item,
|
127
|
+
collectionConfig,
|
117
128
|
});
|
118
129
|
await esInterface.indexData({ itemId: indexItemId, itemData: dataToIndex });
|
119
130
|
await scheduleIndexingService.markIndexingTaskComplete(recs[r].id);
|
120
131
|
}
|
121
132
|
else {
|
122
|
-
const indexItemId = helper.getIndexItemId({
|
133
|
+
const indexItemId = helper.getIndexItemId({
|
134
|
+
collectionName: col,
|
135
|
+
itemId: recs[r].item_id,
|
136
|
+
});
|
123
137
|
await esInterface.removeItemFromIndex({ itemId: indexItemId });
|
124
138
|
await scheduleIndexingService.markIndexingTaskComplete(recs[r].id);
|
125
139
|
}
|
126
|
-
}
|
127
|
-
else
|
128
|
-
{
|
140
|
+
} //index the entire collection
|
141
|
+
else {
|
129
142
|
//PENDING : Index an entire collection
|
130
143
|
await this.indexCollection(col);
|
131
144
|
await scheduleIndexingService.markIndexingTaskComplete(recs[r].id);
|
@@ -0,0 +1,19 @@
|
|
1
|
+
declare const _default: ({ strapi }: {
|
2
|
+
strapi: any;
|
3
|
+
}) => {
|
4
|
+
addFullSiteIndexingTask(): Promise<any>;
|
5
|
+
addCollectionToIndex({ collectionUid }: {
|
6
|
+
collectionUid: any;
|
7
|
+
}): Promise<any>;
|
8
|
+
addItemToIndex({ collectionUid, recordId }: {
|
9
|
+
collectionUid: any;
|
10
|
+
recordId: any;
|
11
|
+
}): Promise<any>;
|
12
|
+
removeItemFromIndex({ collectionUid, recordId }: {
|
13
|
+
collectionUid: any;
|
14
|
+
recordId: any;
|
15
|
+
}): Promise<void>;
|
16
|
+
getItemsPendingToBeIndexed(): Promise<any>;
|
17
|
+
markIndexingTaskComplete(recId: any): Promise<void>;
|
18
|
+
};
|
19
|
+
export default _default;
|
@@ -1,13 +1,14 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = ({ strapi }) => ({
|
3
4
|
async addFullSiteIndexingTask() {
|
4
5
|
const data = await strapi.entityService.create('plugin::elasticsearch.task', {
|
5
6
|
data: {
|
6
7
|
collection_name: '',
|
7
8
|
indexing_status: 'to-be-done',
|
8
9
|
full_site_indexing: true,
|
9
|
-
indexing_type:
|
10
|
-
}
|
10
|
+
indexing_type: 'add-to-index',
|
11
|
+
},
|
11
12
|
});
|
12
13
|
return data;
|
13
14
|
},
|
@@ -17,8 +18,8 @@ module.exports = ({ strapi }) => ({
|
|
17
18
|
collection_name: collectionUid,
|
18
19
|
indexing_status: 'to-be-done',
|
19
20
|
full_site_indexing: false,
|
20
|
-
indexing_type:
|
21
|
-
}
|
21
|
+
indexing_type: 'add-to-index',
|
22
|
+
},
|
22
23
|
});
|
23
24
|
return data;
|
24
25
|
},
|
@@ -29,8 +30,8 @@ module.exports = ({ strapi }) => ({
|
|
29
30
|
collection_name: collectionUid,
|
30
31
|
indexing_status: 'to-be-done',
|
31
32
|
full_site_indexing: false,
|
32
|
-
indexing_type:
|
33
|
-
}
|
33
|
+
indexing_type: 'add-to-index',
|
34
|
+
},
|
34
35
|
});
|
35
36
|
return data;
|
36
37
|
},
|
@@ -41,8 +42,8 @@ module.exports = ({ strapi }) => ({
|
|
41
42
|
collection_name: collectionUid,
|
42
43
|
indexing_status: 'to-be-done',
|
43
44
|
full_site_indexing: false,
|
44
|
-
indexing_type:
|
45
|
-
}
|
45
|
+
indexing_type: 'remove-from-index',
|
46
|
+
},
|
46
47
|
});
|
47
48
|
},
|
48
49
|
async getItemsPendingToBeIndexed() {
|
@@ -54,8 +55,8 @@ module.exports = ({ strapi }) => ({
|
|
54
55
|
async markIndexingTaskComplete(recId) {
|
55
56
|
const entries = await strapi.entityService.update('plugin::elasticsearch.task', recId, {
|
56
57
|
data: {
|
57
|
-
|
58
|
-
}
|
58
|
+
indexing_status: 'done',
|
59
|
+
},
|
59
60
|
});
|
60
|
-
}
|
61
|
+
},
|
61
62
|
});
|
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const markdown_to_txt_1 = require("markdown-to-txt");
|
3
4
|
function transformMarkdownToText(md) {
|
4
5
|
let text = md;
|
5
6
|
try {
|
6
|
-
text = markdownToTxt(md);
|
7
|
+
text = (0, markdown_to_txt_1.markdownToTxt)(md);
|
7
8
|
}
|
8
9
|
catch (err) {
|
9
10
|
console.error('strapi-plugin-elasticsearch : Error while transforming markdown to text.');
|
@@ -11,7 +12,7 @@ function transformMarkdownToText(md) {
|
|
11
12
|
}
|
12
13
|
return text;
|
13
14
|
}
|
14
|
-
|
15
|
+
exports.default = {
|
15
16
|
transform({ content, from }) {
|
16
17
|
if (from === 'markdown')
|
17
18
|
return transformMarkdownToText(content);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vegan-friendly/strapi-plugin-elasticsearch",
|
3
|
-
"version": "0.1.0
|
3
|
+
"version": "0.1.0",
|
4
4
|
"description": "A Strapi plugin to enable using Elasticsearch with Strapi CMS.",
|
5
5
|
"homepage": "https://github.com/vegan-friendly/strapi-plugin-elasticsearch",
|
6
6
|
"strapi": {
|
@@ -36,6 +36,7 @@
|
|
36
36
|
},
|
37
37
|
"dependencies": {
|
38
38
|
"@elastic/elasticsearch": "^8.9.0",
|
39
|
+
"@strapi/design-system": "^1.19.0",
|
39
40
|
"markdown-to-txt": "^2.0.1"
|
40
41
|
},
|
41
42
|
"peerDependencies": {
|
@@ -54,8 +55,9 @@
|
|
54
55
|
},
|
55
56
|
"license": "MIT",
|
56
57
|
"devDependencies": {
|
58
|
+
"@strapi/typescript-utils": "^5.12.5",
|
57
59
|
"@types/node": "^22.14.1",
|
58
60
|
"ts-node": "^10.9.2",
|
59
61
|
"typescript": "^5.8.3"
|
60
62
|
}
|
61
|
-
}
|
63
|
+
}
|
package/dist/strapi-admin.d.ts
DELETED
File without changes
|
package/dist/strapi-admin.js
DELETED
package/dist/strapi-server.d.ts
DELETED
File without changes
|
package/dist/strapi-server.js
DELETED