strapi-plugin-comments 2.0.10 → 2.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.
Files changed (269) hide show
  1. package/README.md +204 -124
  2. package/admin/src/components/ActionButton/styles.d.ts +2 -0
  3. package/admin/src/components/ActionButton/styles.js +13 -8
  4. package/admin/src/components/Avatar/index.d.ts +12 -0
  5. package/admin/src/components/Avatar/index.js +26 -0
  6. package/admin/src/components/ConfirmationDialog/index.d.ts +26 -0
  7. package/admin/src/components/ConfirmationDialog/index.js +36 -55
  8. package/admin/src/components/DiscussionStatus/index.d.ts +9 -0
  9. package/admin/src/components/DiscussionStatus/index.js +22 -31
  10. package/admin/src/components/DiscussionThread/index.d.ts +16 -0
  11. package/admin/src/components/DiscussionThread/index.js +39 -56
  12. package/admin/src/components/DiscussionThreadItem/index.d.ts +9 -0
  13. package/admin/src/components/DiscussionThreadItem/index.js +28 -52
  14. package/admin/src/components/DiscussionThreadItem/styles.d.ts +4 -0
  15. package/admin/src/components/DiscussionThreadItem/styles.js +16 -11
  16. package/admin/src/components/DiscussionThreadItemActions/index.d.ts +19 -0
  17. package/admin/src/components/DiscussionThreadItemActions/index.js +121 -158
  18. package/admin/src/components/DiscussionThreadItemActions/styles.d.ts +2 -0
  19. package/admin/src/components/DiscussionThreadItemActions/styles.js +13 -7
  20. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +17 -0
  21. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +38 -48
  22. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +2 -0
  23. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +12 -6
  24. package/admin/src/components/DiscussionThreadItemFooter/index.d.ts +16 -0
  25. package/admin/src/components/DiscussionThreadItemFooter/index.js +34 -42
  26. package/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +3 -0
  27. package/admin/src/components/DiscussionThreadItemFooter/styles.js +17 -12
  28. package/admin/src/components/DiscussionThreadItemReviewAction/index.d.ts +30 -0
  29. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +77 -91
  30. package/admin/src/components/FormSwitch/index.d.ts +7 -0
  31. package/admin/src/components/FormSwitch/index.js +15 -18
  32. package/admin/src/components/FormSwitch/styles.d.ts +2 -0
  33. package/admin/src/components/FormSwitch/styles.js +14 -8
  34. package/admin/src/components/IconButton/styles.d.ts +2 -0
  35. package/admin/src/components/IconButton/styles.js +16 -9
  36. package/admin/src/components/Initializer/index.d.ts +5 -0
  37. package/admin/src/components/Initializer/index.js +12 -24
  38. package/admin/src/components/LoadingIndicatorOverlay/index.d.ts +3 -0
  39. package/admin/src/components/LoadingIndicatorOverlay/index.js +12 -15
  40. package/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +3 -0
  41. package/admin/src/components/LoadingIndicatorOverlay/styles.js +22 -17
  42. package/admin/src/components/Nav/index.d.ts +7 -0
  43. package/admin/src/components/Nav/index.js +25 -48
  44. package/admin/src/components/PluginIcon/index.d.ts +3 -0
  45. package/admin/src/components/PluginIcon/index.js +10 -12
  46. package/admin/src/components/ReportsReviewModal/index.d.ts +21 -0
  47. package/admin/src/components/ReportsReviewModal/index.js +31 -46
  48. package/admin/src/components/ReportsReviewTable/index.d.ts +21 -0
  49. package/admin/src/components/ReportsReviewTable/index.js +120 -140
  50. package/admin/src/components/StatusBadge/index.d.ts +7 -0
  51. package/admin/src/components/StatusBadge/index.js +12 -17
  52. package/admin/src/components/StatusBadge/styles.d.ts +2 -0
  53. package/admin/src/components/StatusBadge/styles.js +19 -13
  54. package/admin/src/components/TableFilters/index.d.ts +10 -0
  55. package/admin/src/components/TableFilters/index.js +52 -49
  56. package/admin/src/components/TablePagination/index.d.ts +17 -0
  57. package/admin/src/components/TablePagination/index.js +27 -29
  58. package/admin/src/components/icons/comments.d.ts +6 -0
  59. package/admin/src/components/icons/comments.js +11 -8
  60. package/admin/src/components/icons/index.d.ts +6 -0
  61. package/admin/src/components/icons/index.js +15 -6
  62. package/admin/src/components/icons/lock.d.ts +7 -0
  63. package/admin/src/components/icons/lock.js +11 -21
  64. package/admin/src/components/icons/review.d.ts +7 -0
  65. package/admin/src/components/icons/review.js +11 -17
  66. package/admin/src/components/icons/unlock.d.ts +7 -0
  67. package/admin/src/components/icons/unlock.js +11 -19
  68. package/admin/src/hooks/useConfig.d.ts +8 -0
  69. package/admin/src/hooks/useConfig.js +40 -45
  70. package/admin/src/index.d.ts +7 -0
  71. package/admin/src/index.js +98 -92
  72. package/admin/src/pages/App/index.d.ts +4 -0
  73. package/admin/src/pages/App/index.js +43 -67
  74. package/admin/src/pages/App/reducer/actions.d.ts +8 -0
  75. package/admin/src/pages/App/reducer/actions.js +11 -7
  76. package/admin/src/pages/App/reducer/constants.d.ts +4 -0
  77. package/admin/src/pages/App/reducer/constants.js +7 -4
  78. package/admin/src/pages/App/reducer/index.d.ts +9 -0
  79. package/admin/src/pages/App/reducer/index.js +24 -22
  80. package/admin/src/pages/App/reducer/init.d.ts +3 -0
  81. package/admin/src/pages/App/reducer/init.js +6 -4
  82. package/admin/src/pages/App/reducer/selectors.d.ts +6 -0
  83. package/admin/src/pages/App/reducer/selectors.js +17 -34
  84. package/admin/src/pages/App/utils/api.d.ts +2 -0
  85. package/admin/src/pages/App/utils/api.js +14 -11
  86. package/admin/src/pages/ComingSoonPage/index.d.ts +3 -0
  87. package/admin/src/pages/ComingSoonPage/index.js +42 -24
  88. package/admin/src/pages/Details/components/DetailsEntity/index.d.ts +18 -0
  89. package/admin/src/pages/Details/components/DetailsEntity/index.js +49 -77
  90. package/admin/src/pages/Details/components/DetailsFilters/index.d.ts +12 -0
  91. package/admin/src/pages/Details/components/DetailsFilters/index.js +19 -26
  92. package/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +2 -0
  93. package/admin/src/pages/Details/components/DetailsFilters/styles.js +14 -8
  94. package/admin/src/pages/Details/index.d.ts +4 -0
  95. package/admin/src/pages/Details/index.js +94 -133
  96. package/admin/src/pages/Discover/components/DiscoverTableRow/index.d.ts +20 -0
  97. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +128 -139
  98. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +2 -0
  99. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +14 -8
  100. package/admin/src/pages/Discover/index.d.ts +4 -0
  101. package/admin/src/pages/Discover/index.js +129 -170
  102. package/admin/src/pages/Discover/utils/api.d.ts +2 -0
  103. package/admin/src/pages/Discover/utils/api.js +15 -13
  104. package/admin/src/pages/Discover/utils/filtersSchema.d.ts +11 -0
  105. package/admin/src/pages/Discover/utils/filtersSchema.js +8 -6
  106. package/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +2 -0
  107. package/admin/src/pages/Settings/components/RestartAlert/styles.js +14 -8
  108. package/admin/src/pages/Settings/index.d.ts +3 -0
  109. package/admin/src/pages/Settings/index.js +225 -391
  110. package/admin/src/pages/Settings/utils/api.d.ts +7 -0
  111. package/admin/src/pages/Settings/utils/api.js +60 -55
  112. package/admin/src/pages/utils/api.d.ts +12 -0
  113. package/admin/src/pages/utils/api.js +58 -53
  114. package/admin/src/permissions.d.ts +28 -0
  115. package/admin/src/permissions.js +31 -17
  116. package/admin/src/pluginId.d.ts +2 -0
  117. package/admin/src/pluginId.js +29 -5
  118. package/admin/src/reducers.d.ts +7 -0
  119. package/admin/src/reducers.js +10 -6
  120. package/admin/src/translations/en.json +131 -131
  121. package/admin/src/translations/fr.json +132 -1
  122. package/admin/src/translations/pt-BR.json +130 -130
  123. package/admin/src/utils/axiosInstance.d.ts +3 -0
  124. package/admin/src/utils/axiosInstance.js +21 -27
  125. package/admin/src/utils/constants.d.ts +25 -0
  126. package/admin/src/utils/constants.js +23 -22
  127. package/admin/src/utils/getApiUrl.d.ts +3 -0
  128. package/admin/src/utils/getApiUrl.js +6 -5
  129. package/admin/src/utils/getMessage.d.ts +4 -0
  130. package/admin/src/utils/getMessage.js +15 -15
  131. package/admin/src/utils/getRelatedGroups.d.ts +4 -0
  132. package/admin/src/utils/getRelatedGroups.js +5 -3
  133. package/admin/src/utils/getUrl.d.ts +3 -0
  134. package/admin/src/utils/getUrl.js +6 -5
  135. package/admin/src/utils/handleAPIError.d.ts +4 -0
  136. package/admin/src/utils/handleAPIError.js +12 -11
  137. package/admin/src/utils/index.d.ts +12 -0
  138. package/admin/src/utils/index.js +29 -11
  139. package/admin/src/utils/parseRegExp.d.ts +6 -0
  140. package/admin/src/utils/parseRegExp.js +6 -5
  141. package/admin/src/utils/renderEntryTitle.d.ts +4 -0
  142. package/admin/src/utils/renderEntryTitle.js +11 -12
  143. package/admin/src/utils/renderInitials.d.ts +3 -0
  144. package/admin/src/utils/renderInitials.js +10 -5
  145. package/admin/src/utils/resolveCommentStatus.d.ts +4 -0
  146. package/admin/src/utils/resolveCommentStatus.js +17 -21
  147. package/admin/src/utils/resolveCommentStatusColor.d.ts +4 -0
  148. package/admin/src/utils/resolveCommentStatusColor.js +19 -19
  149. package/content-types/comment.d.ts +91 -0
  150. package/content-types/comment.js +87 -88
  151. package/content-types/index.d.ts +143 -0
  152. package/content-types/index.js +15 -10
  153. package/content-types/report.d.ts +48 -0
  154. package/content-types/report.js +44 -49
  155. package/package.json +24 -19
  156. package/permissions.d.ts +18 -0
  157. package/permissions.js +12 -13
  158. package/server/bootstrap.d.ts +4 -0
  159. package/server/bootstrap.js +56 -62
  160. package/server/config/index.d.ts +4 -0
  161. package/server/config/index.js +17 -15
  162. package/server/controllers/admin.d.ts +4 -0
  163. package/server/controllers/admin.js +134 -167
  164. package/server/controllers/client.d.ts +4 -0
  165. package/server/controllers/client.js +120 -112
  166. package/server/controllers/index.d.ts +6 -0
  167. package/server/controllers/index.js +12 -8
  168. package/server/controllers/utils/functions.d.ts +7 -0
  169. package/server/controllers/utils/functions.js +22 -17
  170. package/server/controllers/utils/parsers.d.ts +10 -0
  171. package/server/controllers/utils/parsers.js +47 -19
  172. package/server/destroy.d.ts +3 -0
  173. package/server/destroy.js +3 -4
  174. package/server/graphql/index.d.ts +4 -0
  175. package/server/graphql/index.js +27 -25
  176. package/server/graphql/mutations/createAbuseReport.d.ts +11 -0
  177. package/server/graphql/mutations/createAbuseReport.js +22 -24
  178. package/server/graphql/mutations/createComment.d.ts +14 -0
  179. package/server/graphql/mutations/createComment.js +22 -24
  180. package/server/graphql/mutations/index.d.ts +4 -0
  181. package/server/graphql/mutations/index.js +24 -19
  182. package/server/graphql/mutations/removeComment.d.ts +11 -0
  183. package/server/graphql/mutations/removeComment.js +22 -24
  184. package/server/graphql/mutations/updateComment.d.ts +11 -0
  185. package/server/graphql/mutations/updateComment.js +22 -24
  186. package/server/graphql/queries/findAllFlat.d.ts +19 -0
  187. package/server/graphql/queries/findAllFlat.js +36 -34
  188. package/server/graphql/queries/findAllInHierarchy.d.ts +17 -0
  189. package/server/graphql/queries/findAllInHierarchy.js +30 -30
  190. package/server/graphql/queries/index.d.ts +4 -0
  191. package/server/graphql/queries/index.js +20 -17
  192. package/server/graphql/resolvers-config.d.ts +23 -0
  193. package/server/graphql/resolvers-config.js +11 -11
  194. package/server/graphql/types/comment-author.d.ts +4 -0
  195. package/server/graphql/types/comment-author.js +10 -8
  196. package/server/graphql/types/comment-nested.d.ts +4 -0
  197. package/server/graphql/types/comment-nested.js +17 -15
  198. package/server/graphql/types/comment.d.ts +4 -0
  199. package/server/graphql/types/comment.js +16 -14
  200. package/server/graphql/types/create-comment-author.d.ts +4 -0
  201. package/server/graphql/types/create-comment-author.js +10 -8
  202. package/server/graphql/types/create-comment.d.ts +4 -0
  203. package/server/graphql/types/create-comment.js +10 -8
  204. package/server/graphql/types/create-report.d.ts +4 -0
  205. package/server/graphql/types/create-report.js +10 -8
  206. package/server/graphql/types/id.d.ts +4 -0
  207. package/server/graphql/types/id.js +24 -23
  208. package/server/graphql/types/identify-comment-author.d.ts +4 -0
  209. package/server/graphql/types/identify-comment-author.js +7 -5
  210. package/server/graphql/types/index.d.ts +4 -0
  211. package/server/graphql/types/index.js +36 -17
  212. package/server/graphql/types/remove-comment.d.ts +4 -0
  213. package/server/graphql/types/remove-comment.js +9 -7
  214. package/server/graphql/types/report-reason.d.ts +4 -0
  215. package/server/graphql/types/report-reason.js +10 -8
  216. package/server/graphql/types/report.d.ts +4 -0
  217. package/server/graphql/types/report.js +12 -10
  218. package/server/graphql/types/response-find-all.d.ts +4 -0
  219. package/server/graphql/types/response-find-all.js +8 -6
  220. package/server/graphql/types/response-meta.d.ts +4 -0
  221. package/server/graphql/types/response-meta.js +7 -5
  222. package/server/graphql/types/response-pagination.d.ts +4 -0
  223. package/server/graphql/types/response-pagination.js +12 -10
  224. package/server/graphql/types/update-comment.d.ts +4 -0
  225. package/server/graphql/types/update-comment.js +10 -8
  226. package/server/index.d.ts +26 -0
  227. package/server/index.js +24 -21
  228. package/server/register.d.ts +3 -0
  229. package/server/register.js +3 -4
  230. package/server/routes/admin.d.ts +4 -0
  231. package/server/routes/admin.js +103 -109
  232. package/server/routes/client.d.ts +4 -0
  233. package/server/routes/client.js +84 -46
  234. package/server/routes/index.d.ts +11 -0
  235. package/server/routes/index.js +18 -14
  236. package/server/services/admin.d.ts +5 -0
  237. package/server/services/admin.js +134 -161
  238. package/server/services/client.d.ts +5 -0
  239. package/server/services/client.js +164 -168
  240. package/server/services/common.d.ts +5 -0
  241. package/server/services/common.js +192 -202
  242. package/server/services/graphql.d.ts +5 -0
  243. package/server/services/graphql.js +117 -182
  244. package/server/services/index.d.ts +8 -0
  245. package/server/services/index.js +15 -12
  246. package/server/services/utils/functions.d.ts +13 -0
  247. package/server/services/utils/functions.js +105 -109
  248. package/server/utils/constants.d.ts +9 -0
  249. package/server/utils/constants.js +19 -23
  250. package/server/utils/error.d.ts +19 -0
  251. package/server/utils/error.js +23 -18
  252. package/server/utils/functions.d.ts +6 -0
  253. package/server/utils/functions.js +35 -18
  254. package/strapi-admin.d.ts +3 -0
  255. package/strapi-admin.js +8 -3
  256. package/strapi-server.d.ts +177 -0
  257. package/strapi-server.js +43 -46
  258. package/tsconfig.tsbuildinfo +1 -0
  259. package/types/contentTypes.d.ts +48 -0
  260. package/types/contentTypes.js +3 -0
  261. package/.husky/pre-commit +0 -4
  262. package/LICENSE.md +0 -7
  263. package/__mocks__/initSetup.js +0 -108
  264. package/jest.config.js +0 -7
  265. package/server/controllers/utils/__tests__/functions.test.js +0 -43
  266. package/server/controllers/utils/__tests__/parsers.test.js +0 -94
  267. package/server/services/__tests__/common.test.js +0 -399
  268. package/server/services/utils/__tests__/functions.test.js +0 -53
  269. package/server/utils/__tests__/functions.test.js +0 -17
