strapi-plugin-comments 2.1.1 → 2.1.4

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 (400) hide show
  1. package/{build/admin → admin}/src/components/ActionButton/styles.d.ts +0 -0
  2. package/{build/admin → admin}/src/components/ActionButton/styles.js +0 -0
  3. package/{build/admin → admin}/src/components/Avatar/index.d.ts +0 -0
  4. package/{build/admin → admin}/src/components/Avatar/index.js +0 -0
  5. package/{build/admin → admin}/src/components/ConfirmationDialog/index.d.ts +0 -0
  6. package/{build/admin → admin}/src/components/ConfirmationDialog/index.js +0 -0
  7. package/{build/admin → admin}/src/components/DiscussionStatus/index.d.ts +0 -0
  8. package/{build/admin → admin}/src/components/DiscussionStatus/index.js +0 -0
  9. package/{build/admin → admin}/src/components/DiscussionThread/index.d.ts +0 -0
  10. package/{build/admin → admin}/src/components/DiscussionThread/index.js +0 -0
  11. package/{build/admin → admin}/src/components/DiscussionThreadItem/index.d.ts +0 -0
  12. package/{build/admin → admin}/src/components/DiscussionThreadItem/index.js +0 -0
  13. package/{build/admin → admin}/src/components/DiscussionThreadItem/styles.d.ts +0 -0
  14. package/{build/admin → admin}/src/components/DiscussionThreadItem/styles.js +0 -0
  15. package/{build/admin → admin}/src/components/DiscussionThreadItemActions/index.d.ts +0 -0
  16. package/{build/admin → admin}/src/components/DiscussionThreadItemActions/index.js +0 -0
  17. package/{build/admin → admin}/src/components/DiscussionThreadItemActions/styles.d.ts +0 -0
  18. package/{build/admin → admin}/src/components/DiscussionThreadItemActions/styles.js +0 -0
  19. package/{build/admin → admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +0 -0
  20. package/{build/admin → admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -0
  21. package/{build/admin → admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +0 -0
  22. package/{build/admin → admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -0
  23. package/{build/admin → admin}/src/components/DiscussionThreadItemFooter/index.d.ts +0 -0
  24. package/{build/admin → admin}/src/components/DiscussionThreadItemFooter/index.js +0 -0
  25. package/{build/admin → admin}/src/components/DiscussionThreadItemFooter/styles.d.ts +0 -0
  26. package/{build/admin → admin}/src/components/DiscussionThreadItemFooter/styles.js +0 -0
  27. package/{build/admin → admin}/src/components/DiscussionThreadItemReviewAction/index.d.ts +0 -0
  28. package/{build/admin → admin}/src/components/DiscussionThreadItemReviewAction/index.js +0 -0
  29. package/{build/admin → admin}/src/components/FormSwitch/index.d.ts +0 -0
  30. package/{build/admin → admin}/src/components/FormSwitch/index.js +0 -0
  31. package/{build/admin → admin}/src/components/FormSwitch/styles.d.ts +0 -0
  32. package/{build/admin → admin}/src/components/FormSwitch/styles.js +0 -0
  33. package/{build/admin → admin}/src/components/IconButton/styles.d.ts +0 -0
  34. package/{build/admin → admin}/src/components/IconButton/styles.js +0 -0
  35. package/{build/admin → admin}/src/components/Initializer/index.d.ts +0 -0
  36. package/{build/admin → admin}/src/components/Initializer/index.js +0 -0
  37. package/{build/admin → admin}/src/components/LoadingIndicatorOverlay/index.d.ts +0 -0
  38. package/{build/admin → admin}/src/components/LoadingIndicatorOverlay/index.js +0 -0
  39. package/{build/admin → admin}/src/components/LoadingIndicatorOverlay/styles.d.ts +0 -0
  40. package/{build/admin → admin}/src/components/LoadingIndicatorOverlay/styles.js +0 -0
  41. package/{build/admin → admin}/src/components/Nav/index.d.ts +0 -0
  42. package/{build/admin → admin}/src/components/Nav/index.js +0 -0
  43. package/{build/admin → admin}/src/components/PluginIcon/index.d.ts +0 -0
  44. package/{build/admin → admin}/src/components/PluginIcon/index.js +0 -0
  45. package/{build/admin → admin}/src/components/ReportsReviewModal/index.d.ts +0 -0
  46. package/{build/admin → admin}/src/components/ReportsReviewModal/index.js +0 -0
  47. package/{build/admin → admin}/src/components/ReportsReviewTable/index.d.ts +0 -0
  48. package/{build/admin → admin}/src/components/ReportsReviewTable/index.js +0 -0
  49. package/{build/admin → admin}/src/components/StatusBadge/index.d.ts +0 -0
  50. package/{build/admin → admin}/src/components/StatusBadge/index.js +0 -0
  51. package/{build/admin → admin}/src/components/StatusBadge/styles.d.ts +0 -0
  52. package/{build/admin → admin}/src/components/StatusBadge/styles.js +0 -0
  53. package/{build/admin → admin}/src/components/TableFilters/index.d.ts +0 -0
  54. package/{build/admin → admin}/src/components/TableFilters/index.js +0 -0
  55. package/{build/admin → admin}/src/components/TablePagination/index.d.ts +0 -0
  56. package/{build/admin → admin}/src/components/TablePagination/index.js +0 -0
  57. package/{build/admin → admin}/src/components/icons/comments.d.ts +0 -0
  58. package/{build/admin → admin}/src/components/icons/comments.js +0 -0
  59. package/{build/admin → admin}/src/components/icons/index.d.ts +0 -0
  60. package/{build/admin → admin}/src/components/icons/index.js +0 -0
  61. package/{build/admin → admin}/src/components/icons/lock.d.ts +0 -0
  62. package/{build/admin → admin}/src/components/icons/lock.js +0 -0
  63. package/{build/admin → admin}/src/components/icons/review.d.ts +0 -0
  64. package/{build/admin → admin}/src/components/icons/review.js +0 -0
  65. package/{build/admin → admin}/src/components/icons/unlock.d.ts +0 -0
  66. package/{build/admin → admin}/src/components/icons/unlock.js +0 -0
  67. package/{build/admin → admin}/src/hooks/useConfig.d.ts +0 -0
  68. package/{build/admin → admin}/src/hooks/useConfig.js +0 -0
  69. package/{build/admin → admin}/src/index.d.ts +0 -0
  70. package/{build/admin → admin}/src/index.js +0 -0
  71. package/{build/admin → admin}/src/pages/App/index.d.ts +0 -0
  72. package/{build/admin → admin}/src/pages/App/index.js +0 -0
  73. package/{build/admin → admin}/src/pages/App/reducer/actions.d.ts +0 -0
  74. package/{build/admin → admin}/src/pages/App/reducer/actions.js +0 -0
  75. package/{build/admin → admin}/src/pages/App/reducer/constants.d.ts +0 -0
  76. package/{build/admin → admin}/src/pages/App/reducer/constants.js +0 -0
  77. package/{build/admin → admin}/src/pages/App/reducer/index.d.ts +0 -0
  78. package/{build/admin → admin}/src/pages/App/reducer/index.js +0 -0
  79. package/{build/admin → admin}/src/pages/App/reducer/init.d.ts +0 -0
  80. package/{build/admin → admin}/src/pages/App/reducer/init.js +0 -0
  81. package/{build/admin → admin}/src/pages/App/reducer/selectors.d.ts +0 -0
  82. package/{build/admin → admin}/src/pages/App/reducer/selectors.js +0 -0
  83. package/{build/admin → admin}/src/pages/App/utils/api.d.ts +0 -0
  84. package/{build/admin → admin}/src/pages/App/utils/api.js +0 -0
  85. package/{build/admin → admin}/src/pages/ComingSoonPage/index.d.ts +0 -0
  86. package/{build/admin → admin}/src/pages/ComingSoonPage/index.js +0 -0
  87. package/{build/admin → admin}/src/pages/Details/components/DetailsEntity/index.d.ts +0 -0
  88. package/{build/admin → admin}/src/pages/Details/components/DetailsEntity/index.js +0 -0
  89. package/{build/admin → admin}/src/pages/Details/components/DetailsFilters/index.d.ts +0 -0
  90. package/{build/admin → admin}/src/pages/Details/components/DetailsFilters/index.js +0 -0
  91. package/{build/admin → admin}/src/pages/Details/components/DetailsFilters/styles.d.ts +0 -0
  92. package/{build/admin → admin}/src/pages/Details/components/DetailsFilters/styles.js +0 -0
  93. package/{build/admin → admin}/src/pages/Details/index.d.ts +0 -0
  94. package/{build/admin → admin}/src/pages/Details/index.js +0 -0
  95. package/{build/admin → admin}/src/pages/Discover/components/DiscoverTableRow/index.d.ts +0 -0
  96. package/{build/admin → admin}/src/pages/Discover/components/DiscoverTableRow/index.js +0 -0
  97. package/{build/admin → admin}/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +0 -0
  98. package/{build/admin → admin}/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -0
  99. package/{build/admin → admin}/src/pages/Discover/index.d.ts +0 -0
  100. package/{build/admin → admin}/src/pages/Discover/index.js +0 -0
  101. package/{build/admin → admin}/src/pages/Discover/utils/api.d.ts +0 -0
  102. package/{build/admin → admin}/src/pages/Discover/utils/api.js +0 -0
  103. package/{build/admin → admin}/src/pages/Discover/utils/filtersSchema.d.ts +0 -0
  104. package/{build/admin → admin}/src/pages/Discover/utils/filtersSchema.js +0 -0
  105. package/{build/admin → admin}/src/pages/Settings/components/RestartAlert/styles.d.ts +0 -0
  106. package/{build/admin → admin}/src/pages/Settings/components/RestartAlert/styles.js +0 -0
  107. package/{build/admin → admin}/src/pages/Settings/index.d.ts +0 -0
  108. package/{build/admin → admin}/src/pages/Settings/index.js +0 -0
  109. package/{build/admin → admin}/src/pages/Settings/utils/api.d.ts +0 -0
  110. package/{build/admin → admin}/src/pages/Settings/utils/api.js +0 -0
  111. package/{build/admin → admin}/src/pages/utils/api.d.ts +0 -0
  112. package/{build/admin → admin}/src/pages/utils/api.js +0 -0
  113. package/{build/admin → admin}/src/permissions.d.ts +0 -0
  114. package/{build/admin → admin}/src/permissions.js +0 -0
  115. package/{build/admin → admin}/src/pluginId.d.ts +0 -0
  116. package/{build/admin → admin}/src/pluginId.js +0 -0
  117. package/{build/admin → admin}/src/reducers.d.ts +0 -0
  118. package/{build/admin → admin}/src/reducers.js +0 -0
  119. package/{build/admin → admin}/src/utils/axiosInstance.d.ts +0 -0
  120. package/{build/admin → admin}/src/utils/axiosInstance.js +0 -0
  121. package/{build/admin → admin}/src/utils/constants.d.ts +0 -0
  122. package/{build/admin → admin}/src/utils/constants.js +0 -0
  123. package/{build/admin → admin}/src/utils/getApiUrl.d.ts +0 -0
  124. package/{build/admin → admin}/src/utils/getApiUrl.js +0 -0
  125. package/{build/admin → admin}/src/utils/getMessage.d.ts +0 -0
  126. package/{build/admin → admin}/src/utils/getMessage.js +0 -0
  127. package/{build/admin → admin}/src/utils/getRelatedGroups.d.ts +0 -0
  128. package/{build/admin → admin}/src/utils/getRelatedGroups.js +0 -0
  129. package/{build/admin → admin}/src/utils/getUrl.d.ts +0 -0
  130. package/{build/admin → admin}/src/utils/getUrl.js +0 -0
  131. package/{build/admin → admin}/src/utils/handleAPIError.d.ts +0 -0
  132. package/{build/admin → admin}/src/utils/handleAPIError.js +0 -0
  133. package/{build/admin → admin}/src/utils/index.d.ts +0 -0
  134. package/{build/admin → admin}/src/utils/index.js +0 -0
  135. package/{build/admin → admin}/src/utils/parseRegExp.d.ts +0 -0
  136. package/{build/admin → admin}/src/utils/parseRegExp.js +0 -0
  137. package/{build/admin → admin}/src/utils/renderEntryTitle.d.ts +0 -0
  138. package/{build/admin → admin}/src/utils/renderEntryTitle.js +0 -0
  139. package/{build/admin → admin}/src/utils/renderInitials.d.ts +0 -0
  140. package/{build/admin → admin}/src/utils/renderInitials.js +0 -0
  141. package/{build/admin → admin}/src/utils/resolveCommentStatus.d.ts +0 -0
  142. package/{build/admin → admin}/src/utils/resolveCommentStatus.js +0 -0
  143. package/{build/admin → admin}/src/utils/resolveCommentStatusColor.d.ts +0 -0
  144. package/{build/admin → admin}/src/utils/resolveCommentStatusColor.js +0 -0
  145. package/{build/content-types → content-types}/comment.d.ts +0 -0
  146. package/{build/content-types → content-types}/comment.js +0 -0
  147. package/{build/content-types → content-types}/index.d.ts +0 -0
  148. package/{build/content-types → content-types}/index.js +0 -0
  149. package/{build/content-types → content-types}/report.d.ts +0 -0
  150. package/{build/content-types → content-types}/report.js +0 -0
  151. package/package.json +4 -33
  152. package/{build/permissions.d.ts → permissions.d.ts} +0 -0
  153. package/{build/permissions.js → permissions.js} +0 -0
  154. package/{build/server → server}/bootstrap.d.ts +0 -0
  155. package/{build/server → server}/bootstrap.js +0 -0
  156. package/{build/server → server}/config/index.d.ts +0 -0
  157. package/{build/server → server}/config/index.js +0 -0
  158. package/{build/server → server}/controllers/admin.d.ts +0 -0
  159. package/{build/server → server}/controllers/admin.js +0 -0
  160. package/{build/server → server}/controllers/client.d.ts +0 -0
  161. package/{build/server → server}/controllers/client.js +0 -0
  162. package/{build/server → server}/controllers/index.d.ts +0 -0
  163. package/{build/server → server}/controllers/index.js +0 -0
  164. package/{build/server → server}/controllers/utils/functions.d.ts +0 -0
  165. package/{build/server → server}/controllers/utils/functions.js +0 -0
  166. package/{build/server → server}/controllers/utils/parsers.d.ts +0 -0
  167. package/{build/server → server}/controllers/utils/parsers.js +0 -0
  168. package/{build/server → server}/destroy.d.ts +0 -0
  169. package/{build/server → server}/destroy.js +0 -0
  170. package/{build/server → server}/graphql/index.d.ts +0 -0
  171. package/{build/server → server}/graphql/index.js +0 -0
  172. package/{build/server → server}/graphql/mutations/createAbuseReport.d.ts +0 -0
  173. package/{build/server → server}/graphql/mutations/createAbuseReport.js +0 -0
  174. package/{build/server → server}/graphql/mutations/createComment.d.ts +0 -0
  175. package/{build/server → server}/graphql/mutations/createComment.js +0 -0
  176. package/{build/server → server}/graphql/mutations/index.d.ts +0 -0
  177. package/{build/server → server}/graphql/mutations/index.js +0 -0
  178. package/{build/server → server}/graphql/mutations/removeComment.d.ts +0 -0
  179. package/{build/server → server}/graphql/mutations/removeComment.js +0 -0
  180. package/{build/server → server}/graphql/mutations/updateComment.d.ts +0 -0
  181. package/{build/server → server}/graphql/mutations/updateComment.js +0 -0
  182. package/{build/server → server}/graphql/queries/findAllFlat.d.ts +0 -0
  183. package/{build/server → server}/graphql/queries/findAllFlat.js +0 -0
  184. package/{build/server → server}/graphql/queries/findAllInHierarchy.d.ts +0 -0
  185. package/{build/server → server}/graphql/queries/findAllInHierarchy.js +0 -0
  186. package/{build/server → server}/graphql/queries/index.d.ts +0 -0
  187. package/{build/server → server}/graphql/queries/index.js +0 -0
  188. package/{build/server → server}/graphql/resolvers-config.d.ts +0 -0
  189. package/{build/server → server}/graphql/resolvers-config.js +0 -0
  190. package/{build/server → server}/graphql/types/comment-author.d.ts +0 -0
  191. package/{build/server → server}/graphql/types/comment-author.js +0 -0
  192. package/{build/server → server}/graphql/types/comment-nested.d.ts +0 -0
  193. package/{build/server → server}/graphql/types/comment-nested.js +0 -0
  194. package/{build/server → server}/graphql/types/comment.d.ts +0 -0
  195. package/{build/server → server}/graphql/types/comment.js +0 -0
  196. package/{build/server → server}/graphql/types/create-comment-author.d.ts +0 -0
  197. package/{build/server → server}/graphql/types/create-comment-author.js +0 -0
  198. package/{build/server → server}/graphql/types/create-comment.d.ts +0 -0
  199. package/{build/server → server}/graphql/types/create-comment.js +0 -0
  200. package/{build/server → server}/graphql/types/create-report.d.ts +0 -0
  201. package/{build/server → server}/graphql/types/create-report.js +0 -0
  202. package/{build/server → server}/graphql/types/id.d.ts +0 -0
  203. package/{build/server → server}/graphql/types/id.js +0 -0
  204. package/{build/server → server}/graphql/types/identify-comment-author.d.ts +0 -0
  205. package/{build/server → server}/graphql/types/identify-comment-author.js +0 -0
  206. package/{build/server → server}/graphql/types/index.d.ts +0 -0
  207. package/{build/server → server}/graphql/types/index.js +0 -0
  208. package/{build/server → server}/graphql/types/remove-comment.d.ts +0 -0
  209. package/{build/server → server}/graphql/types/remove-comment.js +0 -0
  210. package/{build/server → server}/graphql/types/report-reason.d.ts +0 -0
  211. package/{build/server → server}/graphql/types/report-reason.js +0 -0
  212. package/{build/server → server}/graphql/types/report.d.ts +0 -0
  213. package/{build/server → server}/graphql/types/report.js +0 -0
  214. package/{build/server → server}/graphql/types/response-find-all.d.ts +0 -0
  215. package/{build/server → server}/graphql/types/response-find-all.js +0 -0
  216. package/{build/server → server}/graphql/types/response-meta.d.ts +0 -0
  217. package/{build/server → server}/graphql/types/response-meta.js +0 -0
  218. package/{build/server → server}/graphql/types/response-pagination.d.ts +0 -0
  219. package/{build/server → server}/graphql/types/response-pagination.js +0 -0
  220. package/{build/server → server}/graphql/types/update-comment.d.ts +0 -0
  221. package/{build/server → server}/graphql/types/update-comment.js +0 -0
  222. package/{build/server → server}/index.d.ts +0 -0
  223. package/{build/server → server}/index.js +0 -0
  224. package/{build/server → server}/register.d.ts +0 -0
  225. package/{build/server → server}/register.js +0 -0
  226. package/{build/server → server}/routes/admin.d.ts +0 -0
  227. package/{build/server → server}/routes/admin.js +0 -0
  228. package/{build/server → server}/routes/client.d.ts +0 -0
  229. package/{build/server → server}/routes/client.js +0 -0
  230. package/{build/server → server}/routes/index.d.ts +0 -0
  231. package/{build/server → server}/routes/index.js +0 -0
  232. package/{build/server → server}/services/admin.d.ts +0 -0
  233. package/{build/server → server}/services/admin.js +0 -0
  234. package/{build/server → server}/services/client.d.ts +0 -0
  235. package/{build/server → server}/services/client.js +0 -0
  236. package/{build/server → server}/services/common.d.ts +0 -0
  237. package/{build/server → server}/services/common.js +0 -1
  238. package/{build/server → server}/services/graphql.d.ts +0 -0
  239. package/{build/server → server}/services/graphql.js +0 -0
  240. package/{build/server → server}/services/index.d.ts +0 -0
  241. package/{build/server → server}/services/index.js +0 -0
  242. package/{build/server → server}/services/utils/functions.d.ts +0 -0
  243. package/{build/server → server}/services/utils/functions.js +0 -0
  244. package/{build/server → server}/utils/constants.d.ts +0 -0
  245. package/{build/server → server}/utils/constants.js +0 -0
  246. package/{build/server → server}/utils/error.d.ts +0 -0
  247. package/{build/server → server}/utils/error.js +0 -0
  248. package/{build/server → server}/utils/functions.d.ts +0 -0
  249. package/{build/server → server}/utils/functions.js +0 -0
  250. package/{build/strapi-admin.d.ts → strapi-admin.d.ts} +0 -0
  251. package/{build/strapi-admin.js → strapi-admin.js} +0 -0
  252. package/{build/strapi-server.d.ts → strapi-server.d.ts} +0 -0
  253. package/{build/strapi-server.js → strapi-server.js} +0 -0
  254. package/tsconfig.tsbuildinfo +1 -0
  255. package/{build/types → types}/contentTypes.d.ts +0 -0
  256. package/{build/types → types}/contentTypes.js +0 -0
  257. package/.husky/pre-commit +0 -4
  258. package/LICENSE.md +0 -7
  259. package/admin/src/components/ActionButton/styles.ts +0 -11
  260. package/admin/src/components/Avatar/index.tsx +0 -31
  261. package/admin/src/components/ConfirmationDialog/index.tsx +0 -88
  262. package/admin/src/components/DiscussionStatus/index.tsx +0 -36
  263. package/admin/src/components/DiscussionThread/index.tsx +0 -97
  264. package/admin/src/components/DiscussionThreadItem/index.tsx +0 -71
  265. package/admin/src/components/DiscussionThreadItem/styles.ts +0 -15
  266. package/admin/src/components/DiscussionThreadItemActions/index.tsx +0 -365
  267. package/admin/src/components/DiscussionThreadItemActions/styles.ts +0 -9
  268. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +0 -99
  269. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +0 -8
  270. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +0 -62
  271. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +0 -15
  272. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +0 -180
  273. package/admin/src/components/FormSwitch/index.tsx +0 -35
  274. package/admin/src/components/FormSwitch/styles.ts +0 -10
  275. package/admin/src/components/IconButton/styles.ts +0 -19
  276. package/admin/src/components/Initializer/index.tsx +0 -28
  277. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +0 -19
  278. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +0 -21
  279. package/admin/src/components/Nav/index.tsx +0 -61
  280. package/admin/src/components/PluginIcon/index.tsx +0 -14
  281. package/admin/src/components/ReportsReviewModal/index.tsx +0 -71
  282. package/admin/src/components/ReportsReviewTable/index.tsx +0 -233
  283. package/admin/src/components/StatusBadge/index.tsx +0 -21
  284. package/admin/src/components/StatusBadge/styles.ts +0 -19
  285. package/admin/src/components/TableFilters/index.tsx +0 -58
  286. package/admin/src/components/TablePagination/index.tsx +0 -37
  287. package/admin/src/components/icons/comments.tsx +0 -15
  288. package/admin/src/components/icons/index.ts +0 -6
  289. package/admin/src/components/icons/lock.tsx +0 -27
  290. package/admin/src/components/icons/review.tsx +0 -25
  291. package/admin/src/components/icons/unlock.tsx +0 -25
  292. package/admin/src/hooks/useConfig.ts +0 -58
  293. package/admin/src/index.ts +0 -98
  294. package/admin/src/pages/App/index.tsx +0 -67
  295. package/admin/src/pages/App/reducer/actions.ts +0 -10
  296. package/admin/src/pages/App/reducer/constants.ts +0 -4
  297. package/admin/src/pages/App/reducer/index.ts +0 -28
  298. package/admin/src/pages/App/reducer/init.ts +0 -9
  299. package/admin/src/pages/App/reducer/selectors.ts +0 -32
  300. package/admin/src/pages/App/utils/api.ts +0 -14
  301. package/admin/src/pages/ComingSoonPage/index.tsx +0 -31
  302. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +0 -106
  303. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +0 -43
  304. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +0 -9
  305. package/admin/src/pages/Details/index.tsx +0 -169
  306. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +0 -252
  307. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +0 -9
  308. package/admin/src/pages/Discover/index.tsx +0 -230
  309. package/admin/src/pages/Discover/utils/api.ts +0 -22
  310. package/admin/src/pages/Discover/utils/filtersSchema.ts +0 -9
  311. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +0 -10
  312. package/admin/src/pages/Settings/index.tsx +0 -602
  313. package/admin/src/pages/Settings/utils/api.ts +0 -71
  314. package/admin/src/pages/utils/api.ts +0 -70
  315. package/admin/src/permissions.ts +0 -30
  316. package/admin/src/pluginId.ts +0 -3
  317. package/admin/src/reducers.ts +0 -8
  318. package/admin/src/utils/axiosInstance.ts +0 -38
  319. package/admin/src/utils/constants.ts +0 -25
  320. package/admin/src/utils/getApiUrl.ts +0 -5
  321. package/admin/src/utils/getMessage.ts +0 -29
  322. package/admin/src/utils/getRelatedGroups.ts +0 -6
  323. package/admin/src/utils/getUrl.ts +0 -5
  324. package/admin/src/utils/handleAPIError.ts +0 -21
  325. package/admin/src/utils/index.ts +0 -11
  326. package/admin/src/utils/parseRegExp.ts +0 -9
  327. package/admin/src/utils/renderEntryTitle.ts +0 -16
  328. package/admin/src/utils/renderInitials.ts +0 -10
  329. package/admin/src/utils/resolveCommentStatus.ts +0 -37
  330. package/admin/src/utils/resolveCommentStatusColor.ts +0 -22
  331. package/build/README.md +0 -854
  332. package/build/admin/src/translations/en.json +0 -132
  333. package/build/admin/src/translations/fr.json +0 -132
  334. package/build/admin/src/translations/pt-BR.json +0 -132
  335. package/build/package.json +0 -94
  336. package/build/tsconfig.tsbuildinfo +0 -1
  337. package/content-types/comment.ts +0 -93
  338. package/content-types/index.ts +0 -11
  339. package/content-types/report.ts +0 -50
  340. package/jest.config.ts +0 -22
  341. package/permissions.ts +0 -17
  342. package/server/bootstrap.ts +0 -66
  343. package/server/config/index.ts +0 -19
  344. package/server/controllers/admin.ts +0 -194
  345. package/server/controllers/client.ts +0 -220
  346. package/server/controllers/index.ts +0 -13
  347. package/server/controllers/utils/functions.ts +0 -27
  348. package/server/controllers/utils/parsers.ts +0 -59
  349. package/server/destroy.ts +0 -3
  350. package/server/graphql/index.ts +0 -27
  351. package/server/graphql/mutations/createAbuseReport.ts +0 -38
  352. package/server/graphql/mutations/createComment.ts +0 -41
  353. package/server/graphql/mutations/index.ts +0 -26
  354. package/server/graphql/mutations/removeComment.ts +0 -41
  355. package/server/graphql/mutations/updateComment.ts +0 -40
  356. package/server/graphql/queries/findAllFlat.ts +0 -58
  357. package/server/graphql/queries/findAllInHierarchy.ts +0 -47
  358. package/server/graphql/queries/index.ts +0 -22
  359. package/server/graphql/resolvers-config.ts +0 -13
  360. package/server/graphql/types/comment-author.ts +0 -12
  361. package/server/graphql/types/comment-nested.ts +0 -19
  362. package/server/graphql/types/comment.ts +0 -18
  363. package/server/graphql/types/create-comment-author.ts +0 -12
  364. package/server/graphql/types/create-comment.ts +0 -12
  365. package/server/graphql/types/create-report.ts +0 -12
  366. package/server/graphql/types/id.ts +0 -28
  367. package/server/graphql/types/identify-comment-author.ts +0 -9
  368. package/server/graphql/types/index.ts +0 -38
  369. package/server/graphql/types/remove-comment.ts +0 -11
  370. package/server/graphql/types/report-reason.ts +0 -12
  371. package/server/graphql/types/report.ts +0 -14
  372. package/server/graphql/types/response-find-all.ts +0 -10
  373. package/server/graphql/types/response-meta.ts +0 -9
  374. package/server/graphql/types/response-pagination.ts +0 -14
  375. package/server/graphql/types/update-comment.ts +0 -12
  376. package/server/index.ts +0 -20
  377. package/server/register.ts +0 -3
  378. package/server/routes/admin.ts +0 -118
  379. package/server/routes/client.ts +0 -95
  380. package/server/routes/index.ts +0 -25
  381. package/server/services/admin.ts +0 -406
  382. package/server/services/client.ts +0 -394
  383. package/server/services/common.ts +0 -503
  384. package/server/services/graphql.ts +0 -219
  385. package/server/services/index.ts +0 -13
  386. package/server/services/utils/functions.ts +0 -150
  387. package/server/utils/constants.ts +0 -23
  388. package/server/utils/error.ts +0 -44
  389. package/server/utils/functions.ts +0 -55
  390. package/strapi-admin.ts +0 -5
  391. package/strapi-server.ts +0 -77
  392. package/tsconfig.json +0 -38
  393. package/types/common.d.ts +0 -1
  394. package/types/config.d.ts +0 -35
  395. package/types/constants.d.ts +0 -3
  396. package/types/contentTypes.ts +0 -56
  397. package/types/controllers.d.ts +0 -125
  398. package/types/graphql.d.ts +0 -24
  399. package/types/index.d.ts +0 -7
  400. package/types/services.d.ts +0 -166
@@ -1,503 +0,0 @@
1
- import BadWordsFilter from "bad-words";
2
- import {
3
- isArray,
4
- isNumber,
5
- isObject,
6
- isNil,
7
- isString,
8
- isEmpty,
9
- first,
10
- parseInt,
11
- set,
12
- get,
13
- uniq,
14
- } from "lodash";
15
- import {
16
- Id,
17
- StrapiContext,
18
- StrapiStore,
19
- StrapiPagination,
20
- StrapiResponseMeta,
21
- StrapiPaginatedResponse,
22
- StrapiDBQueryArgs,
23
- PopulateClause,
24
- StrapiUser,
25
- OnlyStrings,
26
- StringMap,
27
- } from "strapi-typed";
28
- import {
29
- CommentsPluginConfig,
30
- FindAllFlatProps,
31
- FindAllInHierarhyProps,
32
- IServiceCommon,
33
- ToBeFixed,
34
- Comment,
35
- RelatedEntity,
36
- CommentModelKeys,
37
- SettingsCommentsPluginConfig,
38
- } from "../../types";
39
- import { REGEX, CONFIG_PARAMS } from "../utils/constants";
40
- import PluginError from "./../utils/error";
41
- import {
42
- getModelUid,
43
- getRelatedGroups,
44
- buildNestedStructure,
45
- filterOurResolvedReports,
46
- buildAuthorModel,
47
- buildConfigQueryProp,
48
- } from "./utils/functions";
49
-
50
- /**
51
- * Comments Plugin - common services
52
- */
53
-
54
- const PAGE_SIZE = 10;
55
-
56
- export = ({ strapi }: StrapiContext): IServiceCommon => ({
57
- async getConfig<T>(
58
- this: IServiceCommon,
59
- prop?: string,
60
- defaultValue?: any,
61
- useLocal: boolean = false
62
- ): Promise<T> {
63
- const queryProp: string = buildConfigQueryProp(prop);
64
- const pluginStore: StrapiStore = await this.getPluginStore();
65
- const config: CommentsPluginConfig = await pluginStore.get({
66
- key: "config",
67
- });
68
-
69
- let result: T;
70
- if (config && !useLocal) {
71
- result = queryProp ? get(config, queryProp, defaultValue) : config;
72
- } else {
73
- result = this.getLocalConfig(queryProp, defaultValue);
74
- }
75
- return isNil(result) ? defaultValue : result;
76
- },
77
-
78
- async getPluginStore(): Promise<StrapiStore> {
79
- return strapi.store({ type: "plugin", name: "comments" });
80
- },
81
-
82
- getLocalConfig<T>(prop?: string, defaultValue?: any): T {
83
- const queryProp: string = buildConfigQueryProp(prop);
84
- const result: T = strapi.config.get(
85
- `plugin.comments${queryProp ? "." + queryProp : ""}`
86
- );
87
- return isNil(result) ? defaultValue : result;
88
- },
89
-
90
- // Find comments in the flat structure
91
- async findAllFlat(
92
- this: IServiceCommon,
93
- {
94
- query = {},
95
- populate = {},
96
- sort,
97
- pagination,
98
- fields,
99
- }: FindAllFlatProps<Comment>,
100
- relatedEntity: RelatedEntity | null = null
101
- ): Promise<StrapiPaginatedResponse<Comment>> {
102
- const defaultSelect: Array<CommentModelKeys> = ["id", "related"];
103
-
104
- const populateClause: PopulateClause<CommentModelKeys> = {
105
- authorUser: true,
106
- ...(isObject(populate) ? populate : {}),
107
- };
108
-
109
- let queryExtension: StrapiDBQueryArgs<CommentModelKeys> = {};
110
-
111
- if (sort && (isString(sort) || isArray(sort))) {
112
- queryExtension = {
113
- ...queryExtension,
114
- orderBy: (isString(sort) ? [sort] : sort)
115
- .map((_) => (REGEX.sorting.test(_) ? _ : `${_}:asc`))
116
- .reduce((prev, curr) => {
117
- const [type = "asc", ...parts] = curr.split(":").reverse();
118
- return { ...set(prev, parts.reverse().join("."), type) };
119
- }, {}),
120
- };
121
- }
122
-
123
- if (!isNil(fields)) {
124
- queryExtension = {
125
- ...queryExtension,
126
- select: isArray(fields) ? uniq([...fields, ...defaultSelect]) : fields,
127
- };
128
- }
129
-
130
- let meta: StrapiResponseMeta = {} as StrapiResponseMeta;
131
- if (pagination && isObject(pagination)) {
132
- const parsedpagination: StrapiPagination = Object.keys(pagination).reduce(
133
- (prev: StrapiPagination, curr: string) => ({
134
- ...prev,
135
- [curr]: parseInt(get(pagination, curr)),
136
- }),
137
- {}
138
- );
139
- const {
140
- page = 1,
141
- pageSize = PAGE_SIZE,
142
- start = 0,
143
- limit = PAGE_SIZE,
144
- } = parsedpagination;
145
- const paginationByPage =
146
- !isNil(parsedpagination?.page) || !isNil(parsedpagination?.pageSize);
147
-
148
- queryExtension = {
149
- ...queryExtension,
150
- offset: paginationByPage ? (page - 1) * pageSize : start,
151
- limit: paginationByPage ? pageSize : limit,
152
- };
153
-
154
- const metapagination = paginationByPage
155
- ? {
156
- pagination: {
157
- page,
158
- pageSize,
159
- },
160
- }
161
- : {
162
- pagination: {
163
- start,
164
- limit,
165
- },
166
- };
167
-
168
- meta = {
169
- ...metapagination,
170
- };
171
- }
172
-
173
- const entries = await strapi.db
174
- .query<Comment>(getModelUid("comment"))
175
- .findMany({
176
- where: {
177
- ...query,
178
- },
179
- populate: {
180
- ...populateClause,
181
- },
182
- ...queryExtension,
183
- });
184
-
185
- if (
186
- pagination?.withCount &&
187
- (pagination.withCount === "true" || pagination.withCount === true)
188
- ) {
189
- const total = await strapi.db
190
- .query<Comment>(getModelUid("comment"))
191
- .count({
192
- where: {
193
- ...query,
194
- },
195
- });
196
- const pageSize = meta.pagination.pageSize || PAGE_SIZE;
197
- const pageCount = Math.floor(total / pageSize);
198
- meta = {
199
- ...meta,
200
- pagination: {
201
- ...meta.pagination,
202
- pageCount: !isNil(meta.pagination.page)
203
- ? total % pageSize === 0
204
- ? pageCount
205
- : pageCount + 1
206
- : undefined,
207
- total,
208
- },
209
- };
210
- }
211
-
212
- const entriesWithThreads = await Promise.all<{
213
- id: Id;
214
- itemsInTread: number;
215
- firstThreadItemId: Id | undefined;
216
- }>(
217
- entries.map(async (_: Comment) => {
218
- const [nestedEntries, count] = await strapi.db
219
- .query<Comment>(getModelUid("comment"))
220
- .findWithCount({
221
- where: {
222
- threadOf: _.id,
223
- },
224
- });
225
- return {
226
- id: _.id,
227
- itemsInTread: count,
228
- firstThreadItemId: first<Comment | undefined>(nestedEntries)?.id,
229
- };
230
- })
231
- );
232
-
233
- const relatedEntities =
234
- relatedEntity !== null
235
- ? [relatedEntity]
236
- : await this.findRelatedEntitiesFor([...entries]);
237
- const hasRelatedEntitiesToMap =
238
- relatedEntities.filter((_: RelatedEntity) => _).length > 0;
239
-
240
- const result = entries.map((_: Comment) => {
241
- const threadedItem = entriesWithThreads.find(
242
- (item: {
243
- id: Id;
244
- itemsInTread: number;
245
- firstThreadItemId: Id | undefined;
246
- }) => item.id === _.id
247
- );
248
- const parsedThreadOf = isString(query.threadOf)
249
- ? parseInt(query.threadOf)
250
- : query.threadOf;
251
-
252
- let authorUserPopulate = {};
253
- if (isObject(populateClause?.authorUser)) {
254
- authorUserPopulate = 'populate' in populateClause.authorUser ?
255
- populateClause.authorUser.populate as StringMap<unknown> :
256
- populateClause.authorUser;
257
- }
258
-
259
- return this.sanitizeCommentEntity(
260
- {
261
- ..._,
262
- threadOf: parsedThreadOf || _.threadOf || null,
263
- gotThread: (threadedItem?.itemsInTread || 0) > 0,
264
- threadFirstItemId: threadedItem?.firstThreadItemId,
265
- },
266
- authorUserPopulate
267
- );
268
- });
269
-
270
- return {
271
- data: hasRelatedEntitiesToMap
272
- ? result.map((_: Comment) =>
273
- this.mergeRelatedEntityTo(_, relatedEntities)
274
- )
275
- : result,
276
- ...(isEmpty(meta) ? {} : { meta }),
277
- };
278
- },
279
-
280
- // Find comments and create relations tree structure
281
- async findAllInHierarchy(
282
- this: IServiceCommon,
283
- {
284
- query,
285
- populate = {},
286
- sort,
287
- fields,
288
- startingFromId = null,
289
- dropBlockedThreads = false,
290
- }: FindAllInHierarhyProps,
291
- relatedEntity?: RelatedEntity | null | boolean
292
- ): Promise<Array<Comment>> {
293
- const entities = await this.findAllFlat(
294
- { query, populate, sort, fields },
295
- relatedEntity
296
- );
297
- return buildNestedStructure(
298
- entities?.data,
299
- startingFromId,
300
- "threadOf",
301
- dropBlockedThreads,
302
- false
303
- );
304
- },
305
-
306
- // Find single comment
307
- async findOne(criteria): Promise<Comment> {
308
- const entity = await strapi.db
309
- .query<Comment>(getModelUid("comment"))
310
- .findOne({
311
- where: criteria,
312
- populate: {
313
- reports: true,
314
- authorUser: true,
315
- },
316
- });
317
- if (!entity) {
318
- throw new PluginError(
319
- 404,
320
- "Comment does not exist. Check your payload please."
321
- );
322
- }
323
- return filterOurResolvedReports(this.sanitizeCommentEntity(entity));
324
- },
325
-
326
- // Find all related entiries
327
-
328
- async findRelatedEntitiesFor(
329
- entities: Array<Comment> = []
330
- ): Promise<Array<RelatedEntity>> {
331
- const data = entities.reduce(
332
- (acc: { [key: string]: Array<string | number> }, curr: Comment) => {
333
- const [relatedUid, relatedStringId] = getRelatedGroups(curr.related);
334
- const parsedRelatedId = parseInt(relatedStringId);
335
- const relatedId = isNumber(parsedRelatedId)
336
- ? parsedRelatedId
337
- : relatedStringId;
338
- return {
339
- ...acc,
340
- [relatedUid]: [...(acc[relatedUid] || []), relatedId],
341
- };
342
- },
343
- {}
344
- );
345
-
346
- return Promise.all<Array<RelatedEntity>>(
347
- Object.entries(data).map(
348
- async ([relatedUid, relatedStringIds]): Promise<Array<RelatedEntity>> =>
349
- strapi.db
350
- .query<RelatedEntity>(relatedUid)
351
- .findMany({
352
- where: { id: Array.from(new Set(relatedStringIds as ToBeFixed)) },
353
- })
354
- .then((relatedEntities: Array<RelatedEntity>) =>
355
- relatedEntities.map((_: RelatedEntity) => ({
356
- ..._,
357
- uid: relatedUid,
358
- }))
359
- )
360
- )
361
- ).then((result) => result.flat(2));
362
- },
363
-
364
- // Merge related entity with comment
365
- mergeRelatedEntityTo(
366
- entity: Comment,
367
- relatedEntities: Array<RelatedEntity> = []
368
- ): Comment {
369
- return {
370
- ...entity,
371
- related: relatedEntities.find(
372
- (relatedEntity) =>
373
- entity.related === `${relatedEntity.uid}:${relatedEntity.id}`
374
- ),
375
- };
376
- },
377
-
378
- async modifiedNestedNestedComments(
379
- this: IServiceCommon,
380
- id: Id,
381
- fieldName: string,
382
- value: any
383
- ): Promise<boolean> {
384
- try {
385
- const entitiesToChange = await strapi.db
386
- .query<Comment>(getModelUid("comment"))
387
- .findMany({
388
- where: { threadOf: id },
389
- });
390
- const changedEntities = await strapi.db
391
- .query<Comment>(getModelUid("comment"))
392
- .updateMany({
393
- where: { id: entitiesToChange.map((_: Comment) => _.id) },
394
- data: { [fieldName]: value },
395
- });
396
- if (
397
- entitiesToChange.length === changedEntities.length &&
398
- changedEntities.length > 0
399
- ) {
400
- const nestedTransactions = await Promise.all(
401
- changedEntities.map((item: Comment) =>
402
- this.modifiedNestedNestedComments(item.id, fieldName, value)
403
- )
404
- );
405
- return nestedTransactions.length === changedEntities.length;
406
- }
407
- return true;
408
- } catch (e) {
409
- return false;
410
- }
411
- },
412
-
413
- sanitizeCommentEntity(
414
- entity: Comment,
415
- populate?: PopulateClause<OnlyStrings<keyof StrapiUser>>
416
- ): Comment {
417
- const fieldsToPopulate = isArray(populate)
418
- ? populate
419
- : Object.keys(populate || {});
420
-
421
- console.log(fieldsToPopulate);
422
-
423
- return {
424
- ...buildAuthorModel(
425
- {
426
- ...entity,
427
- threadOf: isObject(entity.threadOf)
428
- ? buildAuthorModel(entity.threadOf, fieldsToPopulate)
429
- : entity.threadOf,
430
- },
431
- fieldsToPopulate
432
- ),
433
- };
434
- },
435
-
436
- isValidUserContext(user?: any): boolean {
437
- return user ? !isNil(user?.id) : true;
438
- },
439
-
440
- async parseRelationString(
441
- this: IServiceCommon,
442
- relation
443
- ): Promise<[uid: string, relatedId: string | number]> {
444
- const [uid, relatedStringId] = getRelatedGroups(relation);
445
- const parsedRelatedId = parseInt(relatedStringId);
446
- const relatedId = isNumber(parsedRelatedId)
447
- ? parsedRelatedId
448
- : relatedStringId;
449
-
450
- const isEnabledCollection: boolean = await this.isEnabledCollection(uid);
451
- const enabledCollections: Array<string> = await this.getConfig<
452
- Array<string>
453
- >(CONFIG_PARAMS.ENABLED_COLLECTIONS, []);
454
-
455
- if (!isEnabledCollection) {
456
- throw new PluginError(
457
- 403,
458
- `Action not allowed for collection '${uid}'. Use one of: ${enabledCollections.join(
459
- ", "
460
- )}`
461
- );
462
- }
463
- return [uid, relatedId];
464
- },
465
-
466
- async checkBadWords(
467
- this: IServiceCommon,
468
- content: string
469
- ): Promise<boolean | string | PluginError> {
470
- const config: boolean = await this.getConfig<boolean>(
471
- CONFIG_PARAMS.BAD_WORDS,
472
- true
473
- );
474
- if (config) {
475
- const filter = new BadWordsFilter(
476
- isObject(config) ? (config as ToBeFixed) : undefined
477
- );
478
- if (content && filter.isProfane(content)) {
479
- throw new PluginError(
480
- 400,
481
- "Bad language used! Please polite your comment...",
482
- {
483
- content: {
484
- original: content,
485
- filtered: content && filter.clean(content),
486
- },
487
- }
488
- );
489
- }
490
- }
491
- return content;
492
- },
493
-
494
- async isEnabledCollection(
495
- this: IServiceCommon,
496
- uid: string
497
- ): Promise<boolean> {
498
- const enabledCollections = await this.getConfig<
499
- SettingsCommentsPluginConfig["enabledCollections"]
500
- >("enabledCollections", []);
501
- return enabledCollections.includes(uid);
502
- },
503
- });
@@ -1,219 +0,0 @@
1
- import { Primitive, StrapiContext } from "strapi-typed";
2
- import { IServiceGraphQL, ToBeFixed } from "../../types";
3
-
4
- import { has, propEq, isNil, isDate, isObject } from "lodash/fp";
5
- import { inputObjectType } from "nexus";
6
-
7
- const virtualScalarAttributes = ["id"];
8
-
9
- export = ({ strapi }: StrapiContext): IServiceGraphQL => {
10
- const { service: getService } = strapi.plugin("graphql");
11
-
12
- const rootLevelOperators = () => {
13
- const { operators } = strapi.plugin("graphql").service("builders").filters;
14
-
15
- return [operators.and, operators.or, operators.not];
16
- };
17
-
18
- const buildContentTypeFilters = (contentType: ToBeFixed) => {
19
- const utils = strapi.plugin("graphql").service("utils");
20
- const extension = strapi.plugin("graphql").service("extension");
21
-
22
- const { getFiltersInputTypeName, getScalarFilterInputTypeName } =
23
- utils.naming;
24
- const { isStrapiScalar, isRelation } = utils.attributes;
25
-
26
- const { attributes } = contentType;
27
-
28
- const filtersTypeName = getFiltersInputTypeName(contentType);
29
-
30
- return inputObjectType({
31
- name: filtersTypeName,
32
-
33
- definition(t) {
34
- const validAttributes = Object.entries(attributes).filter(
35
- ([attributeName]) =>
36
- extension
37
- .shadowCRUD(contentType.uid)
38
- .field(attributeName)
39
- .hasFiltersEnabeld()
40
- );
41
-
42
- const isIDFilterEnabled = extension
43
- .shadowCRUD(contentType.uid)
44
- .field("id")
45
- .hasFiltersEnabeld();
46
- // Add an ID filter to the collection types
47
- if (contentType.kind === "collectionType" && isIDFilterEnabled) {
48
- t.field("id", { type: getScalarFilterInputTypeName("ID") });
49
- }
50
-
51
- // Add every defined attribute
52
- for (const [attributeName, attribute] of validAttributes) {
53
- // Handle scalars
54
- if (isStrapiScalar(attribute)) {
55
- addScalarAttribute(t, attributeName, attribute);
56
- }
57
-
58
- // Handle relations
59
- else if (isRelation(attribute)) {
60
- addRelationalAttribute(t, attributeName, attribute);
61
- }
62
- }
63
-
64
- // Conditional clauses
65
- for (const operator of rootLevelOperators()) {
66
- operator.add(t, filtersTypeName);
67
- }
68
- },
69
- });
70
- };
71
-
72
- const addScalarAttribute = (
73
- builder: ToBeFixed,
74
- attributeName: string,
75
- attribute: ToBeFixed
76
- ): void => {
77
- const { naming, mappers } = strapi.plugin("graphql").service("utils");
78
-
79
- const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);
80
-
81
- builder.field(attributeName, {
82
- type: naming.getScalarFilterInputTypeName(gqlType),
83
- });
84
- };
85
-
86
- const addRelationalAttribute = (
87
- builder: ToBeFixed,
88
- attributeName: string,
89
- attribute: ToBeFixed
90
- ): void => {
91
- const utils = strapi.plugin("graphql").service("utils");
92
- const extension = strapi.plugin("graphql").service("extension");
93
- const { getFiltersInputTypeName } = utils.naming;
94
- const { isMorphRelation } = utils.attributes;
95
-
96
- const model = strapi.getModel<ToBeFixed>(attribute.target);
97
-
98
- // If there is no model corresponding to the attribute configuration
99
- // or if the attribute is a polymorphic relation, then ignore it
100
- if (!model || isMorphRelation(attribute)) return;
101
-
102
- // If the target model is disabled, then ignore it too
103
- if (extension.shadowCRUD(model.uid).isDisabled()) return;
104
-
105
- builder.field(attributeName, { type: getFiltersInputTypeName(model) });
106
- };
107
-
108
- const recursivelyReplaceScalarOperators = (data: ToBeFixed): ToBeFixed => {
109
- const { operators } = getService("builders").filters;
110
-
111
- if (Array.isArray(data)) {
112
- return data.map(recursivelyReplaceScalarOperators);
113
- }
114
-
115
- // Note: We need to make an exception for date since GraphQL
116
- // automatically cast date strings to date instances in args
117
- if (isDate(data) || !isObject(data)) {
118
- return data;
119
- }
120
-
121
- const result: ToBeFixed = {};
122
-
123
- for (const [key, value] of Object.entries(data)) {
124
- const isOperator = !!operators[key];
125
-
126
- const newKey: string = isOperator ? operators[key].strapiOperator : key;
127
-
128
- result[newKey] = recursivelyReplaceScalarOperators(value);
129
- }
130
-
131
- return result;
132
- };
133
-
134
- const graphQLFiltersToStrapiQuery = (
135
- filters: ToBeFixed,
136
- contentType: ToBeFixed = {}
137
- ): Array<ToBeFixed> | ToBeFixed => {
138
- const { isStrapiScalar, isMedia, isRelation } =
139
- getService("utils").attributes;
140
- const { operators } = getService("builders").filters;
141
-
142
- const ROOT_LEVEL_OPERATORS = [operators.and, operators.or, operators.not];
143
-
144
- // Handle unwanted scenario where there is no filters defined
145
- if (isNil(filters)) {
146
- return {};
147
- }
148
-
149
- // If filters is a collection, then apply the transformation to every item of the list
150
- if (Array.isArray(filters)) {
151
- return filters.map((filtersItem) =>
152
- graphQLFiltersToStrapiQuery(filtersItem, contentType)
153
- );
154
- }
155
-
156
- const resultMap: ToBeFixed = {};
157
- const { attributes } = contentType;
158
-
159
- const isAttribute = (attributeName: string): boolean => {
160
- return (
161
- virtualScalarAttributes.includes(attributeName) ||
162
- has(attributeName, attributes)
163
- );
164
- };
165
-
166
- for (const [key, value] of Object.entries(filters)) {
167
- // If the key is an attribute, update the value
168
- if (isAttribute(key)) {
169
- const attribute: Primitive | ToBeFixed = attributes[key];
170
-
171
- // If it's a scalar attribute
172
- if (
173
- virtualScalarAttributes.includes(key) ||
174
- isStrapiScalar(attribute)
175
- ) {
176
- // Replace (recursively) every GraphQL scalar operator with the associated Strapi operator
177
- resultMap[key] = recursivelyReplaceScalarOperators(value);
178
- }
179
-
180
- // If it's a deep filter on a relation
181
- else if (isRelation(attribute) || isMedia(attribute)) {
182
- // Fetch the model from the relation
183
- const relModel = strapi.getModel(attribute.target);
184
-
185
- // Recursively apply the mapping to the value using the fetched model,
186
- // and update the value within `resultMap`
187
- resultMap[key] = graphQLFiltersToStrapiQuery(value, relModel);
188
- }
189
- }
190
-
191
- // Handle the case where the key is not an attribute (operator, ...)
192
- else {
193
- const rootLevelOperator = ROOT_LEVEL_OPERATORS.find(
194
- propEq("fieldName", key)
195
- );
196
-
197
- // If it's a root level operator (AND, NOT, OR, ...)
198
- if (rootLevelOperator) {
199
- const { strapiOperator } = rootLevelOperator;
200
-
201
- // Transform the current value recursively and add it to the resultMap
202
- // object using the strapiOperator equivalent of the GraphQL key
203
- resultMap[strapiOperator] = graphQLFiltersToStrapiQuery(
204
- value,
205
- contentType
206
- );
207
- }
208
- }
209
- }
210
-
211
- return resultMap;
212
- };
213
-
214
- const serviceMethods: IServiceGraphQL = {
215
- buildContentTypeFilters,
216
- graphQLFiltersToStrapiQuery,
217
- };
218
- return serviceMethods;
219
- };