@strapi/admin 5.56.0 → 5.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/dist/admin/admin/src/components/Filters.js +1 -1
  2. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  3. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  4. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  6. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  8. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
  10. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  11. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
  12. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
  14. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
  15. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
  16. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/RelativeTime.js +9 -0
  18. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  19. package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
  20. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/TopBanners.js +52 -0
  22. package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
  23. package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
  24. package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
  25. package/dist/admin/admin/src/constants.js +14 -0
  26. package/dist/admin/admin/src/constants.js.map +1 -1
  27. package/dist/admin/admin/src/constants.mjs +14 -0
  28. package/dist/admin/admin/src/constants.mjs.map +1 -1
  29. package/dist/admin/admin/src/features/Tracking.js +28 -8
  30. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  31. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  32. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  33. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  34. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  35. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  36. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  38. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  39. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  40. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  42. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  44. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  46. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  47. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  48. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +6 -56
  50. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +6 -56
  52. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  62. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  63. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  64. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  65. package/dist/admin/admin/src/services/admin.js +11 -1
  66. package/dist/admin/admin/src/services/admin.js.map +1 -1
  67. package/dist/admin/admin/src/services/admin.mjs +11 -2
  68. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  69. package/dist/admin/admin/src/translations/en.json.js +76 -4
  70. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  71. package/dist/admin/admin/src/translations/en.json.mjs +76 -4
  72. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  73. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  74. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  75. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  76. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  77. package/dist/admin/admin/src/utils/getFetchClient.js +27 -3
  78. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  79. package/dist/admin/admin/src/utils/getFetchClient.mjs +26 -3
  80. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  81. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  82. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  83. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  84. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  85. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  86. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  87. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  88. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  89. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  90. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  91. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  92. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  93. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +8 -1
  94. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  95. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +8 -1
  96. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  97. package/dist/admin/index.js +1 -0
  98. package/dist/admin/index.js.map +1 -1
  99. package/dist/admin/index.mjs +1 -1
  100. package/dist/admin/shared/utils/get-project-type.js +49 -0
  101. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  102. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  103. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  104. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  105. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  106. package/dist/admin/src/constants.d.ts +10 -0
  107. package/dist/admin/src/features/Tracking.d.ts +12 -1
  108. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  109. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  110. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  111. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  112. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  113. package/dist/admin/src/services/admin.d.ts +2 -2
  114. package/dist/admin/src/types/permissions.d.ts +1 -0
  115. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  116. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  117. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  118. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  119. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +7 -0
  120. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  121. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  122. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  123. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  124. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  125. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  126. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  127. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  128. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  129. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  130. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  131. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  132. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  133. package/dist/ee/server/src/index.d.ts +40 -11
  134. package/dist/ee/server/src/index.d.ts.map +1 -1
  135. package/dist/ee/server/src/services/index.d.ts +4 -1
  136. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  137. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  138. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  139. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  140. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  141. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  142. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  143. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  144. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  145. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  146. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  147. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  148. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  149. package/dist/server/ee/server/src/controllers/admin.js +79 -7
  150. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  151. package/dist/server/ee/server/src/controllers/admin.mjs +79 -7
  152. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  153. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  154. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  155. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  156. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  157. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  158. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  159. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  160. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  161. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  162. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  163. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  164. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  165. package/dist/server/ee/server/src/controllers/user.js +7 -8
  166. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  167. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  168. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  169. package/dist/server/ee/server/src/index.js +2 -0
  170. package/dist/server/ee/server/src/index.js.map +1 -1
  171. package/dist/server/ee/server/src/index.mjs +2 -0
  172. package/dist/server/ee/server/src/index.mjs.map +1 -1
  173. package/dist/server/ee/server/src/services/metrics.js +9 -7
  174. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  175. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  176. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  177. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  178. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  179. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  180. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  181. package/dist/server/ee/server/src/services/role.js +2 -2
  182. package/dist/server/ee/server/src/services/role.js.map +1 -1
  183. package/dist/server/ee/server/src/services/role.mjs +1 -1
  184. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  185. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  186. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  187. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  188. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  189. package/dist/server/ee/server/src/services/user.js +1 -2
  190. package/dist/server/ee/server/src/services/user.js.map +1 -1
  191. package/dist/server/ee/server/src/services/user.mjs +2 -3
  192. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  193. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  194. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  195. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  196. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  197. package/dist/server/server/src/audit-logs/admin-users.js +3 -3
  198. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
  199. package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
  200. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
  201. package/dist/server/server/src/audit-logs/auth.js +72 -0
  202. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  203. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  204. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  205. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  206. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  207. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  208. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  209. package/dist/server/server/src/audit-logs/webhooks.js +2 -2
  210. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
  211. package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
  212. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
  213. package/dist/server/server/src/bootstrap.js +6 -4
  214. package/dist/server/server/src/bootstrap.js.map +1 -1
  215. package/dist/server/server/src/bootstrap.mjs +6 -4
  216. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  217. package/dist/server/server/src/config/admin-actions.js +7 -0
  218. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  219. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  220. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  221. package/dist/server/server/src/controllers/admin-token.js +8 -8
  222. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  223. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  224. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  225. package/dist/server/server/src/controllers/admin.js +9 -5
  226. package/dist/server/server/src/controllers/admin.js.map +1 -1
  227. package/dist/server/server/src/controllers/admin.mjs +8 -4
  228. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  229. package/dist/server/server/src/controllers/api-token.js +8 -8
  230. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  231. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  232. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  233. package/dist/server/server/src/controllers/authentication.js +34 -8
  234. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  235. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  236. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  237. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  238. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  239. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  240. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  241. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  242. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  243. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  244. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  245. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  246. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  247. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  248. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  249. package/dist/server/server/src/domain/action/index.js +18 -16
  250. package/dist/server/server/src/domain/action/index.js.map +1 -1
  251. package/dist/server/server/src/domain/action/index.mjs +16 -14
  252. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  253. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  254. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  255. package/dist/server/server/src/domain/condition/index.js +7 -4
  256. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  257. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  258. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  259. package/dist/server/server/src/domain/permission/index.js +24 -15
  260. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  261. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  262. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  263. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  264. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  265. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  266. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  267. package/dist/server/server/src/register.js +10 -0
  268. package/dist/server/server/src/register.js.map +1 -1
  269. package/dist/server/server/src/register.mjs +10 -0
  270. package/dist/server/server/src/register.mjs.map +1 -1
  271. package/dist/server/server/src/routes/admin.js +18 -0
  272. package/dist/server/server/src/routes/admin.js.map +1 -1
  273. package/dist/server/server/src/routes/admin.mjs +18 -0
  274. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  275. package/dist/server/server/src/services/action.js +1 -2
  276. package/dist/server/server/src/services/action.js.map +1 -1
  277. package/dist/server/server/src/services/action.mjs +1 -2
  278. package/dist/server/server/src/services/action.mjs.map +1 -1
  279. package/dist/server/server/src/services/api-token.js +61 -49
  280. package/dist/server/server/src/services/api-token.js.map +1 -1
  281. package/dist/server/server/src/services/api-token.mjs +53 -41
  282. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  283. package/dist/server/server/src/services/auth.js +4 -2
  284. package/dist/server/server/src/services/auth.js.map +1 -1
  285. package/dist/server/server/src/services/auth.mjs +4 -3
  286. package/dist/server/server/src/services/auth.mjs.map +1 -1
  287. package/dist/server/server/src/services/condition.js +2 -2
  288. package/dist/server/server/src/services/condition.js.map +1 -1
  289. package/dist/server/server/src/services/condition.mjs +1 -1
  290. package/dist/server/server/src/services/condition.mjs.map +1 -1
  291. package/dist/server/server/src/services/content-type.js +5 -4
  292. package/dist/server/server/src/services/content-type.js.map +1 -1
  293. package/dist/server/server/src/services/content-type.mjs +8 -7
  294. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  295. package/dist/server/server/src/services/debug-dump.js +173 -0
  296. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  297. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  298. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  299. package/dist/server/server/src/services/homepage.js +2 -1
  300. package/dist/server/server/src/services/homepage.js.map +1 -1
  301. package/dist/server/server/src/services/homepage.mjs +2 -1
  302. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  303. package/dist/server/server/src/services/index.js +3 -1
  304. package/dist/server/server/src/services/index.js.map +1 -1
  305. package/dist/server/server/src/services/index.mjs +3 -1
  306. package/dist/server/server/src/services/index.mjs.map +1 -1
  307. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  308. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  309. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  310. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  311. package/dist/server/server/src/services/passport.js +1 -2
  312. package/dist/server/server/src/services/passport.js.map +1 -1
  313. package/dist/server/server/src/services/passport.mjs +1 -2
  314. package/dist/server/server/src/services/passport.mjs.map +1 -1
  315. package/dist/server/server/src/services/permission/engine.js +4 -4
  316. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  317. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  318. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  319. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  320. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  321. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  322. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  323. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  324. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  325. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  326. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  327. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  328. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  329. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  330. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  331. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  332. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  333. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  334. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  335. package/dist/server/server/src/services/permission/queries.js +9 -9
  336. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  337. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  338. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  339. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  340. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  341. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  342. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  343. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  344. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  345. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  346. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  347. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  348. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  349. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  350. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  351. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  352. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  353. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  354. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  355. package/dist/server/server/src/services/role.js +20 -19
  356. package/dist/server/server/src/services/role.js.map +1 -1
  357. package/dist/server/server/src/services/role.mjs +20 -19
  358. package/dist/server/server/src/services/role.mjs.map +1 -1
  359. package/dist/server/server/src/services/transfer/token.js +20 -16
  360. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  361. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  362. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  363. package/dist/server/server/src/services/user.js +2 -3
  364. package/dist/server/server/src/services/user.js.map +1 -1
  365. package/dist/server/server/src/services/user.mjs +3 -4
  366. package/dist/server/server/src/services/user.mjs.map +1 -1
  367. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  368. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  369. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  370. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  371. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  372. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  373. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  374. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  375. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  376. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  377. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  378. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  379. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  380. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  381. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  382. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  383. package/dist/server/server/src/validation/common-validators.js +9 -10
  384. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  385. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  386. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  387. package/dist/server/server/src/validation/user.js +1 -2
  388. package/dist/server/server/src/validation/user.js.map +1 -1
  389. package/dist/server/server/src/validation/user.mjs +1 -2
  390. package/dist/server/server/src/validation/user.mjs.map +1 -1
  391. package/dist/server/shared/utils/get-project-type.js +49 -0
  392. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  393. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  394. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  395. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  396. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  397. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  398. package/dist/server/src/bootstrap.d.ts.map +1 -1
  399. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  400. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  401. package/dist/server/src/controllers/admin.d.ts +3 -0
  402. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  403. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  404. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  405. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  406. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  407. package/dist/server/src/controllers/homepage.d.ts +1 -1
  408. package/dist/server/src/controllers/index.d.ts +4 -1
  409. package/dist/server/src/controllers/index.d.ts.map +1 -1
  410. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  411. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  412. package/dist/server/src/domain/action/index.d.ts +1 -0
  413. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  414. package/dist/server/src/domain/condition/index.d.ts +2 -2
  415. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  416. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  417. package/dist/server/src/index.d.ts +11 -3
  418. package/dist/server/src/index.d.ts.map +1 -1
  419. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  420. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  421. package/dist/server/src/register.d.ts.map +1 -1
  422. package/dist/server/src/routes/admin.d.ts.map +1 -1
  423. package/dist/server/src/services/action.d.ts.map +1 -1
  424. package/dist/server/src/services/api-token.d.ts.map +1 -1
  425. package/dist/server/src/services/auth.d.ts +6 -0
  426. package/dist/server/src/services/auth.d.ts.map +1 -1
  427. package/dist/server/src/services/condition.d.ts.map +1 -1
  428. package/dist/server/src/services/content-type.d.ts.map +1 -1
  429. package/dist/server/src/services/debug-dump.d.ts +9 -0
  430. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  431. package/dist/server/src/services/homepage.d.ts +1 -1
  432. package/dist/server/src/services/homepage.d.ts.map +1 -1
  433. package/dist/server/src/services/index.d.ts +7 -2
  434. package/dist/server/src/services/index.d.ts.map +1 -1
  435. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  436. package/dist/server/src/services/passport.d.ts.map +1 -1
  437. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  438. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  439. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  440. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  441. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  442. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  443. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  444. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  445. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  446. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  447. package/dist/server/src/services/role.d.ts +1 -1
  448. package/dist/server/src/services/role.d.ts.map +1 -1
  449. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  450. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  451. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  452. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  453. package/dist/server/src/validation/user.d.ts.map +1 -1
  454. package/dist/shared/contracts/admin.d.ts +106 -0
  455. package/dist/shared/contracts/admin.d.ts.map +1 -1
  456. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  457. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  458. package/dist/shared/utils/get-project-type.d.ts +37 -0
  459. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  460. package/package.json +10 -10
  461. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  462. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  463. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  464. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  465. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/action/index.ts"],"sourcesContent":["import type { Utils } from '@strapi/types';\n\nimport { curry, pipe, merge, set, pick, omit, includes, isArray, prop } from 'lodash/fp';\n\nexport interface ActionAlias {\n /**\n * The action ID to alias\n */\n actionId: string;\n\n /**\n * An optional array of subject to restrict the alias usage\n */\n subjects?: string[];\n}\n\nexport type Action = {\n /**\n * The unique identifier of the action\n */\n actionId: string;\n\n /**\n * The section linked to the action - These can be 'contentTypes' | 'plugins' | 'settings' | 'internal'\n */\n section: string;\n\n /**\n * The human readable name of an action\n */\n displayName: string;\n\n /**\n * The main category of an action\n */\n category: string;\n\n /**\n * The secondary category of an action (only for settings and plugins section)\n */\n subCategory?: string;\n\n /**\n * The plugin that provides the action\n */\n pluginName?: string;\n\n /**\n * A list of subjects on which the action can be applied\n */\n subjects?: string[];\n\n /**\n * The options of an action\n */\n options: {\n /**\n * The list of properties that can be associated with an action\n */\n applyToProperties: string[] | null;\n };\n\n /**\n * An optional array of @see {@link ActionAlias}.\n *\n * It represents the possible aliases for the current action.\n *\n * Aliases are unidirectional.\n *\n * Note: This is an internal property and probably shouldn't be used outside Strapi core features.\n * Its behavior might change at any time without notice.\n *\n * @internal\n */\n aliases?: ActionAlias[];\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n * @typedef {Action, { uid: string }} CreateActionPayload\n */\nexport type CreateActionPayload = Utils.Intersect<\n [\n Utils.Object.PartialBy<\n // Action Id is computed from the uid value\n Omit<Action, 'actionId'>,\n // Options is filled with default values\n 'options'\n >,\n { uid: string },\n ]\n>;\n\n/**\n * Return the default attributes of a new {@link Action}\n * @return Partial<Action>\n */\nconst getDefaultActionAttributes = (): Partial<Action> => ({\n options: {\n applyToProperties: null,\n },\n});\n\n/**\n * Get the list of all the valid attributes of an {@link Action}\n */\nconst actionFields = [\n 'section',\n 'displayName',\n 'category',\n 'subCategory',\n 'pluginName',\n 'subjects',\n 'options',\n 'actionId',\n 'aliases',\n] as const;\n\n/**\n * Remove unwanted attributes from an {@link Action}\n */\nconst sanitizeActionAttributes = pick(actionFields) as (\n action: Action | CreateActionPayload\n) => Action;\n\n/**\n * Create and return an identifier for an {@link CreateActionPayload}.\n * The format is based on the action's source ({@link CreateActionPayload.pluginName} or 'application') and {@link CreateActionPayload.uid}.\n * @param {CreateActionPayload} attributes\n * @return {string}\n */\n// TODO: TS - Use Common.UID\nconst computeActionId = (attributes: CreateActionPayload): string => {\n const { pluginName, uid } = attributes;\n\n if (!pluginName) {\n return `api::${uid}`;\n }\n\n if (pluginName === 'admin') {\n return `admin::${uid}`;\n }\n\n return `plugin::${pluginName}.${uid}`;\n};\n\n/**\n * Assign an actionId attribute to an {@link CreateActionPayload} object\n */\nconst assignActionId = (attrs: CreateActionPayload) =>\n set('actionId', computeActionId(attrs), attrs);\n\n/**\n * Transform an action by adding or removing the {@link Action.subCategory} attribute\n * @param {Action} action - The action to process\n * @return {Action}\n */\nconst assignOrOmitSubCategory = (action: Action): Action => {\n const shouldHaveSubCategory = ['settings', 'plugins'].includes(action.section);\n\n return shouldHaveSubCategory\n ? set('subCategory', action.subCategory || 'general', action)\n : omit('subCategory', action);\n};\n\n/**\n * Check if a property can be applied to an {@link Action}\n */\nconst appliesToProperty = curry((property: string, action: Action): boolean => {\n return pipe(prop('options.applyToProperties'), includes(property))(action);\n});\n\n/**\n * Check if an action applies to a subject\n */\nconst appliesToSubject = curry((subject: string, action: Action): boolean => {\n return isArray(action.subjects) && includes(subject, action.subjects);\n});\n\n/**\n * Transform the given attributes into a domain representation of an Action\n */\nconst create: (payload: CreateActionPayload) => Action = pipe(\n // Create and assign an action identifier to the action\n // (need to be done before the sanitizeActionAttributes since we need the uid here)\n assignActionId,\n // Add or remove the sub category field based on the pluginName attribute\n assignOrOmitSubCategory,\n // Remove unwanted attributes from the payload\n sanitizeActionAttributes,\n // Complete the action creation by adding default values for some attributes\n merge(getDefaultActionAttributes())\n);\n\nexport default {\n actionFields,\n appliesToProperty,\n appliesToSubject,\n assignActionId,\n assignOrOmitSubCategory,\n create,\n computeActionId,\n getDefaultActionAttributes,\n sanitizeActionAttributes,\n};\n"],"names":["getDefaultActionAttributes","options","applyToProperties","actionFields","sanitizeActionAttributes","pick","computeActionId","attributes","pluginName","uid","assignActionId","attrs","set","assignOrOmitSubCategory","action","shouldHaveSubCategory","includes","section","subCategory","omit","appliesToProperty","curry","property","pipe","prop","appliesToSubject","subject","isArray","subjects","create","merge"],"mappings":";;AA6FA;;;IAIA,MAAMA,0BAAAA,GAA6B,KAAwB;QACzDC,OAAAA,EAAS;YACPC,iBAAAA,EAAmB;AACrB;KACF,CAAA;AAEA;;AAEC,IACD,MAAMC,YAAAA,GAAe;AACnB,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,UAAA;AACA,IAAA;AACD,CAAA;AAED;;IAGA,MAAMC,2BAA2BC,IAAAA,CAAKF,YAAAA,CAAAA;AAItC;;;;;AAKC;AAED,MAAMG,kBAAkB,CAACC,UAAAA,GAAAA;AACvB,IAAA,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAE,GAAGF,UAAAA;AAE5B,IAAA,IAAI,CAACC,UAAAA,EAAY;QACf,OAAO,CAAC,KAAK,EAAEC,GAAAA,CAAAA,CAAK;AACtB,IAAA;AAEA,IAAA,IAAID,eAAe,OAAA,EAAS;QAC1B,OAAO,CAAC,OAAO,EAAEC,GAAAA,CAAAA,CAAK;AACxB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAED,UAAAA,CAAW,CAAC,EAAEC,GAAAA,CAAAA,CAAK;AACvC,CAAA;AAEA;;AAEC,IACD,MAAMC,cAAAA,GAAiB,CAACC,QACtBC,GAAAA,CAAI,UAAA,EAAYN,gBAAgBK,KAAAA,CAAAA,EAAQA,KAAAA,CAAAA;AAE1C;;;;IAKA,MAAME,0BAA0B,CAACC,MAAAA,GAAAA;AAC/B,IAAA,MAAMC,qBAAAA,GAAwB;AAAC,QAAA,UAAA;AAAY,QAAA;KAAU,CAACC,QAAQ,CAACF,MAAAA,CAAOG,OAAO,CAAA;IAE7E,OAAOF,qBAAAA,GACHH,IAAI,aAAA,EAAeE,MAAAA,CAAOI,WAAW,IAAI,SAAA,EAAWJ,MAAAA,CAAAA,GACpDK,IAAAA,CAAK,aAAA,EAAeL,MAAAA,CAAAA;AAC1B,CAAA;AAEA;;AAEC,IACD,MAAMM,iBAAAA,GAAoBC,KAAAA,CAAM,CAACC,QAAAA,EAAkBR,MAAAA,GAAAA;AACjD,IAAA,OAAOS,IAAAA,CAAKC,IAAAA,CAAK,2BAAA,CAAA,EAA8BR,QAAAA,CAASM,QAAAA,CAAAA,CAAAA,CAAWR,MAAAA,CAAAA;AACrE,CAAA,CAAA;AAEA;;AAEC,IACD,MAAMW,gBAAAA,GAAmBJ,KAAAA,CAAM,CAACK,OAAAA,EAAiBZ,MAAAA,GAAAA;AAC/C,IAAA,OAAOa,QAAQb,MAAAA,CAAOc,QAAQ,KAAKZ,QAAAA,CAASU,OAAAA,EAASZ,OAAOc,QAAQ,CAAA;AACtE,CAAA,CAAA;AAEA;;IAGA,MAAMC,MAAAA,GAAmDN,IAAAA;AAEvD;AACAb,cAAAA;AAEAG,uBAAAA;AAEAT,wBAAAA;AAEA0B,KAAAA,CAAM9B,0BAAAA,EAAAA,CAAAA,CAAAA;AAGR,mBAAe;AACbG,IAAAA,YAAAA;AACAiB,IAAAA,iBAAAA;AACAK,IAAAA,gBAAAA;AACAf,IAAAA,cAAAA;AACAG,IAAAA,uBAAAA;AACAgB,IAAAA,MAAAA;AACAvB,IAAAA,eAAAA;AACAN,IAAAA,0BAAAA;AACAI,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/action/index.ts"],"sourcesContent":["import { pick, includes, merge, get, curry, flow, omit } from 'lodash';\nimport type { Utils } from '@strapi/types';\n\nexport interface ActionAlias {\n /**\n * The action ID to alias\n */\n actionId: string;\n\n /**\n * An optional array of subject to restrict the alias usage\n */\n subjects?: string[];\n}\n\nexport type Action = {\n /**\n * The unique identifier of the action\n */\n actionId: string;\n\n /**\n * The section linked to the action - These can be 'contentTypes' | 'plugins' | 'settings' | 'internal'\n */\n section: string;\n\n /**\n * The human readable name of an action\n */\n displayName: string;\n\n /**\n * The main category of an action\n */\n category: string;\n\n /**\n * The secondary category of an action (only for settings and plugins section)\n */\n subCategory?: string;\n\n /**\n * The plugin that provides the action\n */\n pluginName?: string;\n\n /**\n * A list of subjects on which the action can be applied\n */\n subjects?: string[];\n\n /**\n * The options of an action\n */\n options: {\n /**\n * The list of properties that can be associated with an action\n */\n applyToProperties: string[] | null;\n };\n\n /**\n * An optional array of @see {@link ActionAlias}.\n *\n * It represents the possible aliases for the current action.\n *\n * Aliases are unidirectional.\n *\n * Note: This is an internal property and probably shouldn't be used outside Strapi core features.\n * Its behavior might change at any time without notice.\n *\n * @internal\n */\n aliases?: ActionAlias[];\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n * @typedef {Action, { uid: string }} CreateActionPayload\n */\nexport type CreateActionPayload = Utils.Intersect<\n [\n Utils.Object.PartialBy<\n // Action Id is computed from the uid value\n Omit<Action, 'actionId'>,\n // Options is filled with default values\n 'options'\n >,\n { uid: string },\n ]\n>;\n\n/**\n * Return the default attributes of a new {@link Action}\n * @return Partial<Action>\n */\nconst getDefaultActionAttributes = (): Partial<Action> => ({\n options: {\n applyToProperties: null,\n },\n});\n\n/**\n * Get the list of all the valid attributes of an {@link Action}\n */\nconst actionFields = [\n 'section',\n 'displayName',\n 'category',\n 'subCategory',\n 'pluginName',\n 'subjects',\n 'options',\n 'actionId',\n 'aliases',\n] as const;\n\n/**\n * Remove unwanted attributes from an {@link Action}\n */\nconst sanitizeActionAttributes = (action: Action | CreateActionPayload): Action =>\n pick(action, actionFields) as Action;\n\n/**\n * Create and return an identifier for an {@link CreateActionPayload}.\n * The format is based on the action's source ({@link CreateActionPayload.pluginName} or 'application') and {@link CreateActionPayload.uid}.\n * @param {CreateActionPayload} attributes\n * @return {string}\n */\n// TODO: TS - Use Common.UID\nconst computeActionId = (attributes: CreateActionPayload): string => {\n const { pluginName, uid } = attributes;\n\n if (!pluginName) {\n return `api::${uid}`;\n }\n\n if (pluginName === 'admin') {\n return `admin::${uid}`;\n }\n\n return `plugin::${pluginName}.${uid}`;\n};\n\n/**\n * Assign an actionId attribute to an {@link CreateActionPayload} object\n */\nconst assignActionId = (attrs: CreateActionPayload) => ({\n ...attrs,\n actionId: computeActionId(attrs),\n});\n\n/**\n * Transform an action by adding or removing the {@link Action.subCategory} attribute\n * @param {Action} action - The action to process\n * @return {Action}\n */\nconst assignOrOmitSubCategory = (action: Action): Action => {\n const shouldHaveSubCategory = ['settings', 'plugins'].includes(action.section);\n\n return shouldHaveSubCategory\n ? { ...action, subCategory: action.subCategory || 'general' }\n : omit(action, 'subCategory');\n};\n\n/**\n * Check if a property can be applied to an {@link Action}\n */\nconst appliesToProperty = curry((property: string, action: Action): boolean => {\n return includes(get(action, 'options.applyToProperties'), property);\n});\n\n/**\n * Check if an action applies to a subject\n */\nconst appliesToSubject = curry((subject: string, action: Action): boolean => {\n return Array.isArray(action.subjects) && action.subjects.includes(subject);\n});\n\n/**\n * Transform the given attributes into a domain representation of an Action\n */\nconst create: (payload: CreateActionPayload) => Action = flow(\n // Assign the action identifier before sanitization removes the uid.\n assignActionId,\n assignOrOmitSubCategory,\n sanitizeActionAttributes,\n (action) => merge({}, getDefaultActionAttributes(), action)\n);\n\nexport default {\n actionFields,\n appliesToProperty,\n appliesToSubject,\n assignActionId,\n assignOrOmitSubCategory,\n create,\n computeActionId,\n getDefaultActionAttributes,\n sanitizeActionAttributes,\n};\n"],"names":["getDefaultActionAttributes","options","applyToProperties","actionFields","sanitizeActionAttributes","action","pick","computeActionId","attributes","pluginName","uid","assignActionId","attrs","actionId","assignOrOmitSubCategory","shouldHaveSubCategory","includes","section","subCategory","omit","appliesToProperty","curry","property","get","appliesToSubject","subject","Array","isArray","subjects","create","flow","merge"],"mappings":";;AA4FA;;;IAIA,MAAMA,0BAAAA,GAA6B,KAAwB;QACzDC,OAAAA,EAAS;YACPC,iBAAAA,EAAmB;AACrB;KACF,CAAA;AAEA;;AAEC,IACD,MAAMC,YAAAA,GAAe;AACnB,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,UAAA;AACA,IAAA;AACD,CAAA;AAED;;AAEC,IACD,MAAMC,wBAAAA,GAA2B,CAACC,MAAAA,GAChCC,KAAKD,MAAAA,EAAQF,YAAAA,CAAAA;AAEf;;;;;AAKC;AAED,MAAMI,kBAAkB,CAACC,UAAAA,GAAAA;AACvB,IAAA,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAE,GAAGF,UAAAA;AAE5B,IAAA,IAAI,CAACC,UAAAA,EAAY;QACf,OAAO,CAAC,KAAK,EAAEC,GAAAA,CAAAA,CAAK;AACtB,IAAA;AAEA,IAAA,IAAID,eAAe,OAAA,EAAS;QAC1B,OAAO,CAAC,OAAO,EAAEC,GAAAA,CAAAA,CAAK;AACxB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAED,UAAAA,CAAW,CAAC,EAAEC,GAAAA,CAAAA,CAAK;AACvC,CAAA;AAEA;;AAEC,IACD,MAAMC,cAAAA,GAAiB,CAACC,KAAAA,IAAgC;AACtD,QAAA,GAAGA,KAAK;AACRC,QAAAA,QAAAA,EAAUN,eAAAA,CAAgBK,KAAAA;KAC5B,CAAA;AAEA;;;;IAKA,MAAME,0BAA0B,CAACT,MAAAA,GAAAA;AAC/B,IAAA,MAAMU,qBAAAA,GAAwB;AAAC,QAAA,UAAA;AAAY,QAAA;KAAU,CAACC,QAAQ,CAACX,MAAAA,CAAOY,OAAO,CAAA;AAE7E,IAAA,OAAOF,qBAAAA,GACH;AAAE,QAAA,GAAGV,MAAM;QAAEa,WAAAA,EAAab,MAAAA,CAAOa,WAAW,IAAI;AAAU,KAAA,GAC1DC,KAAKd,MAAAA,EAAQ,aAAA,CAAA;AACnB,CAAA;AAEA;;AAEC,IACD,MAAMe,iBAAAA,GAAoBC,KAAAA,CAAM,CAACC,QAAAA,EAAkBjB,MAAAA,GAAAA;IACjD,OAAOW,QAAAA,CAASO,GAAAA,CAAIlB,MAAAA,EAAQ,2BAAA,CAAA,EAA8BiB,QAAAA,CAAAA;AAC5D,CAAA,CAAA;AAEA;;AAEC,IACD,MAAME,gBAAAA,GAAmBH,KAAAA,CAAM,CAACI,OAAAA,EAAiBpB,MAAAA,GAAAA;IAC/C,OAAOqB,KAAAA,CAAMC,OAAO,CAACtB,MAAAA,CAAOuB,QAAQ,KAAKvB,MAAAA,CAAOuB,QAAQ,CAACZ,QAAQ,CAACS,OAAAA,CAAAA;AACpE,CAAA,CAAA;AAEA;;IAGA,MAAMI,MAAAA,GAAmDC,IAAAA;AAEvDnB,cAAAA,EACAG,yBACAV,wBAAAA,EACA,CAACC,SAAW0B,KAAAA,CAAM,IAAI/B,0BAAAA,EAAAA,EAA8BK,MAAAA,CAAAA,CAAAA;AAGtD,aAAe;AACbF,IAAAA,YAAAA;AACAiB,IAAAA,iBAAAA;AACAI,IAAAA,gBAAAA;AACAb,IAAAA,cAAAA;AACAG,IAAAA,uBAAAA;AACAe,IAAAA,MAAAA;AACAtB,IAAAA,eAAAA;AACAP,IAAAA,0BAAAA;AACAI,IAAAA;AACF,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { errors, providerFactory, hooks } from '@strapi/utils';
2
2
  import { validateRegisterProviderAction } from '../../validation/action-provider.mjs';
3
- import actionDomain from './index.mjs';
3
+ import domain from './index.mjs';
4
4
 
5
5
  const { ApplicationError } = errors;
6
6
  /**
@@ -23,7 +23,7 @@ const { ApplicationError } = errors;
23
23
  validateRegisterProviderAction([
24
24
  actionAttributes
25
25
  ]);
26
- const action = actionDomain.create(actionAttributes);
26
+ const action = domain.create(actionAttributes);
27
27
  return provider.register(action.actionId, action);
28
28
  },
29
29
  async registerMany (actionsAttributes) {
@@ -38,7 +38,7 @@ const { ApplicationError } = errors;
38
38
  if (!action) {
39
39
  throw new ApplicationError(`No action found with id "${actionId}"`);
40
40
  }
41
- const appliesToAction = actionDomain.appliesToProperty(property, action);
41
+ const appliesToAction = domain.appliesToProperty(property, action);
42
42
  // If the property isn't valid for this action, ignore the rest of the checks
43
43
  if (!appliesToAction) {
44
44
  return false;
@@ -48,7 +48,7 @@ const { ApplicationError } = errors;
48
48
  return true;
49
49
  }
50
50
  // If the property is valid for this action and the subject is not handled by the action
51
- if (!actionDomain.appliesToSubject(subject, action)) {
51
+ if (!domain.appliesToSubject(subject, action)) {
52
52
  return false;
53
53
  }
54
54
  const results = await actionHooks.appliesPropertyToSubject.call({
@@ -1 +1 @@
1
- {"version":3,"file":"provider.mjs","sources":["../../../../../../server/src/domain/action/provider.ts"],"sourcesContent":["import { providerFactory, hooks, errors } from '@strapi/utils';\nimport { validateRegisterProviderAction } from '../../validation/action-provider';\n\nimport domain from './index';\nimport type { Action, CreateActionPayload } from './index';\nimport type { Permission } from '../../../../shared/contracts/shared';\n\ntype Options = Parameters<typeof providerFactory>['0'];\n\nconst { ApplicationError } = errors;\n\n/**\n * Creates a new instance of an action provider\n */\nconst createActionProvider = (options?: Options) => {\n const provider = providerFactory<Action>(options);\n const actionHooks = {\n appliesPropertyToSubject: hooks.createAsyncParallelHook(),\n };\n\n return {\n ...provider,\n\n hooks: {\n ...provider.hooks,\n ...actionHooks,\n },\n\n async register(actionAttributes: CreateActionPayload) {\n if (strapi.isLoaded) {\n throw new Error(`You can't register new actions outside of the bootstrap function.`);\n }\n\n validateRegisterProviderAction([actionAttributes]);\n\n const action = domain.create(actionAttributes);\n\n return provider.register(action.actionId, action);\n },\n\n async registerMany(actionsAttributes: CreateActionPayload[]) {\n validateRegisterProviderAction(actionsAttributes);\n\n for (const attributes of actionsAttributes) {\n await this.register(attributes);\n }\n\n return this;\n },\n\n async appliesToProperty(property: string, actionId: string, subject: Permission['subject']) {\n const action = provider.get(actionId) as Action | undefined;\n if (!action) {\n throw new ApplicationError(`No action found with id \"${actionId}\"`);\n }\n\n const appliesToAction = domain.appliesToProperty(property, action);\n\n // If the property isn't valid for this action, ignore the rest of the checks\n if (!appliesToAction) {\n return false;\n }\n\n // If the property is valid for this action and there isn't any subject\n if (!subject) {\n return true;\n }\n\n // If the property is valid for this action and the subject is not handled by the action\n if (!domain.appliesToSubject(subject, action)) {\n return false;\n }\n\n const results = await actionHooks.appliesPropertyToSubject.call({\n property,\n action,\n subject,\n });\n\n return results.every((result) => result !== false);\n },\n\n /**\n * @experimental\n */\n unstable_aliases(actionId: string, subject?: string | null): string[] {\n const isRegistered = this.has(actionId);\n\n if (!isRegistered) {\n return [];\n }\n\n return this.values()\n .filter((action) =>\n action.aliases?.some((alias) => {\n // Only look at alias with the correct actionId\n if (alias.actionId !== actionId) {\n return false;\n }\n\n // If the alias don't have a list of required subjects, keep it\n if (!Array.isArray(alias.subjects)) {\n return true;\n }\n\n // If the alias require specific subjects but none is provided, skip it\n if (!subject) {\n return false;\n }\n\n // Else, make sure the given subject is allowed\n return alias.subjects.includes(subject);\n })\n )\n .map((action) => action.actionId);\n },\n };\n};\n\nexport default createActionProvider;\n"],"names":["ApplicationError","errors","createActionProvider","options","provider","providerFactory","actionHooks","appliesPropertyToSubject","hooks","createAsyncParallelHook","register","actionAttributes","strapi","isLoaded","Error","validateRegisterProviderAction","action","domain","create","actionId","registerMany","actionsAttributes","attributes","appliesToProperty","property","subject","get","appliesToAction","appliesToSubject","results","call","every","result","unstable_aliases","isRegistered","has","values","filter","aliases","some","alias","Array","isArray","subjects","includes","map"],"mappings":"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"}
1
+ {"version":3,"file":"provider.mjs","sources":["../../../../../../server/src/domain/action/provider.ts"],"sourcesContent":["import { providerFactory, hooks, errors } from '@strapi/utils';\nimport { validateRegisterProviderAction } from '../../validation/action-provider';\n\nimport domain from './index';\nimport type { Action, CreateActionPayload } from './index';\nimport type { Permission } from '../../../../shared/contracts/shared';\n\ntype Options = Parameters<typeof providerFactory>['0'];\n\nconst { ApplicationError } = errors;\n\n/**\n * Creates a new instance of an action provider\n */\nconst createActionProvider = (options?: Options) => {\n const provider = providerFactory<Action>(options);\n const actionHooks = {\n appliesPropertyToSubject: hooks.createAsyncParallelHook(),\n };\n\n return {\n ...provider,\n\n hooks: {\n ...provider.hooks,\n ...actionHooks,\n },\n\n async register(actionAttributes: CreateActionPayload) {\n if (strapi.isLoaded) {\n throw new Error(`You can't register new actions outside of the bootstrap function.`);\n }\n\n validateRegisterProviderAction([actionAttributes]);\n\n const action = domain.create(actionAttributes);\n\n return provider.register(action.actionId, action);\n },\n\n async registerMany(actionsAttributes: CreateActionPayload[]) {\n validateRegisterProviderAction(actionsAttributes);\n\n for (const attributes of actionsAttributes) {\n await this.register(attributes);\n }\n\n return this;\n },\n\n async appliesToProperty(property: string, actionId: string, subject: Permission['subject']) {\n const action = provider.get(actionId) as Action | undefined;\n if (!action) {\n throw new ApplicationError(`No action found with id \"${actionId}\"`);\n }\n\n const appliesToAction = domain.appliesToProperty(property, action);\n\n // If the property isn't valid for this action, ignore the rest of the checks\n if (!appliesToAction) {\n return false;\n }\n\n // If the property is valid for this action and there isn't any subject\n if (!subject) {\n return true;\n }\n\n // If the property is valid for this action and the subject is not handled by the action\n if (!domain.appliesToSubject(subject, action)) {\n return false;\n }\n\n const results = await actionHooks.appliesPropertyToSubject.call({\n property,\n action,\n subject,\n });\n\n return results.every((result) => result !== false);\n },\n\n /**\n * @experimental\n */\n unstable_aliases(actionId: string, subject?: string | null): string[] {\n const isRegistered = this.has(actionId);\n\n if (!isRegistered) {\n return [];\n }\n\n return this.values()\n .filter((action) =>\n action.aliases?.some((alias) => {\n // Only look at alias with the correct actionId\n if (alias.actionId !== actionId) {\n return false;\n }\n\n // If the alias don't have a list of required subjects, keep it\n if (!Array.isArray(alias.subjects)) {\n return true;\n }\n\n // If the alias require specific subjects but none is provided, skip it\n if (!subject) {\n return false;\n }\n\n // Else, make sure the given subject is allowed\n return alias.subjects.includes(subject);\n })\n )\n .map((action) => action.actionId);\n },\n };\n};\n\nexport default createActionProvider;\n"],"names":["ApplicationError","errors","createActionProvider","options","provider","providerFactory","actionHooks","appliesPropertyToSubject","hooks","createAsyncParallelHook","register","actionAttributes","strapi","isLoaded","Error","validateRegisterProviderAction","action","domain","create","actionId","registerMany","actionsAttributes","attributes","appliesToProperty","property","subject","get","appliesToAction","appliesToSubject","results","call","every","result","unstable_aliases","isRegistered","has","values","filter","aliases","some","alias","Array","isArray","subjects","includes","map"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var fp = require('lodash/fp');
5
+ var _ = require('lodash');
6
6
 
7
7
  const DEFAULT_CATEGORY = 'default';
8
8
  /**
@@ -23,7 +23,7 @@ const DEFAULT_CATEGORY = 'default';
23
23
  ];
24
24
  /**
25
25
  * Remove unwanted attributes from a {@link Condition}
26
- */ const sanitizeConditionAttributes = fp.pick(conditionFields);
26
+ */ const sanitizeConditionAttributes = (condition)=>_.pick(condition, conditionFields);
27
27
  const computeConditionId = (condition)=>{
28
28
  const { name, plugin } = condition;
29
29
  if (!plugin) {
@@ -38,13 +38,16 @@ const computeConditionId = (condition)=>{
38
38
  * Assign an id attribute to a {@link CreateConditionPayload} object
39
39
  * @param attrs - Payload used to create a condition
40
40
  */ const assignConditionId = (attrs)=>{
41
- const condition = fp.set('id', computeConditionId(attrs), attrs);
41
+ const condition = {
42
+ ...attrs,
43
+ id: computeConditionId(attrs)
44
+ };
42
45
  return condition;
43
46
  };
44
47
  /**
45
48
  * Transform the given attributes into a domain representation of a Condition
46
49
  * @param payload - The condition payload containing the attributes needed to create a {@link Condition}
47
- */ const create = fp.pipe(assignConditionId, sanitizeConditionAttributes, fp.merge(getDefaultConditionAttributes()));
50
+ */ const create = _.flow(assignConditionId, sanitizeConditionAttributes, (condition)=>_.merge({}, getDefaultConditionAttributes(), condition));
48
51
  var domain = {
49
52
  assignConditionId,
50
53
  computeConditionId,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/condition/index.ts"],"sourcesContent":["import { pipe, merge, set, pick } from 'lodash/fp';\n\nexport type Condition = {\n id: string;\n displayName: string;\n name: string;\n plugin?: string;\n category?: string;\n /**\n * The handler of a {@link Condition}\n */\n handler: (user: object, options: object) => object | boolean;\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n */\nexport type CreateConditionPayload = Omit<Condition, 'id'>;\n\nconst DEFAULT_CATEGORY = 'default';\n\n/**\n * Get the default value used for every condition\n * @return {Condition}\n */\nexport const getDefaultConditionAttributes = () => ({\n category: DEFAULT_CATEGORY,\n});\n\n/**\n * Get the list of all the valid attributes of a {@link Condition}\n * @return {string[]}\n */\nexport const conditionFields = ['id', 'displayName', 'handler', 'plugin', 'category'] as const;\n\n/**\n * Remove unwanted attributes from a {@link Condition}\n */\nexport const sanitizeConditionAttributes = pick(conditionFields);\n\nexport const computeConditionId = (condition: CreateConditionPayload) => {\n const { name, plugin } = condition;\n\n if (!plugin) {\n return `api::${name}`;\n }\n\n if (plugin === 'admin') {\n return `admin::${name}`;\n }\n\n return `plugin::${plugin}.${name}`;\n};\n\n/**\n * Assign an id attribute to a {@link CreateConditionPayload} object\n * @param attrs - Payload used to create a condition\n */\nexport const assignConditionId = (attrs: CreateConditionPayload): Condition => {\n const condition = set('id', computeConditionId(attrs), attrs) as CreateConditionPayload & {\n id: string;\n };\n return condition;\n};\n\n/**\n * Transform the given attributes into a domain representation of a Condition\n * @param payload - The condition payload containing the attributes needed to create a {@link Condition}\n */\nexport const create = pipe(\n assignConditionId,\n sanitizeConditionAttributes,\n merge(getDefaultConditionAttributes())\n) as (payload: CreateConditionPayload) => Condition;\n\nexport default {\n assignConditionId,\n computeConditionId,\n conditionFields,\n create,\n getDefaultConditionAttributes,\n sanitizeConditionAttributes,\n};\n"],"names":["DEFAULT_CATEGORY","getDefaultConditionAttributes","category","conditionFields","sanitizeConditionAttributes","pick","computeConditionId","condition","name","plugin","assignConditionId","attrs","set","create","pipe","merge"],"mappings":";;;;;;AAmBA,MAAMA,gBAAAA,GAAmB,SAAA;AAEzB;;;AAGC,IACM,MAAMC,6BAAAA,GAAgC,KAAO;QAClDC,QAAAA,EAAUF;AACZ,KAAA;AAEA;;;UAIaG,eAAAA,GAAkB;AAAC,IAAA,IAAA;AAAM,IAAA,aAAA;AAAe,IAAA,SAAA;AAAW,IAAA,QAAA;AAAU,IAAA;;AAE1E;;AAEC,IACM,MAAMC,2BAAAA,GAA8BC,OAAAA,CAAKF,eAAAA;AAEzC,MAAMG,qBAAqB,CAACC,SAAAA,GAAAA;AACjC,IAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGF,SAAAA;AAEzB,IAAA,IAAI,CAACE,MAAAA,EAAQ;QACX,OAAO,CAAC,KAAK,EAAED,IAAAA,CAAAA,CAAM;AACvB,IAAA;AAEA,IAAA,IAAIC,WAAW,OAAA,EAAS;QACtB,OAAO,CAAC,OAAO,EAAED,IAAAA,CAAAA,CAAM;AACzB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAEC,MAAAA,CAAO,CAAC,EAAED,IAAAA,CAAAA,CAAM;AACpC;AAEA;;;IAIO,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GAAAA;AAChC,IAAA,MAAMJ,SAAAA,GAAYK,MAAAA,CAAI,IAAA,EAAMN,kBAAAA,CAAmBK,KAAAA,CAAAA,EAAQA,KAAAA,CAAAA;IAGvD,OAAOJ,SAAAA;AACT;AAEA;;;AAGC,IACM,MAAMM,MAAAA,GAASC,QACpBJ,iBAAAA,EACAN,2BAAAA,EACAW,SAAMd,6BAAAA,EAAAA,CAAAA;AAGR,aAAe;AACbS,IAAAA,iBAAAA;AACAJ,IAAAA,kBAAAA;AACAH,IAAAA,eAAAA;AACAU,IAAAA,MAAAA;AACAZ,IAAAA,6BAAAA;AACAG,IAAAA;AACF,CAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/condition/index.ts"],"sourcesContent":["import { pick, merge, flow } from 'lodash';\n\nexport type Condition = {\n id: string;\n displayName: string;\n name: string;\n plugin?: string;\n category?: string;\n /**\n * The handler of a {@link Condition}\n */\n handler: (user: object, options: object) => object | boolean;\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n */\nexport type CreateConditionPayload = Omit<Condition, 'id'>;\n\nconst DEFAULT_CATEGORY = 'default';\n\n/**\n * Get the default value used for every condition\n * @return {Condition}\n */\nexport const getDefaultConditionAttributes = () => ({\n category: DEFAULT_CATEGORY,\n});\n\n/**\n * Get the list of all the valid attributes of a {@link Condition}\n * @return {string[]}\n */\nexport const conditionFields = ['id', 'displayName', 'handler', 'plugin', 'category'] as const;\n\n/**\n * Remove unwanted attributes from a {@link Condition}\n */\nexport const sanitizeConditionAttributes = (condition: Partial<Condition>) =>\n pick(condition, conditionFields);\n\nexport const computeConditionId = (condition: CreateConditionPayload) => {\n const { name, plugin } = condition;\n\n if (!plugin) {\n return `api::${name}`;\n }\n\n if (plugin === 'admin') {\n return `admin::${name}`;\n }\n\n return `plugin::${plugin}.${name}`;\n};\n\n/**\n * Assign an id attribute to a {@link CreateConditionPayload} object\n * @param attrs - Payload used to create a condition\n */\nexport const assignConditionId = (attrs: CreateConditionPayload): Condition => {\n const condition = { ...attrs, id: computeConditionId(attrs) } as CreateConditionPayload & {\n id: string;\n };\n return condition;\n};\n\n/**\n * Transform the given attributes into a domain representation of a Condition\n * @param payload - The condition payload containing the attributes needed to create a {@link Condition}\n */\nexport const create = flow(assignConditionId, sanitizeConditionAttributes, (condition) =>\n merge({}, getDefaultConditionAttributes(), condition)\n) as (payload: CreateConditionPayload) => Condition;\n\nexport default {\n assignConditionId,\n computeConditionId,\n conditionFields,\n create,\n getDefaultConditionAttributes,\n sanitizeConditionAttributes,\n};\n"],"names":["DEFAULT_CATEGORY","getDefaultConditionAttributes","category","conditionFields","sanitizeConditionAttributes","condition","pick","computeConditionId","name","plugin","assignConditionId","attrs","id","create","flow","merge"],"mappings":";;;;;;AAmBA,MAAMA,gBAAAA,GAAmB,SAAA;AAEzB;;;AAGC,IACM,MAAMC,6BAAAA,GAAgC,KAAO;QAClDC,QAAAA,EAAUF;AACZ,KAAA;AAEA;;;UAIaG,eAAAA,GAAkB;AAAC,IAAA,IAAA;AAAM,IAAA,aAAA;AAAe,IAAA,SAAA;AAAW,IAAA,QAAA;AAAU,IAAA;;AAE1E;;AAEC,IACM,MAAMC,2BAAAA,GAA8B,CAACC,SAAAA,GAC1CC,MAAAA,CAAKD,WAAWF,eAAAA;AAEX,MAAMI,qBAAqB,CAACF,SAAAA,GAAAA;AACjC,IAAA,MAAM,EAAEG,IAAI,EAAEC,MAAM,EAAE,GAAGJ,SAAAA;AAEzB,IAAA,IAAI,CAACI,MAAAA,EAAQ;QACX,OAAO,CAAC,KAAK,EAAED,IAAAA,CAAAA,CAAM;AACvB,IAAA;AAEA,IAAA,IAAIC,WAAW,OAAA,EAAS;QACtB,OAAO,CAAC,OAAO,EAAED,IAAAA,CAAAA,CAAM;AACzB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAEC,MAAAA,CAAO,CAAC,EAAED,IAAAA,CAAAA,CAAM;AACpC;AAEA;;;IAIO,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GAAAA;AAChC,IAAA,MAAMN,SAAAA,GAAY;AAAE,QAAA,GAAGM,KAAK;AAAEC,QAAAA,EAAAA,EAAIL,kBAAAA,CAAmBI,KAAAA;AAAO,KAAA;IAG5D,OAAON,SAAAA;AACT;AAEA;;;AAGC,IACM,MAAMQ,MAAAA,GAASC,MAAAA,CAAKJ,iBAAAA,EAAmBN,2BAAAA,EAA6B,CAACC,SAAAA,GAC1EU,OAAAA,CAAM,EAAC,EAAGd,6BAAAA,EAAAA,EAAiCI,SAAAA,CAAAA;AAG7C,aAAe;AACbK,IAAAA,iBAAAA;AACAH,IAAAA,kBAAAA;AACAJ,IAAAA,eAAAA;AACAU,IAAAA,MAAAA;AACAZ,IAAAA,6BAAAA;AACAG,IAAAA;AACF,CAAA;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { pick, pipe, merge, set } from 'lodash/fp';
1
+ import { flow, merge, pick } from 'lodash';
2
2
 
3
3
  const DEFAULT_CATEGORY = 'default';
4
4
  /**
@@ -19,7 +19,7 @@ const DEFAULT_CATEGORY = 'default';
19
19
  ];
20
20
  /**
21
21
  * Remove unwanted attributes from a {@link Condition}
22
- */ const sanitizeConditionAttributes = pick(conditionFields);
22
+ */ const sanitizeConditionAttributes = (condition)=>pick(condition, conditionFields);
23
23
  const computeConditionId = (condition)=>{
24
24
  const { name, plugin } = condition;
25
25
  if (!plugin) {
@@ -34,13 +34,16 @@ const computeConditionId = (condition)=>{
34
34
  * Assign an id attribute to a {@link CreateConditionPayload} object
35
35
  * @param attrs - Payload used to create a condition
36
36
  */ const assignConditionId = (attrs)=>{
37
- const condition = set('id', computeConditionId(attrs), attrs);
37
+ const condition = {
38
+ ...attrs,
39
+ id: computeConditionId(attrs)
40
+ };
38
41
  return condition;
39
42
  };
40
43
  /**
41
44
  * Transform the given attributes into a domain representation of a Condition
42
45
  * @param payload - The condition payload containing the attributes needed to create a {@link Condition}
43
- */ const create = pipe(assignConditionId, sanitizeConditionAttributes, merge(getDefaultConditionAttributes()));
46
+ */ const create = flow(assignConditionId, sanitizeConditionAttributes, (condition)=>merge({}, getDefaultConditionAttributes(), condition));
44
47
  var domain = {
45
48
  assignConditionId,
46
49
  computeConditionId,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/condition/index.ts"],"sourcesContent":["import { pipe, merge, set, pick } from 'lodash/fp';\n\nexport type Condition = {\n id: string;\n displayName: string;\n name: string;\n plugin?: string;\n category?: string;\n /**\n * The handler of a {@link Condition}\n */\n handler: (user: object, options: object) => object | boolean;\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n */\nexport type CreateConditionPayload = Omit<Condition, 'id'>;\n\nconst DEFAULT_CATEGORY = 'default';\n\n/**\n * Get the default value used for every condition\n * @return {Condition}\n */\nexport const getDefaultConditionAttributes = () => ({\n category: DEFAULT_CATEGORY,\n});\n\n/**\n * Get the list of all the valid attributes of a {@link Condition}\n * @return {string[]}\n */\nexport const conditionFields = ['id', 'displayName', 'handler', 'plugin', 'category'] as const;\n\n/**\n * Remove unwanted attributes from a {@link Condition}\n */\nexport const sanitizeConditionAttributes = pick(conditionFields);\n\nexport const computeConditionId = (condition: CreateConditionPayload) => {\n const { name, plugin } = condition;\n\n if (!plugin) {\n return `api::${name}`;\n }\n\n if (plugin === 'admin') {\n return `admin::${name}`;\n }\n\n return `plugin::${plugin}.${name}`;\n};\n\n/**\n * Assign an id attribute to a {@link CreateConditionPayload} object\n * @param attrs - Payload used to create a condition\n */\nexport const assignConditionId = (attrs: CreateConditionPayload): Condition => {\n const condition = set('id', computeConditionId(attrs), attrs) as CreateConditionPayload & {\n id: string;\n };\n return condition;\n};\n\n/**\n * Transform the given attributes into a domain representation of a Condition\n * @param payload - The condition payload containing the attributes needed to create a {@link Condition}\n */\nexport const create = pipe(\n assignConditionId,\n sanitizeConditionAttributes,\n merge(getDefaultConditionAttributes())\n) as (payload: CreateConditionPayload) => Condition;\n\nexport default {\n assignConditionId,\n computeConditionId,\n conditionFields,\n create,\n getDefaultConditionAttributes,\n sanitizeConditionAttributes,\n};\n"],"names":["DEFAULT_CATEGORY","getDefaultConditionAttributes","category","conditionFields","sanitizeConditionAttributes","pick","computeConditionId","condition","name","plugin","assignConditionId","attrs","set","create","pipe","merge"],"mappings":";;AAmBA,MAAMA,gBAAAA,GAAmB,SAAA;AAEzB;;;AAGC,IACM,MAAMC,6BAAAA,GAAgC,KAAO;QAClDC,QAAAA,EAAUF;AACZ,KAAA;AAEA;;;UAIaG,eAAAA,GAAkB;AAAC,IAAA,IAAA;AAAM,IAAA,aAAA;AAAe,IAAA,SAAA;AAAW,IAAA,QAAA;AAAU,IAAA;;AAE1E;;AAEC,IACM,MAAMC,2BAAAA,GAA8BC,IAAAA,CAAKF,eAAAA;AAEzC,MAAMG,qBAAqB,CAACC,SAAAA,GAAAA;AACjC,IAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAE,GAAGF,SAAAA;AAEzB,IAAA,IAAI,CAACE,MAAAA,EAAQ;QACX,OAAO,CAAC,KAAK,EAAED,IAAAA,CAAAA,CAAM;AACvB,IAAA;AAEA,IAAA,IAAIC,WAAW,OAAA,EAAS;QACtB,OAAO,CAAC,OAAO,EAAED,IAAAA,CAAAA,CAAM;AACzB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAEC,MAAAA,CAAO,CAAC,EAAED,IAAAA,CAAAA,CAAM;AACpC;AAEA;;;IAIO,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GAAAA;AAChC,IAAA,MAAMJ,SAAAA,GAAYK,GAAAA,CAAI,IAAA,EAAMN,kBAAAA,CAAmBK,KAAAA,CAAAA,EAAQA,KAAAA,CAAAA;IAGvD,OAAOJ,SAAAA;AACT;AAEA;;;AAGC,IACM,MAAMM,MAAAA,GAASC,KACpBJ,iBAAAA,EACAN,2BAAAA,EACAW,MAAMd,6BAAAA,EAAAA,CAAAA;AAGR,aAAe;AACbS,IAAAA,iBAAAA;AACAJ,IAAAA,kBAAAA;AACAH,IAAAA,eAAAA;AACAU,IAAAA,MAAAA;AACAZ,IAAAA,6BAAAA;AACAG,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/condition/index.ts"],"sourcesContent":["import { pick, merge, flow } from 'lodash';\n\nexport type Condition = {\n id: string;\n displayName: string;\n name: string;\n plugin?: string;\n category?: string;\n /**\n * The handler of a {@link Condition}\n */\n handler: (user: object, options: object) => object | boolean;\n};\n\n/**\n * Set of attributes used to create a new {@link Action} object\n */\nexport type CreateConditionPayload = Omit<Condition, 'id'>;\n\nconst DEFAULT_CATEGORY = 'default';\n\n/**\n * Get the default value used for every condition\n * @return {Condition}\n */\nexport const getDefaultConditionAttributes = () => ({\n category: DEFAULT_CATEGORY,\n});\n\n/**\n * Get the list of all the valid attributes of a {@link Condition}\n * @return {string[]}\n */\nexport const conditionFields = ['id', 'displayName', 'handler', 'plugin', 'category'] as const;\n\n/**\n * Remove unwanted attributes from a {@link Condition}\n */\nexport const sanitizeConditionAttributes = (condition: Partial<Condition>) =>\n pick(condition, conditionFields);\n\nexport const computeConditionId = (condition: CreateConditionPayload) => {\n const { name, plugin } = condition;\n\n if (!plugin) {\n return `api::${name}`;\n }\n\n if (plugin === 'admin') {\n return `admin::${name}`;\n }\n\n return `plugin::${plugin}.${name}`;\n};\n\n/**\n * Assign an id attribute to a {@link CreateConditionPayload} object\n * @param attrs - Payload used to create a condition\n */\nexport const assignConditionId = (attrs: CreateConditionPayload): Condition => {\n const condition = { ...attrs, id: computeConditionId(attrs) } as CreateConditionPayload & {\n id: string;\n };\n return condition;\n};\n\n/**\n * Transform the given attributes into a domain representation of a Condition\n * @param payload - The condition payload containing the attributes needed to create a {@link Condition}\n */\nexport const create = flow(assignConditionId, sanitizeConditionAttributes, (condition) =>\n merge({}, getDefaultConditionAttributes(), condition)\n) as (payload: CreateConditionPayload) => Condition;\n\nexport default {\n assignConditionId,\n computeConditionId,\n conditionFields,\n create,\n getDefaultConditionAttributes,\n sanitizeConditionAttributes,\n};\n"],"names":["DEFAULT_CATEGORY","getDefaultConditionAttributes","category","conditionFields","sanitizeConditionAttributes","condition","pick","computeConditionId","name","plugin","assignConditionId","attrs","id","create","flow","merge"],"mappings":";;AAmBA,MAAMA,gBAAAA,GAAmB,SAAA;AAEzB;;;AAGC,IACM,MAAMC,6BAAAA,GAAgC,KAAO;QAClDC,QAAAA,EAAUF;AACZ,KAAA;AAEA;;;UAIaG,eAAAA,GAAkB;AAAC,IAAA,IAAA;AAAM,IAAA,aAAA;AAAe,IAAA,SAAA;AAAW,IAAA,QAAA;AAAU,IAAA;;AAE1E;;AAEC,IACM,MAAMC,2BAAAA,GAA8B,CAACC,SAAAA,GAC1CC,IAAAA,CAAKD,WAAWF,eAAAA;AAEX,MAAMI,qBAAqB,CAACF,SAAAA,GAAAA;AACjC,IAAA,MAAM,EAAEG,IAAI,EAAEC,MAAM,EAAE,GAAGJ,SAAAA;AAEzB,IAAA,IAAI,CAACI,MAAAA,EAAQ;QACX,OAAO,CAAC,KAAK,EAAED,IAAAA,CAAAA,CAAM;AACvB,IAAA;AAEA,IAAA,IAAIC,WAAW,OAAA,EAAS;QACtB,OAAO,CAAC,OAAO,EAAED,IAAAA,CAAAA,CAAM;AACzB,IAAA;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAEC,MAAAA,CAAO,CAAC,EAAED,IAAAA,CAAAA,CAAM;AACpC;AAEA;;;IAIO,MAAME,iBAAAA,GAAoB,CAACC,KAAAA,GAAAA;AAChC,IAAA,MAAMN,SAAAA,GAAY;AAAE,QAAA,GAAGM,KAAK;AAAEC,QAAAA,EAAAA,EAAIL,kBAAAA,CAAmBI,KAAAA;AAAO,KAAA;IAG5D,OAAON,SAAAA;AACT;AAEA;;;AAGC,IACM,MAAMQ,MAAAA,GAASC,IAAAA,CAAKJ,iBAAAA,EAAmBN,2BAAAA,EAA6B,CAACC,SAAAA,GAC1EU,KAAAA,CAAM,EAAC,EAAGd,6BAAAA,EAAAA,EAAiCI,SAAAA,CAAAA;AAG7C,aAAe;AACbK,IAAAA,iBAAAA;AACAH,IAAAA,kBAAAA;AACAJ,IAAAA,eAAAA;AACAU,IAAAA,MAAAA;AACAZ,IAAAA,6BAAAA;AACAG,IAAAA;AACF,CAAA;;;;"}
@@ -2,7 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var fp = require('lodash/fp');
5
+ var utils = require('@strapi/utils');
6
+ var _ = require('lodash');
6
7
 
7
8
  const permissionFields = [
8
9
  'id',
@@ -22,7 +23,7 @@ const sanitizedPermissionFields = [
22
23
  'properties',
23
24
  'conditions'
24
25
  ];
25
- const sanitizePermissionFields = fp.pick(sanitizedPermissionFields);
26
+ const sanitizePermissionFields = (permission)=>_.pick(permission, sanitizedPermissionFields);
26
27
  /**
27
28
  * Creates a permission with default values
28
29
  */ const getDefaultPermission = ()=>({
@@ -36,57 +37,65 @@ const sanitizePermissionFields = fp.pick(sanitizedPermissionFields);
36
37
  * @param condition - The condition to add
37
38
  * @param permission - The permission on which we want to add the condition
38
39
  * @return
39
- */ const addCondition = fp.curry((condition, permission)=>{
40
+ */ const addCondition = _.curry((condition, permission)=>{
40
41
  const { conditions } = permission;
41
- const newConditions = Array.isArray(conditions) ? fp.uniq(conditions.concat(condition)) : [
42
+ const newConditions = Array.isArray(conditions) ? [
43
+ ...new Set(conditions.concat(condition))
44
+ ] : [
42
45
  condition
43
46
  ];
44
- return fp.set('conditions', newConditions, permission);
47
+ return {
48
+ ...permission,
49
+ conditions: newConditions
50
+ };
45
51
  });
46
52
  /**
47
53
  * Returns a new permission without the given condition
48
54
  * @param condition - The condition to remove
49
55
  * @param permission - The permission on which we want to remove the condition
50
- */ const removeCondition = fp.curry((condition, permission)=>{
51
- return fp.set('conditions', fp.remove(fp.eq(condition), permission.conditions), permission);
56
+ */ const removeCondition = _.curry((condition, permission)=>{
57
+ return {
58
+ ...permission,
59
+ conditions: _.reject(permission.conditions, (value)=>value === condition)
60
+ };
52
61
  });
53
62
  /**
54
63
  * Gets a property or a part of a property from a permission.
55
64
  * @param property - The property to get
56
65
  * @param permission - The permission on which we want to access the property
57
- */ const getProperty = fp.curry((property, permission)=>fp.get(`properties.${property}`, permission));
66
+ */ const getProperty = _.curry((property, permission)=>_.get(permission, `properties.${property}`));
58
67
  /**
59
68
  * Set a value for a given property on a new permission object
60
69
  * @param property - The name of the property
61
70
  * @param value - The value of the property
62
71
  * @param permission - The permission on which we want to set the property
63
72
  */ const setProperty = (property, value, permission)=>{
64
- return fp.set(`properties.${property}`, value, permission);
73
+ return utils.objects.set(permission, `properties.${property}`, value);
65
74
  };
66
75
  /**
67
76
  * Returns a new permission without the given property name set
68
77
  * @param property - The name of the property to delete
69
78
  * @param permission - The permission on which we want to remove the property
70
- */ const deleteProperty = (property, permission)=>fp.omit(`properties.${property}`, permission);
79
+ */ const deleteProperty = (property, permission)=>_.omit(permission, `properties.${property}`);
71
80
  /**
72
81
  * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
73
82
  * @param attributes
74
83
  */ const create = (attributes)=>{
75
- return fp.pipe(fp.pick(permissionFields), fp.merge(getDefaultPermission()))(attributes);
84
+ return _.merge({}, getDefaultPermission(), _.pick(attributes, permissionFields));
76
85
  };
77
86
  /**
78
87
  * Using the given condition provider, check and remove invalid condition from the permission's condition array.
79
88
  * @param provider - The condition provider used to do the checks
80
89
  * @param permission - The condition to sanitize
81
- */ const sanitizeConditions = fp.curry((provider, permission)=>{
82
- if (!fp.isArray(permission.conditions)) {
90
+ */ const sanitizeConditions = _.curry((provider, permission)=>{
91
+ if (!Array.isArray(permission.conditions)) {
83
92
  return permission;
84
93
  }
85
94
  return permission.conditions.filter((condition)=>!provider.has(condition)).reduce((perm, condition)=>removeCondition(condition, perm), permission);
86
95
  });
87
96
  function toPermission(payload) {
88
- if (fp.isArray(payload)) {
89
- return fp.map((value)=>create(value), payload);
97
+ if (Array.isArray(payload)) {
98
+ return Array.from(payload, (value)=>create(value));
90
99
  }
91
100
  return create(payload);
92
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import type { Utils } from '@strapi/types';\n\nimport { providerFactory } from '@strapi/utils';\nimport {\n pipe,\n set,\n pick,\n eq,\n omit,\n remove,\n get,\n uniq,\n isArray,\n map,\n curry,\n merge,\n} from 'lodash/fp';\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission =\n pick(sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? uniq(conditions.concat(condition))\n : [condition];\n\n return set('conditions', newConditions, permission);\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return set('conditions', remove(eq(condition), permission.conditions), permission);\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(`properties.${property}`, permission)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return set(`properties.${property}`, value, permission);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(`properties.${property}`, permission) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (isArray(payload)) {\n return map((value) => create(value), payload);\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","permission","newConditions","Array","isArray","uniq","concat","set","removeCondition","remove","eq","getProperty","property","get","setProperty","value","deleteProperty","omit","create","attributes","pipe","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","map"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import { objects, providerFactory } from '@strapi/utils';\nimport { pick, reject, merge, omit, get, curry } from 'lodash';\nimport type { Utils } from '@strapi/types';\n\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission = (permission) =>\n pick(permission, sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? [...new Set(conditions.concat(condition))]\n : [condition];\n\n return { ...permission, conditions: newConditions };\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return {\n ...permission,\n conditions: reject(permission.conditions, (value) => value === condition),\n };\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(permission, `properties.${property}`)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return objects.set(permission, `properties.${property}`, value);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(permission, `properties.${property}` as string) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return merge({}, getDefaultPermission(), pick(attributes, permissionFields)) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!Array.isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (Array.isArray(payload)) {\n return Array.from(payload, (value) => create(value));\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","permission","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","newConditions","Array","isArray","Set","concat","removeCondition","reject","value","getProperty","property","get","setProperty","objects","set","deleteProperty","omit","create","attributes","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","from"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { pick, curry, uniq, set, remove, eq, get, isArray, omit, map, pipe, merge } from 'lodash/fp';
1
+ import { objects } from '@strapi/utils';
2
+ import { curry, reject, get, omit, pick, merge } from 'lodash';
2
3
 
3
4
  const permissionFields = [
4
5
  'id',
@@ -18,7 +19,7 @@ const sanitizedPermissionFields = [
18
19
  'properties',
19
20
  'conditions'
20
21
  ];
21
- const sanitizePermissionFields = pick(sanitizedPermissionFields);
22
+ const sanitizePermissionFields = (permission)=>pick(permission, sanitizedPermissionFields);
22
23
  /**
23
24
  * Creates a permission with default values
24
25
  */ const getDefaultPermission = ()=>({
@@ -34,55 +35,63 @@ const sanitizePermissionFields = pick(sanitizedPermissionFields);
34
35
  * @return
35
36
  */ const addCondition = curry((condition, permission)=>{
36
37
  const { conditions } = permission;
37
- const newConditions = Array.isArray(conditions) ? uniq(conditions.concat(condition)) : [
38
+ const newConditions = Array.isArray(conditions) ? [
39
+ ...new Set(conditions.concat(condition))
40
+ ] : [
38
41
  condition
39
42
  ];
40
- return set('conditions', newConditions, permission);
43
+ return {
44
+ ...permission,
45
+ conditions: newConditions
46
+ };
41
47
  });
42
48
  /**
43
49
  * Returns a new permission without the given condition
44
50
  * @param condition - The condition to remove
45
51
  * @param permission - The permission on which we want to remove the condition
46
52
  */ const removeCondition = curry((condition, permission)=>{
47
- return set('conditions', remove(eq(condition), permission.conditions), permission);
53
+ return {
54
+ ...permission,
55
+ conditions: reject(permission.conditions, (value)=>value === condition)
56
+ };
48
57
  });
49
58
  /**
50
59
  * Gets a property or a part of a property from a permission.
51
60
  * @param property - The property to get
52
61
  * @param permission - The permission on which we want to access the property
53
- */ const getProperty = curry((property, permission)=>get(`properties.${property}`, permission));
62
+ */ const getProperty = curry((property, permission)=>get(permission, `properties.${property}`));
54
63
  /**
55
64
  * Set a value for a given property on a new permission object
56
65
  * @param property - The name of the property
57
66
  * @param value - The value of the property
58
67
  * @param permission - The permission on which we want to set the property
59
68
  */ const setProperty = (property, value, permission)=>{
60
- return set(`properties.${property}`, value, permission);
69
+ return objects.set(permission, `properties.${property}`, value);
61
70
  };
62
71
  /**
63
72
  * Returns a new permission without the given property name set
64
73
  * @param property - The name of the property to delete
65
74
  * @param permission - The permission on which we want to remove the property
66
- */ const deleteProperty = (property, permission)=>omit(`properties.${property}`, permission);
75
+ */ const deleteProperty = (property, permission)=>omit(permission, `properties.${property}`);
67
76
  /**
68
77
  * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
69
78
  * @param attributes
70
79
  */ const create = (attributes)=>{
71
- return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes);
80
+ return merge({}, getDefaultPermission(), pick(attributes, permissionFields));
72
81
  };
73
82
  /**
74
83
  * Using the given condition provider, check and remove invalid condition from the permission's condition array.
75
84
  * @param provider - The condition provider used to do the checks
76
85
  * @param permission - The condition to sanitize
77
86
  */ const sanitizeConditions = curry((provider, permission)=>{
78
- if (!isArray(permission.conditions)) {
87
+ if (!Array.isArray(permission.conditions)) {
79
88
  return permission;
80
89
  }
81
90
  return permission.conditions.filter((condition)=>!provider.has(condition)).reduce((perm, condition)=>removeCondition(condition, perm), permission);
82
91
  });
83
92
  function toPermission(payload) {
84
- if (isArray(payload)) {
85
- return map((value)=>create(value), payload);
93
+ if (Array.isArray(payload)) {
94
+ return Array.from(payload, (value)=>create(value));
86
95
  }
87
96
  return create(payload);
88
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import type { Utils } from '@strapi/types';\n\nimport { providerFactory } from '@strapi/utils';\nimport {\n pipe,\n set,\n pick,\n eq,\n omit,\n remove,\n get,\n uniq,\n isArray,\n map,\n curry,\n merge,\n} from 'lodash/fp';\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission =\n pick(sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? uniq(conditions.concat(condition))\n : [condition];\n\n return set('conditions', newConditions, permission);\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return set('conditions', remove(eq(condition), permission.conditions), permission);\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(`properties.${property}`, permission)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return set(`properties.${property}`, value, permission);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(`properties.${property}`, permission) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (isArray(payload)) {\n return map((value) => create(value), payload);\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","permission","newConditions","Array","isArray","uniq","concat","set","removeCondition","remove","eq","getProperty","property","get","setProperty","value","deleteProperty","omit","create","attributes","pipe","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","map"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import { objects, providerFactory } from '@strapi/utils';\nimport { pick, reject, merge, omit, get, curry } from 'lodash';\nimport type { Utils } from '@strapi/types';\n\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission = (permission) =>\n pick(permission, sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? [...new Set(conditions.concat(condition))]\n : [condition];\n\n return { ...permission, conditions: newConditions };\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return {\n ...permission,\n conditions: reject(permission.conditions, (value) => value === condition),\n };\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(permission, `properties.${property}`)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return objects.set(permission, `properties.${property}`, value);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(permission, `properties.${property}` as string) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return merge({}, getDefaultPermission(), pick(attributes, permissionFields)) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!Array.isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (Array.isArray(payload)) {\n return Array.from(payload, (value) => create(value));\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","permission","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","newConditions","Array","isArray","Set","concat","removeCondition","reject","value","getProperty","property","get","setProperty","objects","set","deleteProperty","omit","create","attributes","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","from"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var _ = require('lodash');
3
4
  var path = require('path');
4
5
  var utils = require('@strapi/utils');
5
- var fp = require('lodash/fp');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
@@ -16,16 +16,16 @@ var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
16
16
  enabled: true
17
17
  };
18
18
  }
19
- if (!fp.has('enabled', rateLimitConfig)) {
19
+ if (!_.has(rateLimitConfig, 'enabled')) {
20
20
  rateLimitConfig.enabled = true;
21
21
  }
22
22
  if (rateLimitConfig.enabled === true) {
23
23
  // TODO: TS - Do the dynamic import
24
24
  // eslint-disable-next-line @typescript-eslint/no-var-requires
25
25
  const rateLimit = require('koa2-ratelimit').RateLimit;
26
- const requestEmail = fp.get('request.body.email')(ctx);
27
- const userEmail = fp.isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
28
- const requestPath = fp.isString(ctx.request.path) ? fp.toLower(path__default.default.normalize(ctx.request.path)).replace(/\/$/, '') : 'invalidPath';
26
+ const requestEmail = _.get(ctx, 'request.body.email');
27
+ const userEmail = _.isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
28
+ const requestPath = _.isString(ctx.request.path) ? path__default.default.normalize(ctx.request.path).toLowerCase().replace(/\/$/, '') : 'invalidPath';
29
29
  const loadConfig = {
30
30
  interval: {
31
31
  min: 5
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.js","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\nimport { isString, has, toLower, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has('enabled', rateLimitConfig)) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? toLower(path.normalize(ctx.request.path)).replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","toLower","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAMA,MAAM,EAAEA,cAAc,EAAE,GAAGC,YAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,MAAAA,CAAI,SAAA,EAAWH,eAAAA,CAAAA,EAAkB;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,OAAI,oBAAA,CAAA,CAAsBH,GAAAA,CAAAA;AAC/C,YAAA,MAAMU,SAAAA,GAAYC,WAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;AAExE,YAAA,MAAMC,cAAcF,WAAAA,CAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,IACzCC,UAAAA,CAAQD,qBAAAA,CAAKE,SAAS,CAACjB,GAAAA,CAAIc,OAAO,CAACC,IAAI,GAAGG,OAAO,CAAC,OAAO,EAAA,CAAA,GACzD,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGb,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACU,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI7B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUoB,UAAU,CAACP,UAAAA,CAAAA,CAAYnB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"rateLimit.js","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import { get, isString, has } from 'lodash';\nimport type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\n\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has(rateLimitConfig, 'enabled')) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get(ctx, 'request.body.email');\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? path.normalize(ctx.request.path).toLowerCase().replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAOA,MAAM,EAAEA,cAAc,EAAE,GAAGC,YAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,KAAAA,CAAIH,eAAAA,EAAiB,SAAA,CAAA,EAAY;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,MAAIH,GAAAA,EAAK,oBAAA,CAAA;AAC9B,YAAA,MAAMU,SAAAA,GAAYC,UAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;YAExE,MAAMC,WAAAA,GAAcF,WAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,CAAA,GACzCA,sBAAKC,SAAS,CAAChB,IAAIc,OAAO,CAACC,IAAI,CAAA,CAAEH,WAAW,GAAGK,OAAO,CAAC,OAAO,EAAA,CAAA,GAC9D,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGZ,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACS,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI5B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUmB,UAAU,CAACP,UAAAA,CAAAA,CAAYlB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}