@@ -1,288 +1,273 @@
1
- 'use strict';
2
-
3
- const BadWordsFilter = require('bad-words');
4
- const { isArray, isNumber, isObject, isNil, isString, isEmpty, first, parseInt, set, get } = require('lodash');
5
- const { REGEX, CONFIG_PARAMS } = require('../utils/constants');
6
- const PluginError = require('./../utils/error');
7
- const {
8
- getModelUid,
9
- getRelatedGroups,
10
- buildNestedStructure,
11
- filterOurResolvedReports,
12
- buildAuthorModel,
13
- buildConfigQueryProp,
14
- } = require('./utils/functions');
15
-
16
- /**
17
- * Comments Plugin - common services
18
- */
19
-
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ const bad_words_1 = __importDefault(require("bad-words"));
6
+ const lodash_1 = require("lodash");
7
+ const constants_1 = require("../utils/constants");
8
+ const error_1 = __importDefault(require("./../utils/error"));
9
+ const functions_1 = require("./utils/functions");
10
+ const PAGE_SIZE = 10;
20
11
  module.exports = ({ strapi }) => ({
21
-
22
12
  async getConfig(prop, defaultValue, useLocal = false) {
23
- const queryProp = buildConfigQueryProp(prop);
13
+ const queryProp = (0, functions_1.buildConfigQueryProp)(prop);
24
14
  const pluginStore = await this.getPluginStore();
25
- const config = await pluginStore.get({ key: 'config' });
26
-
15
+ const config = await pluginStore.get({
16
+ key: "config",
17
+ });
27
18
  let result;
28
19
  if (config && !useLocal) {
29
- result = queryProp ? get(config, queryProp, defaultValue) : config;
30
- } else {
20
+ result = queryProp ? (0, lodash_1.get)(config, queryProp, defaultValue) : config;
21
+ }
22
+ else {
31
23
  result = this.getLocalConfig(queryProp, defaultValue);
32
24
  }
33
- return isNil(result) ? defaultValue : result;
25
+ return (0, lodash_1.isNil)(result) ? defaultValue : result;
34
26
  },
35
-
36
27
  async getPluginStore() {
37
- return strapi.store({ type: 'plugin', name: 'comments' });
28
+ return strapi.store({ type: "plugin", name: "comments" });
38
29
  },
39
-
40
30
  getLocalConfig(prop, defaultValue) {
41
- const queryProp = buildConfigQueryProp(prop);
42
- const result = strapi.config.get(`plugin.comments${ queryProp ? '.' + queryProp : ''}`);
43
- return isNil(result) ? defaultValue : result;
31
+ const queryProp = (0, functions_1.buildConfigQueryProp)(prop);
32
+ const result = strapi.config.get(`plugin.comments${queryProp ? "." + queryProp : ""}`);
33
+ return (0, lodash_1.isNil)(result) ? defaultValue : result;
44
34
  },
45
-
46
- // Find comments in the flat structure
47
- async findAllFlat({
48
- query = {},
49
- populate = {},
50
- sort,
51
- pagination }, relatedEntity = null) {
52
-
53
- const defaultPopulate = {
35
+ async findAllFlat({ query = {}, populate = {}, sort, pagination, fields, }, relatedEntity = null) {
36
+ const defaultSelect = ["id", "related"];
37
+ const populateClause = {
54
38
  authorUser: true,
39
+ ...((0, lodash_1.isObject)(populate) ? populate : {}),
55
40
  };
56
-
57
41
  let queryExtension = {};
58
-
59
- if (sort && (isString(sort) || isArray(sort))) {
42
+ if (sort && ((0, lodash_1.isString)(sort) || (0, lodash_1.isArray)(sort))) {
43
+ queryExtension = {
44
+ ...queryExtension,
45
+ orderBy: ((0, lodash_1.isString)(sort) ? [sort] : sort)
46
+ .map((_) => (constants_1.REGEX.sorting.test(_) ? _ : `${_}:asc`))
47
+ .reduce((prev, curr) => {
48
+ const [type = "asc", ...parts] = curr.split(":").reverse();
49
+ return { ...(0, lodash_1.set)(prev, parts.reverse().join("."), type) };
50
+ }, {}),
51
+ };
52
+ }
53
+ if (!(0, lodash_1.isNil)(fields)) {
60
54
  queryExtension = {
61
55
  ...queryExtension,
62
- orderBy: (isString(sort) ? [sort] : sort)
63
- .map(_ => REGEX.sorting.test(_) ? _ : `${_}:asc`)
64
- .reduce((prev, curr) => {
65
- const [type = 'asc', ...parts] = curr.split(':').reverse();
66
- return { ...set(prev, parts.reverse().join('.'), type) };
67
- }, {})
56
+ select: (0, lodash_1.isArray)(fields) ? (0, lodash_1.uniq)([...fields, ...defaultSelect]) : fields,
68
57
  };
69
58
  }
70
-
71
59
  let meta = {};
72
- if (pagination && isObject(pagination)) {
73
- const parsedPagination = Object.keys(pagination).reduce((prev, curr) => ({
60
+ if (pagination && (0, lodash_1.isObject)(pagination)) {
61
+ const parsedpagination = Object.keys(pagination).reduce((prev, curr) => ({
74
62
  ...prev,
75
- [curr]: parseInt(pagination[curr]),
63
+ [curr]: (0, lodash_1.parseInt)((0, lodash_1.get)(pagination, curr)),
76
64
  }), {});
77
- const { page = 1, pageSize = 10, start = 0, limit = 10 } = parsedPagination;
78
- const paginationByPage = !isNil(parsedPagination?.page) || !isNil(parsedPagination?.pageSize);
79
-
65
+ const { page = 1, pageSize = PAGE_SIZE, start = 0, limit = PAGE_SIZE, } = parsedpagination;
66
+ const paginationByPage = !(0, lodash_1.isNil)(parsedpagination?.page) || !(0, lodash_1.isNil)(parsedpagination?.pageSize);
80
67
  queryExtension = {
81
68
  ...queryExtension,
82
69
  offset: paginationByPage ? (page - 1) * pageSize : start,
83
70
  limit: paginationByPage ? pageSize : limit,
84
71
  };
85
-
86
- const metaPagination = paginationByPage ? {
87
- pagination: {
88
- page,
89
- pageSize,
90
- },
91
- } : {
92
- pagination: {
93
- start,
94
- limit,
95
- },
96
- };
97
-
72
+ const metapagination = paginationByPage
73
+ ? {
74
+ pagination: {
75
+ page,
76
+ pageSize,
77
+ },
78
+ }
79
+ : {
80
+ pagination: {
81
+ start,
82
+ limit,
83
+ },
84
+ };
98
85
  meta = {
99
- ...metaPagination,
86
+ ...metapagination,
100
87
  };
101
88
  }
102
-
103
- const entries = await strapi.db.query(getModelUid('comment'))
104
- .findMany({
89
+ const entries = await strapi.db
90
+ .query((0, functions_1.getModelUid)("comment"))
91
+ .findMany({
105
92
  where: {
106
93
  ...query,
107
94
  },
108
95
  populate: {
109
- ...defaultPopulate,
110
- ...populate,
96
+ ...populateClause,
111
97
  },
112
98
  ...queryExtension,
113
99
  });
114
-
115
- if (pagination?.withCount && (pagination.withCount === 'true' || pagination.withCount === true)) {
116
- const total = await strapi.db.query(getModelUid('comment'))
100
+ if (pagination?.withCount &&
101
+ (pagination.withCount === "true" || pagination.withCount === true)) {
102
+ const total = await strapi.db
103
+ .query((0, functions_1.getModelUid)("comment"))
117
104
  .count({
118
- where: {
119
- ...query,
120
- }
121
- });
122
- const pageCount = Math.floor(total / meta.pagination.pageSize);
105
+ where: {
106
+ ...query,
107
+ },
108
+ });
109
+ const pageSize = meta.pagination.pageSize || PAGE_SIZE;
110
+ const pageCount = Math.floor(total / pageSize);
123
111
  meta = {
124
112
  ...meta,
125
113
  pagination: {
126
114
  ...meta.pagination,
127
- pageCount: !isNil(meta.pagination.page) ?
128
- total % meta.pagination.pageSize === 0 ? pageCount : pageCount + 1 :
129
- undefined,
115
+ pageCount: !(0, lodash_1.isNil)(meta.pagination.page)
116
+ ? total % pageSize === 0
117
+ ? pageCount
118
+ : pageCount + 1
119
+ : undefined,
130
120
  total,
131
121
  },
132
122
  };
133
123
  }
134
-
135
- const entriesWithThreads = await Promise.all(entries.map(async _ => {
136
- const [nestedEntries, count] = await strapi.db.query(getModelUid('comment'))
137
- .findWithCount({
138
- where: {
139
- threadOf: _.id
140
- }
141
- })
142
- return { id: _.id, itemsInTread: count, firstThreadItemId: first(nestedEntries)?.id }
143
- }));
144
-
145
- const relatedEntities = relatedEntity !== null ? [relatedEntity] : await this.findRelatedEntitiesFor([...entries]);
146
- const hasRelatedEntitiesToMap = relatedEntities.filter(_ => _).length > 0;
147
-
148
- const result = entries
149
- .map(_ => {
150
- const threadedItem = entriesWithThreads.find(item => item.id === _.id);
151
- return this.sanitizeCommentEntity({
152
- ..._,
153
- threadOf: query.threadOf || _.threadOf || null,
154
- gotThread: (threadedItem?.itemsInTread || 0) > 0,
155
- threadFirstItemId: threadedItem?.firstThreadItemId,
156
- });
124
+ const entriesWithThreads = await Promise.all(entries.map(async (_) => {
125
+ const [nestedEntries, count] = await strapi.db
126
+ .query((0, functions_1.getModelUid)("comment"))
127
+ .findWithCount({
128
+ where: {
129
+ threadOf: _.id,
130
+ },
157
131
  });
158
-
132
+ return {
133
+ id: _.id,
134
+ itemsInTread: count,
135
+ firstThreadItemId: (0, lodash_1.first)(nestedEntries)?.id,
136
+ };
137
+ }));
138
+ const relatedEntities = relatedEntity !== null
139
+ ? [relatedEntity]
140
+ : await this.findRelatedEntitiesFor([...entries]);
141
+ const hasRelatedEntitiesToMap = relatedEntities.filter((_) => _).length > 0;
142
+ const result = entries.map((_) => {
143
+ const threadedItem = entriesWithThreads.find((item) => item.id === _.id);
144
+ const parsedThreadOf = (0, lodash_1.isString)(query.threadOf)
145
+ ? (0, lodash_1.parseInt)(query.threadOf)
146
+ : query.threadOf;
147
+ let authorUserPopulate = {};
148
+ if ((0, lodash_1.isObject)(populateClause?.authorUser)) {
149
+ authorUserPopulate = populateClause.authorUser;
150
+ }
151
+ return this.sanitizeCommentEntity({
152
+ ..._,
153
+ threadOf: parsedThreadOf || _.threadOf || null,
154
+ gotThread: (threadedItem?.itemsInTread || 0) > 0,
155
+ threadFirstItemId: threadedItem?.firstThreadItemId,
156
+ }, authorUserPopulate);
157
+ });
159
158
  return {
160
- data: hasRelatedEntitiesToMap ?
161
- result.map(_ => this.mergeRelatedEntityTo(_, relatedEntities)) :
162
- result,
163
- ...(isEmpty(meta) ? {} : { meta }),
164
- };
159
+ data: hasRelatedEntitiesToMap
160
+ ? result.map((_) => this.mergeRelatedEntityTo(_, relatedEntities))
161
+ : result,
162
+ ...((0, lodash_1.isEmpty)(meta) ? {} : { meta }),
163
+ };
165
164
  },
166
-
167
- // Find comments and create relations tree structure
168
- async findAllInHierarchy ({
169
- query,
170
- populate = {},
171
- sort,
172
- startingFromId = null,
173
- dropBlockedThreads = false,
174
- }, relatedEntity) {
175
- const entities = await this.findAllFlat({ query, populate, sort }, relatedEntity);
176
- return buildNestedStructure(entities?.data, startingFromId, 'threadOf', dropBlockedThreads, false);
165
+ async findAllInHierarchy({ query, populate = {}, sort, fields, startingFromId = null, dropBlockedThreads = false, }, relatedEntity) {
166
+ const entities = await this.findAllFlat({ query, populate, sort, fields }, relatedEntity);
167
+ return (0, functions_1.buildNestedStructure)(entities?.data, startingFromId, "threadOf", dropBlockedThreads, false);
177
168
  },
178
-
179
- // Find single comment
180
169
  async findOne(criteria) {
181
- const entity = await strapi.db.query(getModelUid('comment'))
170
+ const entity = await strapi.db
171
+ .query((0, functions_1.getModelUid)("comment"))
182
172
  .findOne({
183
- where: criteria,
184
- populate: {
185
- reports: true,
186
- authorUser: true,
187
- },
188
- });
189
- if (!entity){
190
- throw new PluginError(404, 'Comment does not exist. Check your payload please.');
173
+ where: criteria,
174
+ populate: {
175
+ reports: true,
176
+ authorUser: true,
177
+ },
178
+ });
179
+ if (!entity) {
180
+ throw new error_1.default(404, "Comment does not exist. Check your payload please.");
191
181
  }
192
- return filterOurResolvedReports(this.sanitizeCommentEntity(entity));
182
+ return (0, functions_1.filterOurResolvedReports)(this.sanitizeCommentEntity(entity));
193
183
  },
194
-
195
- // Find all related entiries
196
184
  async findRelatedEntitiesFor(entities = []) {
197
- const data = entities.reduce((acc, cur) => {
198
- const [relatedUid, relatedStringId] = getRelatedGroups(cur.related);
199
- const parsedRelatedId = parseInt(relatedStringId);
200
- const relatedId = isNumber(parsedRelatedId) ? parsedRelatedId : relatedStringId;
201
- return {
202
- ...acc,
203
- [relatedUid]: [...(acc[relatedUid] || []), relatedId]
204
- };
205
- },
206
- {}
207
- );
208
- return Promise.all(
209
- Object.entries(data)
210
- .map(async ([relatedUid, relatedStringIds]) =>
211
- strapi.db.query(relatedUid).findMany({
212
- where: { id: Array.from(new Set(relatedStringIds)) },
213
- }).then(relatedEntities => relatedEntities.map(_ =>
214
- ({
215
- ..._,
216
- uid: relatedUid,
217
- })
218
- ))
219
- )
220
- )
221
- .then(result => result.flat(2));
185
+ const data = entities.reduce((acc, curr) => {
186
+ const [relatedUid, relatedStringId] = (0, functions_1.getRelatedGroups)(curr.related);
187
+ const parsedRelatedId = (0, lodash_1.parseInt)(relatedStringId);
188
+ const relatedId = (0, lodash_1.isNumber)(parsedRelatedId)
189
+ ? parsedRelatedId
190
+ : relatedStringId;
191
+ return {
192
+ ...acc,
193
+ [relatedUid]: [...(acc[relatedUid] || []), relatedId],
194
+ };
195
+ }, {});
196
+ return Promise.all(Object.entries(data).map(async ([relatedUid, relatedStringIds]) => strapi.db
197
+ .query(relatedUid)
198
+ .findMany({
199
+ where: { id: Array.from(new Set(relatedStringIds)) },
200
+ })
201
+ .then((relatedEntities) => relatedEntities.map((_) => ({
202
+ ..._,
203
+ uid: relatedUid,
204
+ }))))).then((result) => result.flat(2));
222
205
  },
223
-
224
- // Merge related entity with comment
225
206
  mergeRelatedEntityTo(entity, relatedEntities = []) {
226
207
  return {
227
208
  ...entity,
228
- related: relatedEntities.find(relatedEntity => entity.related === `${relatedEntity.uid}:${relatedEntity.id}`)
209
+ related: relatedEntities.find((relatedEntity) => entity.related === `${relatedEntity.uid}:${relatedEntity.id}`),
229
210
  };
230
211
  },
231
-
232
212
  async modifiedNestedNestedComments(id, fieldName, value) {
233
213
  try {
234
- const entitiesToChange = await strapi.bd.query(getModelUid('comment'))
214
+ const entitiesToChange = await strapi.db
215
+ .query((0, functions_1.getModelUid)("comment"))
235
216
  .findMany({
236
- where: { threadOf: id }
237
- });
238
- const changedEntities = await strapi.bd.query(getModelUid('comment'))
217
+ where: { threadOf: id },
218
+ });
219
+ const changedEntities = await strapi.db
220
+ .query((0, functions_1.getModelUid)("comment"))
239
221
  .updateMany({
240
- where: { id: entitiesToChange.map(_ => _.id) },
241
- data: { [fieldName]: value }
242
- });
243
- if ((entitiesToChange.length === changedEntities.length) && (changedEntities.length > 0)) {
244
- const nestedTransactions = await Promise.all(
245
- changedEntities.map(item => this.modifiedNestedNestedComments(item.id, fieldName, value))
246
- );
222
+ where: { id: entitiesToChange.map((_) => _.id) },
223
+ data: { [fieldName]: value },
224
+ });
225
+ if (entitiesToChange.length === changedEntities.length &&
226
+ changedEntities.length > 0) {
227
+ const nestedTransactions = await Promise.all(changedEntities.map((item) => this.modifiedNestedNestedComments(item.id, fieldName, value)));
247
228
  return nestedTransactions.length === changedEntities.length;
248
229
  }
249
230
  return true;
250
- } catch (e) {
231
+ }
232
+ catch (e) {
251
233
  return false;
252
234
  }
253
235
  },
254
-
255
- sanitizeCommentEntity(entity) {
236
+ sanitizeCommentEntity(entity, populate) {
237
+ const fieldsToPopulate = (0, lodash_1.isArray)(populate)
238
+ ? populate
239
+ : Object.keys(populate || {});
256
240
  return {
257
- ...buildAuthorModel({
241
+ ...(0, functions_1.buildAuthorModel)({
258
242
  ...entity,
259
- threadOf: isObject(entity.threadOf) ? buildAuthorModel(entity.threadOf) : entity.threadOf,
260
- }),
243
+ threadOf: (0, lodash_1.isObject)(entity.threadOf)
244
+ ? (0, functions_1.buildAuthorModel)(entity.threadOf, fieldsToPopulate)
245
+ : entity.threadOf,
246
+ }, fieldsToPopulate),
261
247
  };
262
248
  },
263
-
264
249
  isValidUserContext(user) {
265
- return user ? !isNil(user?.id) : true;
250
+ return user ? !(0, lodash_1.isNil)(user?.id) : true;
266
251
  },
267
-
268
252
  async parseRelationString(relation) {
269
- const [ uid, relatedStringId ] = getRelatedGroups(relation);
270
- const parsedRelatedId = parseInt(relatedStringId);
271
- const relatedId = isNumber(parsedRelatedId) ? parsedRelatedId : relatedStringId;
272
-
273
- const enabledCollections = await this.getConfig(CONFIG_PARAMS.ENABLED_COLLECTIONS, []);
274
- if (!enabledCollections.includes(uid)) {
275
- throw new PluginError(403, `Action not allowed for collection '${uid}'. Use one of: ${ enabledCollections.join(', ') }`);
253
+ const [uid, relatedStringId] = (0, functions_1.getRelatedGroups)(relation);
254
+ const parsedRelatedId = (0, lodash_1.parseInt)(relatedStringId);
255
+ const relatedId = (0, lodash_1.isNumber)(parsedRelatedId)
256
+ ? parsedRelatedId
257
+ : relatedStringId;
258
+ const isEnabledCollection = await this.isEnabledCollection(uid);
259
+ const enabledCollections = await this.getConfig(constants_1.CONFIG_PARAMS.ENABLED_COLLECTIONS, []);
260
+ if (!isEnabledCollection) {
261
+ throw new error_1.default(403, `Action not allowed for collection '${uid}'. Use one of: ${enabledCollections.join(", ")}`);
276
262
  }
277
- return [ uid, relatedId];
263
+ return [uid, relatedId];
278
264
  },
279
-
280
265
  async checkBadWords(content) {
281
- const config = await this.getConfig(CONFIG_PARAMS.BAD_WORDS, true);
266
+ const config = await this.getConfig(constants_1.CONFIG_PARAMS.BAD_WORDS, true);
282
267
  if (config) {
283
- const filter = new BadWordsFilter(isObject(config) ? config : undefined);
268
+ const filter = new bad_words_1.default((0, lodash_1.isObject)(config) ? config : undefined);
284
269
  if (content && filter.isProfane(content)) {
285
- throw new PluginError(400, 'Bad language used! Please polite your comment...', {
270
+ throw new error_1.default(400, "Bad language used! Please polite your comment...", {
286
271
  content: {
287
272
  original: content,
288
273
  filtered: content && filter.clean(content),
@@ -292,4 +277,9 @@ module.exports = ({ strapi }) => ({
292
277
  }
293
278
  return content;
294
279
  },
280
+ async isEnabledCollection(uid) {
281
+ const enabledCollections = await this.getConfig("enabledCollections", []);
282
+ return enabledCollections.includes(uid);
283
+ },
295
284
  });
285
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1,5 @@
1
+ import { StrapiContext } from "strapi-typed";
2
+ import { IServiceGraphQL } from "../../types";
3
+ declare const _default: ({ strapi }: StrapiContext) => IServiceGraphQL;
4
+ export = _default;
5
+ //# sourceMappingURL=graphql.d.ts.map