@strapi/admin 5.44.0 → 5.45.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 (334) hide show
  1. package/dist/admin/admin/src/components/Table.js.map +1 -1
  2. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  3. package/dist/admin/admin/src/constants.js +49 -0
  4. package/dist/admin/admin/src/constants.js.map +1 -1
  5. package/dist/admin/admin/src/constants.mjs +49 -0
  6. package/dist/admin/admin/src/constants.mjs.map +1 -1
  7. package/dist/admin/admin/src/core/apis/router.js +4 -4
  8. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  9. package/dist/admin/admin/src/core/apis/router.mjs +4 -4
  10. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  11. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  12. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.js +48 -11
  14. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -0
  15. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.mjs +49 -12
  16. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -0
  17. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
  18. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
  20. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  21. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js +1 -1
  22. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  23. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs +1 -1
  24. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  25. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +21 -1
  26. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  27. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +21 -1
  28. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  29. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +1 -1
  30. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  31. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
  32. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  33. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +33 -0
  34. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  35. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs +14 -1
  36. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs.map +1 -1
  37. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.js +1 -1
  38. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -0
  39. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.mjs +1 -1
  40. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Settings/constants.js +182 -151
  42. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Settings/constants.mjs +182 -151
  44. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js +17 -0
  46. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js.map +1 -0
  47. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs +15 -0
  48. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs.map +1 -0
  49. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +314 -0
  50. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -0
  51. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs +292 -0
  52. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs.map +1 -0
  53. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +70 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs +49 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +254 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs +231 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +42 -33
  62. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +43 -34
  64. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +3 -2
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +3 -2
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +23 -12
  70. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +23 -12
  72. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +124 -35
  74. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +126 -37
  76. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +24 -9
  78. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +24 -9
  80. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +5 -3
  82. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +5 -3
  84. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +171 -36
  86. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +172 -37
  88. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +5 -3
  90. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +5 -3
  92. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +59 -1
  94. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs +40 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js +89 -0
  98. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js.map +1 -0
  99. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs +86 -0
  100. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs.map +1 -0
  101. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js +35 -9
  102. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs +35 -10
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
  105. package/dist/admin/admin/src/render.js +6 -3
  106. package/dist/admin/admin/src/render.js.map +1 -1
  107. package/dist/admin/admin/src/render.mjs +6 -3
  108. package/dist/admin/admin/src/render.mjs.map +1 -1
  109. package/dist/admin/admin/src/router.js +4 -4
  110. package/dist/admin/admin/src/router.js.map +1 -1
  111. package/dist/admin/admin/src/router.mjs +1 -1
  112. package/dist/admin/admin/src/router.mjs.map +1 -1
  113. package/dist/admin/admin/src/services/apiTokens.js +85 -2
  114. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  115. package/dist/admin/admin/src/services/apiTokens.mjs +80 -3
  116. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  117. package/dist/admin/admin/src/translations/en.json.js +16 -1
  118. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  119. package/dist/admin/admin/src/translations/en.json.mjs +16 -1
  120. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  121. package/dist/admin/admin/src/utils/getFetchClient.js +4 -1
  122. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  123. package/dist/admin/admin/src/utils/getFetchClient.mjs +4 -1
  124. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  125. package/dist/admin/admin/tests/server.js +99 -21
  126. package/dist/admin/admin/tests/server.js.map +1 -1
  127. package/dist/admin/admin/tests/server.mjs +99 -21
  128. package/dist/admin/admin/tests/server.mjs.map +1 -1
  129. package/dist/admin/src/constants.d.ts +26 -0
  130. package/dist/admin/src/core/apis/router.d.ts +1 -1
  131. package/dist/admin/src/features/Tracking.d.ts +2 -1
  132. package/dist/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.d.ts +24 -0
  133. package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -1
  134. package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +17 -0
  135. package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
  136. package/dist/admin/src/pages/Settings/pages/AdminTokens/CreateView.d.ts +1 -0
  137. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.d.ts +2 -0
  138. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.d.ts +13 -0
  139. package/dist/admin/src/pages/Settings/pages/AdminTokens/ListView.d.ts +2 -0
  140. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +4 -3
  141. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +3 -1
  142. package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +1 -0
  143. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +5 -0
  144. package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +8 -7
  145. package/dist/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.d.ts +27 -0
  146. package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -2
  147. package/dist/admin/src/services/apiTokens.d.ts +5 -2
  148. package/dist/admin/src/types/permissions.d.ts +1 -1
  149. package/dist/server/server/src/bootstrap.js +37 -5
  150. package/dist/server/server/src/bootstrap.js.map +1 -1
  151. package/dist/server/server/src/bootstrap.mjs +37 -5
  152. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  153. package/dist/server/server/src/config/admin-actions.js +48 -0
  154. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  155. package/dist/server/server/src/config/admin-actions.mjs +48 -0
  156. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  157. package/dist/server/server/src/content-types/Permission.js +10 -1
  158. package/dist/server/server/src/content-types/Permission.js.map +1 -1
  159. package/dist/server/server/src/content-types/Permission.mjs +10 -1
  160. package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
  161. package/dist/server/server/src/content-types/User.js +8 -0
  162. package/dist/server/server/src/content-types/User.js.map +1 -1
  163. package/dist/server/server/src/content-types/User.mjs +8 -0
  164. package/dist/server/server/src/content-types/User.mjs.map +1 -1
  165. package/dist/server/server/src/content-types/api-token.js +27 -1
  166. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  167. package/dist/server/server/src/content-types/api-token.mjs +27 -1
  168. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  169. package/dist/server/server/src/controllers/admin-token.js +194 -0
  170. package/dist/server/server/src/controllers/admin-token.js.map +1 -0
  171. package/dist/server/server/src/controllers/admin-token.mjs +192 -0
  172. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -0
  173. package/dist/server/server/src/controllers/api-token.js +48 -47
  174. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  175. package/dist/server/server/src/controllers/api-token.mjs +48 -47
  176. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  177. package/dist/server/server/src/controllers/index.js +2 -0
  178. package/dist/server/server/src/controllers/index.js.map +1 -1
  179. package/dist/server/server/src/controllers/index.mjs +2 -0
  180. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  181. package/dist/server/server/src/domain/permission/index.js +2 -1
  182. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  183. package/dist/server/server/src/domain/permission/index.mjs +2 -1
  184. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  185. package/dist/server/server/src/policies/index.js +2 -0
  186. package/dist/server/server/src/policies/index.js.map +1 -1
  187. package/dist/server/server/src/policies/index.mjs +2 -0
  188. package/dist/server/server/src/policies/index.mjs.map +1 -1
  189. package/dist/server/server/src/policies/isAdminTokensEnabled.js +16 -0
  190. package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +1 -0
  191. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +14 -0
  192. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +1 -0
  193. package/dist/server/server/src/register.js +4 -2
  194. package/dist/server/server/src/register.js.map +1 -1
  195. package/dist/server/server/src/register.mjs +4 -2
  196. package/dist/server/server/src/register.mjs.map +1 -1
  197. package/dist/server/server/src/routes/admin-tokens.js +140 -0
  198. package/dist/server/server/src/routes/admin-tokens.js.map +1 -0
  199. package/dist/server/server/src/routes/admin-tokens.mjs +138 -0
  200. package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -0
  201. package/dist/server/server/src/routes/index.js +2 -0
  202. package/dist/server/server/src/routes/index.js.map +1 -1
  203. package/dist/server/server/src/routes/index.mjs +2 -0
  204. package/dist/server/server/src/routes/index.mjs.map +1 -1
  205. package/dist/server/server/src/services/api-token.js +805 -101
  206. package/dist/server/server/src/services/api-token.js.map +1 -1
  207. package/dist/server/server/src/services/api-token.mjs +800 -101
  208. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  209. package/dist/server/server/src/services/constants.js +2 -0
  210. package/dist/server/server/src/services/constants.js.map +1 -1
  211. package/dist/server/server/src/services/constants.mjs +2 -0
  212. package/dist/server/server/src/services/constants.mjs.map +1 -1
  213. package/dist/server/server/src/services/homepage.js +1 -1
  214. package/dist/server/server/src/services/homepage.js.map +1 -1
  215. package/dist/server/server/src/services/homepage.mjs +1 -1
  216. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  217. package/dist/server/server/src/services/index.js +2 -1
  218. package/dist/server/server/src/services/index.js.map +1 -1
  219. package/dist/server/server/src/services/index.mjs +3 -2
  220. package/dist/server/server/src/services/index.mjs.map +1 -1
  221. package/dist/server/server/src/services/permission/engine.js +6 -0
  222. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  223. package/dist/server/server/src/services/permission/engine.mjs +6 -0
  224. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  225. package/dist/server/server/src/services/permission/queries.js +11 -2
  226. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  227. package/dist/server/server/src/services/permission/queries.mjs +12 -3
  228. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  229. package/dist/server/server/src/services/role.js +3 -0
  230. package/dist/server/server/src/services/role.js.map +1 -1
  231. package/dist/server/server/src/services/role.mjs +3 -0
  232. package/dist/server/server/src/services/role.mjs.map +1 -1
  233. package/dist/server/server/src/strategies/admin-token.js +110 -0
  234. package/dist/server/server/src/strategies/admin-token.js.map +1 -0
  235. package/dist/server/server/src/strategies/admin-token.mjs +104 -0
  236. package/dist/server/server/src/strategies/admin-token.mjs.map +1 -0
  237. package/dist/server/server/src/strategies/api-token-utils.js +56 -0
  238. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -0
  239. package/dist/server/server/src/strategies/api-token-utils.mjs +52 -0
  240. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -0
  241. package/dist/server/server/src/strategies/content-api-token.js +104 -0
  242. package/dist/server/server/src/strategies/content-api-token.js.map +1 -0
  243. package/dist/server/server/src/strategies/content-api-token.mjs +98 -0
  244. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -0
  245. package/dist/server/server/src/validation/admin-tokens.js +28 -0
  246. package/dist/server/server/src/validation/admin-tokens.js.map +1 -0
  247. package/dist/server/server/src/validation/admin-tokens.mjs +25 -0
  248. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -0
  249. package/dist/server/server/src/validation/api-tokens.js +5 -2
  250. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  251. package/dist/server/server/src/validation/api-tokens.mjs +5 -2
  252. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  253. package/dist/server/server/src/validation/project-settings.js +15 -16
  254. package/dist/server/server/src/validation/project-settings.js.map +1 -1
  255. package/dist/server/server/src/validation/project-settings.mjs +4 -5
  256. package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
  257. package/dist/server/src/bootstrap.d.ts.map +1 -1
  258. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  259. package/dist/server/src/content-types/Permission.d.ts +9 -0
  260. package/dist/server/src/content-types/Permission.d.ts.map +1 -1
  261. package/dist/server/src/content-types/User.d.ts +8 -0
  262. package/dist/server/src/content-types/User.d.ts.map +1 -1
  263. package/dist/server/src/content-types/api-token.d.ts +23 -0
  264. package/dist/server/src/content-types/api-token.d.ts.map +1 -1
  265. package/dist/server/src/content-types/index.d.ts +40 -0
  266. package/dist/server/src/content-types/index.d.ts.map +1 -1
  267. package/dist/server/src/controllers/admin-token.d.ts +12 -0
  268. package/dist/server/src/controllers/admin-token.d.ts.map +1 -0
  269. package/dist/server/src/controllers/api-token.d.ts +0 -1
  270. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  271. package/dist/server/src/controllers/index.d.ts +9 -1
  272. package/dist/server/src/controllers/index.d.ts.map +1 -1
  273. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  274. package/dist/server/src/index.d.ts +56 -2
  275. package/dist/server/src/index.d.ts.map +1 -1
  276. package/dist/server/src/policies/index.d.ts +5 -0
  277. package/dist/server/src/policies/index.d.ts.map +1 -1
  278. package/dist/server/src/policies/isAdminTokensEnabled.d.ts +7 -0
  279. package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +1 -0
  280. package/dist/server/src/register.d.ts.map +1 -1
  281. package/dist/server/src/routes/admin-tokens.d.ts +15 -0
  282. package/dist/server/src/routes/admin-tokens.d.ts.map +1 -0
  283. package/dist/server/src/routes/index.d.ts.map +1 -1
  284. package/dist/server/src/services/api-token.d.ts +136 -12
  285. package/dist/server/src/services/api-token.d.ts.map +1 -1
  286. package/dist/server/src/services/constants.d.ts +13 -11
  287. package/dist/server/src/services/constants.d.ts.map +1 -1
  288. package/dist/server/src/services/index.d.ts +2 -2
  289. package/dist/server/src/services/index.d.ts.map +1 -1
  290. package/dist/server/src/services/permission/engine.d.ts +5 -0
  291. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  292. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  293. package/dist/server/src/services/permission.d.ts +1 -0
  294. package/dist/server/src/services/permission.d.ts.map +1 -1
  295. package/dist/server/src/services/role.d.ts.map +1 -1
  296. package/dist/server/src/strategies/admin-token.d.ts +51 -0
  297. package/dist/server/src/strategies/admin-token.d.ts.map +1 -0
  298. package/dist/server/src/strategies/api-token-utils.d.ts +13 -0
  299. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -0
  300. package/dist/server/src/strategies/{api-token.d.ts → content-api-token.d.ts} +10 -11
  301. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -0
  302. package/dist/server/src/strategies/index.d.ts +2 -1
  303. package/dist/server/src/strategies/index.d.ts.map +1 -1
  304. package/dist/server/src/validation/admin-tokens.d.ts +75 -0
  305. package/dist/server/src/validation/admin-tokens.d.ts.map +1 -0
  306. package/dist/server/src/validation/api-tokens.d.ts +4 -2
  307. package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
  308. package/dist/server/src/validation/project-settings.d.ts +10 -10
  309. package/dist/server/src/validation/project-settings.d.ts.map +1 -1
  310. package/dist/shared/contracts/admin-token.d.ts +122 -0
  311. package/dist/shared/contracts/admin-token.d.ts.map +1 -0
  312. package/dist/shared/contracts/api-token.d.ts +6 -95
  313. package/dist/shared/contracts/api-token.d.ts.map +1 -1
  314. package/dist/shared/contracts/content-api-token.d.ts +97 -0
  315. package/dist/shared/contracts/content-api-token.d.ts.map +1 -0
  316. package/dist/shared/contracts/shared.d.ts +1 -0
  317. package/dist/shared/contracts/shared.d.ts.map +1 -1
  318. package/package.json +7 -7
  319. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +0 -1
  320. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +0 -1
  321. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js +0 -37
  322. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +0 -1
  323. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs +0 -16
  324. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +0 -1
  325. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +0 -1
  326. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +0 -1
  327. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +0 -20
  328. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +0 -17
  329. package/dist/server/server/src/strategies/api-token.js +0 -144
  330. package/dist/server/server/src/strategies/api-token.js.map +0 -1
  331. package/dist/server/server/src/strategies/api-token.mjs +0 -138
  332. package/dist/server/server/src/strategies/api-token.mjs.map +0 -1
  333. package/dist/server/src/strategies/api-token.d.ts.map +0 -1
  334. /package/dist/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPermissionChecker.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.ts"],"sourcesContent":["/**\n * Utility functions for creating permission checkers used in bulk update operations.\n * These functions encapsulate the logic for validating whether a user has permission\n * to modify specific fields/actions during role and app token editing.\n */\n\nimport type { Permission as AuthPermission } from '../../../../../features/Auth';\n\n/**\n * Creates a permission checker function for field-level permission validation.\n * Used in bulk update operations to filter which leaves can be modified.\n *\n * @param actionId - The action to check (e.g., 'plugin::content-manager.explorer.create')\n * @param subject - The subject to check (e.g., 'api::article.article'), or null for plugins/settings\n * @param userPermissions - Array of user permissions, or undefined for Role editing mode\n * @returns A checker function that validates if a given path should be allowed,\n * or undefined if in Role editing mode (no restrictions)\n */\nexport const createFieldPermissionChecker = (\n actionId: string,\n subject: string | null,\n userPermissions: AuthPermission[] | undefined\n): ((path: string[]) => boolean) | undefined => {\n if (userPermissions === undefined) {\n return undefined;\n }\n\n return (path: string[]) => {\n const matchingPerm = userPermissions.find(\n (perm) => perm.action === actionId && perm.subject === subject\n );\n\n if (matchingPerm === undefined) {\n return false;\n }\n\n const fieldsIndex = path.indexOf('fields');\n\n if (fieldsIndex === -1 || fieldsIndex >= path.length - 1) {\n return true;\n }\n\n const fieldPath = path.slice(fieldsIndex + 1).join('.');\n const fields = matchingPerm.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) && fields.length === 0) {\n return false;\n }\n\n if (Array.isArray(fields)) {\n return fields.some(\n (allowedField) => fieldPath === allowedField || fieldPath.startsWith(`${allowedField}.`)\n );\n }\n\n return false;\n };\n};\n\n/**\n * Creates a permission checker for content type operations where the action ID\n * may need to be extracted from the path itself (for content type name checkboxes).\n *\n * @param subject - The subject to check\n * @param actionIdFromContext - The action ID from parent context (may be undefined)\n * @param userPermissions - Array of user permissions, or undefined for Role editing mode\n * @returns A checker function or undefined if in Role editing mode\n */\nexport const createDynamicActionPermissionChecker = (\n subject: string | null | undefined,\n actionIdFromContext: string | undefined,\n userPermissions: AuthPermission[] | undefined\n): ((path: string[]) => boolean) | undefined => {\n if (userPermissions === undefined || subject === undefined) {\n return undefined;\n }\n\n return (path: string[]) => {\n let currentActionId = actionIdFromContext;\n let adjustedPath = path;\n\n if (currentActionId === undefined && path.length > 0) {\n if (path[0].includes('plugin::') || path[0].includes('admin::')) {\n currentActionId = path[0];\n adjustedPath = path.slice(1);\n }\n }\n\n if (currentActionId === undefined) {\n return false;\n }\n\n const matchingPerm = userPermissions.find(\n (perm) => perm.action === currentActionId && perm.subject === subject\n );\n\n if (matchingPerm === undefined) {\n return false;\n }\n\n const fieldsIndex = adjustedPath.indexOf('fields');\n\n if (fieldsIndex !== -1 && fieldsIndex < adjustedPath.length - 1) {\n const fieldPath = adjustedPath.slice(fieldsIndex + 1).join('.');\n const fields = matchingPerm.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) && fields.length === 0) {\n return false;\n }\n\n return (\n Array.isArray(fields) &&\n fields.some((f) => fieldPath === f || fieldPath.startsWith(`${f}.`))\n );\n }\n\n return true;\n };\n};\n"],"names":["createFieldPermissionChecker","actionId","subject","userPermissions","undefined","path","matchingPerm","find","perm","action","fieldsIndex","indexOf","length","fieldPath","slice","join","fields","properties","Array","isArray","some","allowedField","startsWith","createDynamicActionPermissionChecker","actionIdFromContext","currentActionId","adjustedPath","includes","f"],"mappings":"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"}
