strapi-plugin-comments 2.0.11 → 2.1.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.
Files changed (443) hide show
  1. package/README.md +165 -119
  2. package/admin/src/components/ActionButton/styles.ts +11 -0
  3. package/admin/src/components/Avatar/index.tsx +31 -0
  4. package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
  5. package/admin/src/components/DiscussionStatus/index.tsx +36 -0
  6. package/admin/src/components/DiscussionThread/index.tsx +97 -0
  7. package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
  8. package/admin/src/components/DiscussionThreadItem/{styles.js → styles.ts} +8 -6
  9. package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
  10. package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
  11. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
  12. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
  13. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
  14. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
  15. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
  16. package/admin/src/components/FormSwitch/index.tsx +35 -0
  17. package/admin/src/components/FormSwitch/styles.ts +10 -0
  18. package/admin/src/components/IconButton/styles.ts +19 -0
  19. package/admin/src/components/Initializer/{index.js → index.tsx} +8 -6
  20. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
  21. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
  22. package/admin/src/components/Nav/index.tsx +61 -0
  23. package/admin/src/components/PluginIcon/{index.js → index.tsx} +4 -2
  24. package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
  25. package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
  26. package/admin/src/components/StatusBadge/index.tsx +21 -0
  27. package/admin/src/components/StatusBadge/styles.ts +19 -0
  28. package/admin/src/components/TableFilters/{index.js → index.tsx} +14 -9
  29. package/admin/src/components/TablePagination/{index.js → index.tsx} +8 -6
  30. package/admin/src/components/icons/comments.tsx +15 -0
  31. package/admin/src/components/icons/index.ts +6 -0
  32. package/admin/src/components/icons/{lock.js → lock.tsx} +17 -12
  33. package/admin/src/components/icons/review.tsx +25 -0
  34. package/admin/src/components/icons/unlock.tsx +25 -0
  35. package/admin/src/hooks/useConfig.ts +58 -0
  36. package/admin/src/{index.js → index.ts} +26 -22
  37. package/admin/src/pages/App/index.tsx +67 -0
  38. package/admin/src/pages/App/reducer/actions.ts +10 -0
  39. package/admin/src/pages/App/reducer/constants.ts +4 -0
  40. package/admin/src/pages/App/reducer/{index.js → index.ts} +8 -6
  41. package/admin/src/pages/App/reducer/init.ts +9 -0
  42. package/admin/src/pages/App/reducer/selectors.ts +32 -0
  43. package/admin/src/pages/App/utils/{api.js → api.ts} +3 -1
  44. package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
  45. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
  46. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
  47. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
  48. package/admin/src/pages/Details/index.tsx +169 -0
  49. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
  50. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
  51. package/admin/src/pages/Discover/index.tsx +230 -0
  52. package/admin/src/pages/Discover/utils/api.ts +22 -0
  53. package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
  54. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
  55. package/admin/src/pages/Settings/index.tsx +602 -0
  56. package/admin/src/pages/Settings/utils/{api.js → api.ts} +16 -5
  57. package/admin/src/pages/utils/api.ts +70 -0
  58. package/admin/src/permissions.ts +30 -0
  59. package/admin/src/pluginId.ts +3 -0
  60. package/admin/src/reducers.ts +8 -0
  61. package/admin/src/translations/en.json +131 -131
  62. package/admin/src/translations/pt-BR.json +130 -130
  63. package/admin/src/utils/{axiosInstance.js → axiosInstance.ts} +12 -9
  64. package/admin/src/utils/constants.ts +25 -0
  65. package/admin/src/utils/getApiUrl.ts +5 -0
  66. package/admin/src/utils/getMessage.ts +29 -0
  67. package/admin/src/utils/getRelatedGroups.ts +6 -0
  68. package/admin/src/utils/getUrl.ts +5 -0
  69. package/admin/src/utils/handleAPIError.ts +21 -0
  70. package/admin/src/utils/index.ts +11 -0
  71. package/admin/src/utils/parseRegExp.ts +9 -0
  72. package/admin/src/utils/renderEntryTitle.ts +16 -0
  73. package/admin/src/utils/renderInitials.ts +10 -0
  74. package/admin/src/utils/resolveCommentStatus.ts +37 -0
  75. package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
  76. package/build/README.md +41 -5
  77. package/build/admin/src/components/ActionButton/styles.d.ts +1 -1
  78. package/build/admin/src/components/ActionButton/styles.js +5 -7
  79. package/build/admin/src/components/Avatar/index.d.ts +12 -0
  80. package/build/admin/src/components/Avatar/index.js +26 -0
  81. package/build/admin/src/components/ConfirmationDialog/index.js +23 -90
  82. package/build/admin/src/components/DiscussionStatus/index.js +13 -27
  83. package/build/admin/src/components/DiscussionThread/index.js +29 -83
  84. package/build/admin/src/components/DiscussionThreadItem/index.js +20 -59
  85. package/build/admin/src/components/DiscussionThreadItem/styles.d.ts +1 -1
  86. package/build/admin/src/components/DiscussionThreadItem/styles.js +8 -17
  87. package/build/admin/src/components/DiscussionThreadItemActions/index.js +163 -383
  88. package/build/admin/src/components/DiscussionThreadItemActions/styles.d.ts +1 -1
  89. package/build/admin/src/components/DiscussionThreadItemActions/styles.js +5 -9
  90. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +52 -85
  91. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +1 -1
  92. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +5 -8
  93. package/build/admin/src/components/DiscussionThreadItemFooter/index.js +27 -61
  94. package/build/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +1 -1
  95. package/build/admin/src/components/DiscussionThreadItemFooter/styles.js +7 -14
  96. package/build/admin/src/components/DiscussionThreadItemReviewAction/index.js +91 -207
  97. package/build/admin/src/components/FormSwitch/index.d.ts +5 -9
  98. package/build/admin/src/components/FormSwitch/index.js +8 -32
  99. package/build/admin/src/components/FormSwitch/styles.d.ts +1 -1
  100. package/build/admin/src/components/FormSwitch/styles.js +5 -7
  101. package/build/admin/src/components/IconButton/styles.d.ts +1 -1
  102. package/build/admin/src/components/IconButton/styles.js +7 -13
  103. package/build/admin/src/components/Initializer/index.d.ts +4 -2
  104. package/build/admin/src/components/Initializer/index.js +7 -7
  105. package/build/admin/src/components/LoadingIndicatorOverlay/index.d.ts +1 -1
  106. package/build/admin/src/components/LoadingIndicatorOverlay/index.js +6 -12
  107. package/build/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +1 -1
  108. package/build/admin/src/components/LoadingIndicatorOverlay/styles.js +7 -14
  109. package/build/admin/src/components/Nav/index.js +16 -62
  110. package/build/admin/src/components/PluginIcon/index.d.ts +1 -1
  111. package/build/admin/src/components/PluginIcon/index.js +5 -8
  112. package/build/admin/src/components/ReportsReviewModal/index.js +23 -62
  113. package/build/admin/src/components/ReportsReviewTable/index.js +112 -293
  114. package/build/admin/src/components/StatusBadge/index.d.ts +5 -9
  115. package/build/admin/src/components/StatusBadge/index.js +6 -16
  116. package/build/admin/src/components/StatusBadge/styles.d.ts +1 -1
  117. package/build/admin/src/components/StatusBadge/styles.js +5 -7
  118. package/build/admin/src/components/TableFilters/index.js +38 -91
  119. package/build/admin/src/components/TablePagination/index.d.ts +13 -11
  120. package/build/admin/src/components/TablePagination/index.js +19 -31
  121. package/build/admin/src/components/icons/comments.d.ts +4 -7
  122. package/build/admin/src/components/icons/comments.js +7 -18
  123. package/build/admin/src/components/icons/index.d.ts +1 -1
  124. package/build/admin/src/components/icons/index.js +5 -11
  125. package/build/admin/src/components/icons/lock.d.ts +5 -9
  126. package/build/admin/src/components/icons/lock.js +7 -24
  127. package/build/admin/src/components/icons/review.d.ts +5 -9
  128. package/build/admin/src/components/icons/review.js +7 -26
  129. package/build/admin/src/components/icons/unlock.d.ts +5 -9
  130. package/build/admin/src/components/icons/unlock.js +7 -24
  131. package/build/admin/src/hooks/useConfig.js +34 -42
  132. package/build/admin/src/index.js +84 -121
  133. package/build/admin/src/pages/App/index.js +23 -66
  134. package/build/admin/src/pages/App/reducer/actions.d.ts +4 -4
  135. package/build/admin/src/pages/App/reducer/actions.js +3 -3
  136. package/build/admin/src/pages/App/reducer/constants.d.ts +1 -1
  137. package/build/admin/src/pages/App/reducer/constants.js +1 -1
  138. package/build/admin/src/pages/App/reducer/index.d.ts +5 -10
  139. package/build/admin/src/pages/App/reducer/index.js +16 -19
  140. package/build/admin/src/pages/App/reducer/init.d.ts +1 -1
  141. package/build/admin/src/pages/App/reducer/init.js +4 -4
  142. package/build/admin/src/pages/App/reducer/selectors.d.ts +1 -1
  143. package/build/admin/src/pages/App/reducer/selectors.js +6 -8
  144. package/build/admin/src/pages/App/utils/api.js +8 -9
  145. package/build/admin/src/pages/ComingSoonPage/index.js +27 -62
  146. package/build/admin/src/pages/Details/components/DetailsEntity/index.js +39 -115
  147. package/build/admin/src/pages/Details/components/DetailsFilters/index.js +13 -33
  148. package/build/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +1 -1
  149. package/build/admin/src/pages/Details/components/DetailsFilters/styles.js +5 -7
  150. package/build/admin/src/pages/Details/index.js +64 -183
  151. package/build/admin/src/pages/Discover/components/DiscoverTableRow/index.js +139 -314
  152. package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +1 -1
  153. package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +5 -7
  154. package/build/admin/src/pages/Discover/index.js +98 -298
  155. package/build/admin/src/pages/Discover/utils/api.js +8 -15
  156. package/build/admin/src/pages/Discover/utils/filtersSchema.d.ts +8 -8
  157. package/build/admin/src/pages/Discover/utils/filtersSchema.js +6 -6
  158. package/build/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +1 -1
  159. package/build/admin/src/pages/Settings/components/RestartAlert/styles.js +5 -7
  160. package/build/admin/src/pages/Settings/index.js +192 -678
  161. package/build/admin/src/pages/Settings/utils/api.js +44 -59
  162. package/build/admin/src/pages/utils/api.js +26 -51
  163. package/build/admin/src/permissions.d.ts +25 -25
  164. package/build/admin/src/permissions.js +28 -60
  165. package/build/admin/src/pluginId.d.ts +1 -1
  166. package/build/admin/src/pluginId.js +20 -41
  167. package/build/admin/src/reducers.d.ts +4 -9
  168. package/build/admin/src/reducers.js +5 -7
  169. package/build/admin/src/translations/fr.json +132 -1
  170. package/build/admin/src/utils/axiosInstance.js +15 -23
  171. package/build/admin/src/utils/constants.d.ts +17 -17
  172. package/build/admin/src/utils/constants.js +16 -20
  173. package/build/admin/src/utils/getApiUrl.d.ts +1 -1
  174. package/build/admin/src/utils/getApiUrl.js +1 -1
  175. package/build/admin/src/utils/getMessage.js +13 -17
  176. package/build/admin/src/utils/getRelatedGroups.js +2 -3
  177. package/build/admin/src/utils/getUrl.d.ts +1 -1
  178. package/build/admin/src/utils/getUrl.js +1 -1
  179. package/build/admin/src/utils/handleAPIError.js +12 -15
  180. package/build/admin/src/utils/index.js +16 -84
  181. package/build/admin/src/utils/parseRegExp.d.ts +3 -3
  182. package/build/admin/src/utils/parseRegExp.js +6 -6
  183. package/build/admin/src/utils/renderEntryTitle.js +7 -10
  184. package/build/admin/src/utils/renderInitials.d.ts +1 -1
  185. package/build/admin/src/utils/renderInitials.js +2 -3
  186. package/build/admin/src/utils/resolveCommentStatus.js +19 -25
  187. package/build/admin/src/utils/resolveCommentStatusColor.js +15 -15
  188. package/build/content-types/comment.d.ts +87 -87
  189. package/build/content-types/comment.js +87 -87
  190. package/build/content-types/index.d.ts +136 -136
  191. package/build/content-types/index.js +10 -12
  192. package/build/content-types/report.d.ts +41 -41
  193. package/build/content-types/report.js +41 -41
  194. package/build/package.json +5 -5
  195. package/build/permissions.d.ts +14 -14
  196. package/build/permissions.js +14 -14
  197. package/build/server/bootstrap.js +52 -58
  198. package/build/server/config/index.js +13 -13
  199. package/build/server/controllers/admin.js +128 -117
  200. package/build/server/controllers/client.js +15 -4
  201. package/build/server/controllers/index.js +6 -8
  202. package/build/server/controllers/utils/functions.d.ts +1 -1
  203. package/build/server/controllers/utils/parsers.d.ts +5 -10
  204. package/build/server/controllers/utils/parsers.js +46 -20
  205. package/build/server/destroy.d.ts +1 -1
  206. package/build/server/destroy.js +3 -2
  207. package/build/server/graphql/index.js +19 -29
  208. package/build/server/graphql/mutations/createAbuseReport.js +19 -23
  209. package/build/server/graphql/mutations/createComment.d.ts +1 -1
  210. package/build/server/graphql/mutations/createComment.js +19 -22
  211. package/build/server/graphql/mutations/index.js +19 -21
  212. package/build/server/graphql/mutations/removeComment.d.ts +1 -1
  213. package/build/server/graphql/mutations/removeComment.js +19 -23
  214. package/build/server/graphql/mutations/updateComment.d.ts +1 -1
  215. package/build/server/graphql/mutations/updateComment.js +19 -23
  216. package/build/server/graphql/queries/findAllFlat.d.ts +1 -1
  217. package/build/server/graphql/queries/findAllFlat.js +30 -40
  218. package/build/server/graphql/queries/findAllInHierarchy.d.ts +1 -2
  219. package/build/server/graphql/queries/findAllInHierarchy.js +25 -32
  220. package/build/server/graphql/queries/index.js +17 -19
  221. package/build/server/graphql/resolvers-config.js +10 -10
  222. package/build/server/graphql/types/comment-author.js +7 -8
  223. package/build/server/graphql/types/comment-nested.js +14 -15
  224. package/build/server/graphql/types/comment.js +13 -14
  225. package/build/server/graphql/types/create-comment-author.js +7 -8
  226. package/build/server/graphql/types/create-comment.js +7 -8
  227. package/build/server/graphql/types/create-report.js +7 -8
  228. package/build/server/graphql/types/id.js +13 -14
  229. package/build/server/graphql/types/identify-comment-author.js +4 -5
  230. package/build/server/graphql/types/index.js +21 -27
  231. package/build/server/graphql/types/remove-comment.js +6 -7
  232. package/build/server/graphql/types/report-reason.js +9 -9
  233. package/build/server/graphql/types/report.js +9 -10
  234. package/build/server/graphql/types/response-find-all.js +5 -6
  235. package/build/server/graphql/types/response-meta.js +4 -5
  236. package/build/server/graphql/types/response-pagination.js +9 -10
  237. package/build/server/graphql/types/update-comment.js +7 -8
  238. package/build/server/register.d.ts +1 -1
  239. package/build/server/register.js +3 -2
  240. package/build/server/routes/admin.d.ts +1 -1
  241. package/build/server/routes/admin.js +99 -99
  242. package/build/server/routes/client.d.ts +1 -1
  243. package/build/server/routes/client.js +79 -43
  244. package/build/server/routes/index.d.ts +4 -4
  245. package/build/server/routes/index.js +12 -14
  246. package/build/server/services/admin.js +257 -284
  247. package/build/server/services/client.js +54 -42
  248. package/build/server/services/common.js +33 -11
  249. package/build/server/services/graphql.js +113 -124
  250. package/build/server/services/utils/functions.d.ts +1 -1
  251. package/build/server/services/utils/functions.js +76 -109
  252. package/build/server/utils/constants.js +13 -14
  253. package/build/server/utils/error.d.ts +12 -16
  254. package/build/server/utils/error.js +23 -23
  255. package/build/server/utils/functions.d.ts +4 -12
  256. package/build/server/utils/functions.js +20 -34
  257. package/build/strapi-admin.js +4 -6
  258. package/build/tsconfig.tsbuildinfo +1 -1
  259. package/build/types/contentTypes.d.ts +7 -5
  260. package/content-types/comment.ts +93 -0
  261. package/content-types/index.ts +11 -0
  262. package/content-types/report.ts +50 -0
  263. package/jest.config.ts +22 -0
  264. package/package.json +45 -11
  265. package/permissions.ts +17 -0
  266. package/server/{bootstrap.js → bootstrap.ts} +12 -11
  267. package/server/config/index.ts +19 -0
  268. package/server/controllers/admin.ts +194 -0
  269. package/server/controllers/client.ts +220 -0
  270. package/server/controllers/index.ts +13 -0
  271. package/server/controllers/utils/functions.ts +27 -0
  272. package/server/controllers/utils/parsers.ts +59 -0
  273. package/server/destroy.ts +3 -0
  274. package/server/graphql/index.ts +27 -0
  275. package/server/graphql/mutations/createAbuseReport.ts +38 -0
  276. package/server/graphql/mutations/createComment.ts +41 -0
  277. package/server/graphql/mutations/index.ts +26 -0
  278. package/server/graphql/mutations/removeComment.ts +41 -0
  279. package/server/graphql/mutations/updateComment.ts +40 -0
  280. package/server/graphql/queries/findAllFlat.ts +58 -0
  281. package/server/graphql/queries/findAllInHierarchy.ts +47 -0
  282. package/server/graphql/queries/index.ts +22 -0
  283. package/server/graphql/resolvers-config.ts +13 -0
  284. package/server/graphql/types/comment-author.ts +12 -0
  285. package/server/graphql/types/comment-nested.ts +19 -0
  286. package/server/graphql/types/comment.ts +18 -0
  287. package/server/graphql/types/create-comment-author.ts +12 -0
  288. package/server/graphql/types/create-comment.ts +12 -0
  289. package/server/graphql/types/create-report.ts +12 -0
  290. package/server/graphql/types/id.ts +28 -0
  291. package/server/graphql/types/identify-comment-author.ts +9 -0
  292. package/server/graphql/types/index.ts +38 -0
  293. package/server/graphql/types/remove-comment.ts +11 -0
  294. package/server/graphql/types/report-reason.ts +12 -0
  295. package/server/graphql/types/report.ts +14 -0
  296. package/server/graphql/types/response-find-all.ts +10 -0
  297. package/server/graphql/types/response-meta.ts +9 -0
  298. package/server/graphql/types/response-pagination.ts +14 -0
  299. package/server/graphql/types/update-comment.ts +12 -0
  300. package/server/index.ts +20 -0
  301. package/server/register.ts +3 -0
  302. package/server/routes/admin.ts +118 -0
  303. package/server/routes/client.ts +95 -0
  304. package/server/routes/index.ts +25 -0
  305. package/server/services/admin.ts +406 -0
  306. package/server/services/client.ts +394 -0
  307. package/server/services/common.ts +503 -0
  308. package/server/services/{graphql.js → graphql.ts} +72 -43
  309. package/server/services/index.ts +13 -0
  310. package/server/services/utils/functions.ts +150 -0
  311. package/server/utils/constants.ts +23 -0
  312. package/server/utils/error.ts +44 -0
  313. package/server/utils/functions.ts +55 -0
  314. package/strapi-admin.ts +5 -0
  315. package/strapi-server.ts +77 -0
  316. package/tsconfig.json +38 -0
  317. package/types/common.d.ts +1 -0
  318. package/types/config.d.ts +35 -0
  319. package/types/constants.d.ts +3 -0
  320. package/types/contentTypes.ts +56 -0
  321. package/types/controllers.d.ts +125 -0
  322. package/types/graphql.d.ts +24 -0
  323. package/types/index.d.ts +7 -0
  324. package/types/services.d.ts +166 -0
  325. package/__mocks__/initSetup.js +0 -108
  326. package/admin/src/components/ActionButton/styles.js +0 -10
  327. package/admin/src/components/ConfirmationDialog/index.js +0 -56
  328. package/admin/src/components/DiscussionStatus/index.js +0 -33
  329. package/admin/src/components/DiscussionThread/index.js +0 -62
  330. package/admin/src/components/DiscussionThreadItem/index.js +0 -57
  331. package/admin/src/components/DiscussionThreadItemActions/index.js +0 -231
  332. package/admin/src/components/DiscussionThreadItemActions/styles.js +0 -7
  333. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -80
  334. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -6
  335. package/admin/src/components/DiscussionThreadItemFooter/index.js +0 -47
  336. package/admin/src/components/DiscussionThreadItemFooter/styles.js +0 -13
  337. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +0 -131
  338. package/admin/src/components/FormSwitch/index.js +0 -18
  339. package/admin/src/components/FormSwitch/styles.js +0 -8
  340. package/admin/src/components/IconButton/styles.js +0 -14
  341. package/admin/src/components/LoadingIndicatorOverlay/index.js +0 -15
  342. package/admin/src/components/LoadingIndicatorOverlay/styles.js +0 -20
  343. package/admin/src/components/Nav/index.js +0 -49
  344. package/admin/src/components/ReportsReviewModal/index.js +0 -48
  345. package/admin/src/components/ReportsReviewTable/index.js +0 -160
  346. package/admin/src/components/StatusBadge/index.js +0 -17
  347. package/admin/src/components/StatusBadge/styles.js +0 -17
  348. package/admin/src/components/icons/comments.js +0 -9
  349. package/admin/src/components/icons/index.js +0 -6
  350. package/admin/src/components/icons/review.js +0 -18
  351. package/admin/src/components/icons/unlock.js +0 -20
  352. package/admin/src/hooks/useConfig.js +0 -49
  353. package/admin/src/pages/App/index.js +0 -71
  354. package/admin/src/pages/App/reducer/actions.js +0 -8
  355. package/admin/src/pages/App/reducer/constants.js +0 -4
  356. package/admin/src/pages/App/reducer/init.js +0 -7
  357. package/admin/src/pages/App/reducer/selectors.js +0 -35
  358. package/admin/src/pages/ComingSoonPage/index.js +0 -25
  359. package/admin/src/pages/Details/components/DetailsEntity/index.js +0 -84
  360. package/admin/src/pages/Details/components/DetailsFilters/index.js +0 -35
  361. package/admin/src/pages/Details/components/DetailsFilters/styles.js +0 -8
  362. package/admin/src/pages/Details/index.js +0 -136
  363. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +0 -180
  364. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -8
  365. package/admin/src/pages/Discover/index.js +0 -173
  366. package/admin/src/pages/Discover/utils/api.js +0 -14
  367. package/admin/src/pages/Discover/utils/filtersSchema.js +0 -9
  368. package/admin/src/pages/Settings/components/RestartAlert/styles.js +0 -8
  369. package/admin/src/pages/Settings/index.js +0 -392
  370. package/admin/src/pages/utils/api.js +0 -53
  371. package/admin/src/permissions.js +0 -19
  372. package/admin/src/pluginId.js +0 -5
  373. package/admin/src/reducers.js +0 -8
  374. package/admin/src/utils/constants.js +0 -25
  375. package/admin/src/utils/getApiUrl.js +0 -5
  376. package/admin/src/utils/getMessage.js +0 -21
  377. package/admin/src/utils/getRelatedGroups.js +0 -3
  378. package/admin/src/utils/getUrl.js +0 -5
  379. package/admin/src/utils/handleAPIError.js +0 -16
  380. package/admin/src/utils/index.js +0 -11
  381. package/admin/src/utils/parseRegExp.js +0 -10
  382. package/admin/src/utils/renderEntryTitle.js +0 -14
  383. package/admin/src/utils/renderInitials.js +0 -5
  384. package/admin/src/utils/resolveCommentStatus.js +0 -30
  385. package/admin/src/utils/resolveCommentStatusColor.js +0 -22
  386. package/content-types/comment.js +0 -93
  387. package/content-types/index.js +0 -11
  388. package/content-types/report.js +0 -54
  389. package/jest.config.js +0 -7
  390. package/permissions.js +0 -19
  391. package/server/config/index.js +0 -17
  392. package/server/controllers/admin.js +0 -168
  393. package/server/controllers/client.js +0 -114
  394. package/server/controllers/index.js +0 -9
  395. package/server/controllers/utils/__tests__/functions.test.js +0 -43
  396. package/server/controllers/utils/__tests__/parsers.test.js +0 -94
  397. package/server/controllers/utils/functions.js +0 -19
  398. package/server/controllers/utils/parsers.js +0 -23
  399. package/server/destroy.js +0 -5
  400. package/server/graphql/index.js +0 -25
  401. package/server/graphql/mutations/createAbuseReport.js +0 -25
  402. package/server/graphql/mutations/createComment.js +0 -25
  403. package/server/graphql/mutations/index.js +0 -21
  404. package/server/graphql/mutations/removeComment.js +0 -25
  405. package/server/graphql/mutations/updateComment.js +0 -25
  406. package/server/graphql/queries/findAllFlat.js +0 -35
  407. package/server/graphql/queries/findAllInHierarchy.js +0 -31
  408. package/server/graphql/queries/index.js +0 -19
  409. package/server/graphql/resolvers-config.js +0 -13
  410. package/server/graphql/types/comment-author.js +0 -9
  411. package/server/graphql/types/comment-nested.js +0 -16
  412. package/server/graphql/types/comment.js +0 -15
  413. package/server/graphql/types/create-comment-author.js +0 -9
  414. package/server/graphql/types/create-comment.js +0 -9
  415. package/server/graphql/types/create-report.js +0 -9
  416. package/server/graphql/types/id.js +0 -24
  417. package/server/graphql/types/identify-comment-author.js +0 -6
  418. package/server/graphql/types/index.js +0 -19
  419. package/server/graphql/types/remove-comment.js +0 -8
  420. package/server/graphql/types/report-reason.js +0 -10
  421. package/server/graphql/types/report.js +0 -11
  422. package/server/graphql/types/response-find-all.js +0 -7
  423. package/server/graphql/types/response-meta.js +0 -6
  424. package/server/graphql/types/response-pagination.js +0 -11
  425. package/server/graphql/types/update-comment.js +0 -9
  426. package/server/index.js +0 -22
  427. package/server/register.js +0 -5
  428. package/server/routes/admin.js +0 -124
  429. package/server/routes/client.js +0 -52
  430. package/server/routes/index.js +0 -15
  431. package/server/services/__tests__/common.test.js +0 -399
  432. package/server/services/admin.js +0 -296
  433. package/server/services/client.js +0 -263
  434. package/server/services/common.js +0 -295
  435. package/server/services/index.js +0 -13
  436. package/server/services/utils/__tests__/functions.test.js +0 -53
  437. package/server/services/utils/functions.js +0 -112
  438. package/server/utils/__tests__/functions.test.js +0 -17
  439. package/server/utils/constants.js +0 -26
  440. package/server/utils/error.js +0 -24
  441. package/server/utils/functions.js +0 -19
  442. package/strapi-admin.js +0 -3
  443. package/strapi-server.js +0 -49
