strapi-plugin-comments 2.1.0-beta.1 → 2.1.2

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 (407) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/LICENSE.md +7 -0
  3. package/README.md +41 -5
  4. package/admin/src/components/ActionButton/styles.ts +11 -0
  5. package/admin/src/components/Avatar/index.tsx +31 -0
  6. package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
  7. package/admin/src/components/DiscussionStatus/index.tsx +36 -0
  8. package/admin/src/components/DiscussionThread/index.tsx +97 -0
  9. package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
  10. package/admin/src/components/DiscussionThreadItem/styles.ts +15 -0
  11. package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
  12. package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
  13. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
  14. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
  15. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
  16. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
  17. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
  18. package/admin/src/components/FormSwitch/index.tsx +35 -0
  19. package/admin/src/components/FormSwitch/styles.ts +10 -0
  20. package/admin/src/components/IconButton/styles.ts +19 -0
  21. package/admin/src/components/Initializer/index.tsx +28 -0
  22. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
  23. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
  24. package/admin/src/components/Nav/index.tsx +61 -0
  25. package/admin/src/components/PluginIcon/index.tsx +14 -0
  26. package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
  27. package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
  28. package/admin/src/components/StatusBadge/index.tsx +21 -0
  29. package/admin/src/components/StatusBadge/styles.ts +19 -0
  30. package/admin/src/components/TableFilters/index.tsx +58 -0
  31. package/admin/src/components/TablePagination/index.tsx +37 -0
  32. package/admin/src/components/icons/comments.tsx +15 -0
  33. package/admin/src/components/icons/index.ts +6 -0
  34. package/admin/src/components/icons/lock.tsx +27 -0
  35. package/admin/src/components/icons/review.tsx +25 -0
  36. package/admin/src/components/icons/unlock.tsx +25 -0
  37. package/admin/src/hooks/useConfig.ts +58 -0
  38. package/admin/src/index.ts +98 -0
  39. package/admin/src/pages/App/index.tsx +67 -0
  40. package/admin/src/pages/App/reducer/actions.ts +10 -0
  41. package/admin/src/pages/App/reducer/constants.ts +4 -0
  42. package/admin/src/pages/App/reducer/index.ts +28 -0
  43. package/admin/src/pages/App/reducer/init.ts +9 -0
  44. package/admin/src/pages/App/reducer/selectors.ts +32 -0
  45. package/admin/src/pages/App/utils/api.ts +14 -0
  46. package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
  47. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
  48. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
  49. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
  50. package/admin/src/pages/Details/index.tsx +169 -0
  51. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
  52. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
  53. package/admin/src/pages/Discover/index.tsx +230 -0
  54. package/admin/src/pages/Discover/utils/api.ts +22 -0
  55. package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
  56. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
  57. package/admin/src/pages/Settings/index.tsx +602 -0
  58. package/admin/src/pages/Settings/utils/api.ts +71 -0
  59. package/admin/src/pages/utils/api.ts +70 -0
  60. package/admin/src/permissions.ts +30 -0
  61. package/admin/src/pluginId.ts +3 -0
  62. package/admin/src/reducers.ts +8 -0
  63. package/admin/src/translations/fr.json +132 -1
  64. package/admin/src/translations/pt-BR.json +130 -130
  65. package/admin/src/utils/axiosInstance.ts +38 -0
  66. package/admin/src/utils/constants.ts +25 -0
  67. package/admin/src/utils/getApiUrl.ts +5 -0
  68. package/admin/src/utils/getMessage.ts +29 -0
  69. package/admin/src/utils/getRelatedGroups.ts +6 -0
  70. package/admin/src/utils/getUrl.ts +5 -0
  71. package/admin/src/utils/handleAPIError.ts +21 -0
  72. package/admin/src/utils/index.ts +11 -0
  73. package/admin/src/utils/parseRegExp.ts +9 -0
  74. package/admin/src/utils/renderEntryTitle.ts +16 -0
  75. package/admin/src/utils/renderInitials.ts +10 -0
  76. package/admin/src/utils/resolveCommentStatus.ts +37 -0
  77. package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
  78. package/{admin → build/admin}/src/components/ActionButton/styles.d.ts +0 -0
  79. package/{admin → build/admin}/src/components/ActionButton/styles.js +0 -0
  80. package/build/admin/src/components/Avatar/index.d.ts +12 -0
  81. package/build/admin/src/components/Avatar/index.js +26 -0
  82. package/{admin → build/admin}/src/components/ConfirmationDialog/index.d.ts +0 -0
  83. package/{admin → build/admin}/src/components/ConfirmationDialog/index.js +0 -0
  84. package/{admin → build/admin}/src/components/DiscussionStatus/index.d.ts +0 -0
  85. package/{admin → build/admin}/src/components/DiscussionStatus/index.js +0 -0
  86. package/{admin → build/admin}/src/components/DiscussionThread/index.d.ts +0 -0
  87. package/{admin → build/admin}/src/components/DiscussionThread/index.js +0 -0
  88. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.d.ts +0 -0
  89. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.js +0 -0
  90. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.d.ts +0 -0
  91. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.js +0 -0
  92. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.d.ts +0 -0
  93. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.js +0 -0
  94. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.d.ts +0 -0
  95. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.js +0 -0
  96. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +0 -0
  97. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -0
  98. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +0 -0
  99. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -0
  100. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.d.ts +0 -0
  101. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.js +3 -4
  102. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.d.ts +0 -0
  103. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.js +0 -0
  104. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.d.ts +0 -0
  105. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.js +0 -0
  106. package/{admin → build/admin}/src/components/FormSwitch/index.d.ts +0 -0
  107. package/{admin → build/admin}/src/components/FormSwitch/index.js +0 -0
  108. package/{admin → build/admin}/src/components/FormSwitch/styles.d.ts +0 -0
  109. package/{admin → build/admin}/src/components/FormSwitch/styles.js +0 -0
  110. package/{admin → build/admin}/src/components/IconButton/styles.d.ts +0 -0
  111. package/{admin → build/admin}/src/components/IconButton/styles.js +0 -0
  112. package/{admin → build/admin}/src/components/Initializer/index.d.ts +0 -0
  113. package/{admin → build/admin}/src/components/Initializer/index.js +0 -0
  114. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.d.ts +0 -0
  115. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.js +0 -0
  116. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.d.ts +0 -0
  117. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.js +0 -0
  118. package/{admin → build/admin}/src/components/Nav/index.d.ts +0 -0
  119. package/{admin → build/admin}/src/components/Nav/index.js +0 -0
  120. package/{admin → build/admin}/src/components/PluginIcon/index.d.ts +0 -0
  121. package/{admin → build/admin}/src/components/PluginIcon/index.js +0 -0
  122. package/{admin → build/admin}/src/components/ReportsReviewModal/index.d.ts +0 -0
  123. package/{admin → build/admin}/src/components/ReportsReviewModal/index.js +0 -0
  124. package/{admin → build/admin}/src/components/ReportsReviewTable/index.d.ts +0 -0
  125. package/{admin → build/admin}/src/components/ReportsReviewTable/index.js +0 -0
  126. package/{admin → build/admin}/src/components/StatusBadge/index.d.ts +0 -0
  127. package/{admin → build/admin}/src/components/StatusBadge/index.js +0 -0
  128. package/{admin → build/admin}/src/components/StatusBadge/styles.d.ts +0 -0
  129. package/{admin → build/admin}/src/components/StatusBadge/styles.js +0 -0
  130. package/{admin → build/admin}/src/components/TableFilters/index.d.ts +0 -0
  131. package/{admin → build/admin}/src/components/TableFilters/index.js +0 -0
  132. package/{admin → build/admin}/src/components/TablePagination/index.d.ts +0 -0
  133. package/{admin → build/admin}/src/components/TablePagination/index.js +0 -0
  134. package/{admin → build/admin}/src/components/icons/comments.d.ts +0 -0
  135. package/{admin → build/admin}/src/components/icons/comments.js +0 -0
  136. package/{admin → build/admin}/src/components/icons/index.d.ts +0 -0
  137. package/{admin → build/admin}/src/components/icons/index.js +0 -0
  138. package/{admin → build/admin}/src/components/icons/lock.d.ts +0 -0
  139. package/{admin → build/admin}/src/components/icons/lock.js +0 -0
  140. package/{admin → build/admin}/src/components/icons/review.d.ts +0 -0
  141. package/{admin → build/admin}/src/components/icons/review.js +0 -0
  142. package/{admin → build/admin}/src/components/icons/unlock.d.ts +0 -0
  143. package/{admin → build/admin}/src/components/icons/unlock.js +0 -0
  144. package/{admin → build/admin}/src/hooks/useConfig.d.ts +0 -0
  145. package/{admin → build/admin}/src/hooks/useConfig.js +0 -0
  146. package/{admin → build/admin}/src/index.d.ts +0 -0
  147. package/{admin → build/admin}/src/index.js +0 -0
  148. package/{admin → build/admin}/src/pages/App/index.d.ts +0 -0
  149. package/{admin → build/admin}/src/pages/App/index.js +0 -0
  150. package/{admin → build/admin}/src/pages/App/reducer/actions.d.ts +0 -0
  151. package/{admin → build/admin}/src/pages/App/reducer/actions.js +0 -0
  152. package/{admin → build/admin}/src/pages/App/reducer/constants.d.ts +0 -0
  153. package/{admin → build/admin}/src/pages/App/reducer/constants.js +0 -0
  154. package/{admin → build/admin}/src/pages/App/reducer/index.d.ts +0 -0
  155. package/{admin → build/admin}/src/pages/App/reducer/index.js +0 -0
  156. package/{admin → build/admin}/src/pages/App/reducer/init.d.ts +0 -0
  157. package/{admin → build/admin}/src/pages/App/reducer/init.js +0 -0
  158. package/{admin → build/admin}/src/pages/App/reducer/selectors.d.ts +0 -0
  159. package/{admin → build/admin}/src/pages/App/reducer/selectors.js +0 -0
  160. package/{admin → build/admin}/src/pages/App/utils/api.d.ts +0 -0
  161. package/{admin → build/admin}/src/pages/App/utils/api.js +0 -0
  162. package/{admin → build/admin}/src/pages/ComingSoonPage/index.d.ts +0 -0
  163. package/{admin → build/admin}/src/pages/ComingSoonPage/index.js +0 -0
  164. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.d.ts +0 -0
  165. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.js +0 -0
  166. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.d.ts +0 -0
  167. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.js +0 -0
  168. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.d.ts +0 -0
  169. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.js +0 -0
  170. package/{admin → build/admin}/src/pages/Details/index.d.ts +0 -0
  171. package/{admin → build/admin}/src/pages/Details/index.js +0 -0
  172. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.d.ts +0 -0
  173. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.js +2 -2
  174. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +0 -0
  175. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -0
  176. package/{admin → build/admin}/src/pages/Discover/index.d.ts +0 -0
  177. package/{admin → build/admin}/src/pages/Discover/index.js +0 -0
  178. package/{admin → build/admin}/src/pages/Discover/utils/api.d.ts +0 -0
  179. package/{admin → build/admin}/src/pages/Discover/utils/api.js +0 -0
  180. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.d.ts +0 -0
  181. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.js +0 -0
  182. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.d.ts +0 -0
  183. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.js +0 -0
  184. package/{admin → build/admin}/src/pages/Settings/index.d.ts +0 -0
  185. package/{admin → build/admin}/src/pages/Settings/index.js +0 -0
  186. package/{admin → build/admin}/src/pages/Settings/utils/api.d.ts +0 -0
  187. package/{admin → build/admin}/src/pages/Settings/utils/api.js +0 -0
  188. package/{admin → build/admin}/src/pages/utils/api.d.ts +0 -0
  189. package/{admin → build/admin}/src/pages/utils/api.js +0 -0
  190. package/{admin → build/admin}/src/permissions.d.ts +0 -0
  191. package/{admin → build/admin}/src/permissions.js +0 -0
  192. package/{admin → build/admin}/src/pluginId.d.ts +0 -0
  193. package/{admin → build/admin}/src/pluginId.js +0 -0
  194. package/{admin → build/admin}/src/reducers.d.ts +0 -0
  195. package/{admin → build/admin}/src/reducers.js +0 -0
  196. package/build/admin/src/translations/en.json +132 -0
  197. package/build/admin/src/translations/fr.json +132 -0
  198. package/build/admin/src/translations/pt-BR.json +132 -0
  199. package/{admin → build/admin}/src/utils/axiosInstance.d.ts +0 -0
  200. package/{admin → build/admin}/src/utils/axiosInstance.js +0 -0
  201. package/{admin → build/admin}/src/utils/constants.d.ts +0 -0
  202. package/{admin → build/admin}/src/utils/constants.js +0 -0
  203. package/{admin → build/admin}/src/utils/getApiUrl.d.ts +0 -0
  204. package/{admin → build/admin}/src/utils/getApiUrl.js +0 -0
  205. package/{admin → build/admin}/src/utils/getMessage.d.ts +0 -0
  206. package/{admin → build/admin}/src/utils/getMessage.js +0 -0
  207. package/{admin → build/admin}/src/utils/getRelatedGroups.d.ts +0 -0
  208. package/{admin → build/admin}/src/utils/getRelatedGroups.js +0 -0
  209. package/{admin → build/admin}/src/utils/getUrl.d.ts +0 -0
  210. package/{admin → build/admin}/src/utils/getUrl.js +0 -0
  211. package/{admin → build/admin}/src/utils/handleAPIError.d.ts +0 -0
  212. package/{admin → build/admin}/src/utils/handleAPIError.js +0 -0
  213. package/{admin → build/admin}/src/utils/index.d.ts +0 -0
  214. package/{admin → build/admin}/src/utils/index.js +0 -0
  215. package/{admin → build/admin}/src/utils/parseRegExp.d.ts +0 -0
  216. package/{admin → build/admin}/src/utils/parseRegExp.js +0 -0
  217. package/{admin → build/admin}/src/utils/renderEntryTitle.d.ts +0 -0
  218. package/{admin → build/admin}/src/utils/renderEntryTitle.js +0 -0
  219. package/{admin → build/admin}/src/utils/renderInitials.d.ts +0 -0
  220. package/{admin → build/admin}/src/utils/renderInitials.js +0 -0
  221. package/{admin → build/admin}/src/utils/resolveCommentStatus.d.ts +0 -0
  222. package/{admin → build/admin}/src/utils/resolveCommentStatus.js +0 -0
  223. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.d.ts +0 -0
  224. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.js +0 -0
  225. package/{content-types → build/content-types}/comment.d.ts +0 -0
  226. package/{content-types → build/content-types}/comment.js +0 -0
  227. package/{content-types → build/content-types}/index.d.ts +0 -0
  228. package/{content-types → build/content-types}/index.js +0 -0
  229. package/{content-types → build/content-types}/report.d.ts +0 -0
  230. package/{content-types → build/content-types}/report.js +0 -0
  231. package/build/package.json +94 -0
  232. package/{permissions.d.ts → build/permissions.d.ts} +0 -0
  233. package/{permissions.js → build/permissions.js} +0 -0
  234. package/{server → build/server}/bootstrap.d.ts +0 -0
  235. package/{server → build/server}/bootstrap.js +0 -0
  236. package/{server → build/server}/config/index.d.ts +0 -0
  237. package/{server → build/server}/config/index.js +0 -0
  238. package/{server → build/server}/controllers/admin.d.ts +0 -0
  239. package/{server → build/server}/controllers/admin.js +0 -0
  240. package/build/server/controllers/client.d.ts +4 -0
  241. package/{server → build/server}/controllers/client.js +38 -22
  242. package/{server → build/server}/controllers/index.d.ts +0 -0
  243. package/{server → build/server}/controllers/index.js +0 -0
  244. package/build/server/controllers/utils/functions.d.ts +7 -0
  245. package/{server → build/server}/controllers/utils/functions.js +0 -0
  246. package/build/server/controllers/utils/parsers.d.ts +10 -0
  247. package/build/server/controllers/utils/parsers.js +51 -0
  248. package/{server → build/server}/destroy.d.ts +0 -0
  249. package/{server → build/server}/destroy.js +0 -0
  250. package/{server → build/server}/graphql/index.d.ts +0 -0
  251. package/{server → build/server}/graphql/index.js +0 -0
  252. package/{server → build/server}/graphql/mutations/createAbuseReport.d.ts +0 -0
  253. package/{server → build/server}/graphql/mutations/createAbuseReport.js +0 -0
  254. package/{server → build/server}/graphql/mutations/createComment.d.ts +1 -1
  255. package/{server → build/server}/graphql/mutations/createComment.js +0 -0
  256. package/{server → build/server}/graphql/mutations/index.d.ts +0 -0
  257. package/{server → build/server}/graphql/mutations/index.js +0 -0
  258. package/{server → build/server}/graphql/mutations/removeComment.d.ts +1 -1
  259. package/{server → build/server}/graphql/mutations/removeComment.js +0 -0
  260. package/{server → build/server}/graphql/mutations/updateComment.d.ts +1 -1
  261. package/{server → build/server}/graphql/mutations/updateComment.js +0 -0
  262. package/{server → build/server}/graphql/queries/findAllFlat.d.ts +1 -1
  263. package/{server → build/server}/graphql/queries/findAllFlat.js +11 -6
  264. package/{server → build/server}/graphql/queries/findAllInHierarchy.d.ts +1 -2
  265. package/{server → build/server}/graphql/queries/findAllInHierarchy.js +5 -1
  266. package/{server → build/server}/graphql/queries/index.d.ts +0 -0
  267. package/{server → build/server}/graphql/queries/index.js +0 -0
  268. package/{server → build/server}/graphql/resolvers-config.d.ts +0 -0
  269. package/{server → build/server}/graphql/resolvers-config.js +0 -0
  270. package/{server → build/server}/graphql/types/comment-author.d.ts +0 -0
  271. package/{server → build/server}/graphql/types/comment-author.js +0 -0
  272. package/{server → build/server}/graphql/types/comment-nested.d.ts +0 -0
  273. package/{server → build/server}/graphql/types/comment-nested.js +0 -0
  274. package/{server → build/server}/graphql/types/comment.d.ts +0 -0
  275. package/{server → build/server}/graphql/types/comment.js +0 -0
  276. package/{server → build/server}/graphql/types/create-comment-author.d.ts +0 -0
  277. package/{server → build/server}/graphql/types/create-comment-author.js +0 -0
  278. package/{server → build/server}/graphql/types/create-comment.d.ts +0 -0
  279. package/{server → build/server}/graphql/types/create-comment.js +0 -0
  280. package/{server → build/server}/graphql/types/create-report.d.ts +0 -0
  281. package/{server → build/server}/graphql/types/create-report.js +0 -0
  282. package/{server → build/server}/graphql/types/id.d.ts +0 -0
  283. package/{server → build/server}/graphql/types/id.js +0 -0
  284. package/{server → build/server}/graphql/types/identify-comment-author.d.ts +0 -0
  285. package/{server → build/server}/graphql/types/identify-comment-author.js +0 -0
  286. package/{server → build/server}/graphql/types/index.d.ts +0 -0
  287. package/{server → build/server}/graphql/types/index.js +0 -0
  288. package/{server → build/server}/graphql/types/remove-comment.d.ts +0 -0
  289. package/{server → build/server}/graphql/types/remove-comment.js +0 -0
  290. package/{server → build/server}/graphql/types/report-reason.d.ts +0 -0
  291. package/{server → build/server}/graphql/types/report-reason.js +0 -0
  292. package/{server → build/server}/graphql/types/report.d.ts +0 -0
  293. package/{server → build/server}/graphql/types/report.js +0 -0
  294. package/{server → build/server}/graphql/types/response-find-all.d.ts +0 -0
  295. package/{server → build/server}/graphql/types/response-find-all.js +0 -0
  296. package/{server → build/server}/graphql/types/response-meta.d.ts +0 -0
  297. package/{server → build/server}/graphql/types/response-meta.js +0 -0
  298. package/{server → build/server}/graphql/types/response-pagination.d.ts +0 -0
  299. package/{server → build/server}/graphql/types/response-pagination.js +0 -0
  300. package/{server → build/server}/graphql/types/update-comment.d.ts +0 -0
  301. package/{server → build/server}/graphql/types/update-comment.js +0 -0
  302. package/{server → build/server}/index.d.ts +0 -0
  303. package/{server → build/server}/index.js +0 -0
  304. package/{server → build/server}/register.d.ts +0 -0
  305. package/{server → build/server}/register.js +0 -0
  306. package/{server → build/server}/routes/admin.d.ts +0 -0
  307. package/{server → build/server}/routes/admin.js +0 -0
  308. package/{server → build/server}/routes/client.d.ts +0 -0
  309. package/build/server/routes/client.js +90 -0
  310. package/{server → build/server}/routes/index.d.ts +0 -0
  311. package/{server → build/server}/routes/index.js +0 -0
  312. package/{server → build/server}/services/admin.d.ts +0 -0
  313. package/{server → build/server}/services/admin.js +10 -5
  314. package/{server → build/server}/services/client.d.ts +0 -0
  315. package/{server → build/server}/services/client.js +57 -45
  316. package/{server → build/server}/services/common.d.ts +0 -0
  317. package/{server → build/server}/services/common.js +32 -11
  318. package/{server → build/server}/services/graphql.d.ts +0 -0
  319. package/{server → build/server}/services/graphql.js +0 -0
  320. package/{server → build/server}/services/index.d.ts +0 -0
  321. package/{server → build/server}/services/index.js +0 -0
  322. package/{server → build/server}/services/utils/functions.d.ts +1 -1
  323. package/{server → build/server}/services/utils/functions.js +9 -4
  324. package/{server → build/server}/utils/constants.d.ts +0 -0
  325. package/{server → build/server}/utils/constants.js +0 -0
  326. package/{server → build/server}/utils/error.d.ts +0 -0
  327. package/{server → build/server}/utils/error.js +0 -0
  328. package/{server → build/server}/utils/functions.d.ts +0 -0
  329. package/{server → build/server}/utils/functions.js +0 -0
  330. package/{strapi-admin.d.ts → build/strapi-admin.d.ts} +0 -0
  331. package/{strapi-admin.js → build/strapi-admin.js} +0 -0
  332. package/{strapi-server.d.ts → build/strapi-server.d.ts} +0 -0
  333. package/{strapi-server.js → build/strapi-server.js} +0 -0
  334. package/build/tsconfig.tsbuildinfo +1 -0
  335. package/{types → build/types}/contentTypes.d.ts +13 -9
  336. package/{types → build/types}/contentTypes.js +0 -0
  337. package/content-types/comment.ts +93 -0
  338. package/content-types/index.ts +11 -0
  339. package/content-types/report.ts +50 -0
  340. package/jest.config.ts +22 -0
  341. package/package.json +36 -7
  342. package/permissions.ts +17 -0
  343. package/server/bootstrap.ts +66 -0
  344. package/server/config/index.ts +19 -0
  345. package/server/controllers/admin.ts +194 -0
  346. package/server/controllers/client.ts +220 -0
  347. package/server/controllers/index.ts +13 -0
  348. package/server/controllers/utils/functions.ts +27 -0
  349. package/server/controllers/utils/parsers.ts +59 -0
  350. package/server/destroy.ts +3 -0
  351. package/server/graphql/index.ts +27 -0
  352. package/server/graphql/mutations/createAbuseReport.ts +38 -0
  353. package/server/graphql/mutations/createComment.ts +41 -0
  354. package/server/graphql/mutations/index.ts +26 -0
  355. package/server/graphql/mutations/removeComment.ts +41 -0
  356. package/server/graphql/mutations/updateComment.ts +40 -0
  357. package/server/graphql/queries/findAllFlat.ts +58 -0
  358. package/server/graphql/queries/findAllInHierarchy.ts +47 -0
  359. package/server/graphql/queries/index.ts +22 -0
  360. package/server/graphql/resolvers-config.ts +13 -0
  361. package/server/graphql/types/comment-author.ts +12 -0
  362. package/server/graphql/types/comment-nested.ts +19 -0
  363. package/server/graphql/types/comment.ts +18 -0
  364. package/server/graphql/types/create-comment-author.ts +12 -0
  365. package/server/graphql/types/create-comment.ts +12 -0
  366. package/server/graphql/types/create-report.ts +12 -0
  367. package/server/graphql/types/id.ts +28 -0
  368. package/server/graphql/types/identify-comment-author.ts +9 -0
  369. package/server/graphql/types/index.ts +38 -0
  370. package/server/graphql/types/remove-comment.ts +11 -0
  371. package/server/graphql/types/report-reason.ts +12 -0
  372. package/server/graphql/types/report.ts +14 -0
  373. package/server/graphql/types/response-find-all.ts +10 -0
  374. package/server/graphql/types/response-meta.ts +9 -0
  375. package/server/graphql/types/response-pagination.ts +14 -0
  376. package/server/graphql/types/update-comment.ts +12 -0
  377. package/server/index.ts +20 -0
  378. package/server/register.ts +3 -0
  379. package/server/routes/admin.ts +118 -0
  380. package/server/routes/client.ts +95 -0
  381. package/server/routes/index.ts +25 -0
  382. package/server/services/admin.ts +406 -0
  383. package/server/services/client.ts +394 -0
  384. package/server/services/common.ts +501 -0
  385. package/server/services/graphql.ts +219 -0
  386. package/server/services/index.ts +13 -0
  387. package/server/services/utils/functions.ts +150 -0
  388. package/server/utils/constants.ts +23 -0
  389. package/server/utils/error.ts +44 -0
  390. package/server/utils/functions.ts +55 -0
  391. package/strapi-admin.ts +5 -0
  392. package/strapi-server.ts +77 -0
  393. package/tsconfig.json +38 -0
  394. package/types/common.d.ts +1 -0
  395. package/types/config.d.ts +35 -0
  396. package/types/constants.d.ts +3 -0
  397. package/types/contentTypes.ts +56 -0
  398. package/types/controllers.d.ts +125 -0
  399. package/types/graphql.d.ts +24 -0
  400. package/types/index.d.ts +7 -0
  401. package/types/services.d.ts +166 -0
  402. package/server/controllers/client.d.ts +0 -4
  403. package/server/controllers/utils/functions.d.ts +0 -7
  404. package/server/controllers/utils/parsers.d.ts +0 -15
  405. package/server/controllers/utils/parsers.js +0 -23
  406. package/server/routes/client.js +0 -54
  407. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import adminServices from "./admin";