@@ -8,24 +8,50 @@ var objects = require('../../../../../utils/objects.js');
8
8
  * of an object.
9
9
  * This utility is very helpful when dealing with parent<>children checkboxes
10
10
  */ const updateValues = (obj, valueToSet, isFieldUpdate = false)=>{
11
- return Object.keys(obj).reduce((acc, current)=>{
12
- const currentValue = obj[current];
13
- if (current === 'conditions' && !isFieldUpdate) {
14
- // @ts-expect-error – TODO: type better
15
- acc[current] = currentValue;
11
+ return Object.entries(obj).reduce((acc, [key, value])=>{
12
+ if (key === 'conditions' && !isFieldUpdate) {
13
+ acc[key] = value;
16
14
  return acc;
17
15
  }
18
- if (objects.isObject(currentValue)) {
16
+ if (objects.isObject(value)) {
19
17
  return {
20
18
  ...acc,
21
- [current]: updateValues(currentValue, valueToSet, current === 'fields')
19
+ [key]: updateValues(value, valueToSet, key === 'fields')
22
20
  };
23
21
  }
24
- // @ts-expect-error – TODO: type better
25
- acc[current] = valueToSet;
22
+ acc[key] = valueToSet;
23
+ return acc;
24
+ }, {});
25
+ };
26
+ /**
27
+ * Permission-aware version of updateValues.
28
+ * When permissionChecker is undefined (Role editing), behaves like updateValues.
29
+ * When permissionChecker is provided (Admin Token editing), filters leaf updates based on permissions.
30
+ */ const updateValuesWithPermissions = (obj, valueToSet, permissionChecker, currentPath = [], isFieldUpdate = false)=>{
31
+ if (permissionChecker === undefined) {
32
+ return updateValues(obj, valueToSet, isFieldUpdate);
33
+ }
34
+ return Object.entries(obj).reduce((acc, [key, value])=>{
35
+ const newPath = [
36
+ ...currentPath,
37
+ key
38
+ ];
39
+ if (key === 'conditions' && !isFieldUpdate) {
40
+ acc[key] = value;
41
+ return acc;
42
+ }
43
+ if (objects.isObject(value)) {
44
+ return {
45
+ ...acc,
46
+ [key]: updateValuesWithPermissions(value, valueToSet, permissionChecker, newPath, key === 'fields')
47
+ };
48
+ }
49
+ const hasPermission = permissionChecker(newPath);
50
+ acc[key] = hasPermission ? valueToSet : value;
26
51
  return acc;
27
52
  }, {});
28
53
  };
29
54
 
30
55
  exports.updateValues = updateValues;
56
+ exports.updateValuesWithPermissions = updateValuesWithPermissions;
31
57
  //# sourceMappingURL=updateValues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateValues.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/updateValues.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\n/**\n * Sets all the none object values of an object to the given one\n * It preserves the shape of the object, it only modifies the leafs\n * of an object.\n * This utility is very helpful when dealing with parent<>children checkboxes\n */\nconst updateValues = (obj: object, valueToSet: boolean, isFieldUpdate = false): object => {\n return Object.keys(obj).reduce((acc, current) => {\n const currentValue = obj[current as keyof object];\n\n if (current === 'conditions' && !isFieldUpdate) {\n // @ts-expect-error TODO: type better\n acc[current] = currentValue;\n\n return acc;\n }\n\n if (isObject(currentValue)) {\n return { ...acc, [current]: updateValues(currentValue, valueToSet, current === 'fields') };\n }\n\n // @ts-expect-error TODO: type better\n acc[current] = valueToSet;\n\n return acc;\n }, {});\n};\n\nexport { updateValues };\n"],"names":["updateValues","obj","valueToSet","isFieldUpdate","Object","keys","reduce","acc","current","currentValue","isObject"],"mappings":";;;;AAEA;;;;;AAKC,UACKA,YAAAA,GAAe,CAACC,GAAAA,EAAaC,UAAAA,EAAqBC,gBAAgB,KAAK,GAAA;AAC3E,IAAA,OAAOC,OAAOC,IAAI,CAACJ,KAAKK,MAAM,CAAC,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;QACnC,MAAMC,YAAAA,GAAeR,GAAG,CAACO,OAAAA,CAAwB;QAEjD,IAAIA,OAAAA,KAAY,YAAA,IAAgB,CAACL,aAAAA,EAAe;;YAE9CI,GAAG,CAACC,QAAQ,GAAGC,YAAAA;YAEf,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,iBAASD,YAAAA,CAAAA,EAAe;YAC1B,OAAO;AAAE,gBAAA,GAAGF,GAAG;AAAE,gBAAA,CAACC,OAAAA,GAAUR,YAAAA,CAAaS,YAAAA,EAAcP,YAAYM,OAAAA,KAAY,QAAA;AAAU,aAAA;AAC3F,QAAA;;QAGAD,GAAG,CAACC,QAAQ,GAAGN,UAAAA;QAEf,OAAOK,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"updateValues.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/updateValues.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\n/**\n * Sets all the none object values of an object to the given one\n * It preserves the shape of the object, it only modifies the leafs\n * of an object.\n * This utility is very helpful when dealing with parent<>children checkboxes\n */\nconst updateValues = (\n obj: object,\n valueToSet: boolean,\n isFieldUpdate = false\n): Record<string, unknown> => {\n return Object.entries(obj).reduce<Record<string, unknown>>((acc, [key, value]) => {\n if (key === 'conditions' && !isFieldUpdate) {\n acc[key] = value;\n\n return acc;\n }\n\n if (isObject(value)) {\n return { ...acc, [key]: updateValues(value, valueToSet, key === 'fields') };\n }\n\n acc[key] = valueToSet;\n\n return acc;\n }, {});\n};\n\n/**\n * Permission-aware version of updateValues.\n * When permissionChecker is undefined (Role editing), behaves like updateValues.\n * When permissionChecker is provided (Admin Token editing), filters leaf updates based on permissions.\n */\nconst updateValuesWithPermissions = (\n obj: object,\n valueToSet: boolean,\n permissionChecker?: (path: string[]) => boolean,\n currentPath: string[] = [],\n isFieldUpdate = false\n): Record<string, unknown> => {\n if (permissionChecker === undefined) {\n return updateValues(obj, valueToSet, isFieldUpdate);\n }\n\n return Object.entries(obj).reduce<Record<string, unknown>>((acc, [key, value]) => {\n const newPath = [...currentPath, key];\n\n if (key === 'conditions' && !isFieldUpdate) {\n acc[key] = value;\n return acc;\n }\n\n if (isObject(value)) {\n return {\n ...acc,\n [key]: updateValuesWithPermissions(\n value,\n valueToSet,\n permissionChecker,\n newPath,\n key === 'fields'\n ),\n };\n }\n\n const hasPermission = permissionChecker(newPath);\n acc[key] = hasPermission ? valueToSet : value;\n\n return acc;\n }, {});\n};\n\nexport { updateValues, updateValuesWithPermissions };\n"],"names":["updateValues","obj","valueToSet","isFieldUpdate","Object","entries","reduce","acc","key","value","isObject","updateValuesWithPermissions","permissionChecker","currentPath","undefined","newPath","hasPermission"],"mappings":";;;;AAEA;;;;;AAKC,UACKA,YAAAA,GAAe,CACnBC,GAAAA,EACAC,UAAAA,EACAC,gBAAgB,KAAK,GAAA;IAErB,OAAOC,MAAAA,CAAOC,OAAO,CAACJ,GAAAA,CAAAA,CAAKK,MAAM,CAA0B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,KAAAA,CAAM,GAAA;QAC3E,IAAID,GAAAA,KAAQ,YAAA,IAAgB,CAACL,aAAAA,EAAe;YAC1CI,GAAG,CAACC,IAAI,GAAGC,KAAAA;YAEX,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,iBAASD,KAAAA,CAAAA,EAAQ;YACnB,OAAO;AAAE,gBAAA,GAAGF,GAAG;AAAE,gBAAA,CAACC,GAAAA,GAAMR,YAAAA,CAAaS,KAAAA,EAAOP,YAAYM,GAAAA,KAAQ,QAAA;AAAU,aAAA;AAC5E,QAAA;QAEAD,GAAG,CAACC,IAAI,GAAGN,UAAAA;QAEX,OAAOK,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA;;;;IAKA,MAAMI,2BAAAA,GAA8B,CAClCV,GAAAA,EACAC,UAAAA,EACAU,mBACAC,WAAAA,GAAwB,EAAE,EAC1BV,aAAAA,GAAgB,KAAK,GAAA;AAErB,IAAA,IAAIS,sBAAsBE,SAAAA,EAAW;QACnC,OAAOd,YAAAA,CAAaC,KAAKC,UAAAA,EAAYC,aAAAA,CAAAA;AACvC,IAAA;IAEA,OAAOC,MAAAA,CAAOC,OAAO,CAACJ,GAAAA,CAAAA,CAAKK,MAAM,CAA0B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,KAAAA,CAAM,GAAA;AAC3E,QAAA,MAAMM,OAAAA,GAAU;AAAIF,YAAAA,GAAAA,WAAAA;AAAaL,YAAAA;AAAI,SAAA;QAErC,IAAIA,GAAAA,KAAQ,YAAA,IAAgB,CAACL,aAAAA,EAAe;YAC1CI,GAAG,CAACC,IAAI,GAAGC,KAAAA;YACX,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,iBAASD,KAAAA,CAAAA,EAAQ;YACnB,OAAO;AACL,gBAAA,GAAGF,GAAG;AACN,gBAAA,CAACC,MAAMG,2BAAAA,CACLF,OACAP,UAAAA,EACAU,iBAAAA,EACAG,SACAP,GAAAA,KAAQ,QAAA;AAEZ,aAAA;AACF,QAAA;AAEA,QAAA,MAAMQ,gBAAgBJ,iBAAAA,CAAkBG,OAAAA,CAAAA;AACxCR,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGQ,aAAAA,GAAgBd,UAAAA,GAAaO,KAAAA;QAExC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;;"}
@@ -6,24 +6,49 @@ import { isObject } from '../../../../../utils/objects.mjs';
6
6
  * of an object.
7
7
  * This utility is very helpful when dealing with parent<>children checkboxes
8
8
  */ const updateValues = (obj, valueToSet, isFieldUpdate = false)=>{
9
- return Object.keys(obj).reduce((acc, current)=>{
10
- const currentValue = obj[current];
11
- if (current === 'conditions' && !isFieldUpdate) {
12
- // @ts-expect-error – TODO: type better
13
- acc[current] = currentValue;
9
+ return Object.entries(obj).reduce((acc, [key, value])=>{
10
+ if (key === 'conditions' && !isFieldUpdate) {
11
+ acc[key] = value;
14
12
  return acc;
15
13
  }
16
- if (isObject(currentValue)) {
14
+ if (isObject(value)) {
17
15
  return {
18
16
  ...acc,
19
- [current]: updateValues(currentValue, valueToSet, current === 'fields')
17
+ [key]: updateValues(value, valueToSet, key === 'fields')
20
18
  };
21
19
  }
22
- // @ts-expect-error – TODO: type better
23
- acc[current] = valueToSet;
20
+ acc[key] = valueToSet;
21
+ return acc;
22
+ }, {});
23
+ };
24
+ /**
25
+ * Permission-aware version of updateValues.
26
+ * When permissionChecker is undefined (Role editing), behaves like updateValues.
27
+ * When permissionChecker is provided (Admin Token editing), filters leaf updates based on permissions.
28
+ */ const updateValuesWithPermissions = (obj, valueToSet, permissionChecker, currentPath = [], isFieldUpdate = false)=>{
29
+ if (permissionChecker === undefined) {
30
+ return updateValues(obj, valueToSet, isFieldUpdate);
31
+ }
32
+ return Object.entries(obj).reduce((acc, [key, value])=>{
33
+ const newPath = [
34
+ ...currentPath,
35
+ key
36
+ ];
37
+ if (key === 'conditions' && !isFieldUpdate) {
38
+ acc[key] = value;
39
+ return acc;
40
+ }
41
+ if (isObject(value)) {
42
+ return {
43
+ ...acc,
44
+ [key]: updateValuesWithPermissions(value, valueToSet, permissionChecker, newPath, key === 'fields')
45
+ };
46
+ }
47
+ const hasPermission = permissionChecker(newPath);
48
+ acc[key] = hasPermission ? valueToSet : value;
24
49
  return acc;
25
50
  }, {});
26
51
  };
27
52
 
28
- export { updateValues };
53
+ export { updateValues, updateValuesWithPermissions };
29
54
  //# sourceMappingURL=updateValues.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateValues.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/updateValues.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\n/**\n * Sets all the none object values of an object to the given one\n * It preserves the shape of the object, it only modifies the leafs\n * of an object.\n * This utility is very helpful when dealing with parent<>children checkboxes\n */\nconst updateValues = (obj: object, valueToSet: boolean, isFieldUpdate = false): object => {\n return Object.keys(obj).reduce((acc, current) => {\n const currentValue = obj[current as keyof object];\n\n if (current === 'conditions' && !isFieldUpdate) {\n // @ts-expect-error TODO: type better\n acc[current] = currentValue;\n\n return acc;\n }\n\n if (isObject(currentValue)) {\n return { ...acc, [current]: updateValues(currentValue, valueToSet, current === 'fields') };\n }\n\n // @ts-expect-error TODO: type better\n acc[current] = valueToSet;\n\n return acc;\n }, {});\n};\n\nexport { updateValues };\n"],"names":["updateValues","obj","valueToSet","isFieldUpdate","Object","keys","reduce","acc","current","currentValue","isObject"],"mappings":";;AAEA;;;;;AAKC,UACKA,YAAAA,GAAe,CAACC,GAAAA,EAAaC,UAAAA,EAAqBC,gBAAgB,KAAK,GAAA;AAC3E,IAAA,OAAOC,OAAOC,IAAI,CAACJ,KAAKK,MAAM,CAAC,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;QACnC,MAAMC,YAAAA,GAAeR,GAAG,CAACO,OAAAA,CAAwB;QAEjD,IAAIA,OAAAA,KAAY,YAAA,IAAgB,CAACL,aAAAA,EAAe;;YAE9CI,GAAG,CAACC,QAAQ,GAAGC,YAAAA;YAEf,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,SAASD,YAAAA,CAAAA,EAAe;YAC1B,OAAO;AAAE,gBAAA,GAAGF,GAAG;AAAE,gBAAA,CAACC,OAAAA,GAAUR,YAAAA,CAAaS,YAAAA,EAAcP,YAAYM,OAAAA,KAAY,QAAA;AAAU,aAAA;AAC3F,QAAA;;QAGAD,GAAG,CAACC,QAAQ,GAAGN,UAAAA;QAEf,OAAOK,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"updateValues.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/updateValues.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\n/**\n * Sets all the none object values of an object to the given one\n * It preserves the shape of the object, it only modifies the leafs\n * of an object.\n * This utility is very helpful when dealing with parent<>children checkboxes\n */\nconst updateValues = (\n obj: object,\n valueToSet: boolean,\n isFieldUpdate = false\n): Record<string, unknown> => {\n return Object.entries(obj).reduce<Record<string, unknown>>((acc, [key, value]) => {\n if (key === 'conditions' && !isFieldUpdate) {\n acc[key] = value;\n\n return acc;\n }\n\n if (isObject(value)) {\n return { ...acc, [key]: updateValues(value, valueToSet, key === 'fields') };\n }\n\n acc[key] = valueToSet;\n\n return acc;\n }, {});\n};\n\n/**\n * Permission-aware version of updateValues.\n * When permissionChecker is undefined (Role editing), behaves like updateValues.\n * When permissionChecker is provided (Admin Token editing), filters leaf updates based on permissions.\n */\nconst updateValuesWithPermissions = (\n obj: object,\n valueToSet: boolean,\n permissionChecker?: (path: string[]) => boolean,\n currentPath: string[] = [],\n isFieldUpdate = false\n): Record<string, unknown> => {\n if (permissionChecker === undefined) {\n return updateValues(obj, valueToSet, isFieldUpdate);\n }\n\n return Object.entries(obj).reduce<Record<string, unknown>>((acc, [key, value]) => {\n const newPath = [...currentPath, key];\n\n if (key === 'conditions' && !isFieldUpdate) {\n acc[key] = value;\n return acc;\n }\n\n if (isObject(value)) {\n return {\n ...acc,\n [key]: updateValuesWithPermissions(\n value,\n valueToSet,\n permissionChecker,\n newPath,\n key === 'fields'\n ),\n };\n }\n\n const hasPermission = permissionChecker(newPath);\n acc[key] = hasPermission ? valueToSet : value;\n\n return acc;\n }, {});\n};\n\nexport { updateValues, updateValuesWithPermissions };\n"],"names":["updateValues","obj","valueToSet","isFieldUpdate","Object","entries","reduce","acc","key","value","isObject","updateValuesWithPermissions","permissionChecker","currentPath","undefined","newPath","hasPermission"],"mappings":";;AAEA;;;;;AAKC,UACKA,YAAAA,GAAe,CACnBC,GAAAA,EACAC,UAAAA,EACAC,gBAAgB,KAAK,GAAA;IAErB,OAAOC,MAAAA,CAAOC,OAAO,CAACJ,GAAAA,CAAAA,CAAKK,MAAM,CAA0B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,KAAAA,CAAM,GAAA;QAC3E,IAAID,GAAAA,KAAQ,YAAA,IAAgB,CAACL,aAAAA,EAAe;YAC1CI,GAAG,CAACC,IAAI,GAAGC,KAAAA;YAEX,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,SAASD,KAAAA,CAAAA,EAAQ;YACnB,OAAO;AAAE,gBAAA,GAAGF,GAAG;AAAE,gBAAA,CAACC,GAAAA,GAAMR,YAAAA,CAAaS,KAAAA,EAAOP,YAAYM,GAAAA,KAAQ,QAAA;AAAU,aAAA;AAC5E,QAAA;QAEAD,GAAG,CAACC,IAAI,GAAGN,UAAAA;QAEX,OAAOK,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA;;;;IAKA,MAAMI,2BAAAA,GAA8B,CAClCV,GAAAA,EACAC,UAAAA,EACAU,mBACAC,WAAAA,GAAwB,EAAE,EAC1BV,aAAAA,GAAgB,KAAK,GAAA;AAErB,IAAA,IAAIS,sBAAsBE,SAAAA,EAAW;QACnC,OAAOd,YAAAA,CAAaC,KAAKC,UAAAA,EAAYC,aAAAA,CAAAA;AACvC,IAAA;IAEA,OAAOC,MAAAA,CAAOC,OAAO,CAACJ,GAAAA,CAAAA,CAAKK,MAAM,CAA0B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKC,KAAAA,CAAM,GAAA;AAC3E,QAAA,MAAMM,OAAAA,GAAU;AAAIF,YAAAA,GAAAA,WAAAA;AAAaL,YAAAA;AAAI,SAAA;QAErC,IAAIA,GAAAA,KAAQ,YAAA,IAAgB,CAACL,aAAAA,EAAe;YAC1CI,GAAG,CAACC,IAAI,GAAGC,KAAAA;YACX,OAAOF,GAAAA;AACT,QAAA;AAEA,QAAA,IAAIG,SAASD,KAAAA,CAAAA,EAAQ;YACnB,OAAO;AACL,gBAAA,GAAGF,GAAG;AACN,gBAAA,CAACC,MAAMG,2BAAAA,CACLF,OACAP,UAAAA,EACAU,iBAAAA,EACAG,SACAP,GAAAA,KAAQ,QAAA;AAEZ,aAAA;AACF,QAAA;AAEA,QAAA,MAAMQ,gBAAgBJ,iBAAAA,CAAkBG,OAAAA,CAAAA;AACxCR,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGQ,aAAAA,GAAgBd,UAAAA,GAAaO,KAAAA;QAExC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;"}
@@ -24,7 +24,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
24
24
  return features?.future?.[name] === true;
25
25
  }
26
26
  },
27
- // @ts-expect-error – there's pollution from the global scope of Node.
27
+ // eslint-disable-next-line
28
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision. Cannot use @ts-expect-error because of build:code and build:types context collision.
28
29
  features: {
29
30
  SSO: 'sso',
30
31
  AUDIT_LOGS: 'audit-logs',
@@ -39,7 +40,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
39
40
  nps: false,
40
41
  promoteEE: true
41
42
  },
42
- // @ts-expect-error – there's pollution from the global scope of Node.
43
+ // eslint-disable-next-line
44
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.
43
45
  ai: {
44
46
  enabled: true
45
47
  }
@@ -55,7 +57,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
55
57
  isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
56
58
  };
57
59
  window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
58
- // @ts-expect-error – there's pollution from the global scope of Node.
60
+ // eslint-disable-next-line
61
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.
59
62
  window.strapi.ai = ai;
60
63
  } catch (err) {
61
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision. Cannot use @ts-expect-error because of build:code and build:types context collision.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName: string | undefined) =>\n features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
@@ -22,7 +22,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
22
22
  return features?.future?.[name] === true;
23
23
  }
24
24
  },
25
- // @ts-expect-error – there's pollution from the global scope of Node.
25
+ // eslint-disable-next-line
26
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision. Cannot use @ts-expect-error because of build:code and build:types context collision.
26
27
  features: {
27
28
  SSO: 'sso',
28
29
  AUDIT_LOGS: 'audit-logs',
@@ -37,7 +38,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
37
38
  nps: false,
38
39
  promoteEE: true
39
40
  },
40
- // @ts-expect-error – there's pollution from the global scope of Node.
41
+ // eslint-disable-next-line
42
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.
41
43
  ai: {
42
44
  enabled: true
43
45
  }
@@ -53,7 +55,8 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
53
55
  isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
54
56
  };
55
57
  window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
56
- // @ts-expect-error – there's pollution from the global scope of Node.
58
+ // eslint-disable-next-line
59
+ // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.
57
60
  window.strapi.ai = ai;
58
61
  } catch (err) {
59
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
1
+ {"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision. Cannot use @ts-expect-error because of build:code and build:types context collision.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName: string | undefined) =>\n features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // eslint-disable-next-line\n // @ts-ignore – there's pollution from the global scope of Node. Cannot use @ts-expect-error because of build:code and build:types context collision.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var constants$2 = require('../../ee/admin/src/constants.js');
5
- var constants$1 = require('../../ee/admin/src/pages/SettingsPage/constants.js');
5
+ var constants = require('../../ee/admin/src/pages/SettingsPage/constants.js');
6
6
  var AuthPage = require('./pages/Auth/AuthPage.js');
7
- var constants = require('./pages/Settings/constants.js');
7
+ var constants$1 = require('./pages/Settings/constants.js');
8
8
 
9
9
  /**
10
10
  * These are routes we don't want to be able to be changed by plugins.
@@ -73,8 +73,8 @@ const getInitialRoutes = ()=>[
73
73
  // }))
74
74
  // ),
75
75
  ...[
76
- ...constants$1.getEERoutes(),
77
- ...constants.ROUTES_CE
76
+ ...constants.getEERoutes(),
77
+ ...constants$1.ROUTES_CE()
78
78
  ].filter((route, index, refArray)=>refArray.findIndex((obj)=>obj.path === route.path) === index)
79
79
  ]
80
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,uBAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,cAAA,CAACC,iBAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,oDAAO,0BAAA,KAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,MAAM,EAAE,GAAG,MAAM,oDAAO,4BAAA,KAAA;gBAEhC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEb,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEa,mBAAmB,EAAE,GAAG,MAAM,oDACpC,+DAAA,KAAA;wBAGF,OAAO;4BACLX,SAAAA,EAAWW;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,uBAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA;AAAU,iBAAA,CAACC,MAAM,CAChD,CAACC,KAAAA,EAAOT,KAAAA,EAAOU,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAIrB,IAAI,KAAKkB,KAAAA,CAAMlB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;;"}
1
+ {"version":3,"file":"router.js","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE()].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,uBAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,cAAA,CAACC,iBAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,oDAAO,0BAAA,KAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,oDAAO,wBAAA,KAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,MAAM,EAAE,GAAG,MAAM,oDAAO,4BAAA,KAAA;gBAEhC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEb,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEa,mBAAmB,EAAE,GAAG,MAAM,oDACpC,+DAAA,KAAA;wBAGF,OAAO;4BACLX,SAAAA,EAAWW;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,qBAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA,qBAAAA;AAAY,iBAAA,CAACC,MAAM,CAClD,CAACC,KAAAA,EAAOT,KAAAA,EAAOU,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAIrB,IAAI,KAAKkB,KAAAA,CAAMlB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;;"}
@@ -72,7 +72,7 @@ const getInitialRoutes = ()=>[
72
72
  // ),
73
73
  ...[
74
74
  ...getEERoutes(),
75
- ...ROUTES_CE
75
+ ...ROUTES_CE()
76
76
  ].filter((route, index, refArray)=>refArray.findIndex((obj)=>obj.path === route.path) === index)
77
77
  ]
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,aAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,GAAA,CAACC,QAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,OAAO,2BAAA,CAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,MAAM,EAAE,GAAG,MAAM,OAAO,6BAAA,CAAA;gBAEhC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEb,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEa,mBAAmB,EAAE,GAAG,MAAM,OACpC,gEAAA,CAAA;wBAGF,OAAO;4BACLX,SAAAA,EAAWW;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,WAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA;AAAU,iBAAA,CAACC,MAAM,CAChD,CAACC,KAAAA,EAAOT,KAAAA,EAAOU,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAIrB,IAAI,KAAKkB,KAAAA,CAAMlB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;"}
1
+ {"version":3,"file":"router.mjs","sources":["../../../../admin/src/router.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport { RouteObject } from 'react-router-dom';\n\nimport { getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\n\n/**\n * These are routes we don't want to be able to be changed by plugins.\n */\nconst getImmutableRoutes = (): RouteObject[] => [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n // this needs to go before auth/:authType because otherwise it won't match the route\n ...getBaseEERoutes(),\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n];\n\nconst getInitialRoutes = (): RouteObject[] => [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/Home/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n // ...Object.values(this.settings).flatMap(({ links }) =>\n // links.map(({ to, Component }) => ({\n // path: `${to}/*`,\n // element: (\n // <React.Suspense fallback={<Page.Loading />}>\n // <Component />\n // </React.Suspense>\n // ),\n // }))\n // ),\n ...[...getSettingsEERoutes(), ...ROUTES_CE()].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n ),\n ],\n },\n];\n\nexport { getImmutableRoutes, getInitialRoutes };\n"],"names":["getImmutableRoutes","path","lazy","PrivateUseCasePage","Component","getBaseEERoutes","element","_jsx","AuthPage","getInitialRoutes","index","HomePage","ProfilePage","Layout","children","ApplicationInfoPage","getSettingsEERoutes","ROUTES_CE","filter","route","refArray","findIndex","obj"],"mappings":";;;;;;AAUA;;IAGA,MAAMA,qBAAqB,IAAqB;AAC9C,QAAA;YACEC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAE5C,OAAO;oBACLC,SAAAA,EAAWD;AACb,iBAAA;AACF,YAAA;AACF,SAAA;;AAEGE,QAAAA,GAAAA,aAAAA,EAAAA;AACH,QAAA;YACEJ,IAAAA,EAAM,gBAAA;AACNK,YAAAA,OAAAA,gBAASC,GAAA,CAACC,QAAAA,EAAAA,EAAAA;AACZ;AACD;AAED,MAAMC,mBAAmB,IAAqB;AAC5C,QAAA;YACEC,KAAAA,EAAO,IAAA;YACPR,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAES,QAAQ,EAAE,GAAG,MAAM,OAAO,2BAAA,CAAA;gBAElC,OAAO;oBACLP,SAAAA,EAAWO;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEV,IAAAA,EAAM,IAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEU,WAAW,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBAErC,OAAO;oBACLR,SAAAA,EAAWQ;AACb,iBAAA;AACF,YAAA;AACF,SAAA;AACA,QAAA;YACEX,IAAAA,EAAM,YAAA;YACNC,IAAAA,EAAM,UAAA;AACJ,gBAAA,MAAM,EAAEW,MAAM,EAAE,GAAG,MAAM,OAAO,6BAAA,CAAA;gBAEhC,OAAO;oBACLT,SAAAA,EAAWS;AACb,iBAAA;AACF,YAAA,CAAA;YACAC,QAAAA,EAAU;AACR,gBAAA;oBACEb,IAAAA,EAAM,mBAAA;oBACNC,IAAAA,EAAM,UAAA;AACJ,wBAAA,MAAM,EAAEa,mBAAmB,EAAE,GAAG,MAAM,OACpC,gEAAA,CAAA;wBAGF,OAAO;4BACLX,SAAAA,EAAWW;AACb,yBAAA;AACF,oBAAA;AACF,iBAAA;;;;;;;;;;;AAWG,gBAAA,GAAA;AAAIC,oBAAAA,GAAAA,WAAAA,EAAAA;AAA0BC,oBAAAA,GAAAA,SAAAA;AAAY,iBAAA,CAACC,MAAM,CAClD,CAACC,KAAAA,EAAOT,KAAAA,EAAOU,WAAaA,QAAAA,CAASC,SAAS,CAAC,CAACC,MAAQA,GAAAA,CAAIrB,IAAI,KAAKkB,KAAAA,CAAMlB,IAAI,CAAA,KAAMS,KAAAA;AAExF;AACH;AACD;;;;"}
@@ -9,7 +9,10 @@ const apiTokensService = api.adminApi.enhanceEndpoints({
9
9
  }).injectEndpoints({
10
10
  endpoints: (builder)=>({
11
11
  getAPITokens: builder.query({
12
- query: ()=>'/admin/api-tokens',
12
+ query: ()=>({
13
+ url: '/admin/api-tokens',
14
+ method: 'GET'
15
+ }),
13
16
  transformResponse: (response)=>response.data,
14
17
  providesTags: (res, _err)=>[
15
18
  ...res?.map(({ id })=>({
@@ -74,14 +77,94 @@ const apiTokensService = api.adminApi.enhanceEndpoints({
74
77
  id
75
78
  }
76
79
  ]
80
+ }),
81
+ getAPITokenOwnerPermissions: builder.query({
82
+ query: (id)=>`/admin/admin-tokens/${id}/owner-permissions`,
83
+ transformResponse: (response)=>response.data
84
+ }),
85
+ getAdminTokens: builder.query({
86
+ query: ()=>({
87
+ url: '/admin/admin-tokens',
88
+ method: 'GET'
89
+ }),
90
+ transformResponse: (response)=>response.data,
91
+ providesTags: (res, _err)=>[
92
+ ...res?.map(({ id })=>({
93
+ type: 'ApiToken',
94
+ id
95
+ })) ?? [],
96
+ {
97
+ type: 'ApiToken',
98
+ id: 'ADMIN_LIST'
99
+ }
100
+ ]
101
+ }),
102
+ getAdminToken: builder.query({
103
+ query: (id)=>`/admin/admin-tokens/${id}`,
104
+ transformResponse: (response)=>response.data,
105
+ providesTags: (res, _err, id)=>[
106
+ {
107
+ type: 'ApiToken',
108
+ id
109
+ }
110
+ ]
111
+ }),
112
+ createAdminToken: builder.mutation({
113
+ query: (body)=>({
114
+ url: '/admin/admin-tokens',
115
+ method: 'POST',
116
+ data: body
117
+ }),
118
+ transformResponse: (response)=>response.data,
119
+ invalidatesTags: [
120
+ {
121
+ type: 'ApiToken',
122
+ id: 'ADMIN_LIST'
123
+ },
124
+ 'HomepageKeyStatistics'
125
+ ]
126
+ }),
127
+ deleteAdminToken: builder.mutation({
128
+ query: (id)=>({
129
+ url: `/admin/admin-tokens/${id}`,
130
+ method: 'DELETE'
131
+ }),
132
+ transformResponse: (response)=>response.data,
133
+ invalidatesTags: (_res, _err, id)=>[
134
+ {
135
+ type: 'ApiToken',
136
+ id
137
+ },
138
+ 'HomepageKeyStatistics'
139
+ ]
140
+ }),
141
+ updateAdminToken: builder.mutation({
142
+ query: ({ id, ...body })=>({
143
+ url: `/admin/admin-tokens/${id}`,
144
+ method: 'PUT',
145
+ data: body
146
+ }),
147
+ transformResponse: (response)=>response.data,
148
+ invalidatesTags: (_res, _err, { id })=>[
149
+ {
150
+ type: 'ApiToken',
151
+ id
152
+ }
153
+ ]
77
154
  })
78
155
  })
79
156
  });
80
- const { useGetAPITokensQuery, useGetAPITokenQuery, useCreateAPITokenMutation, useDeleteAPITokenMutation, useUpdateAPITokenMutation } = apiTokensService;
157
+ const { useGetAPITokensQuery, useGetAPITokenQuery, useCreateAPITokenMutation, useDeleteAPITokenMutation, useUpdateAPITokenMutation, useGetAPITokenOwnerPermissionsQuery, useGetAdminTokensQuery, useGetAdminTokenQuery, useCreateAdminTokenMutation, useDeleteAdminTokenMutation, useUpdateAdminTokenMutation } = apiTokensService;
81
158
 
82
159
  exports.useCreateAPITokenMutation = useCreateAPITokenMutation;
160
+ exports.useCreateAdminTokenMutation = useCreateAdminTokenMutation;
83
161
  exports.useDeleteAPITokenMutation = useDeleteAPITokenMutation;
162
+ exports.useDeleteAdminTokenMutation = useDeleteAdminTokenMutation;
163
+ exports.useGetAPITokenOwnerPermissionsQuery = useGetAPITokenOwnerPermissionsQuery;
84
164
  exports.useGetAPITokenQuery = useGetAPITokenQuery;
85
165
  exports.useGetAPITokensQuery = useGetAPITokensQuery;
166
+ exports.useGetAdminTokenQuery = useGetAdminTokenQuery;
167
+ exports.useGetAdminTokensQuery = useGetAdminTokensQuery;
86
168
  exports.useUpdateAPITokenMutation = useUpdateAPITokenMutation;
169
+ exports.useUpdateAdminTokenMutation = useUpdateAdminTokenMutation;
87
170
  //# sourceMappingURL=apiTokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiTokens.js","sources":["../../../../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst apiTokensService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ApiToken'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [\n { type: 'ApiToken' as const, id },\n 'HomepageKeyStatistics',\n ],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n });\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = apiTokensService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":["apiTokensService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getAPITokens","query","transformResponse","response","data","providesTags","res","_err","map","id","type","getAPIToken","createAPIToken","mutation","body","url","method","invalidatesTags","deleteAPIToken","_res","updateAPIToken","useGetAPITokensQuery","useGetAPITokenQuery","useCreateAPITokenMutation","useDeleteAPITokenMutation","useUpdateAPITokenMutation"],"mappings":"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"}
1
+ {"version":3,"file":"apiTokens.js","sources":["../../../../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as AdminToken from '../../../shared/contracts/admin-token';\nimport * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst apiTokensService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ApiToken'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<\n ApiToken.List.Response['data'],\n ApiToken.List.Request['query'] | void\n >({\n query: () => ({\n url: '/admin/api-tokens',\n method: 'GET',\n }),\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }, 'HomepageKeyStatistics'],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [\n { type: 'ApiToken' as const, id },\n 'HomepageKeyStatistics',\n ],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n getAPITokenOwnerPermissions: builder.query<\n AdminToken.GetOwnerPermissions.Response['data'],\n string\n >({\n query: (id) => `/admin/admin-tokens/${id}/owner-permissions`,\n transformResponse: (response: AdminToken.GetOwnerPermissions.Response) => response.data,\n }),\n getAdminTokens: builder.query<AdminToken.List.Response['data'], void>({\n query: () => ({\n url: '/admin/admin-tokens',\n method: 'GET',\n }),\n transformResponse: (response: AdminToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'ADMIN_LIST' },\n ],\n }),\n getAdminToken: builder.query<AdminToken.Get.Response['data'], AdminToken.Get.Params['id']>({\n query: (id) => `/admin/admin-tokens/${id}`,\n transformResponse: (response: AdminToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAdminToken: builder.mutation<\n AdminToken.Create.Response['data'],\n AdminToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/admin-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: AdminToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'ADMIN_LIST' }, 'HomepageKeyStatistics'],\n }),\n deleteAdminToken: builder.mutation<\n AdminToken.Revoke.Response['data'],\n AdminToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/admin-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: AdminToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [\n { type: 'ApiToken' as const, id },\n 'HomepageKeyStatistics',\n ],\n }),\n updateAdminToken: builder.mutation<\n AdminToken.Update.Response['data'],\n AdminToken.Update.Params & AdminToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/admin-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: AdminToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n });\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n useGetAPITokenOwnerPermissionsQuery,\n useGetAdminTokensQuery,\n useGetAdminTokenQuery,\n useCreateAdminTokenMutation,\n useDeleteAdminTokenMutation,\n useUpdateAdminTokenMutation,\n} = apiTokensService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n useGetAPITokenOwnerPermissionsQuery,\n useGetAdminTokensQuery,\n useGetAdminTokenQuery,\n useCreateAdminTokenMutation,\n useDeleteAdminTokenMutation,\n useUpdateAdminTokenMutation,\n};\n"],"names":["apiTokensService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getAPITokens","query","url","method","transformResponse","response","data","providesTags","res","_err","map","id","type","getAPIToken","createAPIToken","mutation","body","invalidatesTags","deleteAPIToken","_res","updateAPIToken","getAPITokenOwnerPermissions","getAdminTokens","getAdminToken","createAdminToken","deleteAdminToken","updateAdminToken","useGetAPITokensQuery","useGetAPITokenQuery","useCreateAPITokenMutation","useDeleteAPITokenMutation","useUpdateAPITokenMutation","useGetAPITokenOwnerPermissionsQuery","useGetAdminTokensQuery","useGetAdminTokenQuery","useCreateAdminTokenMutation","useDeleteAdminTokenMutation","useUpdateAdminTokenMutation"],"mappings":"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"}