@@ -1,295 +0,0 @@
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
-
20
- module.exports = ({ strapi }) => ({
21
-
22
- async getConfig(prop, defaultValue, useLocal = false) {
23
- const queryProp = buildConfigQueryProp(prop);
24
- const pluginStore = await this.getPluginStore();
25
- const config = await pluginStore.get({ key: 'config' });
26
-
27
- let result;
28
- if (config && !useLocal) {
29
- result = queryProp ? get(config, queryProp, defaultValue) : config;
30
- } else {
31
- result = this.getLocalConfig(queryProp, defaultValue);
32
- }
33
- return isNil(result) ? defaultValue : result;
34
- },
35
-
36
- async getPluginStore() {
37
- return strapi.store({ type: 'plugin', name: 'comments' });
38
- },
39
-
40
- getLocalConfig(prop, defaultValue) {
41
- const queryProp = buildConfigQueryProp(prop);
42
- const result = strapi.config.get(`plugin.comments${ queryProp ? '.' + queryProp : ''}`);
43
- return isNil(result) ? defaultValue : result;
44
- },
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 = {
54
- authorUser: true,
55
- };
56
-
57
- let queryExtension = {};
58
-
59
- if (sort && (isString(sort) || isArray(sort))) {
60
- queryExtension = {
61
- ...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
- }, {})
68
- };
69
- }
70
-
71
- let meta = {};
72
- if (pagination && isObject(pagination)) {
73
- const parsedPagination = Object.keys(pagination).reduce((prev, curr) => ({
74
- ...prev,
75
- [curr]: parseInt(pagination[curr]),
76
- }), {});
77
- const { page = 1, pageSize = 10, start = 0, limit = 10 } = parsedPagination;
78
- const paginationByPage = !isNil(parsedPagination?.page) || !isNil(parsedPagination?.pageSize);
79
-
80
- queryExtension = {
81
- ...queryExtension,
82
- offset: paginationByPage ? (page - 1) * pageSize : start,
83
- limit: paginationByPage ? pageSize : limit,
84
- };
85
-
86
- const metaPagination = paginationByPage ? {
87
- pagination: {
88
- page,
89
- pageSize,
90
- },
91
- } : {
92
- pagination: {
93
- start,
94
- limit,
95
- },
96
- };
97
-
98
- meta = {
99
- ...metaPagination,
100
- };
101
- }
102
-
103
- const entries = await strapi.db.query(getModelUid('comment'))
104
- .findMany({
105
- where: {
106
- ...query,
107
- },
108
- populate: {
109
- ...defaultPopulate,
110
- ...populate,
111
- },
112
- ...queryExtension,
113
- });
114
-
115
- if (pagination?.withCount && (pagination.withCount === 'true' || pagination.withCount === true)) {
116
- const total = await strapi.db.query(getModelUid('comment'))
117
- .count({
118
- where: {
119
- ...query,
120
- }
121
- });
122
- const pageCount = Math.floor(total / meta.pagination.pageSize);
123
- meta = {
124
- ...meta,
125
- pagination: {
126
- ...meta.pagination,
127
- pageCount: !isNil(meta.pagination.page) ?
128
- total % meta.pagination.pageSize === 0 ? pageCount : pageCount + 1 :
129
- undefined,
130
- total,
131
- },
132
- };
133
- }
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
- });
157
- });
158
-
159
- return {
160
- data: hasRelatedEntitiesToMap ?
161
- result.map(_ => this.mergeRelatedEntityTo(_, relatedEntities)) :
162
- result,
163
- ...(isEmpty(meta) ? {} : { meta }),
164
- };
165
- },
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);
177
- },
178
-
179
- // Find single comment
180
- async findOne(criteria) {
181
- const entity = await strapi.db.query(getModelUid('comment'))
182
- .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.');
191
- }
192
- return filterOurResolvedReports(this.sanitizeCommentEntity(entity));
193
- },
194
-
195
- // Find all related entiries
196
- 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));
222
- },
223
-
224
- // Merge related entity with comment
225
- mergeRelatedEntityTo(entity, relatedEntities = []) {
226
- return {
227
- ...entity,
228
- related: relatedEntities.find(relatedEntity => entity.related === `${relatedEntity.uid}:${relatedEntity.id}`)
229
- };
230
- },
231
-
232
- async modifiedNestedNestedComments(id, fieldName, value) {
233
- try {
234
- const entitiesToChange = await strapi.bd.query(getModelUid('comment'))
235
- .findMany({
236
- where: { threadOf: id }
237
- });
238
- const changedEntities = await strapi.bd.query(getModelUid('comment'))
239
- .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
- );
247
- return nestedTransactions.length === changedEntities.length;
248
- }
249
- return true;
250
- } catch (e) {
251
- return false;
252
- }
253
- },
254
-
255
- sanitizeCommentEntity(entity) {
256
- return {
257
- ...buildAuthorModel({
258
- ...entity,
259
- threadOf: isObject(entity.threadOf) ? buildAuthorModel(entity.threadOf) : entity.threadOf,
260
- }),
261
- };
262
- },
263
-
264
- isValidUserContext(user) {
265
- return user ? !isNil(user?.id) : true;
266
- },
267
-
268
- 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(', ') }`);
276
- }
277
- return [ uid, relatedId];
278
- },
279
-
280
- async checkBadWords(content) {
281
- const config = await this.getConfig(CONFIG_PARAMS.BAD_WORDS, true);
282
- if (config) {
283
- const filter = new BadWordsFilter(isObject(config) ? config : undefined);
284
- if (content && filter.isProfane(content)) {
285
- throw new PluginError(400, 'Bad language used! Please polite your comment...', {
286
- content: {
287
- original: content,
288
- filtered: content && filter.clean(content),
289
- },
290
- });
291
- }
292
- }
293
- return content;
294
- },
295
- });
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- const adminServices = require('./admin');
4
- const clientServices = require('./client');
5
- const commonServices = require('./common');
6
- const graphQLService = require('./graphql');
7
-
8
- module.exports = {
9
- admin: adminServices,
10
- client: clientServices,
11
- common: commonServices,
12
- gql: graphQLService,
13
- };
@@ -1,53 +0,0 @@
1
- const PluginError = require('../../../utils/error');
2
- const { resolveUserContextError, getModelUid, buildConfigQueryProp } = require('../functions');
3
-
4
- beforeEach(() => {
5
- Object.defineProperty(global, 'strapi', {
6
- value: require('../../../../__mocks__/initSetup')(),
7
- writable: true,
8
- });
9
- })
10
-
11
- describe('Test service functions utils', () => {
12
-
13
- describe('Getting models uid\'s ', () => {
14
- test('Should get comments uid', () => {
15
- expect(getModelUid('comment')).toBe('plugins::comments.comment');
16
- });
17
-
18
- test('Should get report uid', () => {
19
- expect(getModelUid('comment-report')).toBe('plugins::comments.comment-report');
20
- });
21
- });
22
-
23
- describe('Resolve user context error', () => {
24
- test('Should throw 401', () => {
25
- try {
26
- resolveUserContextError({ id: 1 });
27
- } catch (e) {
28
- expect(e).toBeInstanceOf(PluginError);
29
- expect(e).toHaveProperty('status', 401);
30
- }
31
- });
32
-
33
- test('Should throw 403', () => {
34
- try {
35
- resolveUserContextError();
36
- } catch (e) {
37
- expect(e).toBeInstanceOf(PluginError);
38
- expect(e).toHaveProperty('status', 403);
39
- }
40
- });
41
- });
42
-
43
- describe('Building config query props', () => {
44
- test('Should return prop as is', () => {
45
- expect(buildConfigQueryProp('my.sample.prop')).toBe('my.sample.prop');
46
- });
47
-
48
- test('Should build query prop with \'.\'', () => {
49
- expect(buildConfigQueryProp(['my', 'sample', 'prop'])).toBe('my.sample.prop');
50
- });
51
- });
52
-
53
- });
@@ -1,112 +0,0 @@
1
- const PluginError = require('./../../utils/error');
2
- const { REGEX } = require('./../../utils/constants')
3
- const { first, isObject, isArray, isEmpty } = require('lodash');
4
-
5
- const buildNestedStructure = (
6
- entities,
7
- id = null,
8
- field = 'threadOf',
9
- dropBlockedThreads = false,
10
- blockNestedThreads = false,
11
- ) =>
12
- entities
13
- .filter(entity => {
14
- // mongo by default not return `null` for empty data
15
- if (entity[field] === null && id === null) {
16
- return true;
17
- }
18
- let data = entity[field];
19
- if (data && typeof id === 'string') {
20
- data = data.toString();
21
- }
22
- return (data && data === id) || (isObject(entity[field]) && (entity[field].id === id));
23
- })
24
- .map(entity => ({
25
- ...entity,
26
- [field]: undefined,
27
- related: undefined,
28
- blockedThread: blockNestedThreads || entity.blockedThread,
29
- children: entity.blockedThread && dropBlockedThreads ? [] : buildNestedStructure(entities, entity.id, field,
30
- dropBlockedThreads, entity.blockedThread),
31
- }));
32
-
33
- module.exports = {
34
- isEqualEntity: (existing, data, user) => {
35
- const { author: existingAuthor } = existing;
36
- const { author } = data;
37
-
38
- // Disallow approval status change by Client
39
- if (data.approvalStatus && (existing.approvalStatus !== data.approvalStatus)) {
40
- return false;
41
- }
42
-
43
- // Make sure that author is exact the same
44
- if (user) {
45
- const existingUserId = existingAuthor?.id || existingAuthor;
46
- const receivedUserId = user?.id || author?.id;
47
- return receivedUserId && (existingUserId === receivedUserId);
48
- }
49
- return existingAuthor.id === author?.id;
50
- },
51
-
52
- getRelatedGroups: related => related.split(REGEX.relatedUid).filter(s => s && s.length > 0),
53
-
54
- getModelUid: name => {
55
- return strapi
56
- .plugin('comments')
57
- .contentTypes[name]?.uid;
58
- },
59
-
60
- filterOurResolvedReports: item => (item ? {
61
- ...item,
62
- reports: (item.reports || []).filter(report => !report.resolved),
63
- } : item),
64
-
65
- convertContentTypeNameToSlug: str => {
66
- const plainConversion = str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);
67
- return first(plainConversion) === '-' ? plainConversion.slice(1, plainConversion.length) : plainConversion;
68
- },
69
-
70
- buildNestedStructure,
71
-
72
- buildAuthorModel: (item) => {
73
- const { authorUser, authorId, authorName, authorEmail, authorAvatar, ...rest } = item;
74
- let author = {};
75
- if (authorUser) {
76
- author = {
77
- id: authorUser.id,
78
- name: authorUser.username,
79
- email: authorUser.email,
80
- avatar: authorUser.avatar,
81
- };
82
- } else if(authorId) {
83
- author = {
84
- id: authorId,
85
- name: authorName,
86
- email: authorEmail,
87
- avatar: authorAvatar,
88
- };
89
- }
90
- return {
91
- ...rest,
92
- author: isEmpty(author) ? undefined : author,
93
- };
94
- },
95
-
96
- buildConfigQueryProp(prop) {
97
- let queryProp = prop;
98
- if (prop && isArray(prop)) {
99
- queryProp = prop.join('.');
100
- }
101
- return queryProp;
102
- },
103
-
104
- resolveUserContextError: user => {
105
- if (user) {
106
- throw new PluginError(401, 'Not authenticated');
107
- } else {
108
- throw new PluginError(403, 'Not authorized');
109
- }
110
- },
111
- };
112
-
@@ -1,17 +0,0 @@
1
- const { getPluginService } = require('../functions');
2
-
3
- beforeEach(() => {
4
- Object.defineProperty(global, 'strapi', {
5
- value: require('../../../__mocks__/initSetup')(),
6
- writable: true,
7
- });
8
- })
9
-
10
- describe('Test plugin functions utils', () => {
11
-
12
- describe('Get plugin service', () => {
13
- test('Should get common service', () => {
14
- expect(getPluginService('common')).toHaveProperty('findAllFlat');
15
- });
16
- });
17
- });
@@ -1,26 +0,0 @@
1
- const CONFIG_PARAMS = {
2
- ENABLED_COLLECTIONS: 'enabledCollections',
3
- APPROVAL_FLOW: 'approvalFlow',
4
- ENTRY_LABEL: 'entryLabel',
5
- MODERATOR_ROLES: 'moderatorRoles',
6
- BAD_WORDS: 'badWords',
7
- };
8
-
9
- const APPROVAL_STATUS = {
10
- PENDING: "PENDING",
11
- APPROVED: "APPROVED",
12
- REJECTED: "REJECTED",
13
- };
14
-
15
- const REGEX = {
16
- uid: /^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i,
17
- relatedUid: /^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i,
18
- email: /\S+@\S+\.\S+/,
19
- sorting: /^(?<path>[a-z0-9-_\:\.]+)\:+(asc|desc)$/i
20
- };
21
-
22
- module.exports = {
23
- CONFIG_PARAMS,
24
- APPROVAL_STATUS,
25
- REGEX,
26
- };
@@ -1,24 +0,0 @@
1
- module.exports = class PluginError extends Error {
2
- constructor(status, message, payload = undefined) {
3
- super();
4
- this.name = 'Strapi:Plugin:Comments';
5
- this.status = status || 500;
6
- this.message = message || 'Internal error';
7
- this.payload = payload;
8
- }
9
-
10
- toString(e = this) {
11
- return `${e.name} - ${e.message}`;
12
- }
13
-
14
- toJSON() {
15
- if (this.payload) {
16
- return {
17
- name: this.name,
18
- message: this.message,
19
- ...(this.payload || {}),
20
- };
21
- }
22
- return this;
23
- }
24
- };
@@ -1,19 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = {
4
- getPluginService(name) {
5
- return strapi
6
- .plugin('comments')
7
- .service(name);
8
- },
9
-
10
- parseParams: params =>
11
- Object.keys(params).reduce((prev, curr) => {
12
- const value = params[curr];
13
- const parsedValue = Number(value);
14
- return {
15
- ...prev,
16
- [curr]: isNaN(parsedValue) ? value : parsedValue
17
- };
18
- }, {}),
19
- };
package/strapi-admin.js DELETED
@@ -1,3 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = require('./admin/src').default;
package/strapi-server.js DELETED
@@ -1,49 +0,0 @@
1
- 'use strict';
2
-
3
- const { isArray, isEmpty, isString } = require('lodash');
4
-
5
- const server = require('./server');
6
- const contentTypes = require('./content-types');
7
- const { REGEX, CONFIG_PARAMS } = require('./server/utils/constants');
8
-
9
- module.exports = () => ({
10
- ...server,
11
- contentTypes,
12
- config: {
13
- ...server.config,
14
- default: ({ env }) => ({
15
- ...server.config.default,
16
- }),
17
- validator: (config) => {
18
- // Check enabledCollections values
19
- const enabledCollectionsValid = config[CONFIG_PARAMS.ENABLED_COLLECTIONS]
20
- .filter(_ => !REGEX.uid.test(_)).length === 0;
21
- if (!enabledCollectionsValid) {
22
- throw new Error(`'enabledCollections' must contain Content Types identifiers in the format like 'api::<collection name>.<content type name>'`);
23
- }
24
-
25
- // Check moderatorRoles values
26
- const moderatorRolesValid = config[CONFIG_PARAMS.MODERATOR_ROLES]
27
- .filter(_ => !isString(_)).length === 0;
28
- if (!moderatorRolesValid) {
29
- throw new Error(`'moderatorRoles' must roles keys`);
30
- }
31
-
32
- // Check approvalFlow values
33
- const approvalFlowValid = config[CONFIG_PARAMS.APPROVAL_FLOW]
34
- .filter(_ => !REGEX.uid.test(_)).length === 0;
35
- if (!approvalFlowValid) {
36
- throw new Error(`'approvalFlow' must contain Content Types identifiers in the format like 'api::<collection name>.<content type name>'`);
37
- }
38
-
39
- // Check entryLabel keys and values
40
- const entryLabelKeysValid = Object.keys(config[CONFIG_PARAMS.ENTRY_LABEL])
41
- .filter(_ => _ !== '*')
42
- .filter(_ => !(REGEX.uid.test(_) && isArray(config[CONFIG_PARAMS.ENTRY_LABEL][_]) && !isEmpty(config[CONFIG_PARAMS.ENTRY_LABEL][_]))).length === 0;
43
-
44
- if (!entryLabelKeysValid) {
45
- throw new Error(`'entryLabel' must contain records in the format like 'api::<collection name>.<content type name>': ['Field1', 'field_2']`);
46
- }
47
- },
48
- },
49
- });