4
+ import clientServices from "./client";
5
+ import commonServices from "./common";
6
+ import graphQLService from "./graphql";
7
+
8
+ export default {
9
+ admin: adminServices,
10
+ client: clientServices,
11
+ common: commonServices,
12
+ gql: graphQLService,
13
+ };
@@ -0,0 +1,150 @@
1
+ import { Id, IStrapi, StrapiUser } from "strapi-typed";
2
+ import { Comment, CommentAuthor, ToBeFixed } from "../../../types";
3
+
4
+ import PluginError from "./../../utils/error";
5
+ import { REGEX } from "./../../utils/constants";
6
+ import { first, get, isObject, isArray, isEmpty, isString } from "lodash";
7
+
8
+ declare var strapi: IStrapi;
9
+
10
+ export const buildNestedStructure = (
11
+ entities: Array<Comment>,
12
+ id: Id | null = null,
13
+ field: string = "threadOf",
14
+ dropBlockedThreads = false,
15
+ blockNestedThreads = false
16
+ ): Array<Comment> =>
17
+ entities
18
+ .filter((entity: Comment) => {
19
+ // mongo by default not return `null` for empty data
20
+ const entityField: any = get(entity, field);
21
+ if (entityField === null && id === null) {
22
+ return true;
23
+ }
24
+ let data = entityField;
25
+ if (data && typeof id === "string") {
26
+ data = data.toString();
27
+ }
28
+ return (
29
+ (data && data === id) ||
30
+ (isObject(entityField) && (entityField as any).id === id)
31
+ );
32
+ })
33
+ .map((entity: Comment) => ({
34
+ ...entity,
35
+ [field]: undefined,
36
+ related: undefined,
37
+ blockedThread: blockNestedThreads || entity.blockedThread,
38
+ children:
39
+ entity.blockedThread && dropBlockedThreads
40
+ ? []
41
+ : buildNestedStructure(
42
+ entities,
43
+ entity.id,
44
+ field,
45
+ dropBlockedThreads,
46
+ entity.blockedThread
47
+ ),
48
+ }));
49
+
50
+ export const isEqualEntity = (
51
+ existing: Comment,
52
+ data: ToBeFixed,
53
+ user: StrapiUser
54
+ ): boolean => {
55
+ const { author: existingAuthor = {} as CommentAuthor } = existing;
56
+ const { author } = data;
57
+
58
+ // Disallow approval status change by Client
59
+ if (data.approvalStatus && existing.approvalStatus !== data.approvalStatus) {
60
+ return false;
61
+ }
62
+
63
+ // Make sure that author is exact the same
64
+ if (user) {
65
+ const existingUserId = existingAuthor?.id || existingAuthor;
66
+ const receivedUserId = user?.id || author?.id;
67
+ return receivedUserId && existingUserId === receivedUserId;
68
+ }
69
+ return existingAuthor.id === author?.id;
70
+ };
71
+
72
+ export const getRelatedGroups = (related: string): Array<string> =>
73
+ related.split(REGEX.relatedUid).filter((s) => s && s.length > 0);
74
+
75
+ export const getModelUid = (name: string): string => {
76
+ return strapi.plugin("comments").contentTypes[name]?.uid;
77
+ };
78
+
79
+ export const filterOurResolvedReports = (item: Comment): Comment =>
80
+ item
81
+ ? {
82
+ ...item,
83
+ reports: (item.reports || []).filter((report) => !report.resolved),
84
+ }
85
+ : item;
86
+
87
+ export const convertContentTypeNameToSlug = (str: string): string => {
88
+ const plainConversion = str.replace(
89
+ /[A-Z]/g,
90
+ (letter) => `-${letter.toLowerCase()}`
91
+ );
92
+ return first(plainConversion) === "-"
93
+ ? plainConversion.slice(1, plainConversion.length)
94
+ : plainConversion;
95
+ };
96
+
97
+ export const buildAuthorModel = (
98
+ item: Comment,
99
+ fieldsToPopulate: Array<string> = []
100
+ ): Comment => {
101
+ const {
102
+ authorUser,
103
+ authorId,
104
+ authorName,
105
+ authorEmail,
106
+ authorAvatar,
107
+ ...rest
108
+ } = item;
109
+ let author: CommentAuthor = {} as CommentAuthor;
110
+ if (authorUser) {
111
+ author = fieldsToPopulate.reduce(
112
+ (prev, curr) => ({
113
+ ...prev,
114
+ [curr]: authorUser[curr],
115
+ }),
116
+ {
117
+ id: authorUser.id,
118
+ name: authorUser.username,
119
+ email: authorUser.email,
120
+ avatar:
121
+ isString(authorUser.avatar) || isObject(authorUser.avatar)
122
+ ? authorUser.avatar
123
+ : undefined,
124
+ }
125
+ );
126
+ } else if (authorId) {
127
+ author = {
128
+ id: authorId,
129
+ name: authorName,
130
+ email: authorEmail,
131
+ avatar: authorAvatar,
132
+ };
133
+ }
134
+ return {
135
+ ...rest,
136
+ author: isEmpty(author) ? undefined : author,
137
+ };
138
+ };
139
+
140
+ export const buildConfigQueryProp = (
141
+ prop: undefined | string | Array<string> = ""
142
+ ): string => (isArray(prop) ? prop.join(".") : prop ?? "");
143
+
144
+ export const resolveUserContextError = (user: StrapiUser): PluginError => {
145
+ if (user) {
146
+ throw new PluginError(401, "Not authenticated");
147
+ } else {
148
+ throw new PluginError(403, "Not authorized");
149
+ }
150
+ };
@@ -0,0 +1,23 @@
1
+ import { ConfigParamKeys, RegExpCollection } from "../../types";
2
+
3
+ export const CONFIG_PARAMS: ConfigParamKeys = {
4
+ ENABLED_COLLECTIONS: "enabledCollections",
5
+ APPROVAL_FLOW: "approvalFlow",
6
+ ENTRY_LABEL: "entryLabel",
7
+ MODERATOR_ROLES: "moderatorRoles",
8
+ BAD_WORDS: "badWords",
9
+ };
10
+
11
+ export const APPROVAL_STATUS = {
12
+ PENDING: "PENDING",
13
+ APPROVED: "APPROVED",
14
+ REJECTED: "REJECTED",
15
+ };
16
+
17
+ export const REGEX: RegExpCollection = {
18
+ uid: /^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i,
19
+ relatedUid:
20
+ /^(?<uid>[a-z0-9-]+\:{2}[a-z0-9-]+\.[a-z0-9-]+)\:{1}(?<id>[a-z0-9-]+)$/i,
21
+ email: /\S+@\S+\.\S+/,
22
+ sorting: /^(?<path>[a-z0-9-_\:\.]+)\:+(asc|desc)$/i,
23
+ };
@@ -0,0 +1,44 @@
1
+ type ErrorPayload =
2
+ | {
3
+ [key: string]: any;
4
+ }
5
+ | undefined;
6
+
7
+ interface IPluginError extends Error {
8
+ status: number;
9
+ payload: ErrorPayload;
10
+ }
11
+
12
+ export default class PluginError extends Error implements IPluginError {
13
+ status: number;
14
+ payload: ErrorPayload;
15
+
16
+ constructor(
17
+ status: number,
18
+ message: string,
19
+ payload: ErrorPayload = undefined
20
+ ) {
21
+ super();
22
+ this.name = "Strapi:Plugin:Comments";
23
+ this.status = status || 500;
24
+ this.message = message || "Internal error";
25
+ this.payload = payload;
26
+
27
+ Object.setPrototypeOf(this, PluginError.prototype);
28
+ }
29
+
30
+ toString(e: PluginError = this): string {
31
+ return `${e.name} - ${e.message}`;
32
+ }
33
+
34
+ toJSON() {
35
+ if (this.payload) {
36
+ return {
37
+ name: this.name,
38
+ message: this.message,
39
+ ...(this.payload || {}),
40
+ };
41
+ }
42
+ return this;
43
+ }
44
+ }
@@ -0,0 +1,55 @@
1
+ import {
2
+ StrapiQueryParams,
3
+ StrapiQueryParamsParsed,
4
+ IStrapi,
5
+ } from "strapi-typed";
6
+ import PluginError from "./error";
7
+
8
+ declare var strapi: IStrapi;
9
+
10
+ export const getPluginService = <T>(name: string): T =>
11
+ strapi.plugin("comments").service(name);
12
+
13
+ export const parseParams = <T = StrapiQueryParamsParsed>(
14
+ params: StrapiQueryParams
15
+ ): T =>
16
+ Object.keys(params).reduce((prev: T, curr: string) => {
17
+ const value = params[curr];
18
+ const parsedValue = Number(value);
19
+ return {
20
+ ...prev,
21
+ [curr]: isNaN(parsedValue) ? value : parsedValue,
22
+ };
23
+ }, {} as unknown as T);
24
+
25
+ export const assertParamsPresent: <T>(
26
+ params: unknown,
27
+ keys: string[]
28
+ ) => asserts params is T = (params, keys) => {
29
+ const missingParams =
30
+ params instanceof Object
31
+ ? keys.filter((key) => !params.hasOwnProperty(key))
32
+ : keys;
33
+
34
+ if (missingParams.length === 0) {
35
+ return;
36
+ }
37
+
38
+ throw new PluginError(
39
+ 400,
40
+ `Expected params missing: ${missingParams.join(", ")}`
41
+ );
42
+ };
43
+
44
+ export const assertNotEmpty: <T>(
45
+ value: T | null | undefined,
46
+ customError?: Error
47
+ ) => asserts value is T = (value, customError) => {
48
+ if (value) {
49
+ return;
50
+ }
51
+
52
+ throw (
53
+ customError ?? new PluginError(400, "Non-empty value expected, empty given")
54
+ );
55
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import admin from "./admin/src";
4
+
5
+ export default admin;
@@ -0,0 +1,77 @@
1
+ import { PropType } from "strapi-typed";
2
+ import { CommentsPluginConfig } from "./types";
3
+
4
+ import { isArray, isEmpty, isString } from "lodash";
5
+
6
+ import { REGEX, CONFIG_PARAMS } from "./server/utils/constants";
7
+ import server from "./server";
8
+ import contentTypes from "./content-types";
9
+
10
+ export = () => ({
11
+ ...server,
12
+ contentTypes,
13
+ config: {
14
+ ...server.config,
15
+ default: () => ({
16
+ ...server.config.default,
17
+ }),
18
+ validator: (config: CommentsPluginConfig) => {
19
+ // Check enabledCollections values
20
+ const enabledCollections: PropType<
21
+ CommentsPluginConfig,
22
+ "enabledCollections"
23
+ > = config[CONFIG_PARAMS.ENABLED_COLLECTIONS];
24
+ const enabledCollectionsValid: boolean =
25
+ enabledCollections.filter((_: string) => !REGEX.uid.test(_)).length ===
26
+ 0;
27
+
28
+ if (!enabledCollectionsValid) {
29
+ throw new Error(
30
+ `'enabledCollections' must contain Content Types identifiers in the format like 'api::<collection name>.<content type name>'`
31
+ );
32
+ }
33
+
34
+ // Check moderatorRoles values
35
+ const moderatorRoles: PropType<CommentsPluginConfig, "moderatorRoles"> =
36
+ config[CONFIG_PARAMS.MODERATOR_ROLES];
37
+ const moderatorRolesValid: boolean =
38
+ moderatorRoles.filter((_: string) => !isString(_)).length === 0;
39
+
40
+ if (!moderatorRolesValid) {
41
+ throw new Error(`'moderatorRoles' must roles keys`);
42
+ }
43
+
44
+ // Check approvalFlow values
45
+ const approvalFlow: PropType<CommentsPluginConfig, "approvalFlow"> =
46
+ config[CONFIG_PARAMS.APPROVAL_FLOW];
47
+ const approvalFlowValid: boolean =
48
+ approvalFlow.filter((_: string) => !REGEX.uid.test(_)).length === 0;
49
+ if (!approvalFlowValid) {
50
+ throw new Error(
51
+ `'approvalFlow' must contain Content Types identifiers in the format like 'api::<collection name>.<content type name>'`
52
+ );
53
+ }
54
+
55
+ // Check entryLabel keys and values
56
+ const entryLabels: PropType<CommentsPluginConfig, "entryLabel"> =
57
+ config[CONFIG_PARAMS.ENTRY_LABEL];
58
+ const entryLabelKeysValid: boolean =
59
+ Object.keys(entryLabels)
60
+ .filter((_: string) => _ !== "*")
61
+ .filter(
62
+ (_: string) =>
63
+ !(
64
+ REGEX.uid.test(_) &&
65
+ isArray(entryLabels[_]) &&
66
+ !isEmpty(entryLabels[_])
67
+ )
68
+ ).length === 0;
69
+
70
+ if (!entryLabelKeysValid) {
71
+ throw new Error(
72
+ `'entryLabel' must contain records in the format like 'api::<collection name>.<content type name>': ['Field1', 'field_2']`
73
+ );
74
+ }
75
+ },
76
+ },
77
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "compilerOptions": {
3
+ "rootDir": "./",
4
+ "outDir": "build",
5
+ "target": "esnext",
6
+ "module": "commonjs",
7
+ "jsx": "react",
8
+ "moduleResolution": "node",
9
+ "allowSyntheticDefaultImports": true,
10
+ "esModuleInterop": true,
11
+ "strict": true,
12
+ "noUnusedLocals": true,
13
+ "noUnusedParameters": true,
14
+ "removeComments": true,
15
+ "sourceMap": true,
16
+ "declaration": true,
17
+ "declarationMap": true,
18
+ "downlevelIteration": true,
19
+ "incremental": true,
20
+ "allowJs": true,
21
+ "skipLibCheck": true,
22
+ "resolveJsonModule": true
23
+ },
24
+ "include": [
25
+ "./server/**/*",
26
+ "./admin/**/*",
27
+ "./strapi-server.*",
28
+ "./strapi-admin.*",
29
+ "./setup-package.ts",
30
+ "./permissions.*"
31
+ ],
32
+ "exclude": [
33
+ "**/node_modules/**/*",
34
+ "**/__tests__/**/*",
35
+ "**/__mocks__/**/*",
36
+ "**/build/**/*"
37
+ ]
38
+ }
@@ -0,0 +1 @@
1
+ export type ToBeFixed = any;
@@ -0,0 +1,35 @@
1
+ import { StrapiPluginConfig, TypeResult } from "strapi-typed";
2
+ import { RegExpCollection } from "./constants";
3
+
4
+ export type CommentsPluginConfig = StrapiPluginConfig<{
5
+ enabledCollections: Array<string>;
6
+ moderatorRoles: Array<string>;
7
+ approvalFlow: Array<string>;
8
+ entryLabel: PluginConfigEntryLabels;
9
+ reportReasons: PluginConfigReportReasons;
10
+ badWords?: boolean;
11
+ }>;
12
+
13
+ export type PluginConfigKeys = keyof CommentsPluginConfig;
14
+
15
+ export type ViewCommentsPluginConfig = {
16
+ approvalFlow: TypeResult<SettingsCommentsPluginConfig["approvalFlow"]>;
17
+ entryLabel: TypeResult<SettingsCommentsPluginConfig["entryLabel"]>;
18
+ reportReasons: TypeResult<SettingsCommentsPluginConfig["reportReasons"]>;
19
+ regex?: RegExpCollection;
20
+ };
21
+
22
+ export type SettingsCommentsPluginConfig = CommentsPluginConfig & {
23
+ isGQLPluginEnabled?: boolean;
24
+ regex?: RegExpCollection;
25
+ };
26
+
27
+ export type AnyConfig = ViewCommentsPluginConfig | SettingsCommentsPluginConfig;
28
+
29
+ export type StrapiConfig = {
30
+ default: CommentsPluginConfig;
31
+ };
32
+
33
+ export type ConfigParamKeys = {
34
+ [key: string]: PluginConfigKeys;
35
+ };
@@ -0,0 +1,3 @@
1
+ export type RegExpCollection = {
2
+ [key: string]: RegExp;
3
+ };
@@ -0,0 +1,56 @@
1
+ import { OnlyStrings, StrapiUser, StringMap } from "strapi-typed";
2
+
3
+ export type Id = number | string;
4
+
5
+ export type Comment<TAuthor = CommentAuthor> = {
6
+ id: Id;
7
+ content: string;
8
+ author?: TAuthor;
9
+ children?: Array<Comment>;
10
+ reports?: Array<CommentReport>;
11
+ threadOf: Comment | number | null;
12
+ gotThread?: boolean;
13
+ related?: any;
14
+ blocked?: boolean;
15
+ blockedThread?: boolean;
16
+ itemsInTread?: number;
17
+ approvalStatus?: CommentApprovalStatus | null;
18
+ firstThreadItemId?: Id;
19
+ threadFirstItemId?: Id;
20
+ } & CommentAuthorPartial;
21
+
22
+ export type CommentModelKeys = OnlyStrings<keyof Comment>;
23
+
24
+ type CommentApprovalStatus = "PENDING" | "APPROVED" | "REJECTED";
25
+
26
+ export type CommentAuthor = {
27
+ id: Id;
28
+ name?: string;
29
+ email?: string;
30
+ avatar?: string | object;
31
+ };
32
+
33
+ export type CommentAuthorPartial = {
34
+ authorId?: Id;
35
+ authorName?: string;
36
+ authorEmail?: string;
37
+ authorAvatar?: string;
38
+ authorUser?: StrapiUser;
39
+ };
40
+
41
+ export type CommentAuthorResolved<TExtension = StringMap<unknown>> =
42
+ CommentAuthor & TExtension;
43
+
44
+ export type CommentReport = {
45
+ id: Id;
46
+ related: Comment | Id;
47
+ reason: any;
48
+ content: string;
49
+ resolved: boolean;
50
+ };
51
+
52
+ export type RelatedEntity = {
53
+ id: Id;
54
+ uid: string;
55
+ requireCommentsApproval?: boolean;
56
+ };
@@ -0,0 +1,125 @@
1
+ import {
2
+ Id,
3
+ KeyValueSet,
4
+ StrapiPagination,
5
+ StrapiPaginatedResponse,
6
+ StrapiRequestContext,
7
+ StrapiResponseMeta,
8
+ StrapiStore,
9
+ StrapiQueryParams,
10
+ StrapiQueryParamsParsed,
11
+ StrapiQueryParamsParsedFilters,
12
+ StrapiQueryParamsParsedOrderBy,
13
+ StrapiUser,
14
+ StrapiRequestQueryFieldsClause,
15
+ OnlyStrings,
16
+ } from "strapi-typed";
17
+ import { ToBeFixed } from "./common";
18
+ import {
19
+ CommentsPluginConfig,
20
+ SettingsCommentsPluginConfig,
21
+ ViewCommentsPluginConfig,
22
+ } from "./config";
23
+ import {
24
+ Comment,
25
+ CommentAuthor,
26
+ CommentModelKeys,
27
+ CommentReport,
28
+ RelatedEntity,
29
+ } from "./contentTypes";
30
+
31
+ import PluginError from "../server/utils/error";
32
+ import {
33
+ AdminFindOneAndThreadProps,
34
+ AdminPaginatedResponse,
35
+ AdminSinglePageResponse,
36
+ CommentsPluginServices,
37
+ } from "./services";
38
+
39
+ export type FlatInput<TKeys extends string> = {
40
+ relation: Id;
41
+ query: ToBeFixed;
42
+ sort: ToBeFixed;
43
+ pagination?: ToBeFixed;
44
+ fields?: StrapiRequestQueryFieldsClause<TKeys>;
45
+ };
46
+
47
+ export type ThrowableResponse<T> = T | PluginError | never;
48
+ export type ThrowablePromisedResponse<T> = Promise<ThrowableResponse<T>>;
49
+
50
+ export type CreateCommentPayload = {
51
+ content: Comment["content"];
52
+ threadOf: Comment["threadOf"];
53
+ author?: Comment["author"];
54
+ approvalStatus?: Comment["approvalStatus"];
55
+ };
56
+
57
+ export type UpdateCommentPayload = {
58
+ content: Comment["content"];
59
+ author: {
60
+ id: CommentAuthor["id"];
61
+ };
62
+ };
63
+
64
+ export type CreateCommentReportPayload = {
65
+ reason: CommentReport["reason"];
66
+ content: CommentReport["content"];
67
+ };
68
+
69
+ export interface IControllerAdmin {
70
+ getService<T extends CommentsPluginServices>(name?: string): T;
71
+ config(
72
+ ctx: StrapiRequestContext
73
+ ): ThrowablePromisedResponse<ViewCommentsPluginConfig>;
74
+ settingsConfig(
75
+ ctx: StrapiRequestContext
76
+ ): ThrowablePromisedResponse<SettingsCommentsPluginConfig>;
77
+ settingsUpdateConfig(
78
+ ctx: StrapiRequestContext<SettingsCommentsPluginConfig>
79
+ ): ThrowablePromisedResponse<SettingsCommentsPluginConfig>;
80
+ settingsRestoreConfig(
81
+ ctx: StrapiRequestContext<SettingsCommentsPluginConfig>
82
+ ): ThrowablePromisedResponse<SettingsCommentsPluginConfig>;
83
+ settingsRestart(
84
+ ctx: StrapiRequestContext
85
+ ): ThrowablePromisedResponse<unknown>;
86
+ findAll(ctx: StrapiRequestContext): Promise<AdminPaginatedResponse<Comment>>;
87
+ findOne(
88
+ ctx: StrapiRequestContext<never, AdminFindOneAndThreadProps>
89
+ ): ThrowablePromisedResponse<AdminSinglePageResponse>;
90
+ blockComment(ctx: StrapiRequestContext): ThrowablePromisedResponse<Comment>;
91
+ unblockComment(ctx: StrapiRequestContext): ThrowablePromisedResponse<Comment>;
92
+ blockCommentThread(
93
+ ctx: StrapiRequestContext
94
+ ): ThrowablePromisedResponse<Comment>;
95
+ unblockCommentThread(
96
+ ctx: StrapiRequestContext
97
+ ): ThrowablePromisedResponse<Comment>;
98
+ resolveAbuseReport(
99
+ ctx: StrapiRequestContext
100
+ ): ThrowablePromisedResponse<CommentReport>;
101
+ approveComment(ctx: StrapiRequestContext): ThrowablePromisedResponse<Comment>;
102
+ rejectComment(ctx: StrapiRequestContext): ThrowablePromisedResponse<Comment>;
103
+ }
104
+
105
+ export interface IControllerClient {
106
+ getService<T extends CommentsPluginServices>(name?: string): T;
107
+ findAllFlat(
108
+ ctx: StrapiRequestContext<never>
109
+ ): ThrowablePromisedResponse<StrapiPaginatedResponse<Comment>>;
110
+ findAllInHierarchy(
111
+ ctx: StrapiRequestContext<never>
112
+ ): ThrowablePromisedResponse<Array<Comment>>;
113
+ post(
114
+ ctx: StrapiRequestContext<CreateCommentPayload>
115
+ ): ThrowablePromisedResponse<Comment>;
116
+ put(
117
+ ctx: StrapiRequestContext<UpdateCommentPayload>
118
+ ): ThrowablePromisedResponse<Comment>;
119
+ reportAbuse(
120
+ ctx: StrapiRequestContext<CreateCommentReportPayload>
121
+ ): ThrowablePromisedResponse<CommentReport>;
122
+ removeComment(
123
+ ctx: StrapiRequestContext<never>
124
+ ): ThrowablePromisedResponse<Comment>;
125
+ }
@@ -0,0 +1,24 @@
1
+ import { Primitive, StrapiContext } from "strapi-typed";
2
+ import { ToBeFixed } from "./common";
3
+
4
+ export type StrapiGraphQLContext = StrapiContext & ToBeFixed;
5
+
6
+ export interface INexusType {
7
+ field(name: string, config?: ToBeFixed): void;
8
+ id(name: string);
9
+ boolean(name: string);
10
+ string(name: string);
11
+ int(name: string);
12
+
13
+ nonNull: INexusType;
14
+ list: INexusType;
15
+ }
16
+
17
+ export type NexusRequestProps<T = ToBeFixed> = {
18
+ input?: T;
19
+ };
20
+
21
+ export type NexusAst = {
22
+ kind: string;
23
+ value: Primitive;
24
+ };
@@ -0,0 +1,7 @@
1
+ export * from "./common";
2
+ export * from "./config";
3
+ export * from "./contentTypes";
4
+ export * from "./constants";
5
+ export * from "./controllers";
6
+ export * from "./graphql";
7
+ export * from "